{"version":3,"file":"basic-v4.mjs","sources":["../../node_modules/u8-mqtt-packet/esm/codec_v4_client.js","../../node_modules/u8-mqtt-packet/esm/codec_bind.js","../../code/_utils.jsy","../../code/_cmdid_dispatch.jsy","../../code/_dispatch.jsy","../../code/base.jsy","../../code/_conn.jsy","../../code/core.jsy","../../code/basic-v4.js"],"sourcesContent":["function encode_varint(n, a=[]) {\n  a.push((n<0x80 ? 0 : 0x80) | (n & 0x7f));\n  for(; ( n>>>=7 ) > 0 ;)\n    a.push((n<0x80 ? 0 : 0x80) | (n & 0x7f));\n  return a\n}\n\nfunction decode_varint(u8, i0=0, invalid) {\n  let shift=0, i=i0, b=u8[i++], n=(b & 0x7f);\n  for(; b & 0x80;)\n    n |= ((b=u8[i++]) & 0x7f) << (shift += 7);\n\n  return (u8.length < i)\n    ? [invalid, i0, i0] // fail: insuffecient u8 bytes to decode\n    : [n, i, i0] // successful value\n}\n\nclass mqtt_reason extends Number {\n  constructor(v, reason) {\n    super(v);\n    this.reason = `:${(this.ok = v<0x80) ? 'ok' : 'fail'}:${reason}`;\n  }\n}\n\nlet mqtt_reader_v4$1 = class mqtt_reader_v4 {\n  static for(pkt, u8_body) { return new this().of(u8_body, {pkt}) }\n  of(buf, opt) {\n    let step = (width, k) => (k=0|step.k, step.k=k+width, k);\n    return {__proto__: this, buf, step, ...opt}\n  }\n\n  has_more() {\n    return this.buf.byteLength > (this.step.k|0)\n  }\n\n  u8() {\n    return this.buf[this.step(1)]\n  }\n\n  u16() {\n    let {buf, step} = this, i = step(2);\n    return (buf[i]<<8) | buf[i+1]\n  }\n\n  u32() {\n    let {buf, step} = this, i = step(4);\n    return (buf[i]<<24) | (buf[i+1]<<16) | (buf[i+2]<<8) | buf[i+3]\n  }\n\n  vint() {\n    let {buf, step} = this;\n    let [n, vi, vi0] = decode_varint(buf, step.k|0);\n    step(vi - vi0);\n    return n\n  }\n\n  bin() {\n    let {buf, step} = this, i = step(2);\n    let len = (buf[i]<<8) | buf[i+1];\n    i = step(len);\n    return buf.subarray(i, i+len)\n  }\n\n  utf8() { return new TextDecoder('utf-8').decode(this.bin()) }\n  pair() { return [ this.utf8(), this.utf8() ] }\n\n  flags(FlagsType) { return new FlagsType(this.buf[this.step(1)]) }\n\n  reason(pkt_kind) {\n    let v = this.buf[this.step(1)];\n    if (null != v)\n      return new mqtt_reason(v, this._reason_for?.(v, pkt_kind))\n  }\n\n  flush() {\n    let {buf, step} = this;\n    this.step = this.buf = null;\n    return buf.subarray(step.k|0)\n  }\n\n};\n\nfunction with_reasons(mqtt_reader, by_kind) {\n  for (let [k,lut] of Object.entries(by_kind))\n    by_kind[k] = new Map(lut);\n\n  return class extends mqtt_reader {\n    _reason_for(v, pkt_kind) {\n      return by_kind[pkt_kind]?.get(v) || by_kind.all.get(v)\n    }\n    warn(msg) {\n      let pkt = this.pkt;\n      pkt.warn ? pkt.warn(msg, pkt)\n        : console.warn('[u8-mqtt-packet] '+msg);\n    }\n  }\n}\n\n\nconst reasons_v4 =  {\n  connack: [\n    [ 0x01, 'conn refused: unacceptable protocol version'],\n    [ 0x02, 'conn refused: identifier rejected'],\n    [ 0x03, 'conn refused: server unavailable'],\n    [ 0x04, 'conn refused: bad user name or password'],\n    [ 0x05, 'conn refused: not authorized'],\n  ],\n  suback: [\n    [ 0x00, 'qos=0'],\n    [ 0x01, 'qos=1'],\n    [ 0x02, 'qos=2'],\n  ],\n  unsuback: [\n    [ 0x11, 'no subscription existed'],\n  ],\n  puback: [\n    [ 0x10, 'no matching subscribers'],\n  ],\n  all: [\n    [ 0, ''], // Success\n    [ 0x80, 'unspecified error'], // disconnect puback suback unsuback\n    [ 0x83, 'implementation specific error'], // connack disconnect puback suback unsuback\n    [ 0x87, 'not authorized'], // connack disconnect puback suback unsuback\n    [ 0x8F, 'topic filter invalid'], // disconnect suback unsuback\n    [ 0x91, 'packet identifier in use'], // puback suback unsuback\n    [ 0x92, 'packet identifier not found' ], // pubxxx\n  ]};\n\nconst mqtt_reader_v4 = /* #__PURE__ */\n  with_reasons(mqtt_reader_v4$1, reasons_v4);\n\nclass mqtt_writer_v4 {\n  static for(pkt) { return new this().of() }\n  of() { return {__proto__: this, $:[]} }\n\n  static init() { return this }\n\n  as_pkt(pkt_id) { return this.pack([pkt_id]) }\n\n  push(...z) { this.$.push(...z); }\n  pack(hdr) {\n    let z, i, n=0, parts = this.$;\n    this.$ = false;\n    for (z of parts) n += z.length;\n\n    hdr = encode_varint(n, hdr);\n    i = hdr.length;\n\n    let pkt = new Uint8Array(i + n);\n    pkt.set(hdr, 0);\n    for (z of parts) {\n      pkt.set(z, i);\n      i += z.length;\n    }\n    return pkt\n  }\n\n  u8(v) { this.push([ v & 0xff ]); }\n  u16(v) { this.push([ (v>>>8) & 0xff, v & 0xff ]); }\n  u32(v) { this.push([ (v>>>24) & 0xff, (v>>>16) & 0xff, (v>>>8) & 0xff, v & 0xff ]); }\n  vint(v) { this.push( encode_varint(v) );}\n\n  bin(u8_buf) {\n    if (! u8_buf) return this.u16(0)\n    if ('string' === typeof u8_buf)\n      return this.utf8(u8_buf)\n\n    if (u8_buf.length !== u8_buf.byteLength)\n      u8_buf = new Uint8Array(u8_buf);\n\n    this.u16(u8_buf.byteLength);\n    this.push(u8_buf);\n  }\n\n  utf8(v) {\n    let u8_buf = new TextEncoder('utf-8').encode(v);\n    this.u16(u8_buf.byteLength);\n    this.push(u8_buf);\n  }\n  pair(k,v) { this.utf8(k); this.utf8(v); }\n\n  flags(v, enc_flags, b0=0) {\n    if (undefined !== v && isNaN(+v))\n      v = enc_flags(v, 0);\n\n    v |= b0;\n    this.push([v]);\n    return v\n  }\n\n  reason(v) { this.push([v | 0]); }\n\n  flush(buf) {\n    if (null != buf)\n      this.push(\n        'string' === typeof buf\n          ? new TextEncoder('utf-8').encode(buf)\n          : buf );\n\n    this.push = false;\n  }\n}\n\nfunction mqtt_encode_connect(ns, mqtt_writer) {\n  const _c_mqtt_proto = new Uint8Array([\n    0, 4, 0x4d, 0x51, 0x54, 0x54 ]);\n\n  const _enc_flags_connect = flags => 0\n      | ( flags.reserved ? 0x01 : 0 )\n      | ( (flags.will_qos & 0x3) << 3 )\n      | ( flags.clean_start ? 0x02 : 0 )\n      | ( flags.will_flag ? 0x04 : 0 )\n      | ( flags.will_retain ? 0x20 : 0 )\n      | ( flags.password ? 0x40 : 0 )\n      | ( flags.username ? 0x80 : 0 );\n\n  const _enc_flags_will = will => 0x4\n      | ( (will.qos & 0x3) << 3 )\n      | ( will.retain ? 0x20 : 0 );\n\n  return ns.connect = ( mqtt_level, pkt ) => {\n    let wrt = mqtt_writer.for(pkt);\n\n    wrt.push(_c_mqtt_proto);\n    wrt.u8( mqtt_level );\n\n    let {will, username, password} = pkt;\n    let flags = wrt.flags(\n      pkt.flags,\n      _enc_flags_connect,\n      0 | (username ? 0x80 : 0)\n        | (password ? 0x40 : 0)\n        | (will ? _enc_flags_will(will) : 0) );\n\n    wrt.u16(pkt.keep_alive);\n\n    if (5 <= mqtt_level)\n      wrt.props(pkt.props);\n\n\n    wrt.utf8(pkt.client_id);\n    if (flags & 0x04) { // .will_flag\n      if (5 <= mqtt_level)\n        wrt.props(will.props);\n\n      wrt.utf8(will.topic);\n      wrt.bin(will.payload);\n    }\n\n    if (flags & 0x80) // .username\n      wrt.utf8(username);\n\n    if (flags & 0x40) // .password\n      wrt.bin(password);\n\n    return wrt.as_pkt(0x10)\n  }\n}\n\nfunction mqtt_decode_connack(ns, mqtt_reader) {\n  class _connack_flags_ extends Number {\n    get session_present() { return this & 0x01 !== 0 }\n  }\n\n  return ns[0x2] = (pkt, u8_body) => {\n    let rdr = mqtt_reader.for(pkt, u8_body);\n\n    pkt.flags =\n      rdr.flags(_connack_flags_);\n\n    pkt.reason = rdr.reason(pkt.type);\n    if (5 <= pkt.mqtt_level)\n      pkt.props = rdr.props();\n    return pkt }\n}\n\nfunction mqtt_encode_publish(ns, mqtt_writer) {\n  return ns.publish = ( mqtt_level, pkt ) => {\n    let qos = (pkt.qos & 0x3) << 1;\n    let wrt = mqtt_writer.for(pkt);\n\n    wrt.utf8(pkt.topic);\n    if (0 !== qos)\n      wrt.u16(pkt.pkt_id);\n\n    if ( 5 <= mqtt_level) {\n      wrt.props(pkt.props);\n      wrt.flush(pkt.payload);\n    } else {\n      wrt.flush(pkt.payload);\n    }\n\n    return wrt.as_pkt(\n      0x30 | qos | (pkt.dup ? 0x8 : 0) | (pkt.retain ? 0x1 : 0) )\n  }\n}\n\nfunction mqtt_decode_publish(ns, mqtt_reader) {\n  return ns[0x3] = (pkt, u8_body) => {\n    let {hdr} = pkt;\n    pkt.dup = Boolean(hdr & 0x8);\n    pkt.retain = Boolean(hdr & 0x1);\n    let qos = pkt.qos = (hdr>>1) & 0x3;\n\n    let rdr = mqtt_reader.for(pkt, u8_body);\n    pkt.topic = rdr.utf8();\n    if (0 !== qos)\n      pkt.pkt_id = rdr.u16();\n\n    if (5 <= pkt.mqtt_level)\n      pkt.props = rdr.props();\n\n    pkt.payload = rdr.flush();\n    return pkt }\n}\n\nfunction mqtt_encode_puback(ns, mqtt_writer) {\n  return ns.puback = ( mqtt_level, pkt ) => {\n    let wrt = mqtt_writer.for(pkt);\n\n    wrt.u16(pkt.pkt_id);\n    if (5 <= mqtt_level) {\n      wrt.reason(pkt.reason);\n      wrt.props(pkt.props);\n    }\n\n    return wrt.as_pkt(0x40)\n  }\n}\n\n\nfunction mqtt_decode_puback(ns, mqtt_reader) {\n  return ns[0x4] = (pkt, u8_body) => {\n    let rdr = mqtt_reader.for(pkt, u8_body);\n\n    pkt.pkt_id = rdr.u16();\n    if (5 <= pkt.mqtt_level) {\n      pkt.reason = rdr.reason(pkt.type);\n      pkt.props = rdr.props();\n    }\n\n    return pkt }\n}\n\nfunction mqtt_encode_subscribe(ns, mqtt_writer) {\n  const _enc_subscribe_flags = opts => 0\n      | ( opts.qos & 0x3 )\n      | ( opts.retain ? 0x4 : 0 )\n      | ( (opts.retain_handling & 0x3) << 2 );\n\n  return ns.subscribe = ( mqtt_level, pkt ) => {\n    let wrt = mqtt_writer.for(pkt);\n\n    wrt.u16(pkt.pkt_id);\n    if (5 <= mqtt_level)\n      wrt.props(pkt.props);\n\n    let f0 = _enc_subscribe_flags(pkt);\n    for (let each of pkt.topics) {\n      if ('string' === typeof each) {\n        wrt.utf8(each);\n        wrt.u8(f0);\n      } else {\n        let [topic, opts] =\n          Array.isArray(each) ? each\n            : [each.topic, each.opts];\n\n        wrt.utf8(topic);\n        if (undefined === opts) wrt.u8(f0);\n        else wrt.flags(opts, _enc_subscribe_flags);\n      }\n    }\n\n    return wrt.as_pkt(0x82)\n  }\n}\n\nfunction mqtt_decode_xxsuback(ns, mqtt_reader) {\n  return ns[0x9] = ns[0xb] = (pkt, u8_body) => {\n    let rdr = mqtt_reader.for(pkt, u8_body);\n\n    pkt.pkt_id = rdr.u16();\n    if (5 <= pkt.mqtt_level)\n      pkt.props = rdr.props();\n\n    let answers = pkt.answers = [];\n    while (rdr.has_more())\n      answers.push(\n        rdr.reason(pkt.type) );\n\n    return pkt }\n}\n\nfunction mqtt_encode_unsubscribe(ns, mqtt_writer) {\n  return ns.unsubscribe = ( mqtt_level, pkt ) => {\n    let wrt = mqtt_writer.for(pkt);\n\n    wrt.u16(pkt.pkt_id);\n    if (5 <= mqtt_level)\n      wrt.props(pkt.props);\n\n    for (let topic of pkt.topics)\n      wrt.utf8(topic);\n\n    return wrt.as_pkt(0xa2)\n  }\n}\n\nfunction mqtt_encode_pingxxx(ns) {\n  ns.pingreq  = () => new Uint8Array([ 0xc0, 0 ]);\n  ns.pingresp = () => new Uint8Array([ 0xd0, 0 ]);\n}\n\n\nfunction mqtt_decode_pingxxx(ns) {\n  return ns[0xc] = ns[0xd] = pkt => pkt\n}\n\nfunction mqtt_encode_disconnect(ns, mqtt_writer) {\n  return ns.disconnect = ( mqtt_level, pkt ) => {\n    let wrt = mqtt_writer.for(pkt);\n\n    if (pkt && 5 <= mqtt_level) {\n      if (pkt.reason || pkt.props) {\n        wrt.reason(pkt.reason);\n        wrt.props(pkt.props);\n      }\n    }\n\n    return wrt.as_pkt(0xe0)\n  }\n}\n\n\nfunction mqtt_decode_disconnect(ns, mqtt_reader) {\n  return ns[0xe] = (pkt, u8_body) => {\n    if (u8_body && 5 <= pkt.mqtt_level) {\n      let rdr = mqtt_reader.for(pkt, u8_body);\n      pkt.reason = rdr.reason(pkt.type);\n      pkt.props = rdr.props();\n    }\n    return pkt }\n}\n\nconst version = '0.4.1';\n\n// not a v4 packet: import { mqtt_encode_auth, mqtt_decode_auth } from './pkt/auth.js'\n\n\nconst mqtt_decode_v4 =  [\n  mqtt_decode_connack,\n  mqtt_decode_publish,\n  mqtt_decode_puback,\n  mqtt_decode_xxsuback,\n  mqtt_decode_pingxxx,\n  mqtt_decode_disconnect,\n];\n\n\nconst mqtt_encode_v4 =  [\n  mqtt_encode_connect,\n  mqtt_encode_puback,\n  mqtt_encode_publish,\n  mqtt_encode_subscribe,\n  mqtt_encode_unsubscribe,\n  mqtt_encode_pingxxx,\n  mqtt_encode_disconnect,\n];\n\n\nconst mqtt_opts_v4 = \n  { decode_fns: mqtt_decode_v4,\n    mqtt_reader: mqtt_reader_v4,\n    encode_fns: mqtt_encode_v4,\n    mqtt_writer: mqtt_writer_v4, };\n\nexport { mqtt_opts_v4 as default, mqtt_decode_v4, mqtt_encode_v4, mqtt_opts_v4, mqtt_reader_v4, mqtt_writer_v4, version };\n//# sourceMappingURL=codec_v4_client.js.map\n","function decode_varint(u8, i0=0, invalid) {\n  let shift=0, i=i0, b=u8[i++], n=(b & 0x7f);\n  for(; b & 0x80;)\n    n |= ((b=u8[i++]) & 0x7f) << (shift += 7);\n\n  return (u8.length < i)\n    ? [invalid, i0, i0] // fail: insuffecient u8 bytes to decode\n    : [n, i, i0] // successful value\n}\n\nfunction mqtt_raw_dispatch(opt) {\n  let u8 = new Uint8Array(0), len_tip=0;\n  return u8_buf => {\n    u8 = 0 === u8.byteLength\n      ? u8_buf : _u8_join(u8, u8_buf);\n\n    let res = [];\n\n    // wait for at least len_tip bytes for next (tip) message\n    while ( u8.byteLength >= len_tip ) {\n\n      // if varint is incomplete, return len_body=NaN\n      let [len_body, len_vh] = decode_varint(u8, 1, NaN);\n      let len_pkt = len_body + len_vh; // may be NaN\n\n      if (!( len_pkt <= u8.byteLength )) {\n        // incomplete packet cases:\n        // - len_pkt is less than available bytes\n        // - len_pkt is NaN from decode_varint() due to lack of data\n        len_tip = len_pkt || 0; // 0 when NaN\n        break\n      }\n\n      let b0 = u8[0];\n      let u8_body = 0 === len_body ? null\n        : u8.subarray(len_vh, len_pkt);\n\n      u8 = u8.subarray(len_pkt);\n\n      let pkt = opt.decode_pkt(b0, u8_body, opt);\n      if (null != pkt)\n        res.push( pkt );\n    }\n\n    return res\n  }\n}\n\nfunction _u8_join(a, b) {\n  let alen = a.byteLength, r = new Uint8Array(alen + b.byteLength);\n  r.set(a, 0);\n  r.set(b, alen);\n  return r\n}\n\nconst version = '0.4.1';\n\nconst _pkt_types =  ['~', 'connect', 'connack', 'publish', 'puback', 'pubrec', 'pubrel', 'pubcomp', 'subscribe', 'suback', 'unsubscribe', 'unsuback', 'pingreq', 'pingresp', 'disconnect', 'auth'];\n\n\nfunction mqtt_pkt_ctx(mqtt_level, opts, pkt_api=opts.pkt_ctx) {\n  let _as_pkt_ctx = pkt_api => ({\n        __proto__: pkt_api,\n        get hdr() { return this.b0 & 0xf },\n        get id() { return this.b0 >>> 4 },\n        get type() { return _pkt_types[this.b0 >>> 4] },\n        mqtt_level });\n\n\n  let op, _decode_by_id=[], _encode_by_type={};\n  for (op of opts.encode_fns)\n    op(_encode_by_type, opts.mqtt_writer);\n  for (op of opts.decode_fns)\n    op(_decode_by_id, opts.mqtt_reader);\n\n  return {\n    pkt_api, pkt_ctx: _as_pkt_ctx(pkt_api),\n\n    encode_pkt: (type, pkt) =>\n      _encode_by_type[type]( mqtt_level, pkt ),\n\n    decode_pkt(b0, u8_body) {\n      if (b0.map) // Uint8Array in first arg\n        return mqtt_raw_dispatch(this)(b0)[0]\n\n      let fn_decode = _decode_by_id[b0>>>4] || _decode_by_id[0];\n      return fn_decode?.({__proto__: this.pkt_ctx, b0}, u8_body) },\n\n    mqtt_stream(pkt_api=this.pkt_api) {\n      let self = { __proto__: this, pkt_ctx: _as_pkt_ctx(pkt_api) };\n      self.decode = mqtt_raw_dispatch(self);\n      return self },\n  }\n}\n\nexport { mqtt_pkt_ctx as default, mqtt_pkt_ctx, version };\n//# sourceMappingURL=codec_bind.js.map\n","export const _isfn = v => typeof v === 'function'\nexport const _isstr = v => typeof v === 'string'\n\nexport function _interval(fn_callback) ::\n  let tid\n  return @\\ td ::\n    tid = clearInterval(tid)\n    if td ::\n      tid = setInterval(fn_callback, 1000 * td)\n      #IF PLAT_DENO\n        // ensure the interval allows the Deno event loop to exit\n        Deno.unrefTimer(tid)\n      #ELSE\n        // ensure the interval allows the NodeJS event loop to exit\n        tid.unref?.()\n      return true\n\n","\nasync function _mqtt_cmd_evt(target, answer, pkt, ctx) ::\n  /* target : on_mqtt_type = {\n        mqtt_pkt(pkt, ctx) {}, // generic\n\n        mqtt_auth(pkt, ctx) {},\n        mqtt_connect(pkt, ctx) {},\n        mqtt_connack(pkt, ctx) {},\n        mqtt_disconnect(pkt, ctx) {},\n\n        mqtt_publish(pkt, ctx) {},\n        mqtt_subscribe(pkt, ctx) {},\n        mqtt_unsubscribe(pkt, ctx) {},\n\n        mqtt_pingreq(pkt, ctx) {},\n        mqtt_pingresp(pkt, ctx) {},\n    } */\n\n  let pkt_fn = target[`mqtt_${pkt.type}`] || target.mqtt_pkt\n  await pkt_fn?.call(target, pkt, ctx)\n\nfunction _mqtt_cmd_type(target, answer, pkt, ctx) ::\n  answer(pkt.type, pkt)\n  _mqtt_cmd_evt(target, answer, pkt, ctx)\n\nfunction _mqtt_cmd_id(target, answer, pkt) ::\n  answer(pkt.pkt_id, pkt)\n\n\nexport const _mqtt_cmdids = @[]\n  _ => {}    // 0x0 reserved\n  _mqtt_cmd_evt   // 0x1 connect\n  _mqtt_cmd_type  // 0x2 connack\n  _mqtt_cmd_evt   // 0x3 publish\n  _mqtt_cmd_id    // 0x4 puback\n  _mqtt_cmd_id    // 0x5 pubrec\n  _mqtt_cmd_id    // 0x6 pubrel\n  _mqtt_cmd_id    // 0x7 pubcomp\n  _mqtt_cmd_evt   // 0x8 subscribe\n  _mqtt_cmd_id    // 0x9 suback\n  _mqtt_cmd_evt   // 0xa unsubscribe\n  _mqtt_cmd_id    // 0xb unsuback\n  _mqtt_cmd_type  // 0xc pingreq\n  _mqtt_cmd_type  // 0xd pingresp\n  _mqtt_cmd_evt   // 0xe disconnect\n  _mqtt_cmd_type  // 0xf auth\n\n","import { _isstr } from './_utils.jsy'\nimport {_mqtt_cmdids} from './_cmdid_dispatch.jsy'\n\nexport function _mqtt_dispatch(opt, target) ::\n  let hashbelt=[], rotate_ts=0\n  // default rotate at 1s across 5 buckets\n  let { td: rotate_td=1000, n: rotate_n=5 } = opt?.rotate || {}\n\n  // Promise / future scaffolding\n  let _pkt_id=100, _ftr_key // use _ftr_key to reuse _by_key closure\n  let _ftr_by_key = fn_answer => hashbelt[0].set(_ftr_key, fn_answer)\n\n  on_mqtt([]) // init hashbelt and rotate_ts\n  return [on_mqtt, pkt_future]\n\n\n  function pkt_future(pkt_or_key) ::\n    if ! _isstr(pkt_or_key) ::\n      _pkt_id = (_pkt_id + 1) & 0xffff // 16-bit unsigned short\n      _ftr_key = pkt_or_key.pkt_id = _pkt_id\n    else _ftr_key = pkt_or_key\n\n    return new Promise(_ftr_by_key)\n\n  function answer(key, pkt) ::\n    for let map of hashbelt ::\n      let fn_answer = map.get(key)\n      if fn_answer ::\n        map.delete(key)\n\n        fn_answer([pkt, /*err*/]) // option/maybe monad\n        return true\n    return false\n\n  function on_mqtt(pkt_list, ctx) ::\n    for let pkt of pkt_list ::\n      _mqtt_cmdids[pkt.id](target, answer, pkt, ctx)\n\n    // rotate after rotate_ts\n    let now = Date.now()\n    if now > rotate_ts ::\n      rotate_ts = rotate_td + now\n      hashbelt.unshift(new Map())\n      while hashbelt.length > rotate_n ::\n        for let fn_answer of hashbelt.pop().values() ::\n          fn_answer([/*pkt*/, 'expired']) // option/maybe monad\n\n","import { _isfn, _isstr } from './_utils.jsy'\nimport { _mqtt_dispatch } from './_dispatch.jsy'\n\nexport class MQTTError extends Error ::\n  constructor(mqtt_pkt, reason=mqtt_pkt.reason) ::\n    // use hex-encoded reasons to match MQTT spec documentation\n    super(`[0x${reason.toString(16)}] ${reason.reason}`)\n    this.mqtt_pkt = mqtt_pkt\n    this.reason = reason\n\nexport class MQTTBase ::\n  // Handshaking Packets\n  async connect(pkt={}) ::\n    let cid = pkt.client_id\n    if ! _isstr(cid) ::\n      // see init_client_id implementation in core.jsy\n      pkt.client_id = cid = this.client_id || this.init_client_id(cid)\n    this.client_id = cid\n\n    if null == pkt.keep_alive ::\n      pkt.keep_alive = 60\n\n    let response = await this._send0('connect', pkt, 'connack')\n    if 0 != response[0].reason :: // compare to 0 to coerce to number\n      throw new this.MQTTError(response[0])\n    return this.conn.on_conn(pkt, response)\n\n  async disconnect(pkt={}) ::\n    let response = this._send0('disconnect', pkt)\n    await this.conn.on_dis(pkt, response)\n    return await response\n\n  async auth(pkt={}) ::\n    let response = await this._send0('auth', pkt, 'auth')\n    if response[0].reason ::\n      throw new this.MQTTError(response[0])\n    return this.conn.on_auth(pkt, response)\n\n  ping() :: return this._send('pingreq', null, 'pingresp')\n  puback({pkt_id}) :: return this._send('puback', {pkt_id})\n\n  // alias: sub\n  subscribe(pkt, ex, topic_prefix) ::\n    pkt = _as_topics(pkt, ex, topic_prefix)\n    let suback = this._send('subscribe', pkt, pkt)\n    return this.on_sub?.(suback, pkt) ?? suback\n\n  // alias: unsub\n  unsubscribe(pkt, ex, topic_prefix) ::\n    pkt = _as_topics(pkt, ex, topic_prefix)\n    return this._send('unsubscribe', pkt, pkt)\n\n\n  post(topic, payload, pub_opt) :: // qos:0\n    return this.pub({topic, payload, qos:0}, pub_opt)\n  send(topic, payload, pub_opt) :: // qos:1\n    return this.pub({topic, payload, qos:1}, pub_opt)\n  store(topic, payload, pub_opt) :: // qos:1, retain: 1\n    return this.pub({topic, payload, qos:1, retain: 1}, pub_opt)\n\n  // alias: json_post\n  obj_post(topic, msg, pub_opt) :: // qos:0\n    return this.pub({topic, msg, arg: 'msg', qos:0}, pub_opt)\n  // alias: json_send\n  obj_send(topic, msg, pub_opt) :: // qos:1\n    return this.pub({topic, msg, arg: 'msg', qos:1}, pub_opt)\n  // alias: json_store\n  obj_store(topic, msg, pub_opt) :: // qos:1, retain: 1\n    return this.pub({topic, msg, arg: 'msg', qos:1, retain: 1}, pub_opt)\n\n  // alias: publish -- because 'pub' is shorter for semantic aliases above\n  async pub(pkt, pub_opt) ::\n    if undefined === pkt.payload ::\n      if _isfn(pub_opt) ::\n        // pub_opt as a function is fn_encode value\n        pub_opt = {fn_encode: pub_opt}\n\n      let msg = pkt.msg, fn_encode = pub_opt?.fn_encode\n      if null == msg || _isfn(msg) ::\n        // when msg is a function, return closure using fn_encode\n        if msg :: pub_opt = {...pub_opt, fn_encode: msg}\n        // return a single-value closure to publish packets\n        return v => this.pub({...pkt, [pkt.arg || 'payload']: v}, pub_opt)\n\n      // Encode payload from msg; fn_encode allows alternative to JSON.stringify\n      pkt.payload = fn_encode\n        ? await fn_encode(msg)\n        : JSON.stringify(msg)\n\n    if pub_opt ::\n      if pub_opt.props ::\n        pkt.props = pub_opt.props\n      if pub_opt.xform ::\n        pkt = pub_opt.xform(pkt) || pkt\n\n    return this._send @ 'publish', pkt,\n      pkt.qos ? pkt : null // key\n\n\n  // Internal API\n\n  /* async _send0(type, pkt) -- provided by conn and transport */\n  /* async _send(type, pkt) -- provided by conn and transport */\n\n  _init_dispatch(opt) ::\n    this.constructor?._once_()\n    let target = @{} __proto__: opt.on_mqtt_type\n    target.mqtt_publish ||=\n      this._init_router?.(opt, this, target)\n    return _mqtt_dispatch(opt, target)\n\n  static _aliases() ::\n    return ' publish:pub sub:subscribe unsub:unsubscribe json_post:obj_post json_send:obj_send json_store:obj_store'\n\n  static _once_(klass=this) ::\n    klass._once_ = _=>0\n    var alias, name, p = klass.prototype\n    p.MQTTError = MQTTError\n    for alias of klass._aliases().split(/\\s+/) ::\n      [alias, name] = alias.split(':')\n      p[alias] = p[name]\n\n\nfunction _as_topics(pkt, ex, topic_prefix) ::\n  if ex?.trim :: // string\n    topic_prefix = ex\n    ex = null\n\n  pkt = @\n    pkt.trim // string\n      ? {topics:[pkt], ... ex}\n    : pkt[Symbol.iterator]\n      ? {topics:[... pkt], ... ex}\n    : ex ? {...pkt, ...ex}\n    : pkt\n\n  if topic_prefix ::\n    // particularly useful with shared queues, e.g.\n    //   topic_prefix = '$share/some-queue-name/'\n    let _prefix_topics = v =>\n      v.trim ? topic_prefix+v : v.map(_prefix_topics)\n\n    pkt.topics = pkt.topics.map(_prefix_topics)\n  return pkt\n\n","import { _interval } from './_utils.jsy'\n\nconst _defer_obj = o => @\n  o.p = new Promise @ (a,e) => { o.a=a; o.e=e }\n  , o\n\nfunction _dfn_reset(client, attr, fn_after) ::\n  // a resetable deferred for a function\n  let self = {set}, afn = async (...args) => (await self.p)(...args)\n  return set()\n\n  function set() ::\n    if afn !== client[attr] ::\n      _defer_obj(self).p.then(fn_after, _=>0)\n      client[attr] = afn\n    return self\n\nexport function _mqtt_conn(opt, client, [on_mqtt, pkt_future]) ::\n  let _abort\n  let _dfn_send0 = _dfn_reset @ client, '_send0', // client._send0 getter/setter\n    _=> client.conn_emit('on_live', conn.has_connected)\n  let _dfn_ready = _dfn_reset @ client, '_send', // client._send getter/setter\n    _=> client.conn_emit('on_ready')\n  let _keep_alive_ival = _interval @=> client._send0('pingreq') // resettable interval for keep_alive ping\n\n  let conn = Object.create @:\n    ping: (td=conn.keep_alive) => _keep_alive_ival(td)\n\n    on_conn(pkt, response) ::\n      conn.has_connected = true\n      conn.keep_alive = opt.keep_alive || response[0].props?.server_keep_alive || pkt.keep_alive\n      client.conn_emit('on_conn')\n      return opt.use_auth\n        ? response // wait on enhanced authentication step\n        : conn.on_auth(null, response) // otherwise, connect is also auth\n\n    on_auth(pkt, response) ::\n      _dfn_ready.a(_dfn_send0.p)\n      if 0 != opt.keep_alive ::\n        conn.ping()\n      client.conn_emit('on_auth', !pkt)\n      return response\n\n    on_dis(pkt, response) ::\n      conn.reset(false)\n      return response\n\n    reset(err) ::\n      if err ::\n        _dfn_send0.e(err) // send error to uses of _send0 (connect, auth)\n      _abort.e(err) // abort in-progress connections\n\n      if conn.is_set ::\n        delete conn.is_set\n        conn.ready = handshake()\n        client.conn_emit('on_disconnect', false===err, err)\n\n    abort(err) ::\n      _dfn_ready.e(err) // abort all messages awaiting ready state\n      return conn.reset(err)\n\n    async setup(gate, send_u8_pkt, init_msg_loop) ::\n      if conn.is_set ::\n        throw new Error() // already in-progress\n\n      conn.is_set = true\n      await gate\n\n      // setup send/recv MQTT parsing context\n      let mqtt_ctx = client.mqtt_ctx.mqtt_stream()\n\n      :: // setup inbound message loop\n        let sess_ctx = {mqtt: client} // mutable session context\n        let on_mqtt_chunk = u8 => on_mqtt(mqtt_ctx.decode(u8), sess_ctx)\n        init_msg_loop(on_mqtt_chunk, conn)\n\n      // setup outbound message path and transport connection\n      send_u8_pkt = await send_u8_pkt\n      _dfn_send0.a @\n        async (type, pkt, key) => ::\n          let res = undefined !== key\n            ? pkt_future(key) : true\n\n          await send_u8_pkt @\n            mqtt_ctx.encode_pkt(type, pkt)\n          return res\n\n  conn.ready = handshake()\n  return conn\n\n  async function handshake() ::\n    _abort = _defer_obj({})\n\n    _keep_alive_ival(0) // clearInterval on keep alive ping\n    _dfn_send0.set() // reset client._send0 if necessary\n    _dfn_ready.set() // reset client._send if necessary\n\n    try ::\n      // set client._send0 as passtrhough after transport connection\n      client._send0 = await Promise.race @# _dfn_send0.p, _abort.p\n\n      // set client._send as passtrhough after ready\n      client._send = await Promise.race @# _dfn_ready.p, _abort.p\n      return true\n    catch err ::\n      return false\n\n","import mqtt_pkt_ctx from 'u8-mqtt-packet/esm/codec_bind.js'\nimport { _isfn } from './_utils.jsy'\nimport { MQTTBase } from './base.jsy'\nimport { _mqtt_conn } from './_conn.jsy'\n\n#IF PLAT_NODEJS\n  import {connect as tcp_connect} from 'node:net'\n  import {connect as tls_connect} from 'node:tls'\n\nconst pkt_api = @{}\n  utf8(u8) :: return new TextDecoder('utf-8').decode(u8 || this.payload )\n  json(u8) :: return JSON.parse( this.utf8(u8) || null )\n  text(u8) :: return this.utf8(u8)\n\nconst opt_default = @{}\n  sess_stg: globalThis.sessionStorage\n\nexport class MQTTCore extends MQTTBase ::\n  constructor(opt) ::\n    opt = {...opt_default, ...opt}\n    super()\n    this.with(opt)\n    // settings for MQTTCore\n    this.sess_stg = opt.sess_stg\n    // setup connection and dispatch\n    this.conn = _mqtt_conn @ opt, this,\n      this._init_dispatch(opt)\n\n  with(fns_ns) ::\n    for let [k,v] of Object.entries(fns_ns) ::\n      if _isfn(v) :: this[k] = v\n    return this\n\n\n  static mqtt_ctx(mqtt_level, mqtt_opts, pkt_ctx=pkt_api) ::\n    let klass = class extends this {}\n    klass.prototype.mqtt_ctx =\n      mqtt_pkt_ctx(mqtt_level, mqtt_opts, pkt_ctx)\n    return klass\n\n\n  async conn_emit(evt, arg, err_arg) ::\n    this.log_conn?.(evt, arg, err_arg)\n    try ::\n      let fn_evt = this[await evt] // microtask break using `await evt`\n      if fn_evt ::\n        await fn_evt.call(this, this, arg, err_arg)\n      else if err_arg :: throw err_arg\n    catch err ::\n      this.on_error(err, evt)\n\n  on_error(err, evt) ::\n    console.warn @ '[[u8-mqtt error: %s]]', evt, err\n  log_conn(evt, arg, err_arg) ::\n    console.info @ '[[u8-mqtt conn: %s]]', evt, arg, err_arg\n\n\n  // automatic Client Id for connect()\n  init_client_id(parts=['u8-mqtt--','']) ::\n    let sess_stg = this.sess_stg\n    let key, cid = sess_stg?.getItem(key=parts.join(' '))\n    if ! cid ::\n      cid = parts.join @ Math.random().toString(36).slice(2)\n      sess_stg?.setItem(key, cid)\n    return cid\n\n\n  on_live(client, is_reconnect) ::\n    if is_reconnect ::\n      return client.connect()\n\n  // on_ready(client) ::\n  // on_reconnect(client) ::\n  on_disconnect(client, intentional, err) ::\n    if ! intentional ::\n      return client.on_reconnect?.()\n\n  _use_conn(fn_reconnect) ::\n    return (this.reconnect = fn_reconnect)?.()\n  with_autoreconnect(opt=2000) ::\n    if opt.toFixed :: opt = @{} delay: opt\n    return this.with @:\n      on_reconnect() ::\n        this.delay(opt.delay || 2000, opt.jitter)\n          .then(this.reconnect)\n          .then(opt.reconnect, opt.error)\n\n  delay(ms, ms_jitter=0.2*ms) ::\n    return new Promise @ done => setTimeout(done, 0 | (ms + ms_jitter*Math.random()))\n\n  with_async_iter(async_iter, write_u8_pkt) ::\n    this.conn.setup @ async_iter,\n      write_u8_pkt,\n      async (on_mqtt_chunk, conn) => ::\n        try ::\n          async_iter = await async_iter\n          for await (let chunk of async_iter)\n            on_mqtt_chunk(chunk)\n          conn.reset()\n        catch err ::\n          conn.reset(err)\n    return this\n\n\n\n  #IF PLAT_DENO\n    with_tcp(...opt) ::\n      opt = this._conn_opt(opt)\n      opt.transport = 'tcp'\n      return this._use_conn @=>\n        this.with_deno_iter @\n          Deno.connect(opt)\n\n    with_tls(...opt) ::\n      opt = this._conn_opt(opt)\n      return this._use_conn @=>\n        this.with_deno_iter @\n          Deno.connectTls(opt)\n\n    with_deno_iter(transport) ::\n      return this.with_async_iter @\n        transport.then(Deno.iter),\n        transport.then @ write_stream =>\n          u8_pkt => write_stream.write(u8_pkt)\n\n    _conn_opt([a0, a1, a2]) ::\n      // (port, hostname, options) or (url, options)\n      if Number.isFinite(a0) ::\n        return {...a2, port: a0, hostname: a1}\n\n      a0 = new URL(a0)\n      return {...a1, port: a0.port, hostname: a0.hostname}\n\n  #IF PLAT_NODEJS\n    with_tcp(...opt) ::\n      opt = this._conn_opt(opt)\n      return this._use_conn @=>\n        this.with_stream @\n          tcp_connect(opt)\n\n    with_tls(...opt) ::\n      opt = this._conn_opt(opt)\n      return this._use_conn @=>\n        this.with_stream @\n          tls_connect(opt)\n\n    _conn_opt([a0, a1, a2]) ::\n      // (port, hostname, options) or (url, options)\n      if Number.isFinite(a0) ::\n        return {...a2, port: a0, host: a1}\n      a0 = new URL(a0)\n      return {...a1, port: a0.port, host: a0.hostname}\n\n\n  with_stream(read_stream, write_stream) ::\n    if undefined === write_stream ::\n      write_stream = read_stream\n\n    return this.with_async_iter @ read_stream,\n      u8_pkt => write_stream.write(u8_pkt)\n\n\n  with_websock(websock) ::\n    if ! websock?.send ::\n      websock = new URL(websock || 'ws://127.0.0.1:9001')\n      return this._use_conn @=>\n        this.with_websock @\n          new WebSocket(websock, ['mqtt'])\n\n    websock.binaryType = 'arraybuffer'\n\n    let ws_ready, readyState = websock.readyState\n    if 1 !== readyState ::\n      if 0 !== readyState ::\n        throw new Error @ 'WS readyState'\n\n      ws_ready = new Promise @ ready => websock.onopen = ready\n\n    this.conn.setup @ ws_ready,\n      u8_pkt => websock.send(u8_pkt),\n      (on_mqtt_chunk, conn) => ::\n        websock.onmessage = evt => @\n          on_mqtt_chunk @ new Uint8Array(evt.data)\n\n        websock.onerror = evt => ::\n          conn.reset(new Error('websocket error'))\n\n        websock.onclose = evt => ::\n          if ! evt.wasClean ::\n            var err = new Error('websocket close')\n            err.code = evt.code\n            err.reason = evt.reason\n\n          conn.reset(err)\n\n    return this\n\nexport { MQTTCore as default }\n","import mqtt_opts_v4 from 'u8-mqtt-packet/esm/codec_v4_client.js'\nimport MQTTCore from './core.jsy'\nexport * from './version.js'\n\nconst MQTTClient_v4 = /* #__PURE__ */\n  MQTTCore.mqtt_ctx(4, mqtt_opts_v4)\n\nconst mqtt_v4 = opt =>\n  new MQTTClient_v4(opt)\n\nexport {\n  MQTTClient_v4,\n  MQTTClient_v4 as MQTTClient,\n\n  mqtt_v4,\n  mqtt_v4 as mqtt,\n  mqtt_v4 as default,\n}\n"],"names":["decode_varint","tcp_connect","tls_connect"],"mappings":";;;AAAA,SAAS,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;AAChC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;AAC1C,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;AACtB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;AAC5C,EAAE,OAAO;AACT;;AAEA,SAASA,eAAa,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE;AAC1C,EAAE,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;AAC5C,EAAE,MAAM,CAAC,GAAG,IAAI;AAChB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC;;AAE7C,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC;AACvB,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC;AACvB,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AAChB;;AAEA,MAAM,WAAW,SAAS,MAAM,CAAC;AACjC,EAAE,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE;AACzB,IAAI,KAAK,CAAC,CAAC,CAAC;AACZ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,GAAG,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACpE,EAAE;AACF;;AAEA,IAAI,gBAAgB,GAAG,MAAM,cAAc,CAAC;AAC5C,EAAE,OAAO,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,OAAO,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAClE,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE;AACf,IAAI,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AAC5D,IAAI,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG;AAC9C,EAAE;;AAEF,EAAE,QAAQ,GAAG;AACb,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/C,EAAE;;AAEF,EAAE,EAAE,GAAG;AACP,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAChC,EAAE;;AAEF,EAAE,GAAG,GAAG;AACR,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACvC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;AAChC,EAAE;;AAEF,EAAE,GAAG,GAAG;AACR,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACvC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAClE,EAAE;;AAEF,EAAE,IAAI,GAAG;AACT,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI;AAC1B,IAAI,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,GAAGA,eAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;AAClB,IAAI,OAAO;AACX,EAAE;;AAEF,EAAE,GAAG,GAAG;AACR,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACvC,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;AACjB,IAAI,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;AAChC,EAAE;;AAEF,EAAE,IAAI,GAAG,EAAE,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AAC9D,EAAE,IAAI,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;;AAE/C,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;AAElE,EAAE,MAAM,CAAC,QAAQ,EAAE;AACnB,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClC,IAAI,IAAI,IAAI,IAAI,CAAC;AACjB,MAAM,OAAO,IAAI,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,QAAQ,CAAC;AAC/D,EAAE;;AAEF,EAAE,KAAK,GAAG;AACV,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI;AAC1B,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI;AAC/B,IAAI,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChC,EAAE;;AAEF,CAAC;;AAED,SAAS,YAAY,CAAC,WAAW,EAAE,OAAO,EAAE;AAC5C,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;AAC7C,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;;AAE7B,EAAE,OAAO,cAAc,WAAW,CAAC;AACnC,IAAI,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE;AAC7B,MAAM,OAAO,OAAO,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3D,IAAI;AACJ,IAAI,IAAI,CAAC,GAAG,EAAE;AACd,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG;AACxB,MAAM,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG;AAClC,UAAU,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC;AAC/C,IAAI;AACJ;AACA;;;AAGA,MAAM,UAAU,IAAI;AACpB,EAAE,OAAO,EAAE;AACX,IAAI,EAAE,IAAI,EAAE,6CAA6C,CAAC;AAC1D,IAAI,EAAE,IAAI,EAAE,mCAAmC,CAAC;AAChD,IAAI,EAAE,IAAI,EAAE,kCAAkC,CAAC;AAC/C,IAAI,EAAE,IAAI,EAAE,yCAAyC,CAAC;AACtD,IAAI,EAAE,IAAI,EAAE,8BAA8B,CAAC;AAC3C,GAAG;AACH,EAAE,MAAM,EAAE;AACV,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC;AACpB,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC;AACpB,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC;AACpB,GAAG;AACH,EAAE,QAAQ,EAAE;AACZ,IAAI,EAAE,IAAI,EAAE,yBAAyB,CAAC;AACtC,GAAG;AACH,EAAE,MAAM,EAAE;AACV,IAAI,EAAE,IAAI,EAAE,yBAAyB,CAAC;AACtC,GAAG;AACH,EAAE,GAAG,EAAE;AACP,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;AACZ,IAAI,EAAE,IAAI,EAAE,mBAAmB,CAAC;AAChC,IAAI,EAAE,IAAI,EAAE,+BAA+B,CAAC;AAC5C,IAAI,EAAE,IAAI,EAAE,gBAAgB,CAAC;AAC7B,IAAI,EAAE,IAAI,EAAE,sBAAsB,CAAC;AACnC,IAAI,EAAE,IAAI,EAAE,0BAA0B,CAAC;AACvC,IAAI,EAAE,IAAI,EAAE,6BAA6B,EAAE;AAC3C,GAAG,CAAC;;AAEJ,MAAM,cAAc;AACpB,EAAE,YAAY,CAAC,gBAAgB,EAAE,UAAU,CAAC;;AAE5C,MAAM,cAAc,CAAC;AACrB,EAAE,OAAO,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;AAC3C,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;;AAExC,EAAE,OAAO,IAAI,GAAG,EAAE,OAAO,IAAI,CAAC;;AAE9B,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;;AAE9C,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,GAAG,EAAE;AACZ,IAAI,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC;AACjC,IAAI,IAAI,CAAC,CAAC,GAAG,KAAK;AAClB,IAAI,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM;;AAElC,IAAI,GAAG,GAAG,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC;AAC/B,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM;;AAElB,IAAI,IAAI,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;AACnC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;AACnB,IAAI,KAAK,CAAC,IAAI,KAAK,EAAE;AACrB,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACnB,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM;AACnB,IAAI;AACJ,IAAI,OAAO;AACX,EAAE;;AAEF,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;AACnC,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;AACpD,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;AACtF,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;;AAE1C,EAAE,GAAG,CAAC,MAAM,EAAE;AACd,IAAI,IAAI,EAAE,MAAM,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AACnC,IAAI,IAAI,QAAQ,KAAK,OAAO,MAAM;AAClC,MAAM,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM;;AAE7B,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,UAAU;AAC3C,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC;;AAErC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACrB,EAAE;;AAEF,EAAE,IAAI,CAAC,CAAC,EAAE;AACV,IAAI,IAAI,MAAM,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACnD,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACrB,EAAE;AACF,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;;AAE1C,EAAE,KAAK,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,EAAE;AAC5B,IAAI,IAAI,SAAS,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AACpC,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;;AAEzB,IAAI,CAAC,IAAI,EAAE;AACX,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAClB,IAAI,OAAO;AACX,EAAE;;AAEF,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;;AAElC,EAAE,KAAK,CAAC,GAAG,EAAE;AACb,IAAI,IAAI,IAAI,IAAI,GAAG;AACnB,MAAM,IAAI,CAAC,IAAI;AACf,QAAQ,QAAQ,KAAK,OAAO;AAC5B,YAAY,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG;AAC/C,YAAY,GAAG,EAAE;;AAEjB,IAAI,IAAI,CAAC,IAAI,GAAG,KAAK;AACrB,EAAE;AACF;;AAEA,SAAS,mBAAmB,CAAC,EAAE,EAAE,WAAW,EAAE;AAC9C,EAAE,MAAM,aAAa,GAAG,IAAI,UAAU,CAAC;AACvC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;AAEnC,EAAE,MAAM,kBAAkB,GAAG,KAAK,IAAI;AACtC,UAAU,KAAK,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC;AACnC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,KAAK,CAAC;AACrC,UAAU,KAAK,CAAC,WAAW,GAAG,IAAI,GAAG,CAAC;AACtC,UAAU,KAAK,CAAC,SAAS,GAAG,IAAI,GAAG,CAAC;AACpC,UAAU,KAAK,CAAC,WAAW,GAAG,IAAI,GAAG,CAAC;AACtC,UAAU,KAAK,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC;AACnC,UAAU,KAAK,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,EAAE;;AAErC,EAAE,MAAM,eAAe,GAAG,IAAI,IAAI;AAClC,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC;AAC/B,UAAU,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,CAAC,EAAE;;AAElC,EAAE,OAAO,EAAE,CAAC,OAAO,GAAG,EAAE,UAAU,EAAE,GAAG,MAAM;AAC7C,IAAI,IAAI,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;;AAElC,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;AAC3B,IAAI,GAAG,CAAC,EAAE,EAAE,UAAU,EAAE;;AAExB,IAAI,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,GAAG;AACxC,IAAI,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK;AACzB,MAAM,GAAG,CAAC,KAAK;AACf,MAAM,kBAAkB;AACxB,MAAM,CAAC,IAAI,QAAQ,GAAG,IAAI,GAAG,CAAC;AAC9B,WAAW,QAAQ,GAAG,IAAI,GAAG,CAAC;AAC9B,WAAW,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;;AAE9C,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC;;AAE3B,IAAI,IAAI,CAAC,IAAI,UAAU;AACvB,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;;;AAG1B,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;AAC3B,IAAI,IAAI,KAAK,GAAG,IAAI,EAAE;AACtB,MAAM,IAAI,CAAC,IAAI,UAAU;AACzB,QAAQ,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;;AAE7B,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1B,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;AAC3B,IAAI;;AAEJ,IAAI,IAAI,KAAK,GAAG,IAAI;AACpB,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;;AAExB,IAAI,IAAI,KAAK,GAAG,IAAI;AACpB,MAAM,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC;;AAEvB,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI;AAC1B,EAAE;AACF;;AAEA,SAAS,mBAAmB,CAAC,EAAE,EAAE,WAAW,EAAE;AAC9C,EAAE,MAAM,eAAe,SAAS,MAAM,CAAC;AACvC,IAAI,IAAI,eAAe,GAAG,EAAE,OAAO,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC;AACrD;;AAEA,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK;AACrC,IAAI,IAAI,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC;;AAE3C,IAAI,GAAG,CAAC,KAAK;AACb,MAAM,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC;;AAEhC,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,UAAU;AAC3B,MAAM,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE;AAC7B,IAAI,OAAO,GAAG,CAAC;AACf;;AAEA,SAAS,mBAAmB,CAAC,EAAE,EAAE,WAAW,EAAE;AAC9C,EAAE,OAAO,EAAE,CAAC,OAAO,GAAG,EAAE,UAAU,EAAE,GAAG,MAAM;AAC7C,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC;AAClC,IAAI,IAAI,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;;AAElC,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,IAAI,IAAI,CAAC,KAAK,GAAG;AACjB,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;;AAEzB,IAAI,KAAK,CAAC,IAAI,UAAU,EAAE;AAC1B,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1B,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;AAC5B,IAAI,CAAC,MAAM;AACX,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;AAC5B,IAAI;;AAEJ,IAAI,OAAO,GAAG,CAAC,MAAM;AACrB,MAAM,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC;AAC/D,EAAE;AACF;;AAEA,SAAS,mBAAmB,CAAC,EAAE,EAAE,WAAW,EAAE;AAC9C,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK;AACrC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG;AACnB,IAAI,GAAG,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;AAChC,IAAI,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;AACnC,IAAI,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG;;AAEtC,IAAI,IAAI,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC;AAC3C,IAAI,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE;AAC1B,IAAI,IAAI,CAAC,KAAK,GAAG;AACjB,MAAM,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE;;AAE5B,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,UAAU;AAC3B,MAAM,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE;;AAE7B,IAAI,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,KAAK,EAAE;AAC7B,IAAI,OAAO,GAAG,CAAC;AACf;;AAEA,SAAS,kBAAkB,CAAC,EAAE,EAAE,WAAW,EAAE;AAC7C,EAAE,OAAO,EAAE,CAAC,MAAM,GAAG,EAAE,UAAU,EAAE,GAAG,MAAM;AAC5C,IAAI,IAAI,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;;AAElC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;AACvB,IAAI,IAAI,CAAC,IAAI,UAAU,EAAE;AACzB,MAAM,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;AAC5B,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1B,IAAI;;AAEJ,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI;AAC1B,EAAE;AACF;;;AAGA,SAAS,kBAAkB,CAAC,EAAE,EAAE,WAAW,EAAE;AAC7C,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK;AACrC,IAAI,IAAI,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC;;AAE3C,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE;AAC1B,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE;AAC7B,MAAM,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACvC,MAAM,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE;AAC7B,IAAI;;AAEJ,IAAI,OAAO,GAAG,CAAC;AACf;;AAEA,SAAS,qBAAqB,CAAC,EAAE,EAAE,WAAW,EAAE;AAChD,EAAE,MAAM,oBAAoB,GAAG,IAAI,IAAI;AACvC,UAAU,IAAI,CAAC,GAAG,GAAG,GAAG;AACxB,UAAU,IAAI,CAAC,MAAM,GAAG,GAAG,GAAG,CAAC;AAC/B,UAAU,CAAC,IAAI,CAAC,eAAe,GAAG,GAAG,KAAK,CAAC,EAAE;;AAE7C,EAAE,OAAO,EAAE,CAAC,SAAS,GAAG,EAAE,UAAU,EAAE,GAAG,MAAM;AAC/C,IAAI,IAAI,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;;AAElC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;AACvB,IAAI,IAAI,CAAC,IAAI,UAAU;AACvB,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;;AAE1B,IAAI,IAAI,EAAE,GAAG,oBAAoB,CAAC,GAAG,CAAC;AACtC,IAAI,KAAK,IAAI,IAAI,IAAI,GAAG,CAAC,MAAM,EAAE;AACjC,MAAM,IAAI,QAAQ,KAAK,OAAO,IAAI,EAAE;AACpC,QAAQ,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;AACtB,QAAQ,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;AAClB,MAAM,CAAC,MAAM;AACb,QAAQ,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;AACzB,UAAU,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG;AAChC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC;;AAErC,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;AACvB,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;AAC1C,aAAa,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,oBAAoB,CAAC;AAClD,MAAM;AACN,IAAI;;AAEJ,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI;AAC1B,EAAE;AACF;;AAEA,SAAS,oBAAoB,CAAC,EAAE,EAAE,WAAW,EAAE;AAC/C,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK;AAC/C,IAAI,IAAI,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC;;AAE3C,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE;AAC1B,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,UAAU;AAC3B,MAAM,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE;;AAE7B,IAAI,IAAI,OAAO,GAAG,GAAG,CAAC,OAAO,GAAG,EAAE;AAClC,IAAI,OAAO,GAAG,CAAC,QAAQ,EAAE;AACzB,MAAM,OAAO,CAAC,IAAI;AAClB,QAAQ,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;;AAE9B,IAAI,OAAO,GAAG,CAAC;AACf;;AAEA,SAAS,uBAAuB,CAAC,EAAE,EAAE,WAAW,EAAE;AAClD,EAAE,OAAO,EAAE,CAAC,WAAW,GAAG,EAAE,UAAU,EAAE,GAAG,MAAM;AACjD,IAAI,IAAI,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;;AAElC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;AACvB,IAAI,IAAI,CAAC,IAAI,UAAU;AACvB,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;;AAE1B,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC,MAAM;AAChC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;;AAErB,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI;AAC1B,EAAE;AACF;;AAEA,SAAS,mBAAmB,CAAC,EAAE,EAAE;AACjC,EAAE,EAAE,CAAC,OAAO,IAAI,MAAM,IAAI,UAAU,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACjD,EAAE,EAAE,CAAC,QAAQ,GAAG,MAAM,IAAI,UAAU,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACjD;;;AAGA,SAAS,mBAAmB,CAAC,EAAE,EAAE;AACjC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI;AACpC;;AAEA,SAAS,sBAAsB,CAAC,EAAE,EAAE,WAAW,EAAE;AACjD,EAAE,OAAO,EAAE,CAAC,UAAU,GAAG,EAAE,UAAU,EAAE,GAAG,MAAM;AAChD,IAAI,IAAI,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;;AAElC,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,UAAU,EAAE;AAChC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE;AACnC,QAAQ,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;AAC9B,QAAQ,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AAC5B,MAAM;AACN,IAAI;;AAEJ,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI;AAC1B,EAAE;AACF;;;AAGA,SAAS,sBAAsB,CAAC,EAAE,EAAE,WAAW,EAAE;AACjD,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK;AACrC,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE;AACxC,MAAM,IAAI,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC;AAC7C,MAAM,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACvC,MAAM,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE;AAC7B,IAAI;AACJ,IAAI,OAAO,GAAG,CAAC;AACf;;AAIA;;;AAGA,MAAM,cAAc,IAAI;AACxB,EAAE,mBAAmB;AACrB,EAAE,mBAAmB;AACrB,EAAE,kBAAkB;AACpB,EAAE,oBAAoB;AACtB,EAAE,mBAAmB;AACrB,EAAE,sBAAsB;AACxB,CAAC;;;AAGD,MAAM,cAAc,IAAI;AACxB,EAAE,mBAAmB;AACrB,EAAE,kBAAkB;AACpB,EAAE,mBAAmB;AACrB,EAAE,qBAAqB;AACvB,EAAE,uBAAuB;AACzB,EAAE,mBAAmB;AACrB,EAAE,sBAAsB;AACxB,CAAC;;;AAGD,MAAM,YAAY;AAClB,EAAE,EAAE,UAAU,EAAE,cAAc;AAC9B,IAAI,WAAW,EAAE,cAAc;AAC/B,IAAI,UAAU,EAAE,cAAc;AAC9B,IAAI,WAAW,EAAE,cAAc,GAAG;;AC1dlC,SAAS,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE;AAC1C,EAAE,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;AAC5C,EAAE,MAAM,CAAC,GAAG,IAAI;AAChB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC;;AAE7C,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC;AACvB,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC;AACvB,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AAChB;;AAEA,SAAS,iBAAiB,CAAC,GAAG,EAAE;AAChC,EAAE,IAAI,EAAE,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACvC,EAAE,OAAO,MAAM,IAAI;AACnB,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;AAClB,QAAQ,MAAM,GAAG,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;;AAErC,IAAI,IAAI,GAAG,GAAG,EAAE;;AAEhB;AACA,IAAI,QAAQ,EAAE,CAAC,UAAU,IAAI,OAAO,GAAG;;AAEvC;AACA,MAAM,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,aAAa,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;AACxD,MAAM,IAAI,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;;AAEtC,MAAM,IAAI,GAAG,OAAO,IAAI,EAAE,CAAC,UAAU,EAAE,EAAE;AACzC;AACA;AACA;AACA,QAAQ,OAAO,GAAG,OAAO,IAAI,CAAC,CAAC;AAC/B,QAAQ;AACR,MAAM;;AAEN,MAAM,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AACpB,MAAM,IAAI,OAAO,GAAG,CAAC,KAAK,QAAQ,GAAG;AACrC,UAAU,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;;AAEtC,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;;AAE/B,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC;AAChD,MAAM,IAAI,IAAI,IAAI,GAAG;AACrB,QAAQ,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE;AACvB,IAAI;;AAEJ,IAAI,OAAO;AACX,EAAE;AACF;;AAEA,SAAS,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE;AACxB,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC;AAClE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACb,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC;AAChB,EAAE,OAAO;AACT;;AAIA,MAAM,UAAU,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,CAAC;;;AAGlM,SAAS,YAAY,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE;AAC9D,EAAE,IAAI,WAAW,GAAG,OAAO,KAAK;AAChC,QAAQ,SAAS,EAAE,OAAO;AAC1B,QAAQ,IAAI,GAAG,GAAG,EAAE,OAAO,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;AAC1C,QAAQ,IAAI,EAAE,GAAG,EAAE,OAAO,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AACzC,QAAQ,IAAI,IAAI,GAAG,EAAE,OAAO,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACvD,QAAQ,UAAU,EAAE,CAAC;;;AAGrB,EAAE,IAAI,EAAE,EAAE,aAAa,CAAC,EAAE,EAAE,eAAe,CAAC,EAAE;AAC9C,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,UAAU;AAC5B,IAAI,EAAE,CAAC,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC;AACzC,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,UAAU;AAC5B,IAAI,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC;;AAEvC,EAAE,OAAO;AACT,IAAI,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC;;AAE1C,IAAI,UAAU,EAAE,CAAC,IAAI,EAAE,GAAG;AAC1B,MAAM,eAAe,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE;;AAE9C,IAAI,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE;AAC5B,MAAM,IAAI,EAAE,CAAC,GAAG;AAChB,QAAQ,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;AAE5C,MAAM,IAAI,SAAS,GAAG,aAAa,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC;AAC/D,MAAM,OAAO,SAAS,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;;AAElE,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE;AACtC,MAAM,IAAI,IAAI,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE;AACnE,MAAM,IAAI,CAAC,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC;AAC3C,MAAM,OAAO,IAAI,CAAC,CAAC;AACnB;AACA;;AC7FA,MAAA,KAAA,GAAA,CAAA,IAAA,OAAA,CAAA,KAAuC;AACvC,MAAA,MAAA,GAAA,CAAA,IAAA,OAAA,CAAA,KAAwC;;AAExC,SAAA,SAAA,CAAA,WAAA,EAAA;AACE,EAAA,IAAA;AACA,EAAA,QAAA,EAAA,EAAA,MAAA;AACE,IAAA,GAAA,GAAA,aAAA,CAAA,GAAA;AACE,IAAA,IAAA,EAAA,EAAA;AACA,MAAA,GAAA,GAAA,WAAA,CAAA,WAAA,EAAA,IAAA,GAAA,EAAA;;;;;;AAME,QAAA,GAAA,CAAA,KAAA;AACF,MAAA,OAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA;;ACdN,eAAA,aAAA,CAAA,MAAA,EAAA,MAAA,EAAA,GAAA,EAAA,GAAA,EAAA;;;;;;;;;;;;;;;;;EAiBE,IAAA,MAAA,GAAA,MAAA,CAAoB,CAAA,KAAA,EAAQ,SAAS,CAAC,CAAA,IAAA,MAAA,CAAA;AACtC,EAAA,MAAA,MAAA,EAAA,IAAA,CAAA,MAAA,EAAA,GAAA,EAAA,GAAA,EAAA;;AAEF,SAAA,cAAA,CAAA,MAAA,EAAA,MAAA,EAAA,GAAA,EAAA,GAAA,EAAA;AACE,EAAA,MAAA,CAAA,GAAA,CAAA,IAAA,EAAA,GAAA;AACA,EAAA,aAAA,CAAA,MAAA,EAAA,MAAA,EAAA,GAAA,EAAA,GAAA,EAAA;;AAEF,SAAA,YAAA,CAAA,MAAA,EAAA,MAAA,EAAA,GAAA,EAAA;AACE,EAAA,MAAA,CAAA,GAAA,CAAA,MAAA,EAAA,GAAA,EAAA;;;AAGF,MAAA,YAAA,EAAA;AACE,EAAA,CAAA,IAAA,CAAA,CAAA;AACA,EAAA,aAAA;AACA,EAAA,cAAA;AACA,EAAA,aAAA;AACA,EAAA,YAAA;AACA,EAAA,YAAA;AACA,EAAA,YAAA;AACA,EAAA,YAAA;AACA,EAAA,aAAA;AACA,EAAA,YAAA;AACA,EAAA,aAAA;AACA,EAAA,YAAA;AACA,EAAA,cAAA;AACA,EAAA,cAAA;AACA,EAAA,aAAA;AACA,EAAA,cAAA,IAAA;;AC1CF,SAAA,cAAA,CAAA,GAAA,EAAA,MAAA,EAAA;AACE,EAAA,IAAA,QAAA,CAAA,EAAA,EAAA,SAAA,CAAA;;AAEA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,CAAA,IAAA,EAAA,CAAA,EAAA,QAAA,CAAA,CAAA,EAAA,GAAA,GAAA,EAAA,MAAA,IAAA;;;AAGA,EAAA,IAAA,OAAA,CAAA,GAAA,EAAA,SAAA;AACA,EAAA,IAAA,WAAA,GAAA,SAAA,IAAA,QAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,QAAA,EAAA,SAAA;;AAEA,EAAA,OAAA,CAAA,EAAA,EAAA;AACA,EAAA,OAAA,CAAA,OAAA,EAAA,UAAA;;;AAGA,EAAA,SAAA,UAAA,CAAA,UAAA,EAAA;AACK,IAAA,IAAA,EAAA,MAAA,CAAA,UAAA,CAAA,EAAA;AACD,MAAA,OAAA,GAAA,CAAA,OAAA,GAAA,CAAA,IAAA,OAAA;AACA,MAAA,QAAA,GAAA,UAAA,CAAA,MAAA,GAAA,QAAA;AACF,SAAA,QAAA,GAAA;;AAEA,IAAA,OAAA,IAAA,OAAA,CAAA,WAAA,CAAA;;AAEF,EAAA,SAAA,MAAA,CAAA,GAAA,EAAA,GAAA,EAAA;AACK,IAAA,KAAA,IAAA,GAAA,IAAA,QAAA,EAAA;AACD,MAAA,IAAA,SAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA;AACE,MAAA,IAAA,SAAA,EAAA;AACA,QAAA,GAAA,CAAA,MAAA,CAAA,GAAA;;QAEA,SAAA,CAAA,CAAA,GAAA,UAAuB,EAAA;AACvB,QAAA,OAAA,IAAA,CAAA,CAAA;AACJ,IAAA,OAAA,KAAA;;AAEF,EAAA,SAAA,OAAA,CAAA,QAAA,EAAA,GAAA,EAAA;AACK,IAAA,KAAA,IAAA,GAAA,IAAA,QAAA,EAAA;AACD,MAAA,YAAA,CAAA,GAAA,CAAA,EAAA,CAAA,CAAA,MAAA,EAAA,MAAA,EAAA,GAAA,EAAA,GAAA,EAAA;;;AAGF,IAAA,IAAA,GAAA,GAAA,IAAA,CAAA,GAAA;AACE,IAAA,IAAA,GAAA,GAAA,SAAA,EAAA;AACA,MAAA,SAAA,GAAA,SAAA,GAAA;AACA,MAAA,QAAA,CAAA,OAAA,CAAA,IAAA,GAAA,EAAA;AACK,MAAA,OAAA,QAAA,CAAA,MAAA,GAAA,QAAA,EAAA;AACA,QAAA,KAAA,IAAA,SAAA,IAAA,QAAA,CAAA,GAAA,EAAA,CAAA,MAAA,EAAA,EAAA;AACD,UAAA,SAAA,CAAA,UAAoB,SAAS,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;;AC1CvC,MAAA,SAAA,SAAA,KAAA,CAAA;AACE,EAAA,WAAA,CAAA,QAAA,EAAA,MAAA,CAAA,QAAA,CAAA,MAAA,EAAA;;AAEE,IAAA,KAAA,CAAM,CAAA,GAAA,EAAM,MAAA,CAAA,QAAA,CAAA,EAAA,CAAA,CAAoB,EAAA,EAAI,MAAA,CAAA,MAAA,CAAc,CAAC;AACnD,IAAA,IAAA,CAAA,QAAA,GAAA;AACA,IAAA,IAAA,CAAA,MAAA,GAAA,OAAA,CAAA;;AAEJ,MAAA,QAAA,CAAA;;AAEE,EAAA,MAAA,OAAA,CAAA,GAAA,CAAA,EAAA,EAAA;AACE,IAAA,IAAA,GAAA,GAAA,GAAA,CAAA;AACG,IAAA,IAAA,EAAA,MAAA,CAAA,GAAA,CAAA,EAAA;;AAED,MAAA,GAAA,CAAA,SAAA,GAAA,GAAA,GAAA,IAAA,CAAA,SAAA,IAAA,IAAA,CAAA,cAAA,CAAA,GAAA,EAAA;AACF,IAAA,IAAA,CAAA,SAAA,GAAA;;AAEE,IAAA,IAAA,IAAA,IAAA,GAAA,CAAA,UAAA,EAAA;AACA,MAAA,GAAA,CAAA,UAAA,GAAA,GAAA;;IAEF,IAAA,QAAA,GAAA,MAAA,IAAA,CAAA,MAAA,CAAiC,SAAS,OAAO,SAAS;QACxD,CAAA,IAAA,QAAA,CAAA,CAAA,CAAA,CAAA,MAAA,EAAA;AACA,MAAA,MAAA,IAAA,IAAA,CAAA,SAAA,CAAA,QAAA,CAAA,CAAA,CAAA,CAAA;AACF,IAAA,OAAA,IAAA,CAAA,IAAA,CAAA,OAAA,CAAA,GAAA,EAAA,QAAA,CAAA;;AAEF,EAAA,MAAA,UAAA,CAAA,GAAA,CAAA,EAAA,EAAA;AACE,IAAA,IAAA,QAAA,GAAA,IAAA,CAAA,MAAA,CAA2B,YAAY,EAAA,GAAA;AACvC,IAAA,MAAA,IAAA,CAAA,IAAA,CAAA,MAAA,CAAA,GAAA,EAAA,QAAA;AACA,IAAA,OAAA,MAAA,QAAA;;AAEF,EAAA,MAAA,IAAA,CAAA,GAAA,CAAA,EAAA,EAAA;IACE,IAAA,QAAA,GAAA,MAAA,IAAA,CAAA,MAAA,CAAiC,MAAM,OAAO,MAAM;AAClD,IAAA,IAAA,QAAA,CAAA,CAAA,CAAA,CAAA,MAAA,EAAA;AACA,MAAA,MAAA,IAAA,IAAA,CAAA,SAAA,CAAA,QAAA,CAAA,CAAA,CAAA,CAAA;AACF,IAAA,OAAA,IAAA,CAAA,IAAA,CAAA,OAAA,CAAA,GAAA,EAAA,QAAA,CAAA;;EAEF,IAAA,GAAA,CAAS,OAAA,IAAA,CAAA,KAAA,CAAmB,SAAS,EAAA,IAAA,EAAQ,UAAU,CAAA;AACvD,EAAA,MAAA,CAAA,CAAA,MAAA,CAAA,EAAA,CAAmB,kBAAmB,QAAQ,EAAA,CAAA,MAAA,CAAA,CAAA;;;AAG9C,EAAA,SAAA,CAAA,GAAA,EAAA,EAAA,EAAA,YAAA,EAAA;AACE,IAAA,GAAA,GAAA,UAAA,CAAA,GAAA,EAAA,EAAA,EAAA,YAAA;AACA,IAAA,IAAA,MAAA,GAAA,IAAA,CAAA,KAAA,CAAwB,WAAW,EAAA,GAAA,EAAA,GAAA;AACnC,IAAA,OAAA,IAAA,CAAA,MAAA,GAAA,MAAA,EAAA,GAAA,CAAA,IAAA,MAAA;;;AAGF,EAAA,WAAA,CAAA,GAAA,EAAA,EAAA,EAAA,YAAA,EAAA;AACE,IAAA,GAAA,GAAA,UAAA,CAAA,GAAA,EAAA,EAAA,EAAA,YAAA;AACA,IAAA,OAAA,IAAA,CAAA,KAAA,CAAkB,aAAa,EAAA,GAAA,EAAA,GAAA,CAAA;;;EAGjC,IAAA,CAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA;AACE,IAAA,OAAA,IAAA,CAAA,GAAA,CAAA,CAAA,KAAA,EAAA,OAAA,EAAA,GAAA,CAAA,CAAA,CAAA,EAAA,OAAA,CAAA;EACF,IAAA,CAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA;AACE,IAAA,OAAA,IAAA,CAAA,GAAA,CAAA,CAAA,KAAA,EAAA,OAAA,EAAA,GAAA,CAAA,CAAA,CAAA,EAAA,OAAA,CAAA;EACF,KAAA,CAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA;AACE,IAAA,OAAA,IAAA,CAAA,GAAA,CAAA,CAAA,KAAA,EAAA,OAAA,EAAA,GAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA;;;EAGF,QAAA,CAAA,KAAA,EAAA,GAAA,EAAA,OAAA,EAAA;AACE,IAAA,OAAA,IAAA,CAAA,GAAA,CAAA,CAAA,KAAA,EAAA,GAAA,EAAA,GAAA,EAAkC,KAAK,EAAA,GAAA,CAAA,CAAA,CAAA,EAAA,OAAA,CAAA;;EAEzC,QAAA,CAAA,KAAA,EAAA,GAAA,EAAA,OAAA,EAAA;AACE,IAAA,OAAA,IAAA,CAAA,GAAA,CAAA,CAAA,KAAA,EAAA,GAAA,EAAA,GAAA,EAAkC,KAAK,EAAA,GAAA,CAAA,CAAA,CAAA,EAAA,OAAA,CAAA;;EAEzC,SAAA,CAAA,KAAA,EAAA,GAAA,EAAA,OAAA,EAAA;AACE,IAAA,OAAA,IAAA,CAAA,GAAA,CAAA,CAAA,KAAA,EAAA,GAAA,EAAA,GAAA,EAAkC,KAAK,EAAA,GAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA;;;AAGzC,EAAA,MAAA,GAAA,CAAA,GAAA,EAAA,OAAA,EAAA;AACI,IAAA,IAAA,SAAA,KAAA,GAAA,CAAA,OAAA,EAAA;AACE,MAAA,IAAA,KAAA,CAAA,OAAA,CAAA,EAAA;;AAEA,QAAA,OAAA,GAAA,CAAA,SAAA,EAAA,OAAA,EAAA;;AAEF,MAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,EAAA,SAAA,GAAA,OAAA,EAAA;AACE,MAAA,IAAA,IAAA,IAAA,GAAA,IAAA,KAAA,CAAA,GAAA,CAAA,EAAA;;YAEE,GAAA,EAAA,CAAO,OAAA,GAAA,CAAA,GAAA,OAAA,EAAA,SAAA,EAAA,GAAA,EAAA;;AAET,QAAA,OAAA,CAAA,IAAA,IAAA,CAAA,GAAA,CAAA,CAAA,GAAA,GAAA,EAAA,CAAA,GAAA,CAAA,GAAA,IAA0C,SAAS,GAAA,CAAA,CAAA,EAAA,OAAA,CAAA;;;AAGrD,MAAA,GAAA,CAAA,OAAA,GAAA;AACE,UAAA,MAAA,SAAA,CAAA,GAAA;AACA,UAAA,IAAA,CAAA,SAAA,CAAA,GAAA,EAAA;;AAEF,IAAA,IAAA,OAAA,EAAA;AACE,MAAA,IAAA,OAAA,CAAA,KAAA,EAAA;AACA,QAAA,GAAA,CAAA,KAAA,GAAA,OAAA,CAAA,MAAA;AACA,MAAA,IAAA,OAAA,CAAA,KAAA,EAAA;AACA,QAAA,GAAA,GAAA,OAAA,CAAA,KAAA,CAAA,GAAA,CAAA,IAAA,IAAA,CAAA,CAAA;;AAEJ,IAAA,OAAA,IAAA,CAAA,KAAA,CAAmB,SAAU,EAAA,GAAA;AAC3B,MAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,IAAA,EAAA,CAAA,CAAA;;;;;;;;AAQJ,EAAA,cAAA,CAAA,GAAA,EAAA;AACE,IAAA,IAAA,CAAA,WAAA,EAAA,MAAA;IACA,IAAA,MAAA,EAAA,CAAgB,SAAA,EAAA,GAAA,CAAA,YAAA;AAChB,IAAA,MAAA,CAAA,YAAA;AACE,MAAA,IAAA,CAAA,YAAA,GAAA,GAAA,EAAA,IAAA,EAAA,MAAA;AACF,IAAA,OAAA,cAAA,CAAA,GAAA,EAAA,MAAA,CAAA;;AAEF,EAAA,OAAA,QAAA,GAAA;IACE,OAAO,yGAAA;;AAET,EAAA,OAAA,MAAA,CAAA,KAAA,CAAA,IAAA,EAAA;AACE,IAAA,KAAA,CAAA,MAAA,GAAA,CAAA,EAAA;AACA,IAAA,IAAA,KAAA,EAAA,IAAA,EAAA,CAAA,GAAA,KAAA,CAAA;AACA,IAAA,CAAA,CAAA,SAAA,GAAA;AACG,IAAA,KAAA,KAAA,IAAA,KAAA,CAAA,QAAA,EAAA,CAAA,KAAA,CAAiC,KAAK,CAAA,EAAA;AACvC,MAAA,CAAA,KAAA,EAAA,IAAA,CAAA,GAAA,KAAA,CAAA,KAAA,CAA4B,GAAG;AAC/B,MAAA,CAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,IAAA,EAAA,CAAA,CAAA,CAAA;;;AAGN,SAAA,UAAA,CAAA,GAAA,EAAA,EAAA,EAAA,YAAA,EAAA;MACI,EAAA,EAAA,IAAA,EAAA;AACA,IAAA,YAAA,GAAA;AACA,IAAA,EAAA,GAAA,KAAA;;AAEF,EAAA,GAAA;AACE,IAAA,GAAA,CAAA,IAAA;AACE,QAAA,CAAA,MAAA,CAAA,CAAA,GAAA,CAAA,EAAA,IAAA,EAAA;AACF,MAAA,GAAA,CAAA,MAAA,CAAA,QAAA;AACE,QAAA,CAAA,MAAA,CAAA,CAAA,IAAA,GAAA,CAAA,EAAA,IAAA,EAAA;AACF,MAAA,EAAA,GAAA,CAAA,GAAA,GAAA,EAAA,GAAA,EAAA;AACA,MAAA,GAAA;;AAEA,EAAA,IAAA,YAAA,EAAA;;;AAGA,IAAA,IAAA,cAAA,GAAA,CAAA;AACE,MAAA,CAAA,CAAA,IAAA,GAAA,YAAA,CAAA,CAAA,GAAA,CAAA,CAAA,GAAA,CAAA,cAAA;;AAEF,IAAA,GAAA,CAAA,MAAA,GAAA,GAAA,CAAA,MAAA,CAAA,GAAA,CAAA,cAAA,EAAA;AACF,EAAA,OAAA,GAAA;;AC7IF,MAAA,UAAA,GAAA,CAAA;EACE,CAAA,CAAA,CAAA,GAAA,IAAA,OAAA,CAAmB,CAAA,CAAA,CAAA,CAAA,KAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA;AACnB,IAAA,CAAA;;AAEF,SAAA,UAAA,CAAA,MAAA,EAAA,IAAA,EAAA,QAAA,EAAA;;AAEE,EAAA,IAAA,IAAA,GAAA,CAAA,GAAA,CAAA,EAAA,GAAA,GAAA,OAAA,GAAA,IAAA,KAAA,CAAA,MAAA,IAAA,CAAA,CAAA,EAAA,GAAA,IAAA;AACA,EAAA,OAAA,GAAA;;AAEA,EAAA,SAAA,GAAA,GAAA;AACI,IAAA,IAAA,GAAA,KAAA,MAAA,CAAA,IAAA,CAAA,EAAA;AACA,MAAA,UAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,QAAA,EAAA,CAAA,EAAA,CAAA;AACA,MAAA,MAAA,CAAA,IAAA,CAAA,GAAA,IAAA;AACF,IAAA,OAAA,IAAA,CAAA,CAAA;;AAEJ,SAAA,UAAA,CAAA,GAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,CAAA,EAAA;AACE,EAAA,IAAA;AACA,EAAA,IAAA,UAAA,GAAA,UAAA,CAA6B,QAAS,QAAQ;AAC5C,IAAA,CAAA,GAAA,MAAA,CAAA,SAAA,CAAqB,SAAS,EAAA,IAAA,CAAA,aAAA,CAAA;AAChC,EAAA,IAAA,UAAA,GAAA,UAAA,CAA6B,QAAS,OAAO;AAC3C,IAAA,CAAA,GAAA,MAAA,CAAA,SAAA,CAAqB,UAAU,CAAA;AACjC,EAAA,IAAA,gBAAA,GAAA,SAAA,EAAA,KAAoC,cAAe,SAAS,CAAA,GAAA;;AAE5D,EAAA,IAAA,IAAA,GAAA,MAAA,CAAA,MAAA,CAAA;AACE,IAAA,IAAA,EAAA,CAAA,EAAA,CAAA,IAAA,CAAA,UAAA,KAAA,gBAAA,CAAA,EAAA;;AAEA,IAAA,OAAA,CAAA,GAAA,EAAA,QAAA,EAAA;AACE,MAAA,IAAA,CAAA,aAAA,GAAA;AACA,MAAA,IAAA,CAAA,UAAA,GAAA,GAAA,CAAA,UAAA,IAAA,QAAA,CAAA,CAAA,CAAA,CAAA,KAAA,EAAA,iBAAA,IAAA,GAAA,CAAA;AACA,MAAA,MAAA,CAAA,SAAA,CAAiB,SAAS;AAC1B,MAAA,OAAA,GAAA,CAAA;AACE,UAAA,QAAA;AACA,UAAA,IAAA,CAAA,OAAA,CAAA,IAAA,EAAA,QAAA,CAAA,CAAA,CAAA;;AAEJ,IAAA,OAAA,CAAA,GAAA,EAAA,QAAA,EAAA;AACE,MAAA,UAAA,CAAA,CAAA,CAAA,UAAA,CAAA,CAAA;AACE,MAAA,IAAA,CAAA,IAAA,GAAA,CAAA,UAAA,EAAA;AACA,QAAA,IAAA,CAAA,IAAA,GAAA;AACF,MAAA,MAAA,CAAA,SAAA,CAAiB,SAAS,EAAA,CAAA,GAAA;AAC1B,MAAA,OAAA,QAAA;;AAEF,IAAA,MAAA,CAAA,GAAA,EAAA,QAAA,EAAA;AACE,MAAA,IAAA,CAAA,KAAA,CAAA,KAAA;AACA,MAAA,OAAA,QAAA;;AAEF,IAAA,KAAA,CAAA,GAAA,EAAA;AACI,MAAA,IAAA,GAAA,EAAA;AACA,QAAA,UAAA,CAAA,CAAA,CAAA,GAAA,EAAA,CAAA,CAAA;AACF,MAAA,MAAA,CAAA,CAAA,CAAA,GAAA,EAAA;;AAEE,MAAA,IAAA,IAAA,CAAA,MAAA,EAAA;AACA,QAAA,OAAA,IAAA,CAAA;AACA,QAAA,IAAA,CAAA,KAAA,GAAA,SAAA;AACA,QAAA,MAAA,CAAA,SAAA,CAAiB,eAAe,EAAA,KAAA,GAAA,GAAA,EAAA,GAAA,EAAA,CAAA,CAAA;;AAEpC,IAAA,KAAA,CAAA,GAAA,EAAA;AACE,MAAA,UAAA,CAAA,CAAA,CAAA,GAAA,EAAA;AACA,MAAA,OAAA,IAAA,CAAA,KAAA,CAAA,GAAA,CAAA;;AAEF,IAAA,MAAA,KAAA,CAAA,IAAA,EAAA,WAAA,EAAA,aAAA,EAAA;AACI,MAAA,IAAA,IAAA,CAAA,MAAA,EAAA;AACA,QAAA,MAAA,IAAA,KAAA,EAAA,CAAA,CAAA;;AAEF,MAAA,IAAA,CAAA,MAAA,GAAA;AACA,MAAA,MAAA;;;AAGA,MAAA,IAAA,QAAA,GAAA,MAAA,CAAA,QAAA,CAAA,WAAA;;AAEE,OAAA;AACA,QAAA,IAAA,QAAA,GAAA,CAAA,IAAA,EAAA,MAAA,EAAA;AACA,QAAA,IAAA,aAAA,GAAA,EAAA,IAAA,OAAA,CAAA,QAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,QAAA;AACA,QAAA,aAAA,CAAA,aAAA,EAAA,IAAA,EAAA;;;AAGF,MAAA,WAAA,GAAA,MAAA;AACA,MAAA,UAAA,CAAA,CAAA;AACE,QAAA,OAAA,IAAA,EAAA,GAAA,EAAA,GAAA,KAAA;AACE,UAAA,IAAA,GAAA,GAAA,SAAA,KAAA;AACE,cAAA,UAAA,CAAA,GAAA,CAAA,GAAA;;AAEF,UAAA,MAAA,WAAA;AACE,YAAA,QAAA,CAAA,UAAA,CAAA,IAAA,EAAA,GAAA,CAAA;AACF,UAAA,OAAA,GAAA,CAAA,GAAA,CAAA,CAAA,EAAA;;AAER,EAAA,IAAA,CAAA,KAAA,GAAA,SAAA;AACA,EAAA,OAAA;;AAEA,EAAA,eAAA,SAAA,GAAA;AACE,IAAA,MAAA,GAAA,UAAA,CAAA,EAAA;;AAEA,IAAA,gBAAA,CAAA,CAAA,EAAA;AACA,IAAA,UAAA,CAAA,GAAA,GAAA;AACA,IAAA,UAAA,CAAA,GAAA,GAAA;;AAEA,IAAA,IAAA;;MAEE,MAAA,CAAA,MAAA,GAAA,MAAA,OAAA,CAAA,IAAA,CAAA,CAAqC,UAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA,CAAA;;;MAGrC,MAAA,CAAA,KAAA,GAAA,MAAA,OAAA,CAAA,IAAA,CAAA,CAAoC,UAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA,CAAA;AACpC,MAAA,OAAA,IAAA;AACG,IAAA,OAAA,GAAA,EAAA;AACH,MAAA,OAAA,KAAA,CAAA,CAAA,CAAA,CAAA;;AChGN,MAAA,OAAA,EAAA;AACE,EAAA,IAAA,CAAA,EAAA,EAAA,CAAW,uBAAwB,OAAO,CAAA,CAAA,MAAA,CAAA,EAAA,IAAA,IAAA,CAAA,OAAA,EAAA;EAC1C,IAAA,CAAA,EAAA,EAAA,CAAW,OAAA,IAAA,CAAA,KAAA,EAAA,IAAA,CAAA,IAAA,CAAA,EAAA,CAAA,IAAA,IAAA,EAAA;EACX,IAAA,CAAA,EAAA,EAAA,CAAW,OAAA,IAAA,CAAA,IAAA,CAAA,EAAA,CAAA,CAAA;;AAEb,MAAA,WAAA,EAAA;AACE,EAAA,QAAA,EAAA,UAAA,CAAA,cAAA;;AAEF,MAAA,QAAA,SAAA,QAAA,CAAA;AACE,EAAA,WAAA,CAAA,GAAA,EAAA;AACE,IAAA,GAAA,GAAA,CAAA,GAAA,WAAA,EAAA,GAAA,GAAA;AACA,IAAA,KAAA;AACA,IAAA,IAAA,CAAA,IAAA,CAAA,GAAA;;AAEA,IAAA,IAAA,CAAA,QAAA,GAAA,GAAA,CAAA;;IAEA,IAAA,CAAA,IAAA,GAAA,UAAA,CAAwB,GAAA,EAAA,IAAA;AACtB,MAAA,IAAA,CAAA,cAAA,CAAA,GAAA,CAAA,EAAA,CAAA;;AAEJ,EAAA,IAAA,CAAA,MAAA,EAAA;AACK,IAAA,KAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,MAAA,CAAA,OAAA,CAAA,MAAA,CAAA,EAAA;UACC,KAAA,CAAA,CAAA,CAAA,EAAA,CAAY,IAAA,CAAA,CAAA,CAAA,GAAA,EAAA,CAAA,CAAA;AAChB,IAAA,OAAA,IAAA;;;AAGF,EAAA,OAAA,QAAA,CAAA,UAAA,EAAA,SAAA,EAAA,OAAA,CAAA,OAAA,EAAA;AACE,IAAA,IAAA,KAAA,GAAA,cAAA,IAAA,CAAA;AACA,IAAA,KAAA,CAAA,SAAA,CAAA,QAAA;AACE,MAAA,YAAA,CAAA,UAAA,EAAA,SAAA,EAAA,OAAA;AACF,IAAA,OAAA,KAAA;;;AAGF,EAAA,MAAA,SAAA,CAAA,GAAA,EAAA,GAAA,EAAA,OAAA,EAAA;AACE,IAAA,IAAA,CAAA,QAAA,GAAA,GAAA,EAAA,GAAA,EAAA,OAAA;AACA,IAAA,IAAA;AACE,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA,MAAA,GAAA,EAAA;AACE,MAAA,IAAA,MAAA,EAAA;AACA,QAAA,MAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAA,IAAA,EAAA,GAAA,EAAA,OAAA,EAAA;eACK,OAAA,EAAA,CAAW,MAAA,OAAA,CAAA,CAAA;AACf,IAAA,OAAA,GAAA,EAAA;AACH,MAAA,IAAA,CAAA,QAAA,CAAA,GAAA,EAAA,GAAA,EAAA,CAAA,CAAA;;AAEJ,EAAA,QAAA,CAAA,GAAA,EAAA,GAAA,EAAA;AACE,IAAA,OAAA,CAAA,IAAA,CAAc,uBAAwB,EAAA,GAAA,EAAA,GAAA,EAAA,CAAA;AACxC,EAAA,QAAA,CAAA,GAAA,EAAA,GAAA,EAAA,OAAA,EAAA;AACE,IAAA,OAAA,CAAA,IAAA,CAAc,sBAAuB,EAAA,GAAA,EAAA,GAAA,EAAA,OAAA,EAAA,CAAA;;;;EAIvC,cAAA,CAAA,KAAA,CAAA,CAAsB,WAAW,CAAC,EAAE,CAAA,EAAA;AAClC,IAAA,IAAA,QAAA,GAAA,IAAA,CAAA;AACA,IAAA,IAAA,GAAA,EAAA,GAAA,GAAA,QAAA,EAAA,OAAA,CAAA,GAAA,CAAA,KAAA,CAAA,IAAA,CAAgD,GAAG,CAAA;AAChD,IAAA,IAAA,EAAA,GAAA,EAAA;MACD,GAAA,GAAA,KAAA,CAAA,IAAA,CAAkB,IAAA,CAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA;AAClB,MAAA,QAAA,EAAA,OAAA,CAAA,GAAA,EAAA,GAAA,EAAA;AACF,IAAA,OAAA,GAAA;;;AAGF,EAAA,OAAA,CAAA,MAAA,EAAA,YAAA,EAAA;AACI,IAAA,IAAA,YAAA,EAAA;AACA,MAAA,OAAA,MAAA,CAAA,OAAA,EAAA,CAAA,CAAA;;;;AAIJ,EAAA,aAAA,CAAA,MAAA,EAAA,WAAA,EAAA,GAAA,EAAA;AACK,IAAA,IAAA,EAAA,WAAA,EAAA;AACD,MAAA,OAAA,MAAA,CAAA,YAAA,IAAA,CAAA,CAAA;;AAEJ,EAAA,SAAA,CAAA,YAAA,EAAA;AACE,IAAA,OAAA,CAAA,IAAA,CAAA,SAAA,GAAA,YAAA,KAAA;AACF,EAAA,kBAAA,CAAA,GAAA,CAAA,IAAA,EAAA;AACI,IAAA,IAAA,GAAA,CAAA,OAAA,EAAA,CAAe,GAAA,EAAA,CAAU,KAAA,EAAA,GAAA,EAAA;AAC3B,IAAA,OAAA,IAAA,CAAA,IAAA,CAAA;AACE,MAAA,YAAA,GAAA;AACE,QAAA,IAAA,CAAA,KAAA,CAAA,GAAA,CAAA,KAAA,IAAA,IAAA,EAAA,GAAA,CAAA,MAAA;AACE,WAAA,IAAA,CAAA,IAAA,CAAA,SAAA;AACA,WAAA,IAAA,CAAA,GAAA,CAAA,SAAA,EAAA,GAAA,CAAA,KAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;AAER,EAAA,KAAA,CAAA,EAAA,EAAA,SAAA,CAAA,GAAA,CAAA,EAAA,EAAA;IACE,OAAA,IAAA,OAAA,CAAoB,IAAA,IAAA,UAAA,CAAA,IAAA,EAAA,CAAA,IAAA,EAAA,GAAA,SAAA,CAAA,IAAA,CAAA,MAAA,EAAA,CAAA,CAAA,CAAA,CAAA;;AAEtB,EAAA,eAAA,CAAA,UAAA,EAAA,YAAA,EAAA;IACE,IAAA,CAAA,IAAA,CAAA,KAAA,CAAiB,UAAA;AACf,MAAA,YAAA;AACA,MAAA,OAAA,aAAA,EAAA,IAAA,KAAA;AACE,QAAA,IAAA;AACE,UAAA,UAAA,GAAA,MAAA;AACA,UAAA,WAAA,IAAA,KAAA,IAAA,UAAA;AACE,YAAA,aAAA,CAAA,KAAA;AACF,UAAA,IAAA,CAAA,KAAA,GAAA;AACG,QAAA,OAAA,GAAA,EAAA;AACH,UAAA,IAAA,CAAA,KAAA,CAAA,GAAA,EAAA,CAAA,CAAA,CAAA;AACN,IAAA,OAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCA,IAAA,QAAA,CAAA,GAAA,GAAA,EAAA;AACE,MAAA,GAAA,GAAA,IAAA,CAAA,SAAA,CAAA,GAAA;AACA,MAAA,OAAA,IAAA,CAAA,SAAA,EAAA;AACE,QAAA,IAAA,CAAA,WAAA;AACE,UAAAC,OAAA,CAAA,GAAA,CAAA,CAAA,EAAA,CAAA;;AAEN,IAAA,QAAA,CAAA,GAAA,GAAA,EAAA;AACE,MAAA,GAAA,GAAA,IAAA,CAAA,SAAA,CAAA,GAAA;AACA,MAAA,OAAA,IAAA,CAAA,SAAA,EAAA;AACE,QAAA,IAAA,CAAA,WAAA;AACE,UAAAC,SAAA,CAAA,GAAA,CAAA,CAAA,EAAA,CAAA;;AAEN,IAAA,SAAA,CAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA,EAAA;;AAEI,MAAA,IAAA,MAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA;AACA,QAAA,OAAA,CAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA;AACF,MAAA,EAAA,GAAA,IAAA,GAAA,CAAA,EAAA;AACA,MAAA,OAAA,CAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,CAAA;;;AAGJ,EAAA,WAAA,CAAA,WAAA,EAAA,YAAA,EAAA;AACI,IAAA,IAAA,SAAA,KAAA,YAAA,EAAA;AACA,MAAA,YAAA,GAAA,YAAA;;IAEF,OAAA,IAAA,CAAA,eAAA,CAA6B,WAAA;AAC3B,MAAA,MAAA,IAAA,YAAA,CAAA,KAAA,CAAA,MAAA,CAAA,CAAA,CAAA;;;AAGJ,EAAA,YAAA,CAAA,OAAA,EAAA;AACK,IAAA,IAAA,EAAA,OAAA,EAAA,IAAA,EAAA;AACD,MAAA,OAAA,GAAA,IAAA,GAAA,CAAA,OAAA,IAA6B,qBAAqB;AAClD,MAAA,OAAA,IAAA,CAAA,SAAA,EAAA;AACE,QAAA,IAAA,CAAA,YAAA;AACE,UAAA,IAAA,SAAA,CAAA,OAAA,EAAA,CAAwB,MAAM,CAAA,CAAA,CAAA,EAAA,CAAA;;IAEpC,OAAA,CAAA,UAAA,GAAqB;;AAErB,IAAA,IAAA,QAAA,EAAA,UAAA,GAAA,OAAA,CAAA;AACE,IAAA,IAAA,CAAA,KAAA,UAAA,EAAA;AACE,MAAA,IAAA,CAAA,KAAA,UAAA,EAAA;AACA,QAAA,MAAA,IAAA,KAAA,CAAiB,eAAC,CAAA,CAAA;;MAEpB,QAAA,GAAA,IAAA,OAAA,CAAwB,KAAA,IAAA,OAAA,CAAA,MAAA,GAAA,KAAA,EAAA,CAAA;;IAE1B,IAAA,CAAA,IAAA,CAAA,KAAA,CAAiB,QAAA;AACf,MAAA,MAAA,IAAA,OAAA,CAAA,IAAA,CAAA,MAAA,CAAA;AACA,MAAA,CAAA,aAAA,EAAA,IAAA,KAAA;AACE,QAAA,OAAA,CAAA,SAAA,GAAA,GAAA;UACE,aAAA,CAAe,IAAA,UAAA,CAAA,GAAA,CAAA,IAAA,CAAA,CAAA;;AAEjB,QAAA,OAAA,CAAA,OAAA,GAAA,GAAA,IAAA;AACE,UAAA,IAAA,CAAA,KAAA,CAAA,IAAA,KAAA,CAAqB,iBAAiB,CAAA,EAAA;;AAExC,QAAA,OAAA,CAAA,OAAA,GAAA,GAAA,IAAA;AACK,UAAA,IAAA,EAAA,GAAA,CAAA,QAAA,EAAA;AACD,YAAA,IAAA,GAAA,GAAA,IAAA,KAAA,CAAoB,iBAAiB;AACrC,YAAA,GAAA,CAAA,IAAA,GAAA,GAAA,CAAA;AACA,YAAA,GAAA,CAAA,MAAA,GAAA,GAAA,CAAA,OAAA;;AAEF,UAAA,IAAA,CAAA,KAAA,CAAA,GAAA,EAAA,EAAA,CAAA,CAAA;;AAEN,IAAA,OAAA,IAAA,CAAA;;;;AC/LC,MAAC,aAAa;AACnB,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,YAAY;;AAE9B,MAAC,OAAO,GAAG,GAAG;AACnB,EAAE,IAAI,aAAa,CAAC,GAAG;;;;","x_google_ignoreList":[0,1]}