{"version":3,"file":"be4d264797cad415a47581055e698702cefaa1a2-27a9d7a5e4ff6d598d70.js","mappings":"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AAI,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,cAAe,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,eAAgB,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,eAAgB,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC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AU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,KAAM,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,eAAgB,CAAC,EAAG,YAAa,CAAC,EAAG,yBAA0B,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG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,GAAe,CAAC,IAEpC,SAAWC,GAKPA,EAAaA,EAAmB,KAAI,GAAK,OAMzCA,EAAaA,EAAoB,MAAI,GAAK,QAK1CA,EAAaA,EAAwB,UAAI,GAAK,YAK9CA,EAAaA,EAAwB,UAAI,GAAK,YAK9CA,EAAaA,EAAmB,KAAI,GAAK,MAC5C,CA3BD,CA2BGA,KAAiBA,GAAe,CAAC,IC/C7B,MAAMC,GAAe,IAAI5Q,IAAI,CAChC,WACA,cACA,eACA,eACA,gBACA,mBACA,WACA,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,eACA,gBACA,WACA,iBACA,iBACA,YACFrX,KAAKP,GAAQ,CAACA,EAAI0U,cAAe1U,MACtByoB,GAAiB,IAAI7Q,IAAI,CAClC,gBACA,gBACA,gBACA,gBACA,cACA,WACA,gBACA,kBACA,WACA,cACA,WACA,oBACA,gBACA,eACA,mBACA,YACA,aACA,WACA,eACA,oBACA,eACA,cACA,cACA,mBACA,YACA,aACA,aACA,sBACA,mBACA,eACA,YACA,YACA,YACA,gBACA,sBACA,iBACA,OACA,OACA,cACA,YACA,qBACA,mBACA,mBACA,mBACA,eACA,cACA,eACA,cACA,eACA,iBACA,cACA,UACA,UACA,aACA,UACA,aACA,mBACA,mBACA,cACFrX,KAAKP,GAAQ,CAACA,EAAI0U,cAAe1U,MCvF7B0oB,GAAoB,IAAIjE,IAAI,CAC9B,QACA,SACA,MACA,SACA,UACA,WACA,YACA,aAEJ,SAASkE,GAAc5pB,GACnB,OAAOA,EAAMuK,QAAQ,KAAM,SAC/B,CA+BA,MAAMsf,GAAY,IAAInE,IAAI,CACtB,OACA,OACA,WACA,KACA,MACA,UACA,QACA,QACA,KACA,MACA,QACA,UACA,SACA,OACA,OACA,QACA,SACA,QACA,QAUG,SAASoE,GAAOzjB,EAAMvF,EAAU,CAAC,GACpC,MAAM4W,EAAQ,WAAYrR,EAAOA,EAAO,CAACA,GACzC,IAAI4S,EAAS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","sources":["webpack://sethness-roquette/./node_modules/deepmerge/dist/cjs.js","webpack://sethness-roquette/./node_modules/domelementtype/lib/esm/index.js","webpack://sethness-roquette/./node_modules/domhandler/lib/esm/node.js","webpack://sethness-roquette/./node_modules/domhandler/lib/esm/index.js","webpack://sethness-roquette/./node_modules/leac/lib/leac.mjs","webpack://sethness-roquette/./node_modules/peberminta/lib/core.mjs","webpack://sethness-roquette/./node_modules/parseley/lib/parseley.mjs","webpack://sethness-roquette/./node_modules/selderee/lib/selderee.mjs","webpack://sethness-roquette/./node_modules/@selderee/plugin-htmlparser2/lib/hp2-builder.mjs","webpack://sethness-roquette/./node_modules/html-to-text/node_modules/entities/lib/esm/generated/decode-data-html.js","webpack://sethness-roquette/./node_modules/html-to-text/node_modules/entities/lib/esm/decode_codepoint.js","webpack://sethness-roquette/./node_modules/html-to-text/node_modules/entities/lib/esm/generated/decode-data-xml.js","webpack://sethness-roquette/./node_modules/html-to-text/node_modules/entities/lib/esm/decode.js","webpack://sethness-roquette/./node_modules/html-to-text/node_modules/htmlparser2/lib/esm/Tokenizer.js","webpack://sethness-roquette/./node_modules/html-to-text/node_modules/htmlparser2/lib/esm/Parser.js","webpack://sethness-roquette/./node_modules/dom-serializer/node_modules/entities/lib/esm/generated/decode-data-html.js","webpack://sethness-roquette/./node_modules/dom-serializer/node_modules/entities/lib/esm/decode_codepoint.js","webpack://sethness-roquette/./node_modules/dom-serializer/node_modules/entities/lib/esm/generated/decode-data-xml.js","webpack://sethness-roquette/./node_modules/dom-serializer/node_modules/entities/lib/esm/decode.js","webpack://sethness-roquette/./node_modules/dom-serializer/node_modules/entities/lib/esm/generated/encode-html.js","webpack://sethness-roquette/./node_modules/dom-serializer/node_modules/entities/lib/esm/escape.js","webpack://sethness-roquette/./node_modules/dom-serializer/node_modules/entities/lib/esm/index.js","webpack://sethness-roquette/./node_modules/dom-serializer/lib/esm/foreignNames.js","webpack://sethness-roquette/./node_modules/dom-serializer/lib/esm/index.js","webpack://sethness-roquette/./node_modules/html-to-text/node_modules/domutils/lib/esm/helpers.js","webpack://sethness-roquette/./node_modules/html-to-text/node_modules/htmlparser2/lib/esm/index.js","webpack://sethness-roquette/./node_modules/html-to-text/lib/html-to-text.mjs"],"sourcesContent":["'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","/** Types of elements found in htmlparser2's DOM */\nexport var ElementType;\n(function (ElementType) {\n /** Type for the root element of a document */\n ElementType[\"Root\"] = \"root\";\n /** Type for Text */\n ElementType[\"Text\"] = \"text\";\n /** Type for */\n ElementType[\"Directive\"] = \"directive\";\n /** Type for */\n ElementType[\"Comment\"] = \"comment\";\n /** Type for `.\n this.sequenceIndex = Number(c === CharCodes.Lt);\n }\n }\n stateCDATASequence(c) {\n if (c === Sequences.Cdata[this.sequenceIndex]) {\n if (++this.sequenceIndex === Sequences.Cdata.length) {\n this.state = State.InCommentLike;\n this.currentSequence = Sequences.CdataEnd;\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n }\n }\n else {\n this.sequenceIndex = 0;\n this.state = State.InDeclaration;\n this.stateInDeclaration(c); // Reconsume the character\n }\n }\n /**\n * When we wait for one specific character, we can speed things up\n * by skipping through the buffer until we find it.\n *\n * @returns Whether the character was found.\n */\n fastForwardTo(c) {\n while (++this.index < this.buffer.length + this.offset) {\n if (this.buffer.charCodeAt(this.index - this.offset) === c) {\n return true;\n }\n }\n /*\n * We increment the index at the end of the `parse` loop,\n * so set it to `buffer.length - 1` here.\n *\n * TODO: Refactor `parse` to increment index before calling states.\n */\n this.index = this.buffer.length + this.offset - 1;\n return false;\n }\n /**\n * Comments and CDATA end with `-->` and `]]>`.\n *\n * Their common qualities are:\n * - Their end sequences have a distinct character they start with.\n * - That character is then repeated, so we have to check multiple repeats.\n * - All characters but the start character of the sequence can be skipped.\n */\n stateInCommentLike(c) {\n if (c === this.currentSequence[this.sequenceIndex]) {\n if (++this.sequenceIndex === this.currentSequence.length) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(this.sectionStart, this.index, 2);\n }\n else {\n this.cbs.oncomment(this.sectionStart, this.index, 2);\n }\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n this.state = State.Text;\n }\n }\n else if (this.sequenceIndex === 0) {\n // Fast-forward to the first character of the sequence\n if (this.fastForwardTo(this.currentSequence[0])) {\n this.sequenceIndex = 1;\n }\n }\n else if (c !== this.currentSequence[this.sequenceIndex - 1]) {\n // Allow long sequences, eg. --->, ]]]>\n this.sequenceIndex = 0;\n }\n }\n /**\n * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.\n *\n * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).\n * We allow anything that wouldn't end the tag.\n */\n isTagStartChar(c) {\n return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c);\n }\n startSpecial(sequence, offset) {\n this.isSpecial = true;\n this.currentSequence = sequence;\n this.sequenceIndex = offset;\n this.state = State.SpecialStartSequence;\n }\n stateBeforeTagName(c) {\n if (c === CharCodes.ExclamationMark) {\n this.state = State.BeforeDeclaration;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.Questionmark) {\n this.state = State.InProcessingInstruction;\n this.sectionStart = this.index + 1;\n }\n else if (this.isTagStartChar(c)) {\n const lower = c | 0x20;\n this.sectionStart = this.index;\n if (!this.xmlMode && lower === Sequences.TitleEnd[2]) {\n this.startSpecial(Sequences.TitleEnd, 3);\n }\n else {\n this.state =\n !this.xmlMode && lower === Sequences.ScriptEnd[2]\n ? State.BeforeSpecialS\n : State.InTagName;\n }\n }\n else if (c === CharCodes.Slash) {\n this.state = State.BeforeClosingTagName;\n }\n else {\n this.state = State.Text;\n this.stateText(c);\n }\n }\n stateInTagName(c) {\n if (isEndOfTagSection(c)) {\n this.cbs.onopentagname(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n stateBeforeClosingTagName(c) {\n if (isWhitespace(c)) {\n // Ignore\n }\n else if (c === CharCodes.Gt) {\n this.state = State.Text;\n }\n else {\n this.state = this.isTagStartChar(c)\n ? State.InClosingTagName\n : State.InSpecialComment;\n this.sectionStart = this.index;\n }\n }\n stateInClosingTagName(c) {\n if (c === CharCodes.Gt || isWhitespace(c)) {\n this.cbs.onclosetag(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.AfterClosingTagName;\n this.stateAfterClosingTagName(c);\n }\n }\n stateAfterClosingTagName(c) {\n // Skip everything until \">\"\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeAttributeName(c) {\n if (c === CharCodes.Gt) {\n this.cbs.onopentagend(this.index);\n if (this.isSpecial) {\n this.state = State.InSpecialTag;\n this.sequenceIndex = 0;\n }\n else {\n this.state = State.Text;\n }\n this.baseState = this.state;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.Slash) {\n this.state = State.InSelfClosingTag;\n }\n else if (!isWhitespace(c)) {\n this.state = State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n stateInSelfClosingTag(c) {\n if (c === CharCodes.Gt) {\n this.cbs.onselfclosingtag(this.index);\n this.state = State.Text;\n this.baseState = State.Text;\n this.sectionStart = this.index + 1;\n this.isSpecial = false; // Reset special state, in case of self-closing special tags\n }\n else if (!isWhitespace(c)) {\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n stateInAttributeName(c) {\n if (c === CharCodes.Eq || isEndOfTagSection(c)) {\n this.cbs.onattribname(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.AfterAttributeName;\n this.stateAfterAttributeName(c);\n }\n }\n stateAfterAttributeName(c) {\n if (c === CharCodes.Eq) {\n this.state = State.BeforeAttributeValue;\n }\n else if (c === CharCodes.Slash || c === CharCodes.Gt) {\n this.cbs.onattribend(QuoteType.NoValue, this.index);\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n else if (!isWhitespace(c)) {\n this.cbs.onattribend(QuoteType.NoValue, this.index);\n this.state = State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n stateBeforeAttributeValue(c) {\n if (c === CharCodes.DoubleQuote) {\n this.state = State.InAttributeValueDq;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.SingleQuote) {\n this.state = State.InAttributeValueSq;\n this.sectionStart = this.index + 1;\n }\n else if (!isWhitespace(c)) {\n this.sectionStart = this.index;\n this.state = State.InAttributeValueNq;\n this.stateInAttributeValueNoQuotes(c); // Reconsume token\n }\n }\n handleInAttributeValue(c, quote) {\n if (c === quote ||\n (!this.decodeEntities && this.fastForwardTo(quote))) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(quote === CharCodes.DoubleQuote\n ? QuoteType.Double\n : QuoteType.Single, this.index);\n this.state = State.BeforeAttributeName;\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.baseState = this.state;\n this.state = State.BeforeEntity;\n }\n }\n stateInAttributeValueDoubleQuotes(c) {\n this.handleInAttributeValue(c, CharCodes.DoubleQuote);\n }\n stateInAttributeValueSingleQuotes(c) {\n this.handleInAttributeValue(c, CharCodes.SingleQuote);\n }\n stateInAttributeValueNoQuotes(c) {\n if (isWhitespace(c) || c === CharCodes.Gt) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(QuoteType.Unquoted, this.index);\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.baseState = this.state;\n this.state = State.BeforeEntity;\n }\n }\n stateBeforeDeclaration(c) {\n if (c === CharCodes.OpeningSquareBracket) {\n this.state = State.CDATASequence;\n this.sequenceIndex = 0;\n }\n else {\n this.state =\n c === CharCodes.Dash\n ? State.BeforeComment\n : State.InDeclaration;\n }\n }\n stateInDeclaration(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.ondeclaration(this.sectionStart, this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateInProcessingInstruction(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.onprocessinginstruction(this.sectionStart, this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeComment(c) {\n if (c === CharCodes.Dash) {\n this.state = State.InCommentLike;\n this.currentSequence = Sequences.CommentEnd;\n // Allow short comments (eg. )\n this.sequenceIndex = 2;\n this.sectionStart = this.index + 1;\n }\n else {\n this.state = State.InDeclaration;\n }\n }\n stateInSpecialComment(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.oncomment(this.sectionStart, this.index, 0);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeSpecialS(c) {\n const lower = c | 0x20;\n if (lower === Sequences.ScriptEnd[3]) {\n this.startSpecial(Sequences.ScriptEnd, 4);\n }\n else if (lower === Sequences.StyleEnd[3]) {\n this.startSpecial(Sequences.StyleEnd, 4);\n }\n else {\n this.state = State.InTagName;\n this.stateInTagName(c); // Consume the token again\n }\n }\n stateBeforeEntity(c) {\n // Start excess with 1 to include the '&'\n this.entityExcess = 1;\n this.entityResult = 0;\n if (c === CharCodes.Num) {\n this.state = State.BeforeNumericEntity;\n }\n else if (c === CharCodes.Amp) {\n // We have two `&` characters in a row. Stay in the current state.\n }\n else {\n this.trieIndex = 0;\n this.trieCurrent = this.entityTrie[0];\n this.state = State.InNamedEntity;\n this.stateInNamedEntity(c);\n }\n }\n stateInNamedEntity(c) {\n this.entityExcess += 1;\n this.trieIndex = determineBranch(this.entityTrie, this.trieCurrent, this.trieIndex + 1, c);\n if (this.trieIndex < 0) {\n this.emitNamedEntity();\n this.index--;\n return;\n }\n this.trieCurrent = this.entityTrie[this.trieIndex];\n const masked = this.trieCurrent & BinTrieFlags.VALUE_LENGTH;\n // If the branch is a value, store it and continue\n if (masked) {\n // The mask is the number of bytes of the value, including the current byte.\n const valueLength = (masked >> 14) - 1;\n // If we have a legacy entity while parsing strictly, just skip the number of bytes\n if (!this.allowLegacyEntity() && c !== CharCodes.Semi) {\n this.trieIndex += valueLength;\n }\n else {\n // Add 1 as we have already incremented the excess\n const entityStart = this.index - this.entityExcess + 1;\n if (entityStart > this.sectionStart) {\n this.emitPartial(this.sectionStart, entityStart);\n }\n // If this is a surrogate pair, consume the next two bytes\n this.entityResult = this.trieIndex;\n this.trieIndex += valueLength;\n this.entityExcess = 0;\n this.sectionStart = this.index + 1;\n if (valueLength === 0) {\n this.emitNamedEntity();\n }\n }\n }\n }\n emitNamedEntity() {\n this.state = this.baseState;\n if (this.entityResult === 0) {\n return;\n }\n const valueLength = (this.entityTrie[this.entityResult] & BinTrieFlags.VALUE_LENGTH) >>\n 14;\n switch (valueLength) {\n case 1:\n this.emitCodePoint(this.entityTrie[this.entityResult] &\n ~BinTrieFlags.VALUE_LENGTH);\n break;\n case 2:\n this.emitCodePoint(this.entityTrie[this.entityResult + 1]);\n break;\n case 3: {\n this.emitCodePoint(this.entityTrie[this.entityResult + 1]);\n this.emitCodePoint(this.entityTrie[this.entityResult + 2]);\n }\n }\n }\n stateBeforeNumericEntity(c) {\n if ((c | 0x20) === CharCodes.LowerX) {\n this.entityExcess++;\n this.state = State.InHexEntity;\n }\n else {\n this.state = State.InNumericEntity;\n this.stateInNumericEntity(c);\n }\n }\n emitNumericEntity(strict) {\n const entityStart = this.index - this.entityExcess - 1;\n const numberStart = entityStart + 2 + Number(this.state === State.InHexEntity);\n if (numberStart !== this.index) {\n // Emit leading data if any\n if (entityStart > this.sectionStart) {\n this.emitPartial(this.sectionStart, entityStart);\n }\n this.sectionStart = this.index + Number(strict);\n this.emitCodePoint(replaceCodePoint(this.entityResult));\n }\n this.state = this.baseState;\n }\n stateInNumericEntity(c) {\n if (c === CharCodes.Semi) {\n this.emitNumericEntity(true);\n }\n else if (isNumber(c)) {\n this.entityResult = this.entityResult * 10 + (c - CharCodes.Zero);\n this.entityExcess++;\n }\n else {\n if (this.allowLegacyEntity()) {\n this.emitNumericEntity(false);\n }\n else {\n this.state = this.baseState;\n }\n this.index--;\n }\n }\n stateInHexEntity(c) {\n if (c === CharCodes.Semi) {\n this.emitNumericEntity(true);\n }\n else if (isNumber(c)) {\n this.entityResult = this.entityResult * 16 + (c - CharCodes.Zero);\n this.entityExcess++;\n }\n else if (isHexDigit(c)) {\n this.entityResult =\n this.entityResult * 16 + ((c | 0x20) - CharCodes.LowerA + 10);\n this.entityExcess++;\n }\n else {\n if (this.allowLegacyEntity()) {\n this.emitNumericEntity(false);\n }\n else {\n this.state = this.baseState;\n }\n this.index--;\n }\n }\n allowLegacyEntity() {\n return (!this.xmlMode &&\n (this.baseState === State.Text ||\n this.baseState === State.InSpecialTag));\n }\n /**\n * Remove data that has already been consumed from the buffer.\n */\n cleanup() {\n // If we are inside of text or attributes, emit what we already have.\n if (this.running && this.sectionStart !== this.index) {\n if (this.state === State.Text ||\n (this.state === State.InSpecialTag && this.sequenceIndex === 0)) {\n this.cbs.ontext(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n else if (this.state === State.InAttributeValueDq ||\n this.state === State.InAttributeValueSq ||\n this.state === State.InAttributeValueNq) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n }\n }\n shouldContinue() {\n return this.index < this.buffer.length + this.offset && this.running;\n }\n /**\n * Iterates through the buffer, calling the function corresponding to the current state.\n *\n * States that are more likely to be hit are higher up, as a performance improvement.\n */\n parse() {\n while (this.shouldContinue()) {\n const c = this.buffer.charCodeAt(this.index - this.offset);\n if (this.state === State.Text) {\n this.stateText(c);\n }\n else if (this.state === State.SpecialStartSequence) {\n this.stateSpecialStartSequence(c);\n }\n else if (this.state === State.InSpecialTag) {\n this.stateInSpecialTag(c);\n }\n else if (this.state === State.CDATASequence) {\n this.stateCDATASequence(c);\n }\n else if (this.state === State.InAttributeValueDq) {\n this.stateInAttributeValueDoubleQuotes(c);\n }\n else if (this.state === State.InAttributeName) {\n this.stateInAttributeName(c);\n }\n else if (this.state === State.InCommentLike) {\n this.stateInCommentLike(c);\n }\n else if (this.state === State.InSpecialComment) {\n this.stateInSpecialComment(c);\n }\n else if (this.state === State.BeforeAttributeName) {\n this.stateBeforeAttributeName(c);\n }\n else if (this.state === State.InTagName) {\n this.stateInTagName(c);\n }\n else if (this.state === State.InClosingTagName) {\n this.stateInClosingTagName(c);\n }\n else if (this.state === State.BeforeTagName) {\n this.stateBeforeTagName(c);\n }\n else if (this.state === State.AfterAttributeName) {\n this.stateAfterAttributeName(c);\n }\n else if (this.state === State.InAttributeValueSq) {\n this.stateInAttributeValueSingleQuotes(c);\n }\n else if (this.state === State.BeforeAttributeValue) {\n this.stateBeforeAttributeValue(c);\n }\n else if (this.state === State.BeforeClosingTagName) {\n this.stateBeforeClosingTagName(c);\n }\n else if (this.state === State.AfterClosingTagName) {\n this.stateAfterClosingTagName(c);\n }\n else if (this.state === State.BeforeSpecialS) {\n this.stateBeforeSpecialS(c);\n }\n else if (this.state === State.InAttributeValueNq) {\n this.stateInAttributeValueNoQuotes(c);\n }\n else if (this.state === State.InSelfClosingTag) {\n this.stateInSelfClosingTag(c);\n }\n else if (this.state === State.InDeclaration) {\n this.stateInDeclaration(c);\n }\n else if (this.state === State.BeforeDeclaration) {\n this.stateBeforeDeclaration(c);\n }\n else if (this.state === State.BeforeComment) {\n this.stateBeforeComment(c);\n }\n else if (this.state === State.InProcessingInstruction) {\n this.stateInProcessingInstruction(c);\n }\n else if (this.state === State.InNamedEntity) {\n this.stateInNamedEntity(c);\n }\n else if (this.state === State.BeforeEntity) {\n this.stateBeforeEntity(c);\n }\n else if (this.state === State.InHexEntity) {\n this.stateInHexEntity(c);\n }\n else if (this.state === State.InNumericEntity) {\n this.stateInNumericEntity(c);\n }\n else {\n // `this._state === State.BeforeNumericEntity`\n this.stateBeforeNumericEntity(c);\n }\n this.index++;\n }\n this.cleanup();\n }\n finish() {\n if (this.state === State.InNamedEntity) {\n this.emitNamedEntity();\n }\n // If there is remaining data, emit it in a reasonable way\n if (this.sectionStart < this.index) {\n this.handleTrailingData();\n }\n this.cbs.onend();\n }\n /** Handle any trailing data. */\n handleTrailingData() {\n const endIndex = this.buffer.length + this.offset;\n if (this.state === State.InCommentLike) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(this.sectionStart, endIndex, 0);\n }\n else {\n this.cbs.oncomment(this.sectionStart, endIndex, 0);\n }\n }\n else if (this.state === State.InNumericEntity &&\n this.allowLegacyEntity()) {\n this.emitNumericEntity(false);\n // All trailing data will have been consumed\n }\n else if (this.state === State.InHexEntity &&\n this.allowLegacyEntity()) {\n this.emitNumericEntity(false);\n // All trailing data will have been consumed\n }\n else if (this.state === State.InTagName ||\n this.state === State.BeforeAttributeName ||\n this.state === State.BeforeAttributeValue ||\n this.state === State.AfterAttributeName ||\n this.state === State.InAttributeName ||\n this.state === State.InAttributeValueSq ||\n this.state === State.InAttributeValueDq ||\n this.state === State.InAttributeValueNq ||\n this.state === State.InClosingTagName) {\n /*\n * If we are currently in an opening or closing tag, us not calling the\n * respective callback signals that the tag should be ignored.\n */\n }\n else {\n this.cbs.ontext(this.sectionStart, endIndex);\n }\n }\n emitPartial(start, endIndex) {\n if (this.baseState !== State.Text &&\n this.baseState !== State.InSpecialTag) {\n this.cbs.onattribdata(start, endIndex);\n }\n else {\n this.cbs.ontext(start, endIndex);\n }\n }\n emitCodePoint(cp) {\n if (this.baseState !== State.Text &&\n this.baseState !== State.InSpecialTag) {\n this.cbs.onattribentity(cp);\n }\n else {\n this.cbs.ontextentity(cp);\n }\n }\n}\n//# sourceMappingURL=Tokenizer.js.map","import Tokenizer, { QuoteType } from \"./Tokenizer.js\";\nimport { fromCodePoint } from \"entities/lib/decode.js\";\nconst formTags = new Set([\n \"input\",\n \"option\",\n \"optgroup\",\n \"select\",\n \"button\",\n \"datalist\",\n \"textarea\",\n]);\nconst pTag = new Set([\"p\"]);\nconst tableSectionTags = new Set([\"thead\", \"tbody\"]);\nconst ddtTags = new Set([\"dd\", \"dt\"]);\nconst rtpTags = new Set([\"rt\", \"rp\"]);\nconst openImpliesClose = new Map([\n [\"tr\", new Set([\"tr\", \"th\", \"td\"])],\n [\"th\", new Set([\"th\"])],\n [\"td\", new Set([\"thead\", \"th\", \"td\"])],\n [\"body\", new Set([\"head\", \"link\", \"script\"])],\n [\"li\", new Set([\"li\"])],\n [\"p\", pTag],\n [\"h1\", pTag],\n [\"h2\", pTag],\n [\"h3\", pTag],\n [\"h4\", pTag],\n [\"h5\", pTag],\n [\"h6\", pTag],\n [\"select\", formTags],\n [\"input\", formTags],\n [\"output\", formTags],\n [\"button\", formTags],\n [\"datalist\", formTags],\n [\"textarea\", formTags],\n [\"option\", new Set([\"option\"])],\n [\"optgroup\", new Set([\"optgroup\", \"option\"])],\n [\"dd\", ddtTags],\n [\"dt\", ddtTags],\n [\"address\", pTag],\n [\"article\", pTag],\n [\"aside\", pTag],\n [\"blockquote\", pTag],\n [\"details\", pTag],\n [\"div\", pTag],\n [\"dl\", pTag],\n [\"fieldset\", pTag],\n [\"figcaption\", pTag],\n [\"figure\", pTag],\n [\"footer\", pTag],\n [\"form\", pTag],\n [\"header\", pTag],\n [\"hr\", pTag],\n [\"main\", pTag],\n [\"nav\", pTag],\n [\"ol\", pTag],\n [\"pre\", pTag],\n [\"section\", pTag],\n [\"table\", pTag],\n [\"ul\", pTag],\n [\"rt\", rtpTags],\n [\"rp\", rtpTags],\n [\"tbody\", tableSectionTags],\n [\"tfoot\", tableSectionTags],\n]);\nconst voidElements = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\nconst foreignContextElements = new Set([\"math\", \"svg\"]);\nconst htmlIntegrationElements = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignobject\",\n \"desc\",\n \"title\",\n]);\nconst reNameEnd = /\\s|\\//;\nexport class Parser {\n constructor(cbs, options = {}) {\n var _a, _b, _c, _d, _e;\n this.options = options;\n /** The start index of the last event. */\n this.startIndex = 0;\n /** The end index of the last event. */\n this.endIndex = 0;\n /**\n * Store the start index of the current open tag,\n * so we can update the start index for attributes.\n */\n this.openTagStart = 0;\n this.tagname = \"\";\n this.attribname = \"\";\n this.attribvalue = \"\";\n this.attribs = null;\n this.stack = [];\n this.foreignContext = [];\n this.buffers = [];\n this.bufferOffset = 0;\n /** The index of the last written buffer. Used when resuming after a `pause()`. */\n this.writeIndex = 0;\n /** Indicates whether the parser has finished running / `.end` has been called. */\n this.ended = false;\n this.cbs = cbs !== null && cbs !== void 0 ? cbs : {};\n this.lowerCaseTagNames = (_a = options.lowerCaseTags) !== null && _a !== void 0 ? _a : !options.xmlMode;\n this.lowerCaseAttributeNames =\n (_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : !options.xmlMode;\n this.tokenizer = new ((_c = options.Tokenizer) !== null && _c !== void 0 ? _c : Tokenizer)(this.options, this);\n (_e = (_d = this.cbs).onparserinit) === null || _e === void 0 ? void 0 : _e.call(_d, this);\n }\n // Tokenizer event handlers\n /** @internal */\n ontext(start, endIndex) {\n var _a, _b;\n const data = this.getSlice(start, endIndex);\n this.endIndex = endIndex - 1;\n (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, data);\n this.startIndex = endIndex;\n }\n /** @internal */\n ontextentity(cp) {\n var _a, _b;\n /*\n * Entities can be emitted on the character, or directly after.\n * We use the section start here to get accurate indices.\n */\n const idx = this.tokenizer.getSectionStart();\n this.endIndex = idx - 1;\n (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, fromCodePoint(cp));\n this.startIndex = idx;\n }\n isVoidElement(name) {\n return !this.options.xmlMode && voidElements.has(name);\n }\n /** @internal */\n onopentagname(start, endIndex) {\n this.endIndex = endIndex;\n let name = this.getSlice(start, endIndex);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n this.emitOpenTag(name);\n }\n emitOpenTag(name) {\n var _a, _b, _c, _d;\n this.openTagStart = this.startIndex;\n this.tagname = name;\n const impliesClose = !this.options.xmlMode && openImpliesClose.get(name);\n if (impliesClose) {\n while (this.stack.length > 0 &&\n impliesClose.has(this.stack[this.stack.length - 1])) {\n const el = this.stack.pop();\n (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, el, true);\n }\n }\n if (!this.isVoidElement(name)) {\n this.stack.push(name);\n if (foreignContextElements.has(name)) {\n this.foreignContext.push(true);\n }\n else if (htmlIntegrationElements.has(name)) {\n this.foreignContext.push(false);\n }\n }\n (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, name);\n if (this.cbs.onopentag)\n this.attribs = {};\n }\n endOpenTag(isImplied) {\n var _a, _b;\n this.startIndex = this.openTagStart;\n if (this.attribs) {\n (_b = (_a = this.cbs).onopentag) === null || _b === void 0 ? void 0 : _b.call(_a, this.tagname, this.attribs, isImplied);\n this.attribs = null;\n }\n if (this.cbs.onclosetag && this.isVoidElement(this.tagname)) {\n this.cbs.onclosetag(this.tagname, true);\n }\n this.tagname = \"\";\n }\n /** @internal */\n onopentagend(endIndex) {\n this.endIndex = endIndex;\n this.endOpenTag(false);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onclosetag(start, endIndex) {\n var _a, _b, _c, _d, _e, _f;\n this.endIndex = endIndex;\n let name = this.getSlice(start, endIndex);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n if (foreignContextElements.has(name) ||\n htmlIntegrationElements.has(name)) {\n this.foreignContext.pop();\n }\n if (!this.isVoidElement(name)) {\n const pos = this.stack.lastIndexOf(name);\n if (pos !== -1) {\n if (this.cbs.onclosetag) {\n let count = this.stack.length - pos;\n while (count--) {\n // We know the stack has sufficient elements.\n this.cbs.onclosetag(this.stack.pop(), count !== 0);\n }\n }\n else\n this.stack.length = pos;\n }\n else if (!this.options.xmlMode && name === \"p\") {\n // Implicit open before close\n this.emitOpenTag(\"p\");\n this.closeCurrentTag(true);\n }\n }\n else if (!this.options.xmlMode && name === \"br\") {\n // We can't use `emitOpenTag` for implicit open, as `br` would be implicitly closed.\n (_b = (_a = this.cbs).onopentagname) === null || _b === void 0 ? void 0 : _b.call(_a, \"br\");\n (_d = (_c = this.cbs).onopentag) === null || _d === void 0 ? void 0 : _d.call(_c, \"br\", {}, true);\n (_f = (_e = this.cbs).onclosetag) === null || _f === void 0 ? void 0 : _f.call(_e, \"br\", false);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onselfclosingtag(endIndex) {\n this.endIndex = endIndex;\n if (this.options.xmlMode ||\n this.options.recognizeSelfClosing ||\n this.foreignContext[this.foreignContext.length - 1]) {\n this.closeCurrentTag(false);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n else {\n // Ignore the fact that the tag is self-closing.\n this.onopentagend(endIndex);\n }\n }\n closeCurrentTag(isOpenImplied) {\n var _a, _b;\n const name = this.tagname;\n this.endOpenTag(isOpenImplied);\n // Self-closing tags will be on the top of the stack\n if (this.stack[this.stack.length - 1] === name) {\n // If the opening tag isn't implied, the closing tag has to be implied.\n (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, name, !isOpenImplied);\n this.stack.pop();\n }\n }\n /** @internal */\n onattribname(start, endIndex) {\n this.startIndex = start;\n const name = this.getSlice(start, endIndex);\n this.attribname = this.lowerCaseAttributeNames\n ? name.toLowerCase()\n : name;\n }\n /** @internal */\n onattribdata(start, endIndex) {\n this.attribvalue += this.getSlice(start, endIndex);\n }\n /** @internal */\n onattribentity(cp) {\n this.attribvalue += fromCodePoint(cp);\n }\n /** @internal */\n onattribend(quote, endIndex) {\n var _a, _b;\n this.endIndex = endIndex;\n (_b = (_a = this.cbs).onattribute) === null || _b === void 0 ? void 0 : _b.call(_a, this.attribname, this.attribvalue, quote === QuoteType.Double\n ? '\"'\n : quote === QuoteType.Single\n ? \"'\"\n : quote === QuoteType.NoValue\n ? undefined\n : null);\n if (this.attribs &&\n !Object.prototype.hasOwnProperty.call(this.attribs, this.attribname)) {\n this.attribs[this.attribname] = this.attribvalue;\n }\n this.attribvalue = \"\";\n }\n getInstructionName(value) {\n const idx = value.search(reNameEnd);\n let name = idx < 0 ? value : value.substr(0, idx);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n return name;\n }\n /** @internal */\n ondeclaration(start, endIndex) {\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex);\n if (this.cbs.onprocessinginstruction) {\n const name = this.getInstructionName(value);\n this.cbs.onprocessinginstruction(`!${name}`, `!${value}`);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onprocessinginstruction(start, endIndex) {\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex);\n if (this.cbs.onprocessinginstruction) {\n const name = this.getInstructionName(value);\n this.cbs.onprocessinginstruction(`?${name}`, `?${value}`);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n oncomment(start, endIndex, offset) {\n var _a, _b, _c, _d;\n this.endIndex = endIndex;\n (_b = (_a = this.cbs).oncomment) === null || _b === void 0 ? void 0 : _b.call(_a, this.getSlice(start, endIndex - offset));\n (_d = (_c = this.cbs).oncommentend) === null || _d === void 0 ? void 0 : _d.call(_c);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n oncdata(start, endIndex, offset) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex - offset);\n if (this.options.xmlMode || this.options.recognizeCDATA) {\n (_b = (_a = this.cbs).oncdatastart) === null || _b === void 0 ? void 0 : _b.call(_a);\n (_d = (_c = this.cbs).ontext) === null || _d === void 0 ? void 0 : _d.call(_c, value);\n (_f = (_e = this.cbs).oncdataend) === null || _f === void 0 ? void 0 : _f.call(_e);\n }\n else {\n (_h = (_g = this.cbs).oncomment) === null || _h === void 0 ? void 0 : _h.call(_g, `[CDATA[${value}]]`);\n (_k = (_j = this.cbs).oncommentend) === null || _k === void 0 ? void 0 : _k.call(_j);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onend() {\n var _a, _b;\n if (this.cbs.onclosetag) {\n // Set the end index for all remaining tags\n this.endIndex = this.startIndex;\n for (let i = this.stack.length; i > 0; this.cbs.onclosetag(this.stack[--i], true))\n ;\n }\n (_b = (_a = this.cbs).onend) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n /**\n * Resets the parser to a blank state, ready to parse a new HTML document\n */\n reset() {\n var _a, _b, _c, _d;\n (_b = (_a = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.tokenizer.reset();\n this.tagname = \"\";\n this.attribname = \"\";\n this.attribs = null;\n this.stack.length = 0;\n this.startIndex = 0;\n this.endIndex = 0;\n (_d = (_c = this.cbs).onparserinit) === null || _d === void 0 ? void 0 : _d.call(_c, this);\n this.buffers.length = 0;\n this.bufferOffset = 0;\n this.writeIndex = 0;\n this.ended = false;\n }\n /**\n * Resets the parser, then parses a complete document and\n * pushes it to the handler.\n *\n * @param data Document to parse.\n */\n parseComplete(data) {\n this.reset();\n this.end(data);\n }\n getSlice(start, end) {\n while (start - this.bufferOffset >= this.buffers[0].length) {\n this.shiftBuffer();\n }\n let str = this.buffers[0].slice(start - this.bufferOffset, end - this.bufferOffset);\n while (end - this.bufferOffset > this.buffers[0].length) {\n this.shiftBuffer();\n str += this.buffers[0].slice(0, end - this.bufferOffset);\n }\n return str;\n }\n shiftBuffer() {\n this.bufferOffset += this.buffers[0].length;\n this.writeIndex--;\n this.buffers.shift();\n }\n /**\n * Parses a chunk of data and calls the corresponding callbacks.\n *\n * @param chunk Chunk to parse.\n */\n write(chunk) {\n var _a, _b;\n if (this.ended) {\n (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(\".write() after done!\"));\n return;\n }\n this.buffers.push(chunk);\n if (this.tokenizer.running) {\n this.tokenizer.write(chunk);\n this.writeIndex++;\n }\n }\n /**\n * Parses the end of the buffer and clears the stack, calls onend.\n *\n * @param chunk Optional final chunk to parse.\n */\n end(chunk) {\n var _a, _b;\n if (this.ended) {\n (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, Error(\".end() after done!\"));\n return;\n }\n if (chunk)\n this.write(chunk);\n this.ended = true;\n this.tokenizer.end();\n }\n /**\n * Pauses parsing. The parser won't emit events until `resume` is called.\n */\n pause() {\n this.tokenizer.pause();\n }\n /**\n * Resumes parsing after `pause` was called.\n */\n resume() {\n this.tokenizer.resume();\n while (this.tokenizer.running &&\n this.writeIndex < this.buffers.length) {\n this.tokenizer.write(this.buffers[this.writeIndex++]);\n }\n if (this.ended)\n this.tokenizer.end();\n }\n /**\n * Alias of `write`, for backwards compatibility.\n *\n * @param chunk Chunk to parse.\n * @deprecated\n */\n parseChunk(chunk) {\n this.write(chunk);\n }\n /**\n * Alias of `end`, for backwards compatibility.\n *\n * @param chunk Optional final chunk to parse.\n * @deprecated\n */\n done(chunk) {\n this.end(chunk);\n }\n}\n//# sourceMappingURL=Parser.js.map","// Generated using scripts/write-decode-map.ts\nexport default new Uint16Array(\n// prettier-ignore\n\"\\u1d41<\\xd5\\u0131\\u028a\\u049d\\u057b\\u05d0\\u0675\\u06de\\u07a2\\u07d6\\u080f\\u0a4a\\u0a91\\u0da1\\u0e6d\\u0f09\\u0f26\\u10ca\\u1228\\u12e1\\u1415\\u149d\\u14c3\\u14df\\u1525\\0\\0\\0\\0\\0\\0\\u156b\\u16cd\\u198d\\u1c12\\u1ddd\\u1f7e\\u2060\\u21b0\\u228d\\u23c0\\u23fb\\u2442\\u2824\\u2912\\u2d08\\u2e48\\u2fce\\u3016\\u32ba\\u3639\\u37ac\\u38fe\\u3a28\\u3a71\\u3ae0\\u3b2e\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803b\\xc6\\u40c6P\\u803b&\\u4026cute\\u803b\\xc1\\u40c1reve;\\u4102\\u0100iyx}rc\\u803b\\xc2\\u40c2;\\u4410r;\\uc000\\ud835\\udd04rave\\u803b\\xc0\\u40c0pha;\\u4391acr;\\u4100d;\\u6a53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uc000\\ud835\\udd38plyFunction;\\u6061ing\\u803b\\xc5\\u40c5\\u0100cs\\xbe\\xc3r;\\uc000\\ud835\\udc9cign;\\u6254ilde\\u803b\\xc3\\u40c3ml\\u803b\\xc4\\u40c4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011c\\u0122\\u0127\\u012a\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6ae7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010b\\u0114ause;\\u6235noullis;\\u612ca;\\u4392r;\\uc000\\ud835\\udd05pf;\\uc000\\ud835\\udd39eve;\\u42d8c\\xf2\\u0113mpeq;\\u624e\\u0700HOacdefhilorsu\\u014d\\u0151\\u0156\\u0180\\u019e\\u01a2\\u01b5\\u01b7\\u01ba\\u01dc\\u0215\\u0273\\u0278\\u027ecy;\\u4427PY\\u803b\\xa9\\u40a9\\u0180cpy\\u015d\\u0162\\u017aute;\\u4106\\u0100;i\\u0167\\u0168\\u62d2talDifferentialD;\\u6145leys;\\u612d\\u0200aeio\\u0189\\u018e\\u0194\\u0198ron;\\u410cdil\\u803b\\xc7\\u40c7rc;\\u4108nint;\\u6230ot;\\u410a\\u0100dn\\u01a7\\u01adilla;\\u40b8terDot;\\u40b7\\xf2\\u017fi;\\u43a7rcle\\u0200DMPT\\u01c7\\u01cb\\u01d1\\u01d6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01e2\\u01f8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020foubleQuote;\\u601duote;\\u6019\\u0200lnpu\\u021e\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6a74\\u0180git\\u022f\\u0236\\u023aruent;\\u6261nt;\\u622fourIntegral;\\u622e\\u0100fr\\u024c\\u024e;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6a2fcr;\\uc000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62d3ap;\\u624d\\u0580DJSZacefios\\u02a0\\u02ac\\u02b0\\u02b4\\u02b8\\u02cb\\u02d7\\u02e1\\u02e6\\u0333\\u048d\\u0100;o\\u0179\\u02a5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440f\\u0180grs\\u02bf\\u02c4\\u02c7ger;\\u6021r;\\u61a1hv;\\u6ae4\\u0100ay\\u02d0\\u02d5ron;\\u410e;\\u4414l\\u0100;t\\u02dd\\u02de\\u6207a;\\u4394r;\\uc000\\ud835\\udd07\\u0100af\\u02eb\\u0327\\u0100cm\\u02f0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031ccute;\\u40b4o\\u0174\\u030b\\u030d;\\u42d9bleAcute;\\u42ddrave;\\u4060ilde;\\u42dcond;\\u62c4ferentialD;\\u6146\\u0470\\u033d\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uc000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034d\\u40a8ot;\\u60dcqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03cf\\u03e2\\u03f8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037b\\xbb\\u0349nArrow;\\u61d3\\u0100eo\\u0387\\u03a4ft\\u0180ART\\u0390\\u0396\\u03a1rrow;\\u61d0ightArrow;\\u61d4e\\xe5\\u02cang\\u0100LR\\u03ab\\u03c4eft\\u0100AR\\u03b3\\u03b9rrow;\\u67f8ightArrow;\\u67faightArrow;\\u67f9ight\\u0100AT\\u03d8\\u03derrow;\\u61d2ee;\\u62a8p\\u0241\\u03e9\\0\\0\\u03efrrow;\\u61d1ownArrow;\\u61d5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042a\\u0430\\u045e\\u047f\\u037crrow\\u0180;BU\\u041d\\u041e\\u0422\\u6193ar;\\u6913pArrow;\\u61f5reve;\\u4311eft\\u02d2\\u043a\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695eector\\u0100;B\\u0459\\u045a\\u61bdar;\\u6956ight\\u01d4\\u0467\\0\\u0471eeVector;\\u695fector\\u0100;B\\u047a\\u047b\\u61c1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62a4rrow;\\u61a7\\u0100ct\\u0492\\u0497r;\\uc000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04bd\\u04c0\\u04c4\\u04cb\\u04de\\u04e2\\u04e7\\u04ee\\u04f5\\u0521\\u052f\\u0536\\u0552\\u055d\\u0560\\u0565G;\\u414aH\\u803b\\xd0\\u40d0cute\\u803b\\xc9\\u40c9\\u0180aiy\\u04d2\\u04d7\\u04dcron;\\u411arc\\u803b\\xca\\u40ca;\\u442dot;\\u4116r;\\uc000\\ud835\\udd08rave\\u803b\\xc8\\u40c8ement;\\u6208\\u0100ap\\u04fa\\u04fecr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65fberySmallSquare;\\u65ab\\u0100gp\\u0526\\u052aon;\\u4118f;\\uc000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053c\\u0549l\\u0100;T\\u0542\\u0543\\u6a75ilde;\\u6242librium;\\u61cc\\u0100ci\\u0557\\u055ar;\\u6130m;\\u6a73a;\\u4397ml\\u803b\\xcb\\u40cb\\u0100ip\\u056a\\u056fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058d\\u05b2\\u05ccy;\\u4424r;\\uc000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05a3mallSquare;\\u65fcerySmallSquare;\\u65aa\\u0370\\u05ba\\0\\u05bf\\0\\0\\u05c4f;\\uc000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05cb\\u0600JTabcdfgorst\\u05e8\\u05ec\\u05ef\\u05fa\\u0600\\u0612\\u0616\\u061b\\u061d\\u0623\\u066c\\u0672cy;\\u4403\\u803b>\\u403emma\\u0100;d\\u05f7\\u05f8\\u4393;\\u43dcreve;\\u411e\\u0180eiy\\u0607\\u060c\\u0610dil;\\u4122rc;\\u411c;\\u4413ot;\\u4120r;\\uc000\\ud835\\udd0a;\\u62d9pf;\\uc000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064e\\u0656\\u065b\\u0666qual\\u0100;L\\u063e\\u063f\\u6265ess;\\u62dbullEqual;\\u6267reater;\\u6aa2ess;\\u6277lantEqual;\\u6a7eilde;\\u6273cr;\\uc000\\ud835\\udca2;\\u626b\\u0400Aacfiosu\\u0685\\u068b\\u0696\\u069b\\u069e\\u06aa\\u06be\\u06caRDcy;\\u442a\\u0100ct\\u0690\\u0694ek;\\u42c7;\\u405eirc;\\u4124r;\\u610clbertSpace;\\u610b\\u01f0\\u06af\\0\\u06b2f;\\u610dizontalLine;\\u6500\\u0100ct\\u06c3\\u06c5\\xf2\\u06a9rok;\\u4126mp\\u0144\\u06d0\\u06d8ownHum\\xf0\\u012fqual;\\u624f\\u0700EJOacdfgmnostu\\u06fa\\u06fe\\u0703\\u0707\\u070e\\u071a\\u071e\\u0721\\u0728\\u0744\\u0778\\u078b\\u078f\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803b\\xcd\\u40cd\\u0100iy\\u0713\\u0718rc\\u803b\\xce\\u40ce;\\u4418ot;\\u4130r;\\u6111rave\\u803b\\xcc\\u40cc\\u0180;ap\\u0720\\u072f\\u073f\\u0100cg\\u0734\\u0737r;\\u412ainaryI;\\u6148lie\\xf3\\u03dd\\u01f4\\u0749\\0\\u0762\\u0100;e\\u074d\\u074e\\u622c\\u0100gr\\u0753\\u0758ral;\\u622bsection;\\u62c2isible\\u0100CT\\u076c\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077f\\u0783\\u0788on;\\u412ef;\\uc000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01eb\\u079a\\0\\u079ecy;\\u4406l\\u803b\\xcf\\u40cf\\u0280cfosu\\u07ac\\u07b7\\u07bc\\u07c2\\u07d0\\u0100iy\\u07b1\\u07b5rc;\\u4134;\\u4419r;\\uc000\\ud835\\udd0dpf;\\uc000\\ud835\\udd41\\u01e3\\u07c7\\0\\u07ccr;\\uc000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07e4\\u07e8\\u07ec\\u07f1\\u07fd\\u0802\\u0808cy;\\u4425cy;\\u440cppa;\\u439a\\u0100ey\\u07f6\\u07fbdil;\\u4136;\\u441ar;\\uc000\\ud835\\udd0epf;\\uc000\\ud835\\udd42cr;\\uc000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082c\\u0850\\u0863\\u09b3\\u09b8\\u09c7\\u09cd\\u0a37\\u0a47cy;\\u4409\\u803b<\\u403c\\u0280cmnpr\\u0837\\u083c\\u0841\\u0844\\u084dute;\\u4139bda;\\u439bg;\\u67ealacetrf;\\u6112r;\\u619e\\u0180aey\\u0857\\u085c\\u0861ron;\\u413ddil;\\u413b;\\u441b\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087e\\u08a9\\u08b1\\u08e0\\u08e6\\u08fc\\u092f\\u095b\\u0390\\u096a\\u0100nr\\u0883\\u088fgleBracket;\\u67e8row\\u0180;BR\\u0899\\u089a\\u089e\\u6190ar;\\u61e4ightArrow;\\u61c6eiling;\\u6308o\\u01f5\\u08b7\\0\\u08c3bleBracket;\\u67e6n\\u01d4\\u08c8\\0\\u08d2eeVector;\\u6961ector\\u0100;B\\u08db\\u08dc\\u61c3ar;\\u6959loor;\\u630aight\\u0100AV\\u08ef\\u08f5rrow;\\u6194ector;\\u694e\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090a\\u0910\\u62a3rrow;\\u61a4ector;\\u695aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62b2ar;\\u69cfqual;\\u62b4p\\u0180DTV\\u0937\\u0942\\u094cownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61bfar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61bcar;\\u6952ight\\xe1\\u039cs\\u0300EFGLST\\u097e\\u098b\\u0995\\u099d\\u09a2\\u09adqualGreater;\\u62daullEqual;\\u6266reater;\\u6276ess;\\u6aa1lantEqual;\\u6a7dilde;\\u6272r;\\uc000\\ud835\\udd0f\\u0100;e\\u09bd\\u09be\\u62d8ftarrow;\\u61daidot;\\u413f\\u0180npw\\u09d4\\u0a16\\u0a1bg\\u0200LRlr\\u09de\\u09f7\\u0a02\\u0a10eft\\u0100AR\\u09e6\\u09ecrrow;\\u67f5ightArrow;\\u67f7ightArrow;\\u67f6eft\\u0100ar\\u03b3\\u0a0aight\\xe1\\u03bfight\\xe1\\u03caf;\\uc000\\ud835\\udd43er\\u0100LR\\u0a22\\u0a2ceftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0a3e\\u0a40\\u0a42\\xf2\\u084c;\\u61b0rok;\\u4141;\\u626a\\u0400acefiosu\\u0a5a\\u0a5d\\u0a60\\u0a77\\u0a7c\\u0a85\\u0a8b\\u0a8ep;\\u6905y;\\u441c\\u0100dl\\u0a65\\u0a6fiumSpace;\\u605flintrf;\\u6133r;\\uc000\\ud835\\udd10nusPlus;\\u6213pf;\\uc000\\ud835\\udd44c\\xf2\\u0a76;\\u439c\\u0480Jacefostu\\u0aa3\\u0aa7\\u0aad\\u0ac0\\u0b14\\u0b19\\u0d91\\u0d97\\u0d9ecy;\\u440acute;\\u4143\\u0180aey\\u0ab4\\u0ab9\\u0aberon;\\u4147dil;\\u4145;\\u441d\\u0180gsw\\u0ac7\\u0af0\\u0b0eative\\u0180MTV\\u0ad3\\u0adf\\u0ae8ediumSpace;\\u600bhi\\u0100cn\\u0ae6\\u0ad8\\xeb\\u0ad9eryThi\\xee\\u0ad9ted\\u0100GL\\u0af8\\u0b06reaterGreate\\xf2\\u0673essLes\\xf3\\u0a48Line;\\u400ar;\\uc000\\ud835\\udd11\\u0200Bnpt\\u0b22\\u0b28\\u0b37\\u0b3areak;\\u6060BreakingSpace;\\u40a0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0b55\\u0b56\\u0b6a\\u0b7c\\u0ba1\\u0beb\\u0c04\\u0c5e\\u0c84\\u0ca6\\u0cd8\\u0d61\\u0d85\\u6aec\\u0100ou\\u0b5b\\u0b64ngruent;\\u6262pCap;\\u626doubleVerticalBar;\\u6226\\u0180lqx\\u0b83\\u0b8a\\u0b9bement;\\u6209ual\\u0100;T\\u0b92\\u0b93\\u6260ilde;\\uc000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0bb6\\u0bb7\\u0bbd\\u0bc9\\u0bd3\\u0bd8\\u0be5\\u626fqual;\\u6271ullEqual;\\uc000\\u2267\\u0338reater;\\uc000\\u226b\\u0338ess;\\u6279lantEqual;\\uc000\\u2a7e\\u0338ilde;\\u6275ump\\u0144\\u0bf2\\u0bfdownHump;\\uc000\\u224e\\u0338qual;\\uc000\\u224f\\u0338e\\u0100fs\\u0c0a\\u0c27tTriangle\\u0180;BE\\u0c1a\\u0c1b\\u0c21\\u62eaar;\\uc000\\u29cf\\u0338qual;\\u62ecs\\u0300;EGLST\\u0c35\\u0c36\\u0c3c\\u0c44\\u0c4b\\u0c58\\u626equal;\\u6270reater;\\u6278ess;\\uc000\\u226a\\u0338lantEqual;\\uc000\\u2a7d\\u0338ilde;\\u6274ested\\u0100GL\\u0c68\\u0c79reaterGreater;\\uc000\\u2aa2\\u0338essLess;\\uc000\\u2aa1\\u0338recedes\\u0180;ES\\u0c92\\u0c93\\u0c9b\\u6280qual;\\uc000\\u2aaf\\u0338lantEqual;\\u62e0\\u0100ei\\u0cab\\u0cb9verseElement;\\u620cghtTriangle\\u0180;BE\\u0ccb\\u0ccc\\u0cd2\\u62ebar;\\uc000\\u29d0\\u0338qual;\\u62ed\\u0100qu\\u0cdd\\u0d0cuareSu\\u0100bp\\u0ce8\\u0cf9set\\u0100;E\\u0cf0\\u0cf3\\uc000\\u228f\\u0338qual;\\u62e2erset\\u0100;E\\u0d03\\u0d06\\uc000\\u2290\\u0338qual;\\u62e3\\u0180bcp\\u0d13\\u0d24\\u0d4eset\\u0100;E\\u0d1b\\u0d1e\\uc000\\u2282\\u20d2qual;\\u6288ceeds\\u0200;EST\\u0d32\\u0d33\\u0d3b\\u0d46\\u6281qual;\\uc000\\u2ab0\\u0338lantEqual;\\u62e1ilde;\\uc000\\u227f\\u0338erset\\u0100;E\\u0d58\\u0d5b\\uc000\\u2283\\u20d2qual;\\u6289ilde\\u0200;EFT\\u0d6e\\u0d6f\\u0d75\\u0d7f\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uc000\\ud835\\udca9ilde\\u803b\\xd1\\u40d1;\\u439d\\u0700Eacdfgmoprstuv\\u0dbd\\u0dc2\\u0dc9\\u0dd5\\u0ddb\\u0de0\\u0de7\\u0dfc\\u0e02\\u0e20\\u0e22\\u0e32\\u0e3f\\u0e44lig;\\u4152cute\\u803b\\xd3\\u40d3\\u0100iy\\u0dce\\u0dd3rc\\u803b\\xd4\\u40d4;\\u441eblac;\\u4150r;\\uc000\\ud835\\udd12rave\\u803b\\xd2\\u40d2\\u0180aei\\u0dee\\u0df2\\u0df6cr;\\u414cga;\\u43a9cron;\\u439fpf;\\uc000\\ud835\\udd46enCurly\\u0100DQ\\u0e0e\\u0e1aoubleQuote;\\u601cuote;\\u6018;\\u6a54\\u0100cl\\u0e27\\u0e2cr;\\uc000\\ud835\\udcaaash\\u803b\\xd8\\u40d8i\\u016c\\u0e37\\u0e3cde\\u803b\\xd5\\u40d5es;\\u6a37ml\\u803b\\xd6\\u40d6er\\u0100BP\\u0e4b\\u0e60\\u0100ar\\u0e50\\u0e53r;\\u603eac\\u0100ek\\u0e5a\\u0e5c;\\u63deet;\\u63b4arenthesis;\\u63dc\\u0480acfhilors\\u0e7f\\u0e87\\u0e8a\\u0e8f\\u0e92\\u0e94\\u0e9d\\u0eb0\\u0efcrtialD;\\u6202y;\\u441fr;\\uc000\\ud835\\udd13i;\\u43a6;\\u43a0usMinus;\\u40b1\\u0100ip\\u0ea2\\u0eadncareplan\\xe5\\u069df;\\u6119\\u0200;eio\\u0eb9\\u0eba\\u0ee0\\u0ee4\\u6abbcedes\\u0200;EST\\u0ec8\\u0ec9\\u0ecf\\u0eda\\u627aqual;\\u6aaflantEqual;\\u627cilde;\\u627eme;\\u6033\\u0100dp\\u0ee9\\u0eeeuct;\\u620fortion\\u0100;a\\u0225\\u0ef9l;\\u621d\\u0100ci\\u0f01\\u0f06r;\\uc000\\ud835\\udcab;\\u43a8\\u0200Ufos\\u0f11\\u0f16\\u0f1b\\u0f1fOT\\u803b\\\"\\u4022r;\\uc000\\ud835\\udd14pf;\\u611acr;\\uc000\\ud835\\udcac\\u0600BEacefhiorsu\\u0f3e\\u0f43\\u0f47\\u0f60\\u0f73\\u0fa7\\u0faa\\u0fad\\u1096\\u10a9\\u10b4\\u10bearr;\\u6910G\\u803b\\xae\\u40ae\\u0180cnr\\u0f4e\\u0f53\\u0f56ute;\\u4154g;\\u67ebr\\u0100;t\\u0f5c\\u0f5d\\u61a0l;\\u6916\\u0180aey\\u0f67\\u0f6c\\u0f71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0f78\\u0f79\\u611cerse\\u0100EU\\u0f82\\u0f99\\u0100lq\\u0f87\\u0f8eement;\\u620builibrium;\\u61cbpEquilibrium;\\u696fr\\xbb\\u0f79o;\\u43a1ght\\u0400ACDFTUVa\\u0fc1\\u0feb\\u0ff3\\u1022\\u1028\\u105b\\u1087\\u03d8\\u0100nr\\u0fc6\\u0fd2gleBracket;\\u67e9row\\u0180;BL\\u0fdc\\u0fdd\\u0fe1\\u6192ar;\\u61e5eftArrow;\\u61c4eiling;\\u6309o\\u01f5\\u0ff9\\0\\u1005bleBracket;\\u67e7n\\u01d4\\u100a\\0\\u1014eeVector;\\u695dector\\u0100;B\\u101d\\u101e\\u61c2ar;\\u6955loor;\\u630b\\u0100er\\u102d\\u1043e\\u0180;AV\\u1035\\u1036\\u103c\\u62a2rrow;\\u61a6ector;\\u695biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62b3ar;\\u69d0qual;\\u62b5p\\u0180DTV\\u1063\\u106e\\u1078ownVector;\\u694feeVector;\\u695cector\\u0100;B\\u1082\\u1083\\u61bear;\\u6954ector\\u0100;B\\u1091\\u1092\\u61c0ar;\\u6953\\u0100pu\\u109b\\u109ef;\\u611dndImplies;\\u6970ightarrow;\\u61db\\u0100ch\\u10b9\\u10bcr;\\u611b;\\u61b1leDelayed;\\u69f4\\u0680HOacfhimoqstu\\u10e4\\u10f1\\u10f7\\u10fd\\u1119\\u111e\\u1151\\u1156\\u1161\\u1167\\u11b5\\u11bb\\u11bf\\u0100Cc\\u10e9\\u10eeHcy;\\u4429y;\\u4428FTcy;\\u442ccute;\\u415a\\u0280;aeiy\\u1108\\u1109\\u110e\\u1113\\u1117\\u6abcron;\\u4160dil;\\u415erc;\\u415c;\\u4421r;\\uc000\\ud835\\udd16ort\\u0200DLRU\\u112a\\u1134\\u113e\\u1149ownArrow\\xbb\\u041eeftArrow\\xbb\\u089aightArrow\\xbb\\u0fddpArrow;\\u6191gma;\\u43a3allCircle;\\u6218pf;\\uc000\\ud835\\udd4a\\u0272\\u116d\\0\\0\\u1170t;\\u621aare\\u0200;ISU\\u117b\\u117c\\u1189\\u11af\\u65a1ntersection;\\u6293u\\u0100bp\\u118f\\u119eset\\u0100;E\\u1197\\u1198\\u628fqual;\\u6291erset\\u0100;E\\u11a8\\u11a9\\u6290qual;\\u6292nion;\\u6294cr;\\uc000\\ud835\\udcaear;\\u62c6\\u0200bcmp\\u11c8\\u11db\\u1209\\u120b\\u0100;s\\u11cd\\u11ce\\u62d0et\\u0100;E\\u11cd\\u11d5qual;\\u6286\\u0100ch\\u11e0\\u1205eeds\\u0200;EST\\u11ed\\u11ee\\u11f4\\u11ff\\u627bqual;\\u6ab0lantEqual;\\u627dilde;\\u627fTh\\xe1\\u0f8c;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62d1rset\\u0100;E\\u121c\\u121d\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123e\\u1244\\u1249\\u1255\\u125e\\u1271\\u1276\\u129f\\u12c2\\u12c8\\u12d1ORN\\u803b\\xde\\u40deADE;\\u6122\\u0100Hc\\u124e\\u1252cy;\\u440by;\\u4426\\u0100bu\\u125a\\u125c;\\u4009;\\u43a4\\u0180aey\\u1265\\u126a\\u126fron;\\u4164dil;\\u4162;\\u4422r;\\uc000\\ud835\\udd17\\u0100ei\\u127b\\u1289\\u01f2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128e\\u1298kSpace;\\uc000\\u205f\\u200aSpace;\\u6009lde\\u0200;EFT\\u12ab\\u12ac\\u12b2\\u12bc\\u623cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uc000\\ud835\\udd4bipleDot;\\u60db\\u0100ct\\u12d6\\u12dbr;\\uc000\\ud835\\udcafrok;\\u4166\\u0ae1\\u12f7\\u130e\\u131a\\u1326\\0\\u132c\\u1331\\0\\0\\0\\0\\0\\u1338\\u133d\\u1377\\u1385\\0\\u13ff\\u1404\\u140a\\u1410\\u0100cr\\u12fb\\u1301ute\\u803b\\xda\\u40dar\\u0100;o\\u1307\\u1308\\u619fcir;\\u6949r\\u01e3\\u1313\\0\\u1316y;\\u440eve;\\u416c\\u0100iy\\u131e\\u1323rc\\u803b\\xdb\\u40db;\\u4423blac;\\u4170r;\\uc000\\ud835\\udd18rave\\u803b\\xd9\\u40d9acr;\\u416a\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135d\\u0100ar\\u134d\\u1350r;\\u405fac\\u0100ek\\u1357\\u1359;\\u63dfet;\\u63b5arenthesis;\\u63ddon\\u0100;P\\u1370\\u1371\\u62c3lus;\\u628e\\u0100gp\\u137b\\u137fon;\\u4172f;\\uc000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13ae\\u13b8\\u13c4\\u03e8\\u13d2\\u13d7\\u13f3rrow\\u0180;BD\\u1150\\u13a0\\u13a4ar;\\u6912ownArrow;\\u61c5ownArrow;\\u6195quilibrium;\\u696eee\\u0100;A\\u13cb\\u13cc\\u62a5rrow;\\u61a5own\\xe1\\u03f3er\\u0100LR\\u13de\\u13e8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13f9\\u13fa\\u43d2on;\\u43a5ing;\\u416ecr;\\uc000\\ud835\\udcb0ilde;\\u4168ml\\u803b\\xdc\\u40dc\\u0480Dbcdefosv\\u1427\\u142c\\u1430\\u1433\\u143e\\u1485\\u148a\\u1490\\u1496ash;\\u62abar;\\u6aeby;\\u4412ash\\u0100;l\\u143b\\u143c\\u62a9;\\u6ae6\\u0100er\\u1443\\u1445;\\u62c1\\u0180bty\\u144c\\u1450\\u147aar;\\u6016\\u0100;i\\u144f\\u1455cal\\u0200BLST\\u1461\\u1465\\u146a\\u1474ar;\\u6223ine;\\u407ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600ar;\\uc000\\ud835\\udd19pf;\\uc000\\ud835\\udd4dcr;\\uc000\\ud835\\udcb1dash;\\u62aa\\u0280cefos\\u14a7\\u14ac\\u14b1\\u14b6\\u14bcirc;\\u4174dge;\\u62c0r;\\uc000\\ud835\\udd1apf;\\uc000\\ud835\\udd4ecr;\\uc000\\ud835\\udcb2\\u0200fios\\u14cb\\u14d0\\u14d2\\u14d8r;\\uc000\\ud835\\udd1b;\\u439epf;\\uc000\\ud835\\udd4fcr;\\uc000\\ud835\\udcb3\\u0480AIUacfosu\\u14f1\\u14f5\\u14f9\\u14fd\\u1504\\u150f\\u1514\\u151a\\u1520cy;\\u442fcy;\\u4407cy;\\u442ecute\\u803b\\xdd\\u40dd\\u0100iy\\u1509\\u150drc;\\u4176;\\u442br;\\uc000\\ud835\\udd1cpf;\\uc000\\ud835\\udd50cr;\\uc000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153f\\u154b\\u154f\\u155d\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417d;\\u4417ot;\\u417b\\u01f2\\u1554\\0\\u155boWidt\\xe8\\u0ad9a;\\u4396r;\\u6128pf;\\u6124cr;\\uc000\\ud835\\udcb5\\u0be1\\u1583\\u158a\\u1590\\0\\u15b0\\u15b6\\u15bf\\0\\0\\0\\0\\u15c6\\u15db\\u15eb\\u165f\\u166d\\0\\u1695\\u169b\\u16b2\\u16b9\\0\\u16becute\\u803b\\xe1\\u40e1reve;\\u4103\\u0300;Ediuy\\u159c\\u159d\\u15a1\\u15a3\\u15a8\\u15ad\\u623e;\\uc000\\u223e\\u0333;\\u623frc\\u803b\\xe2\\u40e2te\\u80bb\\xb4\\u0306;\\u4430lig\\u803b\\xe6\\u40e6\\u0100;r\\xb2\\u15ba;\\uc000\\ud835\\udd1erave\\u803b\\xe0\\u40e0\\u0100ep\\u15ca\\u15d6\\u0100fp\\u15cf\\u15d4sym;\\u6135\\xe8\\u15d3ha;\\u43b1\\u0100ap\\u15dfc\\u0100cl\\u15e4\\u15e7r;\\u4101g;\\u6a3f\\u0264\\u15f0\\0\\0\\u160a\\u0280;adsv\\u15fa\\u15fb\\u15ff\\u1601\\u1607\\u6227nd;\\u6a55;\\u6a5clope;\\u6a58;\\u6a5a\\u0380;elmrsz\\u1618\\u1619\\u161b\\u161e\\u163f\\u164f\\u1659\\u6220;\\u69a4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163a\\u163c\\u163e;\\u69a8;\\u69a9;\\u69aa;\\u69ab;\\u69ac;\\u69ad;\\u69ae;\\u69aft\\u0100;v\\u1645\\u1646\\u621fb\\u0100;d\\u164c\\u164d\\u62be;\\u699d\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637c\\u0100gp\\u1663\\u1667on;\\u4105f;\\uc000\\ud835\\udd52\\u0380;Eaeiop\\u12c1\\u167b\\u167d\\u1682\\u1684\\u1687\\u168a;\\u6a70cir;\\u6a6f;\\u624ad;\\u624bs;\\u4027rox\\u0100;e\\u12c1\\u1692\\xf1\\u1683ing\\u803b\\xe5\\u40e5\\u0180cty\\u16a1\\u16a6\\u16a8r;\\uc000\\ud835\\udcb6;\\u402amp\\u0100;e\\u12c1\\u16af\\xf1\\u0288ilde\\u803b\\xe3\\u40e3ml\\u803b\\xe4\\u40e4\\u0100ci\\u16c2\\u16c8onin\\xf4\\u0272nt;\\u6a11\\u0800Nabcdefiklnoprsu\\u16ed\\u16f1\\u1730\\u173c\\u1743\\u1748\\u1778\\u177d\\u17e0\\u17e6\\u1839\\u1850\\u170d\\u193d\\u1948\\u1970ot;\\u6aed\\u0100cr\\u16f6\\u171ek\\u0200ceps\\u1700\\u1705\\u170d\\u1713ong;\\u624cpsilon;\\u43f6rime;\\u6035im\\u0100;e\\u171a\\u171b\\u623dq;\\u62cd\\u0176\\u1722\\u1726ee;\\u62bded\\u0100;g\\u172c\\u172d\\u6305e\\xbb\\u172drk\\u0100;t\\u135c\\u1737brk;\\u63b6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601e\\u0280cmprt\\u1753\\u175b\\u1761\\u1764\\u1768aus\\u0100;e\\u010a\\u0109ptyv;\\u69b0s\\xe9\\u170cno\\xf5\\u0113\\u0180ahw\\u176f\\u1771\\u1773;\\u43b2;\\u6136een;\\u626cr;\\uc000\\ud835\\udd1fg\\u0380costuvw\\u178d\\u179d\\u17b3\\u17c1\\u17d5\\u17db\\u17de\\u0180aiu\\u1794\\u1796\\u179a\\xf0\\u0760rc;\\u65efp\\xbb\\u1371\\u0180dpt\\u17a4\\u17a8\\u17adot;\\u6a00lus;\\u6a01imes;\\u6a02\\u0271\\u17b9\\0\\0\\u17becup;\\u6a06ar;\\u6605riangle\\u0100du\\u17cd\\u17d2own;\\u65bdp;\\u65b3plus;\\u6a04e\\xe5\\u1444\\xe5\\u14adarow;\\u690d\\u0180ako\\u17ed\\u1826\\u1835\\u0100cn\\u17f2\\u1823k\\u0180lst\\u17fa\\u05ab\\u1802ozenge;\\u69ebriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181d\\u65b4own;\\u65beeft;\\u65c2ight;\\u65b8k;\\u6423\\u01b1\\u182b\\0\\u1833\\u01b2\\u182f\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183e\\u184d\\u0100;q\\u1843\\u1846\\uc000=\\u20e5uiv;\\uc000\\u2261\\u20e5t;\\u6310\\u0200ptwx\\u1859\\u185e\\u1867\\u186cf;\\uc000\\ud835\\udd53\\u0100;t\\u13cb\\u1863om\\xbb\\u13cctie;\\u62c8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18aa\\u18bb\\u18d7\\u18db\\u18ec\\u18ff\\u1905\\u190a\\u1910\\u1921\\u0200LRlr\\u188e\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18a1\\u18a2\\u18a4\\u18a6\\u18a8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18b3\\u18b5\\u18b7\\u18b9;\\u655d;\\u655a;\\u655c;\\u6559\\u0380;HLRhlr\\u18ca\\u18cb\\u18cd\\u18cf\\u18d1\\u18d3\\u18d5\\u6551;\\u656c;\\u6563;\\u6560;\\u656b;\\u6562;\\u655fox;\\u69c9\\u0200LRlr\\u18e4\\u18e6\\u18e8\\u18ea;\\u6555;\\u6552;\\u6510;\\u650c\\u0280;DUdu\\u06bd\\u18f7\\u18f9\\u18fb\\u18fd;\\u6565;\\u6568;\\u652c;\\u6534inus;\\u629flus;\\u629eimes;\\u62a0\\u0200LRlr\\u1919\\u191b\\u191d\\u191f;\\u655b;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193b\\u6502;\\u656a;\\u6561;\\u655e;\\u653c;\\u6524;\\u651c\\u0100ev\\u0123\\u1942bar\\u803b\\xa6\\u40a6\\u0200ceio\\u1951\\u1956\\u195a\\u1960r;\\uc000\\ud835\\udcb7mi;\\u604fm\\u0100;e\\u171a\\u171cl\\u0180;bh\\u1968\\u1969\\u196b\\u405c;\\u69c5sub;\\u67c8\\u016c\\u1974\\u197el\\u0100;e\\u1979\\u197a\\u6022t\\xbb\\u197ap\\u0180;Ee\\u012f\\u1985\\u1987;\\u6aae\\u0100;q\\u06dc\\u06db\\u0ce1\\u19a7\\0\\u19e8\\u1a11\\u1a15\\u1a32\\0\\u1a37\\u1a50\\0\\0\\u1ab4\\0\\0\\u1ac1\\0\\0\\u1b21\\u1b2e\\u1b4d\\u1b52\\0\\u1bfd\\0\\u1c0c\\u0180cpr\\u19ad\\u19b2\\u19ddute;\\u4107\\u0300;abcds\\u19bf\\u19c0\\u19c4\\u19ca\\u19d5\\u19d9\\u6229nd;\\u6a44rcup;\\u6a49\\u0100au\\u19cf\\u19d2p;\\u6a4bp;\\u6a47ot;\\u6a40;\\uc000\\u2229\\ufe00\\u0100eo\\u19e2\\u19e5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19f0\\u19fb\\u1a01\\u1a05\\u01f0\\u19f5\\0\\u19f8s;\\u6a4don;\\u410ddil\\u803b\\xe7\\u40e7rc;\\u4109ps\\u0100;s\\u1a0c\\u1a0d\\u6a4cm;\\u6a50ot;\\u410b\\u0180dmn\\u1a1b\\u1a20\\u1a26il\\u80bb\\xb8\\u01adptyv;\\u69b2t\\u8100\\xa2;e\\u1a2d\\u1a2e\\u40a2r\\xe4\\u01b2r;\\uc000\\ud835\\udd20\\u0180cei\\u1a3d\\u1a40\\u1a4dy;\\u4447ck\\u0100;m\\u1a47\\u1a48\\u6713ark\\xbb\\u1a48;\\u43c7r\\u0380;Ecefms\\u1a5f\\u1a60\\u1a62\\u1a6b\\u1aa4\\u1aaa\\u1aae\\u65cb;\\u69c3\\u0180;el\\u1a69\\u1a6a\\u1a6d\\u42c6q;\\u6257e\\u0261\\u1a74\\0\\0\\u1a88rrow\\u0100lr\\u1a7c\\u1a81eft;\\u61baight;\\u61bb\\u0280RSacd\\u1a92\\u1a94\\u1a96\\u1a9a\\u1a9f\\xbb\\u0f47;\\u64c8st;\\u629birc;\\u629aash;\\u629dnint;\\u6a10id;\\u6aefcir;\\u69c2ubs\\u0100;u\\u1abb\\u1abc\\u6663it\\xbb\\u1abc\\u02ec\\u1ac7\\u1ad4\\u1afa\\0\\u1b0aon\\u0100;e\\u1acd\\u1ace\\u403a\\u0100;q\\xc7\\xc6\\u026d\\u1ad9\\0\\0\\u1ae2a\\u0100;t\\u1ade\\u1adf\\u402c;\\u4040\\u0180;fl\\u1ae8\\u1ae9\\u1aeb\\u6201\\xee\\u1160e\\u0100mx\\u1af1\\u1af6ent\\xbb\\u1ae9e\\xf3\\u024d\\u01e7\\u1afe\\0\\u1b07\\u0100;d\\u12bb\\u1b02ot;\\u6a6dn\\xf4\\u0246\\u0180fry\\u1b10\\u1b14\\u1b17;\\uc000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1b1dr;\\u6117\\u0100ao\\u1b25\\u1b29rr;\\u61b5ss;\\u6717\\u0100cu\\u1b32\\u1b37r;\\uc000\\ud835\\udcb8\\u0100bp\\u1b3c\\u1b44\\u0100;e\\u1b41\\u1b42\\u6acf;\\u6ad1\\u0100;e\\u1b49\\u1b4a\\u6ad0;\\u6ad2dot;\\u62ef\\u0380delprvw\\u1b60\\u1b6c\\u1b77\\u1b82\\u1bac\\u1bd4\\u1bf9arr\\u0100lr\\u1b68\\u1b6a;\\u6938;\\u6935\\u0270\\u1b72\\0\\0\\u1b75r;\\u62dec;\\u62dfarr\\u0100;p\\u1b7f\\u1b80\\u61b6;\\u693d\\u0300;bcdos\\u1b8f\\u1b90\\u1b96\\u1ba1\\u1ba5\\u1ba8\\u622arcap;\\u6a48\\u0100au\\u1b9b\\u1b9ep;\\u6a46p;\\u6a4aot;\\u628dr;\\u6a45;\\uc000\\u222a\\ufe00\\u0200alrv\\u1bb5\\u1bbf\\u1bde\\u1be3rr\\u0100;m\\u1bbc\\u1bbd\\u61b7;\\u693cy\\u0180evw\\u1bc7\\u1bd4\\u1bd8q\\u0270\\u1bce\\0\\0\\u1bd2re\\xe3\\u1b73u\\xe3\\u1b75ee;\\u62ceedge;\\u62cfen\\u803b\\xa4\\u40a4earrow\\u0100lr\\u1bee\\u1bf3eft\\xbb\\u1b80ight\\xbb\\u1bbde\\xe4\\u1bdd\\u0100ci\\u1c01\\u1c07onin\\xf4\\u01f7nt;\\u6231lcty;\\u632d\\u0980AHabcdefhijlorstuwz\\u1c38\\u1c3b\\u1c3f\\u1c5d\\u1c69\\u1c75\\u1c8a\\u1c9e\\u1cac\\u1cb7\\u1cfb\\u1cff\\u1d0d\\u1d7b\\u1d91\\u1dab\\u1dbb\\u1dc6\\u1dcdr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1c48\\u1c4d\\u1c52\\u1c54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1c5a\\u1c5b\\u6010\\xbb\\u090a\\u016b\\u1c61\\u1c67arow;\\u690fa\\xe3\\u0315\\u0100ay\\u1c6e\\u1c73ron;\\u410f;\\u4434\\u0180;ao\\u0332\\u1c7c\\u1c84\\u0100gr\\u02bf\\u1c81r;\\u61catseq;\\u6a77\\u0180glm\\u1c91\\u1c94\\u1c98\\u803b\\xb0\\u40b0ta;\\u43b4ptyv;\\u69b1\\u0100ir\\u1ca3\\u1ca8sht;\\u697f;\\uc000\\ud835\\udd21ar\\u0100lr\\u1cb3\\u1cb5\\xbb\\u08dc\\xbb\\u101e\\u0280aegsv\\u1cc2\\u0378\\u1cd6\\u1cdc\\u1ce0m\\u0180;os\\u0326\\u1cca\\u1cd4nd\\u0100;s\\u0326\\u1cd1uit;\\u6666amma;\\u43ddin;\\u62f2\\u0180;io\\u1ce7\\u1ce8\\u1cf8\\u40f7de\\u8100\\xf7;o\\u1ce7\\u1cf0ntimes;\\u62c7n\\xf8\\u1cf7cy;\\u4452c\\u026f\\u1d06\\0\\0\\u1d0arn;\\u631eop;\\u630d\\u0280lptuw\\u1d18\\u1d1d\\u1d22\\u1d49\\u1d55lar;\\u4024f;\\uc000\\ud835\\udd55\\u0280;emps\\u030b\\u1d2d\\u1d37\\u1d3d\\u1d42q\\u0100;d\\u0352\\u1d33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62a1blebarwedg\\xe5\\xfan\\u0180adh\\u112e\\u1d5d\\u1d67ownarrow\\xf3\\u1c83arpoon\\u0100lr\\u1d72\\u1d76ef\\xf4\\u1cb4igh\\xf4\\u1cb6\\u0162\\u1d7f\\u1d85karo\\xf7\\u0f42\\u026f\\u1d8a\\0\\0\\u1d8ern;\\u631fop;\\u630c\\u0180cot\\u1d98\\u1da3\\u1da6\\u0100ry\\u1d9d\\u1da1;\\uc000\\ud835\\udcb9;\\u4455l;\\u69f6rok;\\u4111\\u0100dr\\u1db0\\u1db4ot;\\u62f1i\\u0100;f\\u1dba\\u1816\\u65bf\\u0100ah\\u1dc0\\u1dc3r\\xf2\\u0429a\\xf2\\u0fa6angle;\\u69a6\\u0100ci\\u1dd2\\u1dd5y;\\u445fgrarr;\\u67ff\\u0900Dacdefglmnopqrstux\\u1e01\\u1e09\\u1e19\\u1e38\\u0578\\u1e3c\\u1e49\\u1e61\\u1e7e\\u1ea5\\u1eaf\\u1ebd\\u1ee1\\u1f2a\\u1f37\\u1f44\\u1f4e\\u1f5a\\u0100Do\\u1e06\\u1d34o\\xf4\\u1c89\\u0100cs\\u1e0e\\u1e14ute\\u803b\\xe9\\u40e9ter;\\u6a6e\\u0200aioy\\u1e22\\u1e27\\u1e31\\u1e36ron;\\u411br\\u0100;c\\u1e2d\\u1e2e\\u6256\\u803b\\xea\\u40ealon;\\u6255;\\u444dot;\\u4117\\u0100Dr\\u1e41\\u1e45ot;\\u6252;\\uc000\\ud835\\udd22\\u0180;rs\\u1e50\\u1e51\\u1e57\\u6a9aave\\u803b\\xe8\\u40e8\\u0100;d\\u1e5c\\u1e5d\\u6a96ot;\\u6a98\\u0200;ils\\u1e6a\\u1e6b\\u1e72\\u1e74\\u6a99nters;\\u63e7;\\u6113\\u0100;d\\u1e79\\u1e7a\\u6a95ot;\\u6a97\\u0180aps\\u1e85\\u1e89\\u1e97cr;\\u4113ty\\u0180;sv\\u1e92\\u1e93\\u1e95\\u6205et\\xbb\\u1e93p\\u01001;\\u1e9d\\u1ea4\\u0133\\u1ea1\\u1ea3;\\u6004;\\u6005\\u6003\\u0100gs\\u1eaa\\u1eac;\\u414bp;\\u6002\\u0100gp\\u1eb4\\u1eb8on;\\u4119f;\\uc000\\ud835\\udd56\\u0180als\\u1ec4\\u1ece\\u1ed2r\\u0100;s\\u1eca\\u1ecb\\u62d5l;\\u69e3us;\\u6a71i\\u0180;lv\\u1eda\\u1edb\\u1edf\\u43b5on\\xbb\\u1edb;\\u43f5\\u0200csuv\\u1eea\\u1ef3\\u1f0b\\u1f23\\u0100io\\u1eef\\u1e31rc\\xbb\\u1e2e\\u0269\\u1ef9\\0\\0\\u1efb\\xed\\u0548ant\\u0100gl\\u1f02\\u1f06tr\\xbb\\u1e5dess\\xbb\\u1e7a\\u0180aei\\u1f12\\u1f16\\u1f1als;\\u403dst;\\u625fv\\u0100;D\\u0235\\u1f20D;\\u6a78parsl;\\u69e5\\u0100Da\\u1f2f\\u1f33ot;\\u6253rr;\\u6971\\u0180cdi\\u1f3e\\u1f41\\u1ef8r;\\u612fo\\xf4\\u0352\\u0100ah\\u1f49\\u1f4b;\\u43b7\\u803b\\xf0\\u40f0\\u0100mr\\u1f53\\u1f57l\\u803b\\xeb\\u40ebo;\\u60ac\\u0180cip\\u1f61\\u1f64\\u1f67l;\\u4021s\\xf4\\u056e\\u0100eo\\u1f6c\\u1f74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09e1\\u1f92\\0\\u1f9e\\0\\u1fa1\\u1fa7\\0\\0\\u1fc6\\u1fcc\\0\\u1fd3\\0\\u1fe6\\u1fea\\u2000\\0\\u2008\\u205allingdotse\\xf1\\u1e44y;\\u4444male;\\u6640\\u0180ilr\\u1fad\\u1fb3\\u1fc1lig;\\u8000\\ufb03\\u0269\\u1fb9\\0\\0\\u1fbdg;\\u8000\\ufb00ig;\\u8000\\ufb04;\\uc000\\ud835\\udd23lig;\\u8000\\ufb01lig;\\uc000fj\\u0180alt\\u1fd9\\u1fdc\\u1fe1t;\\u666dig;\\u8000\\ufb02ns;\\u65b1of;\\u4192\\u01f0\\u1fee\\0\\u1ff3f;\\uc000\\ud835\\udd57\\u0100ak\\u05bf\\u1ff7\\u0100;v\\u1ffc\\u1ffd\\u62d4;\\u6ad9artint;\\u6a0d\\u0100ao\\u200c\\u2055\\u0100cs\\u2011\\u2052\\u03b1\\u201a\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03b2\\u2022\\u2025\\u2027\\u202a\\u202c\\0\\u202e\\u803b\\xbd\\u40bd;\\u6153\\u803b\\xbc\\u40bc;\\u6155;\\u6159;\\u615b\\u01b3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02b4\\u203e\\u2041\\0\\0\\u2043\\u803b\\xbe\\u40be;\\u6157;\\u615c5;\\u6158\\u01b6\\u204c\\0\\u204e;\\u615a;\\u615d8;\\u615el;\\u6044wn;\\u6322cr;\\uc000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209f\\u20a5\\u20b0\\u20b4\\u20f0\\u20f5\\u20fa\\u20ff\\u2103\\u2112\\u2138\\u0317\\u213e\\u2152\\u219e\\u0100;l\\u064d\\u2087;\\u6a8c\\u0180cmp\\u2090\\u2095\\u209dute;\\u41f5ma\\u0100;d\\u209c\\u1cda\\u43b3;\\u6a86reve;\\u411f\\u0100iy\\u20aa\\u20aerc;\\u411d;\\u4433ot;\\u4121\\u0200;lqs\\u063e\\u0642\\u20bd\\u20c9\\u0180;qs\\u063e\\u064c\\u20c4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20d2\\u20d5\\u20e5c;\\u6aa9ot\\u0100;o\\u20dc\\u20dd\\u6a80\\u0100;l\\u20e2\\u20e3\\u6a82;\\u6a84\\u0100;e\\u20ea\\u20ed\\uc000\\u22db\\ufe00s;\\u6a94r;\\uc000\\ud835\\udd24\\u0100;g\\u0673\\u061bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065a\\u210c\\u210e\\u2110;\\u6a92;\\u6aa5;\\u6aa4\\u0200Eaes\\u211b\\u211d\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6a8arox\\xbb\\u2124\\u0100;q\\u212e\\u212f\\u6a88\\u0100;q\\u212e\\u211bim;\\u62e7pf;\\uc000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610am\\u0180;el\\u066b\\u214e\\u2150;\\u6a8e;\\u6a90\\u8300>;cdlqr\\u05ee\\u2160\\u216a\\u216e\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6aa7r;\\u6a7aot;\\u62d7Par;\\u6995uest;\\u6a7c\\u0280adels\\u2184\\u216a\\u2190\\u0656\\u219b\\u01f0\\u2189\\0\\u218epro\\xf8\\u209er;\\u6978q\\u0100lq\\u063f\\u2196les\\xf3\\u2088i\\xed\\u066b\\u0100en\\u21a3\\u21adrtneqq;\\uc000\\u2269\\ufe00\\xc5\\u21aa\\u0500Aabcefkosy\\u21c4\\u21c7\\u21f1\\u21f5\\u21fa\\u2218\\u221d\\u222f\\u2268\\u227dr\\xf2\\u03a0\\u0200ilmr\\u21d0\\u21d4\\u21d7\\u21dbrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06a9\\u0100dr\\u21e0\\u21e4cy;\\u444a\\u0180;cw\\u08f4\\u21eb\\u21efir;\\u6948;\\u61adar;\\u610firc;\\u4125\\u0180alr\\u2201\\u220e\\u2213rts\\u0100;u\\u2209\\u220a\\u6665it\\xbb\\u220alip;\\u6026con;\\u62b9r;\\uc000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223a\\u223e\\u2243\\u225e\\u2263rr;\\u61fftht;\\u623bk\\u0100lr\\u2249\\u2253eftarrow;\\u61a9ightarrow;\\u61aaf;\\uc000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226f\\u2274\\u2278r;\\uc000\\ud835\\udcbdas\\xe8\\u21f4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1c5b\\u0ae1\\u22a3\\0\\u22aa\\0\\u22b8\\u22c5\\u22ce\\0\\u22d5\\u22f3\\0\\0\\u22f8\\u2322\\u2367\\u2362\\u237f\\0\\u2386\\u23aa\\u23b4cute\\u803b\\xed\\u40ed\\u0180;iy\\u0771\\u22b0\\u22b5rc\\u803b\\xee\\u40ee;\\u4438\\u0100cx\\u22bc\\u22bfy;\\u4435cl\\u803b\\xa1\\u40a1\\u0100fr\\u039f\\u22c9;\\uc000\\ud835\\udd26rave\\u803b\\xec\\u40ec\\u0200;ino\\u073e\\u22dd\\u22e9\\u22ee\\u0100in\\u22e2\\u22e6nt;\\u6a0ct;\\u622dfin;\\u69dcta;\\u6129lig;\\u4133\\u0180aop\\u22fe\\u231a\\u231d\\u0180cgt\\u2305\\u2308\\u2317r;\\u412b\\u0180elp\\u071f\\u230f\\u2313in\\xe5\\u078ear\\xf4\\u0720h;\\u4131f;\\u62b7ed;\\u41b5\\u0280;cfot\\u04f4\\u232c\\u2331\\u233d\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621eie;\\u69dddo\\xf4\\u2319\\u0280;celp\\u0757\\u234c\\u2350\\u235b\\u2361al;\\u62ba\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234darhk;\\u6a17rod;\\u6a3c\\u0200cgpt\\u236f\\u2372\\u2376\\u237by;\\u4451on;\\u412ff;\\uc000\\ud835\\udd5aa;\\u43b9uest\\u803b\\xbf\\u40bf\\u0100ci\\u238a\\u238fr;\\uc000\\ud835\\udcben\\u0280;Edsv\\u04f4\\u239b\\u239d\\u23a1\\u04f3;\\u62f9ot;\\u62f5\\u0100;v\\u23a6\\u23a7\\u62f4;\\u62f3\\u0100;i\\u0777\\u23aelde;\\u4129\\u01eb\\u23b8\\0\\u23bccy;\\u4456l\\u803b\\xef\\u40ef\\u0300cfmosu\\u23cc\\u23d7\\u23dc\\u23e1\\u23e7\\u23f5\\u0100iy\\u23d1\\u23d5rc;\\u4135;\\u4439r;\\uc000\\ud835\\udd27ath;\\u4237pf;\\uc000\\ud835\\udd5b\\u01e3\\u23ec\\0\\u23f1r;\\uc000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240b\\u2416\\u2422\\u2427\\u242d\\u2431\\u2435\\u243bppa\\u0100;v\\u2413\\u2414\\u43ba;\\u43f0\\u0100ey\\u241b\\u2420dil;\\u4137;\\u443ar;\\uc000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445cpf;\\uc000\\ud835\\udd5ccr;\\uc000\\ud835\\udcc0\\u0b80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248d\\u2491\\u250e\\u253d\\u255a\\u2580\\u264e\\u265e\\u2665\\u2679\\u267d\\u269a\\u26b2\\u26d8\\u275d\\u2768\\u278b\\u27c0\\u2801\\u2812\\u0180art\\u2477\\u247a\\u247cr\\xf2\\u09c6\\xf2\\u0395ail;\\u691barr;\\u690e\\u0100;g\\u0994\\u248b;\\u6a8bar;\\u6962\\u0963\\u24a5\\0\\u24aa\\0\\u24b1\\0\\0\\0\\0\\0\\u24b5\\u24ba\\0\\u24c6\\u24c8\\u24cd\\0\\u24f9ute;\\u413amptyv;\\u69b4ra\\xee\\u084cbda;\\u43bbg\\u0180;dl\\u088e\\u24c1\\u24c3;\\u6991\\xe5\\u088e;\\u6a85uo\\u803b\\xab\\u40abr\\u0400;bfhlpst\\u0899\\u24de\\u24e6\\u24e9\\u24eb\\u24ee\\u24f1\\u24f5\\u0100;f\\u089d\\u24e3s;\\u691fs;\\u691d\\xeb\\u2252p;\\u61abl;\\u6939im;\\u6973l;\\u61a2\\u0180;ae\\u24ff\\u2500\\u2504\\u6aabil;\\u6919\\u0100;s\\u2509\\u250a\\u6aad;\\uc000\\u2aad\\ufe00\\u0180abr\\u2515\\u2519\\u251drr;\\u690crk;\\u6772\\u0100ak\\u2522\\u252cc\\u0100ek\\u2528\\u252a;\\u407b;\\u405b\\u0100es\\u2531\\u2533;\\u698bl\\u0100du\\u2539\\u253b;\\u698f;\\u698d\\u0200aeuy\\u2546\\u254b\\u2556\\u2558ron;\\u413e\\u0100di\\u2550\\u2554il;\\u413c\\xec\\u08b0\\xe2\\u2529;\\u443b\\u0200cqrs\\u2563\\u2566\\u256d\\u257da;\\u6936uo\\u0100;r\\u0e19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694bh;\\u61b2\\u0280;fgqs\\u258b\\u258c\\u0989\\u25f3\\u25ff\\u6264t\\u0280ahlrt\\u2598\\u25a4\\u25b7\\u25c2\\u25e8rrow\\u0100;t\\u0899\\u25a1a\\xe9\\u24f6arpoon\\u0100du\\u25af\\u25b4own\\xbb\\u045ap\\xbb\\u0966eftarrows;\\u61c7ight\\u0180ahs\\u25cd\\u25d6\\u25derrow\\u0100;s\\u08f4\\u08a7arpoon\\xf3\\u0f98quigarro\\xf7\\u21f0hreetimes;\\u62cb\\u0180;qs\\u258b\\u0993\\u25falan\\xf4\\u09ac\\u0280;cdgs\\u09ac\\u260a\\u260d\\u261d\\u2628c;\\u6aa8ot\\u0100;o\\u2614\\u2615\\u6a7f\\u0100;r\\u261a\\u261b\\u6a81;\\u6a83\\u0100;e\\u2622\\u2625\\uc000\\u22da\\ufe00s;\\u6a93\\u0280adegs\\u2633\\u2639\\u263d\\u2649\\u264bppro\\xf8\\u24c6ot;\\u62d6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248c\\xf4\\u099bi\\xed\\u09b2\\u0180ilr\\u2655\\u08e1\\u265asht;\\u697c;\\uc000\\ud835\\udd29\\u0100;E\\u099c\\u2663;\\u6a91\\u0161\\u2669\\u2676r\\u0100du\\u25b2\\u266e\\u0100;l\\u0965\\u2673;\\u696alk;\\u6584cy;\\u4459\\u0280;acht\\u0a48\\u2688\\u268b\\u2691\\u2696r\\xf2\\u25c1orne\\xf2\\u1d08ard;\\u696bri;\\u65fa\\u0100io\\u269f\\u26a4dot;\\u4140ust\\u0100;a\\u26ac\\u26ad\\u63b0che\\xbb\\u26ad\\u0200Eaes\\u26bb\\u26bd\\u26c9\\u26d4;\\u6268p\\u0100;p\\u26c3\\u26c4\\u6a89rox\\xbb\\u26c4\\u0100;q\\u26ce\\u26cf\\u6a87\\u0100;q\\u26ce\\u26bbim;\\u62e6\\u0400abnoptwz\\u26e9\\u26f4\\u26f7\\u271a\\u272f\\u2741\\u2747\\u2750\\u0100nr\\u26ee\\u26f1g;\\u67ecr;\\u61fdr\\xeb\\u08c1g\\u0180lmr\\u26ff\\u270d\\u2714eft\\u0100ar\\u09e6\\u2707ight\\xe1\\u09f2apsto;\\u67fcight\\xe1\\u09fdparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24edight;\\u61ac\\u0180afl\\u2736\\u2739\\u273dr;\\u6985;\\uc000\\ud835\\udd5dus;\\u6a2dimes;\\u6a34\\u0161\\u274b\\u274fst;\\u6217\\xe1\\u134e\\u0180;ef\\u2757\\u2758\\u1800\\u65cange\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277c\\u2785\\u2787r\\xf2\\u08a8orne\\xf2\\u1d8car\\u0100;d\\u0f98\\u2783;\\u696d;\\u600eri;\\u62bf\\u0300achiqt\\u2798\\u279d\\u0a40\\u27a2\\u27ae\\u27bbquo;\\u6039r;\\uc000\\ud835\\udcc1m\\u0180;eg\\u09b2\\u27aa\\u27ac;\\u6a8d;\\u6a8f\\u0100bu\\u252a\\u27b3o\\u0100;r\\u0e1f\\u27b9;\\u601arok;\\u4142\\u8400<;cdhilqr\\u082b\\u27d2\\u2639\\u27dc\\u27e0\\u27e5\\u27ea\\u27f0\\u0100ci\\u27d7\\u27d9;\\u6aa6r;\\u6a79re\\xe5\\u25f2mes;\\u62c9arr;\\u6976uest;\\u6a7b\\u0100Pi\\u27f5\\u27f9ar;\\u6996\\u0180;ef\\u2800\\u092d\\u181b\\u65c3r\\u0100du\\u2807\\u280dshar;\\u694ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uc000\\u2268\\ufe00\\xc5\\u281e\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288e\\u2893\\u28a0\\u28a5\\u28a8\\u28da\\u28e2\\u28e4\\u0a83\\u28f3\\u2902Dot;\\u623a\\u0200clpr\\u284e\\u2852\\u2863\\u287dr\\u803b\\xaf\\u40af\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285e\\u285f\\u6720se\\xbb\\u285f\\u0100;s\\u103b\\u2868to\\u0200;dlu\\u103b\\u2873\\u2877\\u287bow\\xee\\u048cef\\xf4\\u090f\\xf0\\u13d1ker;\\u65ae\\u0100oy\\u2887\\u288cmma;\\u6a29;\\u443cash;\\u6014asuredangle\\xbb\\u1626r;\\uc000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28af\\u28b4\\u28c9ro\\u803b\\xb5\\u40b5\\u0200;acd\\u1464\\u28bd\\u28c0\\u28c4s\\xf4\\u16a7ir;\\u6af0ot\\u80bb\\xb7\\u01b5us\\u0180;bd\\u28d2\\u1903\\u28d3\\u6212\\u0100;u\\u1d3c\\u28d8;\\u6a2a\\u0163\\u28de\\u28e1p;\\u6adb\\xf2\\u2212\\xf0\\u0a81\\u0100dp\\u28e9\\u28eeels;\\u62a7f;\\uc000\\ud835\\udd5e\\u0100ct\\u28f8\\u28fdr;\\uc000\\ud835\\udcc2pos\\xbb\\u159d\\u0180;lm\\u2909\\u290a\\u290d\\u43bctimap;\\u62b8\\u0c00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297e\\u2989\\u2998\\u29da\\u29e9\\u2a15\\u2a1a\\u2a58\\u2a5d\\u2a83\\u2a95\\u2aa4\\u2aa8\\u2b04\\u2b07\\u2b44\\u2b7f\\u2bae\\u2c34\\u2c67\\u2c7c\\u2ce9\\u0100gt\\u2947\\u294b;\\uc000\\u22d9\\u0338\\u0100;v\\u2950\\u0bcf\\uc000\\u226b\\u20d2\\u0180elt\\u295a\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61cdightarrow;\\u61ce;\\uc000\\u22d8\\u0338\\u0100;v\\u297b\\u0c47\\uc000\\u226a\\u20d2ightarrow;\\u61cf\\u0100Dd\\u298e\\u2993ash;\\u62afash;\\u62ae\\u0280bcnpt\\u29a3\\u29a7\\u29ac\\u29b1\\u29ccla\\xbb\\u02deute;\\u4144g;\\uc000\\u2220\\u20d2\\u0280;Eiop\\u0d84\\u29bc\\u29c0\\u29c5\\u29c8;\\uc000\\u2a70\\u0338d;\\uc000\\u224b\\u0338s;\\u4149ro\\xf8\\u0d84ur\\u0100;a\\u29d3\\u29d4\\u666el\\u0100;s\\u29d3\\u0b38\\u01f3\\u29df\\0\\u29e3p\\u80bb\\xa0\\u0b37mp\\u0100;e\\u0bf9\\u0c00\\u0280aeouy\\u29f4\\u29fe\\u2a03\\u2a10\\u2a13\\u01f0\\u29f9\\0\\u29fb;\\u6a43on;\\u4148dil;\\u4146ng\\u0100;d\\u0d7e\\u2a0aot;\\uc000\\u2a6d\\u0338p;\\u6a42;\\u443dash;\\u6013\\u0380;Aadqsx\\u0b92\\u2a29\\u2a2d\\u2a3b\\u2a41\\u2a45\\u2a50rr;\\u61d7r\\u0100hr\\u2a33\\u2a36k;\\u6924\\u0100;o\\u13f2\\u13f0ot;\\uc000\\u2250\\u0338ui\\xf6\\u0b63\\u0100ei\\u2a4a\\u2a4ear;\\u6928\\xed\\u0b98ist\\u0100;s\\u0ba0\\u0b9fr;\\uc000\\ud835\\udd2b\\u0200Eest\\u0bc5\\u2a66\\u2a79\\u2a7c\\u0180;qs\\u0bbc\\u2a6d\\u0be1\\u0180;qs\\u0bbc\\u0bc5\\u2a74lan\\xf4\\u0be2i\\xed\\u0bea\\u0100;r\\u0bb6\\u2a81\\xbb\\u0bb7\\u0180Aap\\u2a8a\\u2a8d\\u2a91r\\xf2\\u2971rr;\\u61aear;\\u6af2\\u0180;sv\\u0f8d\\u2a9c\\u0f8c\\u0100;d\\u2aa1\\u2aa2\\u62fc;\\u62facy;\\u445a\\u0380AEadest\\u2ab7\\u2aba\\u2abe\\u2ac2\\u2ac5\\u2af6\\u2af9r\\xf2\\u2966;\\uc000\\u2266\\u0338rr;\\u619ar;\\u6025\\u0200;fqs\\u0c3b\\u2ace\\u2ae3\\u2aeft\\u0100ar\\u2ad4\\u2ad9rro\\xf7\\u2ac1ightarro\\xf7\\u2a90\\u0180;qs\\u0c3b\\u2aba\\u2aealan\\xf4\\u0c55\\u0100;s\\u0c55\\u2af4\\xbb\\u0c36i\\xed\\u0c5d\\u0100;r\\u0c35\\u2afei\\u0100;e\\u0c1a\\u0c25i\\xe4\\u0d90\\u0100pt\\u2b0c\\u2b11f;\\uc000\\ud835\\udd5f\\u8180\\xac;in\\u2b19\\u2b1a\\u2b36\\u40acn\\u0200;Edv\\u0b89\\u2b24\\u2b28\\u2b2e;\\uc000\\u22f9\\u0338ot;\\uc000\\u22f5\\u0338\\u01e1\\u0b89\\u2b33\\u2b35;\\u62f7;\\u62f6i\\u0100;v\\u0cb8\\u2b3c\\u01e1\\u0cb8\\u2b41\\u2b43;\\u62fe;\\u62fd\\u0180aor\\u2b4b\\u2b63\\u2b69r\\u0200;ast\\u0b7b\\u2b55\\u2b5a\\u2b5flle\\xec\\u0b7bl;\\uc000\\u2afd\\u20e5;\\uc000\\u2202\\u0338lint;\\u6a14\\u0180;ce\\u0c92\\u2b70\\u2b73u\\xe5\\u0ca5\\u0100;c\\u0c98\\u2b78\\u0100;e\\u0c92\\u2b7d\\xf1\\u0c98\\u0200Aait\\u2b88\\u2b8b\\u2b9d\\u2ba7r\\xf2\\u2988rr\\u0180;cw\\u2b94\\u2b95\\u2b99\\u619b;\\uc000\\u2933\\u0338;\\uc000\\u219d\\u0338ghtarrow\\xbb\\u2b95ri\\u0100;e\\u0ccb\\u0cd6\\u0380chimpqu\\u2bbd\\u2bcd\\u2bd9\\u2b04\\u0b78\\u2be4\\u2bef\\u0200;cer\\u0d32\\u2bc6\\u0d37\\u2bc9u\\xe5\\u0d45;\\uc000\\ud835\\udcc3ort\\u026d\\u2b05\\0\\0\\u2bd6ar\\xe1\\u2b56m\\u0100;e\\u0d6e\\u2bdf\\u0100;q\\u0d74\\u0d73su\\u0100bp\\u2beb\\u2bed\\xe5\\u0cf8\\xe5\\u0d0b\\u0180bcp\\u2bf6\\u2c11\\u2c19\\u0200;Ees\\u2bff\\u2c00\\u0d22\\u2c04\\u6284;\\uc000\\u2ac5\\u0338et\\u0100;e\\u0d1b\\u2c0bq\\u0100;q\\u0d23\\u2c00c\\u0100;e\\u0d32\\u2c17\\xf1\\u0d38\\u0200;Ees\\u2c22\\u2c23\\u0d5f\\u2c27\\u6285;\\uc000\\u2ac6\\u0338et\\u0100;e\\u0d58\\u2c2eq\\u0100;q\\u0d60\\u2c23\\u0200gilr\\u2c3d\\u2c3f\\u2c45\\u2c47\\xec\\u0bd7lde\\u803b\\xf1\\u40f1\\xe7\\u0c43iangle\\u0100lr\\u2c52\\u2c5ceft\\u0100;e\\u0c1a\\u2c5a\\xf1\\u0c26ight\\u0100;e\\u0ccb\\u2c65\\xf1\\u0cd7\\u0100;m\\u2c6c\\u2c6d\\u43bd\\u0180;es\\u2c74\\u2c75\\u2c79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2c8f\\u2c94\\u2c99\\u2c9e\\u2ca3\\u2cb0\\u2cb6\\u2cd3\\u2ce3ash;\\u62adarr;\\u6904p;\\uc000\\u224d\\u20d2ash;\\u62ac\\u0100et\\u2ca8\\u2cac;\\uc000\\u2265\\u20d2;\\uc000>\\u20d2nfin;\\u69de\\u0180Aet\\u2cbd\\u2cc1\\u2cc5rr;\\u6902;\\uc000\\u2264\\u20d2\\u0100;r\\u2cca\\u2ccd\\uc000<\\u20d2ie;\\uc000\\u22b4\\u20d2\\u0100At\\u2cd8\\u2cdcrr;\\u6903rie;\\uc000\\u22b5\\u20d2im;\\uc000\\u223c\\u20d2\\u0180Aan\\u2cf0\\u2cf4\\u2d02rr;\\u61d6r\\u0100hr\\u2cfa\\u2cfdk;\\u6923\\u0100;o\\u13e7\\u13e5ear;\\u6927\\u1253\\u1a95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2d2d\\0\\u2d38\\u2d48\\u2d60\\u2d65\\u2d72\\u2d84\\u1b07\\0\\0\\u2d8d\\u2dab\\0\\u2dc8\\u2dce\\0\\u2ddc\\u2e19\\u2e2b\\u2e3e\\u2e43\\u0100cs\\u2d31\\u1a97ute\\u803b\\xf3\\u40f3\\u0100iy\\u2d3c\\u2d45r\\u0100;c\\u1a9e\\u2d42\\u803b\\xf4\\u40f4;\\u443e\\u0280abios\\u1aa0\\u2d52\\u2d57\\u01c8\\u2d5alac;\\u4151v;\\u6a38old;\\u69bclig;\\u4153\\u0100cr\\u2d69\\u2d6dir;\\u69bf;\\uc000\\ud835\\udd2c\\u036f\\u2d79\\0\\0\\u2d7c\\0\\u2d82n;\\u42dbave\\u803b\\xf2\\u40f2;\\u69c1\\u0100bm\\u2d88\\u0df4ar;\\u69b5\\u0200acit\\u2d95\\u2d98\\u2da5\\u2da8r\\xf2\\u1a80\\u0100ir\\u2d9d\\u2da0r;\\u69beoss;\\u69bbn\\xe5\\u0e52;\\u69c0\\u0180aei\\u2db1\\u2db5\\u2db9cr;\\u414dga;\\u43c9\\u0180cdn\\u2dc0\\u2dc5\\u01cdron;\\u43bf;\\u69b6pf;\\uc000\\ud835\\udd60\\u0180ael\\u2dd4\\u2dd7\\u01d2r;\\u69b7rp;\\u69b9\\u0380;adiosv\\u2dea\\u2deb\\u2dee\\u2e08\\u2e0d\\u2e10\\u2e16\\u6228r\\xf2\\u1a86\\u0200;efm\\u2df7\\u2df8\\u2e02\\u2e05\\u6a5dr\\u0100;o\\u2dfe\\u2dff\\u6134f\\xbb\\u2dff\\u803b\\xaa\\u40aa\\u803b\\xba\\u40bagof;\\u62b6r;\\u6a56lope;\\u6a57;\\u6a5b\\u0180clo\\u2e1f\\u2e21\\u2e27\\xf2\\u2e01ash\\u803b\\xf8\\u40f8l;\\u6298i\\u016c\\u2e2f\\u2e34de\\u803b\\xf5\\u40f5es\\u0100;a\\u01db\\u2e3as;\\u6a36ml\\u803b\\xf6\\u40f6bar;\\u633d\\u0ae1\\u2e5e\\0\\u2e7d\\0\\u2e80\\u2e9d\\0\\u2ea2\\u2eb9\\0\\0\\u2ecb\\u0e9c\\0\\u2f13\\0\\0\\u2f2b\\u2fbc\\0\\u2fc8r\\u0200;ast\\u0403\\u2e67\\u2e72\\u0e85\\u8100\\xb6;l\\u2e6d\\u2e6e\\u40b6le\\xec\\u0403\\u0269\\u2e78\\0\\0\\u2e7bm;\\u6af3;\\u6afdy;\\u443fr\\u0280cimpt\\u2e8b\\u2e8f\\u2e93\\u1865\\u2e97nt;\\u4025od;\\u402eil;\\u6030enk;\\u6031r;\\uc000\\ud835\\udd2d\\u0180imo\\u2ea8\\u2eb0\\u2eb4\\u0100;v\\u2ead\\u2eae\\u43c6;\\u43d5ma\\xf4\\u0a76ne;\\u660e\\u0180;tv\\u2ebf\\u2ec0\\u2ec8\\u43c0chfork\\xbb\\u1ffd;\\u43d6\\u0100au\\u2ecf\\u2edfn\\u0100ck\\u2ed5\\u2eddk\\u0100;h\\u21f4\\u2edb;\\u610e\\xf6\\u21f4s\\u0480;abcdemst\\u2ef3\\u2ef4\\u1908\\u2ef9\\u2efd\\u2f04\\u2f06\\u2f0a\\u2f0e\\u402bcir;\\u6a23ir;\\u6a22\\u0100ou\\u1d40\\u2f02;\\u6a25;\\u6a72n\\u80bb\\xb1\\u0e9dim;\\u6a26wo;\\u6a27\\u0180ipu\\u2f19\\u2f20\\u2f25ntint;\\u6a15f;\\uc000\\ud835\\udd61nd\\u803b\\xa3\\u40a3\\u0500;Eaceinosu\\u0ec8\\u2f3f\\u2f41\\u2f44\\u2f47\\u2f81\\u2f89\\u2f92\\u2f7e\\u2fb6;\\u6ab3p;\\u6ab7u\\xe5\\u0ed9\\u0100;c\\u0ece\\u2f4c\\u0300;acens\\u0ec8\\u2f59\\u2f5f\\u2f66\\u2f68\\u2f7eppro\\xf8\\u2f43urlye\\xf1\\u0ed9\\xf1\\u0ece\\u0180aes\\u2f6f\\u2f76\\u2f7approx;\\u6ab9qq;\\u6ab5im;\\u62e8i\\xed\\u0edfme\\u0100;s\\u2f88\\u0eae\\u6032\\u0180Eas\\u2f78\\u2f90\\u2f7a\\xf0\\u2f75\\u0180dfp\\u0eec\\u2f99\\u2faf\\u0180als\\u2fa0\\u2fa5\\u2faalar;\\u632eine;\\u6312urf;\\u6313\\u0100;t\\u0efb\\u2fb4\\xef\\u0efbrel;\\u62b0\\u0100ci\\u2fc0\\u2fc5r;\\uc000\\ud835\\udcc5;\\u43c8ncsp;\\u6008\\u0300fiopsu\\u2fda\\u22e2\\u2fdf\\u2fe5\\u2feb\\u2ff1r;\\uc000\\ud835\\udd2epf;\\uc000\\ud835\\udd62rime;\\u6057cr;\\uc000\\ud835\\udcc6\\u0180aeo\\u2ff8\\u3009\\u3013t\\u0100ei\\u2ffe\\u3005rnion\\xf3\\u06b0nt;\\u6a16st\\u0100;e\\u3010\\u3011\\u403f\\xf1\\u1f19\\xf4\\u0f14\\u0a80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30e0\\u310e\\u312b\\u3147\\u3162\\u3172\\u318e\\u3206\\u3215\\u3224\\u3229\\u3258\\u326e\\u3272\\u3290\\u32b0\\u32b7\\u0180art\\u3047\\u304a\\u304cr\\xf2\\u10b3\\xf2\\u03ddail;\\u691car\\xf2\\u1c65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307f\\u308f\\u3094\\u30cc\\u0100eu\\u306d\\u3071;\\uc000\\u223d\\u0331te;\\u4155i\\xe3\\u116emptyv;\\u69b3g\\u0200;del\\u0fd1\\u3089\\u308b\\u308d;\\u6992;\\u69a5\\xe5\\u0fd1uo\\u803b\\xbb\\u40bbr\\u0580;abcfhlpstw\\u0fdc\\u30ac\\u30af\\u30b7\\u30b9\\u30bc\\u30be\\u30c0\\u30c3\\u30c7\\u30cap;\\u6975\\u0100;f\\u0fe0\\u30b4s;\\u6920;\\u6933s;\\u691e\\xeb\\u225d\\xf0\\u272el;\\u6945im;\\u6974l;\\u61a3;\\u619d\\u0100ai\\u30d1\\u30d5il;\\u691ao\\u0100;n\\u30db\\u30dc\\u6236al\\xf3\\u0f1e\\u0180abr\\u30e7\\u30ea\\u30eer\\xf2\\u17e5rk;\\u6773\\u0100ak\\u30f3\\u30fdc\\u0100ek\\u30f9\\u30fb;\\u407d;\\u405d\\u0100es\\u3102\\u3104;\\u698cl\\u0100du\\u310a\\u310c;\\u698e;\\u6990\\u0200aeuy\\u3117\\u311c\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0ff2\\xe2\\u30fa;\\u4440\\u0200clqs\\u3134\\u3137\\u313d\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020e\\u020dh;\\u61b3\\u0180acg\\u314e\\u315f\\u0f44l\\u0200;ips\\u0f78\\u3158\\u315b\\u109cn\\xe5\\u10bbar\\xf4\\u0fa9t;\\u65ad\\u0180ilr\\u3169\\u1023\\u316esht;\\u697d;\\uc000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317d\\u317f\\xbb\\u047b\\u0100;l\\u1091\\u3184;\\u696c\\u0100;v\\u318b\\u318c\\u43c1;\\u43f1\\u0180gns\\u3195\\u31f9\\u31fcht\\u0300ahlrst\\u31a4\\u31b0\\u31c2\\u31d8\\u31e4\\u31eerrow\\u0100;t\\u0fdc\\u31ada\\xe9\\u30c8arpoon\\u0100du\\u31bb\\u31bfow\\xee\\u317ep\\xbb\\u1092eft\\u0100ah\\u31ca\\u31d0rrow\\xf3\\u0feaarpoon\\xf3\\u0551ightarrows;\\u61c9quigarro\\xf7\\u30cbhreetimes;\\u62ccg;\\u42daingdotse\\xf1\\u1f32\\u0180ahm\\u320d\\u3210\\u3213r\\xf2\\u0feaa\\xf2\\u0551;\\u600foust\\u0100;a\\u321e\\u321f\\u63b1che\\xbb\\u321fmid;\\u6aee\\u0200abpt\\u3232\\u323d\\u3240\\u3252\\u0100nr\\u3237\\u323ag;\\u67edr;\\u61fer\\xeb\\u1003\\u0180afl\\u3247\\u324a\\u324er;\\u6986;\\uc000\\ud835\\udd63us;\\u6a2eimes;\\u6a35\\u0100ap\\u325d\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6a12ar\\xf2\\u31e3\\u0200achq\\u327b\\u3280\\u10bc\\u3285quo;\\u603ar;\\uc000\\ud835\\udcc7\\u0100bu\\u30fb\\u328ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329b\\u32a0re\\xe5\\u31f8mes;\\u62cai\\u0200;efl\\u32aa\\u1059\\u1821\\u32ab\\u65b9tri;\\u69celuhar;\\u6968;\\u611e\\u0d61\\u32d5\\u32db\\u32df\\u332c\\u3338\\u3371\\0\\u337a\\u33a4\\0\\0\\u33ec\\u33f0\\0\\u3428\\u3448\\u345a\\u34ad\\u34b1\\u34ca\\u34f1\\0\\u3616\\0\\0\\u3633cute;\\u415bqu\\xef\\u27ba\\u0500;Eaceinpsy\\u11ed\\u32f3\\u32f5\\u32ff\\u3302\\u330b\\u330f\\u331f\\u3326\\u3329;\\u6ab4\\u01f0\\u32fa\\0\\u32fc;\\u6ab8on;\\u4161u\\xe5\\u11fe\\u0100;d\\u11f3\\u3307il;\\u415frc;\\u415d\\u0180Eas\\u3316\\u3318\\u331b;\\u6ab6p;\\u6abaim;\\u62e9olint;\\u6a13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1d47\\u3335\\u62c5;\\u6a66\\u0380Aacmstx\\u3346\\u334a\\u3357\\u335b\\u335e\\u3363\\u336drr;\\u61d8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0a36\\u0a34t\\u803b\\xa7\\u40a7i;\\u403bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uc000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33a0rp;\\u666f\\u0100hy\\u338b\\u338fcy;\\u4449;\\u4448rt\\u026d\\u3399\\0\\0\\u339ci\\xe4\\u1464ara\\xec\\u2e6f\\u803b\\xad\\u40ad\\u0100gm\\u33a8\\u33b4ma\\u0180;fv\\u33b1\\u33b2\\u33b2\\u43c3;\\u43c2\\u0400;deglnpr\\u12ab\\u33c5\\u33c9\\u33ce\\u33d6\\u33de\\u33e1\\u33e6ot;\\u6a6a\\u0100;q\\u12b1\\u12b0\\u0100;E\\u33d3\\u33d4\\u6a9e;\\u6aa0\\u0100;E\\u33db\\u33dc\\u6a9d;\\u6a9fe;\\u6246lus;\\u6a24arr;\\u6972ar\\xf2\\u113d\\u0200aeit\\u33f8\\u3408\\u340f\\u3417\\u0100ls\\u33fd\\u3404lsetm\\xe9\\u336ahp;\\u6a33parsl;\\u69e4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341c\\u341d\\u6aaa\\u0100;s\\u3422\\u3423\\u6aac;\\uc000\\u2aac\\ufe00\\u0180flp\\u342e\\u3433\\u3442tcy;\\u444c\\u0100;b\\u3438\\u3439\\u402f\\u0100;a\\u343e\\u343f\\u69c4r;\\u633ff;\\uc000\\ud835\\udd64a\\u0100dr\\u344d\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349f\\u0100au\\u3465\\u346fp\\u0100;s\\u1188\\u346b;\\uc000\\u2293\\ufe00p\\u0100;s\\u11b4\\u3475;\\uc000\\u2294\\ufe00u\\u0100bp\\u347f\\u348f\\u0180;es\\u1197\\u119c\\u3486et\\u0100;e\\u1197\\u348d\\xf1\\u119d\\u0180;es\\u11a8\\u11ad\\u3496et\\u0100;e\\u11a8\\u349d\\xf1\\u11ae\\u0180;af\\u117b\\u34a6\\u05b0r\\u0165\\u34ab\\u05b1\\xbb\\u117car\\xf2\\u1148\\u0200cemt\\u34b9\\u34be\\u34c2\\u34c5r;\\uc000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11be\\u0100ar\\u34ce\\u34d5r\\u0100;f\\u34d4\\u17bf\\u6606\\u0100an\\u34da\\u34edight\\u0100ep\\u34e3\\u34eapsilo\\xee\\u1ee0h\\xe9\\u2eafs\\xbb\\u2852\\u0280bcmnp\\u34fb\\u355e\\u1209\\u358b\\u358e\\u0480;Edemnprs\\u350e\\u350f\\u3511\\u3515\\u351e\\u3523\\u352c\\u3531\\u3536\\u6282;\\u6ac5ot;\\u6abd\\u0100;d\\u11da\\u351aot;\\u6ac3ult;\\u6ac1\\u0100Ee\\u3528\\u352a;\\u6acb;\\u628alus;\\u6abfarr;\\u6979\\u0180eiu\\u353d\\u3552\\u3555t\\u0180;en\\u350e\\u3545\\u354bq\\u0100;q\\u11da\\u350feq\\u0100;q\\u352b\\u3528m;\\u6ac7\\u0100bp\\u355a\\u355c;\\u6ad5;\\u6ad3c\\u0300;acens\\u11ed\\u356c\\u3572\\u3579\\u357b\\u3326ppro\\xf8\\u32faurlye\\xf1\\u11fe\\xf1\\u11f3\\u0180aes\\u3582\\u3588\\u331bppro\\xf8\\u331aq\\xf1\\u3317g;\\u666a\\u0680123;Edehlmnps\\u35a9\\u35ac\\u35af\\u121c\\u35b2\\u35b4\\u35c0\\u35c9\\u35d5\\u35da\\u35df\\u35e8\\u35ed\\u803b\\xb9\\u40b9\\u803b\\xb2\\u40b2\\u803b\\xb3\\u40b3;\\u6ac6\\u0100os\\u35b9\\u35bct;\\u6abeub;\\u6ad8\\u0100;d\\u1222\\u35c5ot;\\u6ac4s\\u0100ou\\u35cf\\u35d2l;\\u67c9b;\\u6ad7arr;\\u697bult;\\u6ac2\\u0100Ee\\u35e4\\u35e6;\\u6acc;\\u628blus;\\u6ac0\\u0180eiu\\u35f4\\u3609\\u360ct\\u0180;en\\u121c\\u35fc\\u3602q\\u0100;q\\u1222\\u35b2eq\\u0100;q\\u35e7\\u35e4m;\\u6ac8\\u0100bp\\u3611\\u3613;\\u6ad4;\\u6ad6\\u0180Aan\\u361c\\u3620\\u362drr;\\u61d9r\\u0100hr\\u3626\\u3628\\xeb\\u222e\\u0100;o\\u0a2b\\u0a29war;\\u692alig\\u803b\\xdf\\u40df\\u0be1\\u3651\\u365d\\u3660\\u12ce\\u3673\\u3679\\0\\u367e\\u36c2\\0\\0\\0\\0\\0\\u36db\\u3703\\0\\u3709\\u376c\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365bget;\\u6316;\\u43c4r\\xeb\\u0e5f\\u0180aey\\u3666\\u366b\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uc000\\ud835\\udd31\\u0200eiko\\u3686\\u369d\\u36b5\\u36bc\\u01f2\\u368b\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369b\\u43b8ym;\\u43d1\\u0100cn\\u36a2\\u36b2k\\u0100as\\u36a8\\u36aeppro\\xf8\\u12c1im\\xbb\\u12acs\\xf0\\u129e\\u0100as\\u36ba\\u36ae\\xf0\\u12c1rn\\u803b\\xfe\\u40fe\\u01ec\\u031f\\u36c6\\u22e7es\\u8180\\xd7;bd\\u36cf\\u36d0\\u36d8\\u40d7\\u0100;a\\u190f\\u36d5r;\\u6a31;\\u6a30\\u0180eps\\u36e1\\u36e3\\u3700\\xe1\\u2a4d\\u0200;bcf\\u0486\\u36ec\\u36f0\\u36f4ot;\\u6336ir;\\u6af1\\u0100;o\\u36f9\\u36fc\\uc000\\ud835\\udd65rk;\\u6ada\\xe1\\u3362rime;\\u6034\\u0180aip\\u370f\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374d\\u3740\\u3751\\u3757\\u375c\\u375fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65b5own\\xbb\\u1dbbeft\\u0100;e\\u2800\\u373e\\xf1\\u092e;\\u625cight\\u0100;e\\u32aa\\u374b\\xf1\\u105aot;\\u65ecinus;\\u6a3alus;\\u6a39b;\\u69cdime;\\u6a3bezium;\\u63e2\\u0180cht\\u3772\\u377d\\u3781\\u0100ry\\u3777\\u377b;\\uc000\\ud835\\udcc9;\\u4446cy;\\u445brok;\\u4167\\u0100io\\u378b\\u378ex\\xf4\\u1777head\\u0100lr\\u3797\\u37a0eftarro\\xf7\\u084fightarrow\\xbb\\u0f5d\\u0900AHabcdfghlmoprstuw\\u37d0\\u37d3\\u37d7\\u37e4\\u37f0\\u37fc\\u380e\\u381c\\u3823\\u3834\\u3851\\u385d\\u386b\\u38a9\\u38cc\\u38d2\\u38ea\\u38f6r\\xf2\\u03edar;\\u6963\\u0100cr\\u37dc\\u37e2ute\\u803b\\xfa\\u40fa\\xf2\\u1150r\\u01e3\\u37ea\\0\\u37edy;\\u445eve;\\u416d\\u0100iy\\u37f5\\u37farc\\u803b\\xfb\\u40fb;\\u4443\\u0180abh\\u3803\\u3806\\u380br\\xf2\\u13adlac;\\u4171a\\xf2\\u13c3\\u0100ir\\u3813\\u3818sht;\\u697e;\\uc000\\ud835\\udd32rave\\u803b\\xf9\\u40f9\\u0161\\u3827\\u3831r\\u0100lr\\u382c\\u382e\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384d\\u026f\\u383f\\0\\0\\u384arn\\u0100;e\\u3845\\u3846\\u631cr\\xbb\\u3846op;\\u630fri;\\u65f8\\u0100al\\u3856\\u385acr;\\u416b\\u80bb\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uc000\\ud835\\udd66\\u0300adhlsu\\u114b\\u3878\\u387d\\u1372\\u3891\\u38a0own\\xe1\\u13b3arpoon\\u0100lr\\u3888\\u388cef\\xf4\\u382digh\\xf4\\u382fi\\u0180;hl\\u3899\\u389a\\u389c\\u43c5\\xbb\\u13faon\\xbb\\u389aparrows;\\u61c8\\u0180cit\\u38b0\\u38c4\\u38c8\\u026f\\u38b6\\0\\0\\u38c1rn\\u0100;e\\u38bc\\u38bd\\u631dr\\xbb\\u38bdop;\\u630eng;\\u416fri;\\u65f9cr;\\uc000\\ud835\\udcca\\u0180dir\\u38d9\\u38dd\\u38e2ot;\\u62f0lde;\\u4169i\\u0100;f\\u3730\\u38e8\\xbb\\u1813\\u0100am\\u38ef\\u38f2r\\xf2\\u38a8l\\u803b\\xfc\\u40fcangle;\\u69a7\\u0780ABDacdeflnoprsz\\u391c\\u391f\\u3929\\u392d\\u39b5\\u39b8\\u39bd\\u39df\\u39e4\\u39e8\\u39f3\\u39f9\\u39fd\\u3a01\\u3a20r\\xf2\\u03f7ar\\u0100;v\\u3926\\u3927\\u6ae8;\\u6ae9as\\xe8\\u03e1\\u0100nr\\u3932\\u3937grt;\\u699c\\u0380eknprst\\u34e3\\u3946\\u394b\\u3952\\u395d\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1e96\\u0180hir\\u34eb\\u2ec8\\u3959op\\xf4\\u2fb5\\u0100;h\\u13b7\\u3962\\xef\\u318d\\u0100iu\\u3969\\u396dgm\\xe1\\u33b3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397d\\u3980\\uc000\\u228a\\ufe00;\\uc000\\u2acb\\ufe00setneq\\u0100;q\\u398f\\u3992\\uc000\\u228b\\ufe00;\\uc000\\u2acc\\ufe00\\u0100hr\\u399b\\u399fet\\xe1\\u369ciangle\\u0100lr\\u39aa\\u39afeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39c4\\u39d2\\u39d7\\u0180;be\\u2dea\\u39cb\\u39cfar;\\u62bbq;\\u625alip;\\u62ee\\u0100bt\\u39dc\\u1468a\\xf2\\u1469r;\\uc000\\ud835\\udd33tr\\xe9\\u39aesu\\u0100bp\\u39ef\\u39f1\\xbb\\u0d1c\\xbb\\u0d59pf;\\uc000\\ud835\\udd67ro\\xf0\\u0efbtr\\xe9\\u39b4\\u0100cu\\u3a06\\u3a0br;\\uc000\\ud835\\udccb\\u0100bp\\u3a10\\u3a18n\\u0100Ee\\u3980\\u3a16\\xbb\\u397en\\u0100Ee\\u3992\\u3a1e\\xbb\\u3990igzag;\\u699a\\u0380cefoprs\\u3a36\\u3a3b\\u3a56\\u3a5b\\u3a54\\u3a61\\u3a6airc;\\u4175\\u0100di\\u3a40\\u3a51\\u0100bg\\u3a45\\u3a49ar;\\u6a5fe\\u0100;q\\u15fa\\u3a4f;\\u6259erp;\\u6118r;\\uc000\\ud835\\udd34pf;\\uc000\\ud835\\udd68\\u0100;e\\u1479\\u3a66at\\xe8\\u1479cr;\\uc000\\ud835\\udccc\\u0ae3\\u178e\\u3a87\\0\\u3a8b\\0\\u3a90\\u3a9b\\0\\0\\u3a9d\\u3aa8\\u3aab\\u3aaf\\0\\0\\u3ac3\\u3ace\\0\\u3ad8\\u17dc\\u17dftr\\xe9\\u17d1r;\\uc000\\ud835\\udd35\\u0100Aa\\u3a94\\u3a97r\\xf2\\u03c3r\\xf2\\u09f6;\\u43be\\u0100Aa\\u3aa1\\u3aa4r\\xf2\\u03b8r\\xf2\\u09eba\\xf0\\u2713is;\\u62fb\\u0180dpt\\u17a4\\u3ab5\\u3abe\\u0100fl\\u3aba\\u17a9;\\uc000\\ud835\\udd69im\\xe5\\u17b2\\u0100Aa\\u3ac7\\u3acar\\xf2\\u03cer\\xf2\\u0a01\\u0100cq\\u3ad2\\u17b8r;\\uc000\\ud835\\udccd\\u0100pt\\u17d6\\u3adcr\\xe9\\u17d4\\u0400acefiosu\\u3af0\\u3afd\\u3b08\\u3b0c\\u3b11\\u3b15\\u3b1b\\u3b21c\\u0100uy\\u3af6\\u3afbte\\u803b\\xfd\\u40fd;\\u444f\\u0100iy\\u3b02\\u3b06rc;\\u4177;\\u444bn\\u803b\\xa5\\u40a5r;\\uc000\\ud835\\udd36cy;\\u4457pf;\\uc000\\ud835\\udd6acr;\\uc000\\ud835\\udcce\\u0100cm\\u3b26\\u3b29y;\\u444el\\u803b\\xff\\u40ff\\u0500acdefhiosw\\u3b42\\u3b48\\u3b54\\u3b58\\u3b64\\u3b69\\u3b6d\\u3b74\\u3b7a\\u3b80cute;\\u417a\\u0100ay\\u3b4d\\u3b52ron;\\u417e;\\u4437ot;\\u417c\\u0100et\\u3b5d\\u3b61tr\\xe6\\u155fa;\\u43b6r;\\uc000\\ud835\\udd37cy;\\u4436grarr;\\u61ddpf;\\uc000\\ud835\\udd6bcr;\\uc000\\ud835\\udccf\\u0100jn\\u3b85\\u3b87;\\u600dj;\\u600c\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-html.js.map","// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nconst decodeMap = new Map([\n [0, 65533],\n [128, 8364],\n [130, 8218],\n [131, 402],\n [132, 8222],\n [133, 8230],\n [134, 8224],\n [135, 8225],\n [136, 710],\n [137, 8240],\n [138, 352],\n [139, 8249],\n [140, 338],\n [142, 381],\n [145, 8216],\n [146, 8217],\n [147, 8220],\n [148, 8221],\n [149, 8226],\n [150, 8211],\n [151, 8212],\n [152, 732],\n [153, 8482],\n [154, 353],\n [155, 8250],\n [156, 339],\n [158, 382],\n [159, 376],\n]);\nexport const fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n let output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n output += String.fromCharCode(codePoint);\n return output;\n};\nexport function replaceCodePoint(codePoint) {\n var _a;\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return 0xfffd;\n }\n return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\nexport default function decodeCodePoint(codePoint) {\n return fromCodePoint(replaceCodePoint(codePoint));\n}\n//# sourceMappingURL=decode_codepoint.js.map","// Generated using scripts/write-decode-map.ts\nexport default new Uint16Array(\n// prettier-ignore\n\"\\u0200aglq\\t\\x15\\x18\\x1b\\u026d\\x0f\\0\\0\\x12p;\\u4026os;\\u4027t;\\u403et;\\u403cuot;\\u4022\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-xml.js.map","import htmlDecodeTree from \"./generated/decode-data-html.js\";\nimport xmlDecodeTree from \"./generated/decode-data-xml.js\";\nimport decodeCodePoint from \"./decode_codepoint.js\";\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree, xmlDecodeTree, decodeCodePoint };\nexport { replaceCodePoint, fromCodePoint } from \"./decode_codepoint.js\";\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n /** Bit that needs to be set to convert an upper case ASCII character to lower case */\n CharCodes[CharCodes[\"To_LOWER_BIT\"] = 32] = \"To_LOWER_BIT\";\n})(CharCodes || (CharCodes = {}));\nexport var BinTrieFlags;\n(function (BinTrieFlags) {\n BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags || (BinTrieFlags = {}));\nfunction getDecoder(decodeTree) {\n return function decodeHTMLBinary(str, strict) {\n let ret = \"\";\n let lastIdx = 0;\n let strIdx = 0;\n while ((strIdx = str.indexOf(\"&\", strIdx)) >= 0) {\n ret += str.slice(lastIdx, strIdx);\n lastIdx = strIdx;\n // Skip the \"&\"\n strIdx += 1;\n // If we have a numeric entity, handle this separately.\n if (str.charCodeAt(strIdx) === CharCodes.NUM) {\n // Skip the leading \"&#\". For hex entities, also skip the leading \"x\".\n let start = strIdx + 1;\n let base = 10;\n let cp = str.charCodeAt(start);\n if ((cp | CharCodes.To_LOWER_BIT) === CharCodes.LOWER_X) {\n base = 16;\n strIdx += 1;\n start += 1;\n }\n do\n cp = str.charCodeAt(++strIdx);\n while ((cp >= CharCodes.ZERO && cp <= CharCodes.NINE) ||\n (base === 16 &&\n (cp | CharCodes.To_LOWER_BIT) >= CharCodes.LOWER_A &&\n (cp | CharCodes.To_LOWER_BIT) <= CharCodes.LOWER_F));\n if (start !== strIdx) {\n const entity = str.substring(start, strIdx);\n const parsed = parseInt(entity, base);\n if (str.charCodeAt(strIdx) === CharCodes.SEMI) {\n strIdx += 1;\n }\n else if (strict) {\n continue;\n }\n ret += decodeCodePoint(parsed);\n lastIdx = strIdx;\n }\n continue;\n }\n let resultIdx = 0;\n let excess = 1;\n let treeIdx = 0;\n let current = decodeTree[treeIdx];\n for (; strIdx < str.length; strIdx++, excess++) {\n treeIdx = determineBranch(decodeTree, current, treeIdx + 1, str.charCodeAt(strIdx));\n if (treeIdx < 0)\n break;\n current = decodeTree[treeIdx];\n const masked = current & BinTrieFlags.VALUE_LENGTH;\n // If the branch is a value, store it and continue\n if (masked) {\n // If we have a legacy entity while parsing strictly, just skip the number of bytes\n if (!strict || str.charCodeAt(strIdx) === CharCodes.SEMI) {\n resultIdx = treeIdx;\n excess = 0;\n }\n // The mask is the number of bytes of the value, including the current byte.\n const valueLength = (masked >> 14) - 1;\n if (valueLength === 0)\n break;\n treeIdx += valueLength;\n }\n }\n if (resultIdx !== 0) {\n const valueLength = (decodeTree[resultIdx] & BinTrieFlags.VALUE_LENGTH) >> 14;\n ret +=\n valueLength === 1\n ? String.fromCharCode(decodeTree[resultIdx] & ~BinTrieFlags.VALUE_LENGTH)\n : valueLength === 2\n ? String.fromCharCode(decodeTree[resultIdx + 1])\n : String.fromCharCode(decodeTree[resultIdx + 1], decodeTree[resultIdx + 2]);\n lastIdx = strIdx - excess + 1;\n }\n }\n return ret + str.slice(lastIdx);\n };\n}\nexport function determineBranch(decodeTree, current, nodeIdx, char) {\n const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) {\n return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;\n }\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n const value = char - jumpOffset;\n return value < 0 || value >= branchCount\n ? -1\n : decodeTree[nodeIdx + value] - 1;\n }\n // Case 3: Multiple branches encoded in dictionary\n // Binary search for the character.\n let lo = nodeIdx;\n let hi = lo + branchCount - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n const midVal = decodeTree[mid];\n if (midVal < char) {\n lo = mid + 1;\n }\n else if (midVal > char) {\n hi = mid - 1;\n }\n else {\n return decodeTree[mid + branchCount];\n }\n }\n return -1;\n}\nconst htmlDecoder = getDecoder(htmlDecodeTree);\nconst xmlDecoder = getDecoder(xmlDecodeTree);\n/**\n * Decodes an HTML string, allowing for entities not terminated by a semi-colon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTML(str) {\n return htmlDecoder(str, false);\n}\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semi-colon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLStrict(str) {\n return htmlDecoder(str, true);\n}\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semi-colon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeXML(str) {\n return xmlDecoder(str, true);\n}\n//# sourceMappingURL=decode.js.map","// Generated using scripts/write-encode-map.ts\nfunction restoreDiff(arr) {\n for (let i = 1; i < arr.length; i++) {\n arr[i][0] += arr[i - 1][0] + 1;\n }\n return arr;\n}\n// prettier-ignore\nexport default new Map(/* #__PURE__ */ restoreDiff([[9, \" \"], [0, \" \"], [22, \"!\"], [0, \""\"], [0, \"#\"], [0, \"$\"], [0, \"%\"], [0, \"&\"], [0, \"'\"], [0, \"(\"], [0, \")\"], [0, \"*\"], [0, \"+\"], [0, \",\"], [1, \".\"], [0, \"/\"], [10, \":\"], [0, \";\"], [0, { v: \"<\", n: 8402, o: \"<⃒\" }], [0, { v: \"=\", n: 8421, o: \"=⃥\" }], [0, { v: \">\", n: 8402, o: \">⃒\" }], [0, \"?\"], [0, \"@\"], [26, \"[\"], [0, \"\\"], [0, \"]\"], [0, \"^\"], [0, \"_\"], [0, \"`\"], [5, { n: 106, o: \"fj\" }], [20, \"{\"], [0, \"|\"], [0, \"}\"], [34, \" \"], [0, \"¡\"], [0, \"¢\"], [0, \"£\"], [0, \"¤\"], [0, \"¥\"], [0, \"¦\"], [0, \"§\"], [0, \"¨\"], [0, \"©\"], [0, \"ª\"], [0, \"«\"], [0, \"¬\"], [0, \"­\"], [0, \"®\"], [0, \"¯\"], [0, \"°\"], [0, \"±\"], [0, \"²\"], [0, \"³\"], [0, \"´\"], [0, \"µ\"], [0, \"¶\"], [0, \"·\"], [0, \"¸\"], [0, \"¹\"], [0, \"º\"], [0, \"»\"], [0, \"¼\"], [0, \"½\"], [0, \"¾\"], [0, \"¿\"], [0, \"À\"], [0, \"Á\"], [0, \"Â\"], [0, \"Ã\"], [0, \"Ä\"], [0, \"Å\"], [0, \"Æ\"], [0, \"Ç\"], [0, \"È\"], [0, \"É\"], [0, \"Ê\"], [0, \"Ë\"], [0, \"Ì\"], [0, \"Í\"], [0, \"Î\"], [0, \"Ï\"], [0, \"Ð\"], [0, \"Ñ\"], [0, \"Ò\"], [0, \"Ó\"], [0, \"Ô\"], [0, \"Õ\"], [0, \"Ö\"], [0, \"×\"], [0, \"Ø\"], [0, \"Ù\"], [0, \"Ú\"], [0, \"Û\"], [0, \"Ü\"], [0, \"Ý\"], [0, \"Þ\"], [0, \"ß\"], [0, \"à\"], [0, \"á\"], [0, \"â\"], [0, \"ã\"], [0, \"ä\"], [0, \"å\"], [0, \"æ\"], [0, \"ç\"], [0, \"è\"], [0, \"é\"], [0, \"ê\"], [0, \"ë\"], [0, \"ì\"], [0, \"í\"], [0, \"î\"], [0, \"ï\"], [0, \"ð\"], [0, \"ñ\"], [0, \"ò\"], [0, \"ó\"], [0, \"ô\"], [0, \"õ\"], [0, \"ö\"], [0, \"÷\"], [0, \"ø\"], [0, \"ù\"], [0, \"ú\"], [0, \"û\"], [0, \"ü\"], [0, \"ý\"], [0, \"þ\"], [0, \"ÿ\"], [0, \"Ā\"], [0, \"ā\"], [0, \"Ă\"], [0, \"ă\"], [0, \"Ą\"], [0, \"ą\"], [0, \"Ć\"], [0, \"ć\"], [0, \"Ĉ\"], [0, \"ĉ\"], [0, \"Ċ\"], [0, \"ċ\"], [0, \"Č\"], [0, \"č\"], [0, \"Ď\"], [0, \"ď\"], [0, \"Đ\"], [0, \"đ\"], [0, \"Ē\"], [0, \"ē\"], [2, \"Ė\"], [0, \"ė\"], [0, \"Ę\"], [0, \"ę\"], [0, \"Ě\"], [0, \"ě\"], [0, \"Ĝ\"], [0, \"ĝ\"], [0, \"Ğ\"], [0, \"ğ\"], [0, \"Ġ\"], [0, \"ġ\"], [0, \"Ģ\"], [1, \"Ĥ\"], [0, \"ĥ\"], [0, \"Ħ\"], [0, \"ħ\"], [0, \"Ĩ\"], [0, \"ĩ\"], [0, \"Ī\"], [0, \"ī\"], [2, \"Į\"], [0, \"į\"], [0, \"İ\"], [0, \"ı\"], [0, \"IJ\"], [0, \"ij\"], [0, \"Ĵ\"], [0, \"ĵ\"], [0, \"Ķ\"], [0, \"ķ\"], [0, \"ĸ\"], [0, \"Ĺ\"], [0, \"ĺ\"], [0, \"Ļ\"], [0, \"ļ\"], [0, \"Ľ\"], [0, \"ľ\"], [0, \"Ŀ\"], [0, \"ŀ\"], [0, \"Ł\"], [0, \"ł\"], [0, \"Ń\"], [0, \"ń\"], [0, \"Ņ\"], [0, \"ņ\"], [0, \"Ň\"], [0, \"ň\"], [0, \"ʼn\"], [0, \"Ŋ\"], [0, \"ŋ\"], [0, \"Ō\"], [0, \"ō\"], [2, \"Ő\"], [0, \"ő\"], [0, \"Œ\"], [0, \"œ\"], [0, \"Ŕ\"], [0, \"ŕ\"], [0, \"Ŗ\"], [0, \"ŗ\"], [0, \"Ř\"], [0, \"ř\"], [0, \"Ś\"], [0, \"ś\"], [0, \"Ŝ\"], [0, \"ŝ\"], [0, \"Ş\"], [0, \"ş\"], [0, \"Š\"], [0, \"š\"], [0, \"Ţ\"], [0, \"ţ\"], [0, \"Ť\"], [0, \"ť\"], [0, \"Ŧ\"], [0, \"ŧ\"], [0, \"Ũ\"], [0, \"ũ\"], [0, \"Ū\"], [0, \"ū\"], [0, \"Ŭ\"], [0, \"ŭ\"], [0, \"Ů\"], [0, \"ů\"], [0, \"Ű\"], [0, \"ű\"], [0, \"Ų\"], [0, \"ų\"], [0, \"Ŵ\"], [0, \"ŵ\"], [0, \"Ŷ\"], [0, \"ŷ\"], [0, \"Ÿ\"], [0, \"Ź\"], [0, \"ź\"], [0, \"Ż\"], [0, \"ż\"], [0, \"Ž\"], [0, \"ž\"], [19, \"ƒ\"], [34, \"Ƶ\"], [63, \"ǵ\"], [65, \"ȷ\"], [142, \"ˆ\"], [0, \"ˇ\"], [16, \"˘\"], [0, \"˙\"], [0, \"˚\"], [0, \"˛\"], [0, \"˜\"], [0, \"˝\"], [51, \"̑\"], [127, \"Α\"], [0, \"Β\"], [0, \"Γ\"], [0, \"Δ\"], [0, \"Ε\"], [0, \"Ζ\"], [0, \"Η\"], [0, \"Θ\"], [0, \"Ι\"], [0, \"Κ\"], [0, \"Λ\"], [0, \"Μ\"], [0, \"Ν\"], [0, \"Ξ\"], [0, \"Ο\"], [0, \"Π\"], [0, \"Ρ\"], [1, \"Σ\"], [0, \"Τ\"], [0, \"Υ\"], [0, \"Φ\"], [0, \"Χ\"], [0, \"Ψ\"], [0, \"Ω\"], [7, \"α\"], [0, \"β\"], [0, \"γ\"], [0, \"δ\"], [0, \"ε\"], [0, \"ζ\"], [0, \"η\"], [0, \"θ\"], [0, \"ι\"], [0, \"κ\"], [0, \"λ\"], [0, \"μ\"], [0, \"ν\"], [0, \"ξ\"], [0, \"ο\"], [0, \"π\"], [0, \"ρ\"], [0, \"ς\"], [0, \"σ\"], [0, \"τ\"], [0, \"υ\"], [0, \"φ\"], [0, \"χ\"], [0, \"ψ\"], [0, \"ω\"], [7, \"ϑ\"], [0, \"ϒ\"], [2, \"ϕ\"], [0, \"ϖ\"], [5, \"Ϝ\"], [0, \"ϝ\"], [18, \"ϰ\"], [0, \"ϱ\"], [3, \"ϵ\"], [0, \"϶\"], [10, \"Ё\"], [0, \"Ђ\"], [0, \"Ѓ\"], [0, \"Є\"], [0, \"Ѕ\"], [0, \"І\"], [0, \"Ї\"], [0, \"Ј\"], [0, \"Љ\"], [0, \"Њ\"], [0, \"Ћ\"], [0, \"Ќ\"], [1, \"Ў\"], [0, \"Џ\"], [0, \"А\"], [0, \"Б\"], [0, \"В\"], [0, \"Г\"], [0, \"Д\"], [0, \"Е\"], [0, \"Ж\"], [0, \"З\"], [0, \"И\"], [0, \"Й\"], [0, \"К\"], [0, \"Л\"], [0, \"М\"], [0, \"Н\"], [0, \"О\"], [0, \"П\"], [0, \"Р\"], [0, \"С\"], [0, \"Т\"], [0, \"У\"], [0, \"Ф\"], [0, \"Х\"], [0, \"Ц\"], [0, \"Ч\"], [0, \"Ш\"], [0, \"Щ\"], [0, \"Ъ\"], [0, \"Ы\"], [0, \"Ь\"], [0, \"Э\"], [0, \"Ю\"], [0, \"Я\"], [0, \"а\"], [0, \"б\"], [0, \"в\"], [0, \"г\"], [0, \"д\"], [0, \"е\"], [0, \"ж\"], [0, \"з\"], [0, \"и\"], [0, \"й\"], [0, \"к\"], [0, \"л\"], [0, \"м\"], [0, \"н\"], [0, \"о\"], [0, \"п\"], [0, \"р\"], [0, \"с\"], [0, \"т\"], [0, \"у\"], [0, \"ф\"], [0, \"х\"], [0, \"ц\"], [0, \"ч\"], [0, \"ш\"], [0, \"щ\"], [0, \"ъ\"], [0, \"ы\"], [0, \"ь\"], [0, \"э\"], [0, \"ю\"], [0, \"я\"], [1, \"ё\"], [0, \"ђ\"], [0, \"ѓ\"], [0, \"є\"], [0, \"ѕ\"], [0, \"і\"], [0, \"ї\"], [0, \"ј\"], [0, \"љ\"], [0, \"њ\"], [0, \"ћ\"], [0, \"ќ\"], [1, \"ў\"], [0, \"џ\"], [7074, \" \"], [0, \" \"], [0, \" \"], [0, \" \"], [1, \" \"], [0, \" \"], [0, \" \"], [0, \" \"], [0, \"​\"], [0, \"‌\"], [0, \"‍\"], [0, \"‎\"], [0, \"‏\"], [0, \"‐\"], [2, \"–\"], [0, \"—\"], [0, \"―\"], [0, \"‖\"], [1, \"‘\"], [0, \"’\"], [0, \"‚\"], [1, \"“\"], [0, \"”\"], [0, \"„\"], [1, \"†\"], [0, \"‡\"], [0, \"•\"], [2, \"‥\"], [0, \"…\"], [9, \"‰\"], [0, \"‱\"], [0, \"′\"], [0, \"″\"], [0, \"‴\"], [0, \"‵\"], [3, \"‹\"], [0, \"›\"], [3, \"‾\"], [2, \"⁁\"], [1, \"⁃\"], [0, \"⁄\"], [10, \"⁏\"], [7, \"⁗\"], [7, { v: \" \", n: 8202, o: \"  \" }], [0, \"⁠\"], [0, \"⁡\"], [0, \"⁢\"], [0, \"⁣\"], [72, \"€\"], [46, \"⃛\"], [0, \"⃜\"], [37, \"ℂ\"], [2, \"℅\"], [4, \"ℊ\"], [0, \"ℋ\"], [0, \"ℌ\"], [0, \"ℍ\"], [0, \"ℎ\"], [0, \"ℏ\"], [0, \"ℐ\"], [0, \"ℑ\"], [0, \"ℒ\"], [0, \"ℓ\"], [1, \"ℕ\"], [0, \"№\"], [0, \"℗\"], [0, \"℘\"], [0, \"ℙ\"], [0, \"ℚ\"], [0, \"ℛ\"], [0, \"ℜ\"], [0, \"ℝ\"], [0, \"℞\"], [3, \"™\"], [1, \"ℤ\"], [2, \"℧\"], [0, \"ℨ\"], [0, \"℩\"], [2, \"ℬ\"], [0, \"ℭ\"], [1, \"ℯ\"], [0, \"ℰ\"], [0, \"ℱ\"], [1, \"ℳ\"], [0, \"ℴ\"], [0, \"ℵ\"], [0, \"ℶ\"], [0, \"ℷ\"], [0, \"ℸ\"], [12, \"ⅅ\"], [0, \"ⅆ\"], [0, \"ⅇ\"], [0, \"ⅈ\"], [10, \"⅓\"], [0, \"⅔\"], [0, \"⅕\"], [0, \"⅖\"], [0, \"⅗\"], [0, \"⅘\"], [0, \"⅙\"], [0, \"⅚\"], [0, \"⅛\"], [0, \"⅜\"], [0, \"⅝\"], [0, \"⅞\"], [49, \"←\"], [0, \"↑\"], [0, \"→\"], [0, \"↓\"], [0, \"↔\"], [0, \"↕\"], [0, \"↖\"], [0, \"↗\"], [0, \"↘\"], [0, \"↙\"], [0, \"↚\"], [0, \"↛\"], [1, { v: \"↝\", n: 824, o: \"↝̸\" }], [0, \"↞\"], [0, \"↟\"], [0, \"↠\"], [0, \"↡\"], [0, \"↢\"], [0, \"↣\"], [0, \"↤\"], [0, \"↥\"], [0, \"↦\"], [0, \"↧\"], [1, \"↩\"], [0, \"↪\"], [0, \"↫\"], [0, \"↬\"], [0, \"↭\"], [0, \"↮\"], [1, \"↰\"], [0, \"↱\"], [0, \"↲\"], [0, \"↳\"], [1, \"↵\"], [0, \"↶\"], [0, \"↷\"], [2, \"↺\"], [0, \"↻\"], [0, \"↼\"], [0, \"↽\"], [0, \"↾\"], [0, \"↿\"], [0, \"⇀\"], [0, \"⇁\"], [0, \"⇂\"], [0, \"⇃\"], [0, \"⇄\"], [0, \"⇅\"], [0, \"⇆\"], [0, \"⇇\"], [0, \"⇈\"], [0, \"⇉\"], [0, \"⇊\"], [0, \"⇋\"], [0, \"⇌\"], [0, \"⇍\"], [0, \"⇎\"], [0, \"⇏\"], [0, \"⇐\"], [0, \"⇑\"], [0, \"⇒\"], [0, \"⇓\"], [0, \"⇔\"], [0, \"⇕\"], [0, \"⇖\"], [0, \"⇗\"], [0, \"⇘\"], [0, \"⇙\"], [0, \"⇚\"], [0, \"⇛\"], [1, \"⇝\"], [6, \"⇤\"], [0, \"⇥\"], [15, \"⇵\"], [7, \"⇽\"], [0, \"⇾\"], [0, \"⇿\"], [0, \"∀\"], [0, \"∁\"], [0, { v: \"∂\", n: 824, o: \"∂̸\" }], [0, \"∃\"], [0, \"∄\"], [0, \"∅\"], [1, \"∇\"], [0, \"∈\"], [0, \"∉\"], [1, \"∋\"], [0, \"∌\"], [2, \"∏\"], [0, \"∐\"], [0, \"∑\"], [0, \"−\"], [0, \"∓\"], [0, \"∔\"], [1, \"∖\"], [0, \"∗\"], [0, \"∘\"], [1, \"√\"], [2, \"∝\"], [0, \"∞\"], [0, \"∟\"], [0, { v: \"∠\", n: 8402, o: \"∠⃒\" }], [0, \"∡\"], [0, \"∢\"], [0, \"∣\"], [0, \"∤\"], [0, \"∥\"], [0, \"∦\"], [0, \"∧\"], [0, \"∨\"], [0, { v: \"∩\", n: 65024, o: \"∩︀\" }], [0, { v: \"∪\", n: 65024, o: \"∪︀\" }], [0, \"∫\"], [0, \"∬\"], [0, \"∭\"], [0, \"∮\"], [0, \"∯\"], [0, \"∰\"], [0, \"∱\"], [0, \"∲\"], [0, \"∳\"], [0, \"∴\"], [0, \"∵\"], [0, \"∶\"], [0, \"∷\"], [0, \"∸\"], [1, \"∺\"], [0, \"∻\"], [0, { v: \"∼\", n: 8402, o: \"∼⃒\" }], [0, { v: \"∽\", n: 817, o: \"∽̱\" }], [0, { v: \"∾\", n: 819, o: \"∾̳\" }], [0, \"∿\"], [0, \"≀\"], [0, \"≁\"], [0, { v: \"≂\", n: 824, o: \"≂̸\" }], [0, \"≃\"], [0, \"≄\"], [0, \"≅\"], [0, \"≆\"], [0, \"≇\"], [0, \"≈\"], [0, \"≉\"], [0, \"≊\"], [0, { v: \"≋\", n: 824, o: \"≋̸\" }], [0, \"≌\"], [0, { v: \"≍\", n: 8402, o: \"≍⃒\" }], [0, { v: \"≎\", n: 824, o: \"≎̸\" }], [0, { v: \"≏\", n: 824, o: \"≏̸\" }], [0, { v: \"≐\", n: 824, o: \"≐̸\" }], [0, \"≑\"], [0, \"≒\"], [0, \"≓\"], [0, \"≔\"], [0, \"≕\"], [0, \"≖\"], [0, \"≗\"], [1, \"≙\"], [0, \"≚\"], [1, \"≜\"], [2, \"≟\"], [0, \"≠\"], [0, { v: \"≡\", n: 8421, o: \"≡⃥\" }], [0, \"≢\"], [1, { v: \"≤\", n: 8402, o: \"≤⃒\" }], [0, { v: \"≥\", n: 8402, o: \"≥⃒\" }], [0, { v: \"≦\", n: 824, o: \"≦̸\" }], [0, { v: \"≧\", n: 824, o: \"≧̸\" }], [0, { v: \"≨\", n: 65024, o: \"≨︀\" }], [0, { v: \"≩\", n: 65024, o: \"≩︀\" }], [0, { v: \"≪\", n: new Map(/* #__PURE__ */ restoreDiff([[824, \"≪̸\"], [7577, \"≪⃒\"]])) }], [0, { v: \"≫\", n: new Map(/* #__PURE__ */ restoreDiff([[824, \"≫̸\"], [7577, \"≫⃒\"]])) }], [0, \"≬\"], [0, \"≭\"], [0, \"≮\"], [0, \"≯\"], [0, \"≰\"], [0, \"≱\"], [0, \"≲\"], [0, \"≳\"], [0, \"≴\"], [0, \"≵\"], [0, \"≶\"], [0, \"≷\"], [0, \"≸\"], [0, \"≹\"], [0, \"≺\"], [0, \"≻\"], [0, \"≼\"], [0, \"≽\"], [0, \"≾\"], [0, { v: \"≿\", n: 824, o: \"≿̸\" }], [0, \"⊀\"], [0, \"⊁\"], [0, { v: \"⊂\", n: 8402, o: \"⊂⃒\" }], [0, { v: \"⊃\", n: 8402, o: \"⊃⃒\" }], [0, \"⊄\"], [0, \"⊅\"], [0, \"⊆\"], [0, \"⊇\"], [0, \"⊈\"], [0, \"⊉\"], [0, { v: \"⊊\", n: 65024, o: \"⊊︀\" }], [0, { v: \"⊋\", n: 65024, o: \"⊋︀\" }], [1, \"⊍\"], [0, \"⊎\"], [0, { v: \"⊏\", n: 824, o: \"⊏̸\" }], [0, { v: \"⊐\", n: 824, o: \"⊐̸\" }], [0, \"⊑\"], [0, \"⊒\"], [0, { v: \"⊓\", n: 65024, o: \"⊓︀\" }], [0, { v: \"⊔\", n: 65024, o: \"⊔︀\" }], [0, \"⊕\"], [0, \"⊖\"], [0, \"⊗\"], [0, \"⊘\"], [0, \"⊙\"], [0, \"⊚\"], [0, \"⊛\"], [1, \"⊝\"], [0, \"⊞\"], [0, \"⊟\"], [0, \"⊠\"], [0, \"⊡\"], [0, \"⊢\"], [0, \"⊣\"], [0, \"⊤\"], [0, \"⊥\"], [1, \"⊧\"], [0, \"⊨\"], [0, \"⊩\"], [0, \"⊪\"], [0, \"⊫\"], [0, \"⊬\"], [0, \"⊭\"], [0, \"⊮\"], [0, \"⊯\"], [0, \"⊰\"], [1, \"⊲\"], [0, \"⊳\"], [0, { v: \"⊴\", n: 8402, o: \"⊴⃒\" }], [0, { v: \"⊵\", n: 8402, o: \"⊵⃒\" }], [0, \"⊶\"], [0, \"⊷\"], [0, \"⊸\"], [0, \"⊹\"], [0, \"⊺\"], [0, \"⊻\"], [1, \"⊽\"], [0, \"⊾\"], [0, \"⊿\"], [0, \"⋀\"], [0, \"⋁\"], [0, \"⋂\"], [0, \"⋃\"], [0, \"⋄\"], [0, \"⋅\"], [0, \"⋆\"], [0, \"⋇\"], [0, \"⋈\"], [0, \"⋉\"], [0, \"⋊\"], [0, \"⋋\"], [0, \"⋌\"], [0, \"⋍\"], [0, \"⋎\"], [0, \"⋏\"], [0, \"⋐\"], [0, \"⋑\"], [0, \"⋒\"], [0, \"⋓\"], [0, \"⋔\"], [0, \"⋕\"], [0, \"⋖\"], [0, \"⋗\"], [0, { v: \"⋘\", n: 824, o: \"⋘̸\" }], [0, { v: \"⋙\", n: 824, o: \"⋙̸\" }], [0, { v: \"⋚\", n: 65024, o: \"⋚︀\" }], [0, { v: \"⋛\", n: 65024, o: \"⋛︀\" }], [2, \"⋞\"], [0, \"⋟\"], [0, \"⋠\"], [0, \"⋡\"], [0, \"⋢\"], [0, \"⋣\"], [2, \"⋦\"], [0, \"⋧\"], [0, \"⋨\"], [0, \"⋩\"], [0, \"⋪\"], [0, \"⋫\"], [0, \"⋬\"], [0, \"⋭\"], [0, \"⋮\"], [0, \"⋯\"], [0, \"⋰\"], [0, \"⋱\"], [0, \"⋲\"], [0, \"⋳\"], [0, \"⋴\"], [0, { v: \"⋵\", n: 824, o: \"⋵̸\" }], [0, \"⋶\"], [0, \"⋷\"], [1, { v: \"⋹\", n: 824, o: \"⋹̸\" }], [0, \"⋺\"], [0, \"⋻\"], [0, \"⋼\"], [0, \"⋽\"], [0, \"⋾\"], [6, \"⌅\"], [0, \"⌆\"], [1, \"⌈\"], [0, \"⌉\"], [0, \"⌊\"], [0, \"⌋\"], [0, \"⌌\"], [0, \"⌍\"], [0, \"⌎\"], [0, \"⌏\"], [0, \"⌐\"], [1, \"⌒\"], [0, \"⌓\"], [1, \"⌕\"], [0, \"⌖\"], [5, \"⌜\"], [0, \"⌝\"], [0, \"⌞\"], [0, \"⌟\"], [2, \"⌢\"], [0, \"⌣\"], [9, \"⌭\"], [0, \"⌮\"], [7, \"⌶\"], [6, \"⌽\"], [1, \"⌿\"], [60, \"⍼\"], [51, \"⎰\"], [0, \"⎱\"], [2, \"⎴\"], [0, \"⎵\"], [0, \"⎶\"], [37, \"⏜\"], [0, \"⏝\"], [0, \"⏞\"], [0, \"⏟\"], [2, \"⏢\"], [4, \"⏧\"], [59, \"␣\"], [164, \"Ⓢ\"], [55, \"─\"], [1, \"│\"], [9, \"┌\"], [3, \"┐\"], [3, \"└\"], [3, \"┘\"], [3, \"├\"], [7, \"┤\"], [7, \"┬\"], [7, \"┴\"], [7, \"┼\"], [19, \"═\"], [0, \"║\"], [0, \"╒\"], [0, \"╓\"], [0, \"╔\"], [0, \"╕\"], [0, \"╖\"], [0, \"╗\"], [0, \"╘\"], [0, \"╙\"], [0, \"╚\"], [0, \"╛\"], [0, \"╜\"], [0, \"╝\"], [0, \"╞\"], [0, \"╟\"], [0, \"╠\"], [0, \"╡\"], [0, \"╢\"], [0, \"╣\"], [0, \"╤\"], [0, \"╥\"], [0, \"╦\"], [0, \"╧\"], [0, \"╨\"], [0, \"╩\"], [0, \"╪\"], [0, \"╫\"], [0, \"╬\"], [19, \"▀\"], [3, \"▄\"], [3, \"█\"], [8, \"░\"], [0, \"▒\"], [0, \"▓\"], [13, \"□\"], [8, \"▪\"], [0, \"▫\"], [1, \"▭\"], [0, \"▮\"], [2, \"▱\"], [1, \"△\"], [0, \"▴\"], [0, \"▵\"], [2, \"▸\"], [0, \"▹\"], [3, \"▽\"], [0, \"▾\"], [0, \"▿\"], [2, \"◂\"], [0, \"◃\"], [6, \"◊\"], [0, \"○\"], [32, \"◬\"], [2, \"◯\"], [8, \"◸\"], [0, \"◹\"], [0, \"◺\"], [0, \"◻\"], [0, \"◼\"], [8, \"★\"], [0, \"☆\"], [7, \"☎\"], [49, \"♀\"], [1, \"♂\"], [29, \"♠\"], [2, \"♣\"], [1, \"♥\"], [0, \"♦\"], [3, \"♪\"], [2, \"♭\"], [0, \"♮\"], [0, \"♯\"], [163, \"✓\"], [3, \"✗\"], [8, \"✠\"], [21, \"✶\"], [33, \"❘\"], [25, \"❲\"], [0, \"❳\"], [84, \"⟈\"], [0, \"⟉\"], [28, \"⟦\"], [0, \"⟧\"], [0, \"⟨\"], [0, \"⟩\"], [0, \"⟪\"], [0, \"⟫\"], [0, \"⟬\"], [0, \"⟭\"], [7, \"⟵\"], [0, \"⟶\"], [0, \"⟷\"], [0, \"⟸\"], [0, \"⟹\"], [0, \"⟺\"], [1, \"⟼\"], [2, \"⟿\"], [258, \"⤂\"], [0, \"⤃\"], [0, \"⤄\"], [0, \"⤅\"], [6, \"⤌\"], [0, \"⤍\"], [0, \"⤎\"], [0, \"⤏\"], [0, \"⤐\"], [0, \"⤑\"], [0, \"⤒\"], [0, \"⤓\"], [2, \"⤖\"], [2, \"⤙\"], [0, \"⤚\"], [0, \"⤛\"], [0, \"⤜\"], [0, \"⤝\"], [0, \"⤞\"], [0, \"⤟\"], [0, \"⤠\"], [2, \"⤣\"], [0, \"⤤\"], [0, \"⤥\"], [0, \"⤦\"], [0, \"⤧\"], [0, \"⤨\"], [0, \"⤩\"], [0, \"⤪\"], [8, { v: \"⤳\", n: 824, o: \"⤳̸\" }], [1, \"⤵\"], [0, \"⤶\"], [0, \"⤷\"], [0, \"⤸\"], [0, \"⤹\"], [2, \"⤼\"], [0, \"⤽\"], [7, \"⥅\"], [2, \"⥈\"], [0, \"⥉\"], [0, \"⥊\"], [0, \"⥋\"], [2, \"⥎\"], [0, \"⥏\"], [0, \"⥐\"], [0, \"⥑\"], [0, \"⥒\"], [0, \"⥓\"], [0, \"⥔\"], [0, \"⥕\"], [0, \"⥖\"], [0, \"⥗\"], [0, \"⥘\"], [0, \"⥙\"], [0, \"⥚\"], [0, \"⥛\"], [0, \"⥜\"], [0, \"⥝\"], [0, \"⥞\"], [0, \"⥟\"], [0, \"⥠\"], [0, \"⥡\"], [0, \"⥢\"], [0, \"⥣\"], [0, \"⥤\"], [0, \"⥥\"], [0, \"⥦\"], [0, \"⥧\"], [0, \"⥨\"], [0, \"⥩\"], [0, \"⥪\"], [0, \"⥫\"], [0, \"⥬\"], [0, \"⥭\"], [0, \"⥮\"], [0, \"⥯\"], [0, \"⥰\"], [0, \"⥱\"], [0, \"⥲\"], [0, \"⥳\"], [0, \"⥴\"], [0, \"⥵\"], [0, \"⥶\"], [1, \"⥸\"], [0, \"⥹\"], [1, \"⥻\"], [0, \"⥼\"], [0, \"⥽\"], [0, \"⥾\"], [0, \"⥿\"], [5, \"⦅\"], [0, \"⦆\"], [4, \"⦋\"], [0, \"⦌\"], [0, \"⦍\"], [0, \"⦎\"], [0, \"⦏\"], [0, \"⦐\"], [0, \"⦑\"], [0, \"⦒\"], [0, \"⦓\"], [0, \"⦔\"], [0, \"⦕\"], [0, \"⦖\"], [3, \"⦚\"], [1, \"⦜\"], [0, \"⦝\"], [6, \"⦤\"], [0, \"⦥\"], [0, \"⦦\"], [0, \"⦧\"], [0, \"⦨\"], [0, \"⦩\"], [0, \"⦪\"], [0, \"⦫\"], [0, \"⦬\"], [0, \"⦭\"], [0, \"⦮\"], [0, \"⦯\"], [0, \"⦰\"], [0, \"⦱\"], [0, \"⦲\"], [0, \"⦳\"], [0, \"⦴\"], [0, \"⦵\"], [0, \"⦶\"], [0, \"⦷\"], [1, \"⦹\"], [1, \"⦻\"], [0, \"⦼\"], [1, \"⦾\"], [0, \"⦿\"], [0, \"⧀\"], [0, \"⧁\"], [0, \"⧂\"], [0, \"⧃\"], [0, \"⧄\"], [0, \"⧅\"], [3, \"⧉\"], [3, \"⧍\"], [0, \"⧎\"], [0, { v: \"⧏\", n: 824, o: \"⧏̸\" }], [0, { v: \"⧐\", n: 824, o: \"⧐̸\" }], [11, \"⧜\"], [0, \"⧝\"], [0, \"⧞\"], [4, \"⧣\"], [0, \"⧤\"], [0, \"⧥\"], [5, \"⧫\"], [8, \"⧴\"], [1, \"⧶\"], [9, \"⨀\"], [0, \"⨁\"], [0, \"⨂\"], [1, \"⨄\"], [1, \"⨆\"], [5, \"⨌\"], [0, \"⨍\"], [2, \"⨐\"], [0, \"⨑\"], [0, \"⨒\"], [0, \"⨓\"], [0, \"⨔\"], [0, \"⨕\"], [0, \"⨖\"], [0, \"⨗\"], [10, \"⨢\"], [0, \"⨣\"], [0, \"⨤\"], [0, \"⨥\"], [0, \"⨦\"], [0, \"⨧\"], [1, \"⨩\"], [0, \"⨪\"], [2, \"⨭\"], [0, \"⨮\"], [0, \"⨯\"], [0, \"⨰\"], [0, \"⨱\"], [1, \"⨳\"], [0, \"⨴\"], [0, \"⨵\"], [0, \"⨶\"], [0, \"⨷\"], [0, \"⨸\"], [0, \"⨹\"], [0, \"⨺\"], [0, \"⨻\"], [0, \"⨼\"], [2, \"⨿\"], [0, \"⩀\"], [1, \"⩂\"], [0, \"⩃\"], [0, \"⩄\"], [0, \"⩅\"], [0, \"⩆\"], [0, \"⩇\"], [0, \"⩈\"], [0, \"⩉\"], [0, \"⩊\"], [0, \"⩋\"], [0, \"⩌\"], [0, \"⩍\"], [2, \"⩐\"], [2, \"⩓\"], [0, \"⩔\"], [0, \"⩕\"], [0, \"⩖\"], [0, \"⩗\"], [0, \"⩘\"], [1, \"⩚\"], [0, \"⩛\"], [0, \"⩜\"], [0, \"⩝\"], [1, \"⩟\"], [6, \"⩦\"], [3, \"⩪\"], [2, { v: \"⩭\", n: 824, o: \"⩭̸\" }], [0, \"⩮\"], [0, \"⩯\"], [0, { v: \"⩰\", n: 824, o: \"⩰̸\" }], [0, \"⩱\"], [0, \"⩲\"], [0, \"⩳\"], [0, \"⩴\"], [0, \"⩵\"], [1, \"⩷\"], [0, \"⩸\"], [0, \"⩹\"], [0, \"⩺\"], [0, \"⩻\"], [0, \"⩼\"], [0, { v: \"⩽\", n: 824, o: \"⩽̸\" }], [0, { v: \"⩾\", n: 824, o: \"⩾̸\" }], [0, \"⩿\"], [0, \"⪀\"], [0, \"⪁\"], [0, \"⪂\"], [0, \"⪃\"], [0, \"⪄\"], [0, \"⪅\"], [0, \"⪆\"], [0, \"⪇\"], [0, \"⪈\"], [0, \"⪉\"], [0, \"⪊\"], [0, \"⪋\"], [0, \"⪌\"], [0, \"⪍\"], [0, \"⪎\"], [0, \"⪏\"], [0, \"⪐\"], [0, \"⪑\"], [0, \"⪒\"], [0, \"⪓\"], [0, \"⪔\"], [0, \"⪕\"], [0, \"⪖\"], [0, \"⪗\"], [0, \"⪘\"], [0, \"⪙\"], [0, \"⪚\"], [2, \"⪝\"], [0, \"⪞\"], [0, \"⪟\"], [0, \"⪠\"], [0, { v: \"⪡\", n: 824, o: \"⪡̸\" }], [0, { v: \"⪢\", n: 824, o: \"⪢̸\" }], [1, \"⪤\"], [0, \"⪥\"], [0, \"⪦\"], [0, \"⪧\"], [0, \"⪨\"], [0, \"⪩\"], [0, \"⪪\"], [0, \"⪫\"], [0, { v: \"⪬\", n: 65024, o: \"⪬︀\" }], [0, { v: \"⪭\", n: 65024, o: \"⪭︀\" }], [0, \"⪮\"], [0, { v: \"⪯\", n: 824, o: \"⪯̸\" }], [0, { v: \"⪰\", n: 824, o: \"⪰̸\" }], [2, \"⪳\"], [0, \"⪴\"], [0, \"⪵\"], [0, \"⪶\"], [0, \"⪷\"], [0, \"⪸\"], [0, \"⪹\"], [0, \"⪺\"], [0, \"⪻\"], [0, \"⪼\"], [0, \"⪽\"], [0, \"⪾\"], [0, \"⪿\"], [0, \"⫀\"], [0, \"⫁\"], [0, \"⫂\"], [0, \"⫃\"], [0, \"⫄\"], [0, { v: \"⫅\", n: 824, o: \"⫅̸\" }], [0, { v: \"⫆\", n: 824, o: \"⫆̸\" }], [0, \"⫇\"], [0, \"⫈\"], [2, { v: \"⫋\", n: 65024, o: \"⫋︀\" }], [0, { v: \"⫌\", n: 65024, o: \"⫌︀\" }], [2, \"⫏\"], [0, \"⫐\"], [0, \"⫑\"], [0, \"⫒\"], [0, \"⫓\"], [0, \"⫔\"], [0, \"⫕\"], [0, \"⫖\"], [0, \"⫗\"], [0, \"⫘\"], [0, \"⫙\"], [0, \"⫚\"], [0, \"⫛\"], [8, \"⫤\"], [1, \"⫦\"], [0, \"⫧\"], [0, \"⫨\"], [0, \"⫩\"], [1, \"⫫\"], [0, \"⫬\"], [0, \"⫭\"], [0, \"⫮\"], [0, \"⫯\"], [0, \"⫰\"], [0, \"⫱\"], [0, \"⫲\"], [0, \"⫳\"], [9, { v: \"⫽\", n: 8421, o: \"⫽⃥\" }], [44343, { n: new Map(/* #__PURE__ */ restoreDiff([[56476, \"𝒜\"], [1, \"𝒞\"], [0, \"𝒟\"], [2, \"𝒢\"], [2, \"𝒥\"], [0, \"𝒦\"], [2, \"𝒩\"], [0, \"𝒪\"], [0, \"𝒫\"], [0, \"𝒬\"], [1, \"𝒮\"], [0, \"𝒯\"], [0, \"𝒰\"], [0, \"𝒱\"], [0, \"𝒲\"], [0, \"𝒳\"], [0, \"𝒴\"], [0, \"𝒵\"], [0, \"𝒶\"], [0, \"𝒷\"], [0, \"𝒸\"], [0, \"𝒹\"], [1, \"𝒻\"], [1, \"𝒽\"], [0, \"𝒾\"], [0, \"𝒿\"], [0, \"𝓀\"], [0, \"𝓁\"], [0, \"𝓂\"], [0, \"𝓃\"], [1, \"𝓅\"], [0, \"𝓆\"], [0, \"𝓇\"], [0, \"𝓈\"], [0, \"𝓉\"], [0, \"𝓊\"], [0, \"𝓋\"], [0, \"𝓌\"], [0, \"𝓍\"], [0, \"𝓎\"], [0, \"𝓏\"], [52, \"𝔄\"], [0, \"𝔅\"], [1, \"𝔇\"], [0, \"𝔈\"], [0, \"𝔉\"], [0, \"𝔊\"], [2, \"𝔍\"], [0, \"𝔎\"], [0, \"𝔏\"], [0, \"𝔐\"], [0, \"𝔑\"], [0, \"𝔒\"], [0, \"𝔓\"], [0, \"𝔔\"], [1, \"𝔖\"], [0, \"𝔗\"], [0, \"𝔘\"], [0, \"𝔙\"], [0, \"𝔚\"], [0, \"𝔛\"], [0, \"𝔜\"], [1, \"𝔞\"], [0, \"𝔟\"], [0, \"𝔠\"], [0, \"𝔡\"], [0, \"𝔢\"], [0, \"𝔣\"], [0, \"𝔤\"], [0, \"𝔥\"], [0, \"𝔦\"], [0, \"𝔧\"], [0, \"𝔨\"], [0, \"𝔩\"], [0, \"𝔪\"], [0, \"𝔫\"], [0, \"𝔬\"], [0, \"𝔭\"], [0, \"𝔮\"], [0, \"𝔯\"], [0, \"𝔰\"], [0, \"𝔱\"], [0, \"𝔲\"], [0, \"𝔳\"], [0, \"𝔴\"], [0, \"𝔵\"], [0, \"𝔶\"], [0, \"𝔷\"], [0, \"𝔸\"], [0, \"𝔹\"], [1, \"𝔻\"], [0, \"𝔼\"], [0, \"𝔽\"], [0, \"𝔾\"], [1, \"𝕀\"], [0, \"𝕁\"], [0, \"𝕂\"], [0, \"𝕃\"], [0, \"𝕄\"], [1, \"𝕆\"], [3, \"𝕊\"], [0, \"𝕋\"], [0, \"𝕌\"], [0, \"𝕍\"], [0, \"𝕎\"], [0, \"𝕏\"], [0, \"𝕐\"], [1, \"𝕒\"], [0, \"𝕓\"], [0, \"𝕔\"], [0, \"𝕕\"], [0, \"𝕖\"], [0, \"𝕗\"], [0, \"𝕘\"], [0, \"𝕙\"], [0, \"𝕚\"], [0, \"𝕛\"], [0, \"𝕜\"], [0, \"𝕝\"], [0, \"𝕞\"], [0, \"𝕟\"], [0, \"𝕠\"], [0, \"𝕡\"], [0, \"𝕢\"], [0, \"𝕣\"], [0, \"𝕤\"], [0, \"𝕥\"], [0, \"𝕦\"], [0, \"𝕧\"], [0, \"𝕨\"], [0, \"𝕩\"], [0, \"𝕪\"], [0, \"𝕫\"]])) }], [8906, \"ff\"], [0, \"fi\"], [0, \"fl\"], [0, \"ffi\"], [0, \"ffl\"]]));\n//# sourceMappingURL=encode-html.js.map","export const xmlReplacer = /[\"&'<>$\\x80-\\uFFFF]/g;\nconst xmlCodeMap = new Map([\n [34, \""\"],\n [38, \"&\"],\n [39, \"'\"],\n [60, \"<\"],\n [62, \">\"],\n]);\n// For compatibility with node < 4, we wrap `codePointAt`\nexport const getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt != null\n ? (str, index) => str.codePointAt(index)\n : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n (c, index) => (c.charCodeAt(index) & 0xfc00) === 0xd800\n ? (c.charCodeAt(index) - 0xd800) * 0x400 +\n c.charCodeAt(index + 1) -\n 0xdc00 +\n 0x10000\n : c.charCodeAt(index);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexport function encodeXML(str) {\n let ret = \"\";\n let lastIdx = 0;\n let match;\n while ((match = xmlReplacer.exec(str)) !== null) {\n const i = match.index;\n const char = str.charCodeAt(i);\n const next = xmlCodeMap.get(char);\n if (next !== undefined) {\n ret += str.substring(lastIdx, i) + next;\n lastIdx = i + 1;\n }\n else {\n ret += `${str.substring(lastIdx, i)}&#x${getCodePoint(str, i).toString(16)};`;\n // Increase by 1 if we have a surrogate pair\n lastIdx = xmlReplacer.lastIndex += Number((char & 0xfc00) === 0xd800);\n }\n }\n return ret + str.substr(lastIdx);\n}\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `ü`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nexport const escape = encodeXML;\nfunction getEscaper(regex, map) {\n return function escape(data) {\n let match;\n let lastIdx = 0;\n let result = \"\";\n while ((match = regex.exec(data))) {\n if (lastIdx !== match.index) {\n result += data.substring(lastIdx, match.index);\n }\n // We know that this chararcter will be in the map.\n result += map.get(match[0].charCodeAt(0));\n // Every match will be of length 1\n lastIdx = match.index + 1;\n }\n return result + data.substring(lastIdx);\n };\n}\n/**\n * Encodes all characters not valid in XML documents using XML entities.\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nexport const escapeUTF8 = getEscaper(/[&<>'\"]/g, xmlCodeMap);\n/**\n * Encodes all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeAttribute = getEscaper(/[\"&\\u00A0]/g, new Map([\n [34, \""\"],\n [38, \"&\"],\n [160, \" \"],\n]));\n/**\n * Encodes all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeText = getEscaper(/[&<>\\u00A0]/g, new Map([\n [38, \"&\"],\n [60, \"<\"],\n [62, \">\"],\n [160, \" \"],\n]));\n//# sourceMappingURL=escape.js.map","import { decodeXML, decodeHTML, decodeHTMLStrict } from \"./decode.js\";\nimport { encodeHTML, encodeNonAsciiHTML } from \"./encode.js\";\nimport { encodeXML, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\n/** The level of entities to support. */\nexport var EntityLevel;\n(function (EntityLevel) {\n /** Support only XML entities. */\n EntityLevel[EntityLevel[\"XML\"] = 0] = \"XML\";\n /** Support HTML entities, which are a superset of XML entities. */\n EntityLevel[EntityLevel[\"HTML\"] = 1] = \"HTML\";\n})(EntityLevel || (EntityLevel = {}));\n/** Determines whether some entities are allowed to be written without a trailing `;`. */\nexport var DecodingMode;\n(function (DecodingMode) {\n /** Support legacy HTML entities. */\n DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n /** Do not support legacy HTML entities. */\n DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n})(DecodingMode || (DecodingMode = {}));\nexport var EncodingMode;\n(function (EncodingMode) {\n /**\n * The output is UTF-8 encoded. Only characters that need escaping within\n * XML will be escaped.\n */\n EncodingMode[EncodingMode[\"UTF8\"] = 0] = \"UTF8\";\n /**\n * The output consists only of ASCII characters. Characters that need\n * escaping within HTML, and characters that aren't ASCII characters will\n * be escaped.\n */\n EncodingMode[EncodingMode[\"ASCII\"] = 1] = \"ASCII\";\n /**\n * Encode all characters that have an equivalent entity, as well as all\n * characters that are not ASCII characters.\n */\n EncodingMode[EncodingMode[\"Extensive\"] = 2] = \"Extensive\";\n /**\n * Encode all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n */\n EncodingMode[EncodingMode[\"Attribute\"] = 3] = \"Attribute\";\n /**\n * Encode all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n */\n EncodingMode[EncodingMode[\"Text\"] = 4] = \"Text\";\n})(EncodingMode || (EncodingMode = {}));\n/**\n * Decodes a string with entities.\n *\n * @param data String to decode.\n * @param options Decoding options.\n */\nexport function decode(data, options = EntityLevel.XML) {\n const opts = typeof options === \"number\" ? { level: options } : options;\n if (opts.level === EntityLevel.HTML) {\n if (opts.mode === DecodingMode.Strict) {\n return decodeHTMLStrict(data);\n }\n return decodeHTML(data);\n }\n return decodeXML(data);\n}\n/**\n * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n *\n * @param data String to decode.\n * @param options Decoding options.\n * @deprecated Use `decode` with the `mode` set to `Strict`.\n */\nexport function decodeStrict(data, options = EntityLevel.XML) {\n const opts = typeof options === \"number\" ? { level: options } : options;\n if (opts.level === EntityLevel.HTML) {\n if (opts.mode === DecodingMode.Legacy) {\n return decodeHTML(data);\n }\n return decodeHTMLStrict(data);\n }\n return decodeXML(data);\n}\n/**\n * Encodes a string with entities.\n *\n * @param data String to encode.\n * @param options Encoding options.\n */\nexport function encode(data, options = EntityLevel.XML) {\n const opts = typeof options === \"number\" ? { level: options } : options;\n // Mode `UTF8` just escapes XML entities\n if (opts.mode === EncodingMode.UTF8)\n return escapeUTF8(data);\n if (opts.mode === EncodingMode.Attribute)\n return escapeAttribute(data);\n if (opts.mode === EncodingMode.Text)\n return escapeText(data);\n if (opts.level === EntityLevel.HTML) {\n if (opts.mode === EncodingMode.ASCII) {\n return encodeNonAsciiHTML(data);\n }\n return encodeHTML(data);\n }\n // ASCII and Extensive are equivalent\n return encodeXML(data);\n}\nexport { encodeXML, escape, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\nexport { encodeHTML, encodeNonAsciiHTML, \n// Legacy aliases (deprecated)\nencodeHTML as encodeHTML4, encodeHTML as encodeHTML5, } from \"./encode.js\";\nexport { decodeXML, decodeHTML, decodeHTMLStrict, \n// Legacy aliases (deprecated)\ndecodeHTML as decodeHTML4, decodeHTML as decodeHTML5, decodeHTMLStrict as decodeHTML4Strict, decodeHTMLStrict as decodeHTML5Strict, decodeXML as decodeXMLStrict, } from \"./decode.js\";\n//# sourceMappingURL=index.js.map","export const elementNames = new Map([\n \"altGlyph\",\n \"altGlyphDef\",\n \"altGlyphItem\",\n \"animateColor\",\n \"animateMotion\",\n \"animateTransform\",\n \"clipPath\",\n \"feBlend\",\n \"feColorMatrix\",\n \"feComponentTransfer\",\n \"feComposite\",\n \"feConvolveMatrix\",\n \"feDiffuseLighting\",\n \"feDisplacementMap\",\n \"feDistantLight\",\n \"feDropShadow\",\n \"feFlood\",\n \"feFuncA\",\n \"feFuncB\",\n \"feFuncG\",\n \"feFuncR\",\n \"feGaussianBlur\",\n \"feImage\",\n \"feMerge\",\n \"feMergeNode\",\n \"feMorphology\",\n \"feOffset\",\n \"fePointLight\",\n \"feSpecularLighting\",\n \"feSpotLight\",\n \"feTile\",\n \"feTurbulence\",\n \"foreignObject\",\n \"glyphRef\",\n \"linearGradient\",\n \"radialGradient\",\n \"textPath\",\n].map((val) => [val.toLowerCase(), val]));\nexport const attributeNames = new Map([\n \"definitionURL\",\n \"attributeName\",\n \"attributeType\",\n \"baseFrequency\",\n \"baseProfile\",\n \"calcMode\",\n \"clipPathUnits\",\n \"diffuseConstant\",\n \"edgeMode\",\n \"filterUnits\",\n \"glyphRef\",\n \"gradientTransform\",\n \"gradientUnits\",\n \"kernelMatrix\",\n \"kernelUnitLength\",\n \"keyPoints\",\n \"keySplines\",\n \"keyTimes\",\n \"lengthAdjust\",\n \"limitingConeAngle\",\n \"markerHeight\",\n \"markerUnits\",\n \"markerWidth\",\n \"maskContentUnits\",\n \"maskUnits\",\n \"numOctaves\",\n \"pathLength\",\n \"patternContentUnits\",\n \"patternTransform\",\n \"patternUnits\",\n \"pointsAtX\",\n \"pointsAtY\",\n \"pointsAtZ\",\n \"preserveAlpha\",\n \"preserveAspectRatio\",\n \"primitiveUnits\",\n \"refX\",\n \"refY\",\n \"repeatCount\",\n \"repeatDur\",\n \"requiredExtensions\",\n \"requiredFeatures\",\n \"specularConstant\",\n \"specularExponent\",\n \"spreadMethod\",\n \"startOffset\",\n \"stdDeviation\",\n \"stitchTiles\",\n \"surfaceScale\",\n \"systemLanguage\",\n \"tableValues\",\n \"targetX\",\n \"targetY\",\n \"textLength\",\n \"viewBox\",\n \"viewTarget\",\n \"xChannelSelector\",\n \"yChannelSelector\",\n \"zoomAndPan\",\n].map((val) => [val.toLowerCase(), val]));\n","/*\n * Module dependencies\n */\nimport * as ElementType from \"domelementtype\";\nimport { encodeXML, escapeAttribute, escapeText } from \"entities\";\n/**\n * Mixed-case SVG and MathML tags & attributes\n * recognized by the HTML parser.\n *\n * @see https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inforeign\n */\nimport { elementNames, attributeNames } from \"./foreignNames.js\";\nconst unencodedElements = new Set([\n \"style\",\n \"script\",\n \"xmp\",\n \"iframe\",\n \"noembed\",\n \"noframes\",\n \"plaintext\",\n \"noscript\",\n]);\nfunction replaceQuotes(value) {\n return value.replace(/\"/g, \""\");\n}\n/**\n * Format attributes\n */\nfunction formatAttributes(attributes, opts) {\n var _a;\n if (!attributes)\n return;\n const encode = ((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) === false\n ? replaceQuotes\n : opts.xmlMode || opts.encodeEntities !== \"utf8\"\n ? encodeXML\n : escapeAttribute;\n return Object.keys(attributes)\n .map((key) => {\n var _a, _b;\n const value = (_a = attributes[key]) !== null && _a !== void 0 ? _a : \"\";\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case attribute names */\n key = (_b = attributeNames.get(key)) !== null && _b !== void 0 ? _b : key;\n }\n if (!opts.emptyAttrs && !opts.xmlMode && value === \"\") {\n return key;\n }\n return `${key}=\"${encode(value)}\"`;\n })\n .join(\" \");\n}\n/**\n * Self-enclosing tags\n */\nconst singleTag = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\n/**\n * Renders a DOM node or an array of DOM nodes to a string.\n *\n * Can be thought of as the equivalent of the `outerHTML` of the passed node(s).\n *\n * @param node Node to be rendered.\n * @param options Changes serialization behavior\n */\nexport function render(node, options = {}) {\n const nodes = \"length\" in node ? node : [node];\n let output = \"\";\n for (let i = 0; i < nodes.length; i++) {\n output += renderNode(nodes[i], options);\n }\n return output;\n}\nexport default render;\nfunction renderNode(node, options) {\n switch (node.type) {\n case ElementType.Root:\n return render(node.children, options);\n // @ts-expect-error We don't use `Doctype` yet\n case ElementType.Doctype:\n case ElementType.Directive:\n return renderDirective(node);\n case ElementType.Comment:\n return renderComment(node);\n case ElementType.CDATA:\n return renderCdata(node);\n case ElementType.Script:\n case ElementType.Style:\n case ElementType.Tag:\n return renderTag(node, options);\n case ElementType.Text:\n return renderText(node, options);\n }\n}\nconst foreignModeIntegrationPoints = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignObject\",\n \"desc\",\n \"title\",\n]);\nconst foreignElements = new Set([\"svg\", \"math\"]);\nfunction renderTag(elem, opts) {\n var _a;\n // Handle SVG / MathML in HTML\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case element names */\n elem.name = (_a = elementNames.get(elem.name)) !== null && _a !== void 0 ? _a : elem.name;\n /* Exit foreign mode at integration points */\n if (elem.parent &&\n foreignModeIntegrationPoints.has(elem.parent.name)) {\n opts = { ...opts, xmlMode: false };\n }\n }\n if (!opts.xmlMode && foreignElements.has(elem.name)) {\n opts = { ...opts, xmlMode: \"foreign\" };\n }\n let tag = `<${elem.name}`;\n const attribs = formatAttributes(elem.attribs, opts);\n if (attribs) {\n tag += ` ${attribs}`;\n }\n if (elem.children.length === 0 &&\n (opts.xmlMode\n ? // In XML mode or foreign mode, and user hasn't explicitly turned off self-closing tags\n opts.selfClosingTags !== false\n : // User explicitly asked for self-closing tags, even in HTML mode\n opts.selfClosingTags && singleTag.has(elem.name))) {\n if (!opts.xmlMode)\n tag += \" \";\n tag += \"/>\";\n }\n else {\n tag += \">\";\n if (elem.children.length > 0) {\n tag += render(elem.children, opts);\n }\n if (opts.xmlMode || !singleTag.has(elem.name)) {\n tag += ``;\n }\n }\n return tag;\n}\nfunction renderDirective(elem) {\n return `<${elem.data}>`;\n}\nfunction renderText(elem, opts) {\n var _a;\n let data = elem.data || \"\";\n // If entities weren't decoded, no need to encode them back\n if (((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) !== false &&\n !(!opts.xmlMode &&\n elem.parent &&\n unencodedElements.has(elem.parent.name))) {\n data =\n opts.xmlMode || opts.encodeEntities !== \"utf8\"\n ? encodeXML(data)\n : escapeText(data);\n }\n return data;\n}\nfunction renderCdata(elem) {\n return ``;\n}\nfunction renderComment(elem) {\n return ``;\n}\n","import { hasChildren } from \"domhandler\";\n/**\n * Given an array of nodes, remove any member that is contained by another.\n *\n * @category Helpers\n * @param nodes Nodes to filter.\n * @returns Remaining nodes that aren't subtrees of each other.\n */\nexport function removeSubsets(nodes) {\n let idx = nodes.length;\n /*\n * Check if each node (or one of its ancestors) is already contained in the\n * array.\n */\n while (--idx >= 0) {\n const node = nodes[idx];\n /*\n * Remove the node if it is not unique.\n * We are going through the array from the end, so we only\n * have to check nodes that preceed the node under consideration in the array.\n */\n if (idx > 0 && nodes.lastIndexOf(node, idx - 1) >= 0) {\n nodes.splice(idx, 1);\n continue;\n }\n for (let ancestor = node.parent; ancestor; ancestor = ancestor.parent) {\n if (nodes.includes(ancestor)) {\n nodes.splice(idx, 1);\n break;\n }\n }\n }\n return nodes;\n}\n/**\n * @category Helpers\n * @see {@link http://dom.spec.whatwg.org/#dom-node-comparedocumentposition}\n */\nexport var DocumentPosition;\n(function (DocumentPosition) {\n DocumentPosition[DocumentPosition[\"DISCONNECTED\"] = 1] = \"DISCONNECTED\";\n DocumentPosition[DocumentPosition[\"PRECEDING\"] = 2] = \"PRECEDING\";\n DocumentPosition[DocumentPosition[\"FOLLOWING\"] = 4] = \"FOLLOWING\";\n DocumentPosition[DocumentPosition[\"CONTAINS\"] = 8] = \"CONTAINS\";\n DocumentPosition[DocumentPosition[\"CONTAINED_BY\"] = 16] = \"CONTAINED_BY\";\n})(DocumentPosition || (DocumentPosition = {}));\n/**\n * Compare the position of one node against another node in any other document.\n * The return value is a bitmask with the values from {@link DocumentPosition}.\n *\n * Document order:\n * > There is an ordering, document order, defined on all the nodes in the\n * > document corresponding to the order in which the first character of the\n * > XML representation of each node occurs in the XML representation of the\n * > document after expansion of general entities. Thus, the document element\n * > node will be the first node. Element nodes occur before their children.\n * > Thus, document order orders element nodes in order of the occurrence of\n * > their start-tag in the XML (after expansion of entities). The attribute\n * > nodes of an element occur after the element and before its children. The\n * > relative order of attribute nodes is implementation-dependent.\n *\n * Source:\n * http://www.w3.org/TR/DOM-Level-3-Core/glossary.html#dt-document-order\n *\n * @category Helpers\n * @param nodeA The first node to use in the comparison\n * @param nodeB The second node to use in the comparison\n * @returns A bitmask describing the input nodes' relative position.\n *\n * See http://dom.spec.whatwg.org/#dom-node-comparedocumentposition for\n * a description of these values.\n */\nexport function compareDocumentPosition(nodeA, nodeB) {\n const aParents = [];\n const bParents = [];\n if (nodeA === nodeB) {\n return 0;\n }\n let current = hasChildren(nodeA) ? nodeA : nodeA.parent;\n while (current) {\n aParents.unshift(current);\n current = current.parent;\n }\n current = hasChildren(nodeB) ? nodeB : nodeB.parent;\n while (current) {\n bParents.unshift(current);\n current = current.parent;\n }\n const maxIdx = Math.min(aParents.length, bParents.length);\n let idx = 0;\n while (idx < maxIdx && aParents[idx] === bParents[idx]) {\n idx++;\n }\n if (idx === 0) {\n return DocumentPosition.DISCONNECTED;\n }\n const sharedParent = aParents[idx - 1];\n const siblings = sharedParent.children;\n const aSibling = aParents[idx];\n const bSibling = bParents[idx];\n if (siblings.indexOf(aSibling) > siblings.indexOf(bSibling)) {\n if (sharedParent === nodeB) {\n return DocumentPosition.FOLLOWING | DocumentPosition.CONTAINED_BY;\n }\n return DocumentPosition.FOLLOWING;\n }\n if (sharedParent === nodeA) {\n return DocumentPosition.PRECEDING | DocumentPosition.CONTAINS;\n }\n return DocumentPosition.PRECEDING;\n}\n/**\n * Sort an array of nodes based on their relative position in the document and\n * remove any duplicate nodes. If the array contains nodes that do not belong to\n * the same document, sort order is unspecified.\n *\n * @category Helpers\n * @param nodes Array of DOM nodes.\n * @returns Collection of unique nodes, sorted in document order.\n */\nexport function uniqueSort(nodes) {\n nodes = nodes.filter((node, i, arr) => !arr.includes(node, i + 1));\n nodes.sort((a, b) => {\n const relative = compareDocumentPosition(a, b);\n if (relative & DocumentPosition.PRECEDING) {\n return -1;\n }\n else if (relative & DocumentPosition.FOLLOWING) {\n return 1;\n }\n return 0;\n });\n return nodes;\n}\n//# sourceMappingURL=helpers.js.map","import { Parser } from \"./Parser.js\";\nexport { Parser };\nimport { DomHandler, } from \"domhandler\";\nexport { DomHandler };\n// Helper methods\n/**\n * Parses the data, returns the resulting document.\n *\n * @param data The data that should be parsed.\n * @param options Optional options for the parser and DOM builder.\n */\nexport function parseDocument(data, options) {\n const handler = new DomHandler(undefined, options);\n new Parser(handler, options).end(data);\n return handler.root;\n}\n/**\n * Parses data, returns an array of the root nodes.\n *\n * Note that the root nodes still have a `Document` node as their parent.\n * Use `parseDocument` to get the `Document` node instead.\n *\n * @param data The data that should be parsed.\n * @param options Optional options for the parser and DOM builder.\n * @deprecated Use `parseDocument` instead.\n */\nexport function parseDOM(data, options) {\n return parseDocument(data, options).children;\n}\n/**\n * Creates a parser instance, with an attached DOM handler.\n *\n * @param cb A callback that will be called once parsing has been completed.\n * @param options Optional options for the parser and DOM builder.\n * @param elementCb An optional callback that will be called every time a tag has been completed inside of the DOM.\n */\nexport function createDomStream(cb, options, elementCb) {\n const handler = new DomHandler(cb, options, elementCb);\n return new Parser(handler, options);\n}\nexport { default as Tokenizer, } from \"./Tokenizer.js\";\n/*\n * All of the following exports exist for backwards-compatibility.\n * They should probably be removed eventually.\n */\nimport * as ElementType from \"domelementtype\";\nexport { ElementType };\nimport { getFeed } from \"domutils\";\nexport { getFeed };\n/**\n * Parse a feed.\n *\n * @param feed The feed that should be parsed, as a string.\n * @param options Optionally, options for parsing. When using this, you should set `xmlMode` to `true`.\n */\nexport function parseFeed(feed, options = { xmlMode: true }) {\n return getFeed(parseDOM(feed, options));\n}\nexport * as DomUtils from \"domutils\";\n// Old name for DomHandler\nexport { DomHandler as DefaultHandler };\n//# sourceMappingURL=index.js.map","import { hp2Builder } from '@selderee/plugin-htmlparser2';\nimport { parseDocument } from 'htmlparser2';\nimport { DecisionTree } from 'selderee';\nimport merge from 'deepmerge';\nimport { render } from 'dom-serializer';\n\n/**\n * Make a recursive function that will only run to a given depth\n * and switches to an alternative function at that depth. \\\n * No limitation if `n` is `undefined` (Just wraps `f` in that case).\n *\n * @param { number | undefined } n Allowed depth of recursion. `undefined` for no limitation.\n * @param { Function } f Function that accepts recursive callback as the first argument.\n * @param { Function } [g] Function to run instead, when maximum depth was reached. Do nothing by default.\n * @returns { Function }\n */\nfunction limitedDepthRecursive (n, f, g = () => undefined) {\n if (n === undefined) {\n const f1 = function (...args) { return f(f1, ...args); };\n return f1;\n }\n if (n >= 0) {\n return function (...args) { return f(limitedDepthRecursive(n - 1, f, g), ...args); };\n }\n return g;\n}\n\n/**\n * Return the same string or a substring with\n * the given character occurrences removed from each side.\n *\n * @param { string } str A string to trim.\n * @param { string } char A character to be trimmed.\n * @returns { string }\n */\nfunction trimCharacter (str, char) {\n let start = 0;\n let end = str.length;\n while (start < end && str[start] === char) { ++start; }\n while (end > start && str[end - 1] === char) { --end; }\n return (start > 0 || end < str.length)\n ? str.substring(start, end)\n : str;\n}\n\n/**\n * Return the same string or a substring with\n * the given character occurrences removed from the end only.\n *\n * @param { string } str A string to trim.\n * @param { string } char A character to be trimmed.\n * @returns { string }\n */\nfunction trimCharacterEnd (str, char) {\n let end = str.length;\n while (end > 0 && str[end - 1] === char) { --end; }\n return (end < str.length)\n ? str.substring(0, end)\n : str;\n}\n\n/**\n * Return a new string will all characters replaced with unicode escape sequences.\n * This extreme kind of escaping can used to be safely compose regular expressions.\n *\n * @param { string } str A string to escape.\n * @returns { string } A string of unicode escape sequences.\n */\nfunction unicodeEscape (str) {\n return str.replace(/[\\s\\S]/g, c => '\\\\u' + c.charCodeAt().toString(16).padStart(4, '0'));\n}\n\n/**\n * Deduplicate an array by a given key callback.\n * Item properties are merged recursively and with the preference for last defined values.\n * Of items with the same key, merged item takes the place of the last item,\n * others are omitted.\n *\n * @param { any[] } items An array to deduplicate.\n * @param { (x: any) => string } getKey Callback to get a value that distinguishes unique items.\n * @returns { any[] }\n */\nfunction mergeDuplicatesPreferLast (items, getKey) {\n const map = new Map();\n for (let i = items.length; i-- > 0;) {\n const item = items[i];\n const key = getKey(item);\n map.set(\n key,\n (map.has(key))\n ? merge(item, map.get(key), { arrayMerge: overwriteMerge$1 })\n : item\n );\n }\n return [...map.values()].reverse();\n}\n\nconst overwriteMerge$1 = (acc, src, options) => [...src];\n\n/**\n * Get a nested property from an object.\n *\n * @param { object } obj The object to query for the value.\n * @param { string[] } path The path to the property.\n * @returns { any }\n */\nfunction get (obj, path) {\n for (const key of path) {\n if (!obj) { return undefined; }\n obj = obj[key];\n }\n return obj;\n}\n\n/**\n * Convert a number into alphabetic sequence representation (Sequence without zeroes).\n *\n * For example: `a, ..., z, aa, ..., zz, aaa, ...`.\n *\n * @param { number } num Number to convert. Must be >= 1.\n * @param { string } [baseChar = 'a'] Character for 1 in the sequence.\n * @param { number } [base = 26] Number of characters in the sequence.\n * @returns { string }\n */\nfunction numberToLetterSequence (num, baseChar = 'a', base = 26) {\n const digits = [];\n do {\n num -= 1;\n digits.push(num % base);\n num = (num / base) >> 0; // quick `floor`\n } while (num > 0);\n const baseCode = baseChar.charCodeAt(0);\n return digits\n .reverse()\n .map(n => String.fromCharCode(baseCode + n))\n .join('');\n}\n\nconst I = ['I', 'X', 'C', 'M'];\nconst V = ['V', 'L', 'D'];\n\n/**\n * Convert a number to it's Roman representation. No large numbers extension.\n *\n * @param { number } num Number to convert. `0 < num <= 3999`.\n * @returns { string }\n */\nfunction numberToRoman (num) {\n return [...(num) + '']\n .map(n => +n)\n .reverse()\n .map((v, i) => ((v % 5 < 4)\n ? (v < 5 ? '' : V[i]) + I[i].repeat(v % 5)\n : I[i] + (v < 5 ? V[i] : I[i + 1])))\n .reverse()\n .join('');\n}\n\n/**\n * Helps to build text from words.\n */\nclass InlineTextBuilder {\n /**\n * Creates an instance of InlineTextBuilder.\n *\n * If `maxLineLength` is not provided then it is either `options.wordwrap` or unlimited.\n *\n * @param { Options } options HtmlToText options.\n * @param { number } [ maxLineLength ] This builder will try to wrap text to fit this line length.\n */\n constructor (options, maxLineLength = undefined) {\n /** @type { string[][] } */\n this.lines = [];\n /** @type { string[] } */\n this.nextLineWords = [];\n this.maxLineLength = maxLineLength || options.wordwrap || Number.MAX_VALUE;\n this.nextLineAvailableChars = this.maxLineLength;\n this.wrapCharacters = get(options, ['longWordSplit', 'wrapCharacters']) || [];\n this.forceWrapOnLimit = get(options, ['longWordSplit', 'forceWrapOnLimit']) || false;\n\n this.stashedSpace = false;\n this.wordBreakOpportunity = false;\n }\n\n /**\n * Add a new word.\n *\n * @param { string } word A word to add.\n * @param { boolean } [noWrap] Don't wrap text even if the line is too long.\n */\n pushWord (word, noWrap = false) {\n if (this.nextLineAvailableChars <= 0 && !noWrap) {\n this.startNewLine();\n }\n const isLineStart = this.nextLineWords.length === 0;\n const cost = word.length + (isLineStart ? 0 : 1);\n if ((cost <= this.nextLineAvailableChars) || noWrap) { // Fits into available budget\n\n this.nextLineWords.push(word);\n this.nextLineAvailableChars -= cost;\n\n } else { // Does not fit - try to split the word\n\n // The word is moved to a new line - prefer to wrap between words.\n const [first, ...rest] = this.splitLongWord(word);\n if (!isLineStart) { this.startNewLine(); }\n this.nextLineWords.push(first);\n this.nextLineAvailableChars -= first.length;\n for (const part of rest) {\n this.startNewLine();\n this.nextLineWords.push(part);\n this.nextLineAvailableChars -= part.length;\n }\n\n }\n }\n\n /**\n * Pop a word from the currently built line.\n * This doesn't affect completed lines.\n *\n * @returns { string }\n */\n popWord () {\n const lastWord = this.nextLineWords.pop();\n if (lastWord !== undefined) {\n const isLineStart = this.nextLineWords.length === 0;\n const cost = lastWord.length + (isLineStart ? 0 : 1);\n this.nextLineAvailableChars += cost;\n }\n return lastWord;\n }\n\n /**\n * Concat a word to the last word already in the builder.\n * Adds a new word in case there are no words yet in the last line.\n *\n * @param { string } word A word to be concatenated.\n * @param { boolean } [noWrap] Don't wrap text even if the line is too long.\n */\n concatWord (word, noWrap = false) {\n if (this.wordBreakOpportunity && word.length > this.nextLineAvailableChars) {\n this.pushWord(word, noWrap);\n this.wordBreakOpportunity = false;\n } else {\n const lastWord = this.popWord();\n this.pushWord((lastWord) ? lastWord.concat(word) : word, noWrap);\n }\n }\n\n /**\n * Add current line (and more empty lines if provided argument > 1) to the list of complete lines and start a new one.\n *\n * @param { number } n Number of line breaks that will be added to the resulting string.\n */\n startNewLine (n = 1) {\n this.lines.push(this.nextLineWords);\n if (n > 1) {\n this.lines.push(...Array.from({ length: n - 1 }, () => []));\n }\n this.nextLineWords = [];\n this.nextLineAvailableChars = this.maxLineLength;\n }\n\n /**\n * No words in this builder.\n *\n * @returns { boolean }\n */\n isEmpty () {\n return this.lines.length === 0\n && this.nextLineWords.length === 0;\n }\n\n clear () {\n this.lines.length = 0;\n this.nextLineWords.length = 0;\n this.nextLineAvailableChars = this.maxLineLength;\n }\n\n /**\n * Join all lines of words inside the InlineTextBuilder into a complete string.\n *\n * @returns { string }\n */\n toString () {\n return [...this.lines, this.nextLineWords]\n .map(words => words.join(' '))\n .join('\\n');\n }\n\n /**\n * Split a long word up to fit within the word wrap limit.\n * Use either a character to split looking back from the word wrap limit,\n * or truncate to the word wrap limit.\n *\n * @param { string } word Input word.\n * @returns { string[] } Parts of the word.\n */\n splitLongWord (word) {\n const parts = [];\n let idx = 0;\n while (word.length > this.maxLineLength) {\n\n const firstLine = word.substring(0, this.maxLineLength);\n const remainingChars = word.substring(this.maxLineLength);\n\n const splitIndex = firstLine.lastIndexOf(this.wrapCharacters[idx]);\n\n if (splitIndex > -1) { // Found a character to split on\n\n word = firstLine.substring(splitIndex + 1) + remainingChars;\n parts.push(firstLine.substring(0, splitIndex + 1));\n\n } else { // Not found a character to split on\n\n idx++;\n if (idx < this.wrapCharacters.length) { // There is next character to try\n\n word = firstLine + remainingChars;\n\n } else { // No more characters to try\n\n if (this.forceWrapOnLimit) {\n parts.push(firstLine);\n word = remainingChars;\n if (word.length > this.maxLineLength) {\n continue;\n }\n } else {\n word = firstLine + remainingChars;\n }\n break;\n\n }\n\n }\n\n }\n parts.push(word); // Add remaining part to array\n return parts;\n }\n}\n\n/* eslint-disable max-classes-per-file */\n\n\nclass StackItem {\n constructor (next = null) { this.next = next; }\n\n getRoot () { return (this.next) ? this.next : this; }\n}\n\nclass BlockStackItem extends StackItem {\n constructor (options, next = null, leadingLineBreaks = 1, maxLineLength = undefined) {\n super(next);\n this.leadingLineBreaks = leadingLineBreaks;\n this.inlineTextBuilder = new InlineTextBuilder(options, maxLineLength);\n this.rawText = '';\n this.stashedLineBreaks = 0;\n this.isPre = next && next.isPre;\n this.isNoWrap = next && next.isNoWrap;\n }\n}\n\nclass ListStackItem extends BlockStackItem {\n constructor (\n options,\n next = null,\n {\n interRowLineBreaks = 1,\n leadingLineBreaks = 2,\n maxLineLength = undefined,\n maxPrefixLength = 0,\n prefixAlign = 'left',\n } = {}\n ) {\n super(options, next, leadingLineBreaks, maxLineLength);\n this.maxPrefixLength = maxPrefixLength;\n this.prefixAlign = prefixAlign;\n this.interRowLineBreaks = interRowLineBreaks;\n }\n}\n\nclass ListItemStackItem extends BlockStackItem {\n constructor (\n options,\n next = null,\n {\n leadingLineBreaks = 1,\n maxLineLength = undefined,\n prefix = '',\n } = {}\n ) {\n super(options, next, leadingLineBreaks, maxLineLength);\n this.prefix = prefix;\n }\n}\n\nclass TableStackItem extends StackItem {\n constructor (next = null) {\n super(next);\n this.rows = [];\n this.isPre = next && next.isPre;\n this.isNoWrap = next && next.isNoWrap;\n }\n}\n\nclass TableRowStackItem extends StackItem {\n constructor (next = null) {\n super(next);\n this.cells = [];\n this.isPre = next && next.isPre;\n this.isNoWrap = next && next.isNoWrap;\n }\n}\n\nclass TableCellStackItem extends StackItem {\n constructor (options, next = null, maxColumnWidth = undefined) {\n super(next);\n this.inlineTextBuilder = new InlineTextBuilder(options, maxColumnWidth);\n this.rawText = '';\n this.stashedLineBreaks = 0;\n this.isPre = next && next.isPre;\n this.isNoWrap = next && next.isNoWrap;\n }\n}\n\nclass TransformerStackItem extends StackItem {\n constructor (next = null, transform) {\n super(next);\n this.transform = transform;\n }\n}\n\nfunction charactersToCodes (str) {\n return [...str]\n .map(c => '\\\\u' + c.charCodeAt(0).toString(16).padStart(4, '0'))\n .join('');\n}\n\n/**\n * Helps to handle HTML whitespaces.\n *\n * @class WhitespaceProcessor\n */\nclass WhitespaceProcessor {\n\n /**\n * Creates an instance of WhitespaceProcessor.\n *\n * @param { Options } options HtmlToText options.\n * @memberof WhitespaceProcessor\n */\n constructor (options) {\n this.whitespaceChars = (options.preserveNewlines)\n ? options.whitespaceCharacters.replace(/\\n/g, '')\n : options.whitespaceCharacters;\n const whitespaceCodes = charactersToCodes(this.whitespaceChars);\n this.leadingWhitespaceRe = new RegExp(`^[${whitespaceCodes}]`);\n this.trailingWhitespaceRe = new RegExp(`[${whitespaceCodes}]$`);\n this.allWhitespaceOrEmptyRe = new RegExp(`^[${whitespaceCodes}]*$`);\n this.newlineOrNonWhitespaceRe = new RegExp(`(\\\\n|[^\\\\n${whitespaceCodes}])`, 'g');\n this.newlineOrNonNewlineStringRe = new RegExp(`(\\\\n|[^\\\\n]+)`, 'g');\n\n if (options.preserveNewlines) {\n\n const wordOrNewlineRe = new RegExp(`\\\\n|[^\\\\n${whitespaceCodes}]+`, 'gm');\n\n /**\n * Shrink whitespaces and wrap text, add to the builder.\n *\n * @param { string } text Input text.\n * @param { InlineTextBuilder } inlineTextBuilder A builder to receive processed text.\n * @param { (str: string) => string } [ transform ] A transform to be applied to words.\n * @param { boolean } [noWrap] Don't wrap text even if the line is too long.\n */\n this.shrinkWrapAdd = function (text, inlineTextBuilder, transform = (str => str), noWrap = false) {\n if (!text) { return; }\n const previouslyStashedSpace = inlineTextBuilder.stashedSpace;\n let anyMatch = false;\n let m = wordOrNewlineRe.exec(text);\n if (m) {\n anyMatch = true;\n if (m[0] === '\\n') {\n inlineTextBuilder.startNewLine();\n } else if (previouslyStashedSpace || this.testLeadingWhitespace(text)) {\n inlineTextBuilder.pushWord(transform(m[0]), noWrap);\n } else {\n inlineTextBuilder.concatWord(transform(m[0]), noWrap);\n }\n while ((m = wordOrNewlineRe.exec(text)) !== null) {\n if (m[0] === '\\n') {\n inlineTextBuilder.startNewLine();\n } else {\n inlineTextBuilder.pushWord(transform(m[0]), noWrap);\n }\n }\n }\n inlineTextBuilder.stashedSpace = (previouslyStashedSpace && !anyMatch) || (this.testTrailingWhitespace(text));\n // No need to stash a space in case last added item was a new line,\n // but that won't affect anything later anyway.\n };\n\n } else {\n\n const wordRe = new RegExp(`[^${whitespaceCodes}]+`, 'g');\n\n this.shrinkWrapAdd = function (text, inlineTextBuilder, transform = (str => str), noWrap = false) {\n if (!text) { return; }\n const previouslyStashedSpace = inlineTextBuilder.stashedSpace;\n let anyMatch = false;\n let m = wordRe.exec(text);\n if (m) {\n anyMatch = true;\n if (previouslyStashedSpace || this.testLeadingWhitespace(text)) {\n inlineTextBuilder.pushWord(transform(m[0]), noWrap);\n } else {\n inlineTextBuilder.concatWord(transform(m[0]), noWrap);\n }\n while ((m = wordRe.exec(text)) !== null) {\n inlineTextBuilder.pushWord(transform(m[0]), noWrap);\n }\n }\n inlineTextBuilder.stashedSpace = (previouslyStashedSpace && !anyMatch) || this.testTrailingWhitespace(text);\n };\n\n }\n }\n\n /**\n * Add text with only minimal processing.\n * Everything between newlines considered a single word.\n * No whitespace is trimmed.\n * Not affected by preserveNewlines option - `\\n` always starts a new line.\n *\n * `noWrap` argument is `true` by default - this won't start a new line\n * even if there is not enough space left in the current line.\n *\n * @param { string } text Input text.\n * @param { InlineTextBuilder } inlineTextBuilder A builder to receive processed text.\n * @param { boolean } [noWrap] Don't wrap text even if the line is too long.\n */\n addLiteral (text, inlineTextBuilder, noWrap = true) {\n if (!text) { return; }\n const previouslyStashedSpace = inlineTextBuilder.stashedSpace;\n let anyMatch = false;\n let m = this.newlineOrNonNewlineStringRe.exec(text);\n if (m) {\n anyMatch = true;\n if (m[0] === '\\n') {\n inlineTextBuilder.startNewLine();\n } else if (previouslyStashedSpace) {\n inlineTextBuilder.pushWord(m[0], noWrap);\n } else {\n inlineTextBuilder.concatWord(m[0], noWrap);\n }\n while ((m = this.newlineOrNonNewlineStringRe.exec(text)) !== null) {\n if (m[0] === '\\n') {\n inlineTextBuilder.startNewLine();\n } else {\n inlineTextBuilder.pushWord(m[0], noWrap);\n }\n }\n }\n inlineTextBuilder.stashedSpace = (previouslyStashedSpace && !anyMatch);\n }\n\n /**\n * Test whether the given text starts with HTML whitespace character.\n *\n * @param { string } text The string to test.\n * @returns { boolean }\n */\n testLeadingWhitespace (text) {\n return this.leadingWhitespaceRe.test(text);\n }\n\n /**\n * Test whether the given text ends with HTML whitespace character.\n *\n * @param { string } text The string to test.\n * @returns { boolean }\n */\n testTrailingWhitespace (text) {\n return this.trailingWhitespaceRe.test(text);\n }\n\n /**\n * Test whether the given text contains any non-whitespace characters.\n *\n * @param { string } text The string to test.\n * @returns { boolean }\n */\n testContainsWords (text) {\n return !this.allWhitespaceOrEmptyRe.test(text);\n }\n\n /**\n * Return the number of newlines if there are no words.\n *\n * If any word is found then return zero regardless of the actual number of newlines.\n *\n * @param { string } text Input string.\n * @returns { number }\n */\n countNewlinesNoWords (text) {\n this.newlineOrNonWhitespaceRe.lastIndex = 0;\n let counter = 0;\n let match;\n while ((match = this.newlineOrNonWhitespaceRe.exec(text)) !== null) {\n if (match[0] === '\\n') {\n counter++;\n } else {\n return 0;\n }\n }\n return counter;\n }\n\n}\n\n/**\n * Helps to build text from inline and block elements.\n *\n * @class BlockTextBuilder\n */\nclass BlockTextBuilder {\n\n /**\n * Creates an instance of BlockTextBuilder.\n *\n * @param { Options } options HtmlToText options.\n * @param { import('selderee').Picker } picker Selectors decision tree picker.\n * @param { any} [metadata] Optional metadata for HTML document, for use in formatters.\n */\n constructor (options, picker, metadata = undefined) {\n this.options = options;\n this.picker = picker;\n this.metadata = metadata;\n this.whitespaceProcessor = new WhitespaceProcessor(options);\n /** @type { StackItem } */\n this._stackItem = new BlockStackItem(options);\n /** @type { TransformerStackItem } */\n this._wordTransformer = undefined;\n }\n\n /**\n * Put a word-by-word transform function onto the transformations stack.\n *\n * Mainly used for uppercasing. Can be bypassed to add unformatted text such as URLs.\n *\n * Word transformations applied before wrapping.\n *\n * @param { (str: string) => string } wordTransform Word transformation function.\n */\n pushWordTransform (wordTransform) {\n this._wordTransformer = new TransformerStackItem(this._wordTransformer, wordTransform);\n }\n\n /**\n * Remove a function from the word transformations stack.\n *\n * @returns { (str: string) => string } A function that was removed.\n */\n popWordTransform () {\n if (!this._wordTransformer) { return undefined; }\n const transform = this._wordTransformer.transform;\n this._wordTransformer = this._wordTransformer.next;\n return transform;\n }\n\n /**\n * Ignore wordwrap option in followup inline additions and disable automatic wrapping.\n */\n startNoWrap () {\n this._stackItem.isNoWrap = true;\n }\n\n /**\n * Return automatic wrapping to behavior defined by options.\n */\n stopNoWrap () {\n this._stackItem.isNoWrap = false;\n }\n\n /** @returns { (str: string) => string } */\n _getCombinedWordTransformer () {\n const wt = (this._wordTransformer)\n ? ((str) => applyTransformer(str, this._wordTransformer))\n : undefined;\n const ce = this.options.encodeCharacters;\n return (wt)\n ? ((ce) ? (str) => ce(wt(str)) : wt)\n : ce;\n }\n\n _popStackItem () {\n const item = this._stackItem;\n this._stackItem = item.next;\n return item;\n }\n\n /**\n * Add a line break into currently built block.\n */\n addLineBreak () {\n if (!(\n this._stackItem instanceof BlockStackItem\n || this._stackItem instanceof ListItemStackItem\n || this._stackItem instanceof TableCellStackItem\n )) { return; }\n if (this._stackItem.isPre) {\n this._stackItem.rawText += '\\n';\n } else {\n this._stackItem.inlineTextBuilder.startNewLine();\n }\n }\n\n /**\n * Allow to break line in case directly following text will not fit.\n */\n addWordBreakOpportunity () {\n if (\n this._stackItem instanceof BlockStackItem\n || this._stackItem instanceof ListItemStackItem\n || this._stackItem instanceof TableCellStackItem\n ) {\n this._stackItem.inlineTextBuilder.wordBreakOpportunity = true;\n }\n }\n\n /**\n * Add a node inline into the currently built block.\n *\n * @param { string } str\n * Text content of a node to add.\n *\n * @param { object } [param1]\n * Object holding the parameters of the operation.\n *\n * @param { boolean } [param1.noWordTransform]\n * Ignore word transformers if there are any.\n * Don't encode characters as well.\n * (Use this for things like URL addresses).\n */\n addInline (str, { noWordTransform = false } = {}) {\n if (!(\n this._stackItem instanceof BlockStackItem\n || this._stackItem instanceof ListItemStackItem\n || this._stackItem instanceof TableCellStackItem\n )) { return; }\n\n if (this._stackItem.isPre) {\n this._stackItem.rawText += str;\n return;\n }\n\n if (\n str.length === 0 || // empty string\n (\n this._stackItem.stashedLineBreaks && // stashed linebreaks make whitespace irrelevant\n !this.whitespaceProcessor.testContainsWords(str) // no words to add\n )\n ) { return; }\n\n if (this.options.preserveNewlines) {\n const newlinesNumber = this.whitespaceProcessor.countNewlinesNoWords(str);\n if (newlinesNumber > 0) {\n this._stackItem.inlineTextBuilder.startNewLine(newlinesNumber);\n // keep stashedLineBreaks unchanged\n return;\n }\n }\n\n if (this._stackItem.stashedLineBreaks) {\n this._stackItem.inlineTextBuilder.startNewLine(this._stackItem.stashedLineBreaks);\n }\n this.whitespaceProcessor.shrinkWrapAdd(\n str,\n this._stackItem.inlineTextBuilder,\n (noWordTransform) ? undefined : this._getCombinedWordTransformer(),\n this._stackItem.isNoWrap\n );\n this._stackItem.stashedLineBreaks = 0; // inline text doesn't introduce line breaks\n }\n\n /**\n * Add a string inline into the currently built block.\n *\n * Use this for markup elements that don't have to adhere\n * to text layout rules.\n *\n * @param { string } str Text to add.\n */\n addLiteral (str) {\n if (!(\n this._stackItem instanceof BlockStackItem\n || this._stackItem instanceof ListItemStackItem\n || this._stackItem instanceof TableCellStackItem\n )) { return; }\n\n if (str.length === 0) { return; }\n\n if (this._stackItem.isPre) {\n this._stackItem.rawText += str;\n return;\n }\n\n if (this._stackItem.stashedLineBreaks) {\n this._stackItem.inlineTextBuilder.startNewLine(this._stackItem.stashedLineBreaks);\n }\n this.whitespaceProcessor.addLiteral(\n str,\n this._stackItem.inlineTextBuilder,\n this._stackItem.isNoWrap\n );\n this._stackItem.stashedLineBreaks = 0;\n }\n\n /**\n * Start building a new block.\n *\n * @param { object } [param0]\n * Object holding the parameters of the block.\n *\n * @param { number } [param0.leadingLineBreaks]\n * This block should have at least this number of line breaks to separate it from any preceding block.\n *\n * @param { number } [param0.reservedLineLength]\n * Reserve this number of characters on each line for block markup.\n *\n * @param { boolean } [param0.isPre]\n * Should HTML whitespace be preserved inside this block.\n */\n openBlock ({ leadingLineBreaks = 1, reservedLineLength = 0, isPre = false } = {}) {\n const maxLineLength = Math.max(20, this._stackItem.inlineTextBuilder.maxLineLength - reservedLineLength);\n this._stackItem = new BlockStackItem(\n this.options,\n this._stackItem,\n leadingLineBreaks,\n maxLineLength\n );\n if (isPre) { this._stackItem.isPre = true; }\n }\n\n /**\n * Finalize currently built block, add it's content to the parent block.\n *\n * @param { object } [param0]\n * Object holding the parameters of the block.\n *\n * @param { number } [param0.trailingLineBreaks]\n * This block should have at least this number of line breaks to separate it from any following block.\n *\n * @param { (str: string) => string } [param0.blockTransform]\n * A function to transform the block text before adding to the parent block.\n * This happens after word wrap and should be used in combination with reserved line length\n * in order to keep line lengths correct.\n * Used for whole block markup.\n */\n closeBlock ({ trailingLineBreaks = 1, blockTransform = undefined } = {}) {\n const block = this._popStackItem();\n const blockText = (blockTransform) ? blockTransform(getText(block)) : getText(block);\n addText(this._stackItem, blockText, block.leadingLineBreaks, Math.max(block.stashedLineBreaks, trailingLineBreaks));\n }\n\n /**\n * Start building a new list.\n *\n * @param { object } [param0]\n * Object holding the parameters of the list.\n *\n * @param { number } [param0.maxPrefixLength]\n * Length of the longest list item prefix.\n * If not supplied or too small then list items won't be aligned properly.\n *\n * @param { 'left' | 'right' } [param0.prefixAlign]\n * Specify how prefixes of different lengths have to be aligned\n * within a column.\n *\n * @param { number } [param0.interRowLineBreaks]\n * Minimum number of line breaks between list items.\n *\n * @param { number } [param0.leadingLineBreaks]\n * This list should have at least this number of line breaks to separate it from any preceding block.\n */\n openList ({ maxPrefixLength = 0, prefixAlign = 'left', interRowLineBreaks = 1, leadingLineBreaks = 2 } = {}) {\n this._stackItem = new ListStackItem(this.options, this._stackItem, {\n interRowLineBreaks: interRowLineBreaks,\n leadingLineBreaks: leadingLineBreaks,\n maxLineLength: this._stackItem.inlineTextBuilder.maxLineLength,\n maxPrefixLength: maxPrefixLength,\n prefixAlign: prefixAlign\n });\n }\n\n /**\n * Start building a new list item.\n *\n * @param {object} param0\n * Object holding the parameters of the list item.\n *\n * @param { string } [param0.prefix]\n * Prefix for this list item (item number, bullet point, etc).\n */\n openListItem ({ prefix = '' } = {}) {\n if (!(this._stackItem instanceof ListStackItem)) {\n throw new Error('Can\\'t add a list item to something that is not a list! Check the formatter.');\n }\n const list = this._stackItem;\n const prefixLength = Math.max(prefix.length, list.maxPrefixLength);\n const maxLineLength = Math.max(20, list.inlineTextBuilder.maxLineLength - prefixLength);\n this._stackItem = new ListItemStackItem(this.options, list, {\n prefix: prefix,\n maxLineLength: maxLineLength,\n leadingLineBreaks: list.interRowLineBreaks\n });\n }\n\n /**\n * Finalize currently built list item, add it's content to the parent list.\n */\n closeListItem () {\n const listItem = this._popStackItem();\n const list = listItem.next;\n\n const prefixLength = Math.max(listItem.prefix.length, list.maxPrefixLength);\n const spacing = '\\n' + ' '.repeat(prefixLength);\n const prefix = (list.prefixAlign === 'right')\n ? listItem.prefix.padStart(prefixLength)\n : listItem.prefix.padEnd(prefixLength);\n const text = prefix + getText(listItem).replace(/\\n/g, spacing);\n\n addText(\n list,\n text,\n listItem.leadingLineBreaks,\n Math.max(listItem.stashedLineBreaks, list.interRowLineBreaks)\n );\n }\n\n /**\n * Finalize currently built list, add it's content to the parent block.\n *\n * @param { object } param0\n * Object holding the parameters of the list.\n *\n * @param { number } [param0.trailingLineBreaks]\n * This list should have at least this number of line breaks to separate it from any following block.\n */\n closeList ({ trailingLineBreaks = 2 } = {}) {\n const list = this._popStackItem();\n const text = getText(list);\n if (text) {\n addText(this._stackItem, text, list.leadingLineBreaks, trailingLineBreaks);\n }\n }\n\n /**\n * Start building a table.\n */\n openTable () {\n this._stackItem = new TableStackItem(this._stackItem);\n }\n\n /**\n * Start building a table row.\n */\n openTableRow () {\n if (!(this._stackItem instanceof TableStackItem)) {\n throw new Error('Can\\'t add a table row to something that is not a table! Check the formatter.');\n }\n this._stackItem = new TableRowStackItem(this._stackItem);\n }\n\n /**\n * Start building a table cell.\n *\n * @param { object } [param0]\n * Object holding the parameters of the cell.\n *\n * @param { number } [param0.maxColumnWidth]\n * Wrap cell content to this width. Fall back to global wordwrap value if undefined.\n */\n openTableCell ({ maxColumnWidth = undefined } = {}) {\n if (!(this._stackItem instanceof TableRowStackItem)) {\n throw new Error('Can\\'t add a table cell to something that is not a table row! Check the formatter.');\n }\n this._stackItem = new TableCellStackItem(this.options, this._stackItem, maxColumnWidth);\n }\n\n /**\n * Finalize currently built table cell and add it to parent table row's cells.\n *\n * @param { object } [param0]\n * Object holding the parameters of the cell.\n *\n * @param { number } [param0.colspan] How many columns this cell should occupy.\n * @param { number } [param0.rowspan] How many rows this cell should occupy.\n */\n closeTableCell ({ colspan = 1, rowspan = 1 } = {}) {\n const cell = this._popStackItem();\n const text = trimCharacter(getText(cell), '\\n');\n cell.next.cells.push({ colspan: colspan, rowspan: rowspan, text: text });\n }\n\n /**\n * Finalize currently built table row and add it to parent table's rows.\n */\n closeTableRow () {\n const row = this._popStackItem();\n row.next.rows.push(row.cells);\n }\n\n /**\n * Finalize currently built table and add the rendered text to the parent block.\n *\n * @param { object } param0\n * Object holding the parameters of the table.\n *\n * @param { TablePrinter } param0.tableToString\n * A function to convert a table of stringified cells into a complete table.\n *\n * @param { number } [param0.leadingLineBreaks]\n * This table should have at least this number of line breaks to separate if from any preceding block.\n *\n * @param { number } [param0.trailingLineBreaks]\n * This table should have at least this number of line breaks to separate it from any following block.\n */\n closeTable ({ tableToString, leadingLineBreaks = 2, trailingLineBreaks = 2 }) {\n const table = this._popStackItem();\n const output = tableToString(table.rows);\n if (output) {\n addText(this._stackItem, output, leadingLineBreaks, trailingLineBreaks);\n }\n }\n\n /**\n * Return the rendered text content of this builder.\n *\n * @returns { string }\n */\n toString () {\n return getText(this._stackItem.getRoot());\n // There should only be the root item if everything is closed properly.\n }\n\n}\n\nfunction getText (stackItem) {\n if (!(\n stackItem instanceof BlockStackItem\n || stackItem instanceof ListItemStackItem\n || stackItem instanceof TableCellStackItem\n )) {\n throw new Error('Only blocks, list items and table cells can be requested for text contents.');\n }\n return (stackItem.inlineTextBuilder.isEmpty())\n ? stackItem.rawText\n : stackItem.rawText + stackItem.inlineTextBuilder.toString();\n}\n\nfunction addText (stackItem, text, leadingLineBreaks, trailingLineBreaks) {\n if (!(\n stackItem instanceof BlockStackItem\n || stackItem instanceof ListItemStackItem\n || stackItem instanceof TableCellStackItem\n )) {\n throw new Error('Only blocks, list items and table cells can contain text.');\n }\n const parentText = getText(stackItem);\n const lineBreaks = Math.max(stackItem.stashedLineBreaks, leadingLineBreaks);\n stackItem.inlineTextBuilder.clear();\n if (parentText) {\n stackItem.rawText = parentText + '\\n'.repeat(lineBreaks) + text;\n } else {\n stackItem.rawText = text;\n stackItem.leadingLineBreaks = lineBreaks;\n }\n stackItem.stashedLineBreaks = trailingLineBreaks;\n}\n\n/**\n * @param { string } str A string to transform.\n * @param { TransformerStackItem } transformer A transformer item (with possible continuation).\n * @returns { string }\n */\nfunction applyTransformer (str, transformer) {\n return ((transformer) ? applyTransformer(transformer.transform(str), transformer.next) : str);\n}\n\n/**\n * Compile selectors into a decision tree,\n * return a function intended for batch processing.\n *\n * @param { Options } [options = {}] HtmlToText options (defaults, formatters, user options merged, deduplicated).\n * @returns { (html: string, metadata?: any) => string } Pre-configured converter function.\n * @static\n */\nfunction compile$1 (options = {}) {\n const selectorsWithoutFormat = options.selectors.filter(s => !s.format);\n if (selectorsWithoutFormat.length) {\n throw new Error(\n 'Following selectors have no specified format: ' +\n selectorsWithoutFormat.map(s => `\\`${s.selector}\\``).join(', ')\n );\n }\n const picker = new DecisionTree(\n options.selectors.map(s => [s.selector, s])\n ).build(hp2Builder);\n\n if (typeof options.encodeCharacters !== 'function') {\n options.encodeCharacters = makeReplacerFromDict(options.encodeCharacters);\n }\n\n const baseSelectorsPicker = new DecisionTree(\n options.baseElements.selectors.map((s, i) => [s, i + 1])\n ).build(hp2Builder);\n function findBaseElements (dom) {\n return findBases(dom, options, baseSelectorsPicker);\n }\n\n const limitedWalk = limitedDepthRecursive(\n options.limits.maxDepth,\n recursiveWalk,\n function (dom, builder) {\n builder.addInline(options.limits.ellipsis || '');\n }\n );\n\n return function (html, metadata = undefined) {\n return process(html, metadata, options, picker, findBaseElements, limitedWalk);\n };\n}\n\n\n/**\n * Convert given HTML according to preprocessed options.\n *\n * @param { string } html HTML content to convert.\n * @param { any } metadata Optional metadata for HTML document, for use in formatters.\n * @param { Options } options HtmlToText options (preprocessed).\n * @param { import('selderee').Picker } picker\n * Tag definition picker for DOM nodes processing.\n * @param { (dom: DomNode[]) => DomNode[] } findBaseElements\n * Function to extract elements from HTML DOM\n * that will only be present in the output text.\n * @param { RecursiveCallback } walk Recursive callback.\n * @returns { string }\n */\nfunction process (html, metadata, options, picker, findBaseElements, walk) {\n const maxInputLength = options.limits.maxInputLength;\n if (maxInputLength && html && html.length > maxInputLength) {\n console.warn(\n `Input length ${html.length} is above allowed limit of ${maxInputLength}. Truncating without ellipsis.`\n );\n html = html.substring(0, maxInputLength);\n }\n\n const document = parseDocument(html, { decodeEntities: options.decodeEntities });\n const bases = findBaseElements(document.children);\n const builder = new BlockTextBuilder(options, picker, metadata);\n walk(bases, builder);\n return builder.toString();\n}\n\n\nfunction findBases (dom, options, baseSelectorsPicker) {\n const results = [];\n\n function recursiveWalk (walk, /** @type { DomNode[] } */ dom) {\n dom = dom.slice(0, options.limits.maxChildNodes);\n for (const elem of dom) {\n if (elem.type !== 'tag') {\n continue;\n }\n const pickedSelectorIndex = baseSelectorsPicker.pick1(elem);\n if (pickedSelectorIndex > 0) {\n results.push({ selectorIndex: pickedSelectorIndex, element: elem });\n } else if (elem.children) {\n walk(elem.children);\n }\n if (results.length >= options.limits.maxBaseElements) {\n return;\n }\n }\n }\n\n const limitedWalk = limitedDepthRecursive(\n options.limits.maxDepth,\n recursiveWalk\n );\n limitedWalk(dom);\n\n if (options.baseElements.orderBy !== 'occurrence') { // 'selectors'\n results.sort((a, b) => a.selectorIndex - b.selectorIndex);\n }\n return (options.baseElements.returnDomByDefault && results.length === 0)\n ? dom\n : results.map(x => x.element);\n}\n\n/**\n * Function to walk through DOM nodes and accumulate their string representations.\n *\n * @param { RecursiveCallback } walk Recursive callback.\n * @param { DomNode[] } [dom] Nodes array to process.\n * @param { BlockTextBuilder } builder Passed around to accumulate output text.\n * @private\n */\nfunction recursiveWalk (walk, dom, builder) {\n if (!dom) { return; }\n\n const options = builder.options;\n\n const tooManyChildNodes = dom.length > options.limits.maxChildNodes;\n if (tooManyChildNodes) {\n dom = dom.slice(0, options.limits.maxChildNodes);\n dom.push({\n data: options.limits.ellipsis,\n type: 'text'\n });\n }\n\n for (const elem of dom) {\n switch (elem.type) {\n case 'text': {\n builder.addInline(elem.data);\n break;\n }\n case 'tag': {\n const tagDefinition = builder.picker.pick1(elem);\n const format = options.formatters[tagDefinition.format];\n format(elem, walk, builder, tagDefinition.options || {});\n break;\n }\n }\n }\n\n return;\n}\n\n/**\n * @param { Object } dict\n * A dictionary where keys are characters to replace\n * and values are replacement strings.\n *\n * First code point from dict keys is used.\n * Compound emojis with ZWJ are not supported (not until Node 16).\n *\n * @returns { ((str: string) => string) | undefined }\n */\nfunction makeReplacerFromDict (dict) {\n if (!dict || Object.keys(dict).length === 0) {\n return undefined;\n }\n /** @type { [string, string][] } */\n const entries = Object.entries(dict).filter(([, v]) => v !== false);\n const regex = new RegExp(\n entries\n .map(([c]) => `(${unicodeEscape([...c][0])})`)\n .join('|'),\n 'g'\n );\n const values = entries.map(([, v]) => v);\n const replacer = (m, ...cgs) => values[cgs.findIndex(cg => cg)];\n return (str) => str.replace(regex, replacer);\n}\n\n/**\n * Dummy formatter that discards the input and does nothing.\n *\n * @type { FormatCallback }\n */\nfunction formatSkip (elem, walk, builder, formatOptions) {\n /* do nothing */\n}\n\n/**\n * Insert the given string literal inline instead of a tag.\n *\n * @type { FormatCallback }\n */\nfunction formatInlineString (elem, walk, builder, formatOptions) {\n builder.addLiteral(formatOptions.string || '');\n}\n\n/**\n * Insert a block with the given string literal instead of a tag.\n *\n * @type { FormatCallback }\n */\nfunction formatBlockString (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks || 2 });\n builder.addLiteral(formatOptions.string || '');\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\n/**\n * Process an inline-level element.\n *\n * @type { FormatCallback }\n */\nfunction formatInline (elem, walk, builder, formatOptions) {\n walk(elem.children, builder);\n}\n\n/**\n * Process a block-level container.\n *\n * @type { FormatCallback }\n */\nfunction formatBlock$1 (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks || 2 });\n walk(elem.children, builder);\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\nfunction renderOpenTag (elem) {\n const attrs = (elem.attribs && elem.attribs.length)\n ? ' ' + Object.entries(elem.attribs)\n .map(([k, v]) => ((v === '') ? k : `${k}=${v.replace(/\"/g, '"')}`))\n .join(' ')\n : '';\n return `<${elem.name}${attrs}>`;\n}\n\nfunction renderCloseTag (elem) {\n return ``;\n}\n\n/**\n * Render an element as inline HTML tag, walk through it's children.\n *\n * @type { FormatCallback }\n */\nfunction formatInlineTag (elem, walk, builder, formatOptions) {\n builder.startNoWrap();\n builder.addLiteral(renderOpenTag(elem));\n builder.stopNoWrap();\n walk(elem.children, builder);\n builder.startNoWrap();\n builder.addLiteral(renderCloseTag(elem));\n builder.stopNoWrap();\n}\n\n/**\n * Render an element as HTML block bag, walk through it's children.\n *\n * @type { FormatCallback }\n */\nfunction formatBlockTag (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks || 2 });\n builder.startNoWrap();\n builder.addLiteral(renderOpenTag(elem));\n builder.stopNoWrap();\n walk(elem.children, builder);\n builder.startNoWrap();\n builder.addLiteral(renderCloseTag(elem));\n builder.stopNoWrap();\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\n/**\n * Render an element with all it's children as inline HTML.\n *\n * @type { FormatCallback }\n */\nfunction formatInlineHtml (elem, walk, builder, formatOptions) {\n builder.startNoWrap();\n builder.addLiteral(\n render(elem, { decodeEntities: builder.options.decodeEntities })\n );\n builder.stopNoWrap();\n}\n\n/**\n * Render an element with all it's children as HTML block.\n *\n * @type { FormatCallback }\n */\nfunction formatBlockHtml (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks || 2 });\n builder.startNoWrap();\n builder.addLiteral(\n render(elem, { decodeEntities: builder.options.decodeEntities })\n );\n builder.stopNoWrap();\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\n/**\n * Render inline element wrapped with given strings.\n *\n * @type { FormatCallback }\n */\nfunction formatInlineSurround (elem, walk, builder, formatOptions) {\n builder.addLiteral(formatOptions.prefix || '');\n walk(elem.children, builder);\n builder.addLiteral(formatOptions.suffix || '');\n}\n\nvar genericFormatters = /*#__PURE__*/Object.freeze({\n __proto__: null,\n block: formatBlock$1,\n blockHtml: formatBlockHtml,\n blockString: formatBlockString,\n blockTag: formatBlockTag,\n inline: formatInline,\n inlineHtml: formatInlineHtml,\n inlineString: formatInlineString,\n inlineSurround: formatInlineSurround,\n inlineTag: formatInlineTag,\n skip: formatSkip\n});\n\nfunction getRow (matrix, j) {\n if (!matrix[j]) { matrix[j] = []; }\n return matrix[j];\n}\n\nfunction findFirstVacantIndex (row, x = 0) {\n while (row[x]) { x++; }\n return x;\n}\n\nfunction transposeInPlace (matrix, maxSize) {\n for (let i = 0; i < maxSize; i++) {\n const rowI = getRow(matrix, i);\n for (let j = 0; j < i; j++) {\n const rowJ = getRow(matrix, j);\n const temp = rowI[j];\n rowI[j] = rowJ[i];\n rowJ[i] = temp;\n }\n }\n}\n\nfunction putCellIntoLayout (cell, layout, baseRow, baseCol) {\n for (let r = 0; r < cell.rowspan; r++) {\n const layoutRow = getRow(layout, baseRow + r);\n for (let c = 0; c < cell.colspan; c++) {\n layoutRow[baseCol + c] = cell;\n }\n }\n}\n\nfunction updateOffset (offsets, base, span, value) {\n offsets[base + span] = Math.max(\n offsets[base + span] || 0,\n offsets[base] + value\n );\n}\n\n/**\n * Render a table into a string.\n * Cells can contain multiline text and span across multiple rows and columns.\n *\n * Modifies cells to add lines array.\n *\n * @param { TablePrinterCell[][] } tableRows Table to render.\n * @param { number } rowSpacing Number of spaces between columns.\n * @param { number } colSpacing Number of empty lines between rows.\n * @returns { string }\n */\nfunction tableToString (tableRows, rowSpacing, colSpacing) {\n const layout = [];\n let colNumber = 0;\n const rowNumber = tableRows.length;\n const rowOffsets = [0];\n // Fill the layout table and row offsets row-by-row.\n for (let j = 0; j < rowNumber; j++) {\n const layoutRow = getRow(layout, j);\n const cells = tableRows[j];\n let x = 0;\n for (let i = 0; i < cells.length; i++) {\n const cell = cells[i];\n x = findFirstVacantIndex(layoutRow, x);\n putCellIntoLayout(cell, layout, j, x);\n x += cell.colspan;\n cell.lines = cell.text.split('\\n');\n const cellHeight = cell.lines.length;\n updateOffset(rowOffsets, j, cell.rowspan, cellHeight + rowSpacing);\n }\n colNumber = (layoutRow.length > colNumber) ? layoutRow.length : colNumber;\n }\n\n transposeInPlace(layout, (rowNumber > colNumber) ? rowNumber : colNumber);\n\n const outputLines = [];\n const colOffsets = [0];\n // Fill column offsets and output lines column-by-column.\n for (let x = 0; x < colNumber; x++) {\n let y = 0;\n let cell;\n while (y < rowNumber && (cell = layout[x][y])) {\n if (!cell.rendered) {\n let cellWidth = 0;\n for (let j = 0; j < cell.lines.length; j++) {\n const line = cell.lines[j];\n const lineOffset = rowOffsets[y] + j;\n outputLines[lineOffset] = (outputLines[lineOffset] || '').padEnd(colOffsets[x]) + line;\n cellWidth = (line.length > cellWidth) ? line.length : cellWidth;\n }\n updateOffset(colOffsets, x, cell.colspan, cellWidth + colSpacing);\n cell.rendered = true;\n }\n y += cell.rowspan;\n }\n }\n\n return outputLines.join('\\n');\n}\n\n/**\n * Process a line-break.\n *\n * @type { FormatCallback }\n */\nfunction formatLineBreak (elem, walk, builder, formatOptions) {\n builder.addLineBreak();\n}\n\n/**\n * Process a `wbr` tag (word break opportunity).\n *\n * @type { FormatCallback }\n */\nfunction formatWbr (elem, walk, builder, formatOptions) {\n builder.addWordBreakOpportunity();\n}\n\n/**\n * Process a horizontal line.\n *\n * @type { FormatCallback }\n */\nfunction formatHorizontalLine (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks || 2 });\n builder.addInline('-'.repeat(formatOptions.length || builder.options.wordwrap || 40));\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\n/**\n * Process a paragraph.\n *\n * @type { FormatCallback }\n */\nfunction formatParagraph (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks || 2 });\n walk(elem.children, builder);\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\n/**\n * Process a preformatted content.\n *\n * @type { FormatCallback }\n */\nfunction formatPre (elem, walk, builder, formatOptions) {\n builder.openBlock({\n isPre: true,\n leadingLineBreaks: formatOptions.leadingLineBreaks || 2\n });\n walk(elem.children, builder);\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\n/**\n * Process a heading.\n *\n * @type { FormatCallback }\n */\nfunction formatHeading (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks || 2 });\n if (formatOptions.uppercase !== false) {\n builder.pushWordTransform(str => str.toUpperCase());\n walk(elem.children, builder);\n builder.popWordTransform();\n } else {\n walk(elem.children, builder);\n }\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\n/**\n * Process a blockquote.\n *\n * @type { FormatCallback }\n */\nfunction formatBlockquote (elem, walk, builder, formatOptions) {\n builder.openBlock({\n leadingLineBreaks: formatOptions.leadingLineBreaks || 2,\n reservedLineLength: 2\n });\n walk(elem.children, builder);\n builder.closeBlock({\n trailingLineBreaks: formatOptions.trailingLineBreaks || 2,\n blockTransform: str => ((formatOptions.trimEmptyLines !== false) ? trimCharacter(str, '\\n') : str)\n .split('\\n')\n .map(line => '> ' + line)\n .join('\\n')\n });\n}\n\nfunction withBrackets (str, brackets) {\n if (!brackets) { return str; }\n\n const lbr = (typeof brackets[0] === 'string')\n ? brackets[0]\n : '[';\n const rbr = (typeof brackets[1] === 'string')\n ? brackets[1]\n : ']';\n return lbr + str + rbr;\n}\n\nfunction pathRewrite (path, rewriter, baseUrl, metadata, elem) {\n const modifiedPath = (typeof rewriter === 'function')\n ? rewriter(path, metadata, elem)\n : path;\n return (modifiedPath[0] === '/' && baseUrl)\n ? trimCharacterEnd(baseUrl, '/') + modifiedPath\n : modifiedPath;\n}\n\n/**\n * Process an image.\n *\n * @type { FormatCallback }\n */\nfunction formatImage (elem, walk, builder, formatOptions) {\n const attribs = elem.attribs || {};\n const alt = (attribs.alt)\n ? attribs.alt\n : '';\n const src = (!attribs.src)\n ? ''\n : pathRewrite(attribs.src, formatOptions.pathRewrite, formatOptions.baseUrl, builder.metadata, elem);\n const text = (!src)\n ? alt\n : (!alt)\n ? withBrackets(src, formatOptions.linkBrackets)\n : alt + ' ' + withBrackets(src, formatOptions.linkBrackets);\n\n builder.addInline(text, { noWordTransform: true });\n}\n\n/**\n * Process an anchor.\n *\n * @type { FormatCallback }\n */\nfunction formatAnchor (elem, walk, builder, formatOptions) {\n function getHref () {\n if (formatOptions.ignoreHref) { return ''; }\n if (!elem.attribs || !elem.attribs.href) { return ''; }\n let href = elem.attribs.href.replace(/^mailto:/, '');\n if (formatOptions.noAnchorUrl && href[0] === '#') { return ''; }\n href = pathRewrite(href, formatOptions.pathRewrite, formatOptions.baseUrl, builder.metadata, elem);\n return href;\n }\n const href = getHref();\n if (!href) {\n walk(elem.children, builder);\n } else {\n let text = '';\n builder.pushWordTransform(\n str => {\n if (str) { text += str; }\n return str;\n }\n );\n walk(elem.children, builder);\n builder.popWordTransform();\n\n const hideSameLink = formatOptions.hideLinkHrefIfSameAsText && href === text;\n if (!hideSameLink) {\n builder.addInline(\n (!text)\n ? href\n : ' ' + withBrackets(href, formatOptions.linkBrackets),\n { noWordTransform: true }\n );\n }\n }\n}\n\n/**\n * @param { DomNode } elem List items with their prefixes.\n * @param { RecursiveCallback } walk Recursive callback to process child nodes.\n * @param { BlockTextBuilder } builder Passed around to accumulate output text.\n * @param { FormatOptions } formatOptions Options specific to a formatter.\n * @param { () => string } nextPrefixCallback Function that returns increasing index each time it is called.\n */\nfunction formatList (elem, walk, builder, formatOptions, nextPrefixCallback) {\n const isNestedList = get(elem, ['parent', 'name']) === 'li';\n\n // With Roman numbers, index length is not as straightforward as with Arabic numbers or letters,\n // so the dumb length comparison is the most robust way to get the correct value.\n let maxPrefixLength = 0;\n const listItems = (elem.children || [])\n // it might be more accurate to check only for html spaces here, but no significant benefit\n .filter(child => child.type !== 'text' || !/^\\s*$/.test(child.data))\n .map(function (child) {\n if (child.name !== 'li') {\n return { node: child, prefix: '' };\n }\n const prefix = (isNestedList)\n ? nextPrefixCallback().trimStart()\n : nextPrefixCallback();\n if (prefix.length > maxPrefixLength) { maxPrefixLength = prefix.length; }\n return { node: child, prefix: prefix };\n });\n if (!listItems.length) { return; }\n\n builder.openList({\n interRowLineBreaks: 1,\n leadingLineBreaks: isNestedList ? 1 : (formatOptions.leadingLineBreaks || 2),\n maxPrefixLength: maxPrefixLength,\n prefixAlign: 'left'\n });\n\n for (const { node, prefix } of listItems) {\n builder.openListItem({ prefix: prefix });\n walk([node], builder);\n builder.closeListItem();\n }\n\n builder.closeList({ trailingLineBreaks: isNestedList ? 1 : (formatOptions.trailingLineBreaks || 2) });\n}\n\n/**\n * Process an unordered list.\n *\n * @type { FormatCallback }\n */\nfunction formatUnorderedList (elem, walk, builder, formatOptions) {\n const prefix = formatOptions.itemPrefix || ' * ';\n return formatList(elem, walk, builder, formatOptions, () => prefix);\n}\n\n/**\n * Process an ordered list.\n *\n * @type { FormatCallback }\n */\nfunction formatOrderedList (elem, walk, builder, formatOptions) {\n let nextIndex = Number(elem.attribs.start || '1');\n const indexFunction = getOrderedListIndexFunction(elem.attribs.type);\n const nextPrefixCallback = () => ' ' + indexFunction(nextIndex++) + '. ';\n return formatList(elem, walk, builder, formatOptions, nextPrefixCallback);\n}\n\n/**\n * Return a function that can be used to generate index markers of a specified format.\n *\n * @param { string } [olType='1'] Marker type.\n * @returns { (i: number) => string }\n */\nfunction getOrderedListIndexFunction (olType = '1') {\n switch (olType) {\n case 'a': return (i) => numberToLetterSequence(i, 'a');\n case 'A': return (i) => numberToLetterSequence(i, 'A');\n case 'i': return (i) => numberToRoman(i).toLowerCase();\n case 'I': return (i) => numberToRoman(i);\n case '1':\n default: return (i) => (i).toString();\n }\n}\n\n/**\n * Given a list of class and ID selectors (prefixed with '.' and '#'),\n * return them as separate lists of names without prefixes.\n *\n * @param { string[] } selectors Class and ID selectors (`[\".class\", \"#id\"]` etc).\n * @returns { { classes: string[], ids: string[] } }\n */\nfunction splitClassesAndIds (selectors) {\n const classes = [];\n const ids = [];\n for (const selector of selectors) {\n if (selector.startsWith('.')) {\n classes.push(selector.substring(1));\n } else if (selector.startsWith('#')) {\n ids.push(selector.substring(1));\n }\n }\n return { classes: classes, ids: ids };\n}\n\nfunction isDataTable (attr, tables) {\n if (tables === true) { return true; }\n if (!attr) { return false; }\n\n const { classes, ids } = splitClassesAndIds(tables);\n const attrClasses = (attr['class'] || '').split(' ');\n const attrIds = (attr['id'] || '').split(' ');\n\n return attrClasses.some(x => classes.includes(x)) || attrIds.some(x => ids.includes(x));\n}\n\n/**\n * Process a table (either as a container or as a data table, depending on options).\n *\n * @type { FormatCallback }\n */\nfunction formatTable (elem, walk, builder, formatOptions) {\n return isDataTable(elem.attribs, builder.options.tables)\n ? formatDataTable(elem, walk, builder, formatOptions)\n : formatBlock(elem, walk, builder, formatOptions);\n}\n\nfunction formatBlock (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks });\n walk(elem.children, builder);\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks });\n}\n\n/**\n * Process a data table.\n *\n * @type { FormatCallback }\n */\nfunction formatDataTable (elem, walk, builder, formatOptions) {\n builder.openTable();\n elem.children.forEach(walkTable);\n builder.closeTable({\n tableToString: (rows) => tableToString(rows, formatOptions.rowSpacing ?? 0, formatOptions.colSpacing ?? 3),\n leadingLineBreaks: formatOptions.leadingLineBreaks,\n trailingLineBreaks: formatOptions.trailingLineBreaks\n });\n\n function formatCell (cellNode) {\n const colspan = +get(cellNode, ['attribs', 'colspan']) || 1;\n const rowspan = +get(cellNode, ['attribs', 'rowspan']) || 1;\n builder.openTableCell({ maxColumnWidth: formatOptions.maxColumnWidth });\n walk(cellNode.children, builder);\n builder.closeTableCell({ colspan: colspan, rowspan: rowspan });\n }\n\n function walkTable (elem) {\n if (elem.type !== 'tag') { return; }\n\n const formatHeaderCell = (formatOptions.uppercaseHeaderCells !== false)\n ? (cellNode) => {\n builder.pushWordTransform(str => str.toUpperCase());\n formatCell(cellNode);\n builder.popWordTransform();\n }\n : formatCell;\n\n switch (elem.name) {\n case 'thead':\n case 'tbody':\n case 'tfoot':\n case 'center':\n elem.children.forEach(walkTable);\n return;\n\n case 'tr': {\n builder.openTableRow();\n for (const childOfTr of elem.children) {\n if (childOfTr.type !== 'tag') { continue; }\n switch (childOfTr.name) {\n case 'th': {\n formatHeaderCell(childOfTr);\n break;\n }\n case 'td': {\n formatCell(childOfTr);\n break;\n }\n // do nothing\n }\n }\n builder.closeTableRow();\n break;\n }\n // do nothing\n }\n }\n}\n\nvar textFormatters = /*#__PURE__*/Object.freeze({\n __proto__: null,\n anchor: formatAnchor,\n blockquote: formatBlockquote,\n dataTable: formatDataTable,\n heading: formatHeading,\n horizontalLine: formatHorizontalLine,\n image: formatImage,\n lineBreak: formatLineBreak,\n orderedList: formatOrderedList,\n paragraph: formatParagraph,\n pre: formatPre,\n table: formatTable,\n unorderedList: formatUnorderedList,\n wbr: formatWbr\n});\n\n/**\n * Default options.\n *\n * @constant\n * @type { Options }\n * @default\n * @private\n */\nconst DEFAULT_OPTIONS = {\n baseElements: {\n selectors: [ 'body' ],\n orderBy: 'selectors', // 'selectors' | 'occurrence'\n returnDomByDefault: true\n },\n decodeEntities: true,\n encodeCharacters: {},\n formatters: {},\n limits: {\n ellipsis: '...',\n maxBaseElements: undefined,\n maxChildNodes: undefined,\n maxDepth: undefined,\n maxInputLength: (1 << 24) // 16_777_216\n },\n longWordSplit: {\n forceWrapOnLimit: false,\n wrapCharacters: []\n },\n preserveNewlines: false,\n selectors: [\n { selector: '*', format: 'inline' },\n {\n selector: 'a',\n format: 'anchor',\n options: {\n baseUrl: null,\n hideLinkHrefIfSameAsText: false,\n ignoreHref: false,\n linkBrackets: ['[', ']'],\n noAnchorUrl: true\n }\n },\n { selector: 'article', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n { selector: 'aside', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n {\n selector: 'blockquote',\n format: 'blockquote',\n options: { leadingLineBreaks: 2, trailingLineBreaks: 2, trimEmptyLines: true }\n },\n { selector: 'br', format: 'lineBreak' },\n { selector: 'div', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n { selector: 'footer', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n { selector: 'form', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n { selector: 'h1', format: 'heading', options: { leadingLineBreaks: 3, trailingLineBreaks: 2, uppercase: true } },\n { selector: 'h2', format: 'heading', options: { leadingLineBreaks: 3, trailingLineBreaks: 2, uppercase: true } },\n { selector: 'h3', format: 'heading', options: { leadingLineBreaks: 3, trailingLineBreaks: 2, uppercase: true } },\n { selector: 'h4', format: 'heading', options: { leadingLineBreaks: 2, trailingLineBreaks: 2, uppercase: true } },\n { selector: 'h5', format: 'heading', options: { leadingLineBreaks: 2, trailingLineBreaks: 2, uppercase: true } },\n { selector: 'h6', format: 'heading', options: { leadingLineBreaks: 2, trailingLineBreaks: 2, uppercase: true } },\n { selector: 'header', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n {\n selector: 'hr',\n format: 'horizontalLine',\n options: { leadingLineBreaks: 2, length: undefined, trailingLineBreaks: 2 }\n },\n {\n selector: 'img',\n format: 'image',\n options: { baseUrl: null, linkBrackets: ['[', ']'] }\n },\n { selector: 'main', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n { selector: 'nav', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n {\n selector: 'ol',\n format: 'orderedList',\n options: { leadingLineBreaks: 2, trailingLineBreaks: 2 }\n },\n { selector: 'p', format: 'paragraph', options: { leadingLineBreaks: 2, trailingLineBreaks: 2 } },\n { selector: 'pre', format: 'pre', options: { leadingLineBreaks: 2, trailingLineBreaks: 2 } },\n { selector: 'section', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n {\n selector: 'table',\n format: 'table',\n options: {\n colSpacing: 3,\n leadingLineBreaks: 2,\n maxColumnWidth: 60,\n rowSpacing: 0,\n trailingLineBreaks: 2,\n uppercaseHeaderCells: true\n }\n },\n {\n selector: 'ul',\n format: 'unorderedList',\n options: { itemPrefix: ' * ', leadingLineBreaks: 2, trailingLineBreaks: 2 }\n },\n { selector: 'wbr', format: 'wbr' },\n ],\n tables: [], // deprecated\n whitespaceCharacters: ' \\t\\r\\n\\f\\u200b',\n wordwrap: 80\n};\n\nconst concatMerge = (acc, src, options) => [...acc, ...src];\nconst overwriteMerge = (acc, src, options) => [...src];\nconst selectorsMerge = (acc, src, options) => (\n (acc.some(s => typeof s === 'object'))\n ? concatMerge(acc, src) // selectors\n : overwriteMerge(acc, src) // baseElements.selectors\n);\n\n/**\n * Preprocess options, compile selectors into a decision tree,\n * return a function intended for batch processing.\n *\n * @param { Options } [options = {}] HtmlToText options.\n * @returns { (html: string, metadata?: any) => string } Pre-configured converter function.\n * @static\n */\nfunction compile (options = {}) {\n options = merge(\n DEFAULT_OPTIONS,\n options,\n {\n arrayMerge: overwriteMerge,\n customMerge: (key) => ((key === 'selectors') ? selectorsMerge : undefined)\n }\n );\n options.formatters = Object.assign({}, genericFormatters, textFormatters, options.formatters);\n options.selectors = mergeDuplicatesPreferLast(options.selectors, (s => s.selector));\n\n handleDeprecatedOptions(options);\n\n return compile$1(options);\n}\n\n/**\n * Convert given HTML content to plain text string.\n *\n * @param { string } html HTML content to convert.\n * @param { Options } [options = {}] HtmlToText options.\n * @param { any } [metadata] Optional metadata for HTML document, for use in formatters.\n * @returns { string } Plain text string.\n * @static\n *\n * @example\n * const { convert } = require('html-to-text');\n * const text = convert('

Hello World

', {\n * wordwrap: 130\n * });\n * console.log(text); // HELLO WORLD\n */\nfunction convert (html, options = {}, metadata = undefined) {\n return compile(options)(html, metadata);\n}\n\n/**\n * Map previously existing and now deprecated options to the new options layout.\n * This is a subject for cleanup in major releases.\n *\n * @param { Options } options HtmlToText options.\n */\nfunction handleDeprecatedOptions (options) {\n if (options.tags) {\n const tagDefinitions = Object.entries(options.tags).map(\n ([selector, definition]) => ({ ...definition, selector: selector || '*' })\n );\n options.selectors.push(...tagDefinitions);\n options.selectors = mergeDuplicatesPreferLast(options.selectors, (s => s.selector));\n }\n\n function set (obj, path, value) {\n const valueKey = path.pop();\n for (const key of path) {\n let nested = obj[key];\n if (!nested) {\n nested = {};\n obj[key] = nested;\n }\n obj = nested;\n }\n obj[valueKey] = value;\n }\n\n if (options['baseElement']) {\n const baseElement = options['baseElement'];\n set(\n options,\n ['baseElements', 'selectors'],\n (Array.isArray(baseElement) ? baseElement : [baseElement])\n );\n }\n if (options['returnDomByDefault'] !== undefined) {\n set(options, ['baseElements', 'returnDomByDefault'], options['returnDomByDefault']);\n }\n\n for (const definition of options.selectors) {\n if (definition.format === 'anchor' && get(definition, ['options', 'noLinkBrackets'])) {\n set(definition, ['options', 'linkBrackets'], false);\n }\n }\n}\n\nexport { compile, convert, convert as htmlToText };\n"],"names":["isMergeableObject","value","isNonNullObject","stringValue","Object","prototype","toString","call","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","Symbol","for","cloneUnlessOtherwiseSpecified","options","clone","deepmerge","val","Array","isArray","defaultArrayMerge","target","source","concat","map","element","getKeys","keys","getOwnPropertySymbols","filter","symbol","propertyIsEnumerable","getEnumerableOwnPropertySymbols","propertyIsOnObject","object","property","_","mergeObject","destination","forEach","key","hasOwnProperty","propertyIsUnsafe","customMerge","getMergeFunction","arrayMerge","sourceIsArray","all","array","Error","reduce","prev","next","deepmerge_1","module","exports","ElementType","Root","Text","Directive","Comment","Script","Style","Tag","CDATA","Doctype","Node","constructor","this","parent","startIndex","endIndex","parentNode","previousSibling","nextSibling","cloneNode","recursive","DataNode","data","super","nodeValue","arguments","type","nodeType","ProcessingInstruction","name","NodeWithChildren","children","firstChild","_a","lastChild","length","childNodes","Document","Element","attribs","tagName","attributes","_b","namespace","prefix","node","elem","result","cloneChildren","child","isDocument","isDirective","instruction","sourceCodeLocation","childs","i","defaultOpts","withStartIndices","withEndIndices","xmlMode","callback","elementCB","dom","root","done","tagStack","lastNode","parser","undefined","onparserinit","onreset","onend","handleCallback","onerror","error","onclosetag","pop","onopentag","addNode","push","ontext","oncomment","oncommentend","oncdatastart","text","oncdataend","onprocessinginstruction","e","n","o","matchAll","index","unshift","s","t","r","offset","Math","ceil","l","low","high","line","column","regex","global","flags","sticky","RegExp","str","c","replace","token","onToken","onEnd","position","tokens","matched","mapInner","f","mapOuter","p","mapper","v","j","def","choice","ps","otherwise","pa","pb","r1","takeWhile","test","values","success","many","ab","join","ma","vb","right","va","abc","pc","mb","vc","middle","ra","rb","reduceLeft","acc","reducer","loop","acc1","pos","chainReduce","leftAssoc2","pLeft","pOper","pRight","chain","v0","y","m1","lex","lineNumbers","lastIndex","exec","discard","state","len","complete","sumSpec","a0","a1","a2","b0","b1","b2","sumAllSpec","ss","literal","whitespace_","optionalWhitespace_","optionallySpaced","identifier_","hashId_","slice","string_","startsWith","namespace_","qualifiedName_","ns","uniSelector_","specificity","tagSelector_","classSelector_","fullstop","idSelector_","attrModifier_","attrValue_","mod","modifier","attrMatcher_","attrSelector_","lbr","matcher","typeSelector_","subclassSelector_","compoundSelector_","vs","flatMap","head","tail","list","combinatorSeparator_","complexSelector_","left","combinator","parse_","lexerResult","prettyPrintPosition","m","padEnd","repeat","parse1","serialize","selector","_serNs","indexOf","normalize","sort","a","b","_compareArrays","_getSelectorPriority","compareSpecificity","shorter","DecisionTree","input","branches","weave","results","selectorString","ast","preprocess","terminal","valueContainer","toAstTerminalPairs","build","builder","reduceSelectorVariants","newList","sel","items","topKind","findTopKey","getSelectorKind","matches","nonmatches","empty","breakByKind","branchOfKind","terminate","item","rest","partition","cont","selectedKind","simpsels","some","kind","groups","spliceAndGroup","x","variants","entries","group","tagNameBranch","matchers","oneSimpleSelector","predicate","getAttrPredicate","continuation","attrValueBranch","substring","spliceSimpleSelector","attrPresenceBranch","combinatorBranch","expected","toLowerCase","actual","split","includes","endsWith","lower","leftItems","rightCont","leftAst","keyCallback","bestKey","bestKeyPredicate","hasBestKeyPredicate","partition1","splicedNode","firstIndex","candidates","candidates1","topCounter","entry","src","Picker","pickAll","el","pick1","preferFirst","comparator","comparatorPreferFirst","comparatorPreferLast","diff","hp2Builder","nodes","handleArray","handleNode","variant","handleTagName","callbacks","attr","attrName","cb","handleAttrValueName","handleAttrPresenceName","leftElementGetter","getPrecedingElement","getParentElement","handlePushElementNode","handlePopElementNode","Uint16Array","charCodeAt","decodeMap","Map","fromCodePoint","String","codePoint","output","fromCharCode","replaceCodePoint","get","CharCodes","BinTrieFlags","getDecoder","decodeTree","strict","ret","lastIdx","strIdx","NUM","start","base","cp","To_LOWER_BIT","LOWER_X","ZERO","NINE","LOWER_A","LOWER_F","entity","parsed","parseInt","SEMI","resultIdx","excess","treeIdx","current","determineBranch","masked","VALUE_LENGTH","valueLength","nodeIdx","char","branchCount","BRANCH_LENGTH","jumpOffset","JUMP_TABLE","lo","hi","mid","midVal","State","QuoteType","isWhitespace","Space","NewLine","Tab","FormFeed","CarriageReturn","isEndOfTagSection","Slash","Gt","isNumber","Zero","Nine","Sequences","Cdata","Uint8Array","CdataEnd","CommentEnd","ScriptEnd","StyleEnd","TitleEnd","Tokenizer","decodeEntities","cbs","buffer","sectionStart","baseState","running","sequenceIndex","trieIndex","trieCurrent","entityResult","entityExcess","entityTrie","reset","currentSequence","write","chunk","parse","end","finish","pause","resume","getIndex","getSectionStart","stateText","Lt","fastForwardTo","BeforeTagName","Amp","BeforeEntity","stateSpecialStartSequence","isEnd","InTagName","stateInTagName","stateInSpecialTag","endOfText","actualIndex","stateInClosingTagName","Number","stateCDATASequence","InCommentLike","InDeclaration","stateInDeclaration","stateInCommentLike","oncdata","isTagStartChar","LowerA","LowerZ","UpperA","UpperZ","isASCIIAlpha","startSpecial","sequence","SpecialStartSequence","stateBeforeTagName","ExclamationMark","BeforeDeclaration","Questionmark","InProcessingInstruction","BeforeSpecialS","BeforeClosingTagName","onopentagname","BeforeAttributeName","stateBeforeAttributeName","stateBeforeClosingTagName","InClosingTagName","InSpecialComment","AfterClosingTagName","stateAfterClosingTagName","onopentagend","InSpecialTag","InSelfClosingTag","InAttributeName","stateInSelfClosingTag","onselfclosingtag","stateInAttributeName","Eq","onattribname","AfterAttributeName","stateAfterAttributeName","BeforeAttributeValue","onattribend","NoValue","stateBeforeAttributeValue","DoubleQuote","InAttributeValueDq","SingleQuote","InAttributeValueSq","InAttributeValueNq","stateInAttributeValueNoQuotes","handleInAttributeValue","quote","onattribdata","Double","Single","stateInAttributeValueDoubleQuotes","stateInAttributeValueSingleQuotes","Unquoted","stateBeforeDeclaration","OpeningSquareBracket","CDATASequence","Dash","BeforeComment","ondeclaration","stateInProcessingInstruction","stateBeforeComment","stateInSpecialComment","stateBeforeSpecialS","stateBeforeEntity","Num","BeforeNumericEntity","InNamedEntity","stateInNamedEntity","emitNamedEntity","allowLegacyEntity","Semi","entityStart","emitPartial","emitCodePoint","stateBeforeNumericEntity","LowerX","InHexEntity","InNumericEntity","stateInNumericEntity","emitNumericEntity","stateInHexEntity","UpperF","LowerF","isHexDigit","cleanup","shouldContinue","handleTrailingData","onattribentity","ontextentity","formTags","Set","pTag","tableSectionTags","ddtTags","rtpTags","openImpliesClose","voidElements","foreignContextElements","htmlIntegrationElements","reNameEnd","_c","_d","_e","openTagStart","tagname","attribname","attribvalue","stack","foreignContext","buffers","bufferOffset","writeIndex","ended","lowerCaseTagNames","lowerCaseTags","lowerCaseAttributeNames","tokenizer","getSlice","idx","isVoidElement","has","emitOpenTag","impliesClose","endOpenTag","isImplied","_f","lastIndexOf","count","closeCurrentTag","recognizeSelfClosing","isOpenImplied","onattribute","getInstructionName","search","substr","_g","_h","_j","_k","recognizeCDATA","parseComplete","shiftBuffer","shift","parseChunk","restoreDiff","arr","xmlCodeMap","codePointAt","match","getEscaper","EntityLevel","DecodingMode","EncodingMode","elementNames","attributeNames","unencodedElements","replaceQuotes","singleTag","render","renderNode","renderComment","renderCdata","opts","foreignModeIntegrationPoints","foreignElements","tag","encode","encodeEntities","emptyAttrs","formatAttributes","selfClosingTags","renderTag","renderText","DocumentPosition","parseDocument","handler","limitedDepthRecursive","g","f1","args","trimCharacter","mergeDuplicatesPreferLast","getKey","set","overwriteMerge$1","reverse","obj","path","numberToLetterSequence","num","baseChar","digits","baseCode","I","V","numberToRoman","InlineTextBuilder","maxLineLength","lines","nextLineWords","wordwrap","MAX_VALUE","nextLineAvailableChars","wrapCharacters","forceWrapOnLimit","stashedSpace","wordBreakOpportunity","pushWord","word","noWrap","startNewLine","isLineStart","cost","first","splitLongWord","part","popWord","lastWord","concatWord","from","isEmpty","clear","words","parts","firstLine","remainingChars","splitIndex","StackItem","getRoot","BlockStackItem","leadingLineBreaks","inlineTextBuilder","rawText","stashedLineBreaks","isPre","isNoWrap","ListStackItem","interRowLineBreaks","maxPrefixLength","prefixAlign","ListItemStackItem","TableStackItem","rows","TableRowStackItem","cells","TableCellStackItem","maxColumnWidth","TransformerStackItem","transform","WhitespaceProcessor","whitespaceChars","whitespaceCharacters","whitespaceCodes","padStart","leadingWhitespaceRe","trailingWhitespaceRe","allWhitespaceOrEmptyRe","newlineOrNonWhitespaceRe","newlineOrNonNewlineStringRe","preserveNewlines","wordOrNewlineRe","shrinkWrapAdd","previouslyStashedSpace","anyMatch","testLeadingWhitespace","testTrailingWhitespace","wordRe","addLiteral","testContainsWords","countNewlinesNoWords","counter","BlockTextBuilder","picker","metadata","whitespaceProcessor","_stackItem","_wordTransformer","pushWordTransform","wordTransform","popWordTransform","startNoWrap","stopNoWrap","_getCombinedWordTransformer","wt","applyTransformer","ce","encodeCharacters","_popStackItem","addLineBreak","addWordBreakOpportunity","addInline","noWordTransform","newlinesNumber","openBlock","reservedLineLength","max","closeBlock","trailingLineBreaks","blockTransform","block","blockText","addText","openList","openListItem","prefixLength","closeListItem","listItem","spacing","closeList","openTable","openTableRow","openTableCell","closeTableCell","colspan","rowspan","cell","closeTableRow","row","closeTable","tableToString","stackItem","parentText","lineBreaks","transformer","compile$1","selectorsWithoutFormat","selectors","format","dict","replacer","cgs","findIndex","cg","makeReplacerFromDict","baseSelectorsPicker","baseElements","findBaseElements","recursiveWalk","walk","limits","maxChildNodes","pickedSelectorIndex","selectorIndex","maxBaseElements","limitedWalk","maxDepth","orderBy","returnDomByDefault","findBases","ellipsis","html","maxInputLength","console","warn","document","bases","process","tagDefinition","formatters","renderOpenTag","attrs","k","renderCloseTag","genericFormatters","freeze","__proto__","formatOptions","blockHtml","blockString","string","blockTag","inline","inlineHtml","inlineString","inlineSurround","suffix","inlineTag","skip","getRow","matrix","findFirstVacantIndex","putCellIntoLayout","layout","baseRow","baseCol","layoutRow","updateOffset","offsets","span","tableRows","rowSpacing","colSpacing","colNumber","rowNumber","rowOffsets","cellHeight","maxSize","rowI","rowJ","temp","transposeInPlace","outputLines","colOffsets","rendered","cellWidth","lineOffset","withBrackets","brackets","pathRewrite","rewriter","baseUrl","modifiedPath","trimCharacterEnd","formatList","nextPrefixCallback","isNestedList","listItems","trimStart","formatDataTable","formatCell","cellNode","walkTable","formatHeaderCell","uppercaseHeaderCells","toUpperCase","childOfTr","textFormatters","anchor","href","ignoreHref","noAnchorUrl","getHref","hideLinkHrefIfSameAsText","linkBrackets","blockquote","trimEmptyLines","dataTable","heading","uppercase","horizontalLine","image","alt","lineBreak","orderedList","nextIndex","indexFunction","olType","getOrderedListIndexFunction","paragraph","pre","table","tables","classes","ids","splitClassesAndIds","attrClasses","attrIds","isDataTable","formatBlock","unorderedList","itemPrefix","wbr","DEFAULT_OPTIONS","longWordSplit","overwriteMerge","selectorsMerge","concatMerge","compile","assign","tags","tagDefinitions","definition","valueKey","nested","baseElement","handleDeprecatedOptions","convert"],"sourceRoot":""}