{"version":3,"file":"index-BTTNppCC.cjs","sources":["../node_modules/.pnpm/sax@1.4.1/node_modules/sax/lib/sax.js","../node_modules/.pnpm/xml-js@1.6.11/node_modules/xml-js/lib/array-helper.js","../node_modules/.pnpm/xml-js@1.6.11/node_modules/xml-js/lib/options-helper.js","../node_modules/.pnpm/xml-js@1.6.11/node_modules/xml-js/lib/xml2js.js","../node_modules/.pnpm/xml-js@1.6.11/node_modules/xml-js/lib/xml2json.js","../node_modules/.pnpm/xml-js@1.6.11/node_modules/xml-js/lib/js2xml.js","../node_modules/.pnpm/xml-js@1.6.11/node_modules/xml-js/lib/json2xml.js","../node_modules/.pnpm/xml-js@1.6.11/node_modules/xml-js/lib/index.js"],"sourcesContent":[";(function (sax) { // wrapper for non-node envs\n  sax.parser = function (strict, opt) { return new SAXParser(strict, opt) }\n  sax.SAXParser = SAXParser\n  sax.SAXStream = SAXStream\n  sax.createStream = createStream\n\n  // When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns.\n  // When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)),\n  // since that's the earliest that a buffer overrun could occur.  This way, checks are\n  // as rare as required, but as often as necessary to ensure never crossing this bound.\n  // Furthermore, buffers are only tested at most once per write(), so passing a very\n  // large string into write() might have undesirable effects, but this is manageable by\n  // the caller, so it is assumed to be safe.  Thus, a call to write() may, in the extreme\n  // edge case, result in creating at most one complete copy of the string passed in.\n  // Set to Infinity to have unlimited buffers.\n  sax.MAX_BUFFER_LENGTH = 64 * 1024\n\n  var buffers = [\n    'comment', 'sgmlDecl', 'textNode', 'tagName', 'doctype',\n    'procInstName', 'procInstBody', 'entity', 'attribName',\n    'attribValue', 'cdata', 'script'\n  ]\n\n  sax.EVENTS = [\n    'text',\n    'processinginstruction',\n    'sgmldeclaration',\n    'doctype',\n    'comment',\n    'opentagstart',\n    'attribute',\n    'opentag',\n    'closetag',\n    'opencdata',\n    'cdata',\n    'closecdata',\n    'error',\n    'end',\n    'ready',\n    'script',\n    'opennamespace',\n    'closenamespace'\n  ]\n\n  function SAXParser (strict, opt) {\n    if (!(this instanceof SAXParser)) {\n      return new SAXParser(strict, opt)\n    }\n\n    var parser = this\n    clearBuffers(parser)\n    parser.q = parser.c = ''\n    parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH\n    parser.opt = opt || {}\n    parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags\n    parser.looseCase = parser.opt.lowercase ? 'toLowerCase' : 'toUpperCase'\n    parser.tags = []\n    parser.closed = parser.closedRoot = parser.sawRoot = false\n    parser.tag = parser.error = null\n    parser.strict = !!strict\n    parser.noscript = !!(strict || parser.opt.noscript)\n    parser.state = S.BEGIN\n    parser.strictEntities = parser.opt.strictEntities\n    parser.ENTITIES = parser.strictEntities ? Object.create(sax.XML_ENTITIES) : Object.create(sax.ENTITIES)\n    parser.attribList = []\n\n    // namespaces form a prototype chain.\n    // it always points at the current tag,\n    // which protos to its parent tag.\n    if (parser.opt.xmlns) {\n      parser.ns = Object.create(rootNS)\n    }\n\n    // disallow unquoted attribute values if not otherwise configured\n    // and strict mode is true\n    if (parser.opt.unquotedAttributeValues === undefined) {\n      parser.opt.unquotedAttributeValues = !strict;\n    }\n\n    // mostly just for error reporting\n    parser.trackPosition = parser.opt.position !== false\n    if (parser.trackPosition) {\n      parser.position = parser.line = parser.column = 0\n    }\n    emit(parser, 'onready')\n  }\n\n  if (!Object.create) {\n    Object.create = function (o) {\n      function F () {}\n      F.prototype = o\n      var newf = new F()\n      return newf\n    }\n  }\n\n  if (!Object.keys) {\n    Object.keys = function (o) {\n      var a = []\n      for (var i in o) if (o.hasOwnProperty(i)) a.push(i)\n      return a\n    }\n  }\n\n  function checkBufferLength (parser) {\n    var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10)\n    var maxActual = 0\n    for (var i = 0, l = buffers.length; i < l; i++) {\n      var len = parser[buffers[i]].length\n      if (len > maxAllowed) {\n        // Text/cdata nodes can get big, and since they're buffered,\n        // we can get here under normal conditions.\n        // Avoid issues by emitting the text node now,\n        // so at least it won't get any bigger.\n        switch (buffers[i]) {\n          case 'textNode':\n            closeText(parser)\n            break\n\n          case 'cdata':\n            emitNode(parser, 'oncdata', parser.cdata)\n            parser.cdata = ''\n            break\n\n          case 'script':\n            emitNode(parser, 'onscript', parser.script)\n            parser.script = ''\n            break\n\n          default:\n            error(parser, 'Max buffer length exceeded: ' + buffers[i])\n        }\n      }\n      maxActual = Math.max(maxActual, len)\n    }\n    // schedule the next check for the earliest possible buffer overrun.\n    var m = sax.MAX_BUFFER_LENGTH - maxActual\n    parser.bufferCheckPosition = m + parser.position\n  }\n\n  function clearBuffers (parser) {\n    for (var i = 0, l = buffers.length; i < l; i++) {\n      parser[buffers[i]] = ''\n    }\n  }\n\n  function flushBuffers (parser) {\n    closeText(parser)\n    if (parser.cdata !== '') {\n      emitNode(parser, 'oncdata', parser.cdata)\n      parser.cdata = ''\n    }\n    if (parser.script !== '') {\n      emitNode(parser, 'onscript', parser.script)\n      parser.script = ''\n    }\n  }\n\n  SAXParser.prototype = {\n    end: function () { end(this) },\n    write: write,\n    resume: function () { this.error = null; return this },\n    close: function () { return this.write(null) },\n    flush: function () { flushBuffers(this) }\n  }\n\n  var Stream\n  try {\n    Stream = require('stream').Stream\n  } catch (ex) {\n    Stream = function () {}\n  }\n  if (!Stream) Stream = function () {}\n\n  var streamWraps = sax.EVENTS.filter(function (ev) {\n    return ev !== 'error' && ev !== 'end'\n  })\n\n  function createStream (strict, opt) {\n    return new SAXStream(strict, opt)\n  }\n\n  function SAXStream (strict, opt) {\n    if (!(this instanceof SAXStream)) {\n      return new SAXStream(strict, opt)\n    }\n\n    Stream.apply(this)\n\n    this._parser = new SAXParser(strict, opt)\n    this.writable = true\n    this.readable = true\n\n    var me = this\n\n    this._parser.onend = function () {\n      me.emit('end')\n    }\n\n    this._parser.onerror = function (er) {\n      me.emit('error', er)\n\n      // if didn't throw, then means error was handled.\n      // go ahead and clear error, so we can write again.\n      me._parser.error = null\n    }\n\n    this._decoder = null\n\n    streamWraps.forEach(function (ev) {\n      Object.defineProperty(me, 'on' + ev, {\n        get: function () {\n          return me._parser['on' + ev]\n        },\n        set: function (h) {\n          if (!h) {\n            me.removeAllListeners(ev)\n            me._parser['on' + ev] = h\n            return h\n          }\n          me.on(ev, h)\n        },\n        enumerable: true,\n        configurable: false\n      })\n    })\n  }\n\n  SAXStream.prototype = Object.create(Stream.prototype, {\n    constructor: {\n      value: SAXStream\n    }\n  })\n\n  SAXStream.prototype.write = function (data) {\n    if (typeof Buffer === 'function' &&\n      typeof Buffer.isBuffer === 'function' &&\n      Buffer.isBuffer(data)) {\n      if (!this._decoder) {\n        var SD = require('string_decoder').StringDecoder\n        this._decoder = new SD('utf8')\n      }\n      data = this._decoder.write(data)\n    }\n\n    this._parser.write(data.toString())\n    this.emit('data', data)\n    return true\n  }\n\n  SAXStream.prototype.end = function (chunk) {\n    if (chunk && chunk.length) {\n      this.write(chunk)\n    }\n    this._parser.end()\n    return true\n  }\n\n  SAXStream.prototype.on = function (ev, handler) {\n    var me = this\n    if (!me._parser['on' + ev] && streamWraps.indexOf(ev) !== -1) {\n      me._parser['on' + ev] = function () {\n        var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments)\n        args.splice(0, 0, ev)\n        me.emit.apply(me, args)\n      }\n    }\n\n    return Stream.prototype.on.call(me, ev, handler)\n  }\n\n  // this really needs to be replaced with character classes.\n  // XML allows all manner of ridiculous numbers and digits.\n  var CDATA = '[CDATA['\n  var DOCTYPE = 'DOCTYPE'\n  var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace'\n  var XMLNS_NAMESPACE = 'http://www.w3.org/2000/xmlns/'\n  var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE }\n\n  // http://www.w3.org/TR/REC-xml/#NT-NameStartChar\n  // This implementation works on strings, a single character at a time\n  // as such, it cannot ever support astral-plane characters (10000-EFFFF)\n  // without a significant breaking change to either this  parser, or the\n  // JavaScript language.  Implementation of an emoji-capable xml parser\n  // is left as an exercise for the reader.\n  var nameStart = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/\n\n  var nameBody = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/\n\n  var entityStart = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/\n  var entityBody = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/\n\n  function isWhitespace (c) {\n    return c === ' ' || c === '\\n' || c === '\\r' || c === '\\t'\n  }\n\n  function isQuote (c) {\n    return c === '\"' || c === '\\''\n  }\n\n  function isAttribEnd (c) {\n    return c === '>' || isWhitespace(c)\n  }\n\n  function isMatch (regex, c) {\n    return regex.test(c)\n  }\n\n  function notMatch (regex, c) {\n    return !isMatch(regex, c)\n  }\n\n  var S = 0\n  sax.STATE = {\n    BEGIN: S++, // leading byte order mark or whitespace\n    BEGIN_WHITESPACE: S++, // leading whitespace\n    TEXT: S++, // general stuff\n    TEXT_ENTITY: S++, // &amp and such.\n    OPEN_WAKA: S++, // <\n    SGML_DECL: S++, // <!BLARG\n    SGML_DECL_QUOTED: S++, // <!BLARG foo \"bar\n    DOCTYPE: S++, // <!DOCTYPE\n    DOCTYPE_QUOTED: S++, // <!DOCTYPE \"//blah\n    DOCTYPE_DTD: S++, // <!DOCTYPE \"//blah\" [ ...\n    DOCTYPE_DTD_QUOTED: S++, // <!DOCTYPE \"//blah\" [ \"foo\n    COMMENT_STARTING: S++, // <!-\n    COMMENT: S++, // <!--\n    COMMENT_ENDING: S++, // <!-- blah -\n    COMMENT_ENDED: S++, // <!-- blah --\n    CDATA: S++, // <![CDATA[ something\n    CDATA_ENDING: S++, // ]\n    CDATA_ENDING_2: S++, // ]]\n    PROC_INST: S++, // <?hi\n    PROC_INST_BODY: S++, // <?hi there\n    PROC_INST_ENDING: S++, // <?hi \"there\" ?\n    OPEN_TAG: S++, // <strong\n    OPEN_TAG_SLASH: S++, // <strong /\n    ATTRIB: S++, // <a\n    ATTRIB_NAME: S++, // <a foo\n    ATTRIB_NAME_SAW_WHITE: S++, // <a foo _\n    ATTRIB_VALUE: S++, // <a foo=\n    ATTRIB_VALUE_QUOTED: S++, // <a foo=\"bar\n    ATTRIB_VALUE_CLOSED: S++, // <a foo=\"bar\"\n    ATTRIB_VALUE_UNQUOTED: S++, // <a foo=bar\n    ATTRIB_VALUE_ENTITY_Q: S++, // <foo bar=\"&quot;\"\n    ATTRIB_VALUE_ENTITY_U: S++, // <foo bar=&quot\n    CLOSE_TAG: S++, // </a\n    CLOSE_TAG_SAW_WHITE: S++, // </a   >\n    SCRIPT: S++, // <script> ...\n    SCRIPT_ENDING: S++ // <script> ... <\n  }\n\n  sax.XML_ENTITIES = {\n    'amp': '&',\n    'gt': '>',\n    'lt': '<',\n    'quot': '\"',\n    'apos': \"'\"\n  }\n\n  sax.ENTITIES = {\n    'amp': '&',\n    'gt': '>',\n    'lt': '<',\n    'quot': '\"',\n    'apos': \"'\",\n    'AElig': 198,\n    'Aacute': 193,\n    'Acirc': 194,\n    'Agrave': 192,\n    'Aring': 197,\n    'Atilde': 195,\n    'Auml': 196,\n    'Ccedil': 199,\n    'ETH': 208,\n    'Eacute': 201,\n    'Ecirc': 202,\n    'Egrave': 200,\n    'Euml': 203,\n    'Iacute': 205,\n    'Icirc': 206,\n    'Igrave': 204,\n    'Iuml': 207,\n    'Ntilde': 209,\n    'Oacute': 211,\n    'Ocirc': 212,\n    'Ograve': 210,\n    'Oslash': 216,\n    'Otilde': 213,\n    'Ouml': 214,\n    'THORN': 222,\n    'Uacute': 218,\n    'Ucirc': 219,\n    'Ugrave': 217,\n    'Uuml': 220,\n    'Yacute': 221,\n    'aacute': 225,\n    'acirc': 226,\n    'aelig': 230,\n    'agrave': 224,\n    'aring': 229,\n    'atilde': 227,\n    'auml': 228,\n    'ccedil': 231,\n    'eacute': 233,\n    'ecirc': 234,\n    'egrave': 232,\n    'eth': 240,\n    'euml': 235,\n    'iacute': 237,\n    'icirc': 238,\n    'igrave': 236,\n    'iuml': 239,\n    'ntilde': 241,\n    'oacute': 243,\n    'ocirc': 244,\n    'ograve': 242,\n    'oslash': 248,\n    'otilde': 245,\n    'ouml': 246,\n    'szlig': 223,\n    'thorn': 254,\n    'uacute': 250,\n    'ucirc': 251,\n    'ugrave': 249,\n    'uuml': 252,\n    'yacute': 253,\n    'yuml': 255,\n    'copy': 169,\n    'reg': 174,\n    'nbsp': 160,\n    'iexcl': 161,\n    'cent': 162,\n    'pound': 163,\n    'curren': 164,\n    'yen': 165,\n    'brvbar': 166,\n    'sect': 167,\n    'uml': 168,\n    'ordf': 170,\n    'laquo': 171,\n    'not': 172,\n    'shy': 173,\n    'macr': 175,\n    'deg': 176,\n    'plusmn': 177,\n    'sup1': 185,\n    'sup2': 178,\n    'sup3': 179,\n    'acute': 180,\n    'micro': 181,\n    'para': 182,\n    'middot': 183,\n    'cedil': 184,\n    'ordm': 186,\n    'raquo': 187,\n    'frac14': 188,\n    'frac12': 189,\n    'frac34': 190,\n    'iquest': 191,\n    'times': 215,\n    'divide': 247,\n    'OElig': 338,\n    'oelig': 339,\n    'Scaron': 352,\n    'scaron': 353,\n    'Yuml': 376,\n    'fnof': 402,\n    'circ': 710,\n    'tilde': 732,\n    'Alpha': 913,\n    'Beta': 914,\n    'Gamma': 915,\n    'Delta': 916,\n    'Epsilon': 917,\n    'Zeta': 918,\n    'Eta': 919,\n    'Theta': 920,\n    'Iota': 921,\n    'Kappa': 922,\n    'Lambda': 923,\n    'Mu': 924,\n    'Nu': 925,\n    'Xi': 926,\n    'Omicron': 927,\n    'Pi': 928,\n    'Rho': 929,\n    'Sigma': 931,\n    'Tau': 932,\n    'Upsilon': 933,\n    'Phi': 934,\n    'Chi': 935,\n    'Psi': 936,\n    'Omega': 937,\n    'alpha': 945,\n    'beta': 946,\n    'gamma': 947,\n    'delta': 948,\n    'epsilon': 949,\n    'zeta': 950,\n    'eta': 951,\n    'theta': 952,\n    'iota': 953,\n    'kappa': 954,\n    'lambda': 955,\n    'mu': 956,\n    'nu': 957,\n    'xi': 958,\n    'omicron': 959,\n    'pi': 960,\n    'rho': 961,\n    'sigmaf': 962,\n    'sigma': 963,\n    'tau': 964,\n    'upsilon': 965,\n    'phi': 966,\n    'chi': 967,\n    'psi': 968,\n    'omega': 969,\n    'thetasym': 977,\n    'upsih': 978,\n    'piv': 982,\n    'ensp': 8194,\n    'emsp': 8195,\n    'thinsp': 8201,\n    'zwnj': 8204,\n    'zwj': 8205,\n    'lrm': 8206,\n    'rlm': 8207,\n    'ndash': 8211,\n    'mdash': 8212,\n    'lsquo': 8216,\n    'rsquo': 8217,\n    'sbquo': 8218,\n    'ldquo': 8220,\n    'rdquo': 8221,\n    'bdquo': 8222,\n    'dagger': 8224,\n    'Dagger': 8225,\n    'bull': 8226,\n    'hellip': 8230,\n    'permil': 8240,\n    'prime': 8242,\n    'Prime': 8243,\n    'lsaquo': 8249,\n    'rsaquo': 8250,\n    'oline': 8254,\n    'frasl': 8260,\n    'euro': 8364,\n    'image': 8465,\n    'weierp': 8472,\n    'real': 8476,\n    'trade': 8482,\n    'alefsym': 8501,\n    'larr': 8592,\n    'uarr': 8593,\n    'rarr': 8594,\n    'darr': 8595,\n    'harr': 8596,\n    'crarr': 8629,\n    'lArr': 8656,\n    'uArr': 8657,\n    'rArr': 8658,\n    'dArr': 8659,\n    'hArr': 8660,\n    'forall': 8704,\n    'part': 8706,\n    'exist': 8707,\n    'empty': 8709,\n    'nabla': 8711,\n    'isin': 8712,\n    'notin': 8713,\n    'ni': 8715,\n    'prod': 8719,\n    'sum': 8721,\n    'minus': 8722,\n    'lowast': 8727,\n    'radic': 8730,\n    'prop': 8733,\n    'infin': 8734,\n    'ang': 8736,\n    'and': 8743,\n    'or': 8744,\n    'cap': 8745,\n    'cup': 8746,\n    'int': 8747,\n    'there4': 8756,\n    'sim': 8764,\n    'cong': 8773,\n    'asymp': 8776,\n    'ne': 8800,\n    'equiv': 8801,\n    'le': 8804,\n    'ge': 8805,\n    'sub': 8834,\n    'sup': 8835,\n    'nsub': 8836,\n    'sube': 8838,\n    'supe': 8839,\n    'oplus': 8853,\n    'otimes': 8855,\n    'perp': 8869,\n    'sdot': 8901,\n    'lceil': 8968,\n    'rceil': 8969,\n    'lfloor': 8970,\n    'rfloor': 8971,\n    'lang': 9001,\n    'rang': 9002,\n    'loz': 9674,\n    'spades': 9824,\n    'clubs': 9827,\n    'hearts': 9829,\n    'diams': 9830\n  }\n\n  Object.keys(sax.ENTITIES).forEach(function (key) {\n    var e = sax.ENTITIES[key]\n    var s = typeof e === 'number' ? String.fromCharCode(e) : e\n    sax.ENTITIES[key] = s\n  })\n\n  for (var s in sax.STATE) {\n    sax.STATE[sax.STATE[s]] = s\n  }\n\n  // shorthand\n  S = sax.STATE\n\n  function emit (parser, event, data) {\n    parser[event] && parser[event](data)\n  }\n\n  function emitNode (parser, nodeType, data) {\n    if (parser.textNode) closeText(parser)\n    emit(parser, nodeType, data)\n  }\n\n  function closeText (parser) {\n    parser.textNode = textopts(parser.opt, parser.textNode)\n    if (parser.textNode) emit(parser, 'ontext', parser.textNode)\n    parser.textNode = ''\n  }\n\n  function textopts (opt, text) {\n    if (opt.trim) text = text.trim()\n    if (opt.normalize) text = text.replace(/\\s+/g, ' ')\n    return text\n  }\n\n  function error (parser, er) {\n    closeText(parser)\n    if (parser.trackPosition) {\n      er += '\\nLine: ' + parser.line +\n        '\\nColumn: ' + parser.column +\n        '\\nChar: ' + parser.c\n    }\n    er = new Error(er)\n    parser.error = er\n    emit(parser, 'onerror', er)\n    return parser\n  }\n\n  function end (parser) {\n    if (parser.sawRoot && !parser.closedRoot) strictFail(parser, 'Unclosed root tag')\n    if ((parser.state !== S.BEGIN) &&\n      (parser.state !== S.BEGIN_WHITESPACE) &&\n      (parser.state !== S.TEXT)) {\n      error(parser, 'Unexpected end')\n    }\n    closeText(parser)\n    parser.c = ''\n    parser.closed = true\n    emit(parser, 'onend')\n    SAXParser.call(parser, parser.strict, parser.opt)\n    return parser\n  }\n\n  function strictFail (parser, message) {\n    if (typeof parser !== 'object' || !(parser instanceof SAXParser)) {\n      throw new Error('bad call to strictFail')\n    }\n    if (parser.strict) {\n      error(parser, message)\n    }\n  }\n\n  function newTag (parser) {\n    if (!parser.strict) parser.tagName = parser.tagName[parser.looseCase]()\n    var parent = parser.tags[parser.tags.length - 1] || parser\n    var tag = parser.tag = { name: parser.tagName, attributes: {} }\n\n    // will be overridden if tag contails an xmlns=\"foo\" or xmlns:foo=\"bar\"\n    if (parser.opt.xmlns) {\n      tag.ns = parent.ns\n    }\n    parser.attribList.length = 0\n    emitNode(parser, 'onopentagstart', tag)\n  }\n\n  function qname (name, attribute) {\n    var i = name.indexOf(':')\n    var qualName = i < 0 ? [ '', name ] : name.split(':')\n    var prefix = qualName[0]\n    var local = qualName[1]\n\n    // <x \"xmlns\"=\"http://foo\">\n    if (attribute && name === 'xmlns') {\n      prefix = 'xmlns'\n      local = ''\n    }\n\n    return { prefix: prefix, local: local }\n  }\n\n  function attrib (parser) {\n    if (!parser.strict) {\n      parser.attribName = parser.attribName[parser.looseCase]()\n    }\n\n    if (parser.attribList.indexOf(parser.attribName) !== -1 ||\n      parser.tag.attributes.hasOwnProperty(parser.attribName)) {\n      parser.attribName = parser.attribValue = ''\n      return\n    }\n\n    if (parser.opt.xmlns) {\n      var qn = qname(parser.attribName, true)\n      var prefix = qn.prefix\n      var local = qn.local\n\n      if (prefix === 'xmlns') {\n        // namespace binding attribute. push the binding into scope\n        if (local === 'xml' && parser.attribValue !== XML_NAMESPACE) {\n          strictFail(parser,\n            'xml: prefix must be bound to ' + XML_NAMESPACE + '\\n' +\n            'Actual: ' + parser.attribValue)\n        } else if (local === 'xmlns' && parser.attribValue !== XMLNS_NAMESPACE) {\n          strictFail(parser,\n            'xmlns: prefix must be bound to ' + XMLNS_NAMESPACE + '\\n' +\n            'Actual: ' + parser.attribValue)\n        } else {\n          var tag = parser.tag\n          var parent = parser.tags[parser.tags.length - 1] || parser\n          if (tag.ns === parent.ns) {\n            tag.ns = Object.create(parent.ns)\n          }\n          tag.ns[local] = parser.attribValue\n        }\n      }\n\n      // defer onattribute events until all attributes have been seen\n      // so any new bindings can take effect. preserve attribute order\n      // so deferred events can be emitted in document order\n      parser.attribList.push([parser.attribName, parser.attribValue])\n    } else {\n      // in non-xmlns mode, we can emit the event right away\n      parser.tag.attributes[parser.attribName] = parser.attribValue\n      emitNode(parser, 'onattribute', {\n        name: parser.attribName,\n        value: parser.attribValue\n      })\n    }\n\n    parser.attribName = parser.attribValue = ''\n  }\n\n  function openTag (parser, selfClosing) {\n    if (parser.opt.xmlns) {\n      // emit namespace binding events\n      var tag = parser.tag\n\n      // add namespace info to tag\n      var qn = qname(parser.tagName)\n      tag.prefix = qn.prefix\n      tag.local = qn.local\n      tag.uri = tag.ns[qn.prefix] || ''\n\n      if (tag.prefix && !tag.uri) {\n        strictFail(parser, 'Unbound namespace prefix: ' +\n          JSON.stringify(parser.tagName))\n        tag.uri = qn.prefix\n      }\n\n      var parent = parser.tags[parser.tags.length - 1] || parser\n      if (tag.ns && parent.ns !== tag.ns) {\n        Object.keys(tag.ns).forEach(function (p) {\n          emitNode(parser, 'onopennamespace', {\n            prefix: p,\n            uri: tag.ns[p]\n          })\n        })\n      }\n\n      // handle deferred onattribute events\n      // Note: do not apply default ns to attributes:\n      //   http://www.w3.org/TR/REC-xml-names/#defaulting\n      for (var i = 0, l = parser.attribList.length; i < l; i++) {\n        var nv = parser.attribList[i]\n        var name = nv[0]\n        var value = nv[1]\n        var qualName = qname(name, true)\n        var prefix = qualName.prefix\n        var local = qualName.local\n        var uri = prefix === '' ? '' : (tag.ns[prefix] || '')\n        var a = {\n          name: name,\n          value: value,\n          prefix: prefix,\n          local: local,\n          uri: uri\n        }\n\n        // if there's any attributes with an undefined namespace,\n        // then fail on them now.\n        if (prefix && prefix !== 'xmlns' && !uri) {\n          strictFail(parser, 'Unbound namespace prefix: ' +\n            JSON.stringify(prefix))\n          a.uri = prefix\n        }\n        parser.tag.attributes[name] = a\n        emitNode(parser, 'onattribute', a)\n      }\n      parser.attribList.length = 0\n    }\n\n    parser.tag.isSelfClosing = !!selfClosing\n\n    // process the tag\n    parser.sawRoot = true\n    parser.tags.push(parser.tag)\n    emitNode(parser, 'onopentag', parser.tag)\n    if (!selfClosing) {\n      // special case for <script> in non-strict mode.\n      if (!parser.noscript && parser.tagName.toLowerCase() === 'script') {\n        parser.state = S.SCRIPT\n      } else {\n        parser.state = S.TEXT\n      }\n      parser.tag = null\n      parser.tagName = ''\n    }\n    parser.attribName = parser.attribValue = ''\n    parser.attribList.length = 0\n  }\n\n  function closeTag (parser) {\n    if (!parser.tagName) {\n      strictFail(parser, 'Weird empty close tag.')\n      parser.textNode += '</>'\n      parser.state = S.TEXT\n      return\n    }\n\n    if (parser.script) {\n      if (parser.tagName !== 'script') {\n        parser.script += '</' + parser.tagName + '>'\n        parser.tagName = ''\n        parser.state = S.SCRIPT\n        return\n      }\n      emitNode(parser, 'onscript', parser.script)\n      parser.script = ''\n    }\n\n    // first make sure that the closing tag actually exists.\n    // <a><b></c></b></a> will close everything, otherwise.\n    var t = parser.tags.length\n    var tagName = parser.tagName\n    if (!parser.strict) {\n      tagName = tagName[parser.looseCase]()\n    }\n    var closeTo = tagName\n    while (t--) {\n      var close = parser.tags[t]\n      if (close.name !== closeTo) {\n        // fail the first time in strict mode\n        strictFail(parser, 'Unexpected close tag')\n      } else {\n        break\n      }\n    }\n\n    // didn't find it.  we already failed for strict, so just abort.\n    if (t < 0) {\n      strictFail(parser, 'Unmatched closing tag: ' + parser.tagName)\n      parser.textNode += '</' + parser.tagName + '>'\n      parser.state = S.TEXT\n      return\n    }\n    parser.tagName = tagName\n    var s = parser.tags.length\n    while (s-- > t) {\n      var tag = parser.tag = parser.tags.pop()\n      parser.tagName = parser.tag.name\n      emitNode(parser, 'onclosetag', parser.tagName)\n\n      var x = {}\n      for (var i in tag.ns) {\n        x[i] = tag.ns[i]\n      }\n\n      var parent = parser.tags[parser.tags.length - 1] || parser\n      if (parser.opt.xmlns && tag.ns !== parent.ns) {\n        // remove namespace bindings introduced by tag\n        Object.keys(tag.ns).forEach(function (p) {\n          var n = tag.ns[p]\n          emitNode(parser, 'onclosenamespace', { prefix: p, uri: n })\n        })\n      }\n    }\n    if (t === 0) parser.closedRoot = true\n    parser.tagName = parser.attribValue = parser.attribName = ''\n    parser.attribList.length = 0\n    parser.state = S.TEXT\n  }\n\n  function parseEntity (parser) {\n    var entity = parser.entity\n    var entityLC = entity.toLowerCase()\n    var num\n    var numStr = ''\n\n    if (parser.ENTITIES[entity]) {\n      return parser.ENTITIES[entity]\n    }\n    if (parser.ENTITIES[entityLC]) {\n      return parser.ENTITIES[entityLC]\n    }\n    entity = entityLC\n    if (entity.charAt(0) === '#') {\n      if (entity.charAt(1) === 'x') {\n        entity = entity.slice(2)\n        num = parseInt(entity, 16)\n        numStr = num.toString(16)\n      } else {\n        entity = entity.slice(1)\n        num = parseInt(entity, 10)\n        numStr = num.toString(10)\n      }\n    }\n    entity = entity.replace(/^0+/, '')\n    if (isNaN(num) || numStr.toLowerCase() !== entity) {\n      strictFail(parser, 'Invalid character entity')\n      return '&' + parser.entity + ';'\n    }\n\n    return String.fromCodePoint(num)\n  }\n\n  function beginWhiteSpace (parser, c) {\n    if (c === '<') {\n      parser.state = S.OPEN_WAKA\n      parser.startTagPosition = parser.position\n    } else if (!isWhitespace(c)) {\n      // have to process this as a text node.\n      // weird, but happens.\n      strictFail(parser, 'Non-whitespace before first tag.')\n      parser.textNode = c\n      parser.state = S.TEXT\n    }\n  }\n\n  function charAt (chunk, i) {\n    var result = ''\n    if (i < chunk.length) {\n      result = chunk.charAt(i)\n    }\n    return result\n  }\n\n  function write (chunk) {\n    var parser = this\n    if (this.error) {\n      throw this.error\n    }\n    if (parser.closed) {\n      return error(parser,\n        'Cannot write after close. Assign an onready handler.')\n    }\n    if (chunk === null) {\n      return end(parser)\n    }\n    if (typeof chunk === 'object') {\n      chunk = chunk.toString()\n    }\n    var i = 0\n    var c = ''\n    while (true) {\n      c = charAt(chunk, i++)\n      parser.c = c\n\n      if (!c) {\n        break\n      }\n\n      if (parser.trackPosition) {\n        parser.position++\n        if (c === '\\n') {\n          parser.line++\n          parser.column = 0\n        } else {\n          parser.column++\n        }\n      }\n\n      switch (parser.state) {\n        case S.BEGIN:\n          parser.state = S.BEGIN_WHITESPACE\n          if (c === '\\uFEFF') {\n            continue\n          }\n          beginWhiteSpace(parser, c)\n          continue\n\n        case S.BEGIN_WHITESPACE:\n          beginWhiteSpace(parser, c)\n          continue\n\n        case S.TEXT:\n          if (parser.sawRoot && !parser.closedRoot) {\n            var starti = i - 1\n            while (c && c !== '<' && c !== '&') {\n              c = charAt(chunk, i++)\n              if (c && parser.trackPosition) {\n                parser.position++\n                if (c === '\\n') {\n                  parser.line++\n                  parser.column = 0\n                } else {\n                  parser.column++\n                }\n              }\n            }\n            parser.textNode += chunk.substring(starti, i - 1)\n          }\n          if (c === '<' && !(parser.sawRoot && parser.closedRoot && !parser.strict)) {\n            parser.state = S.OPEN_WAKA\n            parser.startTagPosition = parser.position\n          } else {\n            if (!isWhitespace(c) && (!parser.sawRoot || parser.closedRoot)) {\n              strictFail(parser, 'Text data outside of root node.')\n            }\n            if (c === '&') {\n              parser.state = S.TEXT_ENTITY\n            } else {\n              parser.textNode += c\n            }\n          }\n          continue\n\n        case S.SCRIPT:\n          // only non-strict\n          if (c === '<') {\n            parser.state = S.SCRIPT_ENDING\n          } else {\n            parser.script += c\n          }\n          continue\n\n        case S.SCRIPT_ENDING:\n          if (c === '/') {\n            parser.state = S.CLOSE_TAG\n          } else {\n            parser.script += '<' + c\n            parser.state = S.SCRIPT\n          }\n          continue\n\n        case S.OPEN_WAKA:\n          // either a /, ?, !, or text is coming next.\n          if (c === '!') {\n            parser.state = S.SGML_DECL\n            parser.sgmlDecl = ''\n          } else if (isWhitespace(c)) {\n            // wait for it...\n          } else if (isMatch(nameStart, c)) {\n            parser.state = S.OPEN_TAG\n            parser.tagName = c\n          } else if (c === '/') {\n            parser.state = S.CLOSE_TAG\n            parser.tagName = ''\n          } else if (c === '?') {\n            parser.state = S.PROC_INST\n            parser.procInstName = parser.procInstBody = ''\n          } else {\n            strictFail(parser, 'Unencoded <')\n            // if there was some whitespace, then add that in.\n            if (parser.startTagPosition + 1 < parser.position) {\n              var pad = parser.position - parser.startTagPosition\n              c = new Array(pad).join(' ') + c\n            }\n            parser.textNode += '<' + c\n            parser.state = S.TEXT\n          }\n          continue\n\n        case S.SGML_DECL:\n          if (parser.sgmlDecl + c === '--') {\n            parser.state = S.COMMENT\n            parser.comment = ''\n            parser.sgmlDecl = ''\n            continue;\n          }\n\n          if (parser.doctype && parser.doctype !== true && parser.sgmlDecl) {\n            parser.state = S.DOCTYPE_DTD\n            parser.doctype += '<!' + parser.sgmlDecl + c\n            parser.sgmlDecl = ''\n          } else if ((parser.sgmlDecl + c).toUpperCase() === CDATA) {\n            emitNode(parser, 'onopencdata')\n            parser.state = S.CDATA\n            parser.sgmlDecl = ''\n            parser.cdata = ''\n          } else if ((parser.sgmlDecl + c).toUpperCase() === DOCTYPE) {\n            parser.state = S.DOCTYPE\n            if (parser.doctype || parser.sawRoot) {\n              strictFail(parser,\n                'Inappropriately located doctype declaration')\n            }\n            parser.doctype = ''\n            parser.sgmlDecl = ''\n          } else if (c === '>') {\n            emitNode(parser, 'onsgmldeclaration', parser.sgmlDecl)\n            parser.sgmlDecl = ''\n            parser.state = S.TEXT\n          } else if (isQuote(c)) {\n            parser.state = S.SGML_DECL_QUOTED\n            parser.sgmlDecl += c\n          } else {\n            parser.sgmlDecl += c\n          }\n          continue\n\n        case S.SGML_DECL_QUOTED:\n          if (c === parser.q) {\n            parser.state = S.SGML_DECL\n            parser.q = ''\n          }\n          parser.sgmlDecl += c\n          continue\n\n        case S.DOCTYPE:\n          if (c === '>') {\n            parser.state = S.TEXT\n            emitNode(parser, 'ondoctype', parser.doctype)\n            parser.doctype = true // just remember that we saw it.\n          } else {\n            parser.doctype += c\n            if (c === '[') {\n              parser.state = S.DOCTYPE_DTD\n            } else if (isQuote(c)) {\n              parser.state = S.DOCTYPE_QUOTED\n              parser.q = c\n            }\n          }\n          continue\n\n        case S.DOCTYPE_QUOTED:\n          parser.doctype += c\n          if (c === parser.q) {\n            parser.q = ''\n            parser.state = S.DOCTYPE\n          }\n          continue\n\n        case S.DOCTYPE_DTD:\n          if (c === ']') {\n            parser.doctype += c\n            parser.state = S.DOCTYPE\n          } else if (c === '<') {\n            parser.state = S.OPEN_WAKA\n            parser.startTagPosition = parser.position\n          } else if (isQuote(c)) {\n            parser.doctype += c\n            parser.state = S.DOCTYPE_DTD_QUOTED\n            parser.q = c\n          } else {\n            parser.doctype += c\n          }\n          continue\n\n        case S.DOCTYPE_DTD_QUOTED:\n          parser.doctype += c\n          if (c === parser.q) {\n            parser.state = S.DOCTYPE_DTD\n            parser.q = ''\n          }\n          continue\n\n        case S.COMMENT:\n          if (c === '-') {\n            parser.state = S.COMMENT_ENDING\n          } else {\n            parser.comment += c\n          }\n          continue\n\n        case S.COMMENT_ENDING:\n          if (c === '-') {\n            parser.state = S.COMMENT_ENDED\n            parser.comment = textopts(parser.opt, parser.comment)\n            if (parser.comment) {\n              emitNode(parser, 'oncomment', parser.comment)\n            }\n            parser.comment = ''\n          } else {\n            parser.comment += '-' + c\n            parser.state = S.COMMENT\n          }\n          continue\n\n        case S.COMMENT_ENDED:\n          if (c !== '>') {\n            strictFail(parser, 'Malformed comment')\n            // allow <!-- blah -- bloo --> in non-strict mode,\n            // which is a comment of \" blah -- bloo \"\n            parser.comment += '--' + c\n            parser.state = S.COMMENT\n          } else if (parser.doctype && parser.doctype !== true) {\n            parser.state = S.DOCTYPE_DTD\n          } else {\n            parser.state = S.TEXT\n          }\n          continue\n\n        case S.CDATA:\n          if (c === ']') {\n            parser.state = S.CDATA_ENDING\n          } else {\n            parser.cdata += c\n          }\n          continue\n\n        case S.CDATA_ENDING:\n          if (c === ']') {\n            parser.state = S.CDATA_ENDING_2\n          } else {\n            parser.cdata += ']' + c\n            parser.state = S.CDATA\n          }\n          continue\n\n        case S.CDATA_ENDING_2:\n          if (c === '>') {\n            if (parser.cdata) {\n              emitNode(parser, 'oncdata', parser.cdata)\n            }\n            emitNode(parser, 'onclosecdata')\n            parser.cdata = ''\n            parser.state = S.TEXT\n          } else if (c === ']') {\n            parser.cdata += ']'\n          } else {\n            parser.cdata += ']]' + c\n            parser.state = S.CDATA\n          }\n          continue\n\n        case S.PROC_INST:\n          if (c === '?') {\n            parser.state = S.PROC_INST_ENDING\n          } else if (isWhitespace(c)) {\n            parser.state = S.PROC_INST_BODY\n          } else {\n            parser.procInstName += c\n          }\n          continue\n\n        case S.PROC_INST_BODY:\n          if (!parser.procInstBody && isWhitespace(c)) {\n            continue\n          } else if (c === '?') {\n            parser.state = S.PROC_INST_ENDING\n          } else {\n            parser.procInstBody += c\n          }\n          continue\n\n        case S.PROC_INST_ENDING:\n          if (c === '>') {\n            emitNode(parser, 'onprocessinginstruction', {\n              name: parser.procInstName,\n              body: parser.procInstBody\n            })\n            parser.procInstName = parser.procInstBody = ''\n            parser.state = S.TEXT\n          } else {\n            parser.procInstBody += '?' + c\n            parser.state = S.PROC_INST_BODY\n          }\n          continue\n\n        case S.OPEN_TAG:\n          if (isMatch(nameBody, c)) {\n            parser.tagName += c\n          } else {\n            newTag(parser)\n            if (c === '>') {\n              openTag(parser)\n            } else if (c === '/') {\n              parser.state = S.OPEN_TAG_SLASH\n            } else {\n              if (!isWhitespace(c)) {\n                strictFail(parser, 'Invalid character in tag name')\n              }\n              parser.state = S.ATTRIB\n            }\n          }\n          continue\n\n        case S.OPEN_TAG_SLASH:\n          if (c === '>') {\n            openTag(parser, true)\n            closeTag(parser)\n          } else {\n            strictFail(parser, 'Forward-slash in opening tag not followed by >')\n            parser.state = S.ATTRIB\n          }\n          continue\n\n        case S.ATTRIB:\n          // haven't read the attribute name yet.\n          if (isWhitespace(c)) {\n            continue\n          } else if (c === '>') {\n            openTag(parser)\n          } else if (c === '/') {\n            parser.state = S.OPEN_TAG_SLASH\n          } else if (isMatch(nameStart, c)) {\n            parser.attribName = c\n            parser.attribValue = ''\n            parser.state = S.ATTRIB_NAME\n          } else {\n            strictFail(parser, 'Invalid attribute name')\n          }\n          continue\n\n        case S.ATTRIB_NAME:\n          if (c === '=') {\n            parser.state = S.ATTRIB_VALUE\n          } else if (c === '>') {\n            strictFail(parser, 'Attribute without value')\n            parser.attribValue = parser.attribName\n            attrib(parser)\n            openTag(parser)\n          } else if (isWhitespace(c)) {\n            parser.state = S.ATTRIB_NAME_SAW_WHITE\n          } else if (isMatch(nameBody, c)) {\n            parser.attribName += c\n          } else {\n            strictFail(parser, 'Invalid attribute name')\n          }\n          continue\n\n        case S.ATTRIB_NAME_SAW_WHITE:\n          if (c === '=') {\n            parser.state = S.ATTRIB_VALUE\n          } else if (isWhitespace(c)) {\n            continue\n          } else {\n            strictFail(parser, 'Attribute without value')\n            parser.tag.attributes[parser.attribName] = ''\n            parser.attribValue = ''\n            emitNode(parser, 'onattribute', {\n              name: parser.attribName,\n              value: ''\n            })\n            parser.attribName = ''\n            if (c === '>') {\n              openTag(parser)\n            } else if (isMatch(nameStart, c)) {\n              parser.attribName = c\n              parser.state = S.ATTRIB_NAME\n            } else {\n              strictFail(parser, 'Invalid attribute name')\n              parser.state = S.ATTRIB\n            }\n          }\n          continue\n\n        case S.ATTRIB_VALUE:\n          if (isWhitespace(c)) {\n            continue\n          } else if (isQuote(c)) {\n            parser.q = c\n            parser.state = S.ATTRIB_VALUE_QUOTED\n          } else {\n            if (!parser.opt.unquotedAttributeValues) {\n              error(parser, 'Unquoted attribute value')\n            }\n            parser.state = S.ATTRIB_VALUE_UNQUOTED\n            parser.attribValue = c\n          }\n          continue\n\n        case S.ATTRIB_VALUE_QUOTED:\n          if (c !== parser.q) {\n            if (c === '&') {\n              parser.state = S.ATTRIB_VALUE_ENTITY_Q\n            } else {\n              parser.attribValue += c\n            }\n            continue\n          }\n          attrib(parser)\n          parser.q = ''\n          parser.state = S.ATTRIB_VALUE_CLOSED\n          continue\n\n        case S.ATTRIB_VALUE_CLOSED:\n          if (isWhitespace(c)) {\n            parser.state = S.ATTRIB\n          } else if (c === '>') {\n            openTag(parser)\n          } else if (c === '/') {\n            parser.state = S.OPEN_TAG_SLASH\n          } else if (isMatch(nameStart, c)) {\n            strictFail(parser, 'No whitespace between attributes')\n            parser.attribName = c\n            parser.attribValue = ''\n            parser.state = S.ATTRIB_NAME\n          } else {\n            strictFail(parser, 'Invalid attribute name')\n          }\n          continue\n\n        case S.ATTRIB_VALUE_UNQUOTED:\n          if (!isAttribEnd(c)) {\n            if (c === '&') {\n              parser.state = S.ATTRIB_VALUE_ENTITY_U\n            } else {\n              parser.attribValue += c\n            }\n            continue\n          }\n          attrib(parser)\n          if (c === '>') {\n            openTag(parser)\n          } else {\n            parser.state = S.ATTRIB\n          }\n          continue\n\n        case S.CLOSE_TAG:\n          if (!parser.tagName) {\n            if (isWhitespace(c)) {\n              continue\n            } else if (notMatch(nameStart, c)) {\n              if (parser.script) {\n                parser.script += '</' + c\n                parser.state = S.SCRIPT\n              } else {\n                strictFail(parser, 'Invalid tagname in closing tag.')\n              }\n            } else {\n              parser.tagName = c\n            }\n          } else if (c === '>') {\n            closeTag(parser)\n          } else if (isMatch(nameBody, c)) {\n            parser.tagName += c\n          } else if (parser.script) {\n            parser.script += '</' + parser.tagName\n            parser.tagName = ''\n            parser.state = S.SCRIPT\n          } else {\n            if (!isWhitespace(c)) {\n              strictFail(parser, 'Invalid tagname in closing tag')\n            }\n            parser.state = S.CLOSE_TAG_SAW_WHITE\n          }\n          continue\n\n        case S.CLOSE_TAG_SAW_WHITE:\n          if (isWhitespace(c)) {\n            continue\n          }\n          if (c === '>') {\n            closeTag(parser)\n          } else {\n            strictFail(parser, 'Invalid characters in closing tag')\n          }\n          continue\n\n        case S.TEXT_ENTITY:\n        case S.ATTRIB_VALUE_ENTITY_Q:\n        case S.ATTRIB_VALUE_ENTITY_U:\n          var returnState\n          var buffer\n          switch (parser.state) {\n            case S.TEXT_ENTITY:\n              returnState = S.TEXT\n              buffer = 'textNode'\n              break\n\n            case S.ATTRIB_VALUE_ENTITY_Q:\n              returnState = S.ATTRIB_VALUE_QUOTED\n              buffer = 'attribValue'\n              break\n\n            case S.ATTRIB_VALUE_ENTITY_U:\n              returnState = S.ATTRIB_VALUE_UNQUOTED\n              buffer = 'attribValue'\n              break\n          }\n\n          if (c === ';') {\n            var parsedEntity = parseEntity(parser)\n            if (parser.opt.unparsedEntities && !Object.values(sax.XML_ENTITIES).includes(parsedEntity)) {\n              parser.entity = ''\n              parser.state = returnState\n              parser.write(parsedEntity)\n            } else {\n              parser[buffer] += parsedEntity\n              parser.entity = ''\n              parser.state = returnState\n            }\n          } else if (isMatch(parser.entity.length ? entityBody : entityStart, c)) {\n            parser.entity += c\n          } else {\n            strictFail(parser, 'Invalid character in entity name')\n            parser[buffer] += '&' + parser.entity + c\n            parser.entity = ''\n            parser.state = returnState\n          }\n\n          continue\n\n        default: /* istanbul ignore next */ {\n          throw new Error(parser, 'Unknown state: ' + parser.state)\n        }\n      }\n    } // while\n\n    if (parser.position >= parser.bufferCheckPosition) {\n      checkBufferLength(parser)\n    }\n    return parser\n  }\n\n  /*! http://mths.be/fromcodepoint v0.1.0 by @mathias */\n  /* istanbul ignore next */\n  if (!String.fromCodePoint) {\n    (function () {\n      var stringFromCharCode = String.fromCharCode\n      var floor = Math.floor\n      var fromCodePoint = function () {\n        var MAX_SIZE = 0x4000\n        var codeUnits = []\n        var highSurrogate\n        var lowSurrogate\n        var index = -1\n        var length = arguments.length\n        if (!length) {\n          return ''\n        }\n        var result = ''\n        while (++index < length) {\n          var codePoint = Number(arguments[index])\n          if (\n            !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n            codePoint < 0 || // not a valid Unicode code point\n            codePoint > 0x10FFFF || // not a valid Unicode code point\n            floor(codePoint) !== codePoint // not an integer\n          ) {\n            throw RangeError('Invalid code point: ' + codePoint)\n          }\n          if (codePoint <= 0xFFFF) { // BMP code point\n            codeUnits.push(codePoint)\n          } else { // Astral code point; split in surrogate halves\n            // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n            codePoint -= 0x10000\n            highSurrogate = (codePoint >> 10) + 0xD800\n            lowSurrogate = (codePoint % 0x400) + 0xDC00\n            codeUnits.push(highSurrogate, lowSurrogate)\n          }\n          if (index + 1 === length || codeUnits.length > MAX_SIZE) {\n            result += stringFromCharCode.apply(null, codeUnits)\n            codeUnits.length = 0\n          }\n        }\n        return result\n      }\n      /* istanbul ignore next */\n      if (Object.defineProperty) {\n        Object.defineProperty(String, 'fromCodePoint', {\n          value: fromCodePoint,\n          configurable: true,\n          writable: true\n        })\n      } else {\n        String.fromCodePoint = fromCodePoint\n      }\n    }())\n  }\n})(typeof exports === 'undefined' ? this.sax = {} : exports)\n","module.exports = {\r\n\r\n  isArray: function(value) {\r\n    if (Array.isArray) {\r\n      return Array.isArray(value);\r\n    }\r\n    // fallback for older browsers like  IE 8\r\n    return Object.prototype.toString.call( value ) === '[object Array]';\r\n  }\r\n\r\n};\r\n","var isArray = require('./array-helper').isArray;\r\n\r\nmodule.exports = {\r\n\r\n  copyOptions: function (options) {\r\n    var key, copy = {};\r\n    for (key in options) {\r\n      if (options.hasOwnProperty(key)) {\r\n        copy[key] = options[key];\r\n      }\r\n    }\r\n    return copy;\r\n  },\r\n\r\n  ensureFlagExists: function (item, options) {\r\n    if (!(item in options) || typeof options[item] !== 'boolean') {\r\n      options[item] = false;\r\n    }\r\n  },\r\n\r\n  ensureSpacesExists: function (options) {\r\n    if (!('spaces' in options) || (typeof options.spaces !== 'number' && typeof options.spaces !== 'string')) {\r\n      options.spaces = 0;\r\n    }\r\n  },\r\n\r\n  ensureAlwaysArrayExists: function (options) {\r\n    if (!('alwaysArray' in options) || (typeof options.alwaysArray !== 'boolean' && !isArray(options.alwaysArray))) {\r\n      options.alwaysArray = false;\r\n    }\r\n  },\r\n\r\n  ensureKeyExists: function (key, options) {\r\n    if (!(key + 'Key' in options) || typeof options[key + 'Key'] !== 'string') {\r\n      options[key + 'Key'] = options.compact ? '_' + key : key;\r\n    }\r\n  },\r\n\r\n  checkFnExists: function (key, options) {\r\n    return key + 'Fn' in options;\r\n  }\r\n\r\n};\r\n","var sax = require('sax');\r\nvar expat /*= require('node-expat');*/ = { on: function () { }, parse: function () { } };\r\nvar helper = require('./options-helper');\r\nvar isArray = require('./array-helper').isArray;\r\n\r\nvar options;\r\nvar pureJsParser = true;\r\nvar currentElement;\r\n\r\nfunction validateOptions(userOptions) {\r\n  options = helper.copyOptions(userOptions);\r\n  helper.ensureFlagExists('ignoreDeclaration', options);\r\n  helper.ensureFlagExists('ignoreInstruction', options);\r\n  helper.ensureFlagExists('ignoreAttributes', options);\r\n  helper.ensureFlagExists('ignoreText', options);\r\n  helper.ensureFlagExists('ignoreComment', options);\r\n  helper.ensureFlagExists('ignoreCdata', options);\r\n  helper.ensureFlagExists('ignoreDoctype', options);\r\n  helper.ensureFlagExists('compact', options);\r\n  helper.ensureFlagExists('alwaysChildren', options);\r\n  helper.ensureFlagExists('addParent', options);\r\n  helper.ensureFlagExists('trim', options);\r\n  helper.ensureFlagExists('nativeType', options);\r\n  helper.ensureFlagExists('nativeTypeAttributes', options);\r\n  helper.ensureFlagExists('sanitize', options);\r\n  helper.ensureFlagExists('instructionHasAttributes', options);\r\n  helper.ensureFlagExists('captureSpacesBetweenElements', options);\r\n  helper.ensureAlwaysArrayExists(options);\r\n  helper.ensureKeyExists('declaration', options);\r\n  helper.ensureKeyExists('instruction', options);\r\n  helper.ensureKeyExists('attributes', options);\r\n  helper.ensureKeyExists('text', options);\r\n  helper.ensureKeyExists('comment', options);\r\n  helper.ensureKeyExists('cdata', options);\r\n  helper.ensureKeyExists('doctype', options);\r\n  helper.ensureKeyExists('type', options);\r\n  helper.ensureKeyExists('name', options);\r\n  helper.ensureKeyExists('elements', options);\r\n  helper.ensureKeyExists('parent', options);\r\n  helper.checkFnExists('doctype', options);\r\n  helper.checkFnExists('instruction', options);\r\n  helper.checkFnExists('cdata', options);\r\n  helper.checkFnExists('comment', options);\r\n  helper.checkFnExists('text', options);\r\n  helper.checkFnExists('instructionName', options);\r\n  helper.checkFnExists('elementName', options);\r\n  helper.checkFnExists('attributeName', options);\r\n  helper.checkFnExists('attributeValue', options);\r\n  helper.checkFnExists('attributes', options);\r\n  return options;\r\n}\r\n\r\nfunction nativeType(value) {\r\n  var nValue = Number(value);\r\n  if (!isNaN(nValue)) {\r\n    return nValue;\r\n  }\r\n  var bValue = value.toLowerCase();\r\n  if (bValue === 'true') {\r\n    return true;\r\n  } else if (bValue === 'false') {\r\n    return false;\r\n  }\r\n  return value;\r\n}\r\n\r\nfunction addField(type, value) {\r\n  var key;\r\n  if (options.compact) {\r\n    if (\r\n      !currentElement[options[type + 'Key']] &&\r\n      (isArray(options.alwaysArray) ? options.alwaysArray.indexOf(options[type + 'Key']) !== -1 : options.alwaysArray)\r\n    ) {\r\n      currentElement[options[type + 'Key']] = [];\r\n    }\r\n    if (currentElement[options[type + 'Key']] && !isArray(currentElement[options[type + 'Key']])) {\r\n      currentElement[options[type + 'Key']] = [currentElement[options[type + 'Key']]];\r\n    }\r\n    if (type + 'Fn' in options && typeof value === 'string') {\r\n      value = options[type + 'Fn'](value, currentElement);\r\n    }\r\n    if (type === 'instruction' && ('instructionFn' in options || 'instructionNameFn' in options)) {\r\n      for (key in value) {\r\n        if (value.hasOwnProperty(key)) {\r\n          if ('instructionFn' in options) {\r\n            value[key] = options.instructionFn(value[key], key, currentElement);\r\n          } else {\r\n            var temp = value[key];\r\n            delete value[key];\r\n            value[options.instructionNameFn(key, temp, currentElement)] = temp;\r\n          }\r\n        }\r\n      }\r\n    }\r\n    if (isArray(currentElement[options[type + 'Key']])) {\r\n      currentElement[options[type + 'Key']].push(value);\r\n    } else {\r\n      currentElement[options[type + 'Key']] = value;\r\n    }\r\n  } else {\r\n    if (!currentElement[options.elementsKey]) {\r\n      currentElement[options.elementsKey] = [];\r\n    }\r\n    var element = {};\r\n    element[options.typeKey] = type;\r\n    if (type === 'instruction') {\r\n      for (key in value) {\r\n        if (value.hasOwnProperty(key)) {\r\n          break;\r\n        }\r\n      }\r\n      element[options.nameKey] = 'instructionNameFn' in options ? options.instructionNameFn(key, value, currentElement) : key;\r\n      if (options.instructionHasAttributes) {\r\n        element[options.attributesKey] = value[key][options.attributesKey];\r\n        if ('instructionFn' in options) {\r\n          element[options.attributesKey] = options.instructionFn(element[options.attributesKey], key, currentElement);\r\n        }\r\n      } else {\r\n        if ('instructionFn' in options) {\r\n          value[key] = options.instructionFn(value[key], key, currentElement);\r\n        }\r\n        element[options.instructionKey] = value[key];\r\n      }\r\n    } else {\r\n      if (type + 'Fn' in options) {\r\n        value = options[type + 'Fn'](value, currentElement);\r\n      }\r\n      element[options[type + 'Key']] = value;\r\n    }\r\n    if (options.addParent) {\r\n      element[options.parentKey] = currentElement;\r\n    }\r\n    currentElement[options.elementsKey].push(element);\r\n  }\r\n}\r\n\r\nfunction manipulateAttributes(attributes) {\r\n  if ('attributesFn' in options && attributes) {\r\n    attributes = options.attributesFn(attributes, currentElement);\r\n  }\r\n  if ((options.trim || 'attributeValueFn' in options || 'attributeNameFn' in options || options.nativeTypeAttributes) && attributes) {\r\n    var key;\r\n    for (key in attributes) {\r\n      if (attributes.hasOwnProperty(key)) {\r\n        if (options.trim) attributes[key] = attributes[key].trim();\r\n        if (options.nativeTypeAttributes) {\r\n          attributes[key] = nativeType(attributes[key]);\r\n        }\r\n        if ('attributeValueFn' in options) attributes[key] = options.attributeValueFn(attributes[key], key, currentElement);\r\n        if ('attributeNameFn' in options) {\r\n          var temp = attributes[key];\r\n          delete attributes[key];\r\n          attributes[options.attributeNameFn(key, attributes[key], currentElement)] = temp;\r\n        }\r\n      }\r\n    }\r\n  }\r\n  return attributes;\r\n}\r\n\r\nfunction onInstruction(instruction) {\r\n  var attributes = {};\r\n  if (instruction.body && (instruction.name.toLowerCase() === 'xml' || options.instructionHasAttributes)) {\r\n    var attrsRegExp = /([\\w:-]+)\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)'|(\\w+))\\s*/g;\r\n    var match;\r\n    while ((match = attrsRegExp.exec(instruction.body)) !== null) {\r\n      attributes[match[1]] = match[2] || match[3] || match[4];\r\n    }\r\n    attributes = manipulateAttributes(attributes);\r\n  }\r\n  if (instruction.name.toLowerCase() === 'xml') {\r\n    if (options.ignoreDeclaration) {\r\n      return;\r\n    }\r\n    currentElement[options.declarationKey] = {};\r\n    if (Object.keys(attributes).length) {\r\n      currentElement[options.declarationKey][options.attributesKey] = attributes;\r\n    }\r\n    if (options.addParent) {\r\n      currentElement[options.declarationKey][options.parentKey] = currentElement;\r\n    }\r\n  } else {\r\n    if (options.ignoreInstruction) {\r\n      return;\r\n    }\r\n    if (options.trim) {\r\n      instruction.body = instruction.body.trim();\r\n    }\r\n    var value = {};\r\n    if (options.instructionHasAttributes && Object.keys(attributes).length) {\r\n      value[instruction.name] = {};\r\n      value[instruction.name][options.attributesKey] = attributes;\r\n    } else {\r\n      value[instruction.name] = instruction.body;\r\n    }\r\n    addField('instruction', value);\r\n  }\r\n}\r\n\r\nfunction onStartElement(name, attributes) {\r\n  var element;\r\n  if (typeof name === 'object') {\r\n    attributes = name.attributes;\r\n    name = name.name;\r\n  }\r\n  attributes = manipulateAttributes(attributes);\r\n  if ('elementNameFn' in options) {\r\n    name = options.elementNameFn(name, currentElement);\r\n  }\r\n  if (options.compact) {\r\n    element = {};\r\n    if (!options.ignoreAttributes && attributes && Object.keys(attributes).length) {\r\n      element[options.attributesKey] = {};\r\n      var key;\r\n      for (key in attributes) {\r\n        if (attributes.hasOwnProperty(key)) {\r\n          element[options.attributesKey][key] = attributes[key];\r\n        }\r\n      }\r\n    }\r\n    if (\r\n      !(name in currentElement) &&\r\n      (isArray(options.alwaysArray) ? options.alwaysArray.indexOf(name) !== -1 : options.alwaysArray)\r\n    ) {\r\n      currentElement[name] = [];\r\n    }\r\n    if (currentElement[name] && !isArray(currentElement[name])) {\r\n      currentElement[name] = [currentElement[name]];\r\n    }\r\n    if (isArray(currentElement[name])) {\r\n      currentElement[name].push(element);\r\n    } else {\r\n      currentElement[name] = element;\r\n    }\r\n  } else {\r\n    if (!currentElement[options.elementsKey]) {\r\n      currentElement[options.elementsKey] = [];\r\n    }\r\n    element = {};\r\n    element[options.typeKey] = 'element';\r\n    element[options.nameKey] = name;\r\n    if (!options.ignoreAttributes && attributes && Object.keys(attributes).length) {\r\n      element[options.attributesKey] = attributes;\r\n    }\r\n    if (options.alwaysChildren) {\r\n      element[options.elementsKey] = [];\r\n    }\r\n    currentElement[options.elementsKey].push(element);\r\n  }\r\n  element[options.parentKey] = currentElement; // will be deleted in onEndElement() if !options.addParent\r\n  currentElement = element;\r\n}\r\n\r\nfunction onText(text) {\r\n  if (options.ignoreText) {\r\n    return;\r\n  }\r\n  if (!text.trim() && !options.captureSpacesBetweenElements) {\r\n    return;\r\n  }\r\n  if (options.trim) {\r\n    text = text.trim();\r\n  }\r\n  if (options.nativeType) {\r\n    text = nativeType(text);\r\n  }\r\n  if (options.sanitize) {\r\n    text = text.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\r\n  }\r\n  addField('text', text);\r\n}\r\n\r\nfunction onComment(comment) {\r\n  if (options.ignoreComment) {\r\n    return;\r\n  }\r\n  if (options.trim) {\r\n    comment = comment.trim();\r\n  }\r\n  addField('comment', comment);\r\n}\r\n\r\nfunction onEndElement(name) {\r\n  var parentElement = currentElement[options.parentKey];\r\n  if (!options.addParent) {\r\n    delete currentElement[options.parentKey];\r\n  }\r\n  currentElement = parentElement;\r\n}\r\n\r\nfunction onCdata(cdata) {\r\n  if (options.ignoreCdata) {\r\n    return;\r\n  }\r\n  if (options.trim) {\r\n    cdata = cdata.trim();\r\n  }\r\n  addField('cdata', cdata);\r\n}\r\n\r\nfunction onDoctype(doctype) {\r\n  if (options.ignoreDoctype) {\r\n    return;\r\n  }\r\n  doctype = doctype.replace(/^ /, '');\r\n  if (options.trim) {\r\n    doctype = doctype.trim();\r\n  }\r\n  addField('doctype', doctype);\r\n}\r\n\r\nfunction onError(error) {\r\n  error.note = error; //console.error(error);\r\n}\r\n\r\nmodule.exports = function (xml, userOptions) {\r\n\r\n  var parser = pureJsParser ? sax.parser(true, {}) : parser = new expat.Parser('UTF-8');\r\n  var result = {};\r\n  currentElement = result;\r\n\r\n  options = validateOptions(userOptions);\r\n\r\n  if (pureJsParser) {\r\n    parser.opt = {strictEntities: true};\r\n    parser.onopentag = onStartElement;\r\n    parser.ontext = onText;\r\n    parser.oncomment = onComment;\r\n    parser.onclosetag = onEndElement;\r\n    parser.onerror = onError;\r\n    parser.oncdata = onCdata;\r\n    parser.ondoctype = onDoctype;\r\n    parser.onprocessinginstruction = onInstruction;\r\n  } else {\r\n    parser.on('startElement', onStartElement);\r\n    parser.on('text', onText);\r\n    parser.on('comment', onComment);\r\n    parser.on('endElement', onEndElement);\r\n    parser.on('error', onError);\r\n    //parser.on('startCdata', onStartCdata);\r\n    //parser.on('endCdata', onEndCdata);\r\n    //parser.on('entityDecl', onEntityDecl);\r\n  }\r\n\r\n  if (pureJsParser) {\r\n    parser.write(xml).close();\r\n  } else {\r\n    if (!parser.parse(xml)) {\r\n      throw new Error('XML parsing error: ' + parser.getError());\r\n    }\r\n  }\r\n\r\n  if (result[options.elementsKey]) {\r\n    var temp = result[options.elementsKey];\r\n    delete result[options.elementsKey];\r\n    result[options.elementsKey] = temp;\r\n    delete result.text;\r\n  }\r\n\r\n  return result;\r\n\r\n};\r\n","var helper = require('./options-helper');\r\nvar xml2js = require('./xml2js');\r\n\r\nfunction validateOptions (userOptions) {\r\n  var options = helper.copyOptions(userOptions);\r\n  helper.ensureSpacesExists(options);\r\n  return options;\r\n}\r\n\r\nmodule.exports = function(xml, userOptions) {\r\n  var options, js, json, parentKey;\r\n  options = validateOptions(userOptions);\r\n  js = xml2js(xml, options);\r\n  parentKey = 'compact' in options && options.compact ? '_parent' : 'parent';\r\n  // parentKey = ptions.compact ? '_parent' : 'parent'; // consider this\r\n  if ('addParent' in options && options.addParent) {\r\n    json = JSON.stringify(js, function (k, v) { return k === parentKey? '_' : v; }, options.spaces);\r\n  } else {\r\n    json = JSON.stringify(js, null, options.spaces);\r\n  }\r\n  return json.replace(/\\u2028/g, '\\\\u2028').replace(/\\u2029/g, '\\\\u2029');\r\n};\r\n","var helper = require('./options-helper');\nvar isArray = require('./array-helper').isArray;\n\nvar currentElement, currentElementName;\n\nfunction validateOptions(userOptions) {\n  var options = helper.copyOptions(userOptions);\n  helper.ensureFlagExists('ignoreDeclaration', options);\n  helper.ensureFlagExists('ignoreInstruction', options);\n  helper.ensureFlagExists('ignoreAttributes', options);\n  helper.ensureFlagExists('ignoreText', options);\n  helper.ensureFlagExists('ignoreComment', options);\n  helper.ensureFlagExists('ignoreCdata', options);\n  helper.ensureFlagExists('ignoreDoctype', options);\n  helper.ensureFlagExists('compact', options);\n  helper.ensureFlagExists('indentText', options);\n  helper.ensureFlagExists('indentCdata', options);\n  helper.ensureFlagExists('indentAttributes', options);\n  helper.ensureFlagExists('indentInstruction', options);\n  helper.ensureFlagExists('fullTagEmptyElement', options);\n  helper.ensureFlagExists('noQuotesForNativeAttributes', options);\n  helper.ensureSpacesExists(options);\n  if (typeof options.spaces === 'number') {\n    options.spaces = Array(options.spaces + 1).join(' ');\n  }\n  helper.ensureKeyExists('declaration', options);\n  helper.ensureKeyExists('instruction', options);\n  helper.ensureKeyExists('attributes', options);\n  helper.ensureKeyExists('text', options);\n  helper.ensureKeyExists('comment', options);\n  helper.ensureKeyExists('cdata', options);\n  helper.ensureKeyExists('doctype', options);\n  helper.ensureKeyExists('type', options);\n  helper.ensureKeyExists('name', options);\n  helper.ensureKeyExists('elements', options);\n  helper.checkFnExists('doctype', options);\n  helper.checkFnExists('instruction', options);\n  helper.checkFnExists('cdata', options);\n  helper.checkFnExists('comment', options);\n  helper.checkFnExists('text', options);\n  helper.checkFnExists('instructionName', options);\n  helper.checkFnExists('elementName', options);\n  helper.checkFnExists('attributeName', options);\n  helper.checkFnExists('attributeValue', options);\n  helper.checkFnExists('attributes', options);\n  helper.checkFnExists('fullTagEmptyElement', options);\n  return options;\n}\n\nfunction writeIndentation(options, depth, firstLine) {\n  return (!firstLine && options.spaces ? '\\n' : '') + Array(depth + 1).join(options.spaces);\n}\n\nfunction writeAttributes(attributes, options, depth) {\n  if (options.ignoreAttributes) {\n    return '';\n  }\n  if ('attributesFn' in options) {\n    attributes = options.attributesFn(attributes, currentElementName, currentElement);\n  }\n  var key, attr, attrName, quote, result = [];\n  for (key in attributes) {\n    if (attributes.hasOwnProperty(key) && attributes[key] !== null && attributes[key] !== undefined) {\n      quote = options.noQuotesForNativeAttributes && typeof attributes[key] !== 'string' ? '' : '\"';\n      attr = '' + attributes[key]; // ensure number and boolean are converted to String\n      attr = attr.replace(/\"/g, '&quot;');\n      attrName = 'attributeNameFn' in options ? options.attributeNameFn(key, attr, currentElementName, currentElement) : key;\n      result.push((options.spaces && options.indentAttributes? writeIndentation(options, depth+1, false) : ' '));\n      result.push(attrName + '=' + quote + ('attributeValueFn' in options ? options.attributeValueFn(attr, key, currentElementName, currentElement) : attr) + quote);\n    }\n  }\n  if (attributes && Object.keys(attributes).length && options.spaces && options.indentAttributes) {\n    result.push(writeIndentation(options, depth, false));\n  }\n  return result.join('');\n}\n\nfunction writeDeclaration(declaration, options, depth) {\n  currentElement = declaration;\n  currentElementName = 'xml';\n  return options.ignoreDeclaration ? '' :  '<?' + 'xml' + writeAttributes(declaration[options.attributesKey], options, depth) + '?>';\n}\n\nfunction writeInstruction(instruction, options, depth) {\n  if (options.ignoreInstruction) {\n    return '';\n  }\n  var key;\n  for (key in instruction) {\n    if (instruction.hasOwnProperty(key)) {\n      break;\n    }\n  }\n  var instructionName = 'instructionNameFn' in options ? options.instructionNameFn(key, instruction[key], currentElementName, currentElement) : key;\n  if (typeof instruction[key] === 'object') {\n    currentElement = instruction;\n    currentElementName = instructionName;\n    return '<?' + instructionName + writeAttributes(instruction[key][options.attributesKey], options, depth) + '?>';\n  } else {\n    var instructionValue = instruction[key] ? instruction[key] : '';\n    if ('instructionFn' in options) instructionValue = options.instructionFn(instructionValue, key, currentElementName, currentElement);\n    return '<?' + instructionName + (instructionValue ? ' ' + instructionValue : '') + '?>';\n  }\n}\n\nfunction writeComment(comment, options) {\n  return options.ignoreComment ? '' : '<!--' + ('commentFn' in options ? options.commentFn(comment, currentElementName, currentElement) : comment) + '-->';\n}\n\nfunction writeCdata(cdata, options) {\n  return options.ignoreCdata ? '' : '<![CDATA[' + ('cdataFn' in options ? options.cdataFn(cdata, currentElementName, currentElement) : cdata.replace(']]>', ']]]]><![CDATA[>')) + ']]>';\n}\n\nfunction writeDoctype(doctype, options) {\n  return options.ignoreDoctype ? '' : '<!DOCTYPE ' + ('doctypeFn' in options ? options.doctypeFn(doctype, currentElementName, currentElement) : doctype) + '>';\n}\n\nfunction writeText(text, options) {\n  if (options.ignoreText) return '';\n  text = '' + text; // ensure Number and Boolean are converted to String\n  text = text.replace(/&amp;/g, '&'); // desanitize to avoid double sanitization\n  text = text.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n  return 'textFn' in options ? options.textFn(text, currentElementName, currentElement) : text;\n}\n\nfunction hasContent(element, options) {\n  var i;\n  if (element.elements && element.elements.length) {\n    for (i = 0; i < element.elements.length; ++i) {\n      switch (element.elements[i][options.typeKey]) {\n      case 'text':\n        if (options.indentText) {\n          return true;\n        }\n        break; // skip to next key\n      case 'cdata':\n        if (options.indentCdata) {\n          return true;\n        }\n        break; // skip to next key\n      case 'instruction':\n        if (options.indentInstruction) {\n          return true;\n        }\n        break; // skip to next key\n      case 'doctype':\n      case 'comment':\n      case 'element':\n        return true;\n      default:\n        return true;\n      }\n    }\n  }\n  return false;\n}\n\nfunction writeElement(element, options, depth) {\n  currentElement = element;\n  currentElementName = element.name;\n  var xml = [], elementName = 'elementNameFn' in options ? options.elementNameFn(element.name, element) : element.name;\n  xml.push('<' + elementName);\n  if (element[options.attributesKey]) {\n    xml.push(writeAttributes(element[options.attributesKey], options, depth));\n  }\n  var withClosingTag = element[options.elementsKey] && element[options.elementsKey].length || element[options.attributesKey] && element[options.attributesKey]['xml:space'] === 'preserve';\n  if (!withClosingTag) {\n    if ('fullTagEmptyElementFn' in options) {\n      withClosingTag = options.fullTagEmptyElementFn(element.name, element);\n    } else {\n      withClosingTag = options.fullTagEmptyElement;\n    }\n  }\n  if (withClosingTag) {\n    xml.push('>');\n    if (element[options.elementsKey] && element[options.elementsKey].length) {\n      xml.push(writeElements(element[options.elementsKey], options, depth + 1));\n      currentElement = element;\n      currentElementName = element.name;\n    }\n    xml.push(options.spaces && hasContent(element, options) ? '\\n' + Array(depth + 1).join(options.spaces) : '');\n    xml.push('</' + elementName + '>');\n  } else {\n    xml.push('/>');\n  }\n  return xml.join('');\n}\n\nfunction writeElements(elements, options, depth, firstLine) {\n  return elements.reduce(function (xml, element) {\n    var indent = writeIndentation(options, depth, firstLine && !xml);\n    switch (element.type) {\n    case 'element': return xml + indent + writeElement(element, options, depth);\n    case 'comment': return xml + indent + writeComment(element[options.commentKey], options);\n    case 'doctype': return xml + indent + writeDoctype(element[options.doctypeKey], options);\n    case 'cdata': return xml + (options.indentCdata ? indent : '') + writeCdata(element[options.cdataKey], options);\n    case 'text': return xml + (options.indentText ? indent : '') + writeText(element[options.textKey], options);\n    case 'instruction':\n      var instruction = {};\n      instruction[element[options.nameKey]] = element[options.attributesKey] ? element : element[options.instructionKey];\n      return xml + (options.indentInstruction ? indent : '') + writeInstruction(instruction, options, depth);\n    }\n  }, '');\n}\n\nfunction hasContentCompact(element, options, anyContent) {\n  var key;\n  for (key in element) {\n    if (element.hasOwnProperty(key)) {\n      switch (key) {\n      case options.parentKey:\n      case options.attributesKey:\n        break; // skip to next key\n      case options.textKey:\n        if (options.indentText || anyContent) {\n          return true;\n        }\n        break; // skip to next key\n      case options.cdataKey:\n        if (options.indentCdata || anyContent) {\n          return true;\n        }\n        break; // skip to next key\n      case options.instructionKey:\n        if (options.indentInstruction || anyContent) {\n          return true;\n        }\n        break; // skip to next key\n      case options.doctypeKey:\n      case options.commentKey:\n        return true;\n      default:\n        return true;\n      }\n    }\n  }\n  return false;\n}\n\nfunction writeElementCompact(element, name, options, depth, indent) {\n  currentElement = element;\n  currentElementName = name;\n  var elementName = 'elementNameFn' in options ? options.elementNameFn(name, element) : name;\n  if (typeof element === 'undefined' || element === null || element === '') {\n    return 'fullTagEmptyElementFn' in options && options.fullTagEmptyElementFn(name, element) || options.fullTagEmptyElement ? '<' + elementName + '></' + elementName + '>' : '<' + elementName + '/>';\n  }\n  var xml = [];\n  if (name) {\n    xml.push('<' + elementName);\n    if (typeof element !== 'object') {\n      xml.push('>' + writeText(element,options) + '</' + elementName + '>');\n      return xml.join('');\n    }\n    if (element[options.attributesKey]) {\n      xml.push(writeAttributes(element[options.attributesKey], options, depth));\n    }\n    var withClosingTag = hasContentCompact(element, options, true) || element[options.attributesKey] && element[options.attributesKey]['xml:space'] === 'preserve';\n    if (!withClosingTag) {\n      if ('fullTagEmptyElementFn' in options) {\n        withClosingTag = options.fullTagEmptyElementFn(name, element);\n      } else {\n        withClosingTag = options.fullTagEmptyElement;\n      }\n    }\n    if (withClosingTag) {\n      xml.push('>');\n    } else {\n      xml.push('/>');\n      return xml.join('');\n    }\n  }\n  xml.push(writeElementsCompact(element, options, depth + 1, false));\n  currentElement = element;\n  currentElementName = name;\n  if (name) {\n    xml.push((indent ? writeIndentation(options, depth, false) : '') + '</' + elementName + '>');\n  }\n  return xml.join('');\n}\n\nfunction writeElementsCompact(element, options, depth, firstLine) {\n  var i, key, nodes, xml = [];\n  for (key in element) {\n    if (element.hasOwnProperty(key)) {\n      nodes = isArray(element[key]) ? element[key] : [element[key]];\n      for (i = 0; i < nodes.length; ++i) {\n        switch (key) {\n        case options.declarationKey: xml.push(writeDeclaration(nodes[i], options, depth)); break;\n        case options.instructionKey: xml.push((options.indentInstruction ? writeIndentation(options, depth, firstLine) : '') + writeInstruction(nodes[i], options, depth)); break;\n        case options.attributesKey: case options.parentKey: break; // skip\n        case options.textKey: xml.push((options.indentText ? writeIndentation(options, depth, firstLine) : '') + writeText(nodes[i], options)); break;\n        case options.cdataKey: xml.push((options.indentCdata ? writeIndentation(options, depth, firstLine) : '') + writeCdata(nodes[i], options)); break;\n        case options.doctypeKey: xml.push(writeIndentation(options, depth, firstLine) + writeDoctype(nodes[i], options)); break;\n        case options.commentKey: xml.push(writeIndentation(options, depth, firstLine) + writeComment(nodes[i], options)); break;\n        default: xml.push(writeIndentation(options, depth, firstLine) + writeElementCompact(nodes[i], key, options, depth, hasContentCompact(nodes[i], options)));\n        }\n        firstLine = firstLine && !xml.length;\n      }\n    }\n  }\n  return xml.join('');\n}\n\nmodule.exports = function (js, options) {\n  options = validateOptions(options);\n  var xml = [];\n  currentElement = js;\n  currentElementName = '_root_';\n  if (options.compact) {\n    xml.push(writeElementsCompact(js, options, 0, true));\n  } else {\n    if (js[options.declarationKey]) {\n      xml.push(writeDeclaration(js[options.declarationKey], options, 0));\n    }\n    if (js[options.elementsKey] && js[options.elementsKey].length) {\n      xml.push(writeElements(js[options.elementsKey], options, 0, !xml.length));\n    }\n  }\n  return xml.join('');\n};\n","var js2xml = require('./js2xml.js');\r\n\r\nmodule.exports = function (json, options) {\r\n  if (json instanceof Buffer) {\r\n    json = json.toString();\r\n  }\r\n  var js = null;\r\n  if (typeof (json) === 'string') {\r\n    try {\r\n      js = JSON.parse(json);\r\n    } catch (e) {\r\n      throw new Error('The JSON structure is invalid');\r\n    }\r\n  } else {\r\n    js = json;\r\n  }\r\n  return js2xml(js, options);\r\n};\r\n","/*jslint node:true */\r\n\r\nvar xml2js = require('./xml2js');\r\nvar xml2json = require('./xml2json');\r\nvar js2xml = require('./js2xml');\r\nvar json2xml = require('./json2xml');\r\n\r\nmodule.exports = {\r\n  xml2js: xml2js,\r\n  xml2json: xml2json,\r\n  js2xml: js2xml,\r\n  json2xml: json2xml\r\n};\r\n"],"names":["sax","Buffer","require$$1","s","index","exports","require$$0","require$$2","xml2js","js2xml","xml2json","json2xml","require$$3"],"mappings":";;;;;;;;;AAAC,KAAC,SAAUA,MAAK;AACf,MAAAA,KAAI,SAAS,SAAU,QAAQ,KAAK;AAAE,eAAO,IAAI,UAAU,QAAQ,GAAG;AAAA,MAAC;AACvE,MAAAA,KAAI,YAAY;AAChB,MAAAA,KAAI,YAAY;AAChB,MAAAA,KAAI,eAAe;AAWnB,MAAAA,KAAI,oBAAoB,KAAK;AAE7B,UAAI,UAAU;AAAA,QACZ;AAAA,QAAW;AAAA,QAAY;AAAA,QAAY;AAAA,QAAW;AAAA,QAC9C;AAAA,QAAgB;AAAA,QAAgB;AAAA,QAAU;AAAA,QAC1C;AAAA,QAAe;AAAA,QAAS;AAAA,MAC5B;AAEE,MAAAA,KAAI,SAAS;AAAA,QACX;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAEE,eAAS,UAAW,QAAQ,KAAK;AAC/B,YAAI,EAAE,gBAAgB,YAAY;AAChC,iBAAO,IAAI,UAAU,QAAQ,GAAG;AAAA,QACtC;AAEI,YAAI,SAAS;AACb,qBAAa,MAAM;AACnB,eAAO,IAAI,OAAO,IAAI;AACtB,eAAO,sBAAsBA,KAAI;AACjC,eAAO,MAAM,OAAO,CAAA;AACpB,eAAO,IAAI,YAAY,OAAO,IAAI,aAAa,OAAO,IAAI;AAC1D,eAAO,YAAY,OAAO,IAAI,YAAY,gBAAgB;AAC1D,eAAO,OAAO,CAAA;AACd,eAAO,SAAS,OAAO,aAAa,OAAO,UAAU;AACrD,eAAO,MAAM,OAAO,QAAQ;AAC5B,eAAO,SAAS,CAAC,CAAC;AAClB,eAAO,WAAW,CAAC,EAAE,UAAU,OAAO,IAAI;AAC1C,eAAO,QAAQ,EAAE;AACjB,eAAO,iBAAiB,OAAO,IAAI;AACnC,eAAO,WAAW,OAAO,iBAAiB,OAAO,OAAOA,KAAI,YAAY,IAAI,OAAO,OAAOA,KAAI,QAAQ;AACtG,eAAO,aAAa,CAAA;AAKpB,YAAI,OAAO,IAAI,OAAO;AACpB,iBAAO,KAAK,OAAO,OAAO,MAAM;AAAA,QACtC;AAII,YAAI,OAAO,IAAI,4BAA4B,QAAW;AACpD,iBAAO,IAAI,0BAA0B,CAAC;AAAA,QAC5C;AAGI,eAAO,gBAAgB,OAAO,IAAI,aAAa;AAC/C,YAAI,OAAO,eAAe;AACxB,iBAAO,WAAW,OAAO,OAAO,OAAO,SAAS;AAAA,QACtD;AACI,aAAK,QAAQ,SAAS;AAAA,MAC1B;AAEE,UAAI,CAAC,OAAO,QAAQ;AAClB,eAAO,SAAS,SAAU,GAAG;AAC3B,mBAAS,IAAK;AAAA,UAAA;AACd,YAAE,YAAY;AACd,cAAI,OAAO,IAAI,EAAC;AAChB,iBAAO;AAAA,QACb;AAAA,MACA;AAEE,UAAI,CAAC,OAAO,MAAM;AAChB,eAAO,OAAO,SAAU,GAAG;AACzB,cAAI,IAAI,CAAA;AACR,mBAAS,KAAK,EAAG,KAAI,EAAE,eAAe,CAAC,EAAG,GAAE,KAAK,CAAC;AAClD,iBAAO;AAAA,QACb;AAAA,MACA;AAEE,eAAS,kBAAmB,QAAQ;AAClC,YAAI,aAAa,KAAK,IAAIA,KAAI,mBAAmB,EAAE;AACnD,YAAI,YAAY;AAChB,iBAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,IAAI,GAAG,KAAK;AAC9C,cAAI,MAAM,OAAO,QAAQ,CAAC,CAAC,EAAE;AAC7B,cAAI,MAAM,YAAY;AAKpB,oBAAQ,QAAQ,CAAC,GAAC;AAAA,cAChB,KAAK;AACH,0BAAU,MAAM;AAChB;AAAA,cAEF,KAAK;AACH,yBAAS,QAAQ,WAAW,OAAO,KAAK;AACxC,uBAAO,QAAQ;AACf;AAAA,cAEF,KAAK;AACH,yBAAS,QAAQ,YAAY,OAAO,MAAM;AAC1C,uBAAO,SAAS;AAChB;AAAA,cAEF;AACE,sBAAM,QAAQ,iCAAiC,QAAQ,CAAC,CAAC;AAAA,YACrE;AAAA,UACA;AACM,sBAAY,KAAK,IAAI,WAAW,GAAG;AAAA,QACzC;AAEI,YAAI,IAAIA,KAAI,oBAAoB;AAChC,eAAO,sBAAsB,IAAI,OAAO;AAAA,MAC5C;AAEE,eAAS,aAAc,QAAQ;AAC7B,iBAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,IAAI,GAAG,KAAK;AAC9C,iBAAO,QAAQ,CAAC,CAAC,IAAI;AAAA,QAC3B;AAAA,MACA;AAEE,eAAS,aAAc,QAAQ;AAC7B,kBAAU,MAAM;AAChB,YAAI,OAAO,UAAU,IAAI;AACvB,mBAAS,QAAQ,WAAW,OAAO,KAAK;AACxC,iBAAO,QAAQ;AAAA,QACrB;AACI,YAAI,OAAO,WAAW,IAAI;AACxB,mBAAS,QAAQ,YAAY,OAAO,MAAM;AAC1C,iBAAO,SAAS;AAAA,QACtB;AAAA,MACA;AAEE,gBAAU,YAAY;AAAA,QACpB,KAAK,WAAY;AAAE,cAAI,IAAI;AAAA,QAAC;AAAA,QAC5B;AAAA,QACA,QAAQ,WAAY;AAAE,eAAK,QAAQ;AAAM,iBAAO;AAAA,QAAI;AAAA,QACpD,OAAO,WAAY;AAAE,iBAAO,KAAK,MAAM,IAAI;AAAA,QAAC;AAAA,QAC5C,OAAO,WAAY;AAAE,uBAAa,IAAI;AAAA,QAAC;AAAA,MAC3C;AAEE,UAAI;AACJ,UAAI;AACF,iBAAS,QAAQ,QAAQ,EAAE;AAAA,MAC/B,SAAW,IAAI;AACX,iBAAS,WAAY;AAAA,QAAA;AAAA,MACzB;AACE,UAAI,CAAC,OAAQ,UAAS,WAAY;AAAA,MAAA;AAElC,UAAI,cAAcA,KAAI,OAAO,OAAO,SAAU,IAAI;AAChD,eAAO,OAAO,WAAW,OAAO;AAAA,MACpC,CAAG;AAED,eAAS,aAAc,QAAQ,KAAK;AAClC,eAAO,IAAI,UAAU,QAAQ,GAAG;AAAA,MACpC;AAEE,eAAS,UAAW,QAAQ,KAAK;AAC/B,YAAI,EAAE,gBAAgB,YAAY;AAChC,iBAAO,IAAI,UAAU,QAAQ,GAAG;AAAA,QACtC;AAEI,eAAO,MAAM,IAAI;AAEjB,aAAK,UAAU,IAAI,UAAU,QAAQ,GAAG;AACxC,aAAK,WAAW;AAChB,aAAK,WAAW;AAEhB,YAAI,KAAK;AAET,aAAK,QAAQ,QAAQ,WAAY;AAC/B,aAAG,KAAK,KAAK;AAAA,QACnB;AAEI,aAAK,QAAQ,UAAU,SAAU,IAAI;AACnC,aAAG,KAAK,SAAS,EAAE;AAInB,aAAG,QAAQ,QAAQ;AAAA,QACzB;AAEI,aAAK,WAAW;AAEhB,oBAAY,QAAQ,SAAU,IAAI;AAChC,iBAAO,eAAe,IAAI,OAAO,IAAI;AAAA,YACnC,KAAK,WAAY;AACf,qBAAO,GAAG,QAAQ,OAAO,EAAE;AAAA,YACrC;AAAA,YACQ,KAAK,SAAU,GAAG;AAChB,kBAAI,CAAC,GAAG;AACN,mBAAG,mBAAmB,EAAE;AACxB,mBAAG,QAAQ,OAAO,EAAE,IAAI;AACxB,uBAAO;AAAA,cACnB;AACU,iBAAG,GAAG,IAAI,CAAC;AAAA,YACrB;AAAA,YACQ,YAAY;AAAA,YACZ,cAAc;AAAA,WACf;AAAA,QACP,CAAK;AAAA,MACL;AAEE,gBAAU,YAAY,OAAO,OAAO,OAAO,WAAW;AAAA,QACpD,aAAa;AAAA,UACX,OAAO;AAAA,QACb;AAAA,OACG;AAED,gBAAU,UAAU,QAAQ,SAAU,MAAM;AAC1C,YAAI,OAAOC,MAAAA,WAAW,cACpB,OAAOA,MAAAA,OAAO,aAAa,cAC3BA,aAAO,SAAS,IAAI,GAAG;AACvB,cAAI,CAAC,KAAK,UAAU;AAClB,gBAAI,KAAKC,eAAAA,wBAA0B;AACnC,iBAAK,WAAW,IAAI,GAAG,MAAM;AAAA,UACrC;AACM,iBAAO,KAAK,SAAS,MAAM,IAAI;AAAA,QACrC;AAEI,aAAK,QAAQ,MAAM,KAAK,SAAQ,CAAE;AAClC,aAAK,KAAK,QAAQ,IAAI;AACtB,eAAO;AAAA,MACX;AAEE,gBAAU,UAAU,MAAM,SAAU,OAAO;AACzC,YAAI,SAAS,MAAM,QAAQ;AACzB,eAAK,MAAM,KAAK;AAAA,QACtB;AACI,aAAK,QAAQ,IAAG;AAChB,eAAO;AAAA,MACX;AAEE,gBAAU,UAAU,KAAK,SAAU,IAAI,SAAS;AAC9C,YAAI,KAAK;AACT,YAAI,CAAC,GAAG,QAAQ,OAAO,EAAE,KAAK,YAAY,QAAQ,EAAE,MAAM,IAAI;AAC5D,aAAG,QAAQ,OAAO,EAAE,IAAI,WAAY;AAClC,gBAAI,OAAO,UAAU,WAAW,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,MAAM,MAAM,MAAM,SAAS;AAChF,iBAAK,OAAO,GAAG,GAAG,EAAE;AACpB,eAAG,KAAK,MAAM,IAAI,IAAI;AAAA,UAC9B;AAAA,QACA;AAEI,eAAO,OAAO,UAAU,GAAG,KAAK,IAAI,IAAI,OAAO;AAAA,MACnD;AAIE,UAAI,QAAQ;AACZ,UAAI,UAAU;AACd,UAAI,gBAAgB;AACpB,UAAI,kBAAkB;AACtB,UAAI,SAAS,EAAE,KAAK,eAAe,OAAO,gBAAe;AAQzD,UAAI,YAAY;AAEhB,UAAI,WAAW;AAEf,UAAI,cAAc;AAClB,UAAI,aAAa;AAEjB,eAAS,aAAc,GAAG;AACxB,eAAO,MAAM,OAAO,MAAM,QAAQ,MAAM,QAAQ,MAAM;AAAA,MAC1D;AAEE,eAAS,QAAS,GAAG;AACnB,eAAO,MAAM,OAAO,MAAM;AAAA,MAC9B;AAEE,eAAS,YAAa,GAAG;AACvB,eAAO,MAAM,OAAO,aAAa,CAAC;AAAA,MACtC;AAEE,eAAS,QAAS,OAAO,GAAG;AAC1B,eAAO,MAAM,KAAK,CAAC;AAAA,MACvB;AAEE,eAAS,SAAU,OAAO,GAAG;AAC3B,eAAO,CAAC,QAAQ,OAAO,CAAC;AAAA,MAC5B;AAEE,UAAI,IAAI;AACR,MAAAF,KAAI,QAAQ;AAAA,QACV,OAAO;AAAA;AAAA,QACP,kBAAkB;AAAA;AAAA,QAClB,MAAM;AAAA;AAAA,QACN,aAAa;AAAA;AAAA,QACb,WAAW;AAAA;AAAA,QACX,WAAW;AAAA;AAAA,QACX,kBAAkB;AAAA;AAAA,QAClB,SAAS;AAAA;AAAA,QACT,gBAAgB;AAAA;AAAA,QAChB,aAAa;AAAA;AAAA,QACb,oBAAoB;AAAA;AAAA,QACpB,kBAAkB;AAAA;AAAA,QAClB,SAAS;AAAA;AAAA,QACT,gBAAgB;AAAA;AAAA,QAChB,eAAe;AAAA;AAAA,QACf,OAAO;AAAA;AAAA,QACP,cAAc;AAAA;AAAA,QACd,gBAAgB;AAAA;AAAA,QAChB,WAAW;AAAA;AAAA,QACX,gBAAgB;AAAA;AAAA,QAChB,kBAAkB;AAAA;AAAA,QAClB,UAAU;AAAA;AAAA,QACV,gBAAgB;AAAA;AAAA,QAChB,QAAQ;AAAA;AAAA,QACR,aAAa;AAAA;AAAA,QACb,uBAAuB;AAAA;AAAA,QACvB,cAAc;AAAA;AAAA,QACd,qBAAqB;AAAA;AAAA,QACrB,qBAAqB;AAAA;AAAA,QACrB,uBAAuB;AAAA;AAAA,QACvB,uBAAuB;AAAA;AAAA,QACvB,uBAAuB;AAAA;AAAA,QACvB,WAAW;AAAA;AAAA,QACX,qBAAqB;AAAA;AAAA,QACrB,QAAQ;AAAA;AAAA,QACR,eAAe;AAAA;AAAA,MACnB;AAEE,MAAAA,KAAI,eAAe;AAAA,QACjB,OAAO;AAAA,QACP,MAAM;AAAA,QACN,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,MACZ;AAEE,MAAAA,KAAI,WAAW;AAAA,QACb,OAAO;AAAA,QACP,MAAM;AAAA,QACN,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,UAAU;AAAA,QACV,SAAS;AAAA,QACT,UAAU;AAAA,QACV,SAAS;AAAA,QACT,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,OAAO;AAAA,QACP,UAAU;AAAA,QACV,SAAS;AAAA,QACT,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,SAAS;AAAA,QACT,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,UAAU;AAAA,QACV,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,QACV,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,UAAU;AAAA,QACV,SAAS;AAAA,QACT,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,UAAU;AAAA,QACV,SAAS;AAAA,QACT,SAAS;AAAA,QACT,UAAU;AAAA,QACV,SAAS;AAAA,QACT,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,UAAU;AAAA,QACV,SAAS;AAAA,QACT,UAAU;AAAA,QACV,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,SAAS;AAAA,QACT,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,UAAU;AAAA,QACV,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,QACV,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,SAAS;AAAA,QACT,UAAU;AAAA,QACV,SAAS;AAAA,QACT,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,UAAU;AAAA,QACV,OAAO;AAAA,QACP,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,OAAO;AAAA,QACP,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,QACV,UAAU;AAAA,QACV,UAAU;AAAA,QACV,SAAS;AAAA,QACT,UAAU;AAAA,QACV,SAAS;AAAA,QACT,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,SAAS;AAAA,QACT,WAAW;AAAA,QACX,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,UAAU;AAAA,QACV,MAAM;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,QACN,WAAW;AAAA,QACX,MAAM;AAAA,QACN,OAAO;AAAA,QACP,SAAS;AAAA,QACT,OAAO;AAAA,QACP,WAAW;AAAA,QACX,OAAO;AAAA,QACP,OAAO;AAAA,QACP,OAAO;AAAA,QACP,SAAS;AAAA,QACT,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,SAAS;AAAA,QACT,WAAW;AAAA,QACX,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,UAAU;AAAA,QACV,MAAM;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,QACN,WAAW;AAAA,QACX,MAAM;AAAA,QACN,OAAO;AAAA,QACP,UAAU;AAAA,QACV,SAAS;AAAA,QACT,OAAO;AAAA,QACP,WAAW;AAAA,QACX,OAAO;AAAA,QACP,OAAO;AAAA,QACP,OAAO;AAAA,QACP,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,OAAO;AAAA,QACP,OAAO;AAAA,QACP,SAAS;AAAA,QACT,SAAS;AAAA,QACT,SAAS;AAAA,QACT,SAAS;AAAA,QACT,SAAS;AAAA,QACT,SAAS;AAAA,QACT,SAAS;AAAA,QACT,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,UAAU;AAAA,QACV,SAAS;AAAA,QACT,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,QACV,SAAS;AAAA,QACT,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,WAAW;AAAA,QACX,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,SAAS;AAAA,QACT,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,QACP,OAAO;AAAA,QACP,OAAO;AAAA,QACP,UAAU;AAAA,QACV,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,MAAM;AAAA,QACN,SAAS;AAAA,QACT,MAAM;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,QACP,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,UAAU;AAAA,QACV,SAAS;AAAA,QACT,UAAU;AAAA,QACV,SAAS;AAAA,MACb;AAEE,aAAO,KAAKA,KAAI,QAAQ,EAAE,QAAQ,SAAU,KAAK;AAC/C,YAAI,IAAIA,KAAI,SAAS,GAAG;AACxB,YAAIG,KAAI,OAAO,MAAM,WAAW,OAAO,aAAa,CAAC,IAAI;AACzD,QAAAH,KAAI,SAAS,GAAG,IAAIG;AAAA,MACxB,CAAG;AAED,eAAS,KAAKH,KAAI,OAAO;AACvB,QAAAA,KAAI,MAAMA,KAAI,MAAM,CAAC,CAAC,IAAI;AAAA,MAC9B;AAGE,UAAIA,KAAI;AAER,eAAS,KAAM,QAAQ,OAAO,MAAM;AAClC,eAAO,KAAK,KAAK,OAAO,KAAK,EAAE,IAAI;AAAA,MACvC;AAEE,eAAS,SAAU,QAAQ,UAAU,MAAM;AACzC,YAAI,OAAO,SAAU,WAAU,MAAM;AACrC,aAAK,QAAQ,UAAU,IAAI;AAAA,MAC/B;AAEE,eAAS,UAAW,QAAQ;AAC1B,eAAO,WAAW,SAAS,OAAO,KAAK,OAAO,QAAQ;AACtD,YAAI,OAAO,SAAU,MAAK,QAAQ,UAAU,OAAO,QAAQ;AAC3D,eAAO,WAAW;AAAA,MACtB;AAEE,eAAS,SAAU,KAAK,MAAM;AAC5B,YAAI,IAAI,KAAM,QAAO,KAAK,KAAI;AAC9B,YAAI,IAAI,UAAW,QAAO,KAAK,QAAQ,QAAQ,GAAG;AAClD,eAAO;AAAA,MACX;AAEE,eAAS,MAAO,QAAQ,IAAI;AAC1B,kBAAU,MAAM;AAChB,YAAI,OAAO,eAAe;AACxB,gBAAM,aAAa,OAAO,OACxB,eAAe,OAAO,SACtB,aAAa,OAAO;AAAA,QAC5B;AACI,aAAK,IAAI,MAAM,EAAE;AACjB,eAAO,QAAQ;AACf,aAAK,QAAQ,WAAW,EAAE;AAC1B,eAAO;AAAA,MACX;AAEE,eAAS,IAAK,QAAQ;AACpB,YAAI,OAAO,WAAW,CAAC,OAAO,WAAY,YAAW,QAAQ,mBAAmB;AAChF,YAAK,OAAO,UAAU,EAAE,SACrB,OAAO,UAAU,EAAE,oBACnB,OAAO,UAAU,EAAE,MAAO;AAC3B,gBAAM,QAAQ,gBAAgB;AAAA,QACpC;AACI,kBAAU,MAAM;AAChB,eAAO,IAAI;AACX,eAAO,SAAS;AAChB,aAAK,QAAQ,OAAO;AACpB,kBAAU,KAAK,QAAQ,OAAO,QAAQ,OAAO,GAAG;AAChD,eAAO;AAAA,MACX;AAEE,eAAS,WAAY,QAAQ,SAAS;AACpC,YAAI,OAAO,WAAW,YAAY,EAAE,kBAAkB,YAAY;AAChE,gBAAM,IAAI,MAAM,wBAAwB;AAAA,QAC9C;AACI,YAAI,OAAO,QAAQ;AACjB,gBAAM,QAAQ,OAAO;AAAA,QAC3B;AAAA,MACA;AAEE,eAAS,OAAQ,QAAQ;AACvB,YAAI,CAAC,OAAO,OAAQ,QAAO,UAAU,OAAO,QAAQ,OAAO,SAAS,EAAC;AACrE,YAAI,SAAS,OAAO,KAAK,OAAO,KAAK,SAAS,CAAC,KAAK;AACpD,YAAI,MAAM,OAAO,MAAM,EAAE,MAAM,OAAO,SAAS,YAAY,CAAA,EAAE;AAG7D,YAAI,OAAO,IAAI,OAAO;AACpB,cAAI,KAAK,OAAO;AAAA,QACtB;AACI,eAAO,WAAW,SAAS;AAC3B,iBAAS,QAAQ,kBAAkB,GAAG;AAAA,MAC1C;AAEE,eAAS,MAAO,MAAM,WAAW;AAC/B,YAAI,IAAI,KAAK,QAAQ,GAAG;AACxB,YAAI,WAAW,IAAI,IAAI,CAAE,IAAI,IAAI,IAAK,KAAK,MAAM,GAAG;AACpD,YAAI,SAAS,SAAS,CAAC;AACvB,YAAI,QAAQ,SAAS,CAAC;AAGtB,YAAI,aAAa,SAAS,SAAS;AACjC,mBAAS;AACT,kBAAQ;AAAA,QACd;AAEI,eAAO,EAAE,QAAgB,MAAY;AAAA,MACzC;AAEE,eAAS,OAAQ,QAAQ;AACvB,YAAI,CAAC,OAAO,QAAQ;AAClB,iBAAO,aAAa,OAAO,WAAW,OAAO,SAAS,EAAC;AAAA,QAC7D;AAEI,YAAI,OAAO,WAAW,QAAQ,OAAO,UAAU,MAAM,MACnD,OAAO,IAAI,WAAW,eAAe,OAAO,UAAU,GAAG;AACzD,iBAAO,aAAa,OAAO,cAAc;AACzC;AAAA,QACN;AAEI,YAAI,OAAO,IAAI,OAAO;AACpB,cAAI,KAAK,MAAM,OAAO,YAAY,IAAI;AACtC,cAAI,SAAS,GAAG;AAChB,cAAI,QAAQ,GAAG;AAEf,cAAI,WAAW,SAAS;AAEtB,gBAAI,UAAU,SAAS,OAAO,gBAAgB,eAAe;AAC3D;AAAA,gBAAW;AAAA,gBACT,kCAAkC,gBAAgB,eACrC,OAAO;AAAA,cAAW;AAAA,YAC3C,WAAmB,UAAU,WAAW,OAAO,gBAAgB,iBAAiB;AACtE;AAAA,gBAAW;AAAA,gBACT,oCAAoC,kBAAkB,eACzC,OAAO;AAAA,cAAW;AAAA,YAC3C,OAAe;AACL,kBAAI,MAAM,OAAO;AACjB,kBAAI,SAAS,OAAO,KAAK,OAAO,KAAK,SAAS,CAAC,KAAK;AACpD,kBAAI,IAAI,OAAO,OAAO,IAAI;AACxB,oBAAI,KAAK,OAAO,OAAO,OAAO,EAAE;AAAA,cAC5C;AACU,kBAAI,GAAG,KAAK,IAAI,OAAO;AAAA,YACjC;AAAA,UACA;AAKM,iBAAO,WAAW,KAAK,CAAC,OAAO,YAAY,OAAO,WAAW,CAAC;AAAA,QACpE,OAAW;AAEL,iBAAO,IAAI,WAAW,OAAO,UAAU,IAAI,OAAO;AAClD,mBAAS,QAAQ,eAAe;AAAA,YAC9B,MAAM,OAAO;AAAA,YACb,OAAO,OAAO;AAAA,WACf;AAAA,QACP;AAEI,eAAO,aAAa,OAAO,cAAc;AAAA,MAC7C;AAEE,eAAS,QAAS,QAAQ,aAAa;AACrC,YAAI,OAAO,IAAI,OAAO;AAEpB,cAAI,MAAM,OAAO;AAGjB,cAAI,KAAK,MAAM,OAAO,OAAO;AAC7B,cAAI,SAAS,GAAG;AAChB,cAAI,QAAQ,GAAG;AACf,cAAI,MAAM,IAAI,GAAG,GAAG,MAAM,KAAK;AAE/B,cAAI,IAAI,UAAU,CAAC,IAAI,KAAK;AAC1B,uBAAW,QAAQ,+BACjB,KAAK,UAAU,OAAO,OAAO,CAAC;AAChC,gBAAI,MAAM,GAAG;AAAA,UACrB;AAEM,cAAI,SAAS,OAAO,KAAK,OAAO,KAAK,SAAS,CAAC,KAAK;AACpD,cAAI,IAAI,MAAM,OAAO,OAAO,IAAI,IAAI;AAClC,mBAAO,KAAK,IAAI,EAAE,EAAE,QAAQ,SAAU,GAAG;AACvC,uBAAS,QAAQ,mBAAmB;AAAA,gBAClC,QAAQ;AAAA,gBACR,KAAK,IAAI,GAAG,CAAC;AAAA,eACd;AAAA,YACX,CAAS;AAAA,UACT;AAKM,mBAAS,IAAI,GAAG,IAAI,OAAO,WAAW,QAAQ,IAAI,GAAG,KAAK;AACxD,gBAAI,KAAK,OAAO,WAAW,CAAC;AAC5B,gBAAI,OAAO,GAAG,CAAC;AACf,gBAAI,QAAQ,GAAG,CAAC;AAChB,gBAAI,WAAW,MAAM,MAAM,IAAI;AAC/B,gBAAI,SAAS,SAAS;AACtB,gBAAI,QAAQ,SAAS;AACrB,gBAAI,MAAM,WAAW,KAAK,KAAM,IAAI,GAAG,MAAM,KAAK;AAClD,gBAAI,IAAI;AAAA,cACN;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACV;AAIQ,gBAAI,UAAU,WAAW,WAAW,CAAC,KAAK;AACxC,yBAAW,QAAQ,+BACjB,KAAK,UAAU,MAAM,CAAC;AACxB,gBAAE,MAAM;AAAA,YAClB;AACQ,mBAAO,IAAI,WAAW,IAAI,IAAI;AAC9B,qBAAS,QAAQ,eAAe,CAAC;AAAA,UACzC;AACM,iBAAO,WAAW,SAAS;AAAA,QACjC;AAEI,eAAO,IAAI,gBAAgB,CAAC,CAAC;AAG7B,eAAO,UAAU;AACjB,eAAO,KAAK,KAAK,OAAO,GAAG;AAC3B,iBAAS,QAAQ,aAAa,OAAO,GAAG;AACxC,YAAI,CAAC,aAAa;AAEhB,cAAI,CAAC,OAAO,YAAY,OAAO,QAAQ,YAAW,MAAO,UAAU;AACjE,mBAAO,QAAQ,EAAE;AAAA,UACzB,OAAa;AACL,mBAAO,QAAQ,EAAE;AAAA,UACzB;AACM,iBAAO,MAAM;AACb,iBAAO,UAAU;AAAA,QACvB;AACI,eAAO,aAAa,OAAO,cAAc;AACzC,eAAO,WAAW,SAAS;AAAA,MAC/B;AAEE,eAAS,SAAU,QAAQ;AACzB,YAAI,CAAC,OAAO,SAAS;AACnB,qBAAW,QAAQ,wBAAwB;AAC3C,iBAAO,YAAY;AACnB,iBAAO,QAAQ,EAAE;AACjB;AAAA,QACN;AAEI,YAAI,OAAO,QAAQ;AACjB,cAAI,OAAO,YAAY,UAAU;AAC/B,mBAAO,UAAU,OAAO,OAAO,UAAU;AACzC,mBAAO,UAAU;AACjB,mBAAO,QAAQ,EAAE;AACjB;AAAA,UACR;AACM,mBAAS,QAAQ,YAAY,OAAO,MAAM;AAC1C,iBAAO,SAAS;AAAA,QACtB;AAII,YAAI,IAAI,OAAO,KAAK;AACpB,YAAI,UAAU,OAAO;AACrB,YAAI,CAAC,OAAO,QAAQ;AAClB,oBAAU,QAAQ,OAAO,SAAS,EAAC;AAAA,QACzC;AACI,YAAI,UAAU;AACd,eAAO,KAAK;AACV,cAAI,QAAQ,OAAO,KAAK,CAAC;AACzB,cAAI,MAAM,SAAS,SAAS;AAE1B,uBAAW,QAAQ,sBAAsB;AAAA,UACjD,OAAa;AACL;AAAA,UACR;AAAA,QACA;AAGI,YAAI,IAAI,GAAG;AACT,qBAAW,QAAQ,4BAA4B,OAAO,OAAO;AAC7D,iBAAO,YAAY,OAAO,OAAO,UAAU;AAC3C,iBAAO,QAAQ,EAAE;AACjB;AAAA,QACN;AACI,eAAO,UAAU;AACjB,YAAIG,KAAI,OAAO,KAAK;AACpB,eAAOA,OAAM,GAAG;AACd,cAAI,MAAM,OAAO,MAAM,OAAO,KAAK,IAAG;AACtC,iBAAO,UAAU,OAAO,IAAI;AAC5B,mBAAS,QAAQ,cAAc,OAAO,OAAO;AAE7C,cAAI,IAAI,CAAA;AACR,mBAAS,KAAK,IAAI,IAAI;AACpB,cAAE,CAAC,IAAI,IAAI,GAAG,CAAC;AAAA,UACvB;AAEM,cAAI,SAAS,OAAO,KAAK,OAAO,KAAK,SAAS,CAAC,KAAK;AACpD,cAAI,OAAO,IAAI,SAAS,IAAI,OAAO,OAAO,IAAI;AAE5C,mBAAO,KAAK,IAAI,EAAE,EAAE,QAAQ,SAAU,GAAG;AACvC,kBAAI,IAAI,IAAI,GAAG,CAAC;AAChB,uBAAS,QAAQ,oBAAoB,EAAE,QAAQ,GAAG,KAAK,EAAC,CAAE;AAAA,YACpE,CAAS;AAAA,UACT;AAAA,QACA;AACI,YAAI,MAAM,EAAG,QAAO,aAAa;AACjC,eAAO,UAAU,OAAO,cAAc,OAAO,aAAa;AAC1D,eAAO,WAAW,SAAS;AAC3B,eAAO,QAAQ,EAAE;AAAA,MACrB;AAEE,eAAS,YAAa,QAAQ;AAC5B,YAAI,SAAS,OAAO;AACpB,YAAI,WAAW,OAAO,YAAW;AACjC,YAAI;AACJ,YAAI,SAAS;AAEb,YAAI,OAAO,SAAS,MAAM,GAAG;AAC3B,iBAAO,OAAO,SAAS,MAAM;AAAA,QACnC;AACI,YAAI,OAAO,SAAS,QAAQ,GAAG;AAC7B,iBAAO,OAAO,SAAS,QAAQ;AAAA,QACrC;AACI,iBAAS;AACT,YAAI,OAAO,OAAO,CAAC,MAAM,KAAK;AAC5B,cAAI,OAAO,OAAO,CAAC,MAAM,KAAK;AAC5B,qBAAS,OAAO,MAAM,CAAC;AACvB,kBAAM,SAAS,QAAQ,EAAE;AACzB,qBAAS,IAAI,SAAS,EAAE;AAAA,UAChC,OAAa;AACL,qBAAS,OAAO,MAAM,CAAC;AACvB,kBAAM,SAAS,QAAQ,EAAE;AACzB,qBAAS,IAAI,SAAS,EAAE;AAAA,UAChC;AAAA,QACA;AACI,iBAAS,OAAO,QAAQ,OAAO,EAAE;AACjC,YAAI,MAAM,GAAG,KAAK,OAAO,YAAW,MAAO,QAAQ;AACjD,qBAAW,QAAQ,0BAA0B;AAC7C,iBAAO,MAAM,OAAO,SAAS;AAAA,QACnC;AAEI,eAAO,OAAO,cAAc,GAAG;AAAA,MACnC;AAEE,eAAS,gBAAiB,QAAQ,GAAG;AACnC,YAAI,MAAM,KAAK;AACb,iBAAO,QAAQ,EAAE;AACjB,iBAAO,mBAAmB,OAAO;AAAA,QACvC,WAAe,CAAC,aAAa,CAAC,GAAG;AAG3B,qBAAW,QAAQ,kCAAkC;AACrD,iBAAO,WAAW;AAClB,iBAAO,QAAQ,EAAE;AAAA,QACvB;AAAA,MACA;AAEE,eAAS,OAAQ,OAAO,GAAG;AACzB,YAAI,SAAS;AACb,YAAI,IAAI,MAAM,QAAQ;AACpB,mBAAS,MAAM,OAAO,CAAC;AAAA,QAC7B;AACI,eAAO;AAAA,MACX;AAEE,eAAS,MAAO,OAAO;AACrB,YAAI,SAAS;AACb,YAAI,KAAK,OAAO;AACd,gBAAM,KAAK;AAAA,QACjB;AACI,YAAI,OAAO,QAAQ;AACjB,iBAAO;AAAA,YAAM;AAAA,YACX;AAAA,UAAsD;AAAA,QAC9D;AACI,YAAI,UAAU,MAAM;AAClB,iBAAO,IAAI,MAAM;AAAA,QACvB;AACI,YAAI,OAAO,UAAU,UAAU;AAC7B,kBAAQ,MAAM,SAAQ;AAAA,QAC5B;AACI,YAAI,IAAI;AACR,YAAI,IAAI;AACR,eAAO,MAAM;AACX,cAAI,OAAO,OAAO,GAAG;AACrB,iBAAO,IAAI;AAEX,cAAI,CAAC,GAAG;AACN;AAAA,UACR;AAEM,cAAI,OAAO,eAAe;AACxB,mBAAO;AACP,gBAAI,MAAM,MAAM;AACd,qBAAO;AACP,qBAAO,SAAS;AAAA,YAC1B,OAAe;AACL,qBAAO;AAAA,YACjB;AAAA,UACA;AAEM,kBAAQ,OAAO,OAAK;AAAA,YAClB,KAAK,EAAE;AACL,qBAAO,QAAQ,EAAE;AACjB,kBAAI,MAAM,UAAU;AAClB;AAAA,cACZ;AACU,8BAAgB,QAAQ,CAAC;AACzB;AAAA,YAEF,KAAK,EAAE;AACL,8BAAgB,QAAQ,CAAC;AACzB;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,OAAO,WAAW,CAAC,OAAO,YAAY;AACxC,oBAAI,SAAS,IAAI;AACjB,uBAAO,KAAK,MAAM,OAAO,MAAM,KAAK;AAClC,sBAAI,OAAO,OAAO,GAAG;AACrB,sBAAI,KAAK,OAAO,eAAe;AAC7B,2BAAO;AACP,wBAAI,MAAM,MAAM;AACd,6BAAO;AACP,6BAAO,SAAS;AAAA,oBAClC,OAAuB;AACL,6BAAO;AAAA,oBACzB;AAAA,kBACA;AAAA,gBACA;AACY,uBAAO,YAAY,MAAM,UAAU,QAAQ,IAAI,CAAC;AAAA,cAC5D;AACU,kBAAI,MAAM,OAAO,EAAE,OAAO,WAAW,OAAO,cAAc,CAAC,OAAO,SAAS;AACzE,uBAAO,QAAQ,EAAE;AACjB,uBAAO,mBAAmB,OAAO;AAAA,cAC7C,OAAiB;AACL,oBAAI,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,WAAW,OAAO,aAAa;AAC9D,6BAAW,QAAQ,iCAAiC;AAAA,gBAClE;AACY,oBAAI,MAAM,KAAK;AACb,yBAAO,QAAQ,EAAE;AAAA,gBAC/B,OAAmB;AACL,yBAAO,YAAY;AAAA,gBACjC;AAAA,cACA;AACU;AAAA,YAEF,KAAK,EAAE;AAEL,kBAAI,MAAM,KAAK;AACb,uBAAO,QAAQ,EAAE;AAAA,cAC7B,OAAiB;AACL,uBAAO,UAAU;AAAA,cAC7B;AACU;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,MAAM,KAAK;AACb,uBAAO,QAAQ,EAAE;AAAA,cAC7B,OAAiB;AACL,uBAAO,UAAU,MAAM;AACvB,uBAAO,QAAQ,EAAE;AAAA,cAC7B;AACU;AAAA,YAEF,KAAK,EAAE;AAEL,kBAAI,MAAM,KAAK;AACb,uBAAO,QAAQ,EAAE;AACjB,uBAAO,WAAW;AAAA,cAC9B,WAAqB,aAAa,CAAC,EAAG;AAAA,uBAEjB,QAAQ,WAAW,CAAC,GAAG;AAChC,uBAAO,QAAQ,EAAE;AACjB,uBAAO,UAAU;AAAA,cAC7B,WAAqB,MAAM,KAAK;AACpB,uBAAO,QAAQ,EAAE;AACjB,uBAAO,UAAU;AAAA,cAC7B,WAAqB,MAAM,KAAK;AACpB,uBAAO,QAAQ,EAAE;AACjB,uBAAO,eAAe,OAAO,eAAe;AAAA,cACxD,OAAiB;AACL,2BAAW,QAAQ,aAAa;AAEhC,oBAAI,OAAO,mBAAmB,IAAI,OAAO,UAAU;AACjD,sBAAI,MAAM,OAAO,WAAW,OAAO;AACnC,sBAAI,IAAI,MAAM,GAAG,EAAE,KAAK,GAAG,IAAI;AAAA,gBAC7C;AACY,uBAAO,YAAY,MAAM;AACzB,uBAAO,QAAQ,EAAE;AAAA,cAC7B;AACU;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,OAAO,WAAW,MAAM,MAAM;AAChC,uBAAO,QAAQ,EAAE;AACjB,uBAAO,UAAU;AACjB,uBAAO,WAAW;AAClB;AAAA,cACZ;AAEU,kBAAI,OAAO,WAAW,OAAO,YAAY,QAAQ,OAAO,UAAU;AAChE,uBAAO,QAAQ,EAAE;AACjB,uBAAO,WAAW,OAAO,OAAO,WAAW;AAC3C,uBAAO,WAAW;AAAA,cAC9B,YAAsB,OAAO,WAAW,GAAG,YAAW,MAAO,OAAO;AACxD,yBAAS,QAAQ,aAAa;AAC9B,uBAAO,QAAQ,EAAE;AACjB,uBAAO,WAAW;AAClB,uBAAO,QAAQ;AAAA,cAC3B,YAAsB,OAAO,WAAW,GAAG,YAAW,MAAO,SAAS;AAC1D,uBAAO,QAAQ,EAAE;AACjB,oBAAI,OAAO,WAAW,OAAO,SAAS;AACpC;AAAA,oBAAW;AAAA,oBACT;AAAA,kBAA6C;AAAA,gBAC7D;AACY,uBAAO,UAAU;AACjB,uBAAO,WAAW;AAAA,cAC9B,WAAqB,MAAM,KAAK;AACpB,yBAAS,QAAQ,qBAAqB,OAAO,QAAQ;AACrD,uBAAO,WAAW;AAClB,uBAAO,QAAQ,EAAE;AAAA,cAC7B,WAAqB,QAAQ,CAAC,GAAG;AACrB,uBAAO,QAAQ,EAAE;AACjB,uBAAO,YAAY;AAAA,cAC/B,OAAiB;AACL,uBAAO,YAAY;AAAA,cAC/B;AACU;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,MAAM,OAAO,GAAG;AAClB,uBAAO,QAAQ,EAAE;AACjB,uBAAO,IAAI;AAAA,cACvB;AACU,qBAAO,YAAY;AACnB;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,MAAM,KAAK;AACb,uBAAO,QAAQ,EAAE;AACjB,yBAAS,QAAQ,aAAa,OAAO,OAAO;AAC5C,uBAAO,UAAU;AAAA,cAC7B,OAAiB;AACL,uBAAO,WAAW;AAClB,oBAAI,MAAM,KAAK;AACb,yBAAO,QAAQ,EAAE;AAAA,gBAC/B,WAAuB,QAAQ,CAAC,GAAG;AACrB,yBAAO,QAAQ,EAAE;AACjB,yBAAO,IAAI;AAAA,gBACzB;AAAA,cACA;AACU;AAAA,YAEF,KAAK,EAAE;AACL,qBAAO,WAAW;AAClB,kBAAI,MAAM,OAAO,GAAG;AAClB,uBAAO,IAAI;AACX,uBAAO,QAAQ,EAAE;AAAA,cAC7B;AACU;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,MAAM,KAAK;AACb,uBAAO,WAAW;AAClB,uBAAO,QAAQ,EAAE;AAAA,cAC7B,WAAqB,MAAM,KAAK;AACpB,uBAAO,QAAQ,EAAE;AACjB,uBAAO,mBAAmB,OAAO;AAAA,cAC7C,WAAqB,QAAQ,CAAC,GAAG;AACrB,uBAAO,WAAW;AAClB,uBAAO,QAAQ,EAAE;AACjB,uBAAO,IAAI;AAAA,cACvB,OAAiB;AACL,uBAAO,WAAW;AAAA,cAC9B;AACU;AAAA,YAEF,KAAK,EAAE;AACL,qBAAO,WAAW;AAClB,kBAAI,MAAM,OAAO,GAAG;AAClB,uBAAO,QAAQ,EAAE;AACjB,uBAAO,IAAI;AAAA,cACvB;AACU;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,MAAM,KAAK;AACb,uBAAO,QAAQ,EAAE;AAAA,cAC7B,OAAiB;AACL,uBAAO,WAAW;AAAA,cAC9B;AACU;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,MAAM,KAAK;AACb,uBAAO,QAAQ,EAAE;AACjB,uBAAO,UAAU,SAAS,OAAO,KAAK,OAAO,OAAO;AACpD,oBAAI,OAAO,SAAS;AAClB,2BAAS,QAAQ,aAAa,OAAO,OAAO;AAAA,gBAC1D;AACY,uBAAO,UAAU;AAAA,cAC7B,OAAiB;AACL,uBAAO,WAAW,MAAM;AACxB,uBAAO,QAAQ,EAAE;AAAA,cAC7B;AACU;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,MAAM,KAAK;AACb,2BAAW,QAAQ,mBAAmB;AAGtC,uBAAO,WAAW,OAAO;AACzB,uBAAO,QAAQ,EAAE;AAAA,cAC7B,WAAqB,OAAO,WAAW,OAAO,YAAY,MAAM;AACpD,uBAAO,QAAQ,EAAE;AAAA,cAC7B,OAAiB;AACL,uBAAO,QAAQ,EAAE;AAAA,cAC7B;AACU;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,MAAM,KAAK;AACb,uBAAO,QAAQ,EAAE;AAAA,cAC7B,OAAiB;AACL,uBAAO,SAAS;AAAA,cAC5B;AACU;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,MAAM,KAAK;AACb,uBAAO,QAAQ,EAAE;AAAA,cAC7B,OAAiB;AACL,uBAAO,SAAS,MAAM;AACtB,uBAAO,QAAQ,EAAE;AAAA,cAC7B;AACU;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,MAAM,KAAK;AACb,oBAAI,OAAO,OAAO;AAChB,2BAAS,QAAQ,WAAW,OAAO,KAAK;AAAA,gBACtD;AACY,yBAAS,QAAQ,cAAc;AAC/B,uBAAO,QAAQ;AACf,uBAAO,QAAQ,EAAE;AAAA,cAC7B,WAAqB,MAAM,KAAK;AACpB,uBAAO,SAAS;AAAA,cAC5B,OAAiB;AACL,uBAAO,SAAS,OAAO;AACvB,uBAAO,QAAQ,EAAE;AAAA,cAC7B;AACU;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,MAAM,KAAK;AACb,uBAAO,QAAQ,EAAE;AAAA,cAC7B,WAAqB,aAAa,CAAC,GAAG;AAC1B,uBAAO,QAAQ,EAAE;AAAA,cAC7B,OAAiB;AACL,uBAAO,gBAAgB;AAAA,cACnC;AACU;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,CAAC,OAAO,gBAAgB,aAAa,CAAC,GAAG;AAC3C;AAAA,cACZ,WAAqB,MAAM,KAAK;AACpB,uBAAO,QAAQ,EAAE;AAAA,cAC7B,OAAiB;AACL,uBAAO,gBAAgB;AAAA,cACnC;AACU;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,MAAM,KAAK;AACb,yBAAS,QAAQ,2BAA2B;AAAA,kBAC1C,MAAM,OAAO;AAAA,kBACb,MAAM,OAAO;AAAA,iBACd;AACD,uBAAO,eAAe,OAAO,eAAe;AAC5C,uBAAO,QAAQ,EAAE;AAAA,cAC7B,OAAiB;AACL,uBAAO,gBAAgB,MAAM;AAC7B,uBAAO,QAAQ,EAAE;AAAA,cAC7B;AACU;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,QAAQ,UAAU,CAAC,GAAG;AACxB,uBAAO,WAAW;AAAA,cAC9B,OAAiB;AACL,uBAAO,MAAM;AACb,oBAAI,MAAM,KAAK;AACb,0BAAQ,MAAM;AAAA,gBAC5B,WAAuB,MAAM,KAAK;AACpB,yBAAO,QAAQ,EAAE;AAAA,gBAC/B,OAAmB;AACL,sBAAI,CAAC,aAAa,CAAC,GAAG;AACpB,+BAAW,QAAQ,+BAA+B;AAAA,kBAClE;AACc,yBAAO,QAAQ,EAAE;AAAA,gBAC/B;AAAA,cACA;AACU;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,MAAM,KAAK;AACb,wBAAQ,QAAQ,IAAI;AACpB,yBAAS,MAAM;AAAA,cAC3B,OAAiB;AACL,2BAAW,QAAQ,gDAAgD;AACnE,uBAAO,QAAQ,EAAE;AAAA,cAC7B;AACU;AAAA,YAEF,KAAK,EAAE;AAEL,kBAAI,aAAa,CAAC,GAAG;AACnB;AAAA,cACZ,WAAqB,MAAM,KAAK;AACpB,wBAAQ,MAAM;AAAA,cAC1B,WAAqB,MAAM,KAAK;AACpB,uBAAO,QAAQ,EAAE;AAAA,cAC7B,WAAqB,QAAQ,WAAW,CAAC,GAAG;AAChC,uBAAO,aAAa;AACpB,uBAAO,cAAc;AACrB,uBAAO,QAAQ,EAAE;AAAA,cAC7B,OAAiB;AACL,2BAAW,QAAQ,wBAAwB;AAAA,cACvD;AACU;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,MAAM,KAAK;AACb,uBAAO,QAAQ,EAAE;AAAA,cAC7B,WAAqB,MAAM,KAAK;AACpB,2BAAW,QAAQ,yBAAyB;AAC5C,uBAAO,cAAc,OAAO;AAC5B,uBAAO,MAAM;AACb,wBAAQ,MAAM;AAAA,cAC1B,WAAqB,aAAa,CAAC,GAAG;AAC1B,uBAAO,QAAQ,EAAE;AAAA,cAC7B,WAAqB,QAAQ,UAAU,CAAC,GAAG;AAC/B,uBAAO,cAAc;AAAA,cACjC,OAAiB;AACL,2BAAW,QAAQ,wBAAwB;AAAA,cACvD;AACU;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,MAAM,KAAK;AACb,uBAAO,QAAQ,EAAE;AAAA,cAC7B,WAAqB,aAAa,CAAC,GAAG;AAC1B;AAAA,cACZ,OAAiB;AACL,2BAAW,QAAQ,yBAAyB;AAC5C,uBAAO,IAAI,WAAW,OAAO,UAAU,IAAI;AAC3C,uBAAO,cAAc;AACrB,yBAAS,QAAQ,eAAe;AAAA,kBAC9B,MAAM,OAAO;AAAA,kBACb,OAAO;AAAA,iBACR;AACD,uBAAO,aAAa;AACpB,oBAAI,MAAM,KAAK;AACb,0BAAQ,MAAM;AAAA,gBAC5B,WAAuB,QAAQ,WAAW,CAAC,GAAG;AAChC,yBAAO,aAAa;AACpB,yBAAO,QAAQ,EAAE;AAAA,gBAC/B,OAAmB;AACL,6BAAW,QAAQ,wBAAwB;AAC3C,yBAAO,QAAQ,EAAE;AAAA,gBAC/B;AAAA,cACA;AACU;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,aAAa,CAAC,GAAG;AACnB;AAAA,cACZ,WAAqB,QAAQ,CAAC,GAAG;AACrB,uBAAO,IAAI;AACX,uBAAO,QAAQ,EAAE;AAAA,cAC7B,OAAiB;AACL,oBAAI,CAAC,OAAO,IAAI,yBAAyB;AACvC,wBAAM,QAAQ,0BAA0B;AAAA,gBACtD;AACY,uBAAO,QAAQ,EAAE;AACjB,uBAAO,cAAc;AAAA,cACjC;AACU;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,MAAM,OAAO,GAAG;AAClB,oBAAI,MAAM,KAAK;AACb,yBAAO,QAAQ,EAAE;AAAA,gBAC/B,OAAmB;AACL,yBAAO,eAAe;AAAA,gBACpC;AACY;AAAA,cACZ;AACU,qBAAO,MAAM;AACb,qBAAO,IAAI;AACX,qBAAO,QAAQ,EAAE;AACjB;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,aAAa,CAAC,GAAG;AACnB,uBAAO,QAAQ,EAAE;AAAA,cAC7B,WAAqB,MAAM,KAAK;AACpB,wBAAQ,MAAM;AAAA,cAC1B,WAAqB,MAAM,KAAK;AACpB,uBAAO,QAAQ,EAAE;AAAA,cAC7B,WAAqB,QAAQ,WAAW,CAAC,GAAG;AAChC,2BAAW,QAAQ,kCAAkC;AACrD,uBAAO,aAAa;AACpB,uBAAO,cAAc;AACrB,uBAAO,QAAQ,EAAE;AAAA,cAC7B,OAAiB;AACL,2BAAW,QAAQ,wBAAwB;AAAA,cACvD;AACU;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,CAAC,YAAY,CAAC,GAAG;AACnB,oBAAI,MAAM,KAAK;AACb,yBAAO,QAAQ,EAAE;AAAA,gBAC/B,OAAmB;AACL,yBAAO,eAAe;AAAA,gBACpC;AACY;AAAA,cACZ;AACU,qBAAO,MAAM;AACb,kBAAI,MAAM,KAAK;AACb,wBAAQ,MAAM;AAAA,cAC1B,OAAiB;AACL,uBAAO,QAAQ,EAAE;AAAA,cAC7B;AACU;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,CAAC,OAAO,SAAS;AACnB,oBAAI,aAAa,CAAC,GAAG;AACnB;AAAA,gBACd,WAAuB,SAAS,WAAW,CAAC,GAAG;AACjC,sBAAI,OAAO,QAAQ;AACjB,2BAAO,UAAU,OAAO;AACxB,2BAAO,QAAQ,EAAE;AAAA,kBACjC,OAAqB;AACL,+BAAW,QAAQ,iCAAiC;AAAA,kBACpE;AAAA,gBACA,OAAmB;AACL,yBAAO,UAAU;AAAA,gBAC/B;AAAA,cACA,WAAqB,MAAM,KAAK;AACpB,yBAAS,MAAM;AAAA,cAC3B,WAAqB,QAAQ,UAAU,CAAC,GAAG;AAC/B,uBAAO,WAAW;AAAA,cAC9B,WAAqB,OAAO,QAAQ;AACxB,uBAAO,UAAU,OAAO,OAAO;AAC/B,uBAAO,UAAU;AACjB,uBAAO,QAAQ,EAAE;AAAA,cAC7B,OAAiB;AACL,oBAAI,CAAC,aAAa,CAAC,GAAG;AACpB,6BAAW,QAAQ,gCAAgC;AAAA,gBACjE;AACY,uBAAO,QAAQ,EAAE;AAAA,cAC7B;AACU;AAAA,YAEF,KAAK,EAAE;AACL,kBAAI,aAAa,CAAC,GAAG;AACnB;AAAA,cACZ;AACU,kBAAI,MAAM,KAAK;AACb,yBAAS,MAAM;AAAA,cAC3B,OAAiB;AACL,2BAAW,QAAQ,mCAAmC;AAAA,cAClE;AACU;AAAA,YAEF,KAAK,EAAE;AAAA,YACP,KAAK,EAAE;AAAA,YACP,KAAK,EAAE;AACL,kBAAI;AACJ,kBAAI;AACJ,sBAAQ,OAAO,OAAK;AAAA,gBAClB,KAAK,EAAE;AACL,gCAAc,EAAE;AAChB,2BAAS;AACT;AAAA,gBAEF,KAAK,EAAE;AACL,gCAAc,EAAE;AAChB,2BAAS;AACT;AAAA,gBAEF,KAAK,EAAE;AACL,gCAAc,EAAE;AAChB,2BAAS;AACT;AAAA,cACd;AAEU,kBAAI,MAAM,KAAK;AACb,oBAAI,eAAe,YAAY,MAAM;AACrC,oBAAI,OAAO,IAAI,oBAAoB,CAAC,OAAO,OAAOH,KAAI,YAAY,EAAE,SAAS,YAAY,GAAG;AAC1F,yBAAO,SAAS;AAChB,yBAAO,QAAQ;AACf,yBAAO,MAAM,YAAY;AAAA,gBACvC,OAAmB;AACL,yBAAO,MAAM,KAAK;AAClB,yBAAO,SAAS;AAChB,yBAAO,QAAQ;AAAA,gBAC7B;AAAA,cACA,WAAqB,QAAQ,OAAO,OAAO,SAAS,aAAa,aAAa,CAAC,GAAG;AACtE,uBAAO,UAAU;AAAA,cAC7B,OAAiB;AACL,2BAAW,QAAQ,kCAAkC;AACrD,uBAAO,MAAM,KAAK,MAAM,OAAO,SAAS;AACxC,uBAAO,SAAS;AAChB,uBAAO,QAAQ;AAAA,cAC3B;AAEU;AAAA,YAEF,SAAoC;AAClC,oBAAM,IAAI,MAAM,QAAQ,oBAAoB,OAAO,KAAK;AAAA,YAClE;AAAA,UACA;AAAA,QACA;AAEI,YAAI,OAAO,YAAY,OAAO,qBAAqB;AACjD,4BAAkB,MAAM;AAAA,QAC9B;AACI,eAAO;AAAA,MACX;AAIE,UAAI,CAAC,OAAO,eAAe;AACzB,SAAC,WAAY;AACX,cAAI,qBAAqB,OAAO;AAChC,cAAI,QAAQ,KAAK;AACjB,cAAI,gBAAgB,WAAY;AAC9B,gBAAI,WAAW;AACf,gBAAI,YAAY,CAAA;AAChB,gBAAI;AACJ,gBAAI;AACJ,gBAAII,SAAQ;AACZ,gBAAI,SAAS,UAAU;AACvB,gBAAI,CAAC,QAAQ;AACX,qBAAO;AAAA,YACjB;AACQ,gBAAI,SAAS;AACb,mBAAO,EAAEA,SAAQ,QAAQ;AACvB,kBAAI,YAAY,OAAO,UAAUA,MAAK,CAAC;AACvC,kBACE,CAAC,SAAS,SAAS;AAAA,cACnB,YAAY;AAAA,cACZ,YAAY;AAAA,cACZ,MAAM,SAAS,MAAM,WACrB;AACA,sBAAM,WAAW,yBAAyB,SAAS;AAAA,cAC/D;AACU,kBAAI,aAAa,OAAQ;AACvB,0BAAU,KAAK,SAAS;AAAA,cACpC,OAAiB;AAEL,6BAAa;AACb,iCAAiB,aAAa,MAAM;AACpC,+BAAgB,YAAY,OAAS;AACrC,0BAAU,KAAK,eAAe,YAAY;AAAA,cACtD;AACU,kBAAIA,SAAQ,MAAM,UAAU,UAAU,SAAS,UAAU;AACvD,0BAAU,mBAAmB,MAAM,MAAM,SAAS;AAClD,0BAAU,SAAS;AAAA,cAC/B;AAAA,YACA;AACQ,mBAAO;AAAA,UACf;AAEM,cAAI,OAAO,gBAAgB;AACzB,mBAAO,eAAe,QAAQ,iBAAiB;AAAA,cAC7C,OAAO;AAAA,cACP,cAAc;AAAA,cACd,UAAU;AAAA,aACX;AAAA,UACT,OAAa;AACL,mBAAO,gBAAgB;AAAA,UAC/B;AAAA,QACA,GAAK;AAAA,MACL;AAAA,IACA,GAAoDC,SAAO;AAAA;;;;;;;;AC5jD3D,gBAAiB;AAAA,IAEf,SAAS,SAAS,OAAO;AACvB,UAAI,MAAM,SAAS;AACjB,eAAO,MAAM,QAAQ,KAAK;AAAA,MAChC;AAEI,aAAO,OAAO,UAAU,SAAS,KAAM,KAAK,MAAO;AAAA,IACvD;AAAA;;;;;;;;ACRA,MAAI,UAAUC,mBAAA,EAA0B;AAExC,kBAAiB;AAAA,IAEf,aAAa,SAAU,SAAS;AAC9B,UAAI,KAAK,OAAO;AAChB,WAAK,OAAO,SAAS;AACnB,YAAI,QAAQ,eAAe,GAAG,GAAG;AAC/B,eAAK,GAAG,IAAI,QAAQ,GAAG;AAAA,QAC/B;AAAA,MACA;AACI,aAAO;AAAA,IACX;AAAA,IAEE,kBAAkB,SAAU,MAAM,SAAS;AACzC,UAAI,EAAE,QAAQ,YAAY,OAAO,QAAQ,IAAI,MAAM,WAAW;AAC5D,gBAAQ,IAAI,IAAI;AAAA,MACtB;AAAA,IACA;AAAA,IAEE,oBAAoB,SAAU,SAAS;AACrC,UAAI,EAAE,YAAY,YAAa,OAAO,QAAQ,WAAW,YAAY,OAAO,QAAQ,WAAW,UAAW;AACxG,gBAAQ,SAAS;AAAA,MACvB;AAAA,IACA;AAAA,IAEE,yBAAyB,SAAU,SAAS;AAC1C,UAAI,EAAE,iBAAiB,YAAa,OAAO,QAAQ,gBAAgB,aAAa,CAAC,QAAQ,QAAQ,WAAW,GAAI;AAC9G,gBAAQ,cAAc;AAAA,MAC5B;AAAA,IACA;AAAA,IAEE,iBAAiB,SAAU,KAAK,SAAS;AACvC,UAAI,EAAE,MAAM,SAAS,YAAY,OAAO,QAAQ,MAAM,KAAK,MAAM,UAAU;AACzE,gBAAQ,MAAM,KAAK,IAAI,QAAQ,UAAU,MAAM,MAAM;AAAA,MAC3D;AAAA,IACA;AAAA,IAEE,eAAe,SAAU,KAAK,SAAS;AACrC,aAAO,MAAM,QAAQ;AAAA,IACzB;AAAA;;;;;;;;ACxCA,MAAIN,OAAMM;AAEV,MAAI,SAASJ;AACb,MAAI,UAAUK,mBAAA,EAA0B;AAExC,MAAI;AAEJ,MAAI;AAEJ,WAAS,gBAAgB,aAAa;AACpC,cAAU,OAAO,YAAY,WAAW;AACxC,WAAO,iBAAiB,qBAAqB,OAAO;AACpD,WAAO,iBAAiB,qBAAqB,OAAO;AACpD,WAAO,iBAAiB,oBAAoB,OAAO;AACnD,WAAO,iBAAiB,cAAc,OAAO;AAC7C,WAAO,iBAAiB,iBAAiB,OAAO;AAChD,WAAO,iBAAiB,eAAe,OAAO;AAC9C,WAAO,iBAAiB,iBAAiB,OAAO;AAChD,WAAO,iBAAiB,WAAW,OAAO;AAC1C,WAAO,iBAAiB,kBAAkB,OAAO;AACjD,WAAO,iBAAiB,aAAa,OAAO;AAC5C,WAAO,iBAAiB,QAAQ,OAAO;AACvC,WAAO,iBAAiB,cAAc,OAAO;AAC7C,WAAO,iBAAiB,wBAAwB,OAAO;AACvD,WAAO,iBAAiB,YAAY,OAAO;AAC3C,WAAO,iBAAiB,4BAA4B,OAAO;AAC3D,WAAO,iBAAiB,gCAAgC,OAAO;AAC/D,WAAO,wBAAwB,OAAO;AACtC,WAAO,gBAAgB,eAAe,OAAO;AAC7C,WAAO,gBAAgB,eAAe,OAAO;AAC7C,WAAO,gBAAgB,cAAc,OAAO;AAC5C,WAAO,gBAAgB,QAAQ,OAAO;AACtC,WAAO,gBAAgB,WAAW,OAAO;AACzC,WAAO,gBAAgB,SAAS,OAAO;AACvC,WAAO,gBAAgB,WAAW,OAAO;AACzC,WAAO,gBAAgB,QAAQ,OAAO;AACtC,WAAO,gBAAgB,QAAQ,OAAO;AACtC,WAAO,gBAAgB,YAAY,OAAO;AAC1C,WAAO,gBAAgB,UAAU,OAAO;AACxC,WAAO,cAAc,WAAW,OAAO;AACvC,WAAO,cAAc,eAAe,OAAO;AAC3C,WAAO,cAAc,SAAS,OAAO;AACrC,WAAO,cAAc,WAAW,OAAO;AACvC,WAAO,cAAc,QAAQ,OAAO;AACpC,WAAO,cAAc,mBAAmB,OAAO;AAC/C,WAAO,cAAc,eAAe,OAAO;AAC3C,WAAO,cAAc,iBAAiB,OAAO;AAC7C,WAAO,cAAc,kBAAkB,OAAO;AAC9C,WAAO,cAAc,cAAc,OAAO;AAC1C,WAAO;AAAA,EACT;AAEA,WAAS,WAAW,OAAO;AACzB,QAAI,SAAS,OAAO,KAAK;AACzB,QAAI,CAAC,MAAM,MAAM,GAAG;AAClB,aAAO;AAAA,IACX;AACE,QAAI,SAAS,MAAM;AACnB,QAAI,WAAW,QAAQ;AACrB,aAAO;AAAA,IACX,WAAa,WAAW,SAAS;AAC7B,aAAO;AAAA,IACX;AACE,WAAO;AAAA,EACT;AAEA,WAAS,SAAS,MAAM,OAAO;AAC7B,QAAI;AACJ,QAAI,QAAQ,SAAS;AACnB,UACE,CAAC,eAAe,QAAQ,OAAO,KAAK,CAAC,MACpC,QAAQ,QAAQ,WAAW,IAAI,QAAQ,YAAY,QAAQ,QAAQ,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,cACpG;AACA,uBAAe,QAAQ,OAAO,KAAK,CAAC,IAAI,CAAA;AAAA,MAC9C;AACI,UAAI,eAAe,QAAQ,OAAO,KAAK,CAAC,KAAK,CAAC,QAAQ,eAAe,QAAQ,OAAO,KAAK,CAAC,CAAC,GAAG;AAC5F,uBAAe,QAAQ,OAAO,KAAK,CAAC,IAAI,CAAC,eAAe,QAAQ,OAAO,KAAK,CAAC,CAAC;AAAA,MACpF;AACI,UAAI,OAAO,QAAQ,WAAW,OAAO,UAAU,UAAU;AACvD,gBAAQ,QAAQ,OAAO,IAAI,EAAE,OAAO,cAAc;AAAA,MACxD;AACI,UAAI,SAAS,kBAAkB,mBAAmB,WAAW,uBAAuB,UAAU;AAC5F,aAAK,OAAO,OAAO;AACjB,cAAI,MAAM,eAAe,GAAG,GAAG;AAC7B,gBAAI,mBAAmB,SAAS;AAC9B,oBAAM,GAAG,IAAI,QAAQ,cAAc,MAAM,GAAG,GAAG,KAAK,cAAc;AAAA,YAC9E,OAAiB;AACL,kBAAI,OAAO,MAAM,GAAG;AACpB,qBAAO,MAAM,GAAG;AAChB,oBAAM,QAAQ,kBAAkB,KAAK,MAAM,cAAc,CAAC,IAAI;AAAA,YAC1E;AAAA,UACA;AAAA,QACA;AAAA,MACA;AACI,UAAI,QAAQ,eAAe,QAAQ,OAAO,KAAK,CAAC,CAAC,GAAG;AAClD,uBAAe,QAAQ,OAAO,KAAK,CAAC,EAAE,KAAK,KAAK;AAAA,MACtD,OAAW;AACL,uBAAe,QAAQ,OAAO,KAAK,CAAC,IAAI;AAAA,MAC9C;AAAA,IACA,OAAS;AACL,UAAI,CAAC,eAAe,QAAQ,WAAW,GAAG;AACxC,uBAAe,QAAQ,WAAW,IAAI;MAC5C;AACI,UAAI,UAAU,CAAA;AACd,cAAQ,QAAQ,OAAO,IAAI;AAC3B,UAAI,SAAS,eAAe;AAC1B,aAAK,OAAO,OAAO;AACjB,cAAI,MAAM,eAAe,GAAG,GAAG;AAC7B;AAAA,UACV;AAAA,QACA;AACM,gBAAQ,QAAQ,OAAO,IAAI,uBAAuB,UAAU,QAAQ,kBAAkB,KAAK,OAAO,cAAc,IAAI;AACpH,YAAI,QAAQ,0BAA0B;AACpC,kBAAQ,QAAQ,aAAa,IAAI,MAAM,GAAG,EAAE,QAAQ,aAAa;AACjE,cAAI,mBAAmB,SAAS;AAC9B,oBAAQ,QAAQ,aAAa,IAAI,QAAQ,cAAc,QAAQ,QAAQ,aAAa,GAAG,KAAK,cAAc;AAAA,UACpH;AAAA,QACA,OAAa;AACL,cAAI,mBAAmB,SAAS;AAC9B,kBAAM,GAAG,IAAI,QAAQ,cAAc,MAAM,GAAG,GAAG,KAAK,cAAc;AAAA,UAC5E;AACQ,kBAAQ,QAAQ,cAAc,IAAI,MAAM,GAAG;AAAA,QACnD;AAAA,MACA,OAAW;AACL,YAAI,OAAO,QAAQ,SAAS;AAC1B,kBAAQ,QAAQ,OAAO,IAAI,EAAE,OAAO,cAAc;AAAA,QAC1D;AACM,gBAAQ,QAAQ,OAAO,KAAK,CAAC,IAAI;AAAA,MACvC;AACI,UAAI,QAAQ,WAAW;AACrB,gBAAQ,QAAQ,SAAS,IAAI;AAAA,MACnC;AACI,qBAAe,QAAQ,WAAW,EAAE,KAAK,OAAO;AAAA,IACpD;AAAA,EACA;AAEA,WAAS,qBAAqB,YAAY;AACxC,QAAI,kBAAkB,WAAW,YAAY;AAC3C,mBAAa,QAAQ,aAAa,YAAY,cAAc;AAAA,IAChE;AACE,SAAK,QAAQ,QAAQ,sBAAsB,WAAW,qBAAqB,WAAW,QAAQ,yBAAyB,YAAY;AACjI,UAAI;AACJ,WAAK,OAAO,YAAY;AACtB,YAAI,WAAW,eAAe,GAAG,GAAG;AAClC,cAAI,QAAQ,KAAM,YAAW,GAAG,IAAI,WAAW,GAAG,EAAE;AACpD,cAAI,QAAQ,sBAAsB;AAChC,uBAAW,GAAG,IAAI,WAAW,WAAW,GAAG,CAAC;AAAA,UACtD;AACQ,cAAI,sBAAsB,QAAS,YAAW,GAAG,IAAI,QAAQ,iBAAiB,WAAW,GAAG,GAAG,KAAK,cAAc;AAClH,cAAI,qBAAqB,SAAS;AAChC,gBAAI,OAAO,WAAW,GAAG;AACzB,mBAAO,WAAW,GAAG;AACrB,uBAAW,QAAQ,gBAAgB,KAAK,WAAW,GAAG,GAAG,cAAc,CAAC,IAAI;AAAA,UACtF;AAAA,QACA;AAAA,MACA;AAAA,IACA;AACE,WAAO;AAAA,EACT;AAEA,WAAS,cAAc,aAAa;AAClC,QAAI,aAAa,CAAA;AACjB,QAAI,YAAY,SAAS,YAAY,KAAK,YAAW,MAAO,SAAS,QAAQ,2BAA2B;AACtG,UAAI,cAAc;AAClB,UAAI;AACJ,cAAQ,QAAQ,YAAY,KAAK,YAAY,IAAI,OAAO,MAAM;AAC5D,mBAAW,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,MAAM,CAAC,KAAK,MAAM,CAAC;AAAA,MAC5D;AACI,mBAAa,qBAAqB,UAAU;AAAA,IAChD;AACE,QAAI,YAAY,KAAK,YAAW,MAAO,OAAO;AAC5C,UAAI,QAAQ,mBAAmB;AAC7B;AAAA,MACN;AACI,qBAAe,QAAQ,cAAc,IAAI;AACzC,UAAI,OAAO,KAAK,UAAU,EAAE,QAAQ;AAClC,uBAAe,QAAQ,cAAc,EAAE,QAAQ,aAAa,IAAI;AAAA,MACtE;AACI,UAAI,QAAQ,WAAW;AACrB,uBAAe,QAAQ,cAAc,EAAE,QAAQ,SAAS,IAAI;AAAA,MAClE;AAAA,IACA,OAAS;AACL,UAAI,QAAQ,mBAAmB;AAC7B;AAAA,MACN;AACI,UAAI,QAAQ,MAAM;AAChB,oBAAY,OAAO,YAAY,KAAK,KAAI;AAAA,MAC9C;AACI,UAAI,QAAQ,CAAA;AACZ,UAAI,QAAQ,4BAA4B,OAAO,KAAK,UAAU,EAAE,QAAQ;AACtE,cAAM,YAAY,IAAI,IAAI;AAC1B,cAAM,YAAY,IAAI,EAAE,QAAQ,aAAa,IAAI;AAAA,MACvD,OAAW;AACL,cAAM,YAAY,IAAI,IAAI,YAAY;AAAA,MAC5C;AACI,eAAS,eAAe,KAAK;AAAA,IACjC;AAAA,EACA;AAEA,WAAS,eAAe,MAAM,YAAY;AACxC,QAAI;AACJ,QAAI,OAAO,SAAS,UAAU;AAC5B,mBAAa,KAAK;AAClB,aAAO,KAAK;AAAA,IAChB;AACE,iBAAa,qBAAqB,UAAU;AAC5C,QAAI,mBAAmB,SAAS;AAC9B,aAAO,QAAQ,cAAc,MAAM,cAAc;AAAA,IACrD;AACE,QAAI,QAAQ,SAAS;AACnB,gBAAU,CAAA;AACV,UAAI,CAAC,QAAQ,oBAAoB,cAAc,OAAO,KAAK,UAAU,EAAE,QAAQ;AAC7E,gBAAQ,QAAQ,aAAa,IAAI;AACjC,YAAI;AACJ,aAAK,OAAO,YAAY;AACtB,cAAI,WAAW,eAAe,GAAG,GAAG;AAClC,oBAAQ,QAAQ,aAAa,EAAE,GAAG,IAAI,WAAW,GAAG;AAAA,UAC9D;AAAA,QACA;AAAA,MACA;AACI,UACE,EAAE,QAAQ,oBACT,QAAQ,QAAQ,WAAW,IAAI,QAAQ,YAAY,QAAQ,IAAI,MAAM,KAAK,QAAQ,cACnF;AACA,uBAAe,IAAI,IAAI;MAC7B;AACI,UAAI,eAAe,IAAI,KAAK,CAAC,QAAQ,eAAe,IAAI,CAAC,GAAG;AAC1D,uBAAe,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC;AAAA,MAClD;AACI,UAAI,QAAQ,eAAe,IAAI,CAAC,GAAG;AACjC,uBAAe,IAAI,EAAE,KAAK,OAAO;AAAA,MACvC,OAAW;AACL,uBAAe,IAAI,IAAI;AAAA,MAC7B;AAAA,IACA,OAAS;AACL,UAAI,CAAC,eAAe,QAAQ,WAAW,GAAG;AACxC,uBAAe,QAAQ,WAAW,IAAI;MAC5C;AACI,gBAAU,CAAA;AACV,cAAQ,QAAQ,OAAO,IAAI;AAC3B,cAAQ,QAAQ,OAAO,IAAI;AAC3B,UAAI,CAAC,QAAQ,oBAAoB,cAAc,OAAO,KAAK,UAAU,EAAE,QAAQ;AAC7E,gBAAQ,QAAQ,aAAa,IAAI;AAAA,MACvC;AACI,UAAI,QAAQ,gBAAgB;AAC1B,gBAAQ,QAAQ,WAAW,IAAI;MACrC;AACI,qBAAe,QAAQ,WAAW,EAAE,KAAK,OAAO;AAAA,IACpD;AACE,YAAQ,QAAQ,SAAS,IAAI;AAC7B,qBAAiB;AAAA,EACnB;AAEA,WAAS,OAAO,MAAM;AACpB,QAAI,QAAQ,YAAY;AACtB;AAAA,IACJ;AACE,QAAI,CAAC,KAAK,KAAI,KAAM,CAAC,QAAQ,8BAA8B;AACzD;AAAA,IACJ;AACE,QAAI,QAAQ,MAAM;AAChB,aAAO,KAAK;IAChB;AACE,QAAI,QAAQ,YAAY;AACtB,aAAO,WAAW,IAAI;AAAA,IAC1B;AACE,QAAI,QAAQ,UAAU;AACpB,aAAO,KAAK,QAAQ,MAAM,OAAO,EAAE,QAAQ,MAAM,MAAM,EAAE,QAAQ,MAAM,MAAM;AAAA,IACjF;AACE,aAAS,QAAQ,IAAI;AAAA,EACvB;AAEA,WAAS,UAAU,SAAS;AAC1B,QAAI,QAAQ,eAAe;AACzB;AAAA,IACJ;AACE,QAAI,QAAQ,MAAM;AAChB,gBAAU,QAAQ;IACtB;AACE,aAAS,WAAW,OAAO;AAAA,EAC7B;AAEA,WAAS,aAAa,MAAM;AAC1B,QAAI,gBAAgB,eAAe,QAAQ,SAAS;AACpD,QAAI,CAAC,QAAQ,WAAW;AACtB,aAAO,eAAe,QAAQ,SAAS;AAAA,IAC3C;AACE,qBAAiB;AAAA,EACnB;AAEA,WAAS,QAAQ,OAAO;AACtB,QAAI,QAAQ,aAAa;AACvB;AAAA,IACJ;AACE,QAAI,QAAQ,MAAM;AAChB,cAAQ,MAAM;IAClB;AACE,aAAS,SAAS,KAAK;AAAA,EACzB;AAEA,WAAS,UAAU,SAAS;AAC1B,QAAI,QAAQ,eAAe;AACzB;AAAA,IACJ;AACE,cAAU,QAAQ,QAAQ,MAAM,EAAE;AAClC,QAAI,QAAQ,MAAM;AAChB,gBAAU,QAAQ;IACtB;AACE,aAAS,WAAW,OAAO;AAAA,EAC7B;AAEA,WAAS,QAAQ,OAAO;AACtB,UAAM,OAAO;AAAA,EACf;AAEA,WAAiB,SAAU,KAAK,aAAa;AAE3C,QAAI,SAAwBP,KAAI,OAAO,MAAM,CAAA,CAAE;AAC/C,QAAI,SAAS,CAAA;AACb,qBAAiB;AAEjB,cAAU,gBAAgB,WAAW;AAEnB;AAChB,aAAO,MAAM,EAAC,gBAAgB,KAAI;AAClC,aAAO,YAAY;AACnB,aAAO,SAAS;AAChB,aAAO,YAAY;AACnB,aAAO,aAAa;AACpB,aAAO,UAAU;AACjB,aAAO,UAAU;AACjB,aAAO,YAAY;AACnB,aAAO,0BAA0B;AAAA,IACrC;AAWoB;AAChB,aAAO,MAAM,GAAG,EAAE,MAAK;AAAA,IAC3B;AAME,QAAI,OAAO,QAAQ,WAAW,GAAG;AAC/B,UAAI,OAAO,OAAO,QAAQ,WAAW;AACrC,aAAO,OAAO,QAAQ,WAAW;AACjC,aAAO,QAAQ,WAAW,IAAI;AAC9B,aAAO,OAAO;AAAA,IAClB;AAEE,WAAO;AAAA,EAET;;;;;;;;ACzWA,MAAI,SAASM;AACb,MAAIE,UAASN;AAEb,WAAS,gBAAiB,aAAa;AACrC,QAAI,UAAU,OAAO,YAAY,WAAW;AAC5C,WAAO,mBAAmB,OAAO;AACjC,WAAO;AAAA,EACT;AAEA,aAAiB,SAAS,KAAK,aAAa;AAC1C,QAAI,SAAS,IAAI,MAAM;AACvB,cAAU,gBAAgB,WAAW;AACrC,SAAKM,QAAO,KAAK,OAAO;AACxB,gBAAY,aAAa,WAAW,QAAQ,UAAU,YAAY;AAElE,QAAI,eAAe,WAAW,QAAQ,WAAW;AAC/C,aAAO,KAAK,UAAU,IAAI,SAAU,GAAG,GAAG;AAAE,eAAO,MAAM,YAAW,MAAM;AAAA,MAAE,GAAI,QAAQ,MAAM;AAAA,IAClG,OAAS;AACL,aAAO,KAAK,UAAU,IAAI,MAAM,QAAQ,MAAM;AAAA,IAClD;AACE,WAAO,KAAK,QAAQ,WAAW,SAAS,EAAE,QAAQ,WAAW,SAAS;AAAA,EACxE;;;;;;;;ACrBA,MAAI,SAASF,qBAAA;AACb,MAAI,UAAUJ,mBAAA,EAA0B;AAExC,MAAI,gBAAgB;AAEpB,WAAS,gBAAgB,aAAa;AACpC,QAAI,UAAU,OAAO,YAAY,WAAW;AAC5C,WAAO,iBAAiB,qBAAqB,OAAO;AACpD,WAAO,iBAAiB,qBAAqB,OAAO;AACpD,WAAO,iBAAiB,oBAAoB,OAAO;AACnD,WAAO,iBAAiB,cAAc,OAAO;AAC7C,WAAO,iBAAiB,iBAAiB,OAAO;AAChD,WAAO,iBAAiB,eAAe,OAAO;AAC9C,WAAO,iBAAiB,iBAAiB,OAAO;AAChD,WAAO,iBAAiB,WAAW,OAAO;AAC1C,WAAO,iBAAiB,cAAc,OAAO;AAC7C,WAAO,iBAAiB,eAAe,OAAO;AAC9C,WAAO,iBAAiB,oBAAoB,OAAO;AACnD,WAAO,iBAAiB,qBAAqB,OAAO;AACpD,WAAO,iBAAiB,uBAAuB,OAAO;AACtD,WAAO,iBAAiB,+BAA+B,OAAO;AAC9D,WAAO,mBAAmB,OAAO;AACjC,QAAI,OAAO,QAAQ,WAAW,UAAU;AACtC,cAAQ,SAAS,MAAM,QAAQ,SAAS,CAAC,EAAE,KAAK,GAAG;AAAA,IACvD;AACE,WAAO,gBAAgB,eAAe,OAAO;AAC7C,WAAO,gBAAgB,eAAe,OAAO;AAC7C,WAAO,gBAAgB,cAAc,OAAO;AAC5C,WAAO,gBAAgB,QAAQ,OAAO;AACtC,WAAO,gBAAgB,WAAW,OAAO;AACzC,WAAO,gBAAgB,SAAS,OAAO;AACvC,WAAO,gBAAgB,WAAW,OAAO;AACzC,WAAO,gBAAgB,QAAQ,OAAO;AACtC,WAAO,gBAAgB,QAAQ,OAAO;AACtC,WAAO,gBAAgB,YAAY,OAAO;AAC1C,WAAO,cAAc,WAAW,OAAO;AACvC,WAAO,cAAc,eAAe,OAAO;AAC3C,WAAO,cAAc,SAAS,OAAO;AACrC,WAAO,cAAc,WAAW,OAAO;AACvC,WAAO,cAAc,QAAQ,OAAO;AACpC,WAAO,cAAc,mBAAmB,OAAO;AAC/C,WAAO,cAAc,eAAe,OAAO;AAC3C,WAAO,cAAc,iBAAiB,OAAO;AAC7C,WAAO,cAAc,kBAAkB,OAAO;AAC9C,WAAO,cAAc,cAAc,OAAO;AAC1C,WAAO,cAAc,uBAAuB,OAAO;AACnD,WAAO;AAAA,EACT;AAEA,WAAS,iBAAiB,SAAS,OAAO,WAAW;AACnD,YAAQ,CAAC,aAAa,QAAQ,SAAS,OAAO,MAAM,MAAM,QAAQ,CAAC,EAAE,KAAK,QAAQ,MAAM;AAAA,EAC1F;AAEA,WAAS,gBAAgB,YAAY,SAAS,OAAO;AACnD,QAAI,QAAQ,kBAAkB;AAC5B,aAAO;AAAA,IACX;AACE,QAAI,kBAAkB,SAAS;AAC7B,mBAAa,QAAQ,aAAa,YAAY,oBAAoB,cAAc;AAAA,IACpF;AACE,QAAI,KAAK,MAAM,UAAU,OAAO,SAAS,CAAA;AACzC,SAAK,OAAO,YAAY;AACtB,UAAI,WAAW,eAAe,GAAG,KAAK,WAAW,GAAG,MAAM,QAAQ,WAAW,GAAG,MAAM,QAAW;AAC/F,gBAAQ,QAAQ,+BAA+B,OAAO,WAAW,GAAG,MAAM,WAAW,KAAK;AAC1F,eAAO,KAAK,WAAW,GAAG;AAC1B,eAAO,KAAK,QAAQ,MAAM,QAAQ;AAClC,mBAAW,qBAAqB,UAAU,QAAQ,gBAAgB,KAAK,MAAM,oBAAoB,cAAc,IAAI;AACnH,eAAO,KAAM,QAAQ,UAAU,QAAQ,mBAAkB,iBAAiB,SAAS,QAAM,GAAG,KAAK,IAAI,GAAG;AACxG,eAAO,KAAK,WAAW,MAAM,SAAS,sBAAsB,UAAU,QAAQ,iBAAiB,MAAM,KAAK,oBAAoB,cAAc,IAAI,QAAQ,KAAK;AAAA,MACnK;AAAA,IACA;AACE,QAAI,cAAc,OAAO,KAAK,UAAU,EAAE,UAAU,QAAQ,UAAU,QAAQ,kBAAkB;AAC9F,aAAO,KAAK,iBAAiB,SAAS,OAAO,KAAK,CAAC;AAAA,IACvD;AACE,WAAO,OAAO,KAAK,EAAE;AAAA,EACvB;AAEA,WAAS,iBAAiB,aAAa,SAAS,OAAO;AACrD,qBAAiB;AACjB,yBAAqB;AACrB,WAAO,QAAQ,oBAAoB,KAAM,UAAe,gBAAgB,YAAY,QAAQ,aAAa,GAAG,SAAS,KAAK,IAAI;AAAA,EAChI;AAEA,WAAS,iBAAiB,aAAa,SAAS,OAAO;AACrD,QAAI,QAAQ,mBAAmB;AAC7B,aAAO;AAAA,IACX;AACE,QAAI;AACJ,SAAK,OAAO,aAAa;AACvB,UAAI,YAAY,eAAe,GAAG,GAAG;AACnC;AAAA,MACN;AAAA,IACA;AACE,QAAI,kBAAkB,uBAAuB,UAAU,QAAQ,kBAAkB,KAAK,YAAY,GAAG,GAAG,oBAAoB,cAAc,IAAI;AAC9I,QAAI,OAAO,YAAY,GAAG,MAAM,UAAU;AACxC,uBAAiB;AACjB,2BAAqB;AACrB,aAAO,OAAO,kBAAkB,gBAAgB,YAAY,GAAG,EAAE,QAAQ,aAAa,GAAG,SAAS,KAAK,IAAI;AAAA,IAC/G,OAAS;AACL,UAAI,mBAAmB,YAAY,GAAG,IAAI,YAAY,GAAG,IAAI;AAC7D,UAAI,mBAAmB,QAAS,oBAAmB,QAAQ,cAAc,kBAAkB,KAAK,oBAAoB,cAAc;AAClI,aAAO,OAAO,mBAAmB,mBAAmB,MAAM,mBAAmB,MAAM;AAAA,IACvF;AAAA,EACA;AAEA,WAAS,aAAa,SAAS,SAAS;AACtC,WAAO,QAAQ,gBAAgB,KAAK,UAAU,eAAe,UAAU,QAAQ,UAAU,SAAS,oBAAoB,cAAc,IAAI,WAAW;AAAA,EACrJ;AAEA,WAAS,WAAW,OAAO,SAAS;AAClC,WAAO,QAAQ,cAAc,KAAK,eAAe,aAAa,UAAU,QAAQ,QAAQ,OAAO,oBAAoB,cAAc,IAAI,MAAM,QAAQ,OAAO,iBAAiB,KAAK;AAAA,EAClL;AAEA,WAAS,aAAa,SAAS,SAAS;AACtC,WAAO,QAAQ,gBAAgB,KAAK,gBAAgB,eAAe,UAAU,QAAQ,UAAU,SAAS,oBAAoB,cAAc,IAAI,WAAW;AAAA,EAC3J;AAEA,WAAS,UAAU,MAAM,SAAS;AAChC,QAAI,QAAQ,WAAY,QAAO;AAC/B,WAAO,KAAK;AACZ,WAAO,KAAK,QAAQ,UAAU,GAAG;AACjC,WAAO,KAAK,QAAQ,MAAM,OAAO,EAAE,QAAQ,MAAM,MAAM,EAAE,QAAQ,MAAM,MAAM;AAC7E,WAAO,YAAY,UAAU,QAAQ,OAAO,MAAM,oBAAoB,cAAc,IAAI;AAAA,EAC1F;AAEA,WAAS,WAAW,SAAS,SAAS;AACpC,QAAI;AACJ,QAAI,QAAQ,YAAY,QAAQ,SAAS,QAAQ;AAC/C,WAAK,IAAI,GAAG,IAAI,QAAQ,SAAS,QAAQ,EAAE,GAAG;AAC5C,gBAAQ,QAAQ,SAAS,CAAC,EAAE,QAAQ,OAAO,GAAC;AAAA,UAC5C,KAAK;AACH,gBAAI,QAAQ,YAAY;AACtB,qBAAO;AAAA,YACjB;AACQ;AAAA;AAAA,UACF,KAAK;AACH,gBAAI,QAAQ,aAAa;AACvB,qBAAO;AAAA,YACjB;AACQ;AAAA;AAAA,UACF,KAAK;AACH,gBAAI,QAAQ,mBAAmB;AAC7B,qBAAO;AAAA,YACjB;AACQ;AAAA;AAAA,UACF,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACH,mBAAO;AAAA,UACT;AACE,mBAAO;AAAA,QACf;AAAA,MACA;AAAA,IACA;AACE,WAAO;AAAA,EACT;AAEA,WAAS,aAAa,SAAS,SAAS,OAAO;AAC7C,qBAAiB;AACjB,yBAAqB,QAAQ;AAC7B,QAAI,MAAM,CAAA,GAAI,cAAc,mBAAmB,UAAU,QAAQ,cAAc,QAAQ,MAAM,OAAO,IAAI,QAAQ;AAChH,QAAI,KAAK,MAAM,WAAW;AAC1B,QAAI,QAAQ,QAAQ,aAAa,GAAG;AAClC,UAAI,KAAK,gBAAgB,QAAQ,QAAQ,aAAa,GAAG,SAAS,KAAK,CAAC;AAAA,IAC5E;AACE,QAAI,iBAAiB,QAAQ,QAAQ,WAAW,KAAK,QAAQ,QAAQ,WAAW,EAAE,UAAU,QAAQ,QAAQ,aAAa,KAAK,QAAQ,QAAQ,aAAa,EAAE,WAAW,MAAM;AAC9K,QAAI,CAAC,gBAAgB;AACnB,UAAI,2BAA2B,SAAS;AACtC,yBAAiB,QAAQ,sBAAsB,QAAQ,MAAM,OAAO;AAAA,MAC1E,OAAW;AACL,yBAAiB,QAAQ;AAAA,MAC/B;AAAA,IACA;AACE,QAAI,gBAAgB;AAClB,UAAI,KAAK,GAAG;AACZ,UAAI,QAAQ,QAAQ,WAAW,KAAK,QAAQ,QAAQ,WAAW,EAAE,QAAQ;AACvE,YAAI,KAAK,cAAc,QAAQ,QAAQ,WAAW,GAAG,SAAS,QAAQ,CAAC,CAAC;AACxE,yBAAiB;AACjB,6BAAqB,QAAQ;AAAA,MACnC;AACI,UAAI,KAAK,QAAQ,UAAU,WAAW,SAAS,OAAO,IAAI,OAAO,MAAM,QAAQ,CAAC,EAAE,KAAK,QAAQ,MAAM,IAAI,EAAE;AAC3G,UAAI,KAAK,OAAO,cAAc,GAAG;AAAA,IACrC,OAAS;AACL,UAAI,KAAK,IAAI;AAAA,IACjB;AACE,WAAO,IAAI,KAAK,EAAE;AAAA,EACpB;AAEA,WAAS,cAAc,UAAU,SAAS,OAAO,WAAW;AAC1D,WAAO,SAAS,OAAO,SAAU,KAAK,SAAS;AAC7C,UAAI,SAAS,iBAAiB,SAAS,OAAO,aAAa,CAAC,GAAG;AAC/D,cAAQ,QAAQ,MAAI;AAAA,QACpB,KAAK;AAAW,iBAAO,MAAM,SAAS,aAAa,SAAS,SAAS,KAAK;AAAA,QAC1E,KAAK;AAAW,iBAAO,MAAM,SAAS,aAAa,QAAQ,QAAQ,UAAU,GAAG,OAAO;AAAA,QACvF,KAAK;AAAW,iBAAO,MAAM,SAAS,aAAa,QAAQ,QAAQ,UAAU,GAAG,OAAO;AAAA,QACvF,KAAK;AAAS,iBAAO,OAAO,QAAQ,cAAc,SAAS,MAAM,WAAW,QAAQ,QAAQ,QAAQ,GAAG,OAAO;AAAA,QAC9G,KAAK;AAAQ,iBAAO,OAAO,QAAQ,aAAa,SAAS,MAAM,UAAU,QAAQ,QAAQ,OAAO,GAAG,OAAO;AAAA,QAC1G,KAAK;AACH,cAAI,cAAc,CAAA;AAClB,sBAAY,QAAQ,QAAQ,OAAO,CAAC,IAAI,QAAQ,QAAQ,aAAa,IAAI,UAAU,QAAQ,QAAQ,cAAc;AACjH,iBAAO,OAAO,QAAQ,oBAAoB,SAAS,MAAM,iBAAiB,aAAa,SAAS,KAAK;AAAA,MAC3G;AAAA,IACA,GAAK,EAAE;AAAA,EACP;AAEA,WAAS,kBAAkB,SAAS,SAAS,YAAY;AACvD,QAAI;AACJ,SAAK,OAAO,SAAS;AACnB,UAAI,QAAQ,eAAe,GAAG,GAAG;AAC/B,gBAAQ,KAAG;AAAA,UACX,KAAK,QAAQ;AAAA,UACb,KAAK,QAAQ;AACX;AAAA;AAAA,UACF,KAAK,QAAQ;AACX,gBAAI,QAAQ,cAAc,YAAY;AACpC,qBAAO;AAAA,YACjB;AACQ;AAAA;AAAA,UACF,KAAK,QAAQ;AACX,gBAAI,QAAQ,eAAe,YAAY;AACrC,qBAAO;AAAA,YACjB;AACQ;AAAA;AAAA,UACF,KAAK,QAAQ;AACX,gBAAI,QAAQ,qBAAqB,YAAY;AAC3C,qBAAO;AAAA,YACjB;AACQ;AAAA;AAAA,UACF,KAAK,QAAQ;AAAA,UACb,KAAK,QAAQ;AACX,mBAAO;AAAA,UACT;AACE,mBAAO;AAAA,QACf;AAAA,MACA;AAAA,IACA;AACE,WAAO;AAAA,EACT;AAEA,WAAS,oBAAoB,SAAS,MAAM,SAAS,OAAO,QAAQ;AAClE,qBAAiB;AACjB,yBAAqB;AACrB,QAAI,cAAc,mBAAmB,UAAU,QAAQ,cAAc,MAAM,OAAO,IAAI;AACtF,QAAI,OAAO,YAAY,eAAe,YAAY,QAAQ,YAAY,IAAI;AACxE,aAAO,2BAA2B,WAAW,QAAQ,sBAAsB,MAAM,OAAO,KAAK,QAAQ,sBAAsB,MAAM,cAAc,QAAQ,cAAc,MAAM,MAAM,cAAc;AAAA,IACnM;AACE,QAAI,MAAM,CAAA;AACV,QAAI,MAAM;AACR,UAAI,KAAK,MAAM,WAAW;AAC1B,UAAI,OAAO,YAAY,UAAU;AAC/B,YAAI,KAAK,MAAM,UAAU,SAAQ,OAAO,IAAI,OAAO,cAAc,GAAG;AACpE,eAAO,IAAI,KAAK,EAAE;AAAA,MACxB;AACI,UAAI,QAAQ,QAAQ,aAAa,GAAG;AAClC,YAAI,KAAK,gBAAgB,QAAQ,QAAQ,aAAa,GAAG,SAAS,KAAK,CAAC;AAAA,MAC9E;AACI,UAAI,iBAAiB,kBAAkB,SAAS,SAAS,IAAI,KAAK,QAAQ,QAAQ,aAAa,KAAK,QAAQ,QAAQ,aAAa,EAAE,WAAW,MAAM;AACpJ,UAAI,CAAC,gBAAgB;AACnB,YAAI,2BAA2B,SAAS;AACtC,2BAAiB,QAAQ,sBAAsB,MAAM,OAAO;AAAA,QACpE,OAAa;AACL,2BAAiB,QAAQ;AAAA,QACjC;AAAA,MACA;AACI,UAAI,gBAAgB;AAClB,YAAI,KAAK,GAAG;AAAA,MAClB,OAAW;AACL,YAAI,KAAK,IAAI;AACb,eAAO,IAAI,KAAK,EAAE;AAAA,MACxB;AAAA,IACA;AACE,QAAI,KAAK,qBAAqB,SAAS,SAAS,QAAQ,GAAG,KAAK,CAAC;AACjE,qBAAiB;AACjB,yBAAqB;AACrB,QAAI,MAAM;AACR,UAAI,MAAM,SAAS,iBAAiB,SAAS,OAAO,KAAK,IAAI,MAAM,OAAO,cAAc,GAAG;AAAA,IAC/F;AACE,WAAO,IAAI,KAAK,EAAE;AAAA,EACpB;AAEA,WAAS,qBAAqB,SAAS,SAAS,OAAO,WAAW;AAChE,QAAI,GAAG,KAAK,OAAO,MAAM,CAAA;AACzB,SAAK,OAAO,SAAS;AACnB,UAAI,QAAQ,eAAe,GAAG,GAAG;AAC/B,gBAAQ,QAAQ,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC;AAC5D,aAAK,IAAI,GAAG,IAAI,MAAM,QAAQ,EAAE,GAAG;AACjC,kBAAQ,KAAG;AAAA,YACX,KAAK,QAAQ;AAAgB,kBAAI,KAAK,iBAAiB,MAAM,CAAC,GAAG,SAAS,KAAK,CAAC;AAAG;AAAA,YACnF,KAAK,QAAQ;AAAgB,kBAAI,MAAM,QAAQ,oBAAoB,iBAAiB,SAAS,OAAO,SAAS,IAAI,MAAM,iBAAiB,MAAM,CAAC,GAAG,SAAS,KAAK,CAAC;AAAG;AAAA,YACpK,KAAK,QAAQ;AAAA,YAAe,KAAK,QAAQ;AAAW;AAAA;AAAA,YACpD,KAAK,QAAQ;AAAS,kBAAI,MAAM,QAAQ,aAAa,iBAAiB,SAAS,OAAO,SAAS,IAAI,MAAM,UAAU,MAAM,CAAC,GAAG,OAAO,CAAC;AAAG;AAAA,YACxI,KAAK,QAAQ;AAAU,kBAAI,MAAM,QAAQ,cAAc,iBAAiB,SAAS,OAAO,SAAS,IAAI,MAAM,WAAW,MAAM,CAAC,GAAG,OAAO,CAAC;AAAG;AAAA,YAC3I,KAAK,QAAQ;AAAY,kBAAI,KAAK,iBAAiB,SAAS,OAAO,SAAS,IAAI,aAAa,MAAM,CAAC,GAAG,OAAO,CAAC;AAAG;AAAA,YAClH,KAAK,QAAQ;AAAY,kBAAI,KAAK,iBAAiB,SAAS,OAAO,SAAS,IAAI,aAAa,MAAM,CAAC,GAAG,OAAO,CAAC;AAAG;AAAA,YAClH;AAAS,kBAAI,KAAK,iBAAiB,SAAS,OAAO,SAAS,IAAI,oBAAoB,MAAM,CAAC,GAAG,KAAK,SAAS,OAAO,kBAAkB,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC;AAAA,UAChK;AACQ,sBAAY,aAAa,CAAC,IAAI;AAAA,QACtC;AAAA,MACA;AAAA,IACA;AACE,WAAO,IAAI,KAAK,EAAE;AAAA,EACpB;AAEA,WAAiB,SAAU,IAAI,SAAS;AACtC,cAAU,gBAAgB,OAAO;AACjC,QAAI,MAAM,CAAA;AACV,qBAAiB;AACjB,yBAAqB;AACrB,QAAI,QAAQ,SAAS;AACnB,UAAI,KAAK,qBAAqB,IAAI,SAAS,GAAG,IAAI,CAAC;AAAA,IACvD,OAAS;AACL,UAAI,GAAG,QAAQ,cAAc,GAAG;AAC9B,YAAI,KAAK,iBAAiB,GAAG,QAAQ,cAAc,GAAG,SAAS,CAAC,CAAC;AAAA,MACvE;AACI,UAAI,GAAG,QAAQ,WAAW,KAAK,GAAG,QAAQ,WAAW,EAAE,QAAQ;AAC7D,YAAI,KAAK,cAAc,GAAG,QAAQ,WAAW,GAAG,SAAS,GAAG,CAAC,IAAI,MAAM,CAAC;AAAA,MAC9E;AAAA,IACA;AACE,WAAO,IAAI,KAAK,EAAE;AAAA,EACpB;;;;;;;;AC/TA,MAAIO,UAASH;AAEb,aAAiB,SAAU,MAAM,SAAS;AACxC,QAAI,gBAAgBL,MAAAA,QAAQ;AAC1B,aAAO,KAAK;IAChB;AACE,QAAI,KAAK;AACT,QAAI,OAAQ,SAAU,UAAU;AAC9B,UAAI;AACF,aAAK,KAAK,MAAM,IAAI;AAAA,MAC1B,SAAa,GAAG;AACV,cAAM,IAAI,MAAM,+BAA+B;AAAA,MACrD;AAAA,IACA,OAAS;AACL,WAAK;AAAA,IACT;AACE,WAAOQ,QAAO,IAAI,OAAO;AAAA,EAC3B;;;;;;;;ACfA,MAAID,UAASF;AACb,MAAII,YAAWR;AACf,MAAIO,UAASF;AACb,MAAII,YAAWC;AAEf,QAAiB;AAAA,IACf,QAAQJ;AAAA,IACR,UAAUE;AAAA,IACV,QAAQD;AAAA,IACR,UAAUE;AAAA;;;;;","x_google_ignoreList":[0,1,2,3,4,5,6,7]}