@quartz-community/bases-page 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +27 -0
- package/LICENSE +21 -0
- package/README.md +315 -0
- package/dist/BasesBody-B4CEJjEp.d.ts +6 -0
- package/dist/chunk-2AUMER56.js +44 -0
- package/dist/chunk-2AUMER56.js.map +1 -0
- package/dist/chunk-4HXXKSJ4.js +929 -0
- package/dist/chunk-4HXXKSJ4.js.map +1 -0
- package/dist/chunk-TDUJOYTU.js +42 -0
- package/dist/chunk-TDUJOYTU.js.map +1 -0
- package/dist/chunk-X2AZ5GOJ.js +1931 -0
- package/dist/chunk-X2AZ5GOJ.js.map +1 -0
- package/dist/compiler/index.d.ts +146 -0
- package/dist/compiler/index.js +7 -0
- package/dist/compiler/index.js.map +1 -0
- package/dist/components/index.d.ts +13 -0
- package/dist/components/index.js +9 -0
- package/dist/components/index.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.js +18703 -0
- package/dist/index.js.map +1 -0
- package/dist/registry.d.ts +48 -0
- package/dist/registry.js +7 -0
- package/dist/registry.js.map +1 -0
- package/dist/types.d.ts +181 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/package.json +143 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../node_modules/yaml/dist/nodes/identity.js","../node_modules/yaml/dist/visit.js","../node_modules/yaml/dist/doc/directives.js","../node_modules/yaml/dist/doc/anchors.js","../node_modules/yaml/dist/doc/applyReviver.js","../node_modules/yaml/dist/nodes/toJS.js","../node_modules/yaml/dist/nodes/Node.js","../node_modules/yaml/dist/nodes/Alias.js","../node_modules/yaml/dist/nodes/Scalar.js","../node_modules/yaml/dist/doc/createNode.js","../node_modules/yaml/dist/nodes/Collection.js","../node_modules/yaml/dist/stringify/stringifyComment.js","../node_modules/yaml/dist/stringify/foldFlowLines.js","../node_modules/yaml/dist/stringify/stringifyString.js","../node_modules/yaml/dist/stringify/stringify.js","../node_modules/yaml/dist/stringify/stringifyPair.js","../node_modules/yaml/dist/log.js","../node_modules/yaml/dist/schema/yaml-1.1/merge.js","../node_modules/yaml/dist/nodes/addPairToJSMap.js","../node_modules/yaml/dist/nodes/Pair.js","../node_modules/yaml/dist/stringify/stringifyCollection.js","../node_modules/yaml/dist/nodes/YAMLMap.js","../node_modules/yaml/dist/schema/common/map.js","../node_modules/yaml/dist/nodes/YAMLSeq.js","../node_modules/yaml/dist/schema/common/seq.js","../node_modules/yaml/dist/schema/common/string.js","../node_modules/yaml/dist/schema/common/null.js","../node_modules/yaml/dist/schema/core/bool.js","../node_modules/yaml/dist/stringify/stringifyNumber.js","../node_modules/yaml/dist/schema/core/float.js","../node_modules/yaml/dist/schema/core/int.js","../node_modules/yaml/dist/schema/core/schema.js","../node_modules/yaml/dist/schema/json/schema.js","../node_modules/yaml/dist/schema/yaml-1.1/binary.js","../node_modules/yaml/dist/schema/yaml-1.1/pairs.js","../node_modules/yaml/dist/schema/yaml-1.1/omap.js","../node_modules/yaml/dist/schema/yaml-1.1/bool.js","../node_modules/yaml/dist/schema/yaml-1.1/float.js","../node_modules/yaml/dist/schema/yaml-1.1/int.js","../node_modules/yaml/dist/schema/yaml-1.1/set.js","../node_modules/yaml/dist/schema/yaml-1.1/timestamp.js","../node_modules/yaml/dist/schema/yaml-1.1/schema.js","../node_modules/yaml/dist/schema/tags.js","../node_modules/yaml/dist/schema/Schema.js","../node_modules/yaml/dist/stringify/stringifyDocument.js","../node_modules/yaml/dist/doc/Document.js","../node_modules/yaml/dist/errors.js","../node_modules/yaml/dist/compose/resolve-props.js","../node_modules/yaml/dist/compose/util-contains-newline.js","../node_modules/yaml/dist/compose/util-flow-indent-check.js","../node_modules/yaml/dist/compose/util-map-includes.js","../node_modules/yaml/dist/compose/resolve-block-map.js","../node_modules/yaml/dist/compose/resolve-block-seq.js","../node_modules/yaml/dist/compose/resolve-end.js","../node_modules/yaml/dist/compose/resolve-flow-collection.js","../node_modules/yaml/dist/compose/compose-collection.js","../node_modules/yaml/dist/compose/resolve-block-scalar.js","../node_modules/yaml/dist/compose/resolve-flow-scalar.js","../node_modules/yaml/dist/compose/compose-scalar.js","../node_modules/yaml/dist/compose/util-empty-scalar-position.js","../node_modules/yaml/dist/compose/compose-node.js","../node_modules/yaml/dist/compose/compose-doc.js","../node_modules/yaml/dist/compose/composer.js","../node_modules/yaml/dist/parse/cst-scalar.js","../node_modules/yaml/dist/parse/cst-stringify.js","../node_modules/yaml/dist/parse/cst-visit.js","../node_modules/yaml/dist/parse/cst.js","../node_modules/yaml/dist/parse/lexer.js","../node_modules/yaml/dist/parse/line-counter.js","../node_modules/yaml/dist/parse/parser.js","../node_modules/yaml/dist/public-api.js","../node_modules/yaml/dist/index.js","../node_modules/unist-util-is/lib/index.js","../node_modules/unist-util-visit-parents/lib/color.node.js","../node_modules/unist-util-visit-parents/lib/index.js","../node_modules/unist-util-visit/lib/index.js","../node_modules/preact-render-to-string/src/lib/constants.js","../node_modules/preact-render-to-string/src/lib/util.js","../node_modules/preact-render-to-string/src/index.js","../node_modules/devlop/lib/default.js","../node_modules/property-information/lib/util/schema.js","../node_modules/property-information/lib/util/merge.js","../node_modules/property-information/lib/normalize.js","../node_modules/property-information/lib/util/info.js","../node_modules/property-information/lib/util/types.js","../node_modules/property-information/lib/util/defined-info.js","../node_modules/property-information/lib/util/create.js","../node_modules/property-information/lib/aria.js","../node_modules/property-information/lib/util/case-sensitive-transform.js","../node_modules/property-information/lib/util/case-insensitive-transform.js","../node_modules/property-information/lib/html.js","../node_modules/property-information/lib/svg.js","../node_modules/property-information/lib/xlink.js","../node_modules/property-information/lib/xmlns.js","../node_modules/property-information/lib/xml.js","../node_modules/property-information/lib/find.js","../node_modules/property-information/index.js","../node_modules/comma-separated-tokens/index.js","../node_modules/hast-util-parse-selector/lib/index.js","../node_modules/space-separated-tokens/index.js","../node_modules/hastscript/lib/create-h.js","../node_modules/hastscript/lib/svg-case-sensitive-tag-names.js","../node_modules/hastscript/lib/index.js","../node_modules/vfile-location/lib/index.js","../node_modules/web-namespaces/index.js","../node_modules/hast-util-from-parse5/lib/index.js","../node_modules/parse5/dist/common/unicode.js","../node_modules/parse5/dist/common/error-codes.js","../node_modules/parse5/dist/tokenizer/preprocessor.js","../node_modules/parse5/dist/common/token.js","../node_modules/entities/src/generated/decode-data-html.ts","../node_modules/entities/src/decode-codepoint.ts","../node_modules/entities/src/decode.ts","../node_modules/parse5/dist/common/html.js","../node_modules/parse5/dist/tokenizer/index.js","../node_modules/parse5/dist/parser/open-element-stack.js","../node_modules/parse5/dist/parser/formatting-element-list.js","../node_modules/parse5/dist/tree-adapters/default.js","../node_modules/parse5/dist/common/doctype.js","../node_modules/parse5/dist/common/foreign-content.js","../node_modules/parse5/dist/parser/index.js","../node_modules/parse5/dist/serializer/index.js","../node_modules/parse5/dist/index.js","../node_modules/unist-util-stringify-position/lib/index.js","../node_modules/vfile-message/lib/index.js","../node_modules/vfile/lib/minurl.shared.js","../node_modules/vfile/lib/index.js","../node_modules/hast-util-from-html/lib/errors.js","../node_modules/hast-util-from-html/lib/index.js","../src/parser.ts","../src/pageType.ts","../src/transformer.ts"],"names":["exports","SKIP","visit","i","k","v","res","anchors","c","node","a","next","end","o","merge","value","_","stringify","comment","str","map","seq","d","require_schema","s","pairs","omap","require_bool","require_float","f","require_int","n","set","p","tags","b","Schema","search","m","ok","tag","errors","index","ch","Parser","start","lineCounter","parse","checks","all","is","DIFFED","COMMIT","SKIP_EFFECTS","COMPONENT","CHILDREN","DIRTY","NEXT_STATE","UNSAFE_NAME","NAMESPACE_REPLACE_REGEX","HTML_LOWER_CASE","SVG_CAMEL_CASE","HTML_ENUMERATED","Set","setDirty","component","unsetDirty","__g","isDirty","ENCODED_ENTITIES","encodeEntities","length","test","last","out","charCodeAt","slice","JS_TO_CSS","IS_NON_DIMENSIONAL","CSS_REGEX","styleObjToCss","prop","val","name","replace","toLowerCase","suffix","startsWith","has","markAsDirty","this","__d","createComponent","vnode","context","__v","props","setState","forceUpdate","__h","Array","renderToStringAsync","beforeDiff","afterDiff","renderHook","ummountHook","EMPTY_OBJ","EMPTY_ARR","isArray","assign","Object","EMPTY_STR","BEGIN_SUSPENSE_DENOMINATOR","END_SUSPENSE_DENOMINATOR","wrapWithSuspenseMarkers","result","unshift","push","then","renderToString","_rendererState","previousSkipEffects","options","unmount","parent","h","Fragment","rendered","_renderToString","join","e","Error","renderClassComponent","type","isMounting","state","getDerivedStateFromProps","componentWillMount","componentWillUpdate","render","isSvgMode","selectValue","asyncMode","renderer","vnodeType","renderArray","vnodeLength","child","_renderArray","childRender","constructor","contextType","cctx","tpl","exprs","UNSTABLE_comment","children","provider","__c","__","isClassComponent","prototype","count","call","error","getChildContext","errorBoundaries","getDerivedStateFromError","componentDidCatch","key","err","_suspended","onError","errorHook","html","isSignal","__html","SELF_CLOSING","endTag","startTag","x","peek","svg","point","position","location","CODE_POINTS","ERR","TokenType","_a","CharCodes","BinTrieFlags","EntityDecoderState","DecodingMode","base","NS","ATTRS","DOCUMENT_MODE","TAG_NAMES","TAG_ID","$","State","isAsciiAlphaNumeric","element","EntryType","entry","InsertionMode","default","field","camelcase","$2","readFileSync","empty"],"mappings":"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","file":"index.js","sourcesContent":["'use strict';\n\nconst ALIAS = Symbol.for('yaml.alias');\nconst DOC = Symbol.for('yaml.document');\nconst MAP = Symbol.for('yaml.map');\nconst PAIR = Symbol.for('yaml.pair');\nconst SCALAR = Symbol.for('yaml.scalar');\nconst SEQ = Symbol.for('yaml.seq');\nconst NODE_TYPE = Symbol.for('yaml.node.type');\nconst isAlias = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === ALIAS;\nconst isDocument = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === DOC;\nconst isMap = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === MAP;\nconst isPair = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === PAIR;\nconst isScalar = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SCALAR;\nconst isSeq = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SEQ;\nfunction isCollection(node) {\n if (node && typeof node === 'object')\n switch (node[NODE_TYPE]) {\n case MAP:\n case SEQ:\n return true;\n }\n return false;\n}\nfunction isNode(node) {\n if (node && typeof node === 'object')\n switch (node[NODE_TYPE]) {\n case ALIAS:\n case MAP:\n case SCALAR:\n case SEQ:\n return true;\n }\n return false;\n}\nconst hasAnchor = (node) => (isScalar(node) || isCollection(node)) && !!node.anchor;\n\nexports.ALIAS = ALIAS;\nexports.DOC = DOC;\nexports.MAP = MAP;\nexports.NODE_TYPE = NODE_TYPE;\nexports.PAIR = PAIR;\nexports.SCALAR = SCALAR;\nexports.SEQ = SEQ;\nexports.hasAnchor = hasAnchor;\nexports.isAlias = isAlias;\nexports.isCollection = isCollection;\nexports.isDocument = isDocument;\nexports.isMap = isMap;\nexports.isNode = isNode;\nexports.isPair = isPair;\nexports.isScalar = isScalar;\nexports.isSeq = isSeq;\n","'use strict';\n\nvar identity = require('./nodes/identity.js');\n\nconst BREAK = Symbol('break visit');\nconst SKIP = Symbol('skip children');\nconst REMOVE = Symbol('remove node');\n/**\n * Apply a visitor to an AST node or document.\n *\n * Walks through the tree (depth-first) starting from `node`, calling a\n * `visitor` function with three arguments:\n * - `key`: For sequence values and map `Pair`, the node's index in the\n * collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.\n * `null` for the root node.\n * - `node`: The current node.\n * - `path`: The ancestry of the current node.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this node, continue with next\n * sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current node, then continue with the next one\n * - `Node`: Replace the current node, then continue by visiting it\n * - `number`: While iterating the items of a sequence or map, set the index\n * of the next step. This is useful especially if the index of the current\n * node has changed.\n *\n * If `visitor` is a single function, it will be called with all values\n * encountered in the tree, including e.g. `null` values. Alternatively,\n * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,\n * `Alias` and `Scalar` node. To define the same visitor function for more than\n * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)\n * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most\n * specific defined one will be used for each node.\n */\nfunction visit(node, visitor) {\n const visitor_ = initVisitor(visitor);\n if (identity.isDocument(node)) {\n const cd = visit_(null, node.contents, visitor_, Object.freeze([node]));\n if (cd === REMOVE)\n node.contents = null;\n }\n else\n visit_(null, node, visitor_, Object.freeze([]));\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisit.BREAK = BREAK;\n/** Do not visit the children of the current node */\nvisit.SKIP = SKIP;\n/** Remove the current node */\nvisit.REMOVE = REMOVE;\nfunction visit_(key, node, visitor, path) {\n const ctrl = callVisitor(key, node, visitor, path);\n if (identity.isNode(ctrl) || identity.isPair(ctrl)) {\n replaceNode(key, path, ctrl);\n return visit_(key, ctrl, visitor, path);\n }\n if (typeof ctrl !== 'symbol') {\n if (identity.isCollection(node)) {\n path = Object.freeze(path.concat(node));\n for (let i = 0; i < node.items.length; ++i) {\n const ci = visit_(i, node.items[i], visitor, path);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n node.items.splice(i, 1);\n i -= 1;\n }\n }\n }\n else if (identity.isPair(node)) {\n path = Object.freeze(path.concat(node));\n const ck = visit_('key', node.key, visitor, path);\n if (ck === BREAK)\n return BREAK;\n else if (ck === REMOVE)\n node.key = null;\n const cv = visit_('value', node.value, visitor, path);\n if (cv === BREAK)\n return BREAK;\n else if (cv === REMOVE)\n node.value = null;\n }\n }\n return ctrl;\n}\n/**\n * Apply an async visitor to an AST node or document.\n *\n * Walks through the tree (depth-first) starting from `node`, calling a\n * `visitor` function with three arguments:\n * - `key`: For sequence values and map `Pair`, the node's index in the\n * collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.\n * `null` for the root node.\n * - `node`: The current node.\n * - `path`: The ancestry of the current node.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `Promise`: Must resolve to one of the following values\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this node, continue with next\n * sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current node, then continue with the next one\n * - `Node`: Replace the current node, then continue by visiting it\n * - `number`: While iterating the items of a sequence or map, set the index\n * of the next step. This is useful especially if the index of the current\n * node has changed.\n *\n * If `visitor` is a single function, it will be called with all values\n * encountered in the tree, including e.g. `null` values. Alternatively,\n * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,\n * `Alias` and `Scalar` node. To define the same visitor function for more than\n * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)\n * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most\n * specific defined one will be used for each node.\n */\nasync function visitAsync(node, visitor) {\n const visitor_ = initVisitor(visitor);\n if (identity.isDocument(node)) {\n const cd = await visitAsync_(null, node.contents, visitor_, Object.freeze([node]));\n if (cd === REMOVE)\n node.contents = null;\n }\n else\n await visitAsync_(null, node, visitor_, Object.freeze([]));\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisitAsync.BREAK = BREAK;\n/** Do not visit the children of the current node */\nvisitAsync.SKIP = SKIP;\n/** Remove the current node */\nvisitAsync.REMOVE = REMOVE;\nasync function visitAsync_(key, node, visitor, path) {\n const ctrl = await callVisitor(key, node, visitor, path);\n if (identity.isNode(ctrl) || identity.isPair(ctrl)) {\n replaceNode(key, path, ctrl);\n return visitAsync_(key, ctrl, visitor, path);\n }\n if (typeof ctrl !== 'symbol') {\n if (identity.isCollection(node)) {\n path = Object.freeze(path.concat(node));\n for (let i = 0; i < node.items.length; ++i) {\n const ci = await visitAsync_(i, node.items[i], visitor, path);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n node.items.splice(i, 1);\n i -= 1;\n }\n }\n }\n else if (identity.isPair(node)) {\n path = Object.freeze(path.concat(node));\n const ck = await visitAsync_('key', node.key, visitor, path);\n if (ck === BREAK)\n return BREAK;\n else if (ck === REMOVE)\n node.key = null;\n const cv = await visitAsync_('value', node.value, visitor, path);\n if (cv === BREAK)\n return BREAK;\n else if (cv === REMOVE)\n node.value = null;\n }\n }\n return ctrl;\n}\nfunction initVisitor(visitor) {\n if (typeof visitor === 'object' &&\n (visitor.Collection || visitor.Node || visitor.Value)) {\n return Object.assign({\n Alias: visitor.Node,\n Map: visitor.Node,\n Scalar: visitor.Node,\n Seq: visitor.Node\n }, visitor.Value && {\n Map: visitor.Value,\n Scalar: visitor.Value,\n Seq: visitor.Value\n }, visitor.Collection && {\n Map: visitor.Collection,\n Seq: visitor.Collection\n }, visitor);\n }\n return visitor;\n}\nfunction callVisitor(key, node, visitor, path) {\n if (typeof visitor === 'function')\n return visitor(key, node, path);\n if (identity.isMap(node))\n return visitor.Map?.(key, node, path);\n if (identity.isSeq(node))\n return visitor.Seq?.(key, node, path);\n if (identity.isPair(node))\n return visitor.Pair?.(key, node, path);\n if (identity.isScalar(node))\n return visitor.Scalar?.(key, node, path);\n if (identity.isAlias(node))\n return visitor.Alias?.(key, node, path);\n return undefined;\n}\nfunction replaceNode(key, path, node) {\n const parent = path[path.length - 1];\n if (identity.isCollection(parent)) {\n parent.items[key] = node;\n }\n else if (identity.isPair(parent)) {\n if (key === 'key')\n parent.key = node;\n else\n parent.value = node;\n }\n else if (identity.isDocument(parent)) {\n parent.contents = node;\n }\n else {\n const pt = identity.isAlias(parent) ? 'alias' : 'scalar';\n throw new Error(`Cannot replace node with ${pt} parent`);\n }\n}\n\nexports.visit = visit;\nexports.visitAsync = visitAsync;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar visit = require('../visit.js');\n\nconst escapeChars = {\n '!': '%21',\n ',': '%2C',\n '[': '%5B',\n ']': '%5D',\n '{': '%7B',\n '}': '%7D'\n};\nconst escapeTagName = (tn) => tn.replace(/[!,[\\]{}]/g, ch => escapeChars[ch]);\nclass Directives {\n constructor(yaml, tags) {\n /**\n * The directives-end/doc-start marker `---`. If `null`, a marker may still be\n * included in the document's stringified representation.\n */\n this.docStart = null;\n /** The doc-end marker `...`. */\n this.docEnd = false;\n this.yaml = Object.assign({}, Directives.defaultYaml, yaml);\n this.tags = Object.assign({}, Directives.defaultTags, tags);\n }\n clone() {\n const copy = new Directives(this.yaml, this.tags);\n copy.docStart = this.docStart;\n return copy;\n }\n /**\n * During parsing, get a Directives instance for the current document and\n * update the stream state according to the current version's spec.\n */\n atDocument() {\n const res = new Directives(this.yaml, this.tags);\n switch (this.yaml.version) {\n case '1.1':\n this.atNextDocument = true;\n break;\n case '1.2':\n this.atNextDocument = false;\n this.yaml = {\n explicit: Directives.defaultYaml.explicit,\n version: '1.2'\n };\n this.tags = Object.assign({}, Directives.defaultTags);\n break;\n }\n return res;\n }\n /**\n * @param onError - May be called even if the action was successful\n * @returns `true` on success\n */\n add(line, onError) {\n if (this.atNextDocument) {\n this.yaml = { explicit: Directives.defaultYaml.explicit, version: '1.1' };\n this.tags = Object.assign({}, Directives.defaultTags);\n this.atNextDocument = false;\n }\n const parts = line.trim().split(/[ \\t]+/);\n const name = parts.shift();\n switch (name) {\n case '%TAG': {\n if (parts.length !== 2) {\n onError(0, '%TAG directive should contain exactly two parts');\n if (parts.length < 2)\n return false;\n }\n const [handle, prefix] = parts;\n this.tags[handle] = prefix;\n return true;\n }\n case '%YAML': {\n this.yaml.explicit = true;\n if (parts.length !== 1) {\n onError(0, '%YAML directive should contain exactly one part');\n return false;\n }\n const [version] = parts;\n if (version === '1.1' || version === '1.2') {\n this.yaml.version = version;\n return true;\n }\n else {\n const isValid = /^\\d+\\.\\d+$/.test(version);\n onError(6, `Unsupported YAML version ${version}`, isValid);\n return false;\n }\n }\n default:\n onError(0, `Unknown directive ${name}`, true);\n return false;\n }\n }\n /**\n * Resolves a tag, matching handles to those defined in %TAG directives.\n *\n * @returns Resolved tag, which may also be the non-specific tag `'!'` or a\n * `'!local'` tag, or `null` if unresolvable.\n */\n tagName(source, onError) {\n if (source === '!')\n return '!'; // non-specific tag\n if (source[0] !== '!') {\n onError(`Not a valid tag: ${source}`);\n return null;\n }\n if (source[1] === '<') {\n const verbatim = source.slice(2, -1);\n if (verbatim === '!' || verbatim === '!!') {\n onError(`Verbatim tags aren't resolved, so ${source} is invalid.`);\n return null;\n }\n if (source[source.length - 1] !== '>')\n onError('Verbatim tags must end with a >');\n return verbatim;\n }\n const [, handle, suffix] = source.match(/^(.*!)([^!]*)$/s);\n if (!suffix)\n onError(`The ${source} tag has no suffix`);\n const prefix = this.tags[handle];\n if (prefix) {\n try {\n return prefix + decodeURIComponent(suffix);\n }\n catch (error) {\n onError(String(error));\n return null;\n }\n }\n if (handle === '!')\n return source; // local tag\n onError(`Could not resolve tag: ${source}`);\n return null;\n }\n /**\n * Given a fully resolved tag, returns its printable string form,\n * taking into account current tag prefixes and defaults.\n */\n tagString(tag) {\n for (const [handle, prefix] of Object.entries(this.tags)) {\n if (tag.startsWith(prefix))\n return handle + escapeTagName(tag.substring(prefix.length));\n }\n return tag[0] === '!' ? tag : `!<${tag}>`;\n }\n toString(doc) {\n const lines = this.yaml.explicit\n ? [`%YAML ${this.yaml.version || '1.2'}`]\n : [];\n const tagEntries = Object.entries(this.tags);\n let tagNames;\n if (doc && tagEntries.length > 0 && identity.isNode(doc.contents)) {\n const tags = {};\n visit.visit(doc.contents, (_key, node) => {\n if (identity.isNode(node) && node.tag)\n tags[node.tag] = true;\n });\n tagNames = Object.keys(tags);\n }\n else\n tagNames = [];\n for (const [handle, prefix] of tagEntries) {\n if (handle === '!!' && prefix === 'tag:yaml.org,2002:')\n continue;\n if (!doc || tagNames.some(tn => tn.startsWith(prefix)))\n lines.push(`%TAG ${handle} ${prefix}`);\n }\n return lines.join('\\n');\n }\n}\nDirectives.defaultYaml = { explicit: false, version: '1.2' };\nDirectives.defaultTags = { '!!': 'tag:yaml.org,2002:' };\n\nexports.Directives = Directives;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar visit = require('../visit.js');\n\n/**\n * Verify that the input string is a valid anchor.\n *\n * Will throw on errors.\n */\nfunction anchorIsValid(anchor) {\n if (/[\\x00-\\x19\\s,[\\]{}]/.test(anchor)) {\n const sa = JSON.stringify(anchor);\n const msg = `Anchor must not contain whitespace or control characters: ${sa}`;\n throw new Error(msg);\n }\n return true;\n}\nfunction anchorNames(root) {\n const anchors = new Set();\n visit.visit(root, {\n Value(_key, node) {\n if (node.anchor)\n anchors.add(node.anchor);\n }\n });\n return anchors;\n}\n/** Find a new anchor name with the given `prefix` and a one-indexed suffix. */\nfunction findNewAnchor(prefix, exclude) {\n for (let i = 1; true; ++i) {\n const name = `${prefix}${i}`;\n if (!exclude.has(name))\n return name;\n }\n}\nfunction createNodeAnchors(doc, prefix) {\n const aliasObjects = [];\n const sourceObjects = new Map();\n let prevAnchors = null;\n return {\n onAnchor: (source) => {\n aliasObjects.push(source);\n prevAnchors ?? (prevAnchors = anchorNames(doc));\n const anchor = findNewAnchor(prefix, prevAnchors);\n prevAnchors.add(anchor);\n return anchor;\n },\n /**\n * With circular references, the source node is only resolved after all\n * of its child nodes are. This is why anchors are set only after all of\n * the nodes have been created.\n */\n setAnchors: () => {\n for (const source of aliasObjects) {\n const ref = sourceObjects.get(source);\n if (typeof ref === 'object' &&\n ref.anchor &&\n (identity.isScalar(ref.node) || identity.isCollection(ref.node))) {\n ref.node.anchor = ref.anchor;\n }\n else {\n const error = new Error('Failed to resolve repeated object (this should not happen)');\n error.source = source;\n throw error;\n }\n }\n },\n sourceObjects\n };\n}\n\nexports.anchorIsValid = anchorIsValid;\nexports.anchorNames = anchorNames;\nexports.createNodeAnchors = createNodeAnchors;\nexports.findNewAnchor = findNewAnchor;\n","'use strict';\n\n/**\n * Applies the JSON.parse reviver algorithm as defined in the ECMA-262 spec,\n * in section 24.5.1.1 \"Runtime Semantics: InternalizeJSONProperty\" of the\n * 2021 edition: https://tc39.es/ecma262/#sec-json.parse\n *\n * Includes extensions for handling Map and Set objects.\n */\nfunction applyReviver(reviver, obj, key, val) {\n if (val && typeof val === 'object') {\n if (Array.isArray(val)) {\n for (let i = 0, len = val.length; i < len; ++i) {\n const v0 = val[i];\n const v1 = applyReviver(reviver, val, String(i), v0);\n // eslint-disable-next-line @typescript-eslint/no-array-delete\n if (v1 === undefined)\n delete val[i];\n else if (v1 !== v0)\n val[i] = v1;\n }\n }\n else if (val instanceof Map) {\n for (const k of Array.from(val.keys())) {\n const v0 = val.get(k);\n const v1 = applyReviver(reviver, val, k, v0);\n if (v1 === undefined)\n val.delete(k);\n else if (v1 !== v0)\n val.set(k, v1);\n }\n }\n else if (val instanceof Set) {\n for (const v0 of Array.from(val)) {\n const v1 = applyReviver(reviver, val, v0, v0);\n if (v1 === undefined)\n val.delete(v0);\n else if (v1 !== v0) {\n val.delete(v0);\n val.add(v1);\n }\n }\n }\n else {\n for (const [k, v0] of Object.entries(val)) {\n const v1 = applyReviver(reviver, val, k, v0);\n if (v1 === undefined)\n delete val[k];\n else if (v1 !== v0)\n val[k] = v1;\n }\n }\n }\n return reviver.call(obj, key, val);\n}\n\nexports.applyReviver = applyReviver;\n","'use strict';\n\nvar identity = require('./identity.js');\n\n/**\n * Recursively convert any node or its contents to native JavaScript\n *\n * @param value - The input value\n * @param arg - If `value` defines a `toJSON()` method, use this\n * as its first argument\n * @param ctx - Conversion context, originally set in Document#toJS(). If\n * `{ keep: true }` is not set, output should be suitable for JSON\n * stringification.\n */\nfunction toJS(value, arg, ctx) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n if (Array.isArray(value))\n return value.map((v, i) => toJS(v, String(i), ctx));\n if (value && typeof value.toJSON === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n if (!ctx || !identity.hasAnchor(value))\n return value.toJSON(arg, ctx);\n const data = { aliasCount: 0, count: 1, res: undefined };\n ctx.anchors.set(value, data);\n ctx.onCreate = res => {\n data.res = res;\n delete ctx.onCreate;\n };\n const res = value.toJSON(arg, ctx);\n if (ctx.onCreate)\n ctx.onCreate(res);\n return res;\n }\n if (typeof value === 'bigint' && !ctx?.keep)\n return Number(value);\n return value;\n}\n\nexports.toJS = toJS;\n","'use strict';\n\nvar applyReviver = require('../doc/applyReviver.js');\nvar identity = require('./identity.js');\nvar toJS = require('./toJS.js');\n\nclass NodeBase {\n constructor(type) {\n Object.defineProperty(this, identity.NODE_TYPE, { value: type });\n }\n /** Create a copy of this node. */\n clone() {\n const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /** A plain JavaScript representation of this node. */\n toJS(doc, { mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {\n if (!identity.isDocument(doc))\n throw new TypeError('A document argument is required');\n const ctx = {\n anchors: new Map(),\n doc,\n keep: true,\n mapAsMap: mapAsMap === true,\n mapKeyWarned: false,\n maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100\n };\n const res = toJS.toJS(this, '', ctx);\n if (typeof onAnchor === 'function')\n for (const { count, res } of ctx.anchors.values())\n onAnchor(res, count);\n return typeof reviver === 'function'\n ? applyReviver.applyReviver(reviver, { '': res }, '', res)\n : res;\n }\n}\n\nexports.NodeBase = NodeBase;\n","'use strict';\n\nvar anchors = require('../doc/anchors.js');\nvar visit = require('../visit.js');\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\nvar toJS = require('./toJS.js');\n\nclass Alias extends Node.NodeBase {\n constructor(source) {\n super(identity.ALIAS);\n this.source = source;\n Object.defineProperty(this, 'tag', {\n set() {\n throw new Error('Alias nodes cannot have tags');\n }\n });\n }\n /**\n * Resolve the value of this alias within `doc`, finding the last\n * instance of the `source` anchor before this node.\n */\n resolve(doc, ctx) {\n let nodes;\n if (ctx?.aliasResolveCache) {\n nodes = ctx.aliasResolveCache;\n }\n else {\n nodes = [];\n visit.visit(doc, {\n Node: (_key, node) => {\n if (identity.isAlias(node) || identity.hasAnchor(node))\n nodes.push(node);\n }\n });\n if (ctx)\n ctx.aliasResolveCache = nodes;\n }\n let found = undefined;\n for (const node of nodes) {\n if (node === this)\n break;\n if (node.anchor === this.source)\n found = node;\n }\n return found;\n }\n toJSON(_arg, ctx) {\n if (!ctx)\n return { source: this.source };\n const { anchors, doc, maxAliasCount } = ctx;\n const source = this.resolve(doc, ctx);\n if (!source) {\n const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;\n throw new ReferenceError(msg);\n }\n let data = anchors.get(source);\n if (!data) {\n // Resolve anchors for Node.prototype.toJS()\n toJS.toJS(source, null, ctx);\n data = anchors.get(source);\n }\n /* istanbul ignore if */\n if (data?.res === undefined) {\n const msg = 'This should not happen: Alias anchor was not resolved?';\n throw new ReferenceError(msg);\n }\n if (maxAliasCount >= 0) {\n data.count += 1;\n if (data.aliasCount === 0)\n data.aliasCount = getAliasCount(doc, source, anchors);\n if (data.count * data.aliasCount > maxAliasCount) {\n const msg = 'Excessive alias count indicates a resource exhaustion attack';\n throw new ReferenceError(msg);\n }\n }\n return data.res;\n }\n toString(ctx, _onComment, _onChompKeep) {\n const src = `*${this.source}`;\n if (ctx) {\n anchors.anchorIsValid(this.source);\n if (ctx.options.verifyAliasOrder && !ctx.anchors.has(this.source)) {\n const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;\n throw new Error(msg);\n }\n if (ctx.implicitKey)\n return `${src} `;\n }\n return src;\n }\n}\nfunction getAliasCount(doc, node, anchors) {\n if (identity.isAlias(node)) {\n const source = node.resolve(doc);\n const anchor = anchors && source && anchors.get(source);\n return anchor ? anchor.count * anchor.aliasCount : 0;\n }\n else if (identity.isCollection(node)) {\n let count = 0;\n for (const item of node.items) {\n const c = getAliasCount(doc, item, anchors);\n if (c > count)\n count = c;\n }\n return count;\n }\n else if (identity.isPair(node)) {\n const kc = getAliasCount(doc, node.key, anchors);\n const vc = getAliasCount(doc, node.value, anchors);\n return Math.max(kc, vc);\n }\n return 1;\n}\n\nexports.Alias = Alias;\n","'use strict';\n\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\nvar toJS = require('./toJS.js');\n\nconst isScalarValue = (value) => !value || (typeof value !== 'function' && typeof value !== 'object');\nclass Scalar extends Node.NodeBase {\n constructor(value) {\n super(identity.SCALAR);\n this.value = value;\n }\n toJSON(arg, ctx) {\n return ctx?.keep ? this.value : toJS.toJS(this.value, arg, ctx);\n }\n toString() {\n return String(this.value);\n }\n}\nScalar.BLOCK_FOLDED = 'BLOCK_FOLDED';\nScalar.BLOCK_LITERAL = 'BLOCK_LITERAL';\nScalar.PLAIN = 'PLAIN';\nScalar.QUOTE_DOUBLE = 'QUOTE_DOUBLE';\nScalar.QUOTE_SINGLE = 'QUOTE_SINGLE';\n\nexports.Scalar = Scalar;\nexports.isScalarValue = isScalarValue;\n","'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\n\nconst defaultTagPrefix = 'tag:yaml.org,2002:';\nfunction findTagObject(value, tagName, tags) {\n if (tagName) {\n const match = tags.filter(t => t.tag === tagName);\n const tagObj = match.find(t => !t.format) ?? match[0];\n if (!tagObj)\n throw new Error(`Tag ${tagName} not found`);\n return tagObj;\n }\n return tags.find(t => t.identify?.(value) && !t.format);\n}\nfunction createNode(value, tagName, ctx) {\n if (identity.isDocument(value))\n value = value.contents;\n if (identity.isNode(value))\n return value;\n if (identity.isPair(value)) {\n const map = ctx.schema[identity.MAP].createNode?.(ctx.schema, null, ctx);\n map.items.push(value);\n return map;\n }\n if (value instanceof String ||\n value instanceof Number ||\n value instanceof Boolean ||\n (typeof BigInt !== 'undefined' && value instanceof BigInt) // not supported everywhere\n ) {\n // https://tc39.es/ecma262/#sec-serializejsonproperty\n value = value.valueOf();\n }\n const { aliasDuplicateObjects, onAnchor, onTagObj, schema, sourceObjects } = ctx;\n // Detect duplicate references to the same object & use Alias nodes for all\n // after first. The `ref` wrapper allows for circular references to resolve.\n let ref = undefined;\n if (aliasDuplicateObjects && value && typeof value === 'object') {\n ref = sourceObjects.get(value);\n if (ref) {\n ref.anchor ?? (ref.anchor = onAnchor(value));\n return new Alias.Alias(ref.anchor);\n }\n else {\n ref = { anchor: null, node: null };\n sourceObjects.set(value, ref);\n }\n }\n if (tagName?.startsWith('!!'))\n tagName = defaultTagPrefix + tagName.slice(2);\n let tagObj = findTagObject(value, tagName, schema.tags);\n if (!tagObj) {\n if (value && typeof value.toJSON === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n value = value.toJSON();\n }\n if (!value || typeof value !== 'object') {\n const node = new Scalar.Scalar(value);\n if (ref)\n ref.node = node;\n return node;\n }\n tagObj =\n value instanceof Map\n ? schema[identity.MAP]\n : Symbol.iterator in Object(value)\n ? schema[identity.SEQ]\n : schema[identity.MAP];\n }\n if (onTagObj) {\n onTagObj(tagObj);\n delete ctx.onTagObj;\n }\n const node = tagObj?.createNode\n ? tagObj.createNode(ctx.schema, value, ctx)\n : typeof tagObj?.nodeClass?.from === 'function'\n ? tagObj.nodeClass.from(ctx.schema, value, ctx)\n : new Scalar.Scalar(value);\n if (tagName)\n node.tag = tagName;\n else if (!tagObj.default)\n node.tag = tagObj.tag;\n if (ref)\n ref.node = node;\n return node;\n}\n\nexports.createNode = createNode;\n","'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\n\nfunction collectionFromPath(schema, path, value) {\n let v = value;\n for (let i = path.length - 1; i >= 0; --i) {\n const k = path[i];\n if (typeof k === 'number' && Number.isInteger(k) && k >= 0) {\n const a = [];\n a[k] = v;\n v = a;\n }\n else {\n v = new Map([[k, v]]);\n }\n }\n return createNode.createNode(v, undefined, {\n aliasDuplicateObjects: false,\n keepUndefined: false,\n onAnchor: () => {\n throw new Error('This should not happen, please report a bug.');\n },\n schema,\n sourceObjects: new Map()\n });\n}\n// Type guard is intentionally a little wrong so as to be more useful,\n// as it does not cover untypable empty non-string iterables (e.g. []).\nconst isEmptyPath = (path) => path == null ||\n (typeof path === 'object' && !!path[Symbol.iterator]().next().done);\nclass Collection extends Node.NodeBase {\n constructor(type, schema) {\n super(type);\n Object.defineProperty(this, 'schema', {\n value: schema,\n configurable: true,\n enumerable: false,\n writable: true\n });\n }\n /**\n * Create a copy of this collection.\n *\n * @param schema - If defined, overwrites the original's schema\n */\n clone(schema) {\n const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));\n if (schema)\n copy.schema = schema;\n copy.items = copy.items.map(it => identity.isNode(it) || identity.isPair(it) ? it.clone(schema) : it);\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /**\n * Adds a value to the collection. For `!!map` and `!!omap` the value must\n * be a Pair instance or a `{ key, value }` object, which may not have a key\n * that already exists in the map.\n */\n addIn(path, value) {\n if (isEmptyPath(path))\n this.add(value);\n else {\n const [key, ...rest] = path;\n const node = this.get(key, true);\n if (identity.isCollection(node))\n node.addIn(rest, value);\n else if (node === undefined && this.schema)\n this.set(key, collectionFromPath(this.schema, rest, value));\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n }\n /**\n * Removes a value from the collection.\n * @returns `true` if the item was found and removed.\n */\n deleteIn(path) {\n const [key, ...rest] = path;\n if (rest.length === 0)\n return this.delete(key);\n const node = this.get(key, true);\n if (identity.isCollection(node))\n return node.deleteIn(rest);\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n /**\n * Returns item at `key`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n getIn(path, keepScalar) {\n const [key, ...rest] = path;\n const node = this.get(key, true);\n if (rest.length === 0)\n return !keepScalar && identity.isScalar(node) ? node.value : node;\n else\n return identity.isCollection(node) ? node.getIn(rest, keepScalar) : undefined;\n }\n hasAllNullValues(allowScalar) {\n return this.items.every(node => {\n if (!identity.isPair(node))\n return false;\n const n = node.value;\n return (n == null ||\n (allowScalar &&\n identity.isScalar(n) &&\n n.value == null &&\n !n.commentBefore &&\n !n.comment &&\n !n.tag));\n });\n }\n /**\n * Checks if the collection includes a value with the key `key`.\n */\n hasIn(path) {\n const [key, ...rest] = path;\n if (rest.length === 0)\n return this.has(key);\n const node = this.get(key, true);\n return identity.isCollection(node) ? node.hasIn(rest) : false;\n }\n /**\n * Sets a value in this collection. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n setIn(path, value) {\n const [key, ...rest] = path;\n if (rest.length === 0) {\n this.set(key, value);\n }\n else {\n const node = this.get(key, true);\n if (identity.isCollection(node))\n node.setIn(rest, value);\n else if (node === undefined && this.schema)\n this.set(key, collectionFromPath(this.schema, rest, value));\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n }\n}\n\nexports.Collection = Collection;\nexports.collectionFromPath = collectionFromPath;\nexports.isEmptyPath = isEmptyPath;\n","'use strict';\n\n/**\n * Stringifies a comment.\n *\n * Empty comment lines are left empty,\n * lines consisting of a single space are replaced by `#`,\n * and all other lines are prefixed with a `#`.\n */\nconst stringifyComment = (str) => str.replace(/^(?!$)(?: $)?/gm, '#');\nfunction indentComment(comment, indent) {\n if (/^\\n+$/.test(comment))\n return comment.substring(1);\n return indent ? comment.replace(/^(?! *$)/gm, indent) : comment;\n}\nconst lineComment = (str, indent, comment) => str.endsWith('\\n')\n ? indentComment(comment, indent)\n : comment.includes('\\n')\n ? '\\n' + indentComment(comment, indent)\n : (str.endsWith(' ') ? '' : ' ') + comment;\n\nexports.indentComment = indentComment;\nexports.lineComment = lineComment;\nexports.stringifyComment = stringifyComment;\n","'use strict';\n\nconst FOLD_FLOW = 'flow';\nconst FOLD_BLOCK = 'block';\nconst FOLD_QUOTED = 'quoted';\n/**\n * Tries to keep input at up to `lineWidth` characters, splitting only on spaces\n * not followed by newlines or spaces unless `mode` is `'quoted'`. Lines are\n * terminated with `\\n` and started with `indent`.\n */\nfunction foldFlowLines(text, indent, mode = 'flow', { indentAtStart, lineWidth = 80, minContentWidth = 20, onFold, onOverflow } = {}) {\n if (!lineWidth || lineWidth < 0)\n return text;\n if (lineWidth < minContentWidth)\n minContentWidth = 0;\n const endStep = Math.max(1 + minContentWidth, 1 + lineWidth - indent.length);\n if (text.length <= endStep)\n return text;\n const folds = [];\n const escapedFolds = {};\n let end = lineWidth - indent.length;\n if (typeof indentAtStart === 'number') {\n if (indentAtStart > lineWidth - Math.max(2, minContentWidth))\n folds.push(0);\n else\n end = lineWidth - indentAtStart;\n }\n let split = undefined;\n let prev = undefined;\n let overflow = false;\n let i = -1;\n let escStart = -1;\n let escEnd = -1;\n if (mode === FOLD_BLOCK) {\n i = consumeMoreIndentedLines(text, i, indent.length);\n if (i !== -1)\n end = i + endStep;\n }\n for (let ch; (ch = text[(i += 1)]);) {\n if (mode === FOLD_QUOTED && ch === '\\\\') {\n escStart = i;\n switch (text[i + 1]) {\n case 'x':\n i += 3;\n break;\n case 'u':\n i += 5;\n break;\n case 'U':\n i += 9;\n break;\n default:\n i += 1;\n }\n escEnd = i;\n }\n if (ch === '\\n') {\n if (mode === FOLD_BLOCK)\n i = consumeMoreIndentedLines(text, i, indent.length);\n end = i + indent.length + endStep;\n split = undefined;\n }\n else {\n if (ch === ' ' &&\n prev &&\n prev !== ' ' &&\n prev !== '\\n' &&\n prev !== '\\t') {\n // space surrounded by non-space can be replaced with newline + indent\n const next = text[i + 1];\n if (next && next !== ' ' && next !== '\\n' && next !== '\\t')\n split = i;\n }\n if (i >= end) {\n if (split) {\n folds.push(split);\n end = split + endStep;\n split = undefined;\n }\n else if (mode === FOLD_QUOTED) {\n // white-space collected at end may stretch past lineWidth\n while (prev === ' ' || prev === '\\t') {\n prev = ch;\n ch = text[(i += 1)];\n overflow = true;\n }\n // Account for newline escape, but don't break preceding escape\n const j = i > escEnd + 1 ? i - 2 : escStart - 1;\n // Bail out if lineWidth & minContentWidth are shorter than an escape string\n if (escapedFolds[j])\n return text;\n folds.push(j);\n escapedFolds[j] = true;\n end = j + endStep;\n split = undefined;\n }\n else {\n overflow = true;\n }\n }\n }\n prev = ch;\n }\n if (overflow && onOverflow)\n onOverflow();\n if (folds.length === 0)\n return text;\n if (onFold)\n onFold();\n let res = text.slice(0, folds[0]);\n for (let i = 0; i < folds.length; ++i) {\n const fold = folds[i];\n const end = folds[i + 1] || text.length;\n if (fold === 0)\n res = `\\n${indent}${text.slice(0, end)}`;\n else {\n if (mode === FOLD_QUOTED && escapedFolds[fold])\n res += `${text[fold]}\\\\`;\n res += `\\n${indent}${text.slice(fold + 1, end)}`;\n }\n }\n return res;\n}\n/**\n * Presumes `i + 1` is at the start of a line\n * @returns index of last newline in more-indented block\n */\nfunction consumeMoreIndentedLines(text, i, indent) {\n let end = i;\n let start = i + 1;\n let ch = text[start];\n while (ch === ' ' || ch === '\\t') {\n if (i < start + indent) {\n ch = text[++i];\n }\n else {\n do {\n ch = text[++i];\n } while (ch && ch !== '\\n');\n end = i;\n start = i + 1;\n ch = text[start];\n }\n }\n return end;\n}\n\nexports.FOLD_BLOCK = FOLD_BLOCK;\nexports.FOLD_FLOW = FOLD_FLOW;\nexports.FOLD_QUOTED = FOLD_QUOTED;\nexports.foldFlowLines = foldFlowLines;\n","'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\nvar foldFlowLines = require('./foldFlowLines.js');\n\nconst getFoldOptions = (ctx, isBlock) => ({\n indentAtStart: isBlock ? ctx.indent.length : ctx.indentAtStart,\n lineWidth: ctx.options.lineWidth,\n minContentWidth: ctx.options.minContentWidth\n});\n// Also checks for lines starting with %, as parsing the output as YAML 1.1 will\n// presume that's starting a new document.\nconst containsDocumentMarker = (str) => /^(%|---|\\.\\.\\.)/m.test(str);\nfunction lineLengthOverLimit(str, lineWidth, indentLength) {\n if (!lineWidth || lineWidth < 0)\n return false;\n const limit = lineWidth - indentLength;\n const strLen = str.length;\n if (strLen <= limit)\n return false;\n for (let i = 0, start = 0; i < strLen; ++i) {\n if (str[i] === '\\n') {\n if (i - start > limit)\n return true;\n start = i + 1;\n if (strLen - start <= limit)\n return false;\n }\n }\n return true;\n}\nfunction doubleQuotedString(value, ctx) {\n const json = JSON.stringify(value);\n if (ctx.options.doubleQuotedAsJSON)\n return json;\n const { implicitKey } = ctx;\n const minMultiLineLength = ctx.options.doubleQuotedMinMultiLineLength;\n const indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : '');\n let str = '';\n let start = 0;\n for (let i = 0, ch = json[i]; ch; ch = json[++i]) {\n if (ch === ' ' && json[i + 1] === '\\\\' && json[i + 2] === 'n') {\n // space before newline needs to be escaped to not be folded\n str += json.slice(start, i) + '\\\\ ';\n i += 1;\n start = i;\n ch = '\\\\';\n }\n if (ch === '\\\\')\n switch (json[i + 1]) {\n case 'u':\n {\n str += json.slice(start, i);\n const code = json.substr(i + 2, 4);\n switch (code) {\n case '0000':\n str += '\\\\0';\n break;\n case '0007':\n str += '\\\\a';\n break;\n case '000b':\n str += '\\\\v';\n break;\n case '001b':\n str += '\\\\e';\n break;\n case '0085':\n str += '\\\\N';\n break;\n case '00a0':\n str += '\\\\_';\n break;\n case '2028':\n str += '\\\\L';\n break;\n case '2029':\n str += '\\\\P';\n break;\n default:\n if (code.substr(0, 2) === '00')\n str += '\\\\x' + code.substr(2);\n else\n str += json.substr(i, 6);\n }\n i += 5;\n start = i + 1;\n }\n break;\n case 'n':\n if (implicitKey ||\n json[i + 2] === '\"' ||\n json.length < minMultiLineLength) {\n i += 1;\n }\n else {\n // folding will eat first newline\n str += json.slice(start, i) + '\\n\\n';\n while (json[i + 2] === '\\\\' &&\n json[i + 3] === 'n' &&\n json[i + 4] !== '\"') {\n str += '\\n';\n i += 2;\n }\n str += indent;\n // space after newline needs to be escaped to not be folded\n if (json[i + 2] === ' ')\n str += '\\\\';\n i += 1;\n start = i + 1;\n }\n break;\n default:\n i += 1;\n }\n }\n str = start ? str + json.slice(start) : json;\n return implicitKey\n ? str\n : foldFlowLines.foldFlowLines(str, indent, foldFlowLines.FOLD_QUOTED, getFoldOptions(ctx, false));\n}\nfunction singleQuotedString(value, ctx) {\n if (ctx.options.singleQuote === false ||\n (ctx.implicitKey && value.includes('\\n')) ||\n /[ \\t]\\n|\\n[ \\t]/.test(value) // single quoted string can't have leading or trailing whitespace around newline\n )\n return doubleQuotedString(value, ctx);\n const indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : '');\n const res = \"'\" + value.replace(/'/g, \"''\").replace(/\\n+/g, `$&\\n${indent}`) + \"'\";\n return ctx.implicitKey\n ? res\n : foldFlowLines.foldFlowLines(res, indent, foldFlowLines.FOLD_FLOW, getFoldOptions(ctx, false));\n}\nfunction quotedString(value, ctx) {\n const { singleQuote } = ctx.options;\n let qs;\n if (singleQuote === false)\n qs = doubleQuotedString;\n else {\n const hasDouble = value.includes('\"');\n const hasSingle = value.includes(\"'\");\n if (hasDouble && !hasSingle)\n qs = singleQuotedString;\n else if (hasSingle && !hasDouble)\n qs = doubleQuotedString;\n else\n qs = singleQuote ? singleQuotedString : doubleQuotedString;\n }\n return qs(value, ctx);\n}\n// The negative lookbehind avoids a polynomial search,\n// but isn't supported yet on Safari: https://caniuse.com/js-regexp-lookbehind\nlet blockEndNewlines;\ntry {\n blockEndNewlines = new RegExp('(^|(?<!\\n))\\n+(?!\\n|$)', 'g');\n}\ncatch {\n blockEndNewlines = /\\n+(?!\\n|$)/g;\n}\nfunction blockString({ comment, type, value }, ctx, onComment, onChompKeep) {\n const { blockQuote, commentString, lineWidth } = ctx.options;\n // 1. Block can't end in whitespace unless the last line is non-empty.\n // 2. Strings consisting of only whitespace are best rendered explicitly.\n if (!blockQuote || /\\n[\\t ]+$/.test(value)) {\n return quotedString(value, ctx);\n }\n const indent = ctx.indent ||\n (ctx.forceBlockIndent || containsDocumentMarker(value) ? ' ' : '');\n const literal = blockQuote === 'literal'\n ? true\n : blockQuote === 'folded' || type === Scalar.Scalar.BLOCK_FOLDED\n ? false\n : type === Scalar.Scalar.BLOCK_LITERAL\n ? true\n : !lineLengthOverLimit(value, lineWidth, indent.length);\n if (!value)\n return literal ? '|\\n' : '>\\n';\n // determine chomping from whitespace at value end\n let chomp;\n let endStart;\n for (endStart = value.length; endStart > 0; --endStart) {\n const ch = value[endStart - 1];\n if (ch !== '\\n' && ch !== '\\t' && ch !== ' ')\n break;\n }\n let end = value.substring(endStart);\n const endNlPos = end.indexOf('\\n');\n if (endNlPos === -1) {\n chomp = '-'; // strip\n }\n else if (value === end || endNlPos !== end.length - 1) {\n chomp = '+'; // keep\n if (onChompKeep)\n onChompKeep();\n }\n else {\n chomp = ''; // clip\n }\n if (end) {\n value = value.slice(0, -end.length);\n if (end[end.length - 1] === '\\n')\n end = end.slice(0, -1);\n end = end.replace(blockEndNewlines, `$&${indent}`);\n }\n // determine indent indicator from whitespace at value start\n let startWithSpace = false;\n let startEnd;\n let startNlPos = -1;\n for (startEnd = 0; startEnd < value.length; ++startEnd) {\n const ch = value[startEnd];\n if (ch === ' ')\n startWithSpace = true;\n else if (ch === '\\n')\n startNlPos = startEnd;\n else\n break;\n }\n let start = value.substring(0, startNlPos < startEnd ? startNlPos + 1 : startEnd);\n if (start) {\n value = value.substring(start.length);\n start = start.replace(/\\n+/g, `$&${indent}`);\n }\n const indentSize = indent ? '2' : '1'; // root is at -1\n // Leading | or > is added later\n let header = (startWithSpace ? indentSize : '') + chomp;\n if (comment) {\n header += ' ' + commentString(comment.replace(/ ?[\\r\\n]+/g, ' '));\n if (onComment)\n onComment();\n }\n if (!literal) {\n const foldedValue = value\n .replace(/\\n+/g, '\\n$&')\n .replace(/(?:^|\\n)([\\t ].*)(?:([\\n\\t ]*)\\n(?![\\n\\t ]))?/g, '$1$2') // more-indented lines aren't folded\n // ^ more-ind. ^ empty ^ capture next empty lines only at end of indent\n .replace(/\\n+/g, `$&${indent}`);\n let literalFallback = false;\n const foldOptions = getFoldOptions(ctx, true);\n if (blockQuote !== 'folded' && type !== Scalar.Scalar.BLOCK_FOLDED) {\n foldOptions.onOverflow = () => {\n literalFallback = true;\n };\n }\n const body = foldFlowLines.foldFlowLines(`${start}${foldedValue}${end}`, indent, foldFlowLines.FOLD_BLOCK, foldOptions);\n if (!literalFallback)\n return `>${header}\\n${indent}${body}`;\n }\n value = value.replace(/\\n+/g, `$&${indent}`);\n return `|${header}\\n${indent}${start}${value}${end}`;\n}\nfunction plainString(item, ctx, onComment, onChompKeep) {\n const { type, value } = item;\n const { actualString, implicitKey, indent, indentStep, inFlow } = ctx;\n if ((implicitKey && value.includes('\\n')) ||\n (inFlow && /[[\\]{},]/.test(value))) {\n return quotedString(value, ctx);\n }\n if (/^[\\n\\t ,[\\]{}#&*!|>'\"%@`]|^[?-]$|^[?-][ \\t]|[\\n:][ \\t]|[ \\t]\\n|[\\n\\t ]#|[\\n\\t :]$/.test(value)) {\n // not allowed:\n // - '-' or '?'\n // - start with an indicator character (except [?:-]) or /[?-] /\n // - '\\n ', ': ' or ' \\n' anywhere\n // - '#' not preceded by a non-space char\n // - end with ' ' or ':'\n return implicitKey || inFlow || !value.includes('\\n')\n ? quotedString(value, ctx)\n : blockString(item, ctx, onComment, onChompKeep);\n }\n if (!implicitKey &&\n !inFlow &&\n type !== Scalar.Scalar.PLAIN &&\n value.includes('\\n')) {\n // Where allowed & type not set explicitly, prefer block style for multiline strings\n return blockString(item, ctx, onComment, onChompKeep);\n }\n if (containsDocumentMarker(value)) {\n if (indent === '') {\n ctx.forceBlockIndent = true;\n return blockString(item, ctx, onComment, onChompKeep);\n }\n else if (implicitKey && indent === indentStep) {\n return quotedString(value, ctx);\n }\n }\n const str = value.replace(/\\n+/g, `$&\\n${indent}`);\n // Verify that output will be parsed as a string, as e.g. plain numbers and\n // booleans get parsed with those types in v1.2 (e.g. '42', 'true' & '0.9e-3'),\n // and others in v1.1.\n if (actualString) {\n const test = (tag) => tag.default && tag.tag !== 'tag:yaml.org,2002:str' && tag.test?.test(str);\n const { compat, tags } = ctx.doc.schema;\n if (tags.some(test) || compat?.some(test))\n return quotedString(value, ctx);\n }\n return implicitKey\n ? str\n : foldFlowLines.foldFlowLines(str, indent, foldFlowLines.FOLD_FLOW, getFoldOptions(ctx, false));\n}\nfunction stringifyString(item, ctx, onComment, onChompKeep) {\n const { implicitKey, inFlow } = ctx;\n const ss = typeof item.value === 'string'\n ? item\n : Object.assign({}, item, { value: String(item.value) });\n let { type } = item;\n if (type !== Scalar.Scalar.QUOTE_DOUBLE) {\n // force double quotes on control characters & unpaired surrogates\n if (/[\\x00-\\x08\\x0b-\\x1f\\x7f-\\x9f\\u{D800}-\\u{DFFF}]/u.test(ss.value))\n type = Scalar.Scalar.QUOTE_DOUBLE;\n }\n const _stringify = (_type) => {\n switch (_type) {\n case Scalar.Scalar.BLOCK_FOLDED:\n case Scalar.Scalar.BLOCK_LITERAL:\n return implicitKey || inFlow\n ? quotedString(ss.value, ctx) // blocks are not valid inside flow containers\n : blockString(ss, ctx, onComment, onChompKeep);\n case Scalar.Scalar.QUOTE_DOUBLE:\n return doubleQuotedString(ss.value, ctx);\n case Scalar.Scalar.QUOTE_SINGLE:\n return singleQuotedString(ss.value, ctx);\n case Scalar.Scalar.PLAIN:\n return plainString(ss, ctx, onComment, onChompKeep);\n default:\n return null;\n }\n };\n let res = _stringify(type);\n if (res === null) {\n const { defaultKeyType, defaultStringType } = ctx.options;\n const t = (implicitKey && defaultKeyType) || defaultStringType;\n res = _stringify(t);\n if (res === null)\n throw new Error(`Unsupported default string type ${t}`);\n }\n return res;\n}\n\nexports.stringifyString = stringifyString;\n","'use strict';\n\nvar anchors = require('../doc/anchors.js');\nvar identity = require('../nodes/identity.js');\nvar stringifyComment = require('./stringifyComment.js');\nvar stringifyString = require('./stringifyString.js');\n\nfunction createStringifyContext(doc, options) {\n const opt = Object.assign({\n blockQuote: true,\n commentString: stringifyComment.stringifyComment,\n defaultKeyType: null,\n defaultStringType: 'PLAIN',\n directives: null,\n doubleQuotedAsJSON: false,\n doubleQuotedMinMultiLineLength: 40,\n falseStr: 'false',\n flowCollectionPadding: true,\n indentSeq: true,\n lineWidth: 80,\n minContentWidth: 20,\n nullStr: 'null',\n simpleKeys: false,\n singleQuote: null,\n trailingComma: false,\n trueStr: 'true',\n verifyAliasOrder: true\n }, doc.schema.toStringOptions, options);\n let inFlow;\n switch (opt.collectionStyle) {\n case 'block':\n inFlow = false;\n break;\n case 'flow':\n inFlow = true;\n break;\n default:\n inFlow = null;\n }\n return {\n anchors: new Set(),\n doc,\n flowCollectionPadding: opt.flowCollectionPadding ? ' ' : '',\n indent: '',\n indentStep: typeof opt.indent === 'number' ? ' '.repeat(opt.indent) : ' ',\n inFlow,\n options: opt\n };\n}\nfunction getTagObject(tags, item) {\n if (item.tag) {\n const match = tags.filter(t => t.tag === item.tag);\n if (match.length > 0)\n return match.find(t => t.format === item.format) ?? match[0];\n }\n let tagObj = undefined;\n let obj;\n if (identity.isScalar(item)) {\n obj = item.value;\n let match = tags.filter(t => t.identify?.(obj));\n if (match.length > 1) {\n const testMatch = match.filter(t => t.test);\n if (testMatch.length > 0)\n match = testMatch;\n }\n tagObj =\n match.find(t => t.format === item.format) ?? match.find(t => !t.format);\n }\n else {\n obj = item;\n tagObj = tags.find(t => t.nodeClass && obj instanceof t.nodeClass);\n }\n if (!tagObj) {\n const name = obj?.constructor?.name ?? (obj === null ? 'null' : typeof obj);\n throw new Error(`Tag not resolved for ${name} value`);\n }\n return tagObj;\n}\n// needs to be called before value stringifier to allow for circular anchor refs\nfunction stringifyProps(node, tagObj, { anchors: anchors$1, doc }) {\n if (!doc.directives)\n return '';\n const props = [];\n const anchor = (identity.isScalar(node) || identity.isCollection(node)) && node.anchor;\n if (anchor && anchors.anchorIsValid(anchor)) {\n anchors$1.add(anchor);\n props.push(`&${anchor}`);\n }\n const tag = node.tag ?? (tagObj.default ? null : tagObj.tag);\n if (tag)\n props.push(doc.directives.tagString(tag));\n return props.join(' ');\n}\nfunction stringify(item, ctx, onComment, onChompKeep) {\n if (identity.isPair(item))\n return item.toString(ctx, onComment, onChompKeep);\n if (identity.isAlias(item)) {\n if (ctx.doc.directives)\n return item.toString(ctx);\n if (ctx.resolvedAliases?.has(item)) {\n throw new TypeError(`Cannot stringify circular structure without alias nodes`);\n }\n else {\n if (ctx.resolvedAliases)\n ctx.resolvedAliases.add(item);\n else\n ctx.resolvedAliases = new Set([item]);\n item = item.resolve(ctx.doc);\n }\n }\n let tagObj = undefined;\n const node = identity.isNode(item)\n ? item\n : ctx.doc.createNode(item, { onTagObj: o => (tagObj = o) });\n tagObj ?? (tagObj = getTagObject(ctx.doc.schema.tags, node));\n const props = stringifyProps(node, tagObj, ctx);\n if (props.length > 0)\n ctx.indentAtStart = (ctx.indentAtStart ?? 0) + props.length + 1;\n const str = typeof tagObj.stringify === 'function'\n ? tagObj.stringify(node, ctx, onComment, onChompKeep)\n : identity.isScalar(node)\n ? stringifyString.stringifyString(node, ctx, onComment, onChompKeep)\n : node.toString(ctx, onComment, onChompKeep);\n if (!props)\n return str;\n return identity.isScalar(node) || str[0] === '{' || str[0] === '['\n ? `${props} ${str}`\n : `${props}\\n${ctx.indent}${str}`;\n}\n\nexports.createStringifyContext = createStringifyContext;\nexports.stringify = stringify;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyPair({ key, value }, ctx, onComment, onChompKeep) {\n const { allNullValues, doc, indent, indentStep, options: { commentString, indentSeq, simpleKeys } } = ctx;\n let keyComment = (identity.isNode(key) && key.comment) || null;\n if (simpleKeys) {\n if (keyComment) {\n throw new Error('With simple keys, key nodes cannot have comments');\n }\n if (identity.isCollection(key) || (!identity.isNode(key) && typeof key === 'object')) {\n const msg = 'With simple keys, collection cannot be used as a key value';\n throw new Error(msg);\n }\n }\n let explicitKey = !simpleKeys &&\n (!key ||\n (keyComment && value == null && !ctx.inFlow) ||\n identity.isCollection(key) ||\n (identity.isScalar(key)\n ? key.type === Scalar.Scalar.BLOCK_FOLDED || key.type === Scalar.Scalar.BLOCK_LITERAL\n : typeof key === 'object'));\n ctx = Object.assign({}, ctx, {\n allNullValues: false,\n implicitKey: !explicitKey && (simpleKeys || !allNullValues),\n indent: indent + indentStep\n });\n let keyCommentDone = false;\n let chompKeep = false;\n let str = stringify.stringify(key, ctx, () => (keyCommentDone = true), () => (chompKeep = true));\n if (!explicitKey && !ctx.inFlow && str.length > 1024) {\n if (simpleKeys)\n throw new Error('With simple keys, single line scalar must not span more than 1024 characters');\n explicitKey = true;\n }\n if (ctx.inFlow) {\n if (allNullValues || value == null) {\n if (keyCommentDone && onComment)\n onComment();\n return str === '' ? '?' : explicitKey ? `? ${str}` : str;\n }\n }\n else if ((allNullValues && !simpleKeys) || (value == null && explicitKey)) {\n str = `? ${str}`;\n if (keyComment && !keyCommentDone) {\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n }\n else if (chompKeep && onChompKeep)\n onChompKeep();\n return str;\n }\n if (keyCommentDone)\n keyComment = null;\n if (explicitKey) {\n if (keyComment)\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n str = `? ${str}\\n${indent}:`;\n }\n else {\n str = `${str}:`;\n if (keyComment)\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n }\n let vsb, vcb, valueComment;\n if (identity.isNode(value)) {\n vsb = !!value.spaceBefore;\n vcb = value.commentBefore;\n valueComment = value.comment;\n }\n else {\n vsb = false;\n vcb = null;\n valueComment = null;\n if (value && typeof value === 'object')\n value = doc.createNode(value);\n }\n ctx.implicitKey = false;\n if (!explicitKey && !keyComment && identity.isScalar(value))\n ctx.indentAtStart = str.length + 1;\n chompKeep = false;\n if (!indentSeq &&\n indentStep.length >= 2 &&\n !ctx.inFlow &&\n !explicitKey &&\n identity.isSeq(value) &&\n !value.flow &&\n !value.tag &&\n !value.anchor) {\n // If indentSeq === false, consider '- ' as part of indentation where possible\n ctx.indent = ctx.indent.substring(2);\n }\n let valueCommentDone = false;\n const valueStr = stringify.stringify(value, ctx, () => (valueCommentDone = true), () => (chompKeep = true));\n let ws = ' ';\n if (keyComment || vsb || vcb) {\n ws = vsb ? '\\n' : '';\n if (vcb) {\n const cs = commentString(vcb);\n ws += `\\n${stringifyComment.indentComment(cs, ctx.indent)}`;\n }\n if (valueStr === '' && !ctx.inFlow) {\n if (ws === '\\n' && valueComment)\n ws = '\\n\\n';\n }\n else {\n ws += `\\n${ctx.indent}`;\n }\n }\n else if (!explicitKey && identity.isCollection(value)) {\n const vs0 = valueStr[0];\n const nl0 = valueStr.indexOf('\\n');\n const hasNewline = nl0 !== -1;\n const flow = ctx.inFlow ?? value.flow ?? value.items.length === 0;\n if (hasNewline || !flow) {\n let hasPropsLine = false;\n if (hasNewline && (vs0 === '&' || vs0 === '!')) {\n let sp0 = valueStr.indexOf(' ');\n if (vs0 === '&' &&\n sp0 !== -1 &&\n sp0 < nl0 &&\n valueStr[sp0 + 1] === '!') {\n sp0 = valueStr.indexOf(' ', sp0 + 1);\n }\n if (sp0 === -1 || nl0 < sp0)\n hasPropsLine = true;\n }\n if (!hasPropsLine)\n ws = `\\n${ctx.indent}`;\n }\n }\n else if (valueStr === '' || valueStr[0] === '\\n') {\n ws = '';\n }\n str += ws + valueStr;\n if (ctx.inFlow) {\n if (valueCommentDone && onComment)\n onComment();\n }\n else if (valueComment && !valueCommentDone) {\n str += stringifyComment.lineComment(str, ctx.indent, commentString(valueComment));\n }\n else if (chompKeep && onChompKeep) {\n onChompKeep();\n }\n return str;\n}\n\nexports.stringifyPair = stringifyPair;\n","'use strict';\n\nvar node_process = require('process');\n\nfunction debug(logLevel, ...messages) {\n if (logLevel === 'debug')\n console.log(...messages);\n}\nfunction warn(logLevel, warning) {\n if (logLevel === 'debug' || logLevel === 'warn') {\n if (typeof node_process.emitWarning === 'function')\n node_process.emitWarning(warning);\n else\n console.warn(warning);\n }\n}\n\nexports.debug = debug;\nexports.warn = warn;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Scalar = require('../../nodes/Scalar.js');\n\n// If the value associated with a merge key is a single mapping node, each of\n// its key/value pairs is inserted into the current mapping, unless the key\n// already exists in it. If the value associated with the merge key is a\n// sequence, then this sequence is expected to contain mapping nodes and each\n// of these nodes is merged in turn according to its order in the sequence.\n// Keys in mapping nodes earlier in the sequence override keys specified in\n// later mapping nodes. -- http://yaml.org/type/merge.html\nconst MERGE_KEY = '<<';\nconst merge = {\n identify: value => value === MERGE_KEY ||\n (typeof value === 'symbol' && value.description === MERGE_KEY),\n default: 'key',\n tag: 'tag:yaml.org,2002:merge',\n test: /^<<$/,\n resolve: () => Object.assign(new Scalar.Scalar(Symbol(MERGE_KEY)), {\n addToJSMap: addMergeToJSMap\n }),\n stringify: () => MERGE_KEY\n};\nconst isMergeKey = (ctx, key) => (merge.identify(key) ||\n (identity.isScalar(key) &&\n (!key.type || key.type === Scalar.Scalar.PLAIN) &&\n merge.identify(key.value))) &&\n ctx?.doc.schema.tags.some(tag => tag.tag === merge.tag && tag.default);\nfunction addMergeToJSMap(ctx, map, value) {\n value = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : value;\n if (identity.isSeq(value))\n for (const it of value.items)\n mergeValue(ctx, map, it);\n else if (Array.isArray(value))\n for (const it of value)\n mergeValue(ctx, map, it);\n else\n mergeValue(ctx, map, value);\n}\nfunction mergeValue(ctx, map, value) {\n const source = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : value;\n if (!identity.isMap(source))\n throw new Error('Merge sources must be maps or map aliases');\n const srcMap = source.toJSON(null, ctx, Map);\n for (const [key, value] of srcMap) {\n if (map instanceof Map) {\n if (!map.has(key))\n map.set(key, value);\n }\n else if (map instanceof Set) {\n map.add(key);\n }\n else if (!Object.prototype.hasOwnProperty.call(map, key)) {\n Object.defineProperty(map, key, {\n value,\n writable: true,\n enumerable: true,\n configurable: true\n });\n }\n }\n return map;\n}\n\nexports.addMergeToJSMap = addMergeToJSMap;\nexports.isMergeKey = isMergeKey;\nexports.merge = merge;\n","'use strict';\n\nvar log = require('../log.js');\nvar merge = require('../schema/yaml-1.1/merge.js');\nvar stringify = require('../stringify/stringify.js');\nvar identity = require('./identity.js');\nvar toJS = require('./toJS.js');\n\nfunction addPairToJSMap(ctx, map, { key, value }) {\n if (identity.isNode(key) && key.addToJSMap)\n key.addToJSMap(ctx, map, value);\n // TODO: Should drop this special case for bare << handling\n else if (merge.isMergeKey(ctx, key))\n merge.addMergeToJSMap(ctx, map, value);\n else {\n const jsKey = toJS.toJS(key, '', ctx);\n if (map instanceof Map) {\n map.set(jsKey, toJS.toJS(value, jsKey, ctx));\n }\n else if (map instanceof Set) {\n map.add(jsKey);\n }\n else {\n const stringKey = stringifyKey(key, jsKey, ctx);\n const jsValue = toJS.toJS(value, stringKey, ctx);\n if (stringKey in map)\n Object.defineProperty(map, stringKey, {\n value: jsValue,\n writable: true,\n enumerable: true,\n configurable: true\n });\n else\n map[stringKey] = jsValue;\n }\n }\n return map;\n}\nfunction stringifyKey(key, jsKey, ctx) {\n if (jsKey === null)\n return '';\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n if (typeof jsKey !== 'object')\n return String(jsKey);\n if (identity.isNode(key) && ctx?.doc) {\n const strCtx = stringify.createStringifyContext(ctx.doc, {});\n strCtx.anchors = new Set();\n for (const node of ctx.anchors.keys())\n strCtx.anchors.add(node.anchor);\n strCtx.inFlow = true;\n strCtx.inStringifyKey = true;\n const strKey = key.toString(strCtx);\n if (!ctx.mapKeyWarned) {\n let jsonStr = JSON.stringify(strKey);\n if (jsonStr.length > 40)\n jsonStr = jsonStr.substring(0, 36) + '...\"';\n log.warn(ctx.doc.options.logLevel, `Keys with collection values will be stringified due to JS Object restrictions: ${jsonStr}. Set mapAsMap: true to use object keys.`);\n ctx.mapKeyWarned = true;\n }\n return strKey;\n }\n return JSON.stringify(jsKey);\n}\n\nexports.addPairToJSMap = addPairToJSMap;\n","'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar stringifyPair = require('../stringify/stringifyPair.js');\nvar addPairToJSMap = require('./addPairToJSMap.js');\nvar identity = require('./identity.js');\n\nfunction createPair(key, value, ctx) {\n const k = createNode.createNode(key, undefined, ctx);\n const v = createNode.createNode(value, undefined, ctx);\n return new Pair(k, v);\n}\nclass Pair {\n constructor(key, value = null) {\n Object.defineProperty(this, identity.NODE_TYPE, { value: identity.PAIR });\n this.key = key;\n this.value = value;\n }\n clone(schema) {\n let { key, value } = this;\n if (identity.isNode(key))\n key = key.clone(schema);\n if (identity.isNode(value))\n value = value.clone(schema);\n return new Pair(key, value);\n }\n toJSON(_, ctx) {\n const pair = ctx?.mapAsMap ? new Map() : {};\n return addPairToJSMap.addPairToJSMap(ctx, pair, this);\n }\n toString(ctx, onComment, onChompKeep) {\n return ctx?.doc\n ? stringifyPair.stringifyPair(this, ctx, onComment, onChompKeep)\n : JSON.stringify(this);\n }\n}\n\nexports.Pair = Pair;\nexports.createPair = createPair;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyCollection(collection, ctx, options) {\n const flow = ctx.inFlow ?? collection.flow;\n const stringify = flow ? stringifyFlowCollection : stringifyBlockCollection;\n return stringify(collection, ctx, options);\n}\nfunction stringifyBlockCollection({ comment, items }, ctx, { blockItemPrefix, flowChars, itemIndent, onChompKeep, onComment }) {\n const { indent, options: { commentString } } = ctx;\n const itemCtx = Object.assign({}, ctx, { indent: itemIndent, type: null });\n let chompKeep = false; // flag for the preceding node's status\n const lines = [];\n for (let i = 0; i < items.length; ++i) {\n const item = items[i];\n let comment = null;\n if (identity.isNode(item)) {\n if (!chompKeep && item.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, item.commentBefore, chompKeep);\n if (item.comment)\n comment = item.comment;\n }\n else if (identity.isPair(item)) {\n const ik = identity.isNode(item.key) ? item.key : null;\n if (ik) {\n if (!chompKeep && ik.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, ik.commentBefore, chompKeep);\n }\n }\n chompKeep = false;\n let str = stringify.stringify(item, itemCtx, () => (comment = null), () => (chompKeep = true));\n if (comment)\n str += stringifyComment.lineComment(str, itemIndent, commentString(comment));\n if (chompKeep && comment)\n chompKeep = false;\n lines.push(blockItemPrefix + str);\n }\n let str;\n if (lines.length === 0) {\n str = flowChars.start + flowChars.end;\n }\n else {\n str = lines[0];\n for (let i = 1; i < lines.length; ++i) {\n const line = lines[i];\n str += line ? `\\n${indent}${line}` : '\\n';\n }\n }\n if (comment) {\n str += '\\n' + stringifyComment.indentComment(commentString(comment), indent);\n if (onComment)\n onComment();\n }\n else if (chompKeep && onChompKeep)\n onChompKeep();\n return str;\n}\nfunction stringifyFlowCollection({ items }, ctx, { flowChars, itemIndent }) {\n const { indent, indentStep, flowCollectionPadding: fcPadding, options: { commentString } } = ctx;\n itemIndent += indentStep;\n const itemCtx = Object.assign({}, ctx, {\n indent: itemIndent,\n inFlow: true,\n type: null\n });\n let reqNewline = false;\n let linesAtValue = 0;\n const lines = [];\n for (let i = 0; i < items.length; ++i) {\n const item = items[i];\n let comment = null;\n if (identity.isNode(item)) {\n if (item.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, item.commentBefore, false);\n if (item.comment)\n comment = item.comment;\n }\n else if (identity.isPair(item)) {\n const ik = identity.isNode(item.key) ? item.key : null;\n if (ik) {\n if (ik.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, ik.commentBefore, false);\n if (ik.comment)\n reqNewline = true;\n }\n const iv = identity.isNode(item.value) ? item.value : null;\n if (iv) {\n if (iv.comment)\n comment = iv.comment;\n if (iv.commentBefore)\n reqNewline = true;\n }\n else if (item.value == null && ik?.comment) {\n comment = ik.comment;\n }\n }\n if (comment)\n reqNewline = true;\n let str = stringify.stringify(item, itemCtx, () => (comment = null));\n reqNewline || (reqNewline = lines.length > linesAtValue || str.includes('\\n'));\n if (i < items.length - 1) {\n str += ',';\n }\n else if (ctx.options.trailingComma) {\n if (ctx.options.lineWidth > 0) {\n reqNewline || (reqNewline = lines.reduce((sum, line) => sum + line.length + 2, 2) +\n (str.length + 2) >\n ctx.options.lineWidth);\n }\n if (reqNewline) {\n str += ',';\n }\n }\n if (comment)\n str += stringifyComment.lineComment(str, itemIndent, commentString(comment));\n lines.push(str);\n linesAtValue = lines.length;\n }\n const { start, end } = flowChars;\n if (lines.length === 0) {\n return start + end;\n }\n else {\n if (!reqNewline) {\n const len = lines.reduce((sum, line) => sum + line.length + 2, 2);\n reqNewline = ctx.options.lineWidth > 0 && len > ctx.options.lineWidth;\n }\n if (reqNewline) {\n let str = start;\n for (const line of lines)\n str += line ? `\\n${indentStep}${indent}${line}` : '\\n';\n return `${str}\\n${indent}${end}`;\n }\n else {\n return `${start}${fcPadding}${lines.join(' ')}${fcPadding}${end}`;\n }\n }\n}\nfunction addCommentBefore({ indent, options: { commentString } }, lines, comment, chompKeep) {\n if (comment && chompKeep)\n comment = comment.replace(/^\\n+/, '');\n if (comment) {\n const ic = stringifyComment.indentComment(commentString(comment), indent);\n lines.push(ic.trimStart()); // Avoid double indent on first line\n }\n}\n\nexports.stringifyCollection = stringifyCollection;\n","'use strict';\n\nvar stringifyCollection = require('../stringify/stringifyCollection.js');\nvar addPairToJSMap = require('./addPairToJSMap.js');\nvar Collection = require('./Collection.js');\nvar identity = require('./identity.js');\nvar Pair = require('./Pair.js');\nvar Scalar = require('./Scalar.js');\n\nfunction findPair(items, key) {\n const k = identity.isScalar(key) ? key.value : key;\n for (const it of items) {\n if (identity.isPair(it)) {\n if (it.key === key || it.key === k)\n return it;\n if (identity.isScalar(it.key) && it.key.value === k)\n return it;\n }\n }\n return undefined;\n}\nclass YAMLMap extends Collection.Collection {\n static get tagName() {\n return 'tag:yaml.org,2002:map';\n }\n constructor(schema) {\n super(identity.MAP, schema);\n this.items = [];\n }\n /**\n * A generic collection parsing method that can be extended\n * to other node classes that inherit from YAMLMap\n */\n static from(schema, obj, ctx) {\n const { keepUndefined, replacer } = ctx;\n const map = new this(schema);\n const add = (key, value) => {\n if (typeof replacer === 'function')\n value = replacer.call(obj, key, value);\n else if (Array.isArray(replacer) && !replacer.includes(key))\n return;\n if (value !== undefined || keepUndefined)\n map.items.push(Pair.createPair(key, value, ctx));\n };\n if (obj instanceof Map) {\n for (const [key, value] of obj)\n add(key, value);\n }\n else if (obj && typeof obj === 'object') {\n for (const key of Object.keys(obj))\n add(key, obj[key]);\n }\n if (typeof schema.sortMapEntries === 'function') {\n map.items.sort(schema.sortMapEntries);\n }\n return map;\n }\n /**\n * Adds a value to the collection.\n *\n * @param overwrite - If not set `true`, using a key that is already in the\n * collection will throw. Otherwise, overwrites the previous value.\n */\n add(pair, overwrite) {\n let _pair;\n if (identity.isPair(pair))\n _pair = pair;\n else if (!pair || typeof pair !== 'object' || !('key' in pair)) {\n // In TypeScript, this never happens.\n _pair = new Pair.Pair(pair, pair?.value);\n }\n else\n _pair = new Pair.Pair(pair.key, pair.value);\n const prev = findPair(this.items, _pair.key);\n const sortEntries = this.schema?.sortMapEntries;\n if (prev) {\n if (!overwrite)\n throw new Error(`Key ${_pair.key} already set`);\n // For scalars, keep the old node & its comments and anchors\n if (identity.isScalar(prev.value) && Scalar.isScalarValue(_pair.value))\n prev.value.value = _pair.value;\n else\n prev.value = _pair.value;\n }\n else if (sortEntries) {\n const i = this.items.findIndex(item => sortEntries(_pair, item) < 0);\n if (i === -1)\n this.items.push(_pair);\n else\n this.items.splice(i, 0, _pair);\n }\n else {\n this.items.push(_pair);\n }\n }\n delete(key) {\n const it = findPair(this.items, key);\n if (!it)\n return false;\n const del = this.items.splice(this.items.indexOf(it), 1);\n return del.length > 0;\n }\n get(key, keepScalar) {\n const it = findPair(this.items, key);\n const node = it?.value;\n return (!keepScalar && identity.isScalar(node) ? node.value : node) ?? undefined;\n }\n has(key) {\n return !!findPair(this.items, key);\n }\n set(key, value) {\n this.add(new Pair.Pair(key, value), true);\n }\n /**\n * @param ctx - Conversion context, originally set in Document#toJS()\n * @param {Class} Type - If set, forces the returned collection type\n * @returns Instance of Type, Map, or Object\n */\n toJSON(_, ctx, Type) {\n const map = Type ? new Type() : ctx?.mapAsMap ? new Map() : {};\n if (ctx?.onCreate)\n ctx.onCreate(map);\n for (const item of this.items)\n addPairToJSMap.addPairToJSMap(ctx, map, item);\n return map;\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n for (const item of this.items) {\n if (!identity.isPair(item))\n throw new Error(`Map items must all be pairs; found ${JSON.stringify(item)} instead`);\n }\n if (!ctx.allNullValues && this.hasAllNullValues(false))\n ctx = Object.assign({}, ctx, { allNullValues: true });\n return stringifyCollection.stringifyCollection(this, ctx, {\n blockItemPrefix: '',\n flowChars: { start: '{', end: '}' },\n itemIndent: ctx.indent || '',\n onChompKeep,\n onComment\n });\n }\n}\n\nexports.YAMLMap = YAMLMap;\nexports.findPair = findPair;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\n\nconst map = {\n collection: 'map',\n default: true,\n nodeClass: YAMLMap.YAMLMap,\n tag: 'tag:yaml.org,2002:map',\n resolve(map, onError) {\n if (!identity.isMap(map))\n onError('Expected a mapping for this tag');\n return map;\n },\n createNode: (schema, obj, ctx) => YAMLMap.YAMLMap.from(schema, obj, ctx)\n};\n\nexports.map = map;\n","'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar stringifyCollection = require('../stringify/stringifyCollection.js');\nvar Collection = require('./Collection.js');\nvar identity = require('./identity.js');\nvar Scalar = require('./Scalar.js');\nvar toJS = require('./toJS.js');\n\nclass YAMLSeq extends Collection.Collection {\n static get tagName() {\n return 'tag:yaml.org,2002:seq';\n }\n constructor(schema) {\n super(identity.SEQ, schema);\n this.items = [];\n }\n add(value) {\n this.items.push(value);\n }\n /**\n * Removes a value from the collection.\n *\n * `key` must contain a representation of an integer for this to succeed.\n * It may be wrapped in a `Scalar`.\n *\n * @returns `true` if the item was found and removed.\n */\n delete(key) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n return false;\n const del = this.items.splice(idx, 1);\n return del.length > 0;\n }\n get(key, keepScalar) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n return undefined;\n const it = this.items[idx];\n return !keepScalar && identity.isScalar(it) ? it.value : it;\n }\n /**\n * Checks if the collection includes a value with the key `key`.\n *\n * `key` must contain a representation of an integer for this to succeed.\n * It may be wrapped in a `Scalar`.\n */\n has(key) {\n const idx = asItemIndex(key);\n return typeof idx === 'number' && idx < this.items.length;\n }\n /**\n * Sets a value in this collection. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n *\n * If `key` does not contain a representation of an integer, this will throw.\n * It may be wrapped in a `Scalar`.\n */\n set(key, value) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n throw new Error(`Expected a valid index, not ${key}.`);\n const prev = this.items[idx];\n if (identity.isScalar(prev) && Scalar.isScalarValue(value))\n prev.value = value;\n else\n this.items[idx] = value;\n }\n toJSON(_, ctx) {\n const seq = [];\n if (ctx?.onCreate)\n ctx.onCreate(seq);\n let i = 0;\n for (const item of this.items)\n seq.push(toJS.toJS(item, String(i++), ctx));\n return seq;\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n return stringifyCollection.stringifyCollection(this, ctx, {\n blockItemPrefix: '- ',\n flowChars: { start: '[', end: ']' },\n itemIndent: (ctx.indent || '') + ' ',\n onChompKeep,\n onComment\n });\n }\n static from(schema, obj, ctx) {\n const { replacer } = ctx;\n const seq = new this(schema);\n if (obj && Symbol.iterator in Object(obj)) {\n let i = 0;\n for (let it of obj) {\n if (typeof replacer === 'function') {\n const key = obj instanceof Set ? it : String(i++);\n it = replacer.call(obj, key, it);\n }\n seq.items.push(createNode.createNode(it, undefined, ctx));\n }\n }\n return seq;\n }\n}\nfunction asItemIndex(key) {\n let idx = identity.isScalar(key) ? key.value : key;\n if (idx && typeof idx === 'string')\n idx = Number(idx);\n return typeof idx === 'number' && Number.isInteger(idx) && idx >= 0\n ? idx\n : null;\n}\n\nexports.YAMLSeq = YAMLSeq;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\n\nconst seq = {\n collection: 'seq',\n default: true,\n nodeClass: YAMLSeq.YAMLSeq,\n tag: 'tag:yaml.org,2002:seq',\n resolve(seq, onError) {\n if (!identity.isSeq(seq))\n onError('Expected a sequence for this tag');\n return seq;\n },\n createNode: (schema, obj, ctx) => YAMLSeq.YAMLSeq.from(schema, obj, ctx)\n};\n\nexports.seq = seq;\n","'use strict';\n\nvar stringifyString = require('../../stringify/stringifyString.js');\n\nconst string = {\n identify: value => typeof value === 'string',\n default: true,\n tag: 'tag:yaml.org,2002:str',\n resolve: str => str,\n stringify(item, ctx, onComment, onChompKeep) {\n ctx = Object.assign({ actualString: true }, ctx);\n return stringifyString.stringifyString(item, ctx, onComment, onChompKeep);\n }\n};\n\nexports.string = string;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nconst nullTag = {\n identify: value => value == null,\n createNode: () => new Scalar.Scalar(null),\n default: true,\n tag: 'tag:yaml.org,2002:null',\n test: /^(?:~|[Nn]ull|NULL)?$/,\n resolve: () => new Scalar.Scalar(null),\n stringify: ({ source }, ctx) => typeof source === 'string' && nullTag.test.test(source)\n ? source\n : ctx.options.nullStr\n};\n\nexports.nullTag = nullTag;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nconst boolTag = {\n identify: value => typeof value === 'boolean',\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,\n resolve: str => new Scalar.Scalar(str[0] === 't' || str[0] === 'T'),\n stringify({ source, value }, ctx) {\n if (source && boolTag.test.test(source)) {\n const sv = source[0] === 't' || source[0] === 'T';\n if (value === sv)\n return source;\n }\n return value ? ctx.options.trueStr : ctx.options.falseStr;\n }\n};\n\nexports.boolTag = boolTag;\n","'use strict';\n\nfunction stringifyNumber({ format, minFractionDigits, tag, value }) {\n if (typeof value === 'bigint')\n return String(value);\n const num = typeof value === 'number' ? value : Number(value);\n if (!isFinite(num))\n return isNaN(num) ? '.nan' : num < 0 ? '-.inf' : '.inf';\n let n = Object.is(value, -0) ? '-0' : JSON.stringify(value);\n if (!format &&\n minFractionDigits &&\n (!tag || tag === 'tag:yaml.org,2002:float') &&\n /^\\d/.test(n)) {\n let i = n.indexOf('.');\n if (i < 0) {\n i = n.length;\n n += '.';\n }\n let d = minFractionDigits - (n.length - i - 1);\n while (d-- > 0)\n n += '0';\n }\n return n;\n}\n\nexports.stringifyNumber = stringifyNumber;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst floatNaN = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,\n resolve: str => str.slice(-3).toLowerCase() === 'nan'\n ? NaN\n : str[0] === '-'\n ? Number.NEGATIVE_INFINITY\n : Number.POSITIVE_INFINITY,\n stringify: stringifyNumber.stringifyNumber\n};\nconst floatExp = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'EXP',\n test: /^[-+]?(?:\\.[0-9]+|[0-9]+(?:\\.[0-9]*)?)[eE][-+]?[0-9]+$/,\n resolve: str => parseFloat(str),\n stringify(node) {\n const num = Number(node.value);\n return isFinite(num) ? num.toExponential() : stringifyNumber.stringifyNumber(node);\n }\n};\nconst float = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^[-+]?(?:\\.[0-9]+|[0-9]+\\.[0-9]*)$/,\n resolve(str) {\n const node = new Scalar.Scalar(parseFloat(str));\n const dot = str.indexOf('.');\n if (dot !== -1 && str[str.length - 1] === '0')\n node.minFractionDigits = str.length - dot - 1;\n return node;\n },\n stringify: stringifyNumber.stringifyNumber\n};\n\nexports.float = float;\nexports.floatExp = floatExp;\nexports.floatNaN = floatNaN;\n","'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);\nconst intResolve = (str, offset, radix, { intAsBigInt }) => (intAsBigInt ? BigInt(str) : parseInt(str.substring(offset), radix));\nfunction intStringify(node, radix, prefix) {\n const { value } = node;\n if (intIdentify(value) && value >= 0)\n return prefix + value.toString(radix);\n return stringifyNumber.stringifyNumber(node);\n}\nconst intOct = {\n identify: value => intIdentify(value) && value >= 0,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'OCT',\n test: /^0o[0-7]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 8, opt),\n stringify: node => intStringify(node, 8, '0o')\n};\nconst int = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^[-+]?[0-9]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),\n stringify: stringifyNumber.stringifyNumber\n};\nconst intHex = {\n identify: value => intIdentify(value) && value >= 0,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'HEX',\n test: /^0x[0-9a-fA-F]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),\n stringify: node => intStringify(node, 16, '0x')\n};\n\nexports.int = int;\nexports.intHex = intHex;\nexports.intOct = intOct;\n","'use strict';\n\nvar map = require('../common/map.js');\nvar _null = require('../common/null.js');\nvar seq = require('../common/seq.js');\nvar string = require('../common/string.js');\nvar bool = require('./bool.js');\nvar float = require('./float.js');\nvar int = require('./int.js');\n\nconst schema = [\n map.map,\n seq.seq,\n string.string,\n _null.nullTag,\n bool.boolTag,\n int.intOct,\n int.int,\n int.intHex,\n float.floatNaN,\n float.floatExp,\n float.float\n];\n\nexports.schema = schema;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar map = require('../common/map.js');\nvar seq = require('../common/seq.js');\n\nfunction intIdentify(value) {\n return typeof value === 'bigint' || Number.isInteger(value);\n}\nconst stringifyJSON = ({ value }) => JSON.stringify(value);\nconst jsonScalars = [\n {\n identify: value => typeof value === 'string',\n default: true,\n tag: 'tag:yaml.org,2002:str',\n resolve: str => str,\n stringify: stringifyJSON\n },\n {\n identify: value => value == null,\n createNode: () => new Scalar.Scalar(null),\n default: true,\n tag: 'tag:yaml.org,2002:null',\n test: /^null$/,\n resolve: () => null,\n stringify: stringifyJSON\n },\n {\n identify: value => typeof value === 'boolean',\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^true$|^false$/,\n resolve: str => str === 'true',\n stringify: stringifyJSON\n },\n {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^-?(?:0|[1-9][0-9]*)$/,\n resolve: (str, _onError, { intAsBigInt }) => intAsBigInt ? BigInt(str) : parseInt(str, 10),\n stringify: ({ value }) => intIdentify(value) ? value.toString() : JSON.stringify(value)\n },\n {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,\n resolve: str => parseFloat(str),\n stringify: stringifyJSON\n }\n];\nconst jsonError = {\n default: true,\n tag: '',\n test: /^/,\n resolve(str, onError) {\n onError(`Unresolved plain scalar ${JSON.stringify(str)}`);\n return str;\n }\n};\nconst schema = [map.map, seq.seq].concat(jsonScalars, jsonError);\n\nexports.schema = schema;\n","'use strict';\n\nvar node_buffer = require('buffer');\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyString = require('../../stringify/stringifyString.js');\n\nconst binary = {\n identify: value => value instanceof Uint8Array, // Buffer inherits from Uint8Array\n default: false,\n tag: 'tag:yaml.org,2002:binary',\n /**\n * Returns a Buffer in node and an Uint8Array in browsers\n *\n * To use the resulting buffer as an image, you'll want to do something like:\n *\n * const blob = new Blob([buffer], { type: 'image/jpeg' })\n * document.querySelector('#photo').src = URL.createObjectURL(blob)\n */\n resolve(src, onError) {\n if (typeof node_buffer.Buffer === 'function') {\n return node_buffer.Buffer.from(src, 'base64');\n }\n else if (typeof atob === 'function') {\n // On IE 11, atob() can't handle newlines\n const str = atob(src.replace(/[\\n\\r]/g, ''));\n const buffer = new Uint8Array(str.length);\n for (let i = 0; i < str.length; ++i)\n buffer[i] = str.charCodeAt(i);\n return buffer;\n }\n else {\n onError('This environment does not support reading binary tags; either Buffer or atob is required');\n return src;\n }\n },\n stringify({ comment, type, value }, ctx, onComment, onChompKeep) {\n if (!value)\n return '';\n const buf = value; // checked earlier by binary.identify()\n let str;\n if (typeof node_buffer.Buffer === 'function') {\n str =\n buf instanceof node_buffer.Buffer\n ? buf.toString('base64')\n : node_buffer.Buffer.from(buf.buffer).toString('base64');\n }\n else if (typeof btoa === 'function') {\n let s = '';\n for (let i = 0; i < buf.length; ++i)\n s += String.fromCharCode(buf[i]);\n str = btoa(s);\n }\n else {\n throw new Error('This environment does not support writing binary tags; either Buffer or btoa is required');\n }\n type ?? (type = Scalar.Scalar.BLOCK_LITERAL);\n if (type !== Scalar.Scalar.QUOTE_DOUBLE) {\n const lineWidth = Math.max(ctx.options.lineWidth - ctx.indent.length, ctx.options.minContentWidth);\n const n = Math.ceil(str.length / lineWidth);\n const lines = new Array(n);\n for (let i = 0, o = 0; i < n; ++i, o += lineWidth) {\n lines[i] = str.substr(o, lineWidth);\n }\n str = lines.join(type === Scalar.Scalar.BLOCK_LITERAL ? '\\n' : ' ');\n }\n return stringifyString.stringifyString({ comment, type, value: str }, ctx, onComment, onChompKeep);\n }\n};\n\nexports.binary = binary;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Pair = require('../../nodes/Pair.js');\nvar Scalar = require('../../nodes/Scalar.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\n\nfunction resolvePairs(seq, onError) {\n if (identity.isSeq(seq)) {\n for (let i = 0; i < seq.items.length; ++i) {\n let item = seq.items[i];\n if (identity.isPair(item))\n continue;\n else if (identity.isMap(item)) {\n if (item.items.length > 1)\n onError('Each pair must have its own sequence indicator');\n const pair = item.items[0] || new Pair.Pair(new Scalar.Scalar(null));\n if (item.commentBefore)\n pair.key.commentBefore = pair.key.commentBefore\n ? `${item.commentBefore}\\n${pair.key.commentBefore}`\n : item.commentBefore;\n if (item.comment) {\n const cn = pair.value ?? pair.key;\n cn.comment = cn.comment\n ? `${item.comment}\\n${cn.comment}`\n : item.comment;\n }\n item = pair;\n }\n seq.items[i] = identity.isPair(item) ? item : new Pair.Pair(item);\n }\n }\n else\n onError('Expected a sequence for this tag');\n return seq;\n}\nfunction createPairs(schema, iterable, ctx) {\n const { replacer } = ctx;\n const pairs = new YAMLSeq.YAMLSeq(schema);\n pairs.tag = 'tag:yaml.org,2002:pairs';\n let i = 0;\n if (iterable && Symbol.iterator in Object(iterable))\n for (let it of iterable) {\n if (typeof replacer === 'function')\n it = replacer.call(iterable, String(i++), it);\n let key, value;\n if (Array.isArray(it)) {\n if (it.length === 2) {\n key = it[0];\n value = it[1];\n }\n else\n throw new TypeError(`Expected [key, value] tuple: ${it}`);\n }\n else if (it && it instanceof Object) {\n const keys = Object.keys(it);\n if (keys.length === 1) {\n key = keys[0];\n value = it[key];\n }\n else {\n throw new TypeError(`Expected tuple with one key, not ${keys.length} keys`);\n }\n }\n else {\n key = it;\n }\n pairs.items.push(Pair.createPair(key, value, ctx));\n }\n return pairs;\n}\nconst pairs = {\n collection: 'seq',\n default: false,\n tag: 'tag:yaml.org,2002:pairs',\n resolve: resolvePairs,\n createNode: createPairs\n};\n\nexports.createPairs = createPairs;\nexports.pairs = pairs;\nexports.resolvePairs = resolvePairs;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar toJS = require('../../nodes/toJS.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\nvar pairs = require('./pairs.js');\n\nclass YAMLOMap extends YAMLSeq.YAMLSeq {\n constructor() {\n super();\n this.add = YAMLMap.YAMLMap.prototype.add.bind(this);\n this.delete = YAMLMap.YAMLMap.prototype.delete.bind(this);\n this.get = YAMLMap.YAMLMap.prototype.get.bind(this);\n this.has = YAMLMap.YAMLMap.prototype.has.bind(this);\n this.set = YAMLMap.YAMLMap.prototype.set.bind(this);\n this.tag = YAMLOMap.tag;\n }\n /**\n * If `ctx` is given, the return type is actually `Map<unknown, unknown>`,\n * but TypeScript won't allow widening the signature of a child method.\n */\n toJSON(_, ctx) {\n if (!ctx)\n return super.toJSON(_);\n const map = new Map();\n if (ctx?.onCreate)\n ctx.onCreate(map);\n for (const pair of this.items) {\n let key, value;\n if (identity.isPair(pair)) {\n key = toJS.toJS(pair.key, '', ctx);\n value = toJS.toJS(pair.value, key, ctx);\n }\n else {\n key = toJS.toJS(pair, '', ctx);\n }\n if (map.has(key))\n throw new Error('Ordered maps must not include duplicate keys');\n map.set(key, value);\n }\n return map;\n }\n static from(schema, iterable, ctx) {\n const pairs$1 = pairs.createPairs(schema, iterable, ctx);\n const omap = new this();\n omap.items = pairs$1.items;\n return omap;\n }\n}\nYAMLOMap.tag = 'tag:yaml.org,2002:omap';\nconst omap = {\n collection: 'seq',\n identify: value => value instanceof Map,\n nodeClass: YAMLOMap,\n default: false,\n tag: 'tag:yaml.org,2002:omap',\n resolve(seq, onError) {\n const pairs$1 = pairs.resolvePairs(seq, onError);\n const seenKeys = [];\n for (const { key } of pairs$1.items) {\n if (identity.isScalar(key)) {\n if (seenKeys.includes(key.value)) {\n onError(`Ordered maps must not include duplicate keys: ${key.value}`);\n }\n else {\n seenKeys.push(key.value);\n }\n }\n }\n return Object.assign(new YAMLOMap(), pairs$1);\n },\n createNode: (schema, iterable, ctx) => YAMLOMap.from(schema, iterable, ctx)\n};\n\nexports.YAMLOMap = YAMLOMap;\nexports.omap = omap;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nfunction boolStringify({ value, source }, ctx) {\n const boolObj = value ? trueTag : falseTag;\n if (source && boolObj.test.test(source))\n return source;\n return value ? ctx.options.trueStr : ctx.options.falseStr;\n}\nconst trueTag = {\n identify: value => value === true,\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,\n resolve: () => new Scalar.Scalar(true),\n stringify: boolStringify\n};\nconst falseTag = {\n identify: value => value === false,\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,\n resolve: () => new Scalar.Scalar(false),\n stringify: boolStringify\n};\n\nexports.falseTag = falseTag;\nexports.trueTag = trueTag;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst floatNaN = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,\n resolve: (str) => str.slice(-3).toLowerCase() === 'nan'\n ? NaN\n : str[0] === '-'\n ? Number.NEGATIVE_INFINITY\n : Number.POSITIVE_INFINITY,\n stringify: stringifyNumber.stringifyNumber\n};\nconst floatExp = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'EXP',\n test: /^[-+]?(?:[0-9][0-9_]*)?(?:\\.[0-9_]*)?[eE][-+]?[0-9]+$/,\n resolve: (str) => parseFloat(str.replace(/_/g, '')),\n stringify(node) {\n const num = Number(node.value);\n return isFinite(num) ? num.toExponential() : stringifyNumber.stringifyNumber(node);\n }\n};\nconst float = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^[-+]?(?:[0-9][0-9_]*)?\\.[0-9_]*$/,\n resolve(str) {\n const node = new Scalar.Scalar(parseFloat(str.replace(/_/g, '')));\n const dot = str.indexOf('.');\n if (dot !== -1) {\n const f = str.substring(dot + 1).replace(/_/g, '');\n if (f[f.length - 1] === '0')\n node.minFractionDigits = f.length;\n }\n return node;\n },\n stringify: stringifyNumber.stringifyNumber\n};\n\nexports.float = float;\nexports.floatExp = floatExp;\nexports.floatNaN = floatNaN;\n","'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);\nfunction intResolve(str, offset, radix, { intAsBigInt }) {\n const sign = str[0];\n if (sign === '-' || sign === '+')\n offset += 1;\n str = str.substring(offset).replace(/_/g, '');\n if (intAsBigInt) {\n switch (radix) {\n case 2:\n str = `0b${str}`;\n break;\n case 8:\n str = `0o${str}`;\n break;\n case 16:\n str = `0x${str}`;\n break;\n }\n const n = BigInt(str);\n return sign === '-' ? BigInt(-1) * n : n;\n }\n const n = parseInt(str, radix);\n return sign === '-' ? -1 * n : n;\n}\nfunction intStringify(node, radix, prefix) {\n const { value } = node;\n if (intIdentify(value)) {\n const str = value.toString(radix);\n return value < 0 ? '-' + prefix + str.substr(1) : prefix + str;\n }\n return stringifyNumber.stringifyNumber(node);\n}\nconst intBin = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'BIN',\n test: /^[-+]?0b[0-1_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 2, opt),\n stringify: node => intStringify(node, 2, '0b')\n};\nconst intOct = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'OCT',\n test: /^[-+]?0[0-7_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 1, 8, opt),\n stringify: node => intStringify(node, 8, '0')\n};\nconst int = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^[-+]?[0-9][0-9_]*$/,\n resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),\n stringify: stringifyNumber.stringifyNumber\n};\nconst intHex = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'HEX',\n test: /^[-+]?0x[0-9a-fA-F_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),\n stringify: node => intStringify(node, 16, '0x')\n};\n\nexports.int = int;\nexports.intBin = intBin;\nexports.intHex = intHex;\nexports.intOct = intOct;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Pair = require('../../nodes/Pair.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\n\nclass YAMLSet extends YAMLMap.YAMLMap {\n constructor(schema) {\n super(schema);\n this.tag = YAMLSet.tag;\n }\n add(key) {\n let pair;\n if (identity.isPair(key))\n pair = key;\n else if (key &&\n typeof key === 'object' &&\n 'key' in key &&\n 'value' in key &&\n key.value === null)\n pair = new Pair.Pair(key.key, null);\n else\n pair = new Pair.Pair(key, null);\n const prev = YAMLMap.findPair(this.items, pair.key);\n if (!prev)\n this.items.push(pair);\n }\n /**\n * If `keepPair` is `true`, returns the Pair matching `key`.\n * Otherwise, returns the value of that Pair's key.\n */\n get(key, keepPair) {\n const pair = YAMLMap.findPair(this.items, key);\n return !keepPair && identity.isPair(pair)\n ? identity.isScalar(pair.key)\n ? pair.key.value\n : pair.key\n : pair;\n }\n set(key, value) {\n if (typeof value !== 'boolean')\n throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof value}`);\n const prev = YAMLMap.findPair(this.items, key);\n if (prev && !value) {\n this.items.splice(this.items.indexOf(prev), 1);\n }\n else if (!prev && value) {\n this.items.push(new Pair.Pair(key));\n }\n }\n toJSON(_, ctx) {\n return super.toJSON(_, ctx, Set);\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n if (this.hasAllNullValues(true))\n return super.toString(Object.assign({}, ctx, { allNullValues: true }), onComment, onChompKeep);\n else\n throw new Error('Set items must all have null values');\n }\n static from(schema, iterable, ctx) {\n const { replacer } = ctx;\n const set = new this(schema);\n if (iterable && Symbol.iterator in Object(iterable))\n for (let value of iterable) {\n if (typeof replacer === 'function')\n value = replacer.call(iterable, value, value);\n set.items.push(Pair.createPair(value, null, ctx));\n }\n return set;\n }\n}\nYAMLSet.tag = 'tag:yaml.org,2002:set';\nconst set = {\n collection: 'map',\n identify: value => value instanceof Set,\n nodeClass: YAMLSet,\n default: false,\n tag: 'tag:yaml.org,2002:set',\n createNode: (schema, iterable, ctx) => YAMLSet.from(schema, iterable, ctx),\n resolve(map, onError) {\n if (identity.isMap(map)) {\n if (map.hasAllNullValues(true))\n return Object.assign(new YAMLSet(), map);\n else\n onError('Set items must all have null values');\n }\n else\n onError('Expected a mapping for this tag');\n return map;\n }\n};\n\nexports.YAMLSet = YAMLSet;\nexports.set = set;\n","'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\n/** Internal types handle bigint as number, because TS can't figure it out. */\nfunction parseSexagesimal(str, asBigInt) {\n const sign = str[0];\n const parts = sign === '-' || sign === '+' ? str.substring(1) : str;\n const num = (n) => asBigInt ? BigInt(n) : Number(n);\n const res = parts\n .replace(/_/g, '')\n .split(':')\n .reduce((res, p) => res * num(60) + num(p), num(0));\n return (sign === '-' ? num(-1) * res : res);\n}\n/**\n * hhhh:mm:ss.sss\n *\n * Internal types handle bigint as number, because TS can't figure it out.\n */\nfunction stringifySexagesimal(node) {\n let { value } = node;\n let num = (n) => n;\n if (typeof value === 'bigint')\n num = n => BigInt(n);\n else if (isNaN(value) || !isFinite(value))\n return stringifyNumber.stringifyNumber(node);\n let sign = '';\n if (value < 0) {\n sign = '-';\n value *= num(-1);\n }\n const _60 = num(60);\n const parts = [value % _60]; // seconds, including ms\n if (value < 60) {\n parts.unshift(0); // at least one : is required\n }\n else {\n value = (value - parts[0]) / _60;\n parts.unshift(value % _60); // minutes\n if (value >= 60) {\n value = (value - parts[0]) / _60;\n parts.unshift(value); // hours\n }\n }\n return (sign +\n parts\n .map(n => String(n).padStart(2, '0'))\n .join(':')\n .replace(/000000\\d*$/, '') // % 60 may introduce error\n );\n}\nconst intTime = {\n identify: value => typeof value === 'bigint' || Number.isInteger(value),\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'TIME',\n test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,\n resolve: (str, _onError, { intAsBigInt }) => parseSexagesimal(str, intAsBigInt),\n stringify: stringifySexagesimal\n};\nconst floatTime = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'TIME',\n test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*$/,\n resolve: str => parseSexagesimal(str, false),\n stringify: stringifySexagesimal\n};\nconst timestamp = {\n identify: value => value instanceof Date,\n default: true,\n tag: 'tag:yaml.org,2002:timestamp',\n // If the time zone is omitted, the timestamp is assumed to be specified in UTC. The time part\n // may be omitted altogether, resulting in a date format. In such a case, the time part is\n // assumed to be 00:00:00Z (start of day, UTC).\n test: RegExp('^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})' + // YYYY-Mm-Dd\n '(?:' + // time is optional\n '(?:t|T|[ \\\\t]+)' + // t | T | whitespace\n '([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\\\.[0-9]+)?)' + // Hh:Mm:Ss(.ss)?\n '(?:[ \\\\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?' + // Z | +5 | -03:30\n ')?$'),\n resolve(str) {\n const match = str.match(timestamp.test);\n if (!match)\n throw new Error('!!timestamp expects a date, starting with yyyy-mm-dd');\n const [, year, month, day, hour, minute, second] = match.map(Number);\n const millisec = match[7] ? Number((match[7] + '00').substr(1, 3)) : 0;\n let date = Date.UTC(year, month - 1, day, hour || 0, minute || 0, second || 0, millisec);\n const tz = match[8];\n if (tz && tz !== 'Z') {\n let d = parseSexagesimal(tz, false);\n if (Math.abs(d) < 30)\n d *= 60;\n date -= 60000 * d;\n }\n return new Date(date);\n },\n stringify: ({ value }) => value?.toISOString().replace(/(T00:00:00)?\\.000Z$/, '') ?? ''\n};\n\nexports.floatTime = floatTime;\nexports.intTime = intTime;\nexports.timestamp = timestamp;\n","'use strict';\n\nvar map = require('../common/map.js');\nvar _null = require('../common/null.js');\nvar seq = require('../common/seq.js');\nvar string = require('../common/string.js');\nvar binary = require('./binary.js');\nvar bool = require('./bool.js');\nvar float = require('./float.js');\nvar int = require('./int.js');\nvar merge = require('./merge.js');\nvar omap = require('./omap.js');\nvar pairs = require('./pairs.js');\nvar set = require('./set.js');\nvar timestamp = require('./timestamp.js');\n\nconst schema = [\n map.map,\n seq.seq,\n string.string,\n _null.nullTag,\n bool.trueTag,\n bool.falseTag,\n int.intBin,\n int.intOct,\n int.int,\n int.intHex,\n float.floatNaN,\n float.floatExp,\n float.float,\n binary.binary,\n merge.merge,\n omap.omap,\n pairs.pairs,\n set.set,\n timestamp.intTime,\n timestamp.floatTime,\n timestamp.timestamp\n];\n\nexports.schema = schema;\n","'use strict';\n\nvar map = require('./common/map.js');\nvar _null = require('./common/null.js');\nvar seq = require('./common/seq.js');\nvar string = require('./common/string.js');\nvar bool = require('./core/bool.js');\nvar float = require('./core/float.js');\nvar int = require('./core/int.js');\nvar schema = require('./core/schema.js');\nvar schema$1 = require('./json/schema.js');\nvar binary = require('./yaml-1.1/binary.js');\nvar merge = require('./yaml-1.1/merge.js');\nvar omap = require('./yaml-1.1/omap.js');\nvar pairs = require('./yaml-1.1/pairs.js');\nvar schema$2 = require('./yaml-1.1/schema.js');\nvar set = require('./yaml-1.1/set.js');\nvar timestamp = require('./yaml-1.1/timestamp.js');\n\nconst schemas = new Map([\n ['core', schema.schema],\n ['failsafe', [map.map, seq.seq, string.string]],\n ['json', schema$1.schema],\n ['yaml11', schema$2.schema],\n ['yaml-1.1', schema$2.schema]\n]);\nconst tagsByName = {\n binary: binary.binary,\n bool: bool.boolTag,\n float: float.float,\n floatExp: float.floatExp,\n floatNaN: float.floatNaN,\n floatTime: timestamp.floatTime,\n int: int.int,\n intHex: int.intHex,\n intOct: int.intOct,\n intTime: timestamp.intTime,\n map: map.map,\n merge: merge.merge,\n null: _null.nullTag,\n omap: omap.omap,\n pairs: pairs.pairs,\n seq: seq.seq,\n set: set.set,\n timestamp: timestamp.timestamp\n};\nconst coreKnownTags = {\n 'tag:yaml.org,2002:binary': binary.binary,\n 'tag:yaml.org,2002:merge': merge.merge,\n 'tag:yaml.org,2002:omap': omap.omap,\n 'tag:yaml.org,2002:pairs': pairs.pairs,\n 'tag:yaml.org,2002:set': set.set,\n 'tag:yaml.org,2002:timestamp': timestamp.timestamp\n};\nfunction getTags(customTags, schemaName, addMergeTag) {\n const schemaTags = schemas.get(schemaName);\n if (schemaTags && !customTags) {\n return addMergeTag && !schemaTags.includes(merge.merge)\n ? schemaTags.concat(merge.merge)\n : schemaTags.slice();\n }\n let tags = schemaTags;\n if (!tags) {\n if (Array.isArray(customTags))\n tags = [];\n else {\n const keys = Array.from(schemas.keys())\n .filter(key => key !== 'yaml11')\n .map(key => JSON.stringify(key))\n .join(', ');\n throw new Error(`Unknown schema \"${schemaName}\"; use one of ${keys} or define customTags array`);\n }\n }\n if (Array.isArray(customTags)) {\n for (const tag of customTags)\n tags = tags.concat(tag);\n }\n else if (typeof customTags === 'function') {\n tags = customTags(tags.slice());\n }\n if (addMergeTag)\n tags = tags.concat(merge.merge);\n return tags.reduce((tags, tag) => {\n const tagObj = typeof tag === 'string' ? tagsByName[tag] : tag;\n if (!tagObj) {\n const tagName = JSON.stringify(tag);\n const keys = Object.keys(tagsByName)\n .map(key => JSON.stringify(key))\n .join(', ');\n throw new Error(`Unknown custom tag ${tagName}; use one of ${keys}`);\n }\n if (!tags.includes(tagObj))\n tags.push(tagObj);\n return tags;\n }, []);\n}\n\nexports.coreKnownTags = coreKnownTags;\nexports.getTags = getTags;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar map = require('./common/map.js');\nvar seq = require('./common/seq.js');\nvar string = require('./common/string.js');\nvar tags = require('./tags.js');\n\nconst sortMapEntriesByKey = (a, b) => a.key < b.key ? -1 : a.key > b.key ? 1 : 0;\nclass Schema {\n constructor({ compat, customTags, merge, resolveKnownTags, schema, sortMapEntries, toStringDefaults }) {\n this.compat = Array.isArray(compat)\n ? tags.getTags(compat, 'compat')\n : compat\n ? tags.getTags(null, compat)\n : null;\n this.name = (typeof schema === 'string' && schema) || 'core';\n this.knownTags = resolveKnownTags ? tags.coreKnownTags : {};\n this.tags = tags.getTags(customTags, this.name, merge);\n this.toStringOptions = toStringDefaults ?? null;\n Object.defineProperty(this, identity.MAP, { value: map.map });\n Object.defineProperty(this, identity.SCALAR, { value: string.string });\n Object.defineProperty(this, identity.SEQ, { value: seq.seq });\n // Used by createMap()\n this.sortMapEntries =\n typeof sortMapEntries === 'function'\n ? sortMapEntries\n : sortMapEntries === true\n ? sortMapEntriesByKey\n : null;\n }\n clone() {\n const copy = Object.create(Schema.prototype, Object.getOwnPropertyDescriptors(this));\n copy.tags = this.tags.slice();\n return copy;\n }\n}\n\nexports.Schema = Schema;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyDocument(doc, options) {\n const lines = [];\n let hasDirectives = options.directives === true;\n if (options.directives !== false && doc.directives) {\n const dir = doc.directives.toString(doc);\n if (dir) {\n lines.push(dir);\n hasDirectives = true;\n }\n else if (doc.directives.docStart)\n hasDirectives = true;\n }\n if (hasDirectives)\n lines.push('---');\n const ctx = stringify.createStringifyContext(doc, options);\n const { commentString } = ctx.options;\n if (doc.commentBefore) {\n if (lines.length !== 1)\n lines.unshift('');\n const cs = commentString(doc.commentBefore);\n lines.unshift(stringifyComment.indentComment(cs, ''));\n }\n let chompKeep = false;\n let contentComment = null;\n if (doc.contents) {\n if (identity.isNode(doc.contents)) {\n if (doc.contents.spaceBefore && hasDirectives)\n lines.push('');\n if (doc.contents.commentBefore) {\n const cs = commentString(doc.contents.commentBefore);\n lines.push(stringifyComment.indentComment(cs, ''));\n }\n // top-level block scalars need to be indented if followed by a comment\n ctx.forceBlockIndent = !!doc.comment;\n contentComment = doc.contents.comment;\n }\n const onChompKeep = contentComment ? undefined : () => (chompKeep = true);\n let body = stringify.stringify(doc.contents, ctx, () => (contentComment = null), onChompKeep);\n if (contentComment)\n body += stringifyComment.lineComment(body, '', commentString(contentComment));\n if ((body[0] === '|' || body[0] === '>') &&\n lines[lines.length - 1] === '---') {\n // Top-level block scalars with a preceding doc marker ought to use the\n // same line for their header.\n lines[lines.length - 1] = `--- ${body}`;\n }\n else\n lines.push(body);\n }\n else {\n lines.push(stringify.stringify(doc.contents, ctx));\n }\n if (doc.directives?.docEnd) {\n if (doc.comment) {\n const cs = commentString(doc.comment);\n if (cs.includes('\\n')) {\n lines.push('...');\n lines.push(stringifyComment.indentComment(cs, ''));\n }\n else {\n lines.push(`... ${cs}`);\n }\n }\n else {\n lines.push('...');\n }\n }\n else {\n let dc = doc.comment;\n if (dc && chompKeep)\n dc = dc.replace(/^\\n+/, '');\n if (dc) {\n if ((!chompKeep || contentComment) && lines[lines.length - 1] !== '')\n lines.push('');\n lines.push(stringifyComment.indentComment(commentString(dc), ''));\n }\n }\n return lines.join('\\n') + '\\n';\n}\n\nexports.stringifyDocument = stringifyDocument;\n","'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar Collection = require('../nodes/Collection.js');\nvar identity = require('../nodes/identity.js');\nvar Pair = require('../nodes/Pair.js');\nvar toJS = require('../nodes/toJS.js');\nvar Schema = require('../schema/Schema.js');\nvar stringifyDocument = require('../stringify/stringifyDocument.js');\nvar anchors = require('./anchors.js');\nvar applyReviver = require('./applyReviver.js');\nvar createNode = require('./createNode.js');\nvar directives = require('./directives.js');\n\nclass Document {\n constructor(value, replacer, options) {\n /** A comment before this Document */\n this.commentBefore = null;\n /** A comment immediately after this Document */\n this.comment = null;\n /** Errors encountered during parsing. */\n this.errors = [];\n /** Warnings encountered during parsing. */\n this.warnings = [];\n Object.defineProperty(this, identity.NODE_TYPE, { value: identity.DOC });\n let _replacer = null;\n if (typeof replacer === 'function' || Array.isArray(replacer)) {\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n replacer = undefined;\n }\n const opt = Object.assign({\n intAsBigInt: false,\n keepSourceTokens: false,\n logLevel: 'warn',\n prettyErrors: true,\n strict: true,\n stringKeys: false,\n uniqueKeys: true,\n version: '1.2'\n }, options);\n this.options = opt;\n let { version } = opt;\n if (options?._directives) {\n this.directives = options._directives.atDocument();\n if (this.directives.yaml.explicit)\n version = this.directives.yaml.version;\n }\n else\n this.directives = new directives.Directives({ version });\n this.setSchema(version, options);\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents =\n value === undefined ? null : this.createNode(value, _replacer, options);\n }\n /**\n * Create a deep copy of this Document and its contents.\n *\n * Custom Node values that inherit from `Object` still refer to their original instances.\n */\n clone() {\n const copy = Object.create(Document.prototype, {\n [identity.NODE_TYPE]: { value: identity.DOC }\n });\n copy.commentBefore = this.commentBefore;\n copy.comment = this.comment;\n copy.errors = this.errors.slice();\n copy.warnings = this.warnings.slice();\n copy.options = Object.assign({}, this.options);\n if (this.directives)\n copy.directives = this.directives.clone();\n copy.schema = this.schema.clone();\n // @ts-expect-error We can't really know that this matches Contents.\n copy.contents = identity.isNode(this.contents)\n ? this.contents.clone(copy.schema)\n : this.contents;\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /** Adds a value to the document. */\n add(value) {\n if (assertCollection(this.contents))\n this.contents.add(value);\n }\n /** Adds a value to the document. */\n addIn(path, value) {\n if (assertCollection(this.contents))\n this.contents.addIn(path, value);\n }\n /**\n * Create a new `Alias` node, ensuring that the target `node` has the required anchor.\n *\n * If `node` already has an anchor, `name` is ignored.\n * Otherwise, the `node.anchor` value will be set to `name`,\n * or if an anchor with that name is already present in the document,\n * `name` will be used as a prefix for a new unique anchor.\n * If `name` is undefined, the generated anchor will use 'a' as a prefix.\n */\n createAlias(node, name) {\n if (!node.anchor) {\n const prev = anchors.anchorNames(this);\n node.anchor =\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n !name || prev.has(name) ? anchors.findNewAnchor(name || 'a', prev) : name;\n }\n return new Alias.Alias(node.anchor);\n }\n createNode(value, replacer, options) {\n let _replacer = undefined;\n if (typeof replacer === 'function') {\n value = replacer.call({ '': value }, '', value);\n _replacer = replacer;\n }\n else if (Array.isArray(replacer)) {\n const keyToStr = (v) => typeof v === 'number' || v instanceof String || v instanceof Number;\n const asStr = replacer.filter(keyToStr).map(String);\n if (asStr.length > 0)\n replacer = replacer.concat(asStr);\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n replacer = undefined;\n }\n const { aliasDuplicateObjects, anchorPrefix, flow, keepUndefined, onTagObj, tag } = options ?? {};\n const { onAnchor, setAnchors, sourceObjects } = anchors.createNodeAnchors(this, \n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n anchorPrefix || 'a');\n const ctx = {\n aliasDuplicateObjects: aliasDuplicateObjects ?? true,\n keepUndefined: keepUndefined ?? false,\n onAnchor,\n onTagObj,\n replacer: _replacer,\n schema: this.schema,\n sourceObjects\n };\n const node = createNode.createNode(value, tag, ctx);\n if (flow && identity.isCollection(node))\n node.flow = true;\n setAnchors();\n return node;\n }\n /**\n * Convert a key and a value into a `Pair` using the current schema,\n * recursively wrapping all values as `Scalar` or `Collection` nodes.\n */\n createPair(key, value, options = {}) {\n const k = this.createNode(key, null, options);\n const v = this.createNode(value, null, options);\n return new Pair.Pair(k, v);\n }\n /**\n * Removes a value from the document.\n * @returns `true` if the item was found and removed.\n */\n delete(key) {\n return assertCollection(this.contents) ? this.contents.delete(key) : false;\n }\n /**\n * Removes a value from the document.\n * @returns `true` if the item was found and removed.\n */\n deleteIn(path) {\n if (Collection.isEmptyPath(path)) {\n if (this.contents == null)\n return false;\n // @ts-expect-error Presumed impossible if Strict extends false\n this.contents = null;\n return true;\n }\n return assertCollection(this.contents)\n ? this.contents.deleteIn(path)\n : false;\n }\n /**\n * Returns item at `key`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n get(key, keepScalar) {\n return identity.isCollection(this.contents)\n ? this.contents.get(key, keepScalar)\n : undefined;\n }\n /**\n * Returns item at `path`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n getIn(path, keepScalar) {\n if (Collection.isEmptyPath(path))\n return !keepScalar && identity.isScalar(this.contents)\n ? this.contents.value\n : this.contents;\n return identity.isCollection(this.contents)\n ? this.contents.getIn(path, keepScalar)\n : undefined;\n }\n /**\n * Checks if the document includes a value with the key `key`.\n */\n has(key) {\n return identity.isCollection(this.contents) ? this.contents.has(key) : false;\n }\n /**\n * Checks if the document includes a value at `path`.\n */\n hasIn(path) {\n if (Collection.isEmptyPath(path))\n return this.contents !== undefined;\n return identity.isCollection(this.contents) ? this.contents.hasIn(path) : false;\n }\n /**\n * Sets a value in this document. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n set(key, value) {\n if (this.contents == null) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = Collection.collectionFromPath(this.schema, [key], value);\n }\n else if (assertCollection(this.contents)) {\n this.contents.set(key, value);\n }\n }\n /**\n * Sets a value in this document. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n setIn(path, value) {\n if (Collection.isEmptyPath(path)) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = value;\n }\n else if (this.contents == null) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = Collection.collectionFromPath(this.schema, Array.from(path), value);\n }\n else if (assertCollection(this.contents)) {\n this.contents.setIn(path, value);\n }\n }\n /**\n * Change the YAML version and schema used by the document.\n * A `null` version disables support for directives, explicit tags, anchors, and aliases.\n * It also requires the `schema` option to be given as a `Schema` instance value.\n *\n * Overrides all previously set schema options.\n */\n setSchema(version, options = {}) {\n if (typeof version === 'number')\n version = String(version);\n let opt;\n switch (version) {\n case '1.1':\n if (this.directives)\n this.directives.yaml.version = '1.1';\n else\n this.directives = new directives.Directives({ version: '1.1' });\n opt = { resolveKnownTags: false, schema: 'yaml-1.1' };\n break;\n case '1.2':\n case 'next':\n if (this.directives)\n this.directives.yaml.version = version;\n else\n this.directives = new directives.Directives({ version });\n opt = { resolveKnownTags: true, schema: 'core' };\n break;\n case null:\n if (this.directives)\n delete this.directives;\n opt = null;\n break;\n default: {\n const sv = JSON.stringify(version);\n throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${sv}`);\n }\n }\n // Not using `instanceof Schema` to allow for duck typing\n if (options.schema instanceof Object)\n this.schema = options.schema;\n else if (opt)\n this.schema = new Schema.Schema(Object.assign(opt, options));\n else\n throw new Error(`With a null YAML version, the { schema: Schema } option is required`);\n }\n // json & jsonArg are only used from toJSON()\n toJS({ json, jsonArg, mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {\n const ctx = {\n anchors: new Map(),\n doc: this,\n keep: !json,\n mapAsMap: mapAsMap === true,\n mapKeyWarned: false,\n maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100\n };\n const res = toJS.toJS(this.contents, jsonArg ?? '', ctx);\n if (typeof onAnchor === 'function')\n for (const { count, res } of ctx.anchors.values())\n onAnchor(res, count);\n return typeof reviver === 'function'\n ? applyReviver.applyReviver(reviver, { '': res }, '', res)\n : res;\n }\n /**\n * A JSON representation of the document `contents`.\n *\n * @param jsonArg Used by `JSON.stringify` to indicate the array index or\n * property name.\n */\n toJSON(jsonArg, onAnchor) {\n return this.toJS({ json: true, jsonArg, mapAsMap: false, onAnchor });\n }\n /** A YAML representation of the document. */\n toString(options = {}) {\n if (this.errors.length > 0)\n throw new Error('Document with errors cannot be stringified');\n if ('indent' in options &&\n (!Number.isInteger(options.indent) || Number(options.indent) <= 0)) {\n const s = JSON.stringify(options.indent);\n throw new Error(`\"indent\" option must be a positive integer, not ${s}`);\n }\n return stringifyDocument.stringifyDocument(this, options);\n }\n}\nfunction assertCollection(contents) {\n if (identity.isCollection(contents))\n return true;\n throw new Error('Expected a YAML collection as document contents');\n}\n\nexports.Document = Document;\n","'use strict';\n\nclass YAMLError extends Error {\n constructor(name, pos, code, message) {\n super();\n this.name = name;\n this.code = code;\n this.message = message;\n this.pos = pos;\n }\n}\nclass YAMLParseError extends YAMLError {\n constructor(pos, code, message) {\n super('YAMLParseError', pos, code, message);\n }\n}\nclass YAMLWarning extends YAMLError {\n constructor(pos, code, message) {\n super('YAMLWarning', pos, code, message);\n }\n}\nconst prettifyError = (src, lc) => (error) => {\n if (error.pos[0] === -1)\n return;\n error.linePos = error.pos.map(pos => lc.linePos(pos));\n const { line, col } = error.linePos[0];\n error.message += ` at line ${line}, column ${col}`;\n let ci = col - 1;\n let lineStr = src\n .substring(lc.lineStarts[line - 1], lc.lineStarts[line])\n .replace(/[\\n\\r]+$/, '');\n // Trim to max 80 chars, keeping col position near the middle\n if (ci >= 60 && lineStr.length > 80) {\n const trimStart = Math.min(ci - 39, lineStr.length - 79);\n lineStr = '…' + lineStr.substring(trimStart);\n ci -= trimStart - 1;\n }\n if (lineStr.length > 80)\n lineStr = lineStr.substring(0, 79) + '…';\n // Include previous line in context if pointing at line start\n if (line > 1 && /^ *$/.test(lineStr.substring(0, ci))) {\n // Regexp won't match if start is trimmed\n let prev = src.substring(lc.lineStarts[line - 2], lc.lineStarts[line - 1]);\n if (prev.length > 80)\n prev = prev.substring(0, 79) + '…\\n';\n lineStr = prev + lineStr;\n }\n if (/[^ ]/.test(lineStr)) {\n let count = 1;\n const end = error.linePos[1];\n if (end?.line === line && end.col > col) {\n count = Math.max(1, Math.min(end.col - col, 80 - ci));\n }\n const pointer = ' '.repeat(ci) + '^'.repeat(count);\n error.message += `:\\n\\n${lineStr}\\n${pointer}\\n`;\n }\n};\n\nexports.YAMLError = YAMLError;\nexports.YAMLParseError = YAMLParseError;\nexports.YAMLWarning = YAMLWarning;\nexports.prettifyError = prettifyError;\n","'use strict';\n\nfunction resolveProps(tokens, { flow, indicator, next, offset, onError, parentIndent, startOnNewline }) {\n let spaceBefore = false;\n let atNewline = startOnNewline;\n let hasSpace = startOnNewline;\n let comment = '';\n let commentSep = '';\n let hasNewline = false;\n let reqSpace = false;\n let tab = null;\n let anchor = null;\n let tag = null;\n let newlineAfterProp = null;\n let comma = null;\n let found = null;\n let start = null;\n for (const token of tokens) {\n if (reqSpace) {\n if (token.type !== 'space' &&\n token.type !== 'newline' &&\n token.type !== 'comma')\n onError(token.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');\n reqSpace = false;\n }\n if (tab) {\n if (atNewline && token.type !== 'comment' && token.type !== 'newline') {\n onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');\n }\n tab = null;\n }\n switch (token.type) {\n case 'space':\n // At the doc level, tabs at line start may be parsed\n // as leading white space rather than indentation.\n // In a flow collection, only the parser handles indent.\n if (!flow &&\n (indicator !== 'doc-start' || next?.type !== 'flow-collection') &&\n token.source.includes('\\t')) {\n tab = token;\n }\n hasSpace = true;\n break;\n case 'comment': {\n if (!hasSpace)\n onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');\n const cb = token.source.substring(1) || ' ';\n if (!comment)\n comment = cb;\n else\n comment += commentSep + cb;\n commentSep = '';\n atNewline = false;\n break;\n }\n case 'newline':\n if (atNewline) {\n if (comment)\n comment += token.source;\n else if (!found || indicator !== 'seq-item-ind')\n spaceBefore = true;\n }\n else\n commentSep += token.source;\n atNewline = true;\n hasNewline = true;\n if (anchor || tag)\n newlineAfterProp = token;\n hasSpace = true;\n break;\n case 'anchor':\n if (anchor)\n onError(token, 'MULTIPLE_ANCHORS', 'A node can have at most one anchor');\n if (token.source.endsWith(':'))\n onError(token.offset + token.source.length - 1, 'BAD_ALIAS', 'Anchor ending in : is ambiguous', true);\n anchor = token;\n start ?? (start = token.offset);\n atNewline = false;\n hasSpace = false;\n reqSpace = true;\n break;\n case 'tag': {\n if (tag)\n onError(token, 'MULTIPLE_TAGS', 'A node can have at most one tag');\n tag = token;\n start ?? (start = token.offset);\n atNewline = false;\n hasSpace = false;\n reqSpace = true;\n break;\n }\n case indicator:\n // Could here handle preceding comments differently\n if (anchor || tag)\n onError(token, 'BAD_PROP_ORDER', `Anchors and tags must be after the ${token.source} indicator`);\n if (found)\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.source} in ${flow ?? 'collection'}`);\n found = token;\n atNewline =\n indicator === 'seq-item-ind' || indicator === 'explicit-key-ind';\n hasSpace = false;\n break;\n case 'comma':\n if (flow) {\n if (comma)\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected , in ${flow}`);\n comma = token;\n atNewline = false;\n hasSpace = false;\n break;\n }\n // else fallthrough\n default:\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.type} token`);\n atNewline = false;\n hasSpace = false;\n }\n }\n const last = tokens[tokens.length - 1];\n const end = last ? last.offset + last.source.length : offset;\n if (reqSpace &&\n next &&\n next.type !== 'space' &&\n next.type !== 'newline' &&\n next.type !== 'comma' &&\n (next.type !== 'scalar' || next.source !== '')) {\n onError(next.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');\n }\n if (tab &&\n ((atNewline && tab.indent <= parentIndent) ||\n next?.type === 'block-map' ||\n next?.type === 'block-seq'))\n onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');\n return {\n comma,\n found,\n spaceBefore,\n comment,\n hasNewline,\n anchor,\n tag,\n newlineAfterProp,\n end,\n start: start ?? end\n };\n}\n\nexports.resolveProps = resolveProps;\n","'use strict';\n\nfunction containsNewline(key) {\n if (!key)\n return null;\n switch (key.type) {\n case 'alias':\n case 'scalar':\n case 'double-quoted-scalar':\n case 'single-quoted-scalar':\n if (key.source.includes('\\n'))\n return true;\n if (key.end)\n for (const st of key.end)\n if (st.type === 'newline')\n return true;\n return false;\n case 'flow-collection':\n for (const it of key.items) {\n for (const st of it.start)\n if (st.type === 'newline')\n return true;\n if (it.sep)\n for (const st of it.sep)\n if (st.type === 'newline')\n return true;\n if (containsNewline(it.key) || containsNewline(it.value))\n return true;\n }\n return false;\n default:\n return true;\n }\n}\n\nexports.containsNewline = containsNewline;\n","'use strict';\n\nvar utilContainsNewline = require('./util-contains-newline.js');\n\nfunction flowIndentCheck(indent, fc, onError) {\n if (fc?.type === 'flow-collection') {\n const end = fc.end[0];\n if (end.indent === indent &&\n (end.source === ']' || end.source === '}') &&\n utilContainsNewline.containsNewline(fc)) {\n const msg = 'Flow end indicator should be more indented than parent';\n onError(end, 'BAD_INDENT', msg, true);\n }\n }\n}\n\nexports.flowIndentCheck = flowIndentCheck;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\n\nfunction mapIncludes(ctx, items, search) {\n const { uniqueKeys } = ctx.options;\n if (uniqueKeys === false)\n return false;\n const isEqual = typeof uniqueKeys === 'function'\n ? uniqueKeys\n : (a, b) => a === b || (identity.isScalar(a) && identity.isScalar(b) && a.value === b.value);\n return items.some(pair => isEqual(pair.key, search));\n}\n\nexports.mapIncludes = mapIncludes;\n","'use strict';\n\nvar Pair = require('../nodes/Pair.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilContainsNewline = require('./util-contains-newline.js');\nvar utilFlowIndentCheck = require('./util-flow-indent-check.js');\nvar utilMapIncludes = require('./util-map-includes.js');\n\nconst startColMsg = 'All mapping items must start at the same column';\nfunction resolveBlockMap({ composeNode, composeEmptyNode }, ctx, bm, onError, tag) {\n const NodeClass = tag?.nodeClass ?? YAMLMap.YAMLMap;\n const map = new NodeClass(ctx.schema);\n if (ctx.atRoot)\n ctx.atRoot = false;\n let offset = bm.offset;\n let commentEnd = null;\n for (const collItem of bm.items) {\n const { start, key, sep, value } = collItem;\n // key properties\n const keyProps = resolveProps.resolveProps(start, {\n indicator: 'explicit-key-ind',\n next: key ?? sep?.[0],\n offset,\n onError,\n parentIndent: bm.indent,\n startOnNewline: true\n });\n const implicitKey = !keyProps.found;\n if (implicitKey) {\n if (key) {\n if (key.type === 'block-seq')\n onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'A block sequence may not be used as an implicit map key');\n else if ('indent' in key && key.indent !== bm.indent)\n onError(offset, 'BAD_INDENT', startColMsg);\n }\n if (!keyProps.anchor && !keyProps.tag && !sep) {\n commentEnd = keyProps.end;\n if (keyProps.comment) {\n if (map.comment)\n map.comment += '\\n' + keyProps.comment;\n else\n map.comment = keyProps.comment;\n }\n continue;\n }\n if (keyProps.newlineAfterProp || utilContainsNewline.containsNewline(key)) {\n onError(key ?? start[start.length - 1], 'MULTILINE_IMPLICIT_KEY', 'Implicit keys need to be on a single line');\n }\n }\n else if (keyProps.found?.indent !== bm.indent) {\n onError(offset, 'BAD_INDENT', startColMsg);\n }\n // key value\n ctx.atKey = true;\n const keyStart = keyProps.end;\n const keyNode = key\n ? composeNode(ctx, key, keyProps, onError)\n : composeEmptyNode(ctx, keyStart, start, null, keyProps, onError);\n if (ctx.schema.compat)\n utilFlowIndentCheck.flowIndentCheck(bm.indent, key, onError);\n ctx.atKey = false;\n if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode))\n onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');\n // value properties\n const valueProps = resolveProps.resolveProps(sep ?? [], {\n indicator: 'map-value-ind',\n next: value,\n offset: keyNode.range[2],\n onError,\n parentIndent: bm.indent,\n startOnNewline: !key || key.type === 'block-scalar'\n });\n offset = valueProps.end;\n if (valueProps.found) {\n if (implicitKey) {\n if (value?.type === 'block-map' && !valueProps.hasNewline)\n onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'Nested mappings are not allowed in compact mappings');\n if (ctx.options.strict &&\n keyProps.start < valueProps.found.offset - 1024)\n onError(keyNode.range, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit block mapping key');\n }\n // value value\n const valueNode = value\n ? composeNode(ctx, value, valueProps, onError)\n : composeEmptyNode(ctx, offset, sep, null, valueProps, onError);\n if (ctx.schema.compat)\n utilFlowIndentCheck.flowIndentCheck(bm.indent, value, onError);\n offset = valueNode.range[2];\n const pair = new Pair.Pair(keyNode, valueNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n map.items.push(pair);\n }\n else {\n // key with no value\n if (implicitKey)\n onError(keyNode.range, 'MISSING_CHAR', 'Implicit map keys need to be followed by map values');\n if (valueProps.comment) {\n if (keyNode.comment)\n keyNode.comment += '\\n' + valueProps.comment;\n else\n keyNode.comment = valueProps.comment;\n }\n const pair = new Pair.Pair(keyNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n map.items.push(pair);\n }\n }\n if (commentEnd && commentEnd < offset)\n onError(commentEnd, 'IMPOSSIBLE', 'Map comment with trailing content');\n map.range = [bm.offset, offset, commentEnd ?? offset];\n return map;\n}\n\nexports.resolveBlockMap = resolveBlockMap;\n","'use strict';\n\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilFlowIndentCheck = require('./util-flow-indent-check.js');\n\nfunction resolveBlockSeq({ composeNode, composeEmptyNode }, ctx, bs, onError, tag) {\n const NodeClass = tag?.nodeClass ?? YAMLSeq.YAMLSeq;\n const seq = new NodeClass(ctx.schema);\n if (ctx.atRoot)\n ctx.atRoot = false;\n if (ctx.atKey)\n ctx.atKey = false;\n let offset = bs.offset;\n let commentEnd = null;\n for (const { start, value } of bs.items) {\n const props = resolveProps.resolveProps(start, {\n indicator: 'seq-item-ind',\n next: value,\n offset,\n onError,\n parentIndent: bs.indent,\n startOnNewline: true\n });\n if (!props.found) {\n if (props.anchor || props.tag || value) {\n if (value?.type === 'block-seq')\n onError(props.end, 'BAD_INDENT', 'All sequence items must start at the same column');\n else\n onError(offset, 'MISSING_CHAR', 'Sequence item without - indicator');\n }\n else {\n commentEnd = props.end;\n if (props.comment)\n seq.comment = props.comment;\n continue;\n }\n }\n const node = value\n ? composeNode(ctx, value, props, onError)\n : composeEmptyNode(ctx, props.end, start, null, props, onError);\n if (ctx.schema.compat)\n utilFlowIndentCheck.flowIndentCheck(bs.indent, value, onError);\n offset = node.range[2];\n seq.items.push(node);\n }\n seq.range = [bs.offset, offset, commentEnd ?? offset];\n return seq;\n}\n\nexports.resolveBlockSeq = resolveBlockSeq;\n","'use strict';\n\nfunction resolveEnd(end, offset, reqSpace, onError) {\n let comment = '';\n if (end) {\n let hasSpace = false;\n let sep = '';\n for (const token of end) {\n const { source, type } = token;\n switch (type) {\n case 'space':\n hasSpace = true;\n break;\n case 'comment': {\n if (reqSpace && !hasSpace)\n onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');\n const cb = source.substring(1) || ' ';\n if (!comment)\n comment = cb;\n else\n comment += sep + cb;\n sep = '';\n break;\n }\n case 'newline':\n if (comment)\n sep += source;\n hasSpace = true;\n break;\n default:\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${type} at node end`);\n }\n offset += source.length;\n }\n }\n return { comment, offset };\n}\n\nexports.resolveEnd = resolveEnd;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Pair = require('../nodes/Pair.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveEnd = require('./resolve-end.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilContainsNewline = require('./util-contains-newline.js');\nvar utilMapIncludes = require('./util-map-includes.js');\n\nconst blockMsg = 'Block collections are not allowed within flow collections';\nconst isBlock = (token) => token && (token.type === 'block-map' || token.type === 'block-seq');\nfunction resolveFlowCollection({ composeNode, composeEmptyNode }, ctx, fc, onError, tag) {\n const isMap = fc.start.source === '{';\n const fcName = isMap ? 'flow map' : 'flow sequence';\n const NodeClass = (tag?.nodeClass ?? (isMap ? YAMLMap.YAMLMap : YAMLSeq.YAMLSeq));\n const coll = new NodeClass(ctx.schema);\n coll.flow = true;\n const atRoot = ctx.atRoot;\n if (atRoot)\n ctx.atRoot = false;\n if (ctx.atKey)\n ctx.atKey = false;\n let offset = fc.offset + fc.start.source.length;\n for (let i = 0; i < fc.items.length; ++i) {\n const collItem = fc.items[i];\n const { start, key, sep, value } = collItem;\n const props = resolveProps.resolveProps(start, {\n flow: fcName,\n indicator: 'explicit-key-ind',\n next: key ?? sep?.[0],\n offset,\n onError,\n parentIndent: fc.indent,\n startOnNewline: false\n });\n if (!props.found) {\n if (!props.anchor && !props.tag && !sep && !value) {\n if (i === 0 && props.comma)\n onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);\n else if (i < fc.items.length - 1)\n onError(props.start, 'UNEXPECTED_TOKEN', `Unexpected empty item in ${fcName}`);\n if (props.comment) {\n if (coll.comment)\n coll.comment += '\\n' + props.comment;\n else\n coll.comment = props.comment;\n }\n offset = props.end;\n continue;\n }\n if (!isMap && ctx.options.strict && utilContainsNewline.containsNewline(key))\n onError(key, // checked by containsNewline()\n 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');\n }\n if (i === 0) {\n if (props.comma)\n onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);\n }\n else {\n if (!props.comma)\n onError(props.start, 'MISSING_CHAR', `Missing , between ${fcName} items`);\n if (props.comment) {\n let prevItemComment = '';\n loop: for (const st of start) {\n switch (st.type) {\n case 'comma':\n case 'space':\n break;\n case 'comment':\n prevItemComment = st.source.substring(1);\n break loop;\n default:\n break loop;\n }\n }\n if (prevItemComment) {\n let prev = coll.items[coll.items.length - 1];\n if (identity.isPair(prev))\n prev = prev.value ?? prev.key;\n if (prev.comment)\n prev.comment += '\\n' + prevItemComment;\n else\n prev.comment = prevItemComment;\n props.comment = props.comment.substring(prevItemComment.length + 1);\n }\n }\n }\n if (!isMap && !sep && !props.found) {\n // item is a value in a seq\n // → key & sep are empty, start does not include ? or :\n const valueNode = value\n ? composeNode(ctx, value, props, onError)\n : composeEmptyNode(ctx, props.end, sep, null, props, onError);\n coll.items.push(valueNode);\n offset = valueNode.range[2];\n if (isBlock(value))\n onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);\n }\n else {\n // item is a key+value pair\n // key value\n ctx.atKey = true;\n const keyStart = props.end;\n const keyNode = key\n ? composeNode(ctx, key, props, onError)\n : composeEmptyNode(ctx, keyStart, start, null, props, onError);\n if (isBlock(key))\n onError(keyNode.range, 'BLOCK_IN_FLOW', blockMsg);\n ctx.atKey = false;\n // value properties\n const valueProps = resolveProps.resolveProps(sep ?? [], {\n flow: fcName,\n indicator: 'map-value-ind',\n next: value,\n offset: keyNode.range[2],\n onError,\n parentIndent: fc.indent,\n startOnNewline: false\n });\n if (valueProps.found) {\n if (!isMap && !props.found && ctx.options.strict) {\n if (sep)\n for (const st of sep) {\n if (st === valueProps.found)\n break;\n if (st.type === 'newline') {\n onError(st, 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');\n break;\n }\n }\n if (props.start < valueProps.found.offset - 1024)\n onError(valueProps.found, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit flow sequence key');\n }\n }\n else if (value) {\n if ('source' in value && value.source?.[0] === ':')\n onError(value, 'MISSING_CHAR', `Missing space after : in ${fcName}`);\n else\n onError(valueProps.start, 'MISSING_CHAR', `Missing , or : between ${fcName} items`);\n }\n // value value\n const valueNode = value\n ? composeNode(ctx, value, valueProps, onError)\n : valueProps.found\n ? composeEmptyNode(ctx, valueProps.end, sep, null, valueProps, onError)\n : null;\n if (valueNode) {\n if (isBlock(value))\n onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);\n }\n else if (valueProps.comment) {\n if (keyNode.comment)\n keyNode.comment += '\\n' + valueProps.comment;\n else\n keyNode.comment = valueProps.comment;\n }\n const pair = new Pair.Pair(keyNode, valueNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n if (isMap) {\n const map = coll;\n if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode))\n onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');\n map.items.push(pair);\n }\n else {\n const map = new YAMLMap.YAMLMap(ctx.schema);\n map.flow = true;\n map.items.push(pair);\n const endRange = (valueNode ?? keyNode).range;\n map.range = [keyNode.range[0], endRange[1], endRange[2]];\n coll.items.push(map);\n }\n offset = valueNode ? valueNode.range[2] : valueProps.end;\n }\n }\n const expectedEnd = isMap ? '}' : ']';\n const [ce, ...ee] = fc.end;\n let cePos = offset;\n if (ce?.source === expectedEnd)\n cePos = ce.offset + ce.source.length;\n else {\n const name = fcName[0].toUpperCase() + fcName.substring(1);\n const msg = atRoot\n ? `${name} must end with a ${expectedEnd}`\n : `${name} in block collection must be sufficiently indented and end with a ${expectedEnd}`;\n onError(offset, atRoot ? 'MISSING_CHAR' : 'BAD_INDENT', msg);\n if (ce && ce.source.length !== 1)\n ee.unshift(ce);\n }\n if (ee.length > 0) {\n const end = resolveEnd.resolveEnd(ee, cePos, ctx.options.strict, onError);\n if (end.comment) {\n if (coll.comment)\n coll.comment += '\\n' + end.comment;\n else\n coll.comment = end.comment;\n }\n coll.range = [fc.offset, cePos, end.offset];\n }\n else {\n coll.range = [fc.offset, cePos, cePos];\n }\n return coll;\n}\n\nexports.resolveFlowCollection = resolveFlowCollection;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveBlockMap = require('./resolve-block-map.js');\nvar resolveBlockSeq = require('./resolve-block-seq.js');\nvar resolveFlowCollection = require('./resolve-flow-collection.js');\n\nfunction resolveCollection(CN, ctx, token, onError, tagName, tag) {\n const coll = token.type === 'block-map'\n ? resolveBlockMap.resolveBlockMap(CN, ctx, token, onError, tag)\n : token.type === 'block-seq'\n ? resolveBlockSeq.resolveBlockSeq(CN, ctx, token, onError, tag)\n : resolveFlowCollection.resolveFlowCollection(CN, ctx, token, onError, tag);\n const Coll = coll.constructor;\n // If we got a tagName matching the class, or the tag name is '!',\n // then use the tagName from the node class used to create it.\n if (tagName === '!' || tagName === Coll.tagName) {\n coll.tag = Coll.tagName;\n return coll;\n }\n if (tagName)\n coll.tag = tagName;\n return coll;\n}\nfunction composeCollection(CN, ctx, token, props, onError) {\n const tagToken = props.tag;\n const tagName = !tagToken\n ? null\n : ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg));\n if (token.type === 'block-seq') {\n const { anchor, newlineAfterProp: nl } = props;\n const lastProp = anchor && tagToken\n ? anchor.offset > tagToken.offset\n ? anchor\n : tagToken\n : (anchor ?? tagToken);\n if (lastProp && (!nl || nl.offset < lastProp.offset)) {\n const message = 'Missing newline after block sequence props';\n onError(lastProp, 'MISSING_CHAR', message);\n }\n }\n const expType = token.type === 'block-map'\n ? 'map'\n : token.type === 'block-seq'\n ? 'seq'\n : token.start.source === '{'\n ? 'map'\n : 'seq';\n // shortcut: check if it's a generic YAMLMap or YAMLSeq\n // before jumping into the custom tag logic.\n if (!tagToken ||\n !tagName ||\n tagName === '!' ||\n (tagName === YAMLMap.YAMLMap.tagName && expType === 'map') ||\n (tagName === YAMLSeq.YAMLSeq.tagName && expType === 'seq')) {\n return resolveCollection(CN, ctx, token, onError, tagName);\n }\n let tag = ctx.schema.tags.find(t => t.tag === tagName && t.collection === expType);\n if (!tag) {\n const kt = ctx.schema.knownTags[tagName];\n if (kt?.collection === expType) {\n ctx.schema.tags.push(Object.assign({}, kt, { default: false }));\n tag = kt;\n }\n else {\n if (kt) {\n onError(tagToken, 'BAD_COLLECTION_TYPE', `${kt.tag} used for ${expType} collection, but expects ${kt.collection ?? 'scalar'}`, true);\n }\n else {\n onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, true);\n }\n return resolveCollection(CN, ctx, token, onError, tagName);\n }\n }\n const coll = resolveCollection(CN, ctx, token, onError, tagName, tag);\n const res = tag.resolve?.(coll, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg), ctx.options) ?? coll;\n const node = identity.isNode(res)\n ? res\n : new Scalar.Scalar(res);\n node.range = coll.range;\n node.tag = tagName;\n if (tag?.format)\n node.format = tag.format;\n return node;\n}\n\nexports.composeCollection = composeCollection;\n","'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\n\nfunction resolveBlockScalar(ctx, scalar, onError) {\n const start = scalar.offset;\n const header = parseBlockScalarHeader(scalar, ctx.options.strict, onError);\n if (!header)\n return { value: '', type: null, comment: '', range: [start, start, start] };\n const type = header.mode === '>' ? Scalar.Scalar.BLOCK_FOLDED : Scalar.Scalar.BLOCK_LITERAL;\n const lines = scalar.source ? splitLines(scalar.source) : [];\n // determine the end of content & start of chomping\n let chompStart = lines.length;\n for (let i = lines.length - 1; i >= 0; --i) {\n const content = lines[i][1];\n if (content === '' || content === '\\r')\n chompStart = i;\n else\n break;\n }\n // shortcut for empty contents\n if (chompStart === 0) {\n const value = header.chomp === '+' && lines.length > 0\n ? '\\n'.repeat(Math.max(1, lines.length - 1))\n : '';\n let end = start + header.length;\n if (scalar.source)\n end += scalar.source.length;\n return { value, type, comment: header.comment, range: [start, end, end] };\n }\n // find the indentation level to trim from start\n let trimIndent = scalar.indent + header.indent;\n let offset = scalar.offset + header.length;\n let contentStart = 0;\n for (let i = 0; i < chompStart; ++i) {\n const [indent, content] = lines[i];\n if (content === '' || content === '\\r') {\n if (header.indent === 0 && indent.length > trimIndent)\n trimIndent = indent.length;\n }\n else {\n if (indent.length < trimIndent) {\n const message = 'Block scalars with more-indented leading empty lines must use an explicit indentation indicator';\n onError(offset + indent.length, 'MISSING_CHAR', message);\n }\n if (header.indent === 0)\n trimIndent = indent.length;\n contentStart = i;\n if (trimIndent === 0 && !ctx.atRoot) {\n const message = 'Block scalar values in collections must be indented';\n onError(offset, 'BAD_INDENT', message);\n }\n break;\n }\n offset += indent.length + content.length + 1;\n }\n // include trailing more-indented empty lines in content\n for (let i = lines.length - 1; i >= chompStart; --i) {\n if (lines[i][0].length > trimIndent)\n chompStart = i + 1;\n }\n let value = '';\n let sep = '';\n let prevMoreIndented = false;\n // leading whitespace is kept intact\n for (let i = 0; i < contentStart; ++i)\n value += lines[i][0].slice(trimIndent) + '\\n';\n for (let i = contentStart; i < chompStart; ++i) {\n let [indent, content] = lines[i];\n offset += indent.length + content.length + 1;\n const crlf = content[content.length - 1] === '\\r';\n if (crlf)\n content = content.slice(0, -1);\n /* istanbul ignore if already caught in lexer */\n if (content && indent.length < trimIndent) {\n const src = header.indent\n ? 'explicit indentation indicator'\n : 'first line';\n const message = `Block scalar lines must not be less indented than their ${src}`;\n onError(offset - content.length - (crlf ? 2 : 1), 'BAD_INDENT', message);\n indent = '';\n }\n if (type === Scalar.Scalar.BLOCK_LITERAL) {\n value += sep + indent.slice(trimIndent) + content;\n sep = '\\n';\n }\n else if (indent.length > trimIndent || content[0] === '\\t') {\n // more-indented content within a folded block\n if (sep === ' ')\n sep = '\\n';\n else if (!prevMoreIndented && sep === '\\n')\n sep = '\\n\\n';\n value += sep + indent.slice(trimIndent) + content;\n sep = '\\n';\n prevMoreIndented = true;\n }\n else if (content === '') {\n // empty line\n if (sep === '\\n')\n value += '\\n';\n else\n sep = '\\n';\n }\n else {\n value += sep + content;\n sep = ' ';\n prevMoreIndented = false;\n }\n }\n switch (header.chomp) {\n case '-':\n break;\n case '+':\n for (let i = chompStart; i < lines.length; ++i)\n value += '\\n' + lines[i][0].slice(trimIndent);\n if (value[value.length - 1] !== '\\n')\n value += '\\n';\n break;\n default:\n value += '\\n';\n }\n const end = start + header.length + scalar.source.length;\n return { value, type, comment: header.comment, range: [start, end, end] };\n}\nfunction parseBlockScalarHeader({ offset, props }, strict, onError) {\n /* istanbul ignore if should not happen */\n if (props[0].type !== 'block-scalar-header') {\n onError(props[0], 'IMPOSSIBLE', 'Block scalar header not found');\n return null;\n }\n const { source } = props[0];\n const mode = source[0];\n let indent = 0;\n let chomp = '';\n let error = -1;\n for (let i = 1; i < source.length; ++i) {\n const ch = source[i];\n if (!chomp && (ch === '-' || ch === '+'))\n chomp = ch;\n else {\n const n = Number(ch);\n if (!indent && n)\n indent = n;\n else if (error === -1)\n error = offset + i;\n }\n }\n if (error !== -1)\n onError(error, 'UNEXPECTED_TOKEN', `Block scalar header includes extra characters: ${source}`);\n let hasSpace = false;\n let comment = '';\n let length = source.length;\n for (let i = 1; i < props.length; ++i) {\n const token = props[i];\n switch (token.type) {\n case 'space':\n hasSpace = true;\n // fallthrough\n case 'newline':\n length += token.source.length;\n break;\n case 'comment':\n if (strict && !hasSpace) {\n const message = 'Comments must be separated from other tokens by white space characters';\n onError(token, 'MISSING_CHAR', message);\n }\n length += token.source.length;\n comment = token.source.substring(1);\n break;\n case 'error':\n onError(token, 'UNEXPECTED_TOKEN', token.message);\n length += token.source.length;\n break;\n /* istanbul ignore next should not happen */\n default: {\n const message = `Unexpected token in block scalar header: ${token.type}`;\n onError(token, 'UNEXPECTED_TOKEN', message);\n const ts = token.source;\n if (ts && typeof ts === 'string')\n length += ts.length;\n }\n }\n }\n return { mode, indent, chomp, comment, length };\n}\n/** @returns Array of lines split up as `[indent, content]` */\nfunction splitLines(source) {\n const split = source.split(/\\n( *)/);\n const first = split[0];\n const m = first.match(/^( *)/);\n const line0 = m?.[1]\n ? [m[1], first.slice(m[1].length)]\n : ['', first];\n const lines = [line0];\n for (let i = 1; i < split.length; i += 2)\n lines.push([split[i], split[i + 1]]);\n return lines;\n}\n\nexports.resolveBlockScalar = resolveBlockScalar;\n","'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\nvar resolveEnd = require('./resolve-end.js');\n\nfunction resolveFlowScalar(scalar, strict, onError) {\n const { offset, type, source, end } = scalar;\n let _type;\n let value;\n const _onError = (rel, code, msg) => onError(offset + rel, code, msg);\n switch (type) {\n case 'scalar':\n _type = Scalar.Scalar.PLAIN;\n value = plainValue(source, _onError);\n break;\n case 'single-quoted-scalar':\n _type = Scalar.Scalar.QUOTE_SINGLE;\n value = singleQuotedValue(source, _onError);\n break;\n case 'double-quoted-scalar':\n _type = Scalar.Scalar.QUOTE_DOUBLE;\n value = doubleQuotedValue(source, _onError);\n break;\n /* istanbul ignore next should not happen */\n default:\n onError(scalar, 'UNEXPECTED_TOKEN', `Expected a flow scalar value, but found: ${type}`);\n return {\n value: '',\n type: null,\n comment: '',\n range: [offset, offset + source.length, offset + source.length]\n };\n }\n const valueEnd = offset + source.length;\n const re = resolveEnd.resolveEnd(end, valueEnd, strict, onError);\n return {\n value,\n type: _type,\n comment: re.comment,\n range: [offset, valueEnd, re.offset]\n };\n}\nfunction plainValue(source, onError) {\n let badChar = '';\n switch (source[0]) {\n /* istanbul ignore next should not happen */\n case '\\t':\n badChar = 'a tab character';\n break;\n case ',':\n badChar = 'flow indicator character ,';\n break;\n case '%':\n badChar = 'directive indicator character %';\n break;\n case '|':\n case '>': {\n badChar = `block scalar indicator ${source[0]}`;\n break;\n }\n case '@':\n case '`': {\n badChar = `reserved character ${source[0]}`;\n break;\n }\n }\n if (badChar)\n onError(0, 'BAD_SCALAR_START', `Plain value cannot start with ${badChar}`);\n return foldLines(source);\n}\nfunction singleQuotedValue(source, onError) {\n if (source[source.length - 1] !== \"'\" || source.length === 1)\n onError(source.length, 'MISSING_CHAR', \"Missing closing 'quote\");\n return foldLines(source.slice(1, -1)).replace(/''/g, \"'\");\n}\nfunction foldLines(source) {\n /**\n * The negative lookbehind here and in the `re` RegExp is to\n * prevent causing a polynomial search time in certain cases.\n *\n * The try-catch is for Safari, which doesn't support this yet:\n * https://caniuse.com/js-regexp-lookbehind\n */\n let first, line;\n try {\n first = new RegExp('(.*?)(?<![ \\t])[ \\t]*\\r?\\n', 'sy');\n line = new RegExp('[ \\t]*(.*?)(?:(?<![ \\t])[ \\t]*)?\\r?\\n', 'sy');\n }\n catch {\n first = /(.*?)[ \\t]*\\r?\\n/sy;\n line = /[ \\t]*(.*?)[ \\t]*\\r?\\n/sy;\n }\n let match = first.exec(source);\n if (!match)\n return source;\n let res = match[1];\n let sep = ' ';\n let pos = first.lastIndex;\n line.lastIndex = pos;\n while ((match = line.exec(source))) {\n if (match[1] === '') {\n if (sep === '\\n')\n res += sep;\n else\n sep = '\\n';\n }\n else {\n res += sep + match[1];\n sep = ' ';\n }\n pos = line.lastIndex;\n }\n const last = /[ \\t]*(.*)/sy;\n last.lastIndex = pos;\n match = last.exec(source);\n return res + sep + (match?.[1] ?? '');\n}\nfunction doubleQuotedValue(source, onError) {\n let res = '';\n for (let i = 1; i < source.length - 1; ++i) {\n const ch = source[i];\n if (ch === '\\r' && source[i + 1] === '\\n')\n continue;\n if (ch === '\\n') {\n const { fold, offset } = foldNewline(source, i);\n res += fold;\n i = offset;\n }\n else if (ch === '\\\\') {\n let next = source[++i];\n const cc = escapeCodes[next];\n if (cc)\n res += cc;\n else if (next === '\\n') {\n // skip escaped newlines, but still trim the following line\n next = source[i + 1];\n while (next === ' ' || next === '\\t')\n next = source[++i + 1];\n }\n else if (next === '\\r' && source[i + 1] === '\\n') {\n // skip escaped CRLF newlines, but still trim the following line\n next = source[++i + 1];\n while (next === ' ' || next === '\\t')\n next = source[++i + 1];\n }\n else if (next === 'x' || next === 'u' || next === 'U') {\n const length = { x: 2, u: 4, U: 8 }[next];\n res += parseCharCode(source, i + 1, length, onError);\n i += length;\n }\n else {\n const raw = source.substr(i - 1, 2);\n onError(i - 1, 'BAD_DQ_ESCAPE', `Invalid escape sequence ${raw}`);\n res += raw;\n }\n }\n else if (ch === ' ' || ch === '\\t') {\n // trim trailing whitespace\n const wsStart = i;\n let next = source[i + 1];\n while (next === ' ' || next === '\\t')\n next = source[++i + 1];\n if (next !== '\\n' && !(next === '\\r' && source[i + 2] === '\\n'))\n res += i > wsStart ? source.slice(wsStart, i + 1) : ch;\n }\n else {\n res += ch;\n }\n }\n if (source[source.length - 1] !== '\"' || source.length === 1)\n onError(source.length, 'MISSING_CHAR', 'Missing closing \"quote');\n return res;\n}\n/**\n * Fold a single newline into a space, multiple newlines to N - 1 newlines.\n * Presumes `source[offset] === '\\n'`\n */\nfunction foldNewline(source, offset) {\n let fold = '';\n let ch = source[offset + 1];\n while (ch === ' ' || ch === '\\t' || ch === '\\n' || ch === '\\r') {\n if (ch === '\\r' && source[offset + 2] !== '\\n')\n break;\n if (ch === '\\n')\n fold += '\\n';\n offset += 1;\n ch = source[offset + 1];\n }\n if (!fold)\n fold = ' ';\n return { fold, offset };\n}\nconst escapeCodes = {\n '0': '\\0', // null character\n a: '\\x07', // bell character\n b: '\\b', // backspace\n e: '\\x1b', // escape character\n f: '\\f', // form feed\n n: '\\n', // line feed\n r: '\\r', // carriage return\n t: '\\t', // horizontal tab\n v: '\\v', // vertical tab\n N: '\\u0085', // Unicode next line\n _: '\\u00a0', // Unicode non-breaking space\n L: '\\u2028', // Unicode line separator\n P: '\\u2029', // Unicode paragraph separator\n ' ': ' ',\n '\"': '\"',\n '/': '/',\n '\\\\': '\\\\',\n '\\t': '\\t'\n};\nfunction parseCharCode(source, offset, length, onError) {\n const cc = source.substr(offset, length);\n const ok = cc.length === length && /^[0-9a-fA-F]+$/.test(cc);\n const code = ok ? parseInt(cc, 16) : NaN;\n if (isNaN(code)) {\n const raw = source.substr(offset - 2, length + 2);\n onError(offset - 2, 'BAD_DQ_ESCAPE', `Invalid escape sequence ${raw}`);\n return raw;\n }\n return String.fromCodePoint(code);\n}\n\nexports.resolveFlowScalar = resolveFlowScalar;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar resolveBlockScalar = require('./resolve-block-scalar.js');\nvar resolveFlowScalar = require('./resolve-flow-scalar.js');\n\nfunction composeScalar(ctx, token, tagToken, onError) {\n const { value, type, comment, range } = token.type === 'block-scalar'\n ? resolveBlockScalar.resolveBlockScalar(ctx, token, onError)\n : resolveFlowScalar.resolveFlowScalar(token, ctx.options.strict, onError);\n const tagName = tagToken\n ? ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg))\n : null;\n let tag;\n if (ctx.options.stringKeys && ctx.atKey) {\n tag = ctx.schema[identity.SCALAR];\n }\n else if (tagName)\n tag = findScalarTagByName(ctx.schema, value, tagName, tagToken, onError);\n else if (token.type === 'scalar')\n tag = findScalarTagByTest(ctx, value, token, onError);\n else\n tag = ctx.schema[identity.SCALAR];\n let scalar;\n try {\n const res = tag.resolve(value, msg => onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg), ctx.options);\n scalar = identity.isScalar(res) ? res : new Scalar.Scalar(res);\n }\n catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg);\n scalar = new Scalar.Scalar(value);\n }\n scalar.range = range;\n scalar.source = value;\n if (type)\n scalar.type = type;\n if (tagName)\n scalar.tag = tagName;\n if (tag.format)\n scalar.format = tag.format;\n if (comment)\n scalar.comment = comment;\n return scalar;\n}\nfunction findScalarTagByName(schema, value, tagName, tagToken, onError) {\n if (tagName === '!')\n return schema[identity.SCALAR]; // non-specific tag\n const matchWithTest = [];\n for (const tag of schema.tags) {\n if (!tag.collection && tag.tag === tagName) {\n if (tag.default && tag.test)\n matchWithTest.push(tag);\n else\n return tag;\n }\n }\n for (const tag of matchWithTest)\n if (tag.test?.test(value))\n return tag;\n const kt = schema.knownTags[tagName];\n if (kt && !kt.collection) {\n // Ensure that the known tag is available for stringifying,\n // but does not get used by default.\n schema.tags.push(Object.assign({}, kt, { default: false, test: undefined }));\n return kt;\n }\n onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, tagName !== 'tag:yaml.org,2002:str');\n return schema[identity.SCALAR];\n}\nfunction findScalarTagByTest({ atKey, directives, schema }, value, token, onError) {\n const tag = schema.tags.find(tag => (tag.default === true || (atKey && tag.default === 'key')) &&\n tag.test?.test(value)) || schema[identity.SCALAR];\n if (schema.compat) {\n const compat = schema.compat.find(tag => tag.default && tag.test?.test(value)) ??\n schema[identity.SCALAR];\n if (tag.tag !== compat.tag) {\n const ts = directives.tagString(tag.tag);\n const cs = directives.tagString(compat.tag);\n const msg = `Value may be parsed as either ${ts} or ${cs}`;\n onError(token, 'TAG_RESOLVE_FAILED', msg, true);\n }\n }\n return tag;\n}\n\nexports.composeScalar = composeScalar;\n","'use strict';\n\nfunction emptyScalarPosition(offset, before, pos) {\n if (before) {\n pos ?? (pos = before.length);\n for (let i = pos - 1; i >= 0; --i) {\n let st = before[i];\n switch (st.type) {\n case 'space':\n case 'comment':\n case 'newline':\n offset -= st.source.length;\n continue;\n }\n // Technically, an empty scalar is immediately after the last non-empty\n // node, but it's more useful to place it after any whitespace.\n st = before[++i];\n while (st?.type === 'space') {\n offset += st.source.length;\n st = before[++i];\n }\n break;\n }\n }\n return offset;\n}\n\nexports.emptyScalarPosition = emptyScalarPosition;\n","'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar identity = require('../nodes/identity.js');\nvar composeCollection = require('./compose-collection.js');\nvar composeScalar = require('./compose-scalar.js');\nvar resolveEnd = require('./resolve-end.js');\nvar utilEmptyScalarPosition = require('./util-empty-scalar-position.js');\n\nconst CN = { composeNode, composeEmptyNode };\nfunction composeNode(ctx, token, props, onError) {\n const atKey = ctx.atKey;\n const { spaceBefore, comment, anchor, tag } = props;\n let node;\n let isSrcToken = true;\n switch (token.type) {\n case 'alias':\n node = composeAlias(ctx, token, onError);\n if (anchor || tag)\n onError(token, 'ALIAS_PROPS', 'An alias node must not specify any properties');\n break;\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n case 'block-scalar':\n node = composeScalar.composeScalar(ctx, token, tag, onError);\n if (anchor)\n node.anchor = anchor.source.substring(1);\n break;\n case 'block-map':\n case 'block-seq':\n case 'flow-collection':\n try {\n node = composeCollection.composeCollection(CN, ctx, token, props, onError);\n if (anchor)\n node.anchor = anchor.source.substring(1);\n }\n catch (error) {\n // Almost certainly here due to a stack overflow\n const message = error instanceof Error ? error.message : String(error);\n onError(token, 'RESOURCE_EXHAUSTION', message);\n }\n break;\n default: {\n const message = token.type === 'error'\n ? token.message\n : `Unsupported token (type: ${token.type})`;\n onError(token, 'UNEXPECTED_TOKEN', message);\n isSrcToken = false;\n }\n }\n node ?? (node = composeEmptyNode(ctx, token.offset, undefined, null, props, onError));\n if (anchor && node.anchor === '')\n onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n if (atKey &&\n ctx.options.stringKeys &&\n (!identity.isScalar(node) ||\n typeof node.value !== 'string' ||\n (node.tag && node.tag !== 'tag:yaml.org,2002:str'))) {\n const msg = 'With stringKeys, all keys must be strings';\n onError(tag ?? token, 'NON_STRING_KEY', msg);\n }\n if (spaceBefore)\n node.spaceBefore = true;\n if (comment) {\n if (token.type === 'scalar' && token.source === '')\n node.comment = comment;\n else\n node.commentBefore = comment;\n }\n // @ts-expect-error Type checking misses meaning of isSrcToken\n if (ctx.options.keepSourceTokens && isSrcToken)\n node.srcToken = token;\n return node;\n}\nfunction composeEmptyNode(ctx, offset, before, pos, { spaceBefore, comment, anchor, tag, end }, onError) {\n const token = {\n type: 'scalar',\n offset: utilEmptyScalarPosition.emptyScalarPosition(offset, before, pos),\n indent: -1,\n source: ''\n };\n const node = composeScalar.composeScalar(ctx, token, tag, onError);\n if (anchor) {\n node.anchor = anchor.source.substring(1);\n if (node.anchor === '')\n onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n }\n if (spaceBefore)\n node.spaceBefore = true;\n if (comment) {\n node.comment = comment;\n node.range[2] = end;\n }\n return node;\n}\nfunction composeAlias({ options }, { offset, source, end }, onError) {\n const alias = new Alias.Alias(source.substring(1));\n if (alias.source === '')\n onError(offset, 'BAD_ALIAS', 'Alias cannot be an empty string');\n if (alias.source.endsWith(':'))\n onError(offset + source.length - 1, 'BAD_ALIAS', 'Alias ending in : is ambiguous', true);\n const valueEnd = offset + source.length;\n const re = resolveEnd.resolveEnd(end, valueEnd, options.strict, onError);\n alias.range = [offset, valueEnd, re.offset];\n if (re.comment)\n alias.comment = re.comment;\n return alias;\n}\n\nexports.composeEmptyNode = composeEmptyNode;\nexports.composeNode = composeNode;\n","'use strict';\n\nvar Document = require('../doc/Document.js');\nvar composeNode = require('./compose-node.js');\nvar resolveEnd = require('./resolve-end.js');\nvar resolveProps = require('./resolve-props.js');\n\nfunction composeDoc(options, directives, { offset, start, value, end }, onError) {\n const opts = Object.assign({ _directives: directives }, options);\n const doc = new Document.Document(undefined, opts);\n const ctx = {\n atKey: false,\n atRoot: true,\n directives: doc.directives,\n options: doc.options,\n schema: doc.schema\n };\n const props = resolveProps.resolveProps(start, {\n indicator: 'doc-start',\n next: value ?? end?.[0],\n offset,\n onError,\n parentIndent: 0,\n startOnNewline: true\n });\n if (props.found) {\n doc.directives.docStart = true;\n if (value &&\n (value.type === 'block-map' || value.type === 'block-seq') &&\n !props.hasNewline)\n onError(props.end, 'MISSING_CHAR', 'Block collection cannot start on same line with directives-end marker');\n }\n // @ts-expect-error If Contents is set, let's trust the user\n doc.contents = value\n ? composeNode.composeNode(ctx, value, props, onError)\n : composeNode.composeEmptyNode(ctx, props.end, start, null, props, onError);\n const contentEnd = doc.contents.range[2];\n const re = resolveEnd.resolveEnd(end, contentEnd, false, onError);\n if (re.comment)\n doc.comment = re.comment;\n doc.range = [offset, contentEnd, re.offset];\n return doc;\n}\n\nexports.composeDoc = composeDoc;\n","'use strict';\n\nvar node_process = require('process');\nvar directives = require('../doc/directives.js');\nvar Document = require('../doc/Document.js');\nvar errors = require('../errors.js');\nvar identity = require('../nodes/identity.js');\nvar composeDoc = require('./compose-doc.js');\nvar resolveEnd = require('./resolve-end.js');\n\nfunction getErrorPos(src) {\n if (typeof src === 'number')\n return [src, src + 1];\n if (Array.isArray(src))\n return src.length === 2 ? src : [src[0], src[1]];\n const { offset, source } = src;\n return [offset, offset + (typeof source === 'string' ? source.length : 1)];\n}\nfunction parsePrelude(prelude) {\n let comment = '';\n let atComment = false;\n let afterEmptyLine = false;\n for (let i = 0; i < prelude.length; ++i) {\n const source = prelude[i];\n switch (source[0]) {\n case '#':\n comment +=\n (comment === '' ? '' : afterEmptyLine ? '\\n\\n' : '\\n') +\n (source.substring(1) || ' ');\n atComment = true;\n afterEmptyLine = false;\n break;\n case '%':\n if (prelude[i + 1]?.[0] !== '#')\n i += 1;\n atComment = false;\n break;\n default:\n // This may be wrong after doc-end, but in that case it doesn't matter\n if (!atComment)\n afterEmptyLine = true;\n atComment = false;\n }\n }\n return { comment, afterEmptyLine };\n}\n/**\n * Compose a stream of CST nodes into a stream of YAML Documents.\n *\n * ```ts\n * import { Composer, Parser } from 'yaml'\n *\n * const src: string = ...\n * const tokens = new Parser().parse(src)\n * const docs = new Composer().compose(tokens)\n * ```\n */\nclass Composer {\n constructor(options = {}) {\n this.doc = null;\n this.atDirectives = false;\n this.prelude = [];\n this.errors = [];\n this.warnings = [];\n this.onError = (source, code, message, warning) => {\n const pos = getErrorPos(source);\n if (warning)\n this.warnings.push(new errors.YAMLWarning(pos, code, message));\n else\n this.errors.push(new errors.YAMLParseError(pos, code, message));\n };\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n this.directives = new directives.Directives({ version: options.version || '1.2' });\n this.options = options;\n }\n decorate(doc, afterDoc) {\n const { comment, afterEmptyLine } = parsePrelude(this.prelude);\n //console.log({ dc: doc.comment, prelude, comment })\n if (comment) {\n const dc = doc.contents;\n if (afterDoc) {\n doc.comment = doc.comment ? `${doc.comment}\\n${comment}` : comment;\n }\n else if (afterEmptyLine || doc.directives.docStart || !dc) {\n doc.commentBefore = comment;\n }\n else if (identity.isCollection(dc) && !dc.flow && dc.items.length > 0) {\n let it = dc.items[0];\n if (identity.isPair(it))\n it = it.key;\n const cb = it.commentBefore;\n it.commentBefore = cb ? `${comment}\\n${cb}` : comment;\n }\n else {\n const cb = dc.commentBefore;\n dc.commentBefore = cb ? `${comment}\\n${cb}` : comment;\n }\n }\n if (afterDoc) {\n Array.prototype.push.apply(doc.errors, this.errors);\n Array.prototype.push.apply(doc.warnings, this.warnings);\n }\n else {\n doc.errors = this.errors;\n doc.warnings = this.warnings;\n }\n this.prelude = [];\n this.errors = [];\n this.warnings = [];\n }\n /**\n * Current stream status information.\n *\n * Mostly useful at the end of input for an empty stream.\n */\n streamInfo() {\n return {\n comment: parsePrelude(this.prelude).comment,\n directives: this.directives,\n errors: this.errors,\n warnings: this.warnings\n };\n }\n /**\n * Compose tokens into documents.\n *\n * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.\n * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.\n */\n *compose(tokens, forceDoc = false, endOffset = -1) {\n for (const token of tokens)\n yield* this.next(token);\n yield* this.end(forceDoc, endOffset);\n }\n /** Advance the composer by one CST token. */\n *next(token) {\n if (node_process.env.LOG_STREAM)\n console.dir(token, { depth: null });\n switch (token.type) {\n case 'directive':\n this.directives.add(token.source, (offset, message, warning) => {\n const pos = getErrorPos(token);\n pos[0] += offset;\n this.onError(pos, 'BAD_DIRECTIVE', message, warning);\n });\n this.prelude.push(token.source);\n this.atDirectives = true;\n break;\n case 'document': {\n const doc = composeDoc.composeDoc(this.options, this.directives, token, this.onError);\n if (this.atDirectives && !doc.directives.docStart)\n this.onError(token, 'MISSING_CHAR', 'Missing directives-end/doc-start indicator line');\n this.decorate(doc, false);\n if (this.doc)\n yield this.doc;\n this.doc = doc;\n this.atDirectives = false;\n break;\n }\n case 'byte-order-mark':\n case 'space':\n break;\n case 'comment':\n case 'newline':\n this.prelude.push(token.source);\n break;\n case 'error': {\n const msg = token.source\n ? `${token.message}: ${JSON.stringify(token.source)}`\n : token.message;\n const error = new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg);\n if (this.atDirectives || !this.doc)\n this.errors.push(error);\n else\n this.doc.errors.push(error);\n break;\n }\n case 'doc-end': {\n if (!this.doc) {\n const msg = 'Unexpected doc-end without preceding document';\n this.errors.push(new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg));\n break;\n }\n this.doc.directives.docEnd = true;\n const end = resolveEnd.resolveEnd(token.end, token.offset + token.source.length, this.doc.options.strict, this.onError);\n this.decorate(this.doc, true);\n if (end.comment) {\n const dc = this.doc.comment;\n this.doc.comment = dc ? `${dc}\\n${end.comment}` : end.comment;\n }\n this.doc.range[2] = end.offset;\n break;\n }\n default:\n this.errors.push(new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', `Unsupported token ${token.type}`));\n }\n }\n /**\n * Call at end of input to yield any remaining document.\n *\n * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.\n * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.\n */\n *end(forceDoc = false, endOffset = -1) {\n if (this.doc) {\n this.decorate(this.doc, true);\n yield this.doc;\n this.doc = null;\n }\n else if (forceDoc) {\n const opts = Object.assign({ _directives: this.directives }, this.options);\n const doc = new Document.Document(undefined, opts);\n if (this.atDirectives)\n this.onError(endOffset, 'MISSING_CHAR', 'Missing directives-end indicator line');\n doc.range = [0, endOffset, endOffset];\n this.decorate(doc, false);\n yield doc;\n }\n }\n}\n\nexports.Composer = Composer;\n","'use strict';\n\nvar resolveBlockScalar = require('../compose/resolve-block-scalar.js');\nvar resolveFlowScalar = require('../compose/resolve-flow-scalar.js');\nvar errors = require('../errors.js');\nvar stringifyString = require('../stringify/stringifyString.js');\n\nfunction resolveAsScalar(token, strict = true, onError) {\n if (token) {\n const _onError = (pos, code, message) => {\n const offset = typeof pos === 'number' ? pos : Array.isArray(pos) ? pos[0] : pos.offset;\n if (onError)\n onError(offset, code, message);\n else\n throw new errors.YAMLParseError([offset, offset + 1], code, message);\n };\n switch (token.type) {\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return resolveFlowScalar.resolveFlowScalar(token, strict, _onError);\n case 'block-scalar':\n return resolveBlockScalar.resolveBlockScalar({ options: { strict } }, token, _onError);\n }\n }\n return null;\n}\n/**\n * Create a new scalar token with `value`\n *\n * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,\n * as this function does not support any schema operations and won't check for such conflicts.\n *\n * @param value The string representation of the value, which will have its content properly indented.\n * @param context.end Comments and whitespace after the end of the value, or after the block scalar header. If undefined, a newline will be added.\n * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.\n * @param context.indent The indent level of the token.\n * @param context.inFlow Is this scalar within a flow collection? This may affect the resolved type of the token's value.\n * @param context.offset The offset position of the token.\n * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.\n */\nfunction createScalarToken(value, context) {\n const { implicitKey = false, indent, inFlow = false, offset = -1, type = 'PLAIN' } = context;\n const source = stringifyString.stringifyString({ type, value }, {\n implicitKey,\n indent: indent > 0 ? ' '.repeat(indent) : '',\n inFlow,\n options: { blockQuote: true, lineWidth: -1 }\n });\n const end = context.end ?? [\n { type: 'newline', offset: -1, indent, source: '\\n' }\n ];\n switch (source[0]) {\n case '|':\n case '>': {\n const he = source.indexOf('\\n');\n const head = source.substring(0, he);\n const body = source.substring(he + 1) + '\\n';\n const props = [\n { type: 'block-scalar-header', offset, indent, source: head }\n ];\n if (!addEndtoBlockProps(props, end))\n props.push({ type: 'newline', offset: -1, indent, source: '\\n' });\n return { type: 'block-scalar', offset, indent, props, source: body };\n }\n case '\"':\n return { type: 'double-quoted-scalar', offset, indent, source, end };\n case \"'\":\n return { type: 'single-quoted-scalar', offset, indent, source, end };\n default:\n return { type: 'scalar', offset, indent, source, end };\n }\n}\n/**\n * Set the value of `token` to the given string `value`, overwriting any previous contents and type that it may have.\n *\n * Best efforts are made to retain any comments previously associated with the `token`,\n * though all contents within a collection's `items` will be overwritten.\n *\n * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,\n * as this function does not support any schema operations and won't check for such conflicts.\n *\n * @param token Any token. If it does not include an `indent` value, the value will be stringified as if it were an implicit key.\n * @param value The string representation of the value, which will have its content properly indented.\n * @param context.afterKey In most cases, values after a key should have an additional level of indentation.\n * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.\n * @param context.inFlow Being within a flow collection may affect the resolved type of the token's value.\n * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.\n */\nfunction setScalarValue(token, value, context = {}) {\n let { afterKey = false, implicitKey = false, inFlow = false, type } = context;\n let indent = 'indent' in token ? token.indent : null;\n if (afterKey && typeof indent === 'number')\n indent += 2;\n if (!type)\n switch (token.type) {\n case 'single-quoted-scalar':\n type = 'QUOTE_SINGLE';\n break;\n case 'double-quoted-scalar':\n type = 'QUOTE_DOUBLE';\n break;\n case 'block-scalar': {\n const header = token.props[0];\n if (header.type !== 'block-scalar-header')\n throw new Error('Invalid block scalar header');\n type = header.source[0] === '>' ? 'BLOCK_FOLDED' : 'BLOCK_LITERAL';\n break;\n }\n default:\n type = 'PLAIN';\n }\n const source = stringifyString.stringifyString({ type, value }, {\n implicitKey: implicitKey || indent === null,\n indent: indent !== null && indent > 0 ? ' '.repeat(indent) : '',\n inFlow,\n options: { blockQuote: true, lineWidth: -1 }\n });\n switch (source[0]) {\n case '|':\n case '>':\n setBlockScalarValue(token, source);\n break;\n case '\"':\n setFlowScalarValue(token, source, 'double-quoted-scalar');\n break;\n case \"'\":\n setFlowScalarValue(token, source, 'single-quoted-scalar');\n break;\n default:\n setFlowScalarValue(token, source, 'scalar');\n }\n}\nfunction setBlockScalarValue(token, source) {\n const he = source.indexOf('\\n');\n const head = source.substring(0, he);\n const body = source.substring(he + 1) + '\\n';\n if (token.type === 'block-scalar') {\n const header = token.props[0];\n if (header.type !== 'block-scalar-header')\n throw new Error('Invalid block scalar header');\n header.source = head;\n token.source = body;\n }\n else {\n const { offset } = token;\n const indent = 'indent' in token ? token.indent : -1;\n const props = [\n { type: 'block-scalar-header', offset, indent, source: head }\n ];\n if (!addEndtoBlockProps(props, 'end' in token ? token.end : undefined))\n props.push({ type: 'newline', offset: -1, indent, source: '\\n' });\n for (const key of Object.keys(token))\n if (key !== 'type' && key !== 'offset')\n delete token[key];\n Object.assign(token, { type: 'block-scalar', indent, props, source: body });\n }\n}\n/** @returns `true` if last token is a newline */\nfunction addEndtoBlockProps(props, end) {\n if (end)\n for (const st of end)\n switch (st.type) {\n case 'space':\n case 'comment':\n props.push(st);\n break;\n case 'newline':\n props.push(st);\n return true;\n }\n return false;\n}\nfunction setFlowScalarValue(token, source, type) {\n switch (token.type) {\n case 'scalar':\n case 'double-quoted-scalar':\n case 'single-quoted-scalar':\n token.type = type;\n token.source = source;\n break;\n case 'block-scalar': {\n const end = token.props.slice(1);\n let oa = source.length;\n if (token.props[0].type === 'block-scalar-header')\n oa -= token.props[0].source.length;\n for (const tok of end)\n tok.offset += oa;\n delete token.props;\n Object.assign(token, { type, source, end });\n break;\n }\n case 'block-map':\n case 'block-seq': {\n const offset = token.offset + source.length;\n const nl = { type: 'newline', offset, indent: token.indent, source: '\\n' };\n delete token.items;\n Object.assign(token, { type, source, end: [nl] });\n break;\n }\n default: {\n const indent = 'indent' in token ? token.indent : -1;\n const end = 'end' in token && Array.isArray(token.end)\n ? token.end.filter(st => st.type === 'space' ||\n st.type === 'comment' ||\n st.type === 'newline')\n : [];\n for (const key of Object.keys(token))\n if (key !== 'type' && key !== 'offset')\n delete token[key];\n Object.assign(token, { type, indent, source, end });\n }\n }\n}\n\nexports.createScalarToken = createScalarToken;\nexports.resolveAsScalar = resolveAsScalar;\nexports.setScalarValue = setScalarValue;\n","'use strict';\n\n/**\n * Stringify a CST document, token, or collection item\n *\n * Fair warning: This applies no validation whatsoever, and\n * simply concatenates the sources in their logical order.\n */\nconst stringify = (cst) => 'type' in cst ? stringifyToken(cst) : stringifyItem(cst);\nfunction stringifyToken(token) {\n switch (token.type) {\n case 'block-scalar': {\n let res = '';\n for (const tok of token.props)\n res += stringifyToken(tok);\n return res + token.source;\n }\n case 'block-map':\n case 'block-seq': {\n let res = '';\n for (const item of token.items)\n res += stringifyItem(item);\n return res;\n }\n case 'flow-collection': {\n let res = token.start.source;\n for (const item of token.items)\n res += stringifyItem(item);\n for (const st of token.end)\n res += st.source;\n return res;\n }\n case 'document': {\n let res = stringifyItem(token);\n if (token.end)\n for (const st of token.end)\n res += st.source;\n return res;\n }\n default: {\n let res = token.source;\n if ('end' in token && token.end)\n for (const st of token.end)\n res += st.source;\n return res;\n }\n }\n}\nfunction stringifyItem({ start, key, sep, value }) {\n let res = '';\n for (const st of start)\n res += st.source;\n if (key)\n res += stringifyToken(key);\n if (sep)\n for (const st of sep)\n res += st.source;\n if (value)\n res += stringifyToken(value);\n return res;\n}\n\nexports.stringify = stringify;\n","'use strict';\n\nconst BREAK = Symbol('break visit');\nconst SKIP = Symbol('skip children');\nconst REMOVE = Symbol('remove item');\n/**\n * Apply a visitor to a CST document or item.\n *\n * Walks through the tree (depth-first) starting from the root, calling a\n * `visitor` function with two arguments when entering each item:\n * - `item`: The current item, which included the following members:\n * - `start: SourceToken[]` – Source tokens before the key or value,\n * possibly including its anchor or tag.\n * - `key?: Token | null` – Set for pair values. May then be `null`, if\n * the key before the `:` separator is empty.\n * - `sep?: SourceToken[]` – Source tokens between the key and the value,\n * which should include the `:` map value indicator if `value` is set.\n * - `value?: Token` – The value of a sequence item, or of a map pair.\n * - `path`: The steps from the root to the current node, as an array of\n * `['key' | 'value', number]` tuples.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this token, continue with\n * next sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current item, then continue with the next one\n * - `number`: Set the index of the next step. This is useful especially if\n * the index of the current token has changed.\n * - `function`: Define the next visitor for this item. After the original\n * visitor is called on item entry, next visitors are called after handling\n * a non-empty `key` and when exiting the item.\n */\nfunction visit(cst, visitor) {\n if ('type' in cst && cst.type === 'document')\n cst = { start: cst.start, value: cst.value };\n _visit(Object.freeze([]), cst, visitor);\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisit.BREAK = BREAK;\n/** Do not visit the children of the current item */\nvisit.SKIP = SKIP;\n/** Remove the current item */\nvisit.REMOVE = REMOVE;\n/** Find the item at `path` from `cst` as the root */\nvisit.itemAtPath = (cst, path) => {\n let item = cst;\n for (const [field, index] of path) {\n const tok = item?.[field];\n if (tok && 'items' in tok) {\n item = tok.items[index];\n }\n else\n return undefined;\n }\n return item;\n};\n/**\n * Get the immediate parent collection of the item at `path` from `cst` as the root.\n *\n * Throws an error if the collection is not found, which should never happen if the item itself exists.\n */\nvisit.parentCollection = (cst, path) => {\n const parent = visit.itemAtPath(cst, path.slice(0, -1));\n const field = path[path.length - 1][0];\n const coll = parent?.[field];\n if (coll && 'items' in coll)\n return coll;\n throw new Error('Parent collection not found');\n};\nfunction _visit(path, item, visitor) {\n let ctrl = visitor(item, path);\n if (typeof ctrl === 'symbol')\n return ctrl;\n for (const field of ['key', 'value']) {\n const token = item[field];\n if (token && 'items' in token) {\n for (let i = 0; i < token.items.length; ++i) {\n const ci = _visit(Object.freeze(path.concat([[field, i]])), token.items[i], visitor);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n token.items.splice(i, 1);\n i -= 1;\n }\n }\n if (typeof ctrl === 'function' && field === 'key')\n ctrl = ctrl(item, path);\n }\n }\n return typeof ctrl === 'function' ? ctrl(item, path) : ctrl;\n}\n\nexports.visit = visit;\n","'use strict';\n\nvar cstScalar = require('./cst-scalar.js');\nvar cstStringify = require('./cst-stringify.js');\nvar cstVisit = require('./cst-visit.js');\n\n/** The byte order mark */\nconst BOM = '\\u{FEFF}';\n/** Start of doc-mode */\nconst DOCUMENT = '\\x02'; // C0: Start of Text\n/** Unexpected end of flow-mode */\nconst FLOW_END = '\\x18'; // C0: Cancel\n/** Next token is a scalar value */\nconst SCALAR = '\\x1f'; // C0: Unit Separator\n/** @returns `true` if `token` is a flow or block collection */\nconst isCollection = (token) => !!token && 'items' in token;\n/** @returns `true` if `token` is a flow or block scalar; not an alias */\nconst isScalar = (token) => !!token &&\n (token.type === 'scalar' ||\n token.type === 'single-quoted-scalar' ||\n token.type === 'double-quoted-scalar' ||\n token.type === 'block-scalar');\n/* istanbul ignore next */\n/** Get a printable representation of a lexer token */\nfunction prettyToken(token) {\n switch (token) {\n case BOM:\n return '<BOM>';\n case DOCUMENT:\n return '<DOC>';\n case FLOW_END:\n return '<FLOW_END>';\n case SCALAR:\n return '<SCALAR>';\n default:\n return JSON.stringify(token);\n }\n}\n/** Identify the type of a lexer token. May return `null` for unknown tokens. */\nfunction tokenType(source) {\n switch (source) {\n case BOM:\n return 'byte-order-mark';\n case DOCUMENT:\n return 'doc-mode';\n case FLOW_END:\n return 'flow-error-end';\n case SCALAR:\n return 'scalar';\n case '---':\n return 'doc-start';\n case '...':\n return 'doc-end';\n case '':\n case '\\n':\n case '\\r\\n':\n return 'newline';\n case '-':\n return 'seq-item-ind';\n case '?':\n return 'explicit-key-ind';\n case ':':\n return 'map-value-ind';\n case '{':\n return 'flow-map-start';\n case '}':\n return 'flow-map-end';\n case '[':\n return 'flow-seq-start';\n case ']':\n return 'flow-seq-end';\n case ',':\n return 'comma';\n }\n switch (source[0]) {\n case ' ':\n case '\\t':\n return 'space';\n case '#':\n return 'comment';\n case '%':\n return 'directive-line';\n case '*':\n return 'alias';\n case '&':\n return 'anchor';\n case '!':\n return 'tag';\n case \"'\":\n return 'single-quoted-scalar';\n case '\"':\n return 'double-quoted-scalar';\n case '|':\n case '>':\n return 'block-scalar-header';\n }\n return null;\n}\n\nexports.createScalarToken = cstScalar.createScalarToken;\nexports.resolveAsScalar = cstScalar.resolveAsScalar;\nexports.setScalarValue = cstScalar.setScalarValue;\nexports.stringify = cstStringify.stringify;\nexports.visit = cstVisit.visit;\nexports.BOM = BOM;\nexports.DOCUMENT = DOCUMENT;\nexports.FLOW_END = FLOW_END;\nexports.SCALAR = SCALAR;\nexports.isCollection = isCollection;\nexports.isScalar = isScalar;\nexports.prettyToken = prettyToken;\nexports.tokenType = tokenType;\n","'use strict';\n\nvar cst = require('./cst.js');\n\n/*\nSTART -> stream\n\nstream\n directive -> line-end -> stream\n indent + line-end -> stream\n [else] -> line-start\n\nline-end\n comment -> line-end\n newline -> .\n input-end -> END\n\nline-start\n doc-start -> doc\n doc-end -> stream\n [else] -> indent -> block-start\n\nblock-start\n seq-item-start -> block-start\n explicit-key-start -> block-start\n map-value-start -> block-start\n [else] -> doc\n\ndoc\n line-end -> line-start\n spaces -> doc\n anchor -> doc\n tag -> doc\n flow-start -> flow -> doc\n flow-end -> error -> doc\n seq-item-start -> error -> doc\n explicit-key-start -> error -> doc\n map-value-start -> doc\n alias -> doc\n quote-start -> quoted-scalar -> doc\n block-scalar-header -> line-end -> block-scalar(min) -> line-start\n [else] -> plain-scalar(false, min) -> doc\n\nflow\n line-end -> flow\n spaces -> flow\n anchor -> flow\n tag -> flow\n flow-start -> flow -> flow\n flow-end -> .\n seq-item-start -> error -> flow\n explicit-key-start -> flow\n map-value-start -> flow\n alias -> flow\n quote-start -> quoted-scalar -> flow\n comma -> flow\n [else] -> plain-scalar(true, 0) -> flow\n\nquoted-scalar\n quote-end -> .\n [else] -> quoted-scalar\n\nblock-scalar(min)\n newline + peek(indent < min) -> .\n [else] -> block-scalar(min)\n\nplain-scalar(is-flow, min)\n scalar-end(is-flow) -> .\n peek(newline + (indent < min)) -> .\n [else] -> plain-scalar(min)\n*/\nfunction isEmpty(ch) {\n switch (ch) {\n case undefined:\n case ' ':\n case '\\n':\n case '\\r':\n case '\\t':\n return true;\n default:\n return false;\n }\n}\nconst hexDigits = new Set('0123456789ABCDEFabcdef');\nconst tagChars = new Set(\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()\");\nconst flowIndicatorChars = new Set(',[]{}');\nconst invalidAnchorChars = new Set(' ,[]{}\\n\\r\\t');\nconst isNotAnchorChar = (ch) => !ch || invalidAnchorChars.has(ch);\n/**\n * Splits an input string into lexical tokens, i.e. smaller strings that are\n * easily identifiable by `tokens.tokenType()`.\n *\n * Lexing starts always in a \"stream\" context. Incomplete input may be buffered\n * until a complete token can be emitted.\n *\n * In addition to slices of the original input, the following control characters\n * may also be emitted:\n *\n * - `\\x02` (Start of Text): A document starts with the next token\n * - `\\x18` (Cancel): Unexpected end of flow-mode (indicates an error)\n * - `\\x1f` (Unit Separator): Next token is a scalar value\n * - `\\u{FEFF}` (Byte order mark): Emitted separately outside documents\n */\nclass Lexer {\n constructor() {\n /**\n * Flag indicating whether the end of the current buffer marks the end of\n * all input\n */\n this.atEnd = false;\n /**\n * Explicit indent set in block scalar header, as an offset from the current\n * minimum indent, so e.g. set to 1 from a header `|2+`. Set to -1 if not\n * explicitly set.\n */\n this.blockScalarIndent = -1;\n /**\n * Block scalars that include a + (keep) chomping indicator in their header\n * include trailing empty lines, which are otherwise excluded from the\n * scalar's contents.\n */\n this.blockScalarKeep = false;\n /** Current input */\n this.buffer = '';\n /**\n * Flag noting whether the map value indicator : can immediately follow this\n * node within a flow context.\n */\n this.flowKey = false;\n /** Count of surrounding flow collection levels. */\n this.flowLevel = 0;\n /**\n * Minimum level of indentation required for next lines to be parsed as a\n * part of the current scalar value.\n */\n this.indentNext = 0;\n /** Indentation level of the current line. */\n this.indentValue = 0;\n /** Position of the next \\n character. */\n this.lineEndPos = null;\n /** Stores the state of the lexer if reaching the end of incpomplete input */\n this.next = null;\n /** A pointer to `buffer`; the current position of the lexer. */\n this.pos = 0;\n }\n /**\n * Generate YAML tokens from the `source` string. If `incomplete`,\n * a part of the last line may be left as a buffer for the next call.\n *\n * @returns A generator of lexical tokens\n */\n *lex(source, incomplete = false) {\n if (source) {\n if (typeof source !== 'string')\n throw TypeError('source is not a string');\n this.buffer = this.buffer ? this.buffer + source : source;\n this.lineEndPos = null;\n }\n this.atEnd = !incomplete;\n let next = this.next ?? 'stream';\n while (next && (incomplete || this.hasChars(1)))\n next = yield* this.parseNext(next);\n }\n atLineEnd() {\n let i = this.pos;\n let ch = this.buffer[i];\n while (ch === ' ' || ch === '\\t')\n ch = this.buffer[++i];\n if (!ch || ch === '#' || ch === '\\n')\n return true;\n if (ch === '\\r')\n return this.buffer[i + 1] === '\\n';\n return false;\n }\n charAt(n) {\n return this.buffer[this.pos + n];\n }\n continueScalar(offset) {\n let ch = this.buffer[offset];\n if (this.indentNext > 0) {\n let indent = 0;\n while (ch === ' ')\n ch = this.buffer[++indent + offset];\n if (ch === '\\r') {\n const next = this.buffer[indent + offset + 1];\n if (next === '\\n' || (!next && !this.atEnd))\n return offset + indent + 1;\n }\n return ch === '\\n' || indent >= this.indentNext || (!ch && !this.atEnd)\n ? offset + indent\n : -1;\n }\n if (ch === '-' || ch === '.') {\n const dt = this.buffer.substr(offset, 3);\n if ((dt === '---' || dt === '...') && isEmpty(this.buffer[offset + 3]))\n return -1;\n }\n return offset;\n }\n getLine() {\n let end = this.lineEndPos;\n if (typeof end !== 'number' || (end !== -1 && end < this.pos)) {\n end = this.buffer.indexOf('\\n', this.pos);\n this.lineEndPos = end;\n }\n if (end === -1)\n return this.atEnd ? this.buffer.substring(this.pos) : null;\n if (this.buffer[end - 1] === '\\r')\n end -= 1;\n return this.buffer.substring(this.pos, end);\n }\n hasChars(n) {\n return this.pos + n <= this.buffer.length;\n }\n setNext(state) {\n this.buffer = this.buffer.substring(this.pos);\n this.pos = 0;\n this.lineEndPos = null;\n this.next = state;\n return null;\n }\n peek(n) {\n return this.buffer.substr(this.pos, n);\n }\n *parseNext(next) {\n switch (next) {\n case 'stream':\n return yield* this.parseStream();\n case 'line-start':\n return yield* this.parseLineStart();\n case 'block-start':\n return yield* this.parseBlockStart();\n case 'doc':\n return yield* this.parseDocument();\n case 'flow':\n return yield* this.parseFlowCollection();\n case 'quoted-scalar':\n return yield* this.parseQuotedScalar();\n case 'block-scalar':\n return yield* this.parseBlockScalar();\n case 'plain-scalar':\n return yield* this.parsePlainScalar();\n }\n }\n *parseStream() {\n let line = this.getLine();\n if (line === null)\n return this.setNext('stream');\n if (line[0] === cst.BOM) {\n yield* this.pushCount(1);\n line = line.substring(1);\n }\n if (line[0] === '%') {\n let dirEnd = line.length;\n let cs = line.indexOf('#');\n while (cs !== -1) {\n const ch = line[cs - 1];\n if (ch === ' ' || ch === '\\t') {\n dirEnd = cs - 1;\n break;\n }\n else {\n cs = line.indexOf('#', cs + 1);\n }\n }\n while (true) {\n const ch = line[dirEnd - 1];\n if (ch === ' ' || ch === '\\t')\n dirEnd -= 1;\n else\n break;\n }\n const n = (yield* this.pushCount(dirEnd)) + (yield* this.pushSpaces(true));\n yield* this.pushCount(line.length - n); // possible comment\n this.pushNewline();\n return 'stream';\n }\n if (this.atLineEnd()) {\n const sp = yield* this.pushSpaces(true);\n yield* this.pushCount(line.length - sp);\n yield* this.pushNewline();\n return 'stream';\n }\n yield cst.DOCUMENT;\n return yield* this.parseLineStart();\n }\n *parseLineStart() {\n const ch = this.charAt(0);\n if (!ch && !this.atEnd)\n return this.setNext('line-start');\n if (ch === '-' || ch === '.') {\n if (!this.atEnd && !this.hasChars(4))\n return this.setNext('line-start');\n const s = this.peek(3);\n if ((s === '---' || s === '...') && isEmpty(this.charAt(3))) {\n yield* this.pushCount(3);\n this.indentValue = 0;\n this.indentNext = 0;\n return s === '---' ? 'doc' : 'stream';\n }\n }\n this.indentValue = yield* this.pushSpaces(false);\n if (this.indentNext > this.indentValue && !isEmpty(this.charAt(1)))\n this.indentNext = this.indentValue;\n return yield* this.parseBlockStart();\n }\n *parseBlockStart() {\n const [ch0, ch1] = this.peek(2);\n if (!ch1 && !this.atEnd)\n return this.setNext('block-start');\n if ((ch0 === '-' || ch0 === '?' || ch0 === ':') && isEmpty(ch1)) {\n const n = (yield* this.pushCount(1)) + (yield* this.pushSpaces(true));\n this.indentNext = this.indentValue + 1;\n this.indentValue += n;\n return yield* this.parseBlockStart();\n }\n return 'doc';\n }\n *parseDocument() {\n yield* this.pushSpaces(true);\n const line = this.getLine();\n if (line === null)\n return this.setNext('doc');\n let n = yield* this.pushIndicators();\n switch (line[n]) {\n case '#':\n yield* this.pushCount(line.length - n);\n // fallthrough\n case undefined:\n yield* this.pushNewline();\n return yield* this.parseLineStart();\n case '{':\n case '[':\n yield* this.pushCount(1);\n this.flowKey = false;\n this.flowLevel = 1;\n return 'flow';\n case '}':\n case ']':\n // this is an error\n yield* this.pushCount(1);\n return 'doc';\n case '*':\n yield* this.pushUntil(isNotAnchorChar);\n return 'doc';\n case '\"':\n case \"'\":\n return yield* this.parseQuotedScalar();\n case '|':\n case '>':\n n += yield* this.parseBlockScalarHeader();\n n += yield* this.pushSpaces(true);\n yield* this.pushCount(line.length - n);\n yield* this.pushNewline();\n return yield* this.parseBlockScalar();\n default:\n return yield* this.parsePlainScalar();\n }\n }\n *parseFlowCollection() {\n let nl, sp;\n let indent = -1;\n do {\n nl = yield* this.pushNewline();\n if (nl > 0) {\n sp = yield* this.pushSpaces(false);\n this.indentValue = indent = sp;\n }\n else {\n sp = 0;\n }\n sp += yield* this.pushSpaces(true);\n } while (nl + sp > 0);\n const line = this.getLine();\n if (line === null)\n return this.setNext('flow');\n if ((indent !== -1 && indent < this.indentNext && line[0] !== '#') ||\n (indent === 0 &&\n (line.startsWith('---') || line.startsWith('...')) &&\n isEmpty(line[3]))) {\n // Allowing for the terminal ] or } at the same (rather than greater)\n // indent level as the initial [ or { is technically invalid, but\n // failing here would be surprising to users.\n const atFlowEndMarker = indent === this.indentNext - 1 &&\n this.flowLevel === 1 &&\n (line[0] === ']' || line[0] === '}');\n if (!atFlowEndMarker) {\n // this is an error\n this.flowLevel = 0;\n yield cst.FLOW_END;\n return yield* this.parseLineStart();\n }\n }\n let n = 0;\n while (line[n] === ',') {\n n += yield* this.pushCount(1);\n n += yield* this.pushSpaces(true);\n this.flowKey = false;\n }\n n += yield* this.pushIndicators();\n switch (line[n]) {\n case undefined:\n return 'flow';\n case '#':\n yield* this.pushCount(line.length - n);\n return 'flow';\n case '{':\n case '[':\n yield* this.pushCount(1);\n this.flowKey = false;\n this.flowLevel += 1;\n return 'flow';\n case '}':\n case ']':\n yield* this.pushCount(1);\n this.flowKey = true;\n this.flowLevel -= 1;\n return this.flowLevel ? 'flow' : 'doc';\n case '*':\n yield* this.pushUntil(isNotAnchorChar);\n return 'flow';\n case '\"':\n case \"'\":\n this.flowKey = true;\n return yield* this.parseQuotedScalar();\n case ':': {\n const next = this.charAt(1);\n if (this.flowKey || isEmpty(next) || next === ',') {\n this.flowKey = false;\n yield* this.pushCount(1);\n yield* this.pushSpaces(true);\n return 'flow';\n }\n }\n // fallthrough\n default:\n this.flowKey = false;\n return yield* this.parsePlainScalar();\n }\n }\n *parseQuotedScalar() {\n const quote = this.charAt(0);\n let end = this.buffer.indexOf(quote, this.pos + 1);\n if (quote === \"'\") {\n while (end !== -1 && this.buffer[end + 1] === \"'\")\n end = this.buffer.indexOf(\"'\", end + 2);\n }\n else {\n // double-quote\n while (end !== -1) {\n let n = 0;\n while (this.buffer[end - 1 - n] === '\\\\')\n n += 1;\n if (n % 2 === 0)\n break;\n end = this.buffer.indexOf('\"', end + 1);\n }\n }\n // Only looking for newlines within the quotes\n const qb = this.buffer.substring(0, end);\n let nl = qb.indexOf('\\n', this.pos);\n if (nl !== -1) {\n while (nl !== -1) {\n const cs = this.continueScalar(nl + 1);\n if (cs === -1)\n break;\n nl = qb.indexOf('\\n', cs);\n }\n if (nl !== -1) {\n // this is an error caused by an unexpected unindent\n end = nl - (qb[nl - 1] === '\\r' ? 2 : 1);\n }\n }\n if (end === -1) {\n if (!this.atEnd)\n return this.setNext('quoted-scalar');\n end = this.buffer.length;\n }\n yield* this.pushToIndex(end + 1, false);\n return this.flowLevel ? 'flow' : 'doc';\n }\n *parseBlockScalarHeader() {\n this.blockScalarIndent = -1;\n this.blockScalarKeep = false;\n let i = this.pos;\n while (true) {\n const ch = this.buffer[++i];\n if (ch === '+')\n this.blockScalarKeep = true;\n else if (ch > '0' && ch <= '9')\n this.blockScalarIndent = Number(ch) - 1;\n else if (ch !== '-')\n break;\n }\n return yield* this.pushUntil(ch => isEmpty(ch) || ch === '#');\n }\n *parseBlockScalar() {\n let nl = this.pos - 1; // may be -1 if this.pos === 0\n let indent = 0;\n let ch;\n loop: for (let i = this.pos; (ch = this.buffer[i]); ++i) {\n switch (ch) {\n case ' ':\n indent += 1;\n break;\n case '\\n':\n nl = i;\n indent = 0;\n break;\n case '\\r': {\n const next = this.buffer[i + 1];\n if (!next && !this.atEnd)\n return this.setNext('block-scalar');\n if (next === '\\n')\n break;\n } // fallthrough\n default:\n break loop;\n }\n }\n if (!ch && !this.atEnd)\n return this.setNext('block-scalar');\n if (indent >= this.indentNext) {\n if (this.blockScalarIndent === -1)\n this.indentNext = indent;\n else {\n this.indentNext =\n this.blockScalarIndent + (this.indentNext === 0 ? 1 : this.indentNext);\n }\n do {\n const cs = this.continueScalar(nl + 1);\n if (cs === -1)\n break;\n nl = this.buffer.indexOf('\\n', cs);\n } while (nl !== -1);\n if (nl === -1) {\n if (!this.atEnd)\n return this.setNext('block-scalar');\n nl = this.buffer.length;\n }\n }\n // Trailing insufficiently indented tabs are invalid.\n // To catch that during parsing, we include them in the block scalar value.\n let i = nl + 1;\n ch = this.buffer[i];\n while (ch === ' ')\n ch = this.buffer[++i];\n if (ch === '\\t') {\n while (ch === '\\t' || ch === ' ' || ch === '\\r' || ch === '\\n')\n ch = this.buffer[++i];\n nl = i - 1;\n }\n else if (!this.blockScalarKeep) {\n do {\n let i = nl - 1;\n let ch = this.buffer[i];\n if (ch === '\\r')\n ch = this.buffer[--i];\n const lastChar = i; // Drop the line if last char not more indented\n while (ch === ' ')\n ch = this.buffer[--i];\n if (ch === '\\n' && i >= this.pos && i + 1 + indent > lastChar)\n nl = i;\n else\n break;\n } while (true);\n }\n yield cst.SCALAR;\n yield* this.pushToIndex(nl + 1, true);\n return yield* this.parseLineStart();\n }\n *parsePlainScalar() {\n const inFlow = this.flowLevel > 0;\n let end = this.pos - 1;\n let i = this.pos - 1;\n let ch;\n while ((ch = this.buffer[++i])) {\n if (ch === ':') {\n const next = this.buffer[i + 1];\n if (isEmpty(next) || (inFlow && flowIndicatorChars.has(next)))\n break;\n end = i;\n }\n else if (isEmpty(ch)) {\n let next = this.buffer[i + 1];\n if (ch === '\\r') {\n if (next === '\\n') {\n i += 1;\n ch = '\\n';\n next = this.buffer[i + 1];\n }\n else\n end = i;\n }\n if (next === '#' || (inFlow && flowIndicatorChars.has(next)))\n break;\n if (ch === '\\n') {\n const cs = this.continueScalar(i + 1);\n if (cs === -1)\n break;\n i = Math.max(i, cs - 2); // to advance, but still account for ' #'\n }\n }\n else {\n if (inFlow && flowIndicatorChars.has(ch))\n break;\n end = i;\n }\n }\n if (!ch && !this.atEnd)\n return this.setNext('plain-scalar');\n yield cst.SCALAR;\n yield* this.pushToIndex(end + 1, true);\n return inFlow ? 'flow' : 'doc';\n }\n *pushCount(n) {\n if (n > 0) {\n yield this.buffer.substr(this.pos, n);\n this.pos += n;\n return n;\n }\n return 0;\n }\n *pushToIndex(i, allowEmpty) {\n const s = this.buffer.slice(this.pos, i);\n if (s) {\n yield s;\n this.pos += s.length;\n return s.length;\n }\n else if (allowEmpty)\n yield '';\n return 0;\n }\n *pushIndicators() {\n switch (this.charAt(0)) {\n case '!':\n return ((yield* this.pushTag()) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n case '&':\n return ((yield* this.pushUntil(isNotAnchorChar)) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n case '-': // this is an error\n case '?': // this is an error outside flow collections\n case ':': {\n const inFlow = this.flowLevel > 0;\n const ch1 = this.charAt(1);\n if (isEmpty(ch1) || (inFlow && flowIndicatorChars.has(ch1))) {\n if (!inFlow)\n this.indentNext = this.indentValue + 1;\n else if (this.flowKey)\n this.flowKey = false;\n return ((yield* this.pushCount(1)) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n }\n }\n }\n return 0;\n }\n *pushTag() {\n if (this.charAt(1) === '<') {\n let i = this.pos + 2;\n let ch = this.buffer[i];\n while (!isEmpty(ch) && ch !== '>')\n ch = this.buffer[++i];\n return yield* this.pushToIndex(ch === '>' ? i + 1 : i, false);\n }\n else {\n let i = this.pos + 1;\n let ch = this.buffer[i];\n while (ch) {\n if (tagChars.has(ch))\n ch = this.buffer[++i];\n else if (ch === '%' &&\n hexDigits.has(this.buffer[i + 1]) &&\n hexDigits.has(this.buffer[i + 2])) {\n ch = this.buffer[(i += 3)];\n }\n else\n break;\n }\n return yield* this.pushToIndex(i, false);\n }\n }\n *pushNewline() {\n const ch = this.buffer[this.pos];\n if (ch === '\\n')\n return yield* this.pushCount(1);\n else if (ch === '\\r' && this.charAt(1) === '\\n')\n return yield* this.pushCount(2);\n else\n return 0;\n }\n *pushSpaces(allowTabs) {\n let i = this.pos - 1;\n let ch;\n do {\n ch = this.buffer[++i];\n } while (ch === ' ' || (allowTabs && ch === '\\t'));\n const n = i - this.pos;\n if (n > 0) {\n yield this.buffer.substr(this.pos, n);\n this.pos = i;\n }\n return n;\n }\n *pushUntil(test) {\n let i = this.pos;\n let ch = this.buffer[i];\n while (!test(ch))\n ch = this.buffer[++i];\n return yield* this.pushToIndex(i, false);\n }\n}\n\nexports.Lexer = Lexer;\n","'use strict';\n\n/**\n * Tracks newlines during parsing in order to provide an efficient API for\n * determining the one-indexed `{ line, col }` position for any offset\n * within the input.\n */\nclass LineCounter {\n constructor() {\n this.lineStarts = [];\n /**\n * Should be called in ascending order. Otherwise, call\n * `lineCounter.lineStarts.sort()` before calling `linePos()`.\n */\n this.addNewLine = (offset) => this.lineStarts.push(offset);\n /**\n * Performs a binary search and returns the 1-indexed { line, col }\n * position of `offset`. If `line === 0`, `addNewLine` has never been\n * called or `offset` is before the first known newline.\n */\n this.linePos = (offset) => {\n let low = 0;\n let high = this.lineStarts.length;\n while (low < high) {\n const mid = (low + high) >> 1; // Math.floor((low + high) / 2)\n if (this.lineStarts[mid] < offset)\n low = mid + 1;\n else\n high = mid;\n }\n if (this.lineStarts[low] === offset)\n return { line: low + 1, col: 1 };\n if (low === 0)\n return { line: 0, col: offset };\n const start = this.lineStarts[low - 1];\n return { line: low, col: offset - start + 1 };\n };\n }\n}\n\nexports.LineCounter = LineCounter;\n","'use strict';\n\nvar node_process = require('process');\nvar cst = require('./cst.js');\nvar lexer = require('./lexer.js');\n\nfunction includesToken(list, type) {\n for (let i = 0; i < list.length; ++i)\n if (list[i].type === type)\n return true;\n return false;\n}\nfunction findNonEmptyIndex(list) {\n for (let i = 0; i < list.length; ++i) {\n switch (list[i].type) {\n case 'space':\n case 'comment':\n case 'newline':\n break;\n default:\n return i;\n }\n }\n return -1;\n}\nfunction isFlowToken(token) {\n switch (token?.type) {\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n case 'flow-collection':\n return true;\n default:\n return false;\n }\n}\nfunction getPrevProps(parent) {\n switch (parent.type) {\n case 'document':\n return parent.start;\n case 'block-map': {\n const it = parent.items[parent.items.length - 1];\n return it.sep ?? it.start;\n }\n case 'block-seq':\n return parent.items[parent.items.length - 1].start;\n /* istanbul ignore next should not happen */\n default:\n return [];\n }\n}\n/** Note: May modify input array */\nfunction getFirstKeyStartProps(prev) {\n if (prev.length === 0)\n return [];\n let i = prev.length;\n loop: while (--i >= 0) {\n switch (prev[i].type) {\n case 'doc-start':\n case 'explicit-key-ind':\n case 'map-value-ind':\n case 'seq-item-ind':\n case 'newline':\n break loop;\n }\n }\n while (prev[++i]?.type === 'space') {\n /* loop */\n }\n return prev.splice(i, prev.length);\n}\nfunction fixFlowSeqItems(fc) {\n if (fc.start.type === 'flow-seq-start') {\n for (const it of fc.items) {\n if (it.sep &&\n !it.value &&\n !includesToken(it.start, 'explicit-key-ind') &&\n !includesToken(it.sep, 'map-value-ind')) {\n if (it.key)\n it.value = it.key;\n delete it.key;\n if (isFlowToken(it.value)) {\n if (it.value.end)\n Array.prototype.push.apply(it.value.end, it.sep);\n else\n it.value.end = it.sep;\n }\n else\n Array.prototype.push.apply(it.start, it.sep);\n delete it.sep;\n }\n }\n }\n}\n/**\n * A YAML concrete syntax tree (CST) parser\n *\n * ```ts\n * const src: string = ...\n * for (const token of new Parser().parse(src)) {\n * // token: Token\n * }\n * ```\n *\n * To use the parser with a user-provided lexer:\n *\n * ```ts\n * function* parse(source: string, lexer: Lexer) {\n * const parser = new Parser()\n * for (const lexeme of lexer.lex(source))\n * yield* parser.next(lexeme)\n * yield* parser.end()\n * }\n *\n * const src: string = ...\n * const lexer = new Lexer()\n * for (const token of parse(src, lexer)) {\n * // token: Token\n * }\n * ```\n */\nclass Parser {\n /**\n * @param onNewLine - If defined, called separately with the start position of\n * each new line (in `parse()`, including the start of input).\n */\n constructor(onNewLine) {\n /** If true, space and sequence indicators count as indentation */\n this.atNewLine = true;\n /** If true, next token is a scalar value */\n this.atScalar = false;\n /** Current indentation level */\n this.indent = 0;\n /** Current offset since the start of parsing */\n this.offset = 0;\n /** On the same line with a block map key */\n this.onKeyLine = false;\n /** Top indicates the node that's currently being built */\n this.stack = [];\n /** The source of the current token, set in parse() */\n this.source = '';\n /** The type of the current token, set in parse() */\n this.type = '';\n // Must be defined after `next()`\n this.lexer = new lexer.Lexer();\n this.onNewLine = onNewLine;\n }\n /**\n * Parse `source` as a YAML stream.\n * If `incomplete`, a part of the last line may be left as a buffer for the next call.\n *\n * Errors are not thrown, but yielded as `{ type: 'error', message }` tokens.\n *\n * @returns A generator of tokens representing each directive, document, and other structure.\n */\n *parse(source, incomplete = false) {\n if (this.onNewLine && this.offset === 0)\n this.onNewLine(0);\n for (const lexeme of this.lexer.lex(source, incomplete))\n yield* this.next(lexeme);\n if (!incomplete)\n yield* this.end();\n }\n /**\n * Advance the parser by the `source` of one lexical token.\n */\n *next(source) {\n this.source = source;\n if (node_process.env.LOG_TOKENS)\n console.log('|', cst.prettyToken(source));\n if (this.atScalar) {\n this.atScalar = false;\n yield* this.step();\n this.offset += source.length;\n return;\n }\n const type = cst.tokenType(source);\n if (!type) {\n const message = `Not a YAML token: ${source}`;\n yield* this.pop({ type: 'error', offset: this.offset, message, source });\n this.offset += source.length;\n }\n else if (type === 'scalar') {\n this.atNewLine = false;\n this.atScalar = true;\n this.type = 'scalar';\n }\n else {\n this.type = type;\n yield* this.step();\n switch (type) {\n case 'newline':\n this.atNewLine = true;\n this.indent = 0;\n if (this.onNewLine)\n this.onNewLine(this.offset + source.length);\n break;\n case 'space':\n if (this.atNewLine && source[0] === ' ')\n this.indent += source.length;\n break;\n case 'explicit-key-ind':\n case 'map-value-ind':\n case 'seq-item-ind':\n if (this.atNewLine)\n this.indent += source.length;\n break;\n case 'doc-mode':\n case 'flow-error-end':\n return;\n default:\n this.atNewLine = false;\n }\n this.offset += source.length;\n }\n }\n /** Call at end of input to push out any remaining constructions */\n *end() {\n while (this.stack.length > 0)\n yield* this.pop();\n }\n get sourceToken() {\n const st = {\n type: this.type,\n offset: this.offset,\n indent: this.indent,\n source: this.source\n };\n return st;\n }\n *step() {\n const top = this.peek(1);\n if (this.type === 'doc-end' && top?.type !== 'doc-end') {\n while (this.stack.length > 0)\n yield* this.pop();\n this.stack.push({\n type: 'doc-end',\n offset: this.offset,\n source: this.source\n });\n return;\n }\n if (!top)\n return yield* this.stream();\n switch (top.type) {\n case 'document':\n return yield* this.document(top);\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return yield* this.scalar(top);\n case 'block-scalar':\n return yield* this.blockScalar(top);\n case 'block-map':\n return yield* this.blockMap(top);\n case 'block-seq':\n return yield* this.blockSequence(top);\n case 'flow-collection':\n return yield* this.flowCollection(top);\n case 'doc-end':\n return yield* this.documentEnd(top);\n }\n /* istanbul ignore next should not happen */\n yield* this.pop();\n }\n peek(n) {\n return this.stack[this.stack.length - n];\n }\n *pop(error) {\n const token = error ?? this.stack.pop();\n /* istanbul ignore if should not happen */\n if (!token) {\n const message = 'Tried to pop an empty stack';\n yield { type: 'error', offset: this.offset, source: '', message };\n }\n else if (this.stack.length === 0) {\n yield token;\n }\n else {\n const top = this.peek(1);\n if (token.type === 'block-scalar') {\n // Block scalars use their parent rather than header indent\n token.indent = 'indent' in top ? top.indent : 0;\n }\n else if (token.type === 'flow-collection' && top.type === 'document') {\n // Ignore all indent for top-level flow collections\n token.indent = 0;\n }\n if (token.type === 'flow-collection')\n fixFlowSeqItems(token);\n switch (top.type) {\n case 'document':\n top.value = token;\n break;\n case 'block-scalar':\n top.props.push(token); // error\n break;\n case 'block-map': {\n const it = top.items[top.items.length - 1];\n if (it.value) {\n top.items.push({ start: [], key: token, sep: [] });\n this.onKeyLine = true;\n return;\n }\n else if (it.sep) {\n it.value = token;\n }\n else {\n Object.assign(it, { key: token, sep: [] });\n this.onKeyLine = !it.explicitKey;\n return;\n }\n break;\n }\n case 'block-seq': {\n const it = top.items[top.items.length - 1];\n if (it.value)\n top.items.push({ start: [], value: token });\n else\n it.value = token;\n break;\n }\n case 'flow-collection': {\n const it = top.items[top.items.length - 1];\n if (!it || it.value)\n top.items.push({ start: [], key: token, sep: [] });\n else if (it.sep)\n it.value = token;\n else\n Object.assign(it, { key: token, sep: [] });\n return;\n }\n /* istanbul ignore next should not happen */\n default:\n yield* this.pop();\n yield* this.pop(token);\n }\n if ((top.type === 'document' ||\n top.type === 'block-map' ||\n top.type === 'block-seq') &&\n (token.type === 'block-map' || token.type === 'block-seq')) {\n const last = token.items[token.items.length - 1];\n if (last &&\n !last.sep &&\n !last.value &&\n last.start.length > 0 &&\n findNonEmptyIndex(last.start) === -1 &&\n (token.indent === 0 ||\n last.start.every(st => st.type !== 'comment' || st.indent < token.indent))) {\n if (top.type === 'document')\n top.end = last.start;\n else\n top.items.push({ start: last.start });\n token.items.splice(-1, 1);\n }\n }\n }\n }\n *stream() {\n switch (this.type) {\n case 'directive-line':\n yield { type: 'directive', offset: this.offset, source: this.source };\n return;\n case 'byte-order-mark':\n case 'space':\n case 'comment':\n case 'newline':\n yield this.sourceToken;\n return;\n case 'doc-mode':\n case 'doc-start': {\n const doc = {\n type: 'document',\n offset: this.offset,\n start: []\n };\n if (this.type === 'doc-start')\n doc.start.push(this.sourceToken);\n this.stack.push(doc);\n return;\n }\n }\n yield {\n type: 'error',\n offset: this.offset,\n message: `Unexpected ${this.type} token in YAML stream`,\n source: this.source\n };\n }\n *document(doc) {\n if (doc.value)\n return yield* this.lineEnd(doc);\n switch (this.type) {\n case 'doc-start': {\n if (findNonEmptyIndex(doc.start) !== -1) {\n yield* this.pop();\n yield* this.step();\n }\n else\n doc.start.push(this.sourceToken);\n return;\n }\n case 'anchor':\n case 'tag':\n case 'space':\n case 'comment':\n case 'newline':\n doc.start.push(this.sourceToken);\n return;\n }\n const bv = this.startBlockValue(doc);\n if (bv)\n this.stack.push(bv);\n else {\n yield {\n type: 'error',\n offset: this.offset,\n message: `Unexpected ${this.type} token in YAML document`,\n source: this.source\n };\n }\n }\n *scalar(scalar) {\n if (this.type === 'map-value-ind') {\n const prev = getPrevProps(this.peek(2));\n const start = getFirstKeyStartProps(prev);\n let sep;\n if (scalar.end) {\n sep = scalar.end;\n sep.push(this.sourceToken);\n delete scalar.end;\n }\n else\n sep = [this.sourceToken];\n const map = {\n type: 'block-map',\n offset: scalar.offset,\n indent: scalar.indent,\n items: [{ start, key: scalar, sep }]\n };\n this.onKeyLine = true;\n this.stack[this.stack.length - 1] = map;\n }\n else\n yield* this.lineEnd(scalar);\n }\n *blockScalar(scalar) {\n switch (this.type) {\n case 'space':\n case 'comment':\n case 'newline':\n scalar.props.push(this.sourceToken);\n return;\n case 'scalar':\n scalar.source = this.source;\n // block-scalar source includes trailing newline\n this.atNewLine = true;\n this.indent = 0;\n if (this.onNewLine) {\n let nl = this.source.indexOf('\\n') + 1;\n while (nl !== 0) {\n this.onNewLine(this.offset + nl);\n nl = this.source.indexOf('\\n', nl) + 1;\n }\n }\n yield* this.pop();\n break;\n /* istanbul ignore next should not happen */\n default:\n yield* this.pop();\n yield* this.step();\n }\n }\n *blockMap(map) {\n const it = map.items[map.items.length - 1];\n // it.sep is true-ish if pair already has key or : separator\n switch (this.type) {\n case 'newline':\n this.onKeyLine = false;\n if (it.value) {\n const end = 'end' in it.value ? it.value.end : undefined;\n const last = Array.isArray(end) ? end[end.length - 1] : undefined;\n if (last?.type === 'comment')\n end?.push(this.sourceToken);\n else\n map.items.push({ start: [this.sourceToken] });\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n it.start.push(this.sourceToken);\n }\n return;\n case 'space':\n case 'comment':\n if (it.value) {\n map.items.push({ start: [this.sourceToken] });\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n if (this.atIndentedComment(it.start, map.indent)) {\n const prev = map.items[map.items.length - 2];\n const end = prev?.value?.end;\n if (Array.isArray(end)) {\n Array.prototype.push.apply(end, it.start);\n end.push(this.sourceToken);\n map.items.pop();\n return;\n }\n }\n it.start.push(this.sourceToken);\n }\n return;\n }\n if (this.indent >= map.indent) {\n const atMapIndent = !this.onKeyLine && this.indent === map.indent;\n const atNextItem = atMapIndent &&\n (it.sep || it.explicitKey) &&\n this.type !== 'seq-item-ind';\n // For empty nodes, assign newline-separated not indented empty tokens to following node\n let start = [];\n if (atNextItem && it.sep && !it.value) {\n const nl = [];\n for (let i = 0; i < it.sep.length; ++i) {\n const st = it.sep[i];\n switch (st.type) {\n case 'newline':\n nl.push(i);\n break;\n case 'space':\n break;\n case 'comment':\n if (st.indent > map.indent)\n nl.length = 0;\n break;\n default:\n nl.length = 0;\n }\n }\n if (nl.length >= 2)\n start = it.sep.splice(nl[1]);\n }\n switch (this.type) {\n case 'anchor':\n case 'tag':\n if (atNextItem || it.value) {\n start.push(this.sourceToken);\n map.items.push({ start });\n this.onKeyLine = true;\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n it.start.push(this.sourceToken);\n }\n return;\n case 'explicit-key-ind':\n if (!it.sep && !it.explicitKey) {\n it.start.push(this.sourceToken);\n it.explicitKey = true;\n }\n else if (atNextItem || it.value) {\n start.push(this.sourceToken);\n map.items.push({ start, explicitKey: true });\n }\n else {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [this.sourceToken], explicitKey: true }]\n });\n }\n this.onKeyLine = true;\n return;\n case 'map-value-ind':\n if (it.explicitKey) {\n if (!it.sep) {\n if (includesToken(it.start, 'newline')) {\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n }\n else {\n const start = getFirstKeyStartProps(it.start);\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n });\n }\n }\n else if (it.value) {\n map.items.push({ start: [], key: null, sep: [this.sourceToken] });\n }\n else if (includesToken(it.sep, 'map-value-ind')) {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n });\n }\n else if (isFlowToken(it.key) &&\n !includesToken(it.sep, 'newline')) {\n const start = getFirstKeyStartProps(it.start);\n const key = it.key;\n const sep = it.sep;\n sep.push(this.sourceToken);\n // @ts-expect-error type guard is wrong here\n delete it.key;\n // @ts-expect-error type guard is wrong here\n delete it.sep;\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key, sep }]\n });\n }\n else if (start.length > 0) {\n // Not actually at next item\n it.sep = it.sep.concat(start, this.sourceToken);\n }\n else {\n it.sep.push(this.sourceToken);\n }\n }\n else {\n if (!it.sep) {\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n }\n else if (it.value || atNextItem) {\n map.items.push({ start, key: null, sep: [this.sourceToken] });\n }\n else if (includesToken(it.sep, 'map-value-ind')) {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [], key: null, sep: [this.sourceToken] }]\n });\n }\n else {\n it.sep.push(this.sourceToken);\n }\n }\n this.onKeyLine = true;\n return;\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar': {\n const fs = this.flowScalar(this.type);\n if (atNextItem || it.value) {\n map.items.push({ start, key: fs, sep: [] });\n this.onKeyLine = true;\n }\n else if (it.sep) {\n this.stack.push(fs);\n }\n else {\n Object.assign(it, { key: fs, sep: [] });\n this.onKeyLine = true;\n }\n return;\n }\n default: {\n const bv = this.startBlockValue(map);\n if (bv) {\n if (bv.type === 'block-seq') {\n if (!it.explicitKey &&\n it.sep &&\n !includesToken(it.sep, 'newline')) {\n yield* this.pop({\n type: 'error',\n offset: this.offset,\n message: 'Unexpected block-seq-ind on same line with key',\n source: this.source\n });\n return;\n }\n }\n else if (atMapIndent) {\n map.items.push({ start });\n }\n this.stack.push(bv);\n return;\n }\n }\n }\n }\n yield* this.pop();\n yield* this.step();\n }\n *blockSequence(seq) {\n const it = seq.items[seq.items.length - 1];\n switch (this.type) {\n case 'newline':\n if (it.value) {\n const end = 'end' in it.value ? it.value.end : undefined;\n const last = Array.isArray(end) ? end[end.length - 1] : undefined;\n if (last?.type === 'comment')\n end?.push(this.sourceToken);\n else\n seq.items.push({ start: [this.sourceToken] });\n }\n else\n it.start.push(this.sourceToken);\n return;\n case 'space':\n case 'comment':\n if (it.value)\n seq.items.push({ start: [this.sourceToken] });\n else {\n if (this.atIndentedComment(it.start, seq.indent)) {\n const prev = seq.items[seq.items.length - 2];\n const end = prev?.value?.end;\n if (Array.isArray(end)) {\n Array.prototype.push.apply(end, it.start);\n end.push(this.sourceToken);\n seq.items.pop();\n return;\n }\n }\n it.start.push(this.sourceToken);\n }\n return;\n case 'anchor':\n case 'tag':\n if (it.value || this.indent <= seq.indent)\n break;\n it.start.push(this.sourceToken);\n return;\n case 'seq-item-ind':\n if (this.indent !== seq.indent)\n break;\n if (it.value || includesToken(it.start, 'seq-item-ind'))\n seq.items.push({ start: [this.sourceToken] });\n else\n it.start.push(this.sourceToken);\n return;\n }\n if (this.indent > seq.indent) {\n const bv = this.startBlockValue(seq);\n if (bv) {\n this.stack.push(bv);\n return;\n }\n }\n yield* this.pop();\n yield* this.step();\n }\n *flowCollection(fc) {\n const it = fc.items[fc.items.length - 1];\n if (this.type === 'flow-error-end') {\n let top;\n do {\n yield* this.pop();\n top = this.peek(1);\n } while (top?.type === 'flow-collection');\n }\n else if (fc.end.length === 0) {\n switch (this.type) {\n case 'comma':\n case 'explicit-key-ind':\n if (!it || it.sep)\n fc.items.push({ start: [this.sourceToken] });\n else\n it.start.push(this.sourceToken);\n return;\n case 'map-value-ind':\n if (!it || it.value)\n fc.items.push({ start: [], key: null, sep: [this.sourceToken] });\n else if (it.sep)\n it.sep.push(this.sourceToken);\n else\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n return;\n case 'space':\n case 'comment':\n case 'newline':\n case 'anchor':\n case 'tag':\n if (!it || it.value)\n fc.items.push({ start: [this.sourceToken] });\n else if (it.sep)\n it.sep.push(this.sourceToken);\n else\n it.start.push(this.sourceToken);\n return;\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar': {\n const fs = this.flowScalar(this.type);\n if (!it || it.value)\n fc.items.push({ start: [], key: fs, sep: [] });\n else if (it.sep)\n this.stack.push(fs);\n else\n Object.assign(it, { key: fs, sep: [] });\n return;\n }\n case 'flow-map-end':\n case 'flow-seq-end':\n fc.end.push(this.sourceToken);\n return;\n }\n const bv = this.startBlockValue(fc);\n /* istanbul ignore else should not happen */\n if (bv)\n this.stack.push(bv);\n else {\n yield* this.pop();\n yield* this.step();\n }\n }\n else {\n const parent = this.peek(2);\n if (parent.type === 'block-map' &&\n ((this.type === 'map-value-ind' && parent.indent === fc.indent) ||\n (this.type === 'newline' &&\n !parent.items[parent.items.length - 1].sep))) {\n yield* this.pop();\n yield* this.step();\n }\n else if (this.type === 'map-value-ind' &&\n parent.type !== 'flow-collection') {\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n fixFlowSeqItems(fc);\n const sep = fc.end.splice(1, fc.end.length);\n sep.push(this.sourceToken);\n const map = {\n type: 'block-map',\n offset: fc.offset,\n indent: fc.indent,\n items: [{ start, key: fc, sep }]\n };\n this.onKeyLine = true;\n this.stack[this.stack.length - 1] = map;\n }\n else {\n yield* this.lineEnd(fc);\n }\n }\n }\n flowScalar(type) {\n if (this.onNewLine) {\n let nl = this.source.indexOf('\\n') + 1;\n while (nl !== 0) {\n this.onNewLine(this.offset + nl);\n nl = this.source.indexOf('\\n', nl) + 1;\n }\n }\n return {\n type,\n offset: this.offset,\n indent: this.indent,\n source: this.source\n };\n }\n startBlockValue(parent) {\n switch (this.type) {\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return this.flowScalar(this.type);\n case 'block-scalar-header':\n return {\n type: 'block-scalar',\n offset: this.offset,\n indent: this.indent,\n props: [this.sourceToken],\n source: ''\n };\n case 'flow-map-start':\n case 'flow-seq-start':\n return {\n type: 'flow-collection',\n offset: this.offset,\n indent: this.indent,\n start: this.sourceToken,\n items: [],\n end: []\n };\n case 'seq-item-ind':\n return {\n type: 'block-seq',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [this.sourceToken] }]\n };\n case 'explicit-key-ind': {\n this.onKeyLine = true;\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n start.push(this.sourceToken);\n return {\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, explicitKey: true }]\n };\n }\n case 'map-value-ind': {\n this.onKeyLine = true;\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n return {\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n };\n }\n }\n return null;\n }\n atIndentedComment(start, indent) {\n if (this.type !== 'comment')\n return false;\n if (this.indent <= indent)\n return false;\n return start.every(st => st.type === 'newline' || st.type === 'space');\n }\n *documentEnd(docEnd) {\n if (this.type !== 'doc-mode') {\n if (docEnd.end)\n docEnd.end.push(this.sourceToken);\n else\n docEnd.end = [this.sourceToken];\n if (this.type === 'newline')\n yield* this.pop();\n }\n }\n *lineEnd(token) {\n switch (this.type) {\n case 'comma':\n case 'doc-start':\n case 'doc-end':\n case 'flow-seq-end':\n case 'flow-map-end':\n case 'map-value-ind':\n yield* this.pop();\n yield* this.step();\n break;\n case 'newline':\n this.onKeyLine = false;\n // fallthrough\n case 'space':\n case 'comment':\n default:\n // all other values are errors\n if (token.end)\n token.end.push(this.sourceToken);\n else\n token.end = [this.sourceToken];\n if (this.type === 'newline')\n yield* this.pop();\n }\n }\n}\n\nexports.Parser = Parser;\n","'use strict';\n\nvar composer = require('./compose/composer.js');\nvar Document = require('./doc/Document.js');\nvar errors = require('./errors.js');\nvar log = require('./log.js');\nvar identity = require('./nodes/identity.js');\nvar lineCounter = require('./parse/line-counter.js');\nvar parser = require('./parse/parser.js');\n\nfunction parseOptions(options) {\n const prettyErrors = options.prettyErrors !== false;\n const lineCounter$1 = options.lineCounter || (prettyErrors && new lineCounter.LineCounter()) || null;\n return { lineCounter: lineCounter$1, prettyErrors };\n}\n/**\n * Parse the input as a stream of YAML documents.\n *\n * Documents should be separated from each other by `...` or `---` marker lines.\n *\n * @returns If an empty `docs` array is returned, it will be of type\n * EmptyStream and contain additional stream information. In\n * TypeScript, you should use `'empty' in docs` as a type guard for it.\n */\nfunction parseAllDocuments(source, options = {}) {\n const { lineCounter, prettyErrors } = parseOptions(options);\n const parser$1 = new parser.Parser(lineCounter?.addNewLine);\n const composer$1 = new composer.Composer(options);\n const docs = Array.from(composer$1.compose(parser$1.parse(source)));\n if (prettyErrors && lineCounter)\n for (const doc of docs) {\n doc.errors.forEach(errors.prettifyError(source, lineCounter));\n doc.warnings.forEach(errors.prettifyError(source, lineCounter));\n }\n if (docs.length > 0)\n return docs;\n return Object.assign([], { empty: true }, composer$1.streamInfo());\n}\n/** Parse an input string into a single YAML.Document */\nfunction parseDocument(source, options = {}) {\n const { lineCounter, prettyErrors } = parseOptions(options);\n const parser$1 = new parser.Parser(lineCounter?.addNewLine);\n const composer$1 = new composer.Composer(options);\n // `doc` is always set by compose.end(true) at the very latest\n let doc = null;\n for (const _doc of composer$1.compose(parser$1.parse(source), true, source.length)) {\n if (!doc)\n doc = _doc;\n else if (doc.options.logLevel !== 'silent') {\n doc.errors.push(new errors.YAMLParseError(_doc.range.slice(0, 2), 'MULTIPLE_DOCS', 'Source contains multiple documents; please use YAML.parseAllDocuments()'));\n break;\n }\n }\n if (prettyErrors && lineCounter) {\n doc.errors.forEach(errors.prettifyError(source, lineCounter));\n doc.warnings.forEach(errors.prettifyError(source, lineCounter));\n }\n return doc;\n}\nfunction parse(src, reviver, options) {\n let _reviver = undefined;\n if (typeof reviver === 'function') {\n _reviver = reviver;\n }\n else if (options === undefined && reviver && typeof reviver === 'object') {\n options = reviver;\n }\n const doc = parseDocument(src, options);\n if (!doc)\n return null;\n doc.warnings.forEach(warning => log.warn(doc.options.logLevel, warning));\n if (doc.errors.length > 0) {\n if (doc.options.logLevel !== 'silent')\n throw doc.errors[0];\n else\n doc.errors = [];\n }\n return doc.toJS(Object.assign({ reviver: _reviver }, options));\n}\nfunction stringify(value, replacer, options) {\n let _replacer = null;\n if (typeof replacer === 'function' || Array.isArray(replacer)) {\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n }\n if (typeof options === 'string')\n options = options.length;\n if (typeof options === 'number') {\n const indent = Math.round(options);\n options = indent < 1 ? undefined : indent > 8 ? { indent: 8 } : { indent };\n }\n if (value === undefined) {\n const { keepUndefined } = options ?? replacer ?? {};\n if (!keepUndefined)\n return undefined;\n }\n if (identity.isDocument(value) && !_replacer)\n return value.toString(options);\n return new Document.Document(value, _replacer, options).toString(options);\n}\n\nexports.parse = parse;\nexports.parseAllDocuments = parseAllDocuments;\nexports.parseDocument = parseDocument;\nexports.stringify = stringify;\n","'use strict';\n\nvar composer = require('./compose/composer.js');\nvar Document = require('./doc/Document.js');\nvar Schema = require('./schema/Schema.js');\nvar errors = require('./errors.js');\nvar Alias = require('./nodes/Alias.js');\nvar identity = require('./nodes/identity.js');\nvar Pair = require('./nodes/Pair.js');\nvar Scalar = require('./nodes/Scalar.js');\nvar YAMLMap = require('./nodes/YAMLMap.js');\nvar YAMLSeq = require('./nodes/YAMLSeq.js');\nvar cst = require('./parse/cst.js');\nvar lexer = require('./parse/lexer.js');\nvar lineCounter = require('./parse/line-counter.js');\nvar parser = require('./parse/parser.js');\nvar publicApi = require('./public-api.js');\nvar visit = require('./visit.js');\n\n\n\nexports.Composer = composer.Composer;\nexports.Document = Document.Document;\nexports.Schema = Schema.Schema;\nexports.YAMLError = errors.YAMLError;\nexports.YAMLParseError = errors.YAMLParseError;\nexports.YAMLWarning = errors.YAMLWarning;\nexports.Alias = Alias.Alias;\nexports.isAlias = identity.isAlias;\nexports.isCollection = identity.isCollection;\nexports.isDocument = identity.isDocument;\nexports.isMap = identity.isMap;\nexports.isNode = identity.isNode;\nexports.isPair = identity.isPair;\nexports.isScalar = identity.isScalar;\nexports.isSeq = identity.isSeq;\nexports.Pair = Pair.Pair;\nexports.Scalar = Scalar.Scalar;\nexports.YAMLMap = YAMLMap.YAMLMap;\nexports.YAMLSeq = YAMLSeq.YAMLSeq;\nexports.CST = cst;\nexports.Lexer = lexer.Lexer;\nexports.LineCounter = lineCounter.LineCounter;\nexports.Parser = parser.Parser;\nexports.parse = publicApi.parse;\nexports.parseAllDocuments = publicApi.parseAllDocuments;\nexports.parseDocument = publicApi.parseDocument;\nexports.stringify = publicApi.stringify;\nexports.visit = visit.visit;\nexports.visitAsync = visit.visitAsync;\n","/**\n * @import {Node, Parent} from 'unist'\n */\n\n/**\n * @template Fn\n * @template Fallback\n * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate\n */\n\n/**\n * @callback Check\n * Check that an arbitrary value is a node.\n * @param {unknown} this\n * The given context.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean}\n * Whether this is a node and passes a test.\n *\n * @typedef {Record<string, unknown> | Node} Props\n * Object to check for equivalence.\n *\n * Note: `Node` is included as it is common but is not indexable.\n *\n * @typedef {Array<Props | TestFunction | string> | ReadonlyArray<Props | TestFunction | string> | Props | TestFunction | string | null | undefined} Test\n * Check for an arbitrary node.\n *\n * @callback TestFunction\n * Check if a node passes a test.\n * @param {unknown} this\n * The given context.\n * @param {Node} node\n * A node.\n * @param {number | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | undefined} [parent]\n * The node’s parent.\n * @returns {boolean | undefined | void}\n * Whether this node passes the test.\n *\n * Note: `void` is included until TS sees no return as `undefined`.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param {unknown} node\n * Thing to check, typically `Node`.\n * @param {Test} test\n * A check for a specific node.\n * @param {number | null | undefined} index\n * The node’s position in its parent.\n * @param {Parent | null | undefined} parent\n * The node’s parent.\n * @param {unknown} context\n * Context object (`this`) to pass to `test` functions.\n * @returns {boolean}\n * Whether `node` is a node and passes a test.\n */\nexport const is =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * (<Condition extends ReadonlyArray<string>>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition[number]}) &\n * (<Condition extends Array<string>>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition[number]}) &\n * (<Condition extends string>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * (<Condition extends Props>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * (<Condition extends TestFunction>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) &\n * ((node?: null | undefined) => false) &\n * ((node: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((node: unknown, test?: Test, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * @param {unknown} [node]\n * @param {Test} [test]\n * @param {number | null | undefined} [index]\n * @param {Parent | null | undefined} [parent]\n * @param {unknown} [context]\n * @returns {boolean}\n */\n // eslint-disable-next-line max-params\n function (node, test, index, parent, context) {\n const check = convert(test)\n\n if (\n index !== undefined &&\n index !== null &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite index')\n }\n\n if (\n parent !== undefined &&\n parent !== null &&\n (!is(parent) || !parent.children)\n ) {\n throw new Error('Expected parent node')\n }\n\n if (\n (parent === undefined || parent === null) !==\n (index === undefined || index === null)\n ) {\n throw new Error('Expected both parent and index')\n }\n\n return looksLikeANode(node)\n ? check.call(context, node, index, parent)\n : false\n }\n )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param {Test} test\n * * when nullish, checks if `node` is a `Node`.\n * * when `string`, works like passing `(node) => node.type === test`.\n * * when `function` checks if function passed the node is true.\n * * when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * * when `array`, checks if any one of the subtests pass.\n * @returns {Check}\n * An assertion.\n */\nexport const convert =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * (<Condition extends string>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * (<Condition extends Props>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * (<Condition extends TestFunction>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) &\n * ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((test?: Test) => Check)\n * )}\n */\n (\n /**\n * @param {Test} [test]\n * @returns {Check}\n */\n function (test) {\n if (test === null || test === undefined) {\n return ok\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n if (typeof test === 'object') {\n return Array.isArray(test)\n ? anyFactory(test)\n : // Cast because `ReadonlyArray` goes into the above but `isArray`\n // narrows to `Array`.\n propertiesFactory(/** @type {Props} */ (test))\n }\n\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n throw new Error('Expected function, string, or object as test')\n }\n )\n\n/**\n * @param {Array<Props | TestFunction | string>} tests\n * @returns {Check}\n */\nfunction anyFactory(tests) {\n /** @type {Array<Check>} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convert(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @type {TestFunction}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].apply(this, parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {Check}\n */\nfunction propertiesFactory(check) {\n const checkAsRecord = /** @type {Record<string, unknown>} */ (check)\n\n return castFactory(all)\n\n /**\n * @param {Node} node\n * @returns {boolean}\n */\n function all(node) {\n const nodeAsRecord = /** @type {Record<string, unknown>} */ (\n /** @type {unknown} */ (node)\n )\n\n /** @type {string} */\n let key\n\n for (key in check) {\n if (nodeAsRecord[key] !== checkAsRecord[key]) return false\n }\n\n return true\n }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {Check}\n */\nfunction typeFactory(check) {\n return castFactory(type)\n\n /**\n * @param {Node} node\n */\n function type(node) {\n return node && node.type === check\n }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunction} testFunction\n * @returns {Check}\n */\nfunction castFactory(testFunction) {\n return check\n\n /**\n * @this {unknown}\n * @type {Check}\n */\n function check(value, index, parent) {\n return Boolean(\n looksLikeANode(value) &&\n testFunction.call(\n this,\n value,\n typeof index === 'number' ? index : undefined,\n parent || undefined\n )\n )\n }\n}\n\nfunction ok() {\n return true\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Node}\n */\nfunction looksLikeANode(value) {\n return value !== null && typeof value === 'object' && 'type' in value\n}\n","/**\n * @param {string} d\n * @returns {string}\n */\nexport function color(d) {\n return '\\u001B[33m' + d + '\\u001B[39m'\n}\n","/**\n * @import {Node as UnistNode, Parent as UnistParent} from 'unist'\n */\n\n/**\n * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate<Check, Value> extends Value\n * ? Predicate<Check, Value>\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends ReadonlyArray<infer T>\n * ? MatchesOne<Value, T>\n * : Check extends Array<infer T>\n * ? MatchesOne<Value, T>\n * : MatchesOne<Value, Check>\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array<infer Children>}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent<Node, Child>\n * | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {InternalAncestor<InclusiveDescendant<Tree>, Child>} Ancestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {'skip' | boolean} Action\n * Union of the action types.\n *\n * @typedef {number} Index\n * Move to the sibling at `index` next (after node itself is completely\n * traversed).\n *\n * Useful if mutating the tree, such as removing the node the visitor is\n * currently on, or any of its previous siblings.\n * Results less than 0 or greater than or equal to `children.length` stop\n * traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n * List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n * Any value that can be returned from a visitor.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform the parent of node (the last of `ancestors`).\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of an ancestor still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Array<VisitedParents>} ancestors\n * Ancestors of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [VisitedParents=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor<Matches<InclusiveDescendant<Tree>, Check>, Ancestor<Tree, Matches<InclusiveDescendant<Tree>, Check>>>} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parents`.\n * @template {UnistNode} [Tree=UnistNode]\n * Tree type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from 'unist-util-visit-parents/do-not-use-color'\n\n/** @type {Readonly<ActionTuple>} */\nconst empty = []\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node’s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor<Tree, Check>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor<Tree>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} test\n * `unist-util-is`-compatible test\n * @param {Visitor | boolean | null | undefined} [visitor]\n * Handle each node.\n * @param {boolean | null | undefined} [reverse]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visitParents(tree, test, visitor, reverse) {\n /** @type {Test} */\n let check\n\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n // @ts-expect-error no visitor given, so `visitor` is test.\n visitor = test\n } else {\n // @ts-expect-error visitor given, so `test` isn’t a visitor.\n check = test\n }\n\n const is = convert(check)\n const step = reverse ? -1 : 1\n\n factory(tree, undefined, [])()\n\n /**\n * @param {UnistNode} node\n * @param {number | undefined} index\n * @param {Array<UnistParent>} parents\n */\n function factory(node, index, parents) {\n const value = /** @type {Record<string, unknown>} */ (\n node && typeof node === 'object' ? node : {}\n )\n\n if (typeof value.type === 'string') {\n const name =\n // `hast`\n typeof value.tagName === 'string'\n ? value.tagName\n : // `xast`\n typeof value.name === 'string'\n ? value.name\n : undefined\n\n Object.defineProperty(visit, 'name', {\n value:\n 'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n })\n }\n\n return visit\n\n function visit() {\n /** @type {Readonly<ActionTuple>} */\n let result = empty\n /** @type {Readonly<ActionTuple>} */\n let subresult\n /** @type {number} */\n let offset\n /** @type {Array<UnistParent>} */\n let grandparents\n\n if (!test || is(node, index, parents[parents.length - 1] || undefined)) {\n // @ts-expect-error: `visitor` is now a visitor.\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n if ('children' in node && node.children) {\n const nodeAsParent = /** @type {UnistParent} */ (node)\n\n if (nodeAsParent.children && result[0] !== SKIP) {\n offset = (reverse ? nodeAsParent.children.length : -1) + step\n grandparents = parents.concat(nodeAsParent)\n\n while (offset > -1 && offset < nodeAsParent.children.length) {\n const child = nodeAsParent.children[offset]\n\n subresult = factory(child, offset, grandparents)()\n\n if (subresult[0] === EXIT) {\n return subresult\n }\n\n offset =\n typeof subresult[1] === 'number' ? subresult[1] : offset + step\n }\n }\n }\n\n return result\n }\n }\n}\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n * Valid return values from visitors.\n * @returns {Readonly<ActionTuple>}\n * Clean result.\n */\nfunction toResult(value) {\n if (Array.isArray(value)) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return value === null || value === undefined ? empty : [value]\n}\n","/**\n * @import {Node as UnistNode, Parent as UnistParent} from 'unist'\n * @import {VisitorResult} from 'unist-util-visit-parents'\n */\n\n/**\n * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n// To do: use types from `unist-util-visit-parents` when it’s released.\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate<Check, Value> extends Value\n * ? Predicate<Check, Value>\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends ReadonlyArray<any>\n * ? MatchesOne<Value, Check[number]>\n * : MatchesOne<Value, Check>\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array<infer Children>}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent<Node, Child>\n * | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform `parent`.\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of `parent` still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Visited extends UnistNode ? number | undefined : never} index\n * Index of `node` in `parent`.\n * @param {Ancestor extends UnistParent ? Ancestor | undefined : never} parent\n * Parent of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [Ancestor=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor<Visited, Parent<Ancestor, Visited>>} BuildVisitorFromMatch\n * Build a typed `Visitor` function from a node and all possible parents.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Visited\n * Node type.\n * @template {UnistParent} Ancestor\n * Parent type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromMatch<\n * Matches<Descendant, Check>,\n * Extract<Descendant, UnistParent>\n * >\n * )} BuildVisitorFromDescendants\n * Build a typed `Visitor` function from a list of descendants and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Descendant\n * Node type.\n * @template {Test} Check\n * Test type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromDescendants<\n * InclusiveDescendant<Tree>,\n * Check\n * >\n * )} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} [Tree=UnistNode]\n * Node type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor<Tree, Check>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor<Tree>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} testOrVisitor\n * `unist-util-is`-compatible test (optional, omit to pass a visitor).\n * @param {Visitor | boolean | null | undefined} [visitorOrReverse]\n * Handle each node (when test is omitted, pass `reverse`).\n * @param {boolean | null | undefined} [maybeReverse=false]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) {\n /** @type {boolean | null | undefined} */\n let reverse\n /** @type {Test} */\n let test\n /** @type {Visitor} */\n let visitor\n\n if (\n typeof testOrVisitor === 'function' &&\n typeof visitorOrReverse !== 'function'\n ) {\n test = undefined\n visitor = testOrVisitor\n reverse = visitorOrReverse\n } else {\n // @ts-expect-error: assume the overload with test was given.\n test = testOrVisitor\n // @ts-expect-error: assume the overload with test was given.\n visitor = visitorOrReverse\n reverse = maybeReverse\n }\n\n visitParents(tree, test, overload, reverse)\n\n /**\n * @param {UnistNode} node\n * @param {Array<UnistParent>} parents\n */\n function overload(node, parents) {\n const parent = parents[parents.length - 1]\n const index = parent ? parent.children.indexOf(node) : undefined\n return visitor(node, index, parent)\n }\n}\n","// Options hooks\nexport const DIFF = '__b';\nexport const RENDER = '__r';\nexport const DIFFED = 'diffed';\nexport const COMMIT = '__c';\nexport const SKIP_EFFECTS = '__s';\nexport const CATCH_ERROR = '__e';\n\n// VNode properties\nexport const COMPONENT = '__c';\nexport const CHILDREN = '__k';\nexport const PARENT = '__';\nexport const MASK = '__m';\n\n// Component properties\nexport const VNODE = '__v';\nexport const DIRTY = '__d';\nexport const BITS = '__g';\nexport const NEXT_STATE = '__s';\nexport const CHILD_DID_SUSPEND = '__c';\n","import { DIRTY, BITS } from './constants';\n\nexport const VOID_ELEMENTS =\n\t/^(?:area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)$/;\n// oxlint-disable-next-line no-control-regex\nexport const UNSAFE_NAME = /[\\s\\n\\\\/='\"\\0<>]/;\nexport const NAMESPACE_REPLACE_REGEX = /^(xlink|xmlns|xml)([A-Z])/;\nexport const HTML_LOWER_CASE =\n\t/^(?:accessK|auto[A-Z]|cell|ch|col|cont|cross|dateT|encT|form[A-Z]|frame|hrefL|inputM|maxL|minL|noV|playsI|popoverT|readO|rowS|src[A-Z]|tabI|useM|item[A-Z])/;\nexport const SVG_CAMEL_CASE =\n\t/^ac|^ali|arabic|basel|cap|clipPath$|clipRule$|color|dominant|enable|fill|flood|font|glyph[^R]|horiz|image|letter|lighting|marker[^WUH]|overline|panose|pointe|paint|rendering|shape|stop|strikethrough|stroke|text[^L]|transform|underline|unicode|units|^v[^i]|^w|^xH/;\n\n// Boolean DOM properties that translate to enumerated ('true'/'false') attributes\nexport const HTML_ENUMERATED = new Set(['draggable', 'spellcheck']);\n\nexport const COMPONENT_DIRTY_BIT = 1 << 3;\nexport function setDirty(component) {\n\tif (component[BITS] !== undefined) {\n\t\tcomponent[BITS] |= COMPONENT_DIRTY_BIT;\n\t} else {\n\t\tcomponent[DIRTY] = true;\n\t}\n}\n\nexport function unsetDirty(component) {\n\tif (component.__g !== undefined) {\n\t\tcomponent.__g &= ~COMPONENT_DIRTY_BIT;\n\t} else {\n\t\tcomponent[DIRTY] = false;\n\t}\n}\n\nexport function isDirty(component) {\n\tif (component.__g !== undefined) {\n\t\treturn (component.__g & COMPONENT_DIRTY_BIT) !== 0;\n\t}\n\treturn component[DIRTY] === true;\n}\n\n// DOM properties that should NOT have \"px\" added when numeric\nconst ENCODED_ENTITIES = /[\"&<]/;\n\n/** @param {string} str */\nexport function encodeEntities(str) {\n\t// Skip all work for strings with no entities needing encoding:\n\tif (str.length === 0 || ENCODED_ENTITIES.test(str) === false) return str;\n\n\tlet last = 0,\n\t\ti = 0,\n\t\tout = '',\n\t\tch = '';\n\n\t// Seek forward in str until the next entity char:\n\tfor (; i < str.length; i++) {\n\t\tswitch (str.charCodeAt(i)) {\n\t\t\tcase 34:\n\t\t\t\tch = '"';\n\t\t\t\tbreak;\n\t\t\tcase 38:\n\t\t\t\tch = '&';\n\t\t\t\tbreak;\n\t\t\tcase 60:\n\t\t\t\tch = '<';\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tcontinue;\n\t\t}\n\t\t// Append skipped/buffered characters and the encoded entity:\n\t\tif (i !== last) out = out + str.slice(last, i);\n\t\tout = out + ch;\n\t\t// Start the next seek/buffer after the entity's offset:\n\t\tlast = i + 1;\n\t}\n\tif (i !== last) out = out + str.slice(last, i);\n\treturn out;\n}\n\nexport let indent = (s, char) =>\n\tString(s).replace(/(\\n+)/g, '$1' + (char || '\\t'));\n\nexport let isLargeString = (s, length, ignoreLines) =>\n\tString(s).length > (length || 40) ||\n\t(!ignoreLines && String(s).indexOf('\\n') !== -1) ||\n\tString(s).indexOf('<') !== -1;\n\nconst JS_TO_CSS = {};\n\nconst IS_NON_DIMENSIONAL = new Set([\n\t'animation-iteration-count',\n\t'border-image-outset',\n\t'border-image-slice',\n\t'border-image-width',\n\t'box-flex',\n\t'box-flex-group',\n\t'box-ordinal-group',\n\t'column-count',\n\t'fill-opacity',\n\t'flex',\n\t'flex-grow',\n\t'flex-negative',\n\t'flex-order',\n\t'flex-positive',\n\t'flex-shrink',\n\t'flood-opacity',\n\t'font-weight',\n\t'grid-column',\n\t'grid-row',\n\t'line-clamp',\n\t'line-height',\n\t'opacity',\n\t'order',\n\t'orphans',\n\t'stop-opacity',\n\t'stroke-dasharray',\n\t'stroke-dashoffset',\n\t'stroke-miterlimit',\n\t'stroke-opacity',\n\t'stroke-width',\n\t'tab-size',\n\t'widows',\n\t'z-index',\n\t'zoom'\n]);\n\nconst CSS_REGEX = /[A-Z]/g;\n// Convert an Object style to a CSSText string\nexport function styleObjToCss(s) {\n\tlet str = '';\n\tfor (let prop in s) {\n\t\tlet val = s[prop];\n\t\tif (val != null && val !== '') {\n\t\t\tconst name =\n\t\t\t\tprop[0] == '-'\n\t\t\t\t\t? prop\n\t\t\t\t\t: JS_TO_CSS[prop] ||\n\t\t\t\t\t\t(JS_TO_CSS[prop] = prop.replace(CSS_REGEX, '-$&').toLowerCase());\n\n\t\t\tlet suffix = ';';\n\t\t\tif (\n\t\t\t\ttypeof val === 'number' &&\n\t\t\t\t// Exclude custom-attributes\n\t\t\t\t!name.startsWith('--') &&\n\t\t\t\t!IS_NON_DIMENSIONAL.has(name)\n\t\t\t) {\n\t\t\t\tsuffix = 'px;';\n\t\t\t}\n\t\t\tstr = str + name + ':' + val + suffix;\n\t\t}\n\t}\n\treturn str || undefined;\n}\n\n/**\n * Get flattened children from the children prop\n * @param {Array} accumulator\n * @param {any} children A `props.children` opaque object.\n * @returns {Array} accumulator\n * @private\n */\nexport function getChildren(accumulator, children) {\n\tif (Array.isArray(children)) {\n\t\tchildren.reduce(getChildren, accumulator);\n\t} else if (children != null && children !== false) {\n\t\taccumulator.push(children);\n\t}\n\treturn accumulator;\n}\n\nfunction markAsDirty() {\n\tthis.__d = true;\n}\n\nexport function createComponent(vnode, context) {\n\treturn {\n\t\t__v: vnode,\n\t\tcontext,\n\t\tprops: vnode.props,\n\t\t// silently drop state updates\n\t\tsetState: markAsDirty,\n\t\tforceUpdate: markAsDirty,\n\t\t__d: true,\n\t\t// hooks\n\t\t// oxlint-disable-next-line no-new-array\n\t\t__h: new Array(0)\n\t};\n}\n\n// Necessary for createContext api. Setting this property will pass\n// the context value as `this.context` just for this component.\nexport function getContext(nodeName, context) {\n\tlet cxType = nodeName.contextType;\n\tlet provider = cxType && context[cxType.__c];\n\treturn cxType != null\n\t\t? provider\n\t\t\t? provider.props.value\n\t\t\t: cxType.__\n\t\t: context;\n}\n\n/**\n * @template T\n */\nexport class Deferred {\n\tconstructor() {\n\t\t/** @type {Promise<T>} */\n\t\tthis.promise = new Promise((resolve, reject) => {\n\t\t\tthis.resolve = resolve;\n\t\t\tthis.reject = reject;\n\t\t});\n\t}\n}\n","import {\n\tencodeEntities,\n\tstyleObjToCss,\n\tUNSAFE_NAME,\n\tNAMESPACE_REPLACE_REGEX,\n\tHTML_LOWER_CASE,\n\tHTML_ENUMERATED,\n\tSVG_CAMEL_CASE,\n\tcreateComponent,\n\tsetDirty,\n\tunsetDirty,\n\tisDirty\n} from './lib/util.js';\nimport { options, h, Fragment } from 'preact';\nimport {\n\tCHILDREN,\n\tCOMMIT,\n\tCOMPONENT,\n\tDIFF,\n\tDIFFED,\n\tNEXT_STATE,\n\tPARENT,\n\tRENDER,\n\tSKIP_EFFECTS,\n\tVNODE,\n\tCATCH_ERROR\n} from './lib/constants.js';\n\nconst EMPTY_OBJ = {};\nconst EMPTY_ARR = [];\nconst isArray = Array.isArray;\nconst assign = Object.assign;\nconst EMPTY_STR = '';\nconst BEGIN_SUSPENSE_DENOMINATOR = '<!--$s-->';\nconst END_SUSPENSE_DENOMINATOR = '<!--/$s-->';\n\n/**\n * Wraps a render result with suspense boundary markers, handling all possible\n * return types from _renderToString: string, Array, or Promise.\n * @param {string | Array | Promise} result\n * @returns {string | Array | Promise}\n */\nfunction wrapWithSuspenseMarkers(result) {\n\tif (typeof result === 'string') {\n\t\treturn BEGIN_SUSPENSE_DENOMINATOR + result + END_SUSPENSE_DENOMINATOR;\n\t} else if (isArray(result)) {\n\t\tresult.unshift(BEGIN_SUSPENSE_DENOMINATOR);\n\t\tresult.push(END_SUSPENSE_DENOMINATOR);\n\t\treturn result;\n\t} else if (result && typeof result.then === 'function') {\n\t\treturn result.then(wrapWithSuspenseMarkers);\n\t}\n\treturn BEGIN_SUSPENSE_DENOMINATOR + result + END_SUSPENSE_DENOMINATOR;\n}\n\n// Global state for the current render pass\nlet beforeDiff, afterDiff, renderHook, ummountHook;\n\n/**\n * Render Preact JSX + Components to an HTML string.\n * @param {VNode} vnode\tJSX Element / VNode to render\n * @param {Object} [context={}] Initial root context object\n * @param {RendererState} [_rendererState] for internal use\n * @returns {string} serialized HTML\n */\nexport function renderToString(vnode, context, _rendererState) {\n\t// Performance optimization: `renderToString` is synchronous and we\n\t// therefore don't execute any effects. To do that we pass an empty\n\t// array to `options._commit` (`__c`). But we can go one step further\n\t// and avoid a lot of dirty checks and allocations by setting\n\t// `options._skipEffects` (`__s`) too.\n\tconst previousSkipEffects = options[SKIP_EFFECTS];\n\toptions[SKIP_EFFECTS] = true;\n\n\t// store options hooks once before each synchronous render call\n\tbeforeDiff = options[DIFF];\n\tafterDiff = options[DIFFED];\n\trenderHook = options[RENDER];\n\tummountHook = options.unmount;\n\n\tconst parent = h(Fragment, null);\n\tparent[CHILDREN] = [vnode];\n\n\ttry {\n\t\tconst rendered = _renderToString(\n\t\t\tvnode,\n\t\t\tcontext || EMPTY_OBJ,\n\t\t\tfalse,\n\t\t\tundefined,\n\t\t\tparent,\n\t\t\tfalse,\n\t\t\t_rendererState\n\t\t);\n\n\t\tif (isArray(rendered)) {\n\t\t\treturn rendered.join(EMPTY_STR);\n\t\t}\n\t\treturn rendered;\n\t} catch (e) {\n\t\tif (e.then) {\n\t\t\tthrow new Error('Use \"renderToStringAsync\" for suspenseful rendering.');\n\t\t}\n\n\t\tthrow e;\n\t} finally {\n\t\t// options._commit, we don't schedule any effects in this library right now,\n\t\t// so we can pass an empty queue to this hook.\n\t\tif (options[COMMIT]) options[COMMIT](vnode, EMPTY_ARR);\n\t\toptions[SKIP_EFFECTS] = previousSkipEffects;\n\t\tEMPTY_ARR.length = 0;\n\t}\n}\n\n/**\n * Render Preact JSX + Components to an HTML string.\n * @param {VNode} vnode\tJSX Element / VNode to render\n * @param {Object} [context={}] Initial root context object\n * @returns {string} serialized HTML\n */\nexport async function renderToStringAsync(vnode, context) {\n\t// Performance optimization: `renderToString` is synchronous and we\n\t// therefore don't execute any effects. To do that we pass an empty\n\t// array to `options._commit` (`__c`). But we can go one step further\n\t// and avoid a lot of dirty checks and allocations by setting\n\t// `options._skipEffects` (`__s`) too.\n\tconst previousSkipEffects = options[SKIP_EFFECTS];\n\toptions[SKIP_EFFECTS] = true;\n\n\t// store options hooks once before each synchronous render call\n\tbeforeDiff = options[DIFF];\n\tafterDiff = options[DIFFED];\n\trenderHook = options[RENDER];\n\tummountHook = options.unmount;\n\n\tconst parent = h(Fragment, null);\n\tparent[CHILDREN] = [vnode];\n\n\ttry {\n\t\tconst rendered = await _renderToString(\n\t\t\tvnode,\n\t\t\tcontext || EMPTY_OBJ,\n\t\t\tfalse,\n\t\t\tundefined,\n\t\t\tparent,\n\t\t\ttrue,\n\t\t\tundefined\n\t\t);\n\n\t\tif (isArray(rendered)) {\n\t\t\tlet count = 0;\n\t\t\tlet resolved = rendered;\n\n\t\t\t// Resolving nested Promises with a maximum depth of 25\n\t\t\twhile (\n\t\t\t\tresolved.some(\n\t\t\t\t\t(element) => element && typeof element.then === 'function'\n\t\t\t\t) &&\n\t\t\t\tcount++ < 25\n\t\t\t) {\n\t\t\t\tresolved = (await Promise.all(resolved)).flat();\n\t\t\t}\n\n\t\t\treturn resolved.join(EMPTY_STR);\n\t\t}\n\n\t\treturn rendered;\n\t} finally {\n\t\t// options._commit, we don't schedule any effects in this library right now,\n\t\t// so we can pass an empty queue to this hook.\n\t\tif (options[COMMIT]) options[COMMIT](vnode, EMPTY_ARR);\n\t\toptions[SKIP_EFFECTS] = previousSkipEffects;\n\t\tEMPTY_ARR.length = 0;\n\t}\n}\n\n/**\n * @param {VNode} vnode\n * @param {Record<string, unknown>} context\n */\nfunction renderClassComponent(vnode, context) {\n\tlet type =\n\t\t/** @type {import(\"preact\").ComponentClass<typeof vnode.props>} */ (\n\t\t\tvnode.type\n\t\t);\n\n\tlet isMounting = true;\n\tlet c;\n\tif (vnode[COMPONENT]) {\n\t\tisMounting = false;\n\t\tc = vnode[COMPONENT];\n\t\tc.state = c[NEXT_STATE];\n\t} else {\n\t\tc = new type(vnode.props, context);\n\t}\n\n\tvnode[COMPONENT] = c;\n\tc[VNODE] = vnode;\n\n\tc.props = vnode.props;\n\tc.context = context;\n\n\t// Turn off stateful rendering\n\tsetDirty(c);\n\n\tif (c.state == null) c.state = EMPTY_OBJ;\n\n\tif (c[NEXT_STATE] == null) {\n\t\tc[NEXT_STATE] = c.state;\n\t}\n\n\tif (type.getDerivedStateFromProps) {\n\t\tc.state = assign(\n\t\t\t{},\n\t\t\tc.state,\n\t\t\ttype.getDerivedStateFromProps(c.props, c.state)\n\t\t);\n\t} else if (isMounting && c.componentWillMount) {\n\t\tc.componentWillMount();\n\n\t\t// If the user called setState in cWM we need to flush pending,\n\t\t// state updates. This is the same behaviour in React.\n\t\tc.state = c[NEXT_STATE] !== c.state ? c[NEXT_STATE] : c.state;\n\t} else if (!isMounting && c.componentWillUpdate) {\n\t\tc.componentWillUpdate();\n\t}\n\n\tif (renderHook) renderHook(vnode);\n\n\treturn c.render(c.props, c.state, context);\n}\n\n/**\n * Recursively render VNodes to HTML.\n * @param {VNode|any} vnode\n * @param {any} context\n * @param {boolean} isSvgMode\n * @param {any} selectValue\n * @param {VNode} parent\n * @param {boolean} asyncMode\n * @param {RendererState | undefined} [renderer]\n * @returns {string | Promise<string> | (string | Promise<string>)[]}\n */\nfunction _renderToString(\n\tvnode,\n\tcontext,\n\tisSvgMode,\n\tselectValue,\n\tparent,\n\tasyncMode,\n\trenderer\n) {\n\t// Ignore non-rendered VNodes/values\n\tif (\n\t\tvnode == null ||\n\t\tvnode === true ||\n\t\tvnode === false ||\n\t\tvnode === EMPTY_STR\n\t) {\n\t\treturn EMPTY_STR;\n\t}\n\n\tlet vnodeType = typeof vnode;\n\t// Text VNodes: escape as HTML\n\tif (vnodeType != 'object') {\n\t\tif (vnodeType == 'function') return EMPTY_STR;\n\t\treturn vnodeType == 'string' ? encodeEntities(vnode) : vnode + EMPTY_STR;\n\t}\n\n\t// Recurse into children / Arrays\n\tif (isArray(vnode)) {\n\t\tlet rendered = EMPTY_STR,\n\t\t\trenderArray;\n\t\tparent[CHILDREN] = vnode;\n\t\tconst vnodeLength = vnode.length;\n\t\tfor (let i = 0; i < vnodeLength; i++) {\n\t\t\tlet child = vnode[i];\n\t\t\tif (child == null || typeof child == 'boolean') continue;\n\n\t\t\tconst childRender = _renderToString(\n\t\t\t\tchild,\n\t\t\t\tcontext,\n\t\t\t\tisSvgMode,\n\t\t\t\tselectValue,\n\t\t\t\tparent,\n\t\t\t\tasyncMode,\n\t\t\t\trenderer\n\t\t\t);\n\n\t\t\tif (typeof childRender == 'string') {\n\t\t\t\trendered = rendered + childRender;\n\t\t\t} else {\n\t\t\t\tif (!renderArray) {\n\t\t\t\t\t// oxlint-disable-next-line no-new-array\n\t\t\t\t\trenderArray = new Array(vnodeLength);\n\t\t\t\t}\n\n\t\t\t\tif (rendered) renderArray.push(rendered);\n\n\t\t\t\trendered = EMPTY_STR;\n\n\t\t\t\tif (isArray(childRender)) {\n\t\t\t\t\trenderArray.push(...childRender);\n\t\t\t\t} else {\n\t\t\t\t\trenderArray.push(childRender);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (renderArray) {\n\t\t\tif (rendered) renderArray.push(rendered);\n\t\t\treturn renderArray;\n\t\t}\n\n\t\treturn rendered;\n\t}\n\n\t// VNodes have {constructor:undefined} to prevent JSON injection:\n\tif (vnode.constructor !== undefined) return EMPTY_STR;\n\n\tvnode[PARENT] = parent;\n\tif (beforeDiff) beforeDiff(vnode);\n\n\tlet type = vnode.type,\n\t\tprops = vnode.props;\n\n\t// Invoke rendering on Components\n\tif (typeof type == 'function') {\n\t\tlet cctx = context,\n\t\t\tcontextType,\n\t\t\trendered,\n\t\t\tcomponent;\n\t\tif (type === Fragment) {\n\t\t\t// Serialized precompiled JSX.\n\t\t\tif ('tpl' in props) {\n\t\t\t\tlet out = EMPTY_STR;\n\t\t\t\tfor (let i = 0; i < props.tpl.length; i++) {\n\t\t\t\t\tout = out + props.tpl[i];\n\n\t\t\t\t\tif (props.exprs && i < props.exprs.length) {\n\t\t\t\t\t\tconst value = props.exprs[i];\n\t\t\t\t\t\tif (value == null) continue;\n\n\t\t\t\t\t\t// Check if we're dealing with a vnode or an array of nodes\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\ttypeof value == 'object' &&\n\t\t\t\t\t\t\t(value.constructor === undefined || isArray(value))\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tout =\n\t\t\t\t\t\t\t\tout +\n\t\t\t\t\t\t\t\t_renderToString(\n\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\tcontext,\n\t\t\t\t\t\t\t\t\tisSvgMode,\n\t\t\t\t\t\t\t\t\tselectValue,\n\t\t\t\t\t\t\t\t\tvnode,\n\t\t\t\t\t\t\t\t\tasyncMode,\n\t\t\t\t\t\t\t\t\trenderer\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Values are pre-escaped by the JSX transform\n\t\t\t\t\t\t\tout = out + value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn out;\n\t\t\t} else if ('UNSTABLE_comment' in props) {\n\t\t\t\t// Fragments are the least used components of core that's why\n\t\t\t\t// branching here for comments has the least effect on perf.\n\t\t\t\treturn '<!--' + encodeEntities(props.UNSTABLE_comment) + '-->';\n\t\t\t}\n\n\t\t\trendered = props.children;\n\t\t} else {\n\t\t\tcontextType = type.contextType;\n\t\t\tif (contextType != null) {\n\t\t\t\tlet provider = context[contextType.__c];\n\t\t\t\tcctx = provider ? provider.props.value : contextType.__;\n\t\t\t}\n\n\t\t\tlet isClassComponent =\n\t\t\t\ttype.prototype && typeof type.prototype.render == 'function';\n\t\t\tif (isClassComponent) {\n\t\t\t\trendered = /**#__NOINLINE__**/ renderClassComponent(vnode, cctx);\n\t\t\t\tcomponent = vnode[COMPONENT];\n\t\t\t} else {\n\t\t\t\tvnode[COMPONENT] = component = /**#__NOINLINE__**/ createComponent(\n\t\t\t\t\tvnode,\n\t\t\t\t\tcctx\n\t\t\t\t);\n\n\t\t\t\t// If a hook invokes setState() to invalidate the component during rendering,\n\t\t\t\t// re-render it up to 25 times to allow \"settling\" of memoized states.\n\t\t\t\t// Note:\n\t\t\t\t// This will need to be updated for Preact 11 to use internal.flags rather than component._dirty:\n\t\t\t\t// https://github.com/preactjs/preact/blob/d4ca6fdb19bc715e49fd144e69f7296b2f4daa40/src/diff/component.js#L35-L44\n\t\t\t\tlet count = 0;\n\t\t\t\twhile (isDirty(component) && count++ < 25) {\n\t\t\t\t\tunsetDirty(component);\n\n\t\t\t\t\tif (renderHook) renderHook(vnode);\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\trendered = type.call(component, props, cctx);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tif (asyncMode && error && typeof error.then == 'function') {\n\t\t\t\t\t\t\tvnode._suspended = true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tsetDirty(component);\n\t\t\t}\n\n\t\t\tif (component.getChildContext != null) {\n\t\t\t\tcontext = assign({}, context, component.getChildContext());\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tisClassComponent &&\n\t\t\t\toptions.errorBoundaries &&\n\t\t\t\t(type.getDerivedStateFromError || component.componentDidCatch)\n\t\t\t) {\n\t\t\t\t// When a component returns a Fragment node we flatten it in core, so we\n\t\t\t\t// need to mirror that logic here too\n\t\t\t\tlet isTopLevelFragment =\n\t\t\t\t\trendered != null &&\n\t\t\t\t\trendered.type === Fragment &&\n\t\t\t\t\trendered.key == null &&\n\t\t\t\t\trendered.props.tpl == null;\n\t\t\t\trendered = isTopLevelFragment ? rendered.props.children : rendered;\n\n\t\t\t\ttry {\n\t\t\t\t\treturn _renderToString(\n\t\t\t\t\t\trendered,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\tisSvgMode,\n\t\t\t\t\t\tselectValue,\n\t\t\t\t\t\tvnode,\n\t\t\t\t\t\tasyncMode,\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\trenderer\n\t\t\t\t\t);\n\t\t\t\t} catch (err) {\n\t\t\t\t\tif (type.getDerivedStateFromError) {\n\t\t\t\t\t\tcomponent[NEXT_STATE] = type.getDerivedStateFromError(err);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (component.componentDidCatch) {\n\t\t\t\t\t\tcomponent.componentDidCatch(err, EMPTY_OBJ);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (isDirty(component)) {\n\t\t\t\t\t\trendered = renderClassComponent(vnode, context);\n\t\t\t\t\t\tcomponent = vnode[COMPONENT];\n\n\t\t\t\t\t\tif (component.getChildContext != null) {\n\t\t\t\t\t\t\tcontext = assign({}, context, component.getChildContext());\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet isTopLevelFragment =\n\t\t\t\t\t\t\trendered != null &&\n\t\t\t\t\t\t\trendered.type === Fragment &&\n\t\t\t\t\t\t\trendered.key == null &&\n\t\t\t\t\t\t\trendered.props.tpl == null;\n\t\t\t\t\t\trendered = isTopLevelFragment ? rendered.props.children : rendered;\n\n\t\t\t\t\t\treturn _renderToString(\n\t\t\t\t\t\t\trendered,\n\t\t\t\t\t\t\tcontext,\n\t\t\t\t\t\t\tisSvgMode,\n\t\t\t\t\t\t\tselectValue,\n\t\t\t\t\t\t\tvnode,\n\t\t\t\t\t\t\tasyncMode,\n\t\t\t\t\t\t\trenderer\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn EMPTY_STR;\n\t\t\t\t} finally {\n\t\t\t\t\tif (afterDiff) afterDiff(vnode);\n\n\t\t\t\t\tif (ummountHook) ummountHook(vnode);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// When a component returns a Fragment node we flatten it in core, so we\n\t\t// need to mirror that logic here too\n\t\tlet isTopLevelFragment =\n\t\t\trendered != null &&\n\t\t\trendered.type === Fragment &&\n\t\t\trendered.key == null &&\n\t\t\trendered.props.tpl == null;\n\t\trendered = isTopLevelFragment ? rendered.props.children : rendered;\n\n\t\ttry {\n\t\t\t// Recurse into children before invoking the after-diff hook\n\t\t\tconst str = _renderToString(\n\t\t\t\trendered,\n\t\t\t\tcontext,\n\t\t\t\tisSvgMode,\n\t\t\t\tselectValue,\n\t\t\t\tvnode,\n\t\t\t\tasyncMode,\n\t\t\t\trenderer\n\t\t\t);\n\n\t\t\tif (afterDiff) afterDiff(vnode);\n\t\t\t// when we are dealing with suspense we can't do this...\n\n\t\t\tif (options.unmount) options.unmount(vnode);\n\n\t\t\tif (vnode._suspended) {\n\t\t\t\treturn wrapWithSuspenseMarkers(str);\n\t\t\t}\n\n\t\t\treturn str;\n\t\t} catch (error) {\n\t\t\tif (!asyncMode && renderer && renderer.onError) {\n\t\t\t\tconst onError = (error) => {\n\t\t\t\t\treturn renderer.onError(error, vnode, (child, parent) => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\treturn _renderToString(\n\t\t\t\t\t\t\t\tchild,\n\t\t\t\t\t\t\t\tcontext,\n\t\t\t\t\t\t\t\tisSvgMode,\n\t\t\t\t\t\t\t\tselectValue,\n\t\t\t\t\t\t\t\tparent,\n\t\t\t\t\t\t\t\tasyncMode,\n\t\t\t\t\t\t\t\trenderer\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\treturn onError(e);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t};\n\t\t\t\tlet res = onError(error);\n\n\t\t\t\tif (res !== undefined) return res;\n\n\t\t\t\tlet errorHook = options[CATCH_ERROR];\n\t\t\t\tif (errorHook) errorHook(error, vnode);\n\t\t\t\treturn EMPTY_STR;\n\t\t\t}\n\n\t\t\tif (!asyncMode) throw error;\n\n\t\t\tif (!error || typeof error.then != 'function') throw error;\n\n\t\t\tconst renderNestedChildren = () => {\n\t\t\t\ttry {\n\t\t\t\t\tconst result = _renderToString(\n\t\t\t\t\t\trendered,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\tisSvgMode,\n\t\t\t\t\t\tselectValue,\n\t\t\t\t\t\tvnode,\n\t\t\t\t\t\tasyncMode,\n\t\t\t\t\t\trenderer\n\t\t\t\t\t);\n\t\t\t\t\treturn vnode._suspended ? wrapWithSuspenseMarkers(result) : result;\n\t\t\t\t} catch (e) {\n\t\t\t\t\tif (!e || typeof e.then != 'function') throw e;\n\n\t\t\t\t\treturn e.then(renderNestedChildren);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\treturn error.then(renderNestedChildren);\n\t\t}\n\t}\n\n\t// Serialize Element VNodes to HTML\n\tlet s = '<' + type,\n\t\thtml = EMPTY_STR,\n\t\tchildren;\n\n\tfor (let name in props) {\n\t\tlet v = props[name];\n\t\tv = isSignal(v) ? v.value : v;\n\n\t\tif (typeof v == 'function' && name !== 'class' && name !== 'className') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tswitch (name) {\n\t\t\tcase 'children':\n\t\t\t\tchildren = v;\n\t\t\t\tcontinue;\n\n\t\t\t// VDOM-specific props\n\t\t\tcase 'key':\n\t\t\tcase 'ref':\n\t\t\tcase '__self':\n\t\t\tcase '__source':\n\t\t\t\tcontinue;\n\n\t\t\t// prefer for/class over htmlFor/className\n\t\t\tcase 'htmlFor':\n\t\t\t\tif ('for' in props) continue;\n\t\t\t\tname = 'for';\n\t\t\t\tbreak;\n\t\t\tcase 'className':\n\t\t\t\tif ('class' in props) continue;\n\t\t\t\tname = 'class';\n\t\t\t\tbreak;\n\n\t\t\t// Form element reflected properties\n\t\t\tcase 'defaultChecked':\n\t\t\t\tname = 'checked';\n\t\t\t\tbreak;\n\t\t\tcase 'defaultSelected':\n\t\t\t\tname = 'selected';\n\t\t\t\tbreak;\n\n\t\t\t// Special value attribute handling\n\t\t\tcase 'defaultValue':\n\t\t\tcase 'value':\n\t\t\t\tname = 'value';\n\t\t\t\tswitch (type) {\n\t\t\t\t\t// <textarea value=\"a&b\"> --> <textarea>a&b</textarea>\n\t\t\t\t\tcase 'textarea':\n\t\t\t\t\t\tchildren = v;\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t// <select value> is serialized as a selected attribute on the matching option child\n\t\t\t\t\tcase 'select':\n\t\t\t\t\t\tselectValue = v;\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t// Add a selected attribute to <option> if its value matches the parent <select> value\n\t\t\t\t\tcase 'option':\n\t\t\t\t\t\tif (selectValue == v && !('selected' in props)) {\n\t\t\t\t\t\t\ts = s + ' selected';\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'dangerouslySetInnerHTML':\n\t\t\t\thtml = v && v.__html;\n\t\t\t\tcontinue;\n\n\t\t\t// serialize object styles to a CSS string\n\t\t\tcase 'style':\n\t\t\t\tif (typeof v === 'object') {\n\t\t\t\t\tv = styleObjToCss(v);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'acceptCharset':\n\t\t\t\tname = 'accept-charset';\n\t\t\t\tbreak;\n\t\t\tcase 'httpEquiv':\n\t\t\t\tname = 'http-equiv';\n\t\t\t\tbreak;\n\n\t\t\tdefault: {\n\t\t\t\tif (NAMESPACE_REPLACE_REGEX.test(name)) {\n\t\t\t\t\tname = name.replace(NAMESPACE_REPLACE_REGEX, '$1:$2').toLowerCase();\n\t\t\t\t} else if (UNSAFE_NAME.test(name)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t} else if (\n\t\t\t\t\t(name[4] === '-' || HTML_ENUMERATED.has(name)) &&\n\t\t\t\t\tv != null\n\t\t\t\t) {\n\t\t\t\t\t// serialize boolean aria-xyz or enumerated attribute values as strings\n\t\t\t\t\tv = v + EMPTY_STR;\n\t\t\t\t} else if (isSvgMode) {\n\t\t\t\t\tif (SVG_CAMEL_CASE.test(name)) {\n\t\t\t\t\t\tname =\n\t\t\t\t\t\t\tname === 'panose1'\n\t\t\t\t\t\t\t\t? 'panose-1'\n\t\t\t\t\t\t\t\t: name.replace(/([A-Z])/g, '-$1').toLowerCase();\n\t\t\t\t\t}\n\t\t\t\t} else if (HTML_LOWER_CASE.test(name)) {\n\t\t\t\t\tname = name.toLowerCase();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// write this attribute to the buffer\n\t\tif (v != null && v !== false) {\n\t\t\tif (v === true || v === EMPTY_STR) {\n\t\t\t\ts = s + ' ' + name;\n\t\t\t} else {\n\t\t\t\ts =\n\t\t\t\t\ts +\n\t\t\t\t\t' ' +\n\t\t\t\t\tname +\n\t\t\t\t\t'=\"' +\n\t\t\t\t\t(typeof v == 'string' ? encodeEntities(v) : v + EMPTY_STR) +\n\t\t\t\t\t'\"';\n\t\t\t}\n\t\t}\n\t}\n\n\tif (UNSAFE_NAME.test(type)) {\n\t\t// this seems to performs a lot better than throwing\n\t\t// return '<!-- -->';\n\t\tthrow new Error(`${type} is not a valid HTML tag name in ${s}>`);\n\t}\n\n\tif (html) {\n\t\t// dangerouslySetInnerHTML defined this node's contents\n\t} else if (typeof children === 'string') {\n\t\t// single text child\n\t\thtml = encodeEntities(children);\n\t} else if (children != null && children !== false && children !== true) {\n\t\t// recurse into this element VNode's children\n\t\tlet childSvgMode =\n\t\t\ttype === 'svg' || (type !== 'foreignObject' && isSvgMode);\n\t\thtml = _renderToString(\n\t\t\tchildren,\n\t\t\tcontext,\n\t\t\tchildSvgMode,\n\t\t\tselectValue,\n\t\t\tvnode,\n\t\t\tasyncMode,\n\t\t\trenderer\n\t\t);\n\t}\n\n\tif (afterDiff) afterDiff(vnode);\n\n\tif (ummountHook) ummountHook(vnode);\n\n\t// Emit self-closing tag for empty void elements:\n\tif (!html && SELF_CLOSING.has(type)) {\n\t\treturn s + '/>';\n\t}\n\n\tconst endTag = '</' + type + '>';\n\tconst startTag = s + '>';\n\n\tif (isArray(html)) return [startTag, ...html, endTag];\n\telse if (typeof html != 'string') return [startTag, html, endTag];\n\treturn startTag + html + endTag;\n}\n\nconst SELF_CLOSING = new Set([\n\t'area',\n\t'base',\n\t'br',\n\t'col',\n\t'command',\n\t'embed',\n\t'hr',\n\t'img',\n\t'input',\n\t'keygen',\n\t'link',\n\t'meta',\n\t'param',\n\t'source',\n\t'track',\n\t'wbr'\n]);\n\nexport default renderToString;\nexport const render = renderToString;\nexport const renderToStaticMarkup = renderToString;\n\nfunction isSignal(x) {\n\treturn (\n\t\tx !== null &&\n\t\ttypeof x === 'object' &&\n\t\ttypeof x.peek === 'function' &&\n\t\t'value' in x\n\t);\n}\n","export function deprecate(fn) {\n return fn\n}\n\nexport function equal() {}\n\nexport function ok() {}\n\nexport function unreachable() {}\n","/**\n * @import {Schema as SchemaType, Space} from 'property-information'\n */\n\n/** @type {SchemaType} */\nexport class Schema {\n /**\n * @param {SchemaType['property']} property\n * Property.\n * @param {SchemaType['normal']} normal\n * Normal.\n * @param {Space | undefined} [space]\n * Space.\n * @returns\n * Schema.\n */\n constructor(property, normal, space) {\n this.normal = normal\n this.property = property\n\n if (space) {\n this.space = space\n }\n }\n}\n\nSchema.prototype.normal = {}\nSchema.prototype.property = {}\nSchema.prototype.space = undefined\n","/**\n * @import {Info, Space} from 'property-information'\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {ReadonlyArray<Schema>} definitions\n * Definitions.\n * @param {Space | undefined} [space]\n * Space.\n * @returns {Schema}\n * Schema.\n */\nexport function merge(definitions, space) {\n /** @type {Record<string, Info>} */\n const property = {}\n /** @type {Record<string, string>} */\n const normal = {}\n\n for (const definition of definitions) {\n Object.assign(property, definition.property)\n Object.assign(normal, definition.normal)\n }\n\n return new Schema(property, normal, space)\n}\n","/**\n * Get the cleaned case insensitive form of an attribute or property.\n *\n * @param {string} value\n * An attribute-like or property-like name.\n * @returns {string}\n * Value that can be used to look up the properly cased property on a\n * `Schema`.\n */\nexport function normalize(value) {\n return value.toLowerCase()\n}\n","/**\n * @import {Info as InfoType} from 'property-information'\n */\n\n/** @type {InfoType} */\nexport class Info {\n /**\n * @param {string} property\n * Property.\n * @param {string} attribute\n * Attribute.\n * @returns\n * Info.\n */\n constructor(property, attribute) {\n this.attribute = attribute\n this.property = property\n }\n}\n\nInfo.prototype.attribute = ''\nInfo.prototype.booleanish = false\nInfo.prototype.boolean = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.defined = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.number = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.property = ''\nInfo.prototype.spaceSeparated = false\nInfo.prototype.space = undefined\n","let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n return 2 ** ++powers\n}\n","/**\n * @import {Space} from 'property-information'\n */\n\nimport {Info} from './info.js'\nimport * as types from './types.js'\n\nconst checks = /** @type {ReadonlyArray<keyof typeof types>} */ (\n Object.keys(types)\n)\n\nexport class DefinedInfo extends Info {\n /**\n * @constructor\n * @param {string} property\n * Property.\n * @param {string} attribute\n * Attribute.\n * @param {number | null | undefined} [mask]\n * Mask.\n * @param {Space | undefined} [space]\n * Space.\n * @returns\n * Info.\n */\n constructor(property, attribute, mask, space) {\n let index = -1\n\n super(property, attribute)\n\n mark(this, 'space', space)\n\n if (typeof mask === 'number') {\n while (++index < checks.length) {\n const check = checks[index]\n mark(this, checks[index], (mask & types[check]) === types[check])\n }\n }\n }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @template {keyof DefinedInfo} Key\n * Key type.\n * @param {DefinedInfo} values\n * Info.\n * @param {Key} key\n * Key.\n * @param {DefinedInfo[Key]} value\n * Value.\n * @returns {undefined}\n * Nothing.\n */\nfunction mark(values, key, value) {\n if (value) {\n values[key] = value\n }\n}\n","/**\n * @import {Info, Space} from 'property-information'\n */\n\n/**\n * @typedef Definition\n * Definition of a schema.\n * @property {Record<string, string> | undefined} [attributes]\n * Normalzed names to special attribute case.\n * @property {ReadonlyArray<string> | undefined} [mustUseProperty]\n * Normalized names that must be set as properties.\n * @property {Record<string, number | null>} properties\n * Property names to their types.\n * @property {Space | undefined} [space]\n * Space.\n * @property {Transform} transform\n * Transform a property name.\n */\n\n/**\n * @callback Transform\n * Transform.\n * @param {Record<string, string>} attributes\n * Attributes.\n * @param {string} property\n * Property.\n * @returns {string}\n * Attribute.\n */\n\nimport {normalize} from '../normalize.js'\nimport {DefinedInfo} from './defined-info.js'\nimport {Schema} from './schema.js'\n\n/**\n * @param {Definition} definition\n * Definition.\n * @returns {Schema}\n * Schema.\n */\nexport function create(definition) {\n /** @type {Record<string, Info>} */\n const properties = {}\n /** @type {Record<string, string>} */\n const normals = {}\n\n for (const [property, value] of Object.entries(definition.properties)) {\n const info = new DefinedInfo(\n property,\n definition.transform(definition.attributes || {}, property),\n value,\n definition.space\n )\n\n if (\n definition.mustUseProperty &&\n definition.mustUseProperty.includes(property)\n ) {\n info.mustUseProperty = true\n }\n\n properties[property] = info\n\n normals[normalize(property)] = property\n normals[normalize(info.attribute)] = property\n }\n\n return new Schema(properties, normals, definition.space)\n}\n","import {create} from './util/create.js'\nimport {booleanish, number, spaceSeparated} from './util/types.js'\n\nexport const aria = create({\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n },\n transform(_, property) {\n return property === 'role'\n ? property\n : 'aria-' + property.slice(4).toLowerCase()\n }\n})\n","/**\n * @param {Record<string, string>} attributes\n * Attributes.\n * @param {string} attribute\n * Attribute.\n * @returns {string}\n * Transformed attribute.\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n return attribute in attributes ? attributes[attribute] : attribute\n}\n","import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record<string, string>} attributes\n * Attributes.\n * @param {string} property\n * Property.\n * @returns {string}\n * Transformed property.\n */\nexport function caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","import {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\nimport {create} from './util/create.js'\nimport {\n booleanish,\n boolean,\n commaSeparated,\n number,\n overloadedBoolean,\n spaceSeparated\n} from './util/types.js'\n\nexport const html = create({\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n blocking: spaceSeparated,\n capture: null,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n cols: number,\n colSpan: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n fetchPriority: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: overloadedBoolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: null,\n inert: boolean,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforeMatch: null,\n onBeforePrint: null,\n onBeforeToggle: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextLost: null,\n onContextMenu: null,\n onContextRestored: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onScrollEnd: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n popover: null,\n popoverTarget: null,\n popoverTargetAction: null,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shadowRootClonable: boolean,\n shadowRootDelegatesFocus: boolean,\n shadowRootMode: null,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: null,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n writingSuggestions: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // `<body>`. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // `<object>`. List of URIs to archives\n axis: null, // `<td>` and `<th>`. Use `scope` on `<th>`\n background: null, // `<body>`. Use CSS `background-image` instead\n bgColor: null, // `<body>` and table elements. Use CSS `background-color` instead\n border: number, // `<table>`. Use CSS `border-width` instead,\n borderColor: null, // `<table>`. Use CSS `border-color` instead,\n bottomMargin: number, // `<body>`\n cellPadding: null, // `<table>`\n cellSpacing: null, // `<table>`\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // `<object>`\n clear: null, // `<br>`. Use CSS `clear` instead\n code: null, // `<object>`\n codeBase: null, // `<object>`\n codeType: null, // `<object>`\n color: null, // `<font>` and `<hr>`. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // `<object>`\n event: null, // `<script>`\n face: null, // `<font>`. Use CSS instead\n frame: null, // `<table>`\n frameBorder: null, // `<iframe>`. Use CSS `border` instead\n hSpace: number, // `<img>` and `<object>`\n leftMargin: number, // `<body>`\n link: null, // `<body>`. Use CSS `a:link {color: *}` instead\n longDesc: null, // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`\n lowSrc: null, // `<img>`. Use a `<picture>`\n marginHeight: number, // `<body>`\n marginWidth: number, // `<body>`\n noResize: boolean, // `<frame>`\n noHref: boolean, // `<area>`. Use no href instead of an explicit `nohref`\n noShade: boolean, // `<hr>`. Use background-color and height instead of borders\n noWrap: boolean, // `<td>` and `<th>`\n object: null, // `<applet>`\n profile: null, // `<head>`\n prompt: null, // `<isindex>`\n rev: null, // `<link>`\n rightMargin: number, // `<body>`\n rules: null, // `<table>`\n scheme: null, // `<meta>`\n scrolling: booleanish, // `<frame>`. Use overflow in the child context\n standby: null, // `<object>`\n summary: null, // `<table>`\n text: null, // `<body>`. Use CSS `color` instead\n topMargin: number, // `<body>`\n valueType: null, // `<param>`\n version: null, // `<html>`. Use a doctype.\n vAlign: null, // Several. Use CSS `vertical-align` instead\n vLink: null, // `<body>`. Use CSS `a:visited {color}` instead\n vSpace: number, // `<img>` and `<object>`\n\n // Non-standard Properties.\n allowTransparency: null,\n autoCorrect: null,\n autoSave: null,\n disablePictureInPicture: boolean,\n disableRemotePlayback: boolean,\n prefix: null,\n property: null,\n results: number,\n security: null,\n unselectable: null\n },\n space: 'html',\n transform: caseInsensitiveTransform\n})\n","import {caseSensitiveTransform} from './util/case-sensitive-transform.js'\nimport {create} from './util/create.js'\nimport {\n boolean,\n commaOrSpaceSeparated,\n commaSeparated,\n number,\n spaceSeparated\n} from './util/types.js'\n\nexport const svg = create({\n attributes: {\n accentHeight: 'accent-height',\n alignmentBaseline: 'alignment-baseline',\n arabicForm: 'arabic-form',\n baselineShift: 'baseline-shift',\n capHeight: 'cap-height',\n className: 'class',\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n crossOrigin: 'crossorigin',\n dataType: 'datatype',\n dominantBaseline: 'dominant-baseline',\n enableBackground: 'enable-background',\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n hrefLang: 'hreflang',\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n horizOriginY: 'horiz-origin-y',\n imageRendering: 'image-rendering',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n navDown: 'nav-down',\n navDownLeft: 'nav-down-left',\n navDownRight: 'nav-down-right',\n navLeft: 'nav-left',\n navNext: 'nav-next',\n navPrev: 'nav-prev',\n navRight: 'nav-right',\n navUp: 'nav-up',\n navUpLeft: 'nav-up-left',\n navUpRight: 'nav-up-right',\n onAbort: 'onabort',\n onActivate: 'onactivate',\n onAfterPrint: 'onafterprint',\n onBeforePrint: 'onbeforeprint',\n onBegin: 'onbegin',\n onCancel: 'oncancel',\n onCanPlay: 'oncanplay',\n onCanPlayThrough: 'oncanplaythrough',\n onChange: 'onchange',\n onClick: 'onclick',\n onClose: 'onclose',\n onCopy: 'oncopy',\n onCueChange: 'oncuechange',\n onCut: 'oncut',\n onDblClick: 'ondblclick',\n onDrag: 'ondrag',\n onDragEnd: 'ondragend',\n onDragEnter: 'ondragenter',\n onDragExit: 'ondragexit',\n onDragLeave: 'ondragleave',\n onDragOver: 'ondragover',\n onDragStart: 'ondragstart',\n onDrop: 'ondrop',\n onDurationChange: 'ondurationchange',\n onEmptied: 'onemptied',\n onEnd: 'onend',\n onEnded: 'onended',\n onError: 'onerror',\n onFocus: 'onfocus',\n onFocusIn: 'onfocusin',\n onFocusOut: 'onfocusout',\n onHashChange: 'onhashchange',\n onInput: 'oninput',\n onInvalid: 'oninvalid',\n onKeyDown: 'onkeydown',\n onKeyPress: 'onkeypress',\n onKeyUp: 'onkeyup',\n onLoad: 'onload',\n onLoadedData: 'onloadeddata',\n onLoadedMetadata: 'onloadedmetadata',\n onLoadStart: 'onloadstart',\n onMessage: 'onmessage',\n onMouseDown: 'onmousedown',\n onMouseEnter: 'onmouseenter',\n onMouseLeave: 'onmouseleave',\n onMouseMove: 'onmousemove',\n onMouseOut: 'onmouseout',\n onMouseOver: 'onmouseover',\n onMouseUp: 'onmouseup',\n onMouseWheel: 'onmousewheel',\n onOffline: 'onoffline',\n onOnline: 'ononline',\n onPageHide: 'onpagehide',\n onPageShow: 'onpageshow',\n onPaste: 'onpaste',\n onPause: 'onpause',\n onPlay: 'onplay',\n onPlaying: 'onplaying',\n onPopState: 'onpopstate',\n onProgress: 'onprogress',\n onRateChange: 'onratechange',\n onRepeat: 'onrepeat',\n onReset: 'onreset',\n onResize: 'onresize',\n onScroll: 'onscroll',\n onSeeked: 'onseeked',\n onSeeking: 'onseeking',\n onSelect: 'onselect',\n onShow: 'onshow',\n onStalled: 'onstalled',\n onStorage: 'onstorage',\n onSubmit: 'onsubmit',\n onSuspend: 'onsuspend',\n onTimeUpdate: 'ontimeupdate',\n onToggle: 'ontoggle',\n onUnload: 'onunload',\n onVolumeChange: 'onvolumechange',\n onWaiting: 'onwaiting',\n onZoom: 'onzoom',\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pointerEvents: 'pointer-events',\n referrerPolicy: 'referrerpolicy',\n renderingIntent: 'rendering-intent',\n shapeRendering: 'shape-rendering',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n strokeDashArray: 'stroke-dasharray',\n strokeDashOffset: 'stroke-dashoffset',\n strokeLineCap: 'stroke-linecap',\n strokeLineJoin: 'stroke-linejoin',\n strokeMiterLimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n tabIndex: 'tabindex',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n transformOrigin: 'transform-origin',\n typeOf: 'typeof',\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n vectorEffect: 'vector-effect',\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n xHeight: 'x-height',\n // These were camelcased in Tiny. Now lowercased in SVG 2\n playbackOrder: 'playbackorder',\n timelineBegin: 'timelinebegin'\n },\n properties: {\n about: commaOrSpaceSeparated,\n accentHeight: number,\n accumulate: null,\n additive: null,\n alignmentBaseline: null,\n alphabetic: number,\n amplitude: number,\n arabicForm: null,\n ascent: number,\n attributeName: null,\n attributeType: null,\n azimuth: number,\n bandwidth: null,\n baselineShift: null,\n baseFrequency: null,\n baseProfile: null,\n bbox: null,\n begin: null,\n bias: number,\n by: null,\n calcMode: null,\n capHeight: number,\n className: spaceSeparated,\n clip: null,\n clipPath: null,\n clipPathUnits: null,\n clipRule: null,\n color: null,\n colorInterpolation: null,\n colorInterpolationFilters: null,\n colorProfile: null,\n colorRendering: null,\n content: null,\n contentScriptType: null,\n contentStyleType: null,\n crossOrigin: null,\n cursor: null,\n cx: null,\n cy: null,\n d: null,\n dataType: null,\n defaultAction: null,\n descent: number,\n diffuseConstant: number,\n direction: null,\n display: null,\n dur: null,\n divisor: number,\n dominantBaseline: null,\n download: boolean,\n dx: null,\n dy: null,\n edgeMode: null,\n editable: null,\n elevation: number,\n enableBackground: null,\n end: null,\n event: null,\n exponent: number,\n externalResourcesRequired: null,\n fill: null,\n fillOpacity: number,\n fillRule: null,\n filter: null,\n filterRes: null,\n filterUnits: null,\n floodColor: null,\n floodOpacity: null,\n focusable: null,\n focusHighlight: null,\n fontFamily: null,\n fontSize: null,\n fontSizeAdjust: null,\n fontStretch: null,\n fontStyle: null,\n fontVariant: null,\n fontWeight: null,\n format: null,\n fr: null,\n from: null,\n fx: null,\n fy: null,\n g1: commaSeparated,\n g2: commaSeparated,\n glyphName: commaSeparated,\n glyphOrientationHorizontal: null,\n glyphOrientationVertical: null,\n glyphRef: null,\n gradientTransform: null,\n gradientUnits: null,\n handler: null,\n hanging: number,\n hatchContentUnits: null,\n hatchUnits: null,\n height: null,\n href: null,\n hrefLang: null,\n horizAdvX: number,\n horizOriginX: number,\n horizOriginY: number,\n id: null,\n ideographic: number,\n imageRendering: null,\n initialVisibility: null,\n in: null,\n in2: null,\n intercept: number,\n k: number,\n k1: number,\n k2: number,\n k3: number,\n k4: number,\n kernelMatrix: commaOrSpaceSeparated,\n kernelUnitLength: null,\n keyPoints: null, // SEMI_COLON_SEPARATED\n keySplines: null, // SEMI_COLON_SEPARATED\n keyTimes: null, // SEMI_COLON_SEPARATED\n kerning: null,\n lang: null,\n lengthAdjust: null,\n letterSpacing: null,\n lightingColor: null,\n limitingConeAngle: number,\n local: null,\n markerEnd: null,\n markerMid: null,\n markerStart: null,\n markerHeight: null,\n markerUnits: null,\n markerWidth: null,\n mask: null,\n maskContentUnits: null,\n maskUnits: null,\n mathematical: null,\n max: null,\n media: null,\n mediaCharacterEncoding: null,\n mediaContentEncodings: null,\n mediaSize: number,\n mediaTime: null,\n method: null,\n min: null,\n mode: null,\n name: null,\n navDown: null,\n navDownLeft: null,\n navDownRight: null,\n navLeft: null,\n navNext: null,\n navPrev: null,\n navRight: null,\n navUp: null,\n navUpLeft: null,\n navUpRight: null,\n numOctaves: null,\n observer: null,\n offset: null,\n onAbort: null,\n onActivate: null,\n onAfterPrint: null,\n onBeforePrint: null,\n onBegin: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnd: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFocusIn: null,\n onFocusOut: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadStart: null,\n onMessage: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onMouseWheel: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRepeat: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onShow: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onZoom: null,\n opacity: null,\n operator: null,\n order: null,\n orient: null,\n orientation: null,\n origin: null,\n overflow: null,\n overlay: null,\n overlinePosition: number,\n overlineThickness: number,\n paintOrder: null,\n panose1: null,\n path: null,\n pathLength: number,\n patternContentUnits: null,\n patternTransform: null,\n patternUnits: null,\n phase: null,\n ping: spaceSeparated,\n pitch: null,\n playbackOrder: null,\n pointerEvents: null,\n points: null,\n pointsAtX: number,\n pointsAtY: number,\n pointsAtZ: number,\n preserveAlpha: null,\n preserveAspectRatio: null,\n primitiveUnits: null,\n propagate: null,\n property: commaOrSpaceSeparated,\n r: null,\n radius: null,\n referrerPolicy: null,\n refX: null,\n refY: null,\n rel: commaOrSpaceSeparated,\n rev: commaOrSpaceSeparated,\n renderingIntent: null,\n repeatCount: null,\n repeatDur: null,\n requiredExtensions: commaOrSpaceSeparated,\n requiredFeatures: commaOrSpaceSeparated,\n requiredFonts: commaOrSpaceSeparated,\n requiredFormats: commaOrSpaceSeparated,\n resource: null,\n restart: null,\n result: null,\n rotate: null,\n rx: null,\n ry: null,\n scale: null,\n seed: null,\n shapeRendering: null,\n side: null,\n slope: null,\n snapshotTime: null,\n specularConstant: number,\n specularExponent: number,\n spreadMethod: null,\n spacing: null,\n startOffset: null,\n stdDeviation: null,\n stemh: null,\n stemv: null,\n stitchTiles: null,\n stopColor: null,\n stopOpacity: null,\n strikethroughPosition: number,\n strikethroughThickness: number,\n string: null,\n stroke: null,\n strokeDashArray: commaOrSpaceSeparated,\n strokeDashOffset: null,\n strokeLineCap: null,\n strokeLineJoin: null,\n strokeMiterLimit: number,\n strokeOpacity: number,\n strokeWidth: null,\n style: null,\n surfaceScale: number,\n syncBehavior: null,\n syncBehaviorDefault: null,\n syncMaster: null,\n syncTolerance: null,\n syncToleranceDefault: null,\n systemLanguage: commaOrSpaceSeparated,\n tabIndex: number,\n tableValues: null,\n target: null,\n targetX: number,\n targetY: number,\n textAnchor: null,\n textDecoration: null,\n textRendering: null,\n textLength: null,\n timelineBegin: null,\n title: null,\n transformBehavior: null,\n type: null,\n typeOf: commaOrSpaceSeparated,\n to: null,\n transform: null,\n transformOrigin: null,\n u1: null,\n u2: null,\n underlinePosition: number,\n underlineThickness: number,\n unicode: null,\n unicodeBidi: null,\n unicodeRange: null,\n unitsPerEm: number,\n values: null,\n vAlphabetic: number,\n vMathematical: number,\n vectorEffect: null,\n vHanging: number,\n vIdeographic: number,\n version: null,\n vertAdvY: number,\n vertOriginX: number,\n vertOriginY: number,\n viewBox: null,\n viewTarget: null,\n visibility: null,\n width: null,\n widths: null,\n wordSpacing: null,\n writingMode: null,\n x: null,\n x1: null,\n x2: null,\n xChannelSelector: null,\n xHeight: number,\n y: null,\n y1: null,\n y2: null,\n yChannelSelector: null,\n z: null,\n zoomAndPan: null\n },\n space: 'svg',\n transform: caseSensitiveTransform\n})\n","import {create} from './util/create.js'\n\nexport const xlink = create({\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n },\n space: 'xlink',\n transform(_, property) {\n return 'xlink:' + property.slice(5).toLowerCase()\n }\n})\n","import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n attributes: {xmlnsxlink: 'xmlns:xlink'},\n properties: {xmlnsXLink: null, xmlns: null},\n space: 'xmlns',\n transform: caseInsensitiveTransform\n})\n","import {create} from './util/create.js'\n\nexport const xml = create({\n properties: {xmlBase: null, xmlLang: null, xmlSpace: null},\n space: 'xml',\n transform(_, property) {\n return 'xml:' + property.slice(3).toLowerCase()\n }\n})\n","/**\n * @import {Schema} from 'property-information'\n */\n\nimport {DefinedInfo} from './util/defined-info.js'\nimport {Info} from './util/info.js'\nimport {normalize} from './normalize.js'\n\nconst cap = /[A-Z]/g\nconst dash = /-[a-z]/g\nconst valid = /^data[-\\w.:]+$/i\n\n/**\n * Look up info on a property.\n *\n * In most cases the given `schema` contains info on the property.\n * All standard,\n * most legacy,\n * and some non-standard properties are supported.\n * For these cases,\n * the returned `Info` has hints about the value of the property.\n *\n * `name` can also be a valid data attribute or property,\n * in which case an `Info` object with the correctly cased `attribute` and\n * `property` is returned.\n *\n * `name` can be an unknown attribute,\n * in which case an `Info` object with `attribute` and `property` set to the\n * given name is returned.\n * It is not recommended to provide unsupported legacy or recently specced\n * properties.\n *\n *\n * @param {Schema} schema\n * Schema;\n * either the `html` or `svg` export.\n * @param {string} value\n * An attribute-like or property-like name;\n * it will be passed through `normalize` to hopefully find the correct info.\n * @returns {Info}\n * Info.\n */\nexport function find(schema, value) {\n const normal = normalize(value)\n let property = value\n let Type = Info\n\n if (normal in schema.normal) {\n return schema.property[schema.normal[normal]]\n }\n\n if (normal.length > 4 && normal.slice(0, 4) === 'data' && valid.test(value)) {\n // Attribute or property.\n if (value.charAt(4) === '-') {\n // Turn it into a property.\n const rest = value.slice(5).replace(dash, camelcase)\n property = 'data' + rest.charAt(0).toUpperCase() + rest.slice(1)\n } else {\n // Turn it into an attribute.\n const rest = value.slice(4)\n\n if (!dash.test(rest)) {\n let dashes = rest.replace(cap, kebab)\n\n if (dashes.charAt(0) !== '-') {\n dashes = '-' + dashes\n }\n\n value = 'data' + dashes\n }\n }\n\n Type = DefinedInfo\n }\n\n return new Type(property, value)\n}\n\n/**\n * @param {string} $0\n * Value.\n * @returns {string}\n * Kebab.\n */\nfunction kebab($0) {\n return '-' + $0.toLowerCase()\n}\n\n/**\n * @param {string} $0\n * Value.\n * @returns {string}\n * Camel.\n */\nfunction camelcase($0) {\n return $0.charAt(1).toUpperCase()\n}\n","// Note: types exposed from `index.d.ts`.\nimport {merge} from './lib/util/merge.js'\nimport {aria} from './lib/aria.js'\nimport {html as htmlBase} from './lib/html.js'\nimport {svg as svgBase} from './lib/svg.js'\nimport {xlink} from './lib/xlink.js'\nimport {xmlns} from './lib/xmlns.js'\nimport {xml} from './lib/xml.js'\n\nexport {hastToReact} from './lib/hast-to-react.js'\n\nexport const html = merge([aria, htmlBase, xlink, xmlns, xml], 'html')\n\nexport {find} from './lib/find.js'\nexport {normalize} from './lib/normalize.js'\n\nexport const svg = merge([aria, svgBase, xlink, xmlns, xml], 'svg')\n","/**\n * @typedef Options\n * Configuration for `stringify`.\n * @property {boolean} [padLeft=true]\n * Whether to pad a space before a token.\n * @property {boolean} [padRight=false]\n * Whether to pad a space after a token.\n */\n\n/**\n * @typedef {Options} StringifyOptions\n * Please use `StringifyOptions` instead.\n */\n\n/**\n * Parse comma-separated tokens to an array.\n *\n * @param {string} value\n * Comma-separated tokens.\n * @returns {Array<string>}\n * List of tokens.\n */\nexport function parse(value) {\n /** @type {Array<string>} */\n const tokens = []\n const input = String(value || '')\n let index = input.indexOf(',')\n let start = 0\n /** @type {boolean} */\n let end = false\n\n while (!end) {\n if (index === -1) {\n index = input.length\n end = true\n }\n\n const token = input.slice(start, index).trim()\n\n if (token || !end) {\n tokens.push(token)\n }\n\n start = index + 1\n index = input.indexOf(',', start)\n }\n\n return tokens\n}\n\n/**\n * Serialize an array of strings or numbers to comma-separated tokens.\n *\n * @param {Array<string|number>} values\n * List of tokens.\n * @param {Options} [options]\n * Configuration for `stringify` (optional).\n * @returns {string}\n * Comma-separated tokens.\n */\nexport function stringify(values, options) {\n const settings = options || {}\n\n // Ensure the last empty entry is seen.\n const input = values[values.length - 1] === '' ? [...values, ''] : values\n\n return input\n .join(\n (settings.padRight ? ' ' : '') +\n ',' +\n (settings.padLeft === false ? '' : ' ')\n )\n .trim()\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n */\n\n/**\n * @template {string} SimpleSelector\n * Selector type.\n * @template {string} DefaultTagName\n * Default tag name.\n * @typedef {(\n * SimpleSelector extends ''\n * ? DefaultTagName\n * : SimpleSelector extends `${infer TagName}.${infer Rest}`\n * ? ExtractTagName<TagName, DefaultTagName>\n * : SimpleSelector extends `${infer TagName}#${infer Rest}`\n * ? ExtractTagName<TagName, DefaultTagName>\n * : SimpleSelector extends string\n * ? SimpleSelector\n * : DefaultTagName\n * )} ExtractTagName\n * Extract tag name from a simple selector.\n */\n\nconst search = /[#.]/g\n\n/**\n * Create a hast element from a simple CSS selector.\n *\n * @template {string} Selector\n * Type of selector.\n * @template {string} [DefaultTagName='div']\n * Type of default tag name (default: `'div'`).\n * @param {Selector | null | undefined} [selector]\n * Simple CSS selector (optional).\n *\n * Can contain a tag name (`foo`), classes (`.bar`), and an ID (`#baz`).\n * Multiple classes are allowed.\n * Uses the last ID if multiple IDs are found.\n * @param {DefaultTagName | null | undefined} [defaultTagName='div']\n * Tag name to use if `selector` does not specify one (default: `'div'`).\n * @returns {Element & {tagName: ExtractTagName<Selector, DefaultTagName>}}\n * Built element.\n */\nexport function parseSelector(selector, defaultTagName) {\n const value = selector || ''\n /** @type {Properties} */\n const props = {}\n let start = 0\n /** @type {string | undefined} */\n let previous\n /** @type {string | undefined} */\n let tagName\n\n while (start < value.length) {\n search.lastIndex = start\n const match = search.exec(value)\n const subvalue = value.slice(start, match ? match.index : value.length)\n\n if (subvalue) {\n if (!previous) {\n tagName = subvalue\n } else if (previous === '#') {\n props.id = subvalue\n } else if (Array.isArray(props.className)) {\n props.className.push(subvalue)\n } else {\n props.className = [subvalue]\n }\n\n start += subvalue.length\n }\n\n if (match) {\n previous = match[0]\n start++\n }\n }\n\n return {\n type: 'element',\n // @ts-expect-error: tag name is parsed.\n tagName: tagName || defaultTagName || 'div',\n properties: props,\n children: []\n }\n}\n","/**\n * Parse space-separated tokens to an array of strings.\n *\n * @param {string} value\n * Space-separated tokens.\n * @returns {Array<string>}\n * List of tokens.\n */\nexport function parse(value) {\n const input = String(value || '').trim()\n return input ? input.split(/[ \\t\\n\\r\\f]+/g) : []\n}\n\n/**\n * Serialize an array of strings as space separated-tokens.\n *\n * @param {Array<string|number>} values\n * List of tokens.\n * @returns {string}\n * Space-separated tokens.\n */\nexport function stringify(values) {\n return values.join(' ').trim()\n}\n","/**\n * @import {Element, Nodes, RootContent, Root} from 'hast'\n * @import {Info, Schema} from 'property-information'\n */\n\n/**\n * @typedef {Array<Nodes | PrimitiveChild>} ArrayChildNested\n * List of children (deep).\n */\n\n/**\n * @typedef {Array<ArrayChildNested | Nodes | PrimitiveChild>} ArrayChild\n * List of children.\n */\n\n/**\n * @typedef {Array<number | string>} ArrayValue\n * List of property values for space- or comma separated values (such as `className`).\n */\n\n/**\n * @typedef {ArrayChild | Nodes | PrimitiveChild} Child\n * Acceptable child value.\n */\n\n/**\n * @typedef {number | string | null | undefined} PrimitiveChild\n * Primitive children, either ignored (nullish), or turned into text nodes.\n */\n\n/**\n * @typedef {boolean | number | string | null | undefined} PrimitiveValue\n * Primitive property value.\n */\n\n/**\n * @typedef {Record<string, PropertyValue | Style>} Properties\n * Acceptable value for element properties.\n */\n\n/**\n * @typedef {ArrayValue | PrimitiveValue} PropertyValue\n * Primitive value or list value.\n */\n\n/**\n * @typedef {Element | Root} Result\n * Result from a `h` (or `s`) call.\n */\n\n/**\n * @typedef {number | string} StyleValue\n * Value for a CSS style field.\n */\n\n/**\n * @typedef {Record<string, StyleValue>} Style\n * Supported value of a `style` prop.\n */\n\nimport {parse as parseCommas} from 'comma-separated-tokens'\nimport {parseSelector} from 'hast-util-parse-selector'\nimport {find, normalize} from 'property-information'\nimport {parse as parseSpaces} from 'space-separated-tokens'\n\n/**\n * @param {Schema} schema\n * Schema to use.\n * @param {string} defaultTagName\n * Default tag name.\n * @param {ReadonlyArray<string> | undefined} [caseSensitive]\n * Case-sensitive tag names (default: `undefined`).\n * @returns\n * `h`.\n */\nexport function createH(schema, defaultTagName, caseSensitive) {\n const adjust = caseSensitive ? createAdjustMap(caseSensitive) : undefined\n\n /**\n * Hyperscript compatible DSL for creating virtual hast trees.\n *\n * @overload\n * @param {null | undefined} [selector]\n * @param {...Child} children\n * @returns {Root}\n *\n * @overload\n * @param {string} selector\n * @param {Properties} properties\n * @param {...Child} children\n * @returns {Element}\n *\n * @overload\n * @param {string} selector\n * @param {...Child} children\n * @returns {Element}\n *\n * @param {string | null | undefined} [selector]\n * Selector.\n * @param {Child | Properties | null | undefined} [properties]\n * Properties (or first child) (default: `undefined`).\n * @param {...Child} children\n * Children.\n * @returns {Result}\n * Result.\n */\n function h(selector, properties, ...children) {\n /** @type {Result} */\n let node\n\n if (selector === null || selector === undefined) {\n node = {type: 'root', children: []}\n // Properties are not supported for roots.\n const child = /** @type {Child} */ (properties)\n children.unshift(child)\n } else {\n node = parseSelector(selector, defaultTagName)\n // Normalize the name.\n const lower = node.tagName.toLowerCase()\n const adjusted = adjust ? adjust.get(lower) : undefined\n node.tagName = adjusted || lower\n\n // Handle properties.\n if (isChild(properties)) {\n children.unshift(properties)\n } else {\n for (const [key, value] of Object.entries(properties)) {\n addProperty(schema, node.properties, key, value)\n }\n }\n }\n\n // Handle children.\n for (const child of children) {\n addChild(node.children, child)\n }\n\n if (node.type === 'element' && node.tagName === 'template') {\n node.content = {type: 'root', children: node.children}\n node.children = []\n }\n\n return node\n }\n\n return h\n}\n\n/**\n * Check if something is properties or a child.\n *\n * @param {Child | Properties} value\n * Value to check.\n * @returns {value is Child}\n * Whether `value` is definitely a child.\n */\nfunction isChild(value) {\n // Never properties if not an object.\n if (value === null || typeof value !== 'object' || Array.isArray(value)) {\n return true\n }\n\n // Never node without `type`; that’s the main discriminator.\n if (typeof value.type !== 'string') return false\n\n // Slower check: never property value if object or array with\n // non-number/strings.\n const record = /** @type {Record<string, unknown>} */ (value)\n const keys = Object.keys(value)\n\n for (const key of keys) {\n const value = record[key]\n\n if (value && typeof value === 'object') {\n if (!Array.isArray(value)) return true\n\n const list = /** @type {ReadonlyArray<unknown>} */ (value)\n\n for (const item of list) {\n if (typeof item !== 'number' && typeof item !== 'string') {\n return true\n }\n }\n }\n }\n\n // Also see empty `children` as a node.\n if ('children' in value && Array.isArray(value.children)) {\n return true\n }\n\n // Default to properties, someone can always pass an empty object,\n // put `data: {}` in a node,\n // or wrap it in an array.\n return false\n}\n\n/**\n * @param {Schema} schema\n * Schema.\n * @param {Properties} properties\n * Properties object.\n * @param {string} key\n * Property name.\n * @param {PropertyValue | Style} value\n * Property value.\n * @returns {undefined}\n * Nothing.\n */\nfunction addProperty(schema, properties, key, value) {\n const info = find(schema, key)\n /** @type {PropertyValue} */\n let result\n\n // Ignore nullish and NaN values.\n if (value === null || value === undefined) return\n\n if (typeof value === 'number') {\n // Ignore NaN.\n if (Number.isNaN(value)) return\n\n result = value\n }\n // Booleans.\n else if (typeof value === 'boolean') {\n result = value\n }\n // Handle list values.\n else if (typeof value === 'string') {\n if (info.spaceSeparated) {\n result = parseSpaces(value)\n } else if (info.commaSeparated) {\n result = parseCommas(value)\n } else if (info.commaOrSpaceSeparated) {\n result = parseSpaces(parseCommas(value).join(' '))\n } else {\n result = parsePrimitive(info, info.property, value)\n }\n } else if (Array.isArray(value)) {\n result = [...value]\n } else {\n result = info.property === 'style' ? style(value) : String(value)\n }\n\n if (Array.isArray(result)) {\n /** @type {Array<number | string>} */\n const finalResult = []\n\n for (const item of result) {\n // Assume no booleans in array.\n finalResult.push(\n /** @type {number | string} */ (\n parsePrimitive(info, info.property, item)\n )\n )\n }\n\n result = finalResult\n }\n\n // Class names (which can be added both on the `selector` and here).\n if (info.property === 'className' && Array.isArray(properties.className)) {\n // Assume no booleans in `className`.\n result = properties.className.concat(\n /** @type {Array<number | string> | number | string} */ (result)\n )\n }\n\n properties[info.property] = result\n}\n\n/**\n * @param {Array<RootContent>} nodes\n * Children.\n * @param {Child} value\n * Child.\n * @returns {undefined}\n * Nothing.\n */\nfunction addChild(nodes, value) {\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'number' || typeof value === 'string') {\n nodes.push({type: 'text', value: String(value)})\n } else if (Array.isArray(value)) {\n for (const child of value) {\n addChild(nodes, child)\n }\n } else if (typeof value === 'object' && 'type' in value) {\n if (value.type === 'root') {\n addChild(nodes, value.children)\n } else {\n nodes.push(value)\n }\n } else {\n throw new Error('Expected node, nodes, or string, got `' + value + '`')\n }\n}\n\n/**\n * Parse a single primitives.\n *\n * @param {Info} info\n * Property information.\n * @param {string} name\n * Property name.\n * @param {PrimitiveValue} value\n * Property value.\n * @returns {PrimitiveValue}\n * Property value.\n */\nfunction parsePrimitive(info, name, value) {\n if (typeof value === 'string') {\n if (info.number && value && !Number.isNaN(Number(value))) {\n return Number(value)\n }\n\n if (\n (info.boolean || info.overloadedBoolean) &&\n (value === '' || normalize(value) === normalize(name))\n ) {\n return true\n }\n }\n\n return value\n}\n\n/**\n * Serialize a `style` object as a string.\n *\n * @param {Style} styles\n * Style object.\n * @returns {string}\n * CSS string.\n */\nfunction style(styles) {\n /** @type {Array<string>} */\n const result = []\n\n for (const [key, value] of Object.entries(styles)) {\n result.push([key, value].join(': '))\n }\n\n return result.join('; ')\n}\n\n/**\n * Create a map to adjust casing.\n *\n * @param {ReadonlyArray<string>} values\n * List of properly cased keys.\n * @returns {Map<string, string>}\n * Map of lowercase keys to uppercase keys.\n */\nfunction createAdjustMap(values) {\n /** @type {Map<string, string>} */\n const result = new Map()\n\n for (const value of values) {\n result.set(value.toLowerCase(), value)\n }\n\n return result\n}\n","/**\n * List of case-sensitive SVG tag names.\n *\n * @type {ReadonlyArray<string>}\n */\nexport const svgCaseSensitiveTagNames = [\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 'solidColor',\n 'textArea',\n 'textPath'\n]\n","// Register the JSX namespace on `h`.\n/**\n * @typedef {import('./jsx-classic.js').Element} h.JSX.Element\n * @typedef {import('./jsx-classic.js').ElementChildrenAttribute} h.JSX.ElementChildrenAttribute\n * @typedef {import('./jsx-classic.js').IntrinsicAttributes} h.JSX.IntrinsicAttributes\n * @typedef {import('./jsx-classic.js').IntrinsicElements} h.JSX.IntrinsicElements\n */\n\n// Register the JSX namespace on `s`.\n/**\n * @typedef {import('./jsx-classic.js').Element} s.JSX.Element\n * @typedef {import('./jsx-classic.js').ElementChildrenAttribute} s.JSX.ElementChildrenAttribute\n * @typedef {import('./jsx-classic.js').IntrinsicAttributes} s.JSX.IntrinsicAttributes\n * @typedef {import('./jsx-classic.js').IntrinsicElements} s.JSX.IntrinsicElements\n */\n\nimport {html, svg} from 'property-information'\nimport {createH} from './create-h.js'\nimport {svgCaseSensitiveTagNames} from './svg-case-sensitive-tag-names.js'\n\n// Note: this explicit type is needed, otherwise TS creates broken types.\n/** @type {ReturnType<createH>} */\nexport const h = createH(html, 'div')\n\n// Note: this explicit type is needed, otherwise TS creates broken types.\n/** @type {ReturnType<createH>} */\nexport const s = createH(svg, 'g', svgCaseSensitiveTagNames)\n","/**\n * @import {VFile, Value} from 'vfile'\n * @import {Location} from 'vfile-location'\n */\n\n/**\n * Create an index of the given document to translate between line/column and\n * offset based positional info.\n *\n * Also implemented in Rust in [`wooorm/markdown-rs`][markdown-rs].\n *\n * [markdown-rs]: https://github.com/wooorm/markdown-rs/blob/main/src/util/location.rs\n *\n * @param {VFile | Value} file\n * File to index.\n * @returns {Location}\n * Accessors for index.\n */\nexport function location(file) {\n const value = String(file)\n /**\n * List, where each index is a line number (0-based), and each value is the\n * byte index *after* where the line ends.\n *\n * @type {Array<number>}\n */\n const indices = []\n\n return {toOffset, toPoint}\n\n /** @type {Location['toPoint']} */\n function toPoint(offset) {\n if (typeof offset === 'number' && offset > -1 && offset <= value.length) {\n let index = 0\n\n while (true) {\n let end = indices[index]\n\n if (end === undefined) {\n const eol = next(value, indices[index - 1])\n end = eol === -1 ? value.length + 1 : eol + 1\n indices[index] = end\n }\n\n if (end > offset) {\n return {\n line: index + 1,\n column: offset - (index > 0 ? indices[index - 1] : 0) + 1,\n offset\n }\n }\n\n index++\n }\n }\n }\n\n /** @type {Location['toOffset']} */\n function toOffset(point) {\n if (\n point &&\n typeof point.line === 'number' &&\n typeof point.column === 'number' &&\n !Number.isNaN(point.line) &&\n !Number.isNaN(point.column)\n ) {\n while (indices.length < point.line) {\n const from = indices[indices.length - 1]\n const eol = next(value, from)\n const end = eol === -1 ? value.length + 1 : eol + 1\n if (from === end) break\n indices.push(end)\n }\n\n const offset =\n (point.line > 1 ? indices[point.line - 2] : 0) + point.column - 1\n // The given `column` could not exist on this line.\n if (offset < indices[point.line - 1]) return offset\n }\n }\n}\n\n/**\n * @param {string} value\n * @param {number} from\n */\nfunction next(value, from) {\n const cr = value.indexOf('\\r', from)\n const lf = value.indexOf('\\n', from)\n if (lf === -1) return cr\n if (cr === -1 || cr + 1 === lf) return lf\n return cr < lf ? cr : lf\n}\n","/**\n * Map of web namespaces.\n *\n * @type {Record<string, string>}\n */\nexport const webNamespaces = {\n html: 'http://www.w3.org/1999/xhtml',\n mathml: 'http://www.w3.org/1998/Math/MathML',\n svg: 'http://www.w3.org/2000/svg',\n xlink: 'http://www.w3.org/1999/xlink',\n xml: 'http://www.w3.org/XML/1998/namespace',\n xmlns: 'http://www.w3.org/2000/xmlns/'\n}\n","/**\n * @import {ElementData, Element, Nodes, RootContent, Root} from 'hast'\n * @import {DefaultTreeAdapterMap, Token} from 'parse5'\n * @import {Schema} from 'property-information'\n * @import {Point, Position} from 'unist'\n * @import {VFile} from 'vfile'\n * @import {Options} from 'hast-util-from-parse5'\n */\n\n/**\n * @typedef State\n * Info passed around about the current state.\n * @property {VFile | undefined} file\n * Corresponding file.\n * @property {boolean} location\n * Whether location info was found.\n * @property {Schema} schema\n * Current schema.\n * @property {boolean | undefined} verbose\n * Add extra positional info.\n */\n\nimport {ok as assert} from 'devlop'\nimport {h, s} from 'hastscript'\nimport {find, html, svg} from 'property-information'\nimport {location} from 'vfile-location'\nimport {webNamespaces} from 'web-namespaces'\n\nconst own = {}.hasOwnProperty\n/** @type {unknown} */\n// type-coverage:ignore-next-line\nconst proto = Object.prototype\n\n/**\n * Transform a `parse5` AST to hast.\n *\n * @param {DefaultTreeAdapterMap['node']} tree\n * `parse5` tree to transform.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {Nodes}\n * hast tree.\n */\nexport function fromParse5(tree, options) {\n const settings = options || {}\n\n return one(\n {\n file: settings.file || undefined,\n location: false,\n schema: settings.space === 'svg' ? svg : html,\n verbose: settings.verbose || false\n },\n tree\n )\n}\n\n/**\n * Transform a node.\n *\n * @param {State} state\n * Info passed around about the current state.\n * @param {DefaultTreeAdapterMap['node']} node\n * p5 node.\n * @returns {Nodes}\n * hast node.\n */\nfunction one(state, node) {\n /** @type {Nodes} */\n let result\n\n switch (node.nodeName) {\n case '#comment': {\n const reference = /** @type {DefaultTreeAdapterMap['commentNode']} */ (\n node\n )\n result = {type: 'comment', value: reference.data}\n patch(state, reference, result)\n return result\n }\n\n case '#document':\n case '#document-fragment': {\n const reference =\n /** @type {DefaultTreeAdapterMap['document'] | DefaultTreeAdapterMap['documentFragment']} */ (\n node\n )\n const quirksMode =\n 'mode' in reference\n ? reference.mode === 'quirks' || reference.mode === 'limited-quirks'\n : false\n\n result = {\n type: 'root',\n children: all(state, node.childNodes),\n data: {quirksMode}\n }\n\n if (state.file && state.location) {\n const document = String(state.file)\n const loc = location(document)\n const start = loc.toPoint(0)\n const end = loc.toPoint(document.length)\n // Always defined as we give valid input.\n assert(start, 'expected `start`')\n assert(end, 'expected `end`')\n result.position = {start, end}\n }\n\n return result\n }\n\n case '#documentType': {\n const reference = /** @type {DefaultTreeAdapterMap['documentType']} */ (\n node\n )\n result = {type: 'doctype'}\n patch(state, reference, result)\n return result\n }\n\n case '#text': {\n const reference = /** @type {DefaultTreeAdapterMap['textNode']} */ (node)\n result = {type: 'text', value: reference.value}\n patch(state, reference, result)\n return result\n }\n\n // Element.\n default: {\n const reference = /** @type {DefaultTreeAdapterMap['element']} */ (node)\n result = element(state, reference)\n return result\n }\n }\n}\n\n/**\n * Transform children.\n *\n * @param {State} state\n * Info passed around about the current state.\n * @param {Array<DefaultTreeAdapterMap['node']>} nodes\n * Nodes.\n * @returns {Array<RootContent>}\n * hast nodes.\n */\nfunction all(state, nodes) {\n let index = -1\n /** @type {Array<RootContent>} */\n const results = []\n\n while (++index < nodes.length) {\n // Assume no roots in `nodes`.\n const result = /** @type {RootContent} */ (one(state, nodes[index]))\n results.push(result)\n }\n\n return results\n}\n\n/**\n * Transform an element.\n *\n * @param {State} state\n * Info passed around about the current state.\n * @param {DefaultTreeAdapterMap['element']} node\n * `parse5` node to transform.\n * @returns {Element}\n * hast node.\n */\nfunction element(state, node) {\n const schema = state.schema\n\n state.schema = node.namespaceURI === webNamespaces.svg ? svg : html\n\n // Props.\n let index = -1\n /** @type {Record<string, string>} */\n const properties = {}\n\n while (++index < node.attrs.length) {\n const attribute = node.attrs[index]\n const name =\n (attribute.prefix ? attribute.prefix + ':' : '') + attribute.name\n if (!own.call(proto, name)) {\n properties[name] = attribute.value\n }\n }\n\n // Build.\n const x = state.schema.space === 'svg' ? s : h\n const result = x(node.tagName, properties, all(state, node.childNodes))\n patch(state, node, result)\n\n // Switch content.\n if (result.tagName === 'template') {\n const reference = /** @type {DefaultTreeAdapterMap['template']} */ (node)\n const pos = reference.sourceCodeLocation\n const startTag = pos && pos.startTag && position(pos.startTag)\n const endTag = pos && pos.endTag && position(pos.endTag)\n\n // Root in, root out.\n const content = /** @type {Root} */ (one(state, reference.content))\n\n if (startTag && endTag && state.file) {\n content.position = {start: startTag.end, end: endTag.start}\n }\n\n result.content = content\n }\n\n state.schema = schema\n\n return result\n}\n\n/**\n * Patch positional info from `from` onto `to`.\n *\n * @param {State} state\n * Info passed around about the current state.\n * @param {DefaultTreeAdapterMap['node']} from\n * p5 node.\n * @param {Nodes} to\n * hast node.\n * @returns {undefined}\n * Nothing.\n */\nfunction patch(state, from, to) {\n if ('sourceCodeLocation' in from && from.sourceCodeLocation && state.file) {\n const position = createLocation(state, to, from.sourceCodeLocation)\n\n if (position) {\n state.location = true\n to.position = position\n }\n }\n}\n\n/**\n * Create clean positional information.\n *\n * @param {State} state\n * Info passed around about the current state.\n * @param {Nodes} node\n * hast node.\n * @param {Token.ElementLocation} location\n * p5 location info.\n * @returns {Position | undefined}\n * Position, or nothing.\n */\nfunction createLocation(state, node, location) {\n const result = position(location)\n\n if (node.type === 'element') {\n const tail = node.children[node.children.length - 1]\n\n // Bug for unclosed with children.\n // See: <https://github.com/inikulin/parse5/issues/109>.\n if (\n result &&\n !location.endTag &&\n tail &&\n tail.position &&\n tail.position.end\n ) {\n result.end = Object.assign({}, tail.position.end)\n }\n\n if (state.verbose) {\n /** @type {Record<string, Position | undefined>} */\n const properties = {}\n /** @type {string} */\n let key\n\n if (location.attrs) {\n for (key in location.attrs) {\n if (own.call(location.attrs, key)) {\n properties[find(state.schema, key).property] = position(\n location.attrs[key]\n )\n }\n }\n }\n\n assert(location.startTag, 'a start tag should exist')\n const opening = position(location.startTag)\n const closing = location.endTag ? position(location.endTag) : undefined\n /** @type {ElementData['position']} */\n const data = {opening}\n if (closing) data.closing = closing\n data.properties = properties\n\n node.data = {position: data}\n }\n }\n\n return result\n}\n\n/**\n * Turn a p5 location into a position.\n *\n * @param {Token.Location} loc\n * Location.\n * @returns {Position | undefined}\n * Position or nothing.\n */\nfunction position(loc) {\n const start = point({\n line: loc.startLine,\n column: loc.startCol,\n offset: loc.startOffset\n })\n const end = point({\n line: loc.endLine,\n column: loc.endCol,\n offset: loc.endOffset\n })\n\n // @ts-expect-error: we do use `undefined` for points if one or the other\n // exists.\n return start || end ? {start, end} : undefined\n}\n\n/**\n * Filter out invalid points.\n *\n * @param {Point} point\n * Point with potentially `undefined` values.\n * @returns {Point | undefined}\n * Point or nothing.\n */\nfunction point(point) {\n return point.line && point.column ? point : undefined\n}\n","const UNDEFINED_CODE_POINTS = new Set([\n 65534, 65535, 131070, 131071, 196606, 196607, 262142, 262143, 327678, 327679, 393214,\n 393215, 458750, 458751, 524286, 524287, 589822, 589823, 655358, 655359, 720894,\n 720895, 786430, 786431, 851966, 851967, 917502, 917503, 983038, 983039, 1048574,\n 1048575, 1114110, 1114111,\n]);\nexport const REPLACEMENT_CHARACTER = '\\uFFFD';\nexport var CODE_POINTS;\n(function (CODE_POINTS) {\n CODE_POINTS[CODE_POINTS[\"EOF\"] = -1] = \"EOF\";\n CODE_POINTS[CODE_POINTS[\"NULL\"] = 0] = \"NULL\";\n CODE_POINTS[CODE_POINTS[\"TABULATION\"] = 9] = \"TABULATION\";\n CODE_POINTS[CODE_POINTS[\"CARRIAGE_RETURN\"] = 13] = \"CARRIAGE_RETURN\";\n CODE_POINTS[CODE_POINTS[\"LINE_FEED\"] = 10] = \"LINE_FEED\";\n CODE_POINTS[CODE_POINTS[\"FORM_FEED\"] = 12] = \"FORM_FEED\";\n CODE_POINTS[CODE_POINTS[\"SPACE\"] = 32] = \"SPACE\";\n CODE_POINTS[CODE_POINTS[\"EXCLAMATION_MARK\"] = 33] = \"EXCLAMATION_MARK\";\n CODE_POINTS[CODE_POINTS[\"QUOTATION_MARK\"] = 34] = \"QUOTATION_MARK\";\n CODE_POINTS[CODE_POINTS[\"AMPERSAND\"] = 38] = \"AMPERSAND\";\n CODE_POINTS[CODE_POINTS[\"APOSTROPHE\"] = 39] = \"APOSTROPHE\";\n CODE_POINTS[CODE_POINTS[\"HYPHEN_MINUS\"] = 45] = \"HYPHEN_MINUS\";\n CODE_POINTS[CODE_POINTS[\"SOLIDUS\"] = 47] = \"SOLIDUS\";\n CODE_POINTS[CODE_POINTS[\"DIGIT_0\"] = 48] = \"DIGIT_0\";\n CODE_POINTS[CODE_POINTS[\"DIGIT_9\"] = 57] = \"DIGIT_9\";\n CODE_POINTS[CODE_POINTS[\"SEMICOLON\"] = 59] = \"SEMICOLON\";\n CODE_POINTS[CODE_POINTS[\"LESS_THAN_SIGN\"] = 60] = \"LESS_THAN_SIGN\";\n CODE_POINTS[CODE_POINTS[\"EQUALS_SIGN\"] = 61] = \"EQUALS_SIGN\";\n CODE_POINTS[CODE_POINTS[\"GREATER_THAN_SIGN\"] = 62] = \"GREATER_THAN_SIGN\";\n CODE_POINTS[CODE_POINTS[\"QUESTION_MARK\"] = 63] = \"QUESTION_MARK\";\n CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_A\"] = 65] = \"LATIN_CAPITAL_A\";\n CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_Z\"] = 90] = \"LATIN_CAPITAL_Z\";\n CODE_POINTS[CODE_POINTS[\"RIGHT_SQUARE_BRACKET\"] = 93] = \"RIGHT_SQUARE_BRACKET\";\n CODE_POINTS[CODE_POINTS[\"GRAVE_ACCENT\"] = 96] = \"GRAVE_ACCENT\";\n CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_A\"] = 97] = \"LATIN_SMALL_A\";\n CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_Z\"] = 122] = \"LATIN_SMALL_Z\";\n})(CODE_POINTS || (CODE_POINTS = {}));\nexport const SEQUENCES = {\n DASH_DASH: '--',\n CDATA_START: '[CDATA[',\n DOCTYPE: 'doctype',\n SCRIPT: 'script',\n PUBLIC: 'public',\n SYSTEM: 'system',\n};\n//Surrogates\nexport function isSurrogate(cp) {\n return cp >= 55296 && cp <= 57343;\n}\nexport function isSurrogatePair(cp) {\n return cp >= 56320 && cp <= 57343;\n}\nexport function getSurrogatePairCodePoint(cp1, cp2) {\n return (cp1 - 55296) * 1024 + 9216 + cp2;\n}\n//NOTE: excluding NULL and ASCII whitespace\nexport function isControlCodePoint(cp) {\n return ((cp !== 0x20 && cp !== 0x0a && cp !== 0x0d && cp !== 0x09 && cp !== 0x0c && cp >= 0x01 && cp <= 0x1f) ||\n (cp >= 0x7f && cp <= 0x9f));\n}\nexport function isUndefinedCodePoint(cp) {\n return (cp >= 64976 && cp <= 65007) || UNDEFINED_CODE_POINTS.has(cp);\n}\n","export var ERR;\n(function (ERR) {\n ERR[\"controlCharacterInInputStream\"] = \"control-character-in-input-stream\";\n ERR[\"noncharacterInInputStream\"] = \"noncharacter-in-input-stream\";\n ERR[\"surrogateInInputStream\"] = \"surrogate-in-input-stream\";\n ERR[\"nonVoidHtmlElementStartTagWithTrailingSolidus\"] = \"non-void-html-element-start-tag-with-trailing-solidus\";\n ERR[\"endTagWithAttributes\"] = \"end-tag-with-attributes\";\n ERR[\"endTagWithTrailingSolidus\"] = \"end-tag-with-trailing-solidus\";\n ERR[\"unexpectedSolidusInTag\"] = \"unexpected-solidus-in-tag\";\n ERR[\"unexpectedNullCharacter\"] = \"unexpected-null-character\";\n ERR[\"unexpectedQuestionMarkInsteadOfTagName\"] = \"unexpected-question-mark-instead-of-tag-name\";\n ERR[\"invalidFirstCharacterOfTagName\"] = \"invalid-first-character-of-tag-name\";\n ERR[\"unexpectedEqualsSignBeforeAttributeName\"] = \"unexpected-equals-sign-before-attribute-name\";\n ERR[\"missingEndTagName\"] = \"missing-end-tag-name\";\n ERR[\"unexpectedCharacterInAttributeName\"] = \"unexpected-character-in-attribute-name\";\n ERR[\"unknownNamedCharacterReference\"] = \"unknown-named-character-reference\";\n ERR[\"missingSemicolonAfterCharacterReference\"] = \"missing-semicolon-after-character-reference\";\n ERR[\"unexpectedCharacterAfterDoctypeSystemIdentifier\"] = \"unexpected-character-after-doctype-system-identifier\";\n ERR[\"unexpectedCharacterInUnquotedAttributeValue\"] = \"unexpected-character-in-unquoted-attribute-value\";\n ERR[\"eofBeforeTagName\"] = \"eof-before-tag-name\";\n ERR[\"eofInTag\"] = \"eof-in-tag\";\n ERR[\"missingAttributeValue\"] = \"missing-attribute-value\";\n ERR[\"missingWhitespaceBetweenAttributes\"] = \"missing-whitespace-between-attributes\";\n ERR[\"missingWhitespaceAfterDoctypePublicKeyword\"] = \"missing-whitespace-after-doctype-public-keyword\";\n ERR[\"missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers\"] = \"missing-whitespace-between-doctype-public-and-system-identifiers\";\n ERR[\"missingWhitespaceAfterDoctypeSystemKeyword\"] = \"missing-whitespace-after-doctype-system-keyword\";\n ERR[\"missingQuoteBeforeDoctypePublicIdentifier\"] = \"missing-quote-before-doctype-public-identifier\";\n ERR[\"missingQuoteBeforeDoctypeSystemIdentifier\"] = \"missing-quote-before-doctype-system-identifier\";\n ERR[\"missingDoctypePublicIdentifier\"] = \"missing-doctype-public-identifier\";\n ERR[\"missingDoctypeSystemIdentifier\"] = \"missing-doctype-system-identifier\";\n ERR[\"abruptDoctypePublicIdentifier\"] = \"abrupt-doctype-public-identifier\";\n ERR[\"abruptDoctypeSystemIdentifier\"] = \"abrupt-doctype-system-identifier\";\n ERR[\"cdataInHtmlContent\"] = \"cdata-in-html-content\";\n ERR[\"incorrectlyOpenedComment\"] = \"incorrectly-opened-comment\";\n ERR[\"eofInScriptHtmlCommentLikeText\"] = \"eof-in-script-html-comment-like-text\";\n ERR[\"eofInDoctype\"] = \"eof-in-doctype\";\n ERR[\"nestedComment\"] = \"nested-comment\";\n ERR[\"abruptClosingOfEmptyComment\"] = \"abrupt-closing-of-empty-comment\";\n ERR[\"eofInComment\"] = \"eof-in-comment\";\n ERR[\"incorrectlyClosedComment\"] = \"incorrectly-closed-comment\";\n ERR[\"eofInCdata\"] = \"eof-in-cdata\";\n ERR[\"absenceOfDigitsInNumericCharacterReference\"] = \"absence-of-digits-in-numeric-character-reference\";\n ERR[\"nullCharacterReference\"] = \"null-character-reference\";\n ERR[\"surrogateCharacterReference\"] = \"surrogate-character-reference\";\n ERR[\"characterReferenceOutsideUnicodeRange\"] = \"character-reference-outside-unicode-range\";\n ERR[\"controlCharacterReference\"] = \"control-character-reference\";\n ERR[\"noncharacterCharacterReference\"] = \"noncharacter-character-reference\";\n ERR[\"missingWhitespaceBeforeDoctypeName\"] = \"missing-whitespace-before-doctype-name\";\n ERR[\"missingDoctypeName\"] = \"missing-doctype-name\";\n ERR[\"invalidCharacterSequenceAfterDoctypeName\"] = \"invalid-character-sequence-after-doctype-name\";\n ERR[\"duplicateAttribute\"] = \"duplicate-attribute\";\n ERR[\"nonConformingDoctype\"] = \"non-conforming-doctype\";\n ERR[\"missingDoctype\"] = \"missing-doctype\";\n ERR[\"misplacedDoctype\"] = \"misplaced-doctype\";\n ERR[\"endTagWithoutMatchingOpenElement\"] = \"end-tag-without-matching-open-element\";\n ERR[\"closingOfElementWithOpenChildElements\"] = \"closing-of-element-with-open-child-elements\";\n ERR[\"disallowedContentInNoscriptInHead\"] = \"disallowed-content-in-noscript-in-head\";\n ERR[\"openElementsLeftAfterEof\"] = \"open-elements-left-after-eof\";\n ERR[\"abandonedHeadElementChild\"] = \"abandoned-head-element-child\";\n ERR[\"misplacedStartTagForHeadElement\"] = \"misplaced-start-tag-for-head-element\";\n ERR[\"nestedNoscriptInHead\"] = \"nested-noscript-in-head\";\n ERR[\"eofInElementThatCanContainOnlyText\"] = \"eof-in-element-that-can-contain-only-text\";\n})(ERR || (ERR = {}));\n","import { CODE_POINTS as $, getSurrogatePairCodePoint, isControlCodePoint, isSurrogate, isSurrogatePair, isUndefinedCodePoint, } from '../common/unicode.js';\nimport { ERR } from '../common/error-codes.js';\n//Const\nconst DEFAULT_BUFFER_WATERLINE = 1 << 16;\n//Preprocessor\n//NOTE: HTML input preprocessing\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#preprocessing-the-input-stream)\nexport class Preprocessor {\n constructor(handler) {\n this.handler = handler;\n this.html = '';\n this.pos = -1;\n // NOTE: Initial `lastGapPos` is -2, to ensure `col` on initialisation is 0\n this.lastGapPos = -2;\n this.gapStack = [];\n this.skipNextNewLine = false;\n this.lastChunkWritten = false;\n this.endOfChunkHit = false;\n this.bufferWaterline = DEFAULT_BUFFER_WATERLINE;\n this.isEol = false;\n this.lineStartPos = 0;\n this.droppedBufferSize = 0;\n this.line = 1;\n //NOTE: avoid reporting errors twice on advance/retreat\n this.lastErrOffset = -1;\n }\n /** The column on the current line. If we just saw a gap (eg. a surrogate pair), return the index before. */\n get col() {\n return this.pos - this.lineStartPos + Number(this.lastGapPos !== this.pos);\n }\n get offset() {\n return this.droppedBufferSize + this.pos;\n }\n getError(code, cpOffset) {\n const { line, col, offset } = this;\n const startCol = col + cpOffset;\n const startOffset = offset + cpOffset;\n return {\n code,\n startLine: line,\n endLine: line,\n startCol,\n endCol: startCol,\n startOffset,\n endOffset: startOffset,\n };\n }\n _err(code) {\n if (this.handler.onParseError && this.lastErrOffset !== this.offset) {\n this.lastErrOffset = this.offset;\n this.handler.onParseError(this.getError(code, 0));\n }\n }\n _addGap() {\n this.gapStack.push(this.lastGapPos);\n this.lastGapPos = this.pos;\n }\n _processSurrogate(cp) {\n //NOTE: try to peek a surrogate pair\n if (this.pos !== this.html.length - 1) {\n const nextCp = this.html.charCodeAt(this.pos + 1);\n if (isSurrogatePair(nextCp)) {\n //NOTE: we have a surrogate pair. Peek pair character and recalculate code point.\n this.pos++;\n //NOTE: add a gap that should be avoided during retreat\n this._addGap();\n return getSurrogatePairCodePoint(cp, nextCp);\n }\n }\n //NOTE: we are at the end of a chunk, therefore we can't infer the surrogate pair yet.\n else if (!this.lastChunkWritten) {\n this.endOfChunkHit = true;\n return $.EOF;\n }\n //NOTE: isolated surrogate\n this._err(ERR.surrogateInInputStream);\n return cp;\n }\n willDropParsedChunk() {\n return this.pos > this.bufferWaterline;\n }\n dropParsedChunk() {\n if (this.willDropParsedChunk()) {\n this.html = this.html.substring(this.pos);\n this.lineStartPos -= this.pos;\n this.droppedBufferSize += this.pos;\n this.pos = 0;\n this.lastGapPos = -2;\n this.gapStack.length = 0;\n }\n }\n write(chunk, isLastChunk) {\n if (this.html.length > 0) {\n this.html += chunk;\n }\n else {\n this.html = chunk;\n }\n this.endOfChunkHit = false;\n this.lastChunkWritten = isLastChunk;\n }\n insertHtmlAtCurrentPos(chunk) {\n this.html = this.html.substring(0, this.pos + 1) + chunk + this.html.substring(this.pos + 1);\n this.endOfChunkHit = false;\n }\n startsWith(pattern, caseSensitive) {\n // Check if our buffer has enough characters\n if (this.pos + pattern.length > this.html.length) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return false;\n }\n if (caseSensitive) {\n return this.html.startsWith(pattern, this.pos);\n }\n for (let i = 0; i < pattern.length; i++) {\n const cp = this.html.charCodeAt(this.pos + i) | 0x20;\n if (cp !== pattern.charCodeAt(i)) {\n return false;\n }\n }\n return true;\n }\n peek(offset) {\n const pos = this.pos + offset;\n if (pos >= this.html.length) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return $.EOF;\n }\n const code = this.html.charCodeAt(pos);\n return code === $.CARRIAGE_RETURN ? $.LINE_FEED : code;\n }\n advance() {\n this.pos++;\n //NOTE: LF should be in the last column of the line\n if (this.isEol) {\n this.isEol = false;\n this.line++;\n this.lineStartPos = this.pos;\n }\n if (this.pos >= this.html.length) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return $.EOF;\n }\n let cp = this.html.charCodeAt(this.pos);\n //NOTE: all U+000D CARRIAGE RETURN (CR) characters must be converted to U+000A LINE FEED (LF) characters\n if (cp === $.CARRIAGE_RETURN) {\n this.isEol = true;\n this.skipNextNewLine = true;\n return $.LINE_FEED;\n }\n //NOTE: any U+000A LINE FEED (LF) characters that immediately follow a U+000D CARRIAGE RETURN (CR) character\n //must be ignored.\n if (cp === $.LINE_FEED) {\n this.isEol = true;\n if (this.skipNextNewLine) {\n // `line` will be bumped again in the recursive call.\n this.line--;\n this.skipNextNewLine = false;\n this._addGap();\n return this.advance();\n }\n }\n this.skipNextNewLine = false;\n if (isSurrogate(cp)) {\n cp = this._processSurrogate(cp);\n }\n //OPTIMIZATION: first check if code point is in the common allowed\n //range (ASCII alphanumeric, whitespaces, big chunk of BMP)\n //before going into detailed performance cost validation.\n const isCommonValidRange = this.handler.onParseError === null ||\n (cp > 0x1f && cp < 0x7f) ||\n cp === $.LINE_FEED ||\n cp === $.CARRIAGE_RETURN ||\n (cp > 0x9f && cp < 64976);\n if (!isCommonValidRange) {\n this._checkForProblematicCharacters(cp);\n }\n return cp;\n }\n _checkForProblematicCharacters(cp) {\n if (isControlCodePoint(cp)) {\n this._err(ERR.controlCharacterInInputStream);\n }\n else if (isUndefinedCodePoint(cp)) {\n this._err(ERR.noncharacterInInputStream);\n }\n }\n retreat(count) {\n this.pos -= count;\n while (this.pos < this.lastGapPos) {\n this.lastGapPos = this.gapStack.pop();\n this.pos--;\n }\n this.isEol = false;\n }\n}\n","export var TokenType;\n(function (TokenType) {\n TokenType[TokenType[\"CHARACTER\"] = 0] = \"CHARACTER\";\n TokenType[TokenType[\"NULL_CHARACTER\"] = 1] = \"NULL_CHARACTER\";\n TokenType[TokenType[\"WHITESPACE_CHARACTER\"] = 2] = \"WHITESPACE_CHARACTER\";\n TokenType[TokenType[\"START_TAG\"] = 3] = \"START_TAG\";\n TokenType[TokenType[\"END_TAG\"] = 4] = \"END_TAG\";\n TokenType[TokenType[\"COMMENT\"] = 5] = \"COMMENT\";\n TokenType[TokenType[\"DOCTYPE\"] = 6] = \"DOCTYPE\";\n TokenType[TokenType[\"EOF\"] = 7] = \"EOF\";\n TokenType[TokenType[\"HIBERNATION\"] = 8] = \"HIBERNATION\";\n})(TokenType || (TokenType = {}));\nexport function getTokenAttr(token, attrName) {\n for (let i = token.attrs.length - 1; i >= 0; i--) {\n if (token.attrs[i].name === attrName) {\n return token.attrs[i].value;\n }\n }\n return null;\n}\n","// Generated using scripts/write-decode-map.ts\n\nexport const htmlDecodeTree: Uint16Array = /* #__PURE__ */ new Uint16Array(\n // prettier-ignore\n /* #__PURE__ */ \"\\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);\n","// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\n\nconst decodeMap = new Map([\n [0, 65_533],\n // C1 Unicode control character reference replacements\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]);\n\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexport const fromCodePoint: (...codePoints: number[]) => string =\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins\n String.fromCodePoint ??\n function (codePoint: number): string {\n let output = \"\";\n\n if (codePoint > 0xff_ff) {\n codePoint -= 0x1_00_00;\n output += String.fromCharCode(\n ((codePoint >>> 10) & 0x3_ff) | 0xd8_00,\n );\n codePoint = 0xdc_00 | (codePoint & 0x3_ff);\n }\n\n output += String.fromCharCode(codePoint);\n return output;\n };\n\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nexport function replaceCodePoint(codePoint: number): number {\n if (\n (codePoint >= 0xd8_00 && codePoint <= 0xdf_ff) ||\n codePoint > 0x10_ff_ff\n ) {\n return 0xff_fd;\n }\n\n return decodeMap.get(codePoint) ?? codePoint;\n}\n\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nexport function decodeCodePoint(codePoint: number): string {\n return fromCodePoint(replaceCodePoint(codePoint));\n}\n","import { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nimport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\nimport { replaceCodePoint, fromCodePoint } from \"./decode-codepoint.js\";\n\nconst enum CharCodes {\n NUM = 35, // \"#\"\n SEMI = 59, // \";\"\n EQUALS = 61, // \"=\"\n ZERO = 48, // \"0\"\n NINE = 57, // \"9\"\n LOWER_A = 97, // \"a\"\n LOWER_F = 102, // \"f\"\n LOWER_X = 120, // \"x\"\n LOWER_Z = 122, // \"z\"\n UPPER_A = 65, // \"A\"\n UPPER_F = 70, // \"F\"\n UPPER_Z = 90, // \"Z\"\n}\n\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 0b10_0000;\n\nexport enum BinTrieFlags {\n VALUE_LENGTH = 0b1100_0000_0000_0000,\n BRANCH_LENGTH = 0b0011_1111_1000_0000,\n JUMP_TABLE = 0b0000_0000_0111_1111,\n}\n\nfunction isNumber(code: number): boolean {\n return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\n\nfunction isHexadecimalCharacter(code: number): boolean {\n return (\n (code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F)\n );\n}\n\nfunction isAsciiAlphaNumeric(code: number): boolean {\n return (\n (code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n isNumber(code)\n );\n}\n\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code: number): boolean {\n return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\n\nconst enum EntityDecoderState {\n EntityStart,\n NumericStart,\n NumericDecimal,\n NumericHex,\n NamedEntity,\n}\n\nexport enum DecodingMode {\n /** Entities in text nodes that can end with any character. */\n Legacy = 0,\n /** Only allow entities terminated with a semicolon. */\n Strict = 1,\n /** Entities in attributes have limitations on ending characters. */\n Attribute = 2,\n}\n\n/**\n * Producers for character reference errors as defined in the HTML spec.\n */\nexport interface EntityErrorProducer {\n missingSemicolonAfterCharacterReference(): void;\n absenceOfDigitsInNumericCharacterReference(\n consumedCharacters: number,\n ): void;\n validateNumericCharacterReference(code: number): void;\n}\n\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n constructor(\n /** The tree used to decode entities. */\n private readonly decodeTree: Uint16Array,\n /**\n * The function that is called when a codepoint is decoded.\n *\n * For multi-byte named entities, this will be called multiple times,\n * with the second codepoint, and the same `consumed` value.\n *\n * @param codepoint The decoded codepoint.\n * @param consumed The number of bytes consumed by the decoder.\n */\n private readonly emitCodePoint: (cp: number, consumed: number) => void,\n /** An object that is used to produce errors. */\n private readonly errors?: EntityErrorProducer | undefined,\n ) {}\n\n /** The current state of the decoder. */\n private state = EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */\n private consumed = 1;\n /**\n * The result of the entity.\n *\n * Either the result index of a numeric entity, or the codepoint of a\n * numeric entity.\n */\n private result = 0;\n\n /** The current index in the decode tree. */\n private treeIndex = 0;\n /** The number of characters that were consumed in excess. */\n private excess = 1;\n /** The mode in which the decoder is operating. */\n private decodeMode = DecodingMode.Strict;\n\n /** Resets the instance to make it reusable. */\n startEntity(decodeMode: DecodingMode): void {\n this.decodeMode = decodeMode;\n this.state = EntityDecoderState.EntityStart;\n this.result = 0;\n this.treeIndex = 0;\n this.excess = 1;\n this.consumed = 1;\n }\n\n /**\n * Write an entity to the decoder. This can be called multiple times with partial entities.\n * If the entity is incomplete, the decoder will return -1.\n *\n * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n * entity is incomplete, and resume when the next string is written.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n write(input: string, offset: number): number {\n switch (this.state) {\n case EntityDecoderState.EntityStart: {\n if (input.charCodeAt(offset) === CharCodes.NUM) {\n this.state = EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(input, offset + 1);\n }\n this.state = EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(input, offset);\n }\n\n case EntityDecoderState.NumericStart: {\n return this.stateNumericStart(input, offset);\n }\n\n case EntityDecoderState.NumericDecimal: {\n return this.stateNumericDecimal(input, offset);\n }\n\n case EntityDecoderState.NumericHex: {\n return this.stateNumericHex(input, offset);\n }\n\n case EntityDecoderState.NamedEntity: {\n return this.stateNamedEntity(input, offset);\n }\n }\n }\n\n /**\n * Switches between the numeric decimal and hexadecimal states.\n *\n * Equivalent to the `Numeric character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n private stateNumericStart(input: string, offset: number): number {\n if (offset >= input.length) {\n return -1;\n }\n\n if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n this.state = EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(input, offset + 1);\n }\n\n this.state = EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(input, offset);\n }\n\n private addToNumericResult(\n input: string,\n start: number,\n end: number,\n base: number,\n ): void {\n if (start !== end) {\n const digitCount = end - start;\n this.result =\n this.result * Math.pow(base, digitCount) +\n Number.parseInt(input.substr(start, digitCount), base);\n this.consumed += digitCount;\n }\n }\n\n /**\n * Parses a hexadecimal numeric entity.\n *\n * Equivalent to the `Hexademical character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n private stateNumericHex(input: string, offset: number): number {\n const startIndex = offset;\n\n while (offset < input.length) {\n const char = input.charCodeAt(offset);\n if (isNumber(char) || isHexadecimalCharacter(char)) {\n offset += 1;\n } else {\n this.addToNumericResult(input, startIndex, offset, 16);\n return this.emitNumericEntity(char, 3);\n }\n }\n\n this.addToNumericResult(input, startIndex, offset, 16);\n\n return -1;\n }\n\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n private stateNumericDecimal(input: string, offset: number): number {\n const startIndex = offset;\n\n while (offset < input.length) {\n const char = input.charCodeAt(offset);\n if (isNumber(char)) {\n offset += 1;\n } else {\n this.addToNumericResult(input, startIndex, offset, 10);\n return this.emitNumericEntity(char, 2);\n }\n }\n\n this.addToNumericResult(input, startIndex, offset, 10);\n\n return -1;\n }\n\n /**\n * Validate and emit a numeric entity.\n *\n * Implements the logic from the `Hexademical character reference start\n * state` and `Numeric character reference end state` in the HTML spec.\n *\n * @param lastCp The last code point of the entity. Used to see if the\n * entity was terminated with a semicolon.\n * @param expectedLength The minimum number of characters that should be\n * consumed. Used to validate that at least one digit\n * was consumed.\n * @returns The number of characters that were consumed.\n */\n private emitNumericEntity(lastCp: number, expectedLength: number): number {\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n this.errors?.absenceOfDigitsInNumericCharacterReference(\n this.consumed,\n );\n return 0;\n }\n\n // Figure out if this is a legit end of the entity\n if (lastCp === CharCodes.SEMI) {\n this.consumed += 1;\n } else if (this.decodeMode === DecodingMode.Strict) {\n return 0;\n }\n\n this.emitCodePoint(replaceCodePoint(this.result), this.consumed);\n\n if (this.errors) {\n if (lastCp !== CharCodes.SEMI) {\n this.errors.missingSemicolonAfterCharacterReference();\n }\n\n this.errors.validateNumericCharacterReference(this.result);\n }\n\n return this.consumed;\n }\n\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n private stateNamedEntity(input: string, offset: number): number {\n const { decodeTree } = this;\n let current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n\n for (; offset < input.length; offset++, this.excess++) {\n const char = input.charCodeAt(offset);\n\n this.treeIndex = determineBranch(\n decodeTree,\n current,\n this.treeIndex + Math.max(1, valueLength),\n char,\n );\n\n if (this.treeIndex < 0) {\n return this.result === 0 ||\n // If we are parsing an attribute\n (this.decodeMode === DecodingMode.Attribute &&\n // We shouldn't have consumed any characters after the entity,\n (valueLength === 0 ||\n // And there should be no invalid characters.\n isEntityInAttributeInvalidEnd(char)))\n ? 0\n : this.emitNotTerminatedNamedEntity();\n }\n\n current = decodeTree[this.treeIndex];\n valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n\n // If the branch is a value, store it and continue\n if (valueLength !== 0) {\n // If the entity is terminated by a semicolon, we are done.\n if (char === CharCodes.SEMI) {\n return this.emitNamedEntityData(\n this.treeIndex,\n valueLength,\n this.consumed + this.excess,\n );\n }\n\n // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n if (this.decodeMode !== DecodingMode.Strict) {\n this.result = this.treeIndex;\n this.consumed += this.excess;\n this.excess = 0;\n }\n }\n }\n\n return -1;\n }\n\n /**\n * Emit a named entity that was not terminated with a semicolon.\n *\n * @returns The number of characters consumed.\n */\n private emitNotTerminatedNamedEntity(): number {\n const { result, decodeTree } = this;\n\n const valueLength =\n (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n\n this.emitNamedEntityData(result, valueLength, this.consumed);\n this.errors?.missingSemicolonAfterCharacterReference();\n\n return this.consumed;\n }\n\n /**\n * Emit a named entity.\n *\n * @param result The index of the entity in the decode tree.\n * @param valueLength The number of bytes in the entity.\n * @param consumed The number of characters consumed.\n *\n * @returns The number of characters consumed.\n */\n private emitNamedEntityData(\n result: number,\n valueLength: number,\n consumed: number,\n ): number {\n const { decodeTree } = this;\n\n this.emitCodePoint(\n valueLength === 1\n ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n : decodeTree[result + 1],\n consumed,\n );\n if (valueLength === 3) {\n // For multi-byte values, we need to emit the second byte.\n this.emitCodePoint(decodeTree[result + 2], consumed);\n }\n\n return consumed;\n }\n\n /**\n * Signal to the parser that the end of the input was reached.\n *\n * Remaining data will be emitted and relevant errors will be produced.\n *\n * @returns The number of characters consumed.\n */\n end(): number {\n switch (this.state) {\n case EntityDecoderState.NamedEntity: {\n // Emit a named entity if we have one.\n return this.result !== 0 &&\n (this.decodeMode !== DecodingMode.Attribute ||\n this.result === this.treeIndex)\n ? this.emitNotTerminatedNamedEntity()\n : 0;\n }\n // Otherwise, emit a numeric entity if we have one.\n case EntityDecoderState.NumericDecimal: {\n return this.emitNumericEntity(0, 2);\n }\n case EntityDecoderState.NumericHex: {\n return this.emitNumericEntity(0, 3);\n }\n case EntityDecoderState.NumericStart: {\n this.errors?.absenceOfDigitsInNumericCharacterReference(\n this.consumed,\n );\n return 0;\n }\n case EntityDecoderState.EntityStart: {\n // Return 0 if we have no entity.\n return 0;\n }\n }\n }\n}\n\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree: Uint16Array) {\n let returnValue = \"\";\n const decoder = new EntityDecoder(\n decodeTree,\n (data) => (returnValue += fromCodePoint(data)),\n );\n\n return function decodeWithTrie(\n input: string,\n decodeMode: DecodingMode,\n ): string {\n let lastIndex = 0;\n let offset = 0;\n\n while ((offset = input.indexOf(\"&\", offset)) >= 0) {\n returnValue += input.slice(lastIndex, offset);\n\n decoder.startEntity(decodeMode);\n\n const length = decoder.write(\n input,\n // Skip the \"&\"\n offset + 1,\n );\n\n if (length < 0) {\n lastIndex = offset + decoder.end();\n break;\n }\n\n lastIndex = offset + length;\n // If `length` is 0, skip the current `&` and continue.\n offset = length === 0 ? lastIndex + 1 : lastIndex;\n }\n\n const result = returnValue + input.slice(lastIndex);\n\n // Make sure we don't keep a reference to the final string.\n returnValue = \"\";\n\n return result;\n };\n}\n\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nexport function determineBranch(\n decodeTree: Uint16Array,\n current: number,\n nodeIndex: number,\n char: number,\n): number {\n const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) {\n return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1;\n }\n\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n const value = char - jumpOffset;\n\n return value < 0 || value >= branchCount\n ? -1\n : decodeTree[nodeIndex + value] - 1;\n }\n\n // Case 3: Multiple branches encoded in dictionary\n\n // Binary search for the character.\n let lo = nodeIndex;\n let hi = lo + branchCount - 1;\n\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n const midValue = decodeTree[mid];\n\n if (midValue < char) {\n lo = mid + 1;\n } else if (midValue > char) {\n hi = mid - 1;\n } else {\n return decodeTree[mid + branchCount];\n }\n }\n\n return -1;\n}\n\nconst htmlDecoder = /* #__PURE__ */ getDecoder(htmlDecodeTree);\nconst xmlDecoder = /* #__PURE__ */ getDecoder(xmlDecodeTree);\n\n/**\n * Decodes an HTML string.\n *\n * @param htmlString The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nexport function decodeHTML(\n htmlString: string,\n mode: DecodingMode = DecodingMode.Legacy,\n): string {\n return htmlDecoder(htmlString, mode);\n}\n\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param htmlAttribute The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(htmlAttribute: string): string {\n return htmlDecoder(htmlAttribute, DecodingMode.Attribute);\n}\n\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param htmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLStrict(htmlString: string): string {\n return htmlDecoder(htmlString, DecodingMode.Strict);\n}\n\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param xmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeXML(xmlString: string): string {\n return xmlDecoder(xmlString, DecodingMode.Strict);\n}\n\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nexport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\n\nexport {\n decodeCodePoint,\n replaceCodePoint,\n fromCodePoint,\n} from \"./decode-codepoint.js\";\n","/** All valid namespaces in HTML. */\nexport var NS;\n(function (NS) {\n NS[\"HTML\"] = \"http://www.w3.org/1999/xhtml\";\n NS[\"MATHML\"] = \"http://www.w3.org/1998/Math/MathML\";\n NS[\"SVG\"] = \"http://www.w3.org/2000/svg\";\n NS[\"XLINK\"] = \"http://www.w3.org/1999/xlink\";\n NS[\"XML\"] = \"http://www.w3.org/XML/1998/namespace\";\n NS[\"XMLNS\"] = \"http://www.w3.org/2000/xmlns/\";\n})(NS || (NS = {}));\nexport var ATTRS;\n(function (ATTRS) {\n ATTRS[\"TYPE\"] = \"type\";\n ATTRS[\"ACTION\"] = \"action\";\n ATTRS[\"ENCODING\"] = \"encoding\";\n ATTRS[\"PROMPT\"] = \"prompt\";\n ATTRS[\"NAME\"] = \"name\";\n ATTRS[\"COLOR\"] = \"color\";\n ATTRS[\"FACE\"] = \"face\";\n ATTRS[\"SIZE\"] = \"size\";\n})(ATTRS || (ATTRS = {}));\n/**\n * The mode of the document.\n *\n * @see {@link https://dom.spec.whatwg.org/#concept-document-limited-quirks}\n */\nexport var DOCUMENT_MODE;\n(function (DOCUMENT_MODE) {\n DOCUMENT_MODE[\"NO_QUIRKS\"] = \"no-quirks\";\n DOCUMENT_MODE[\"QUIRKS\"] = \"quirks\";\n DOCUMENT_MODE[\"LIMITED_QUIRKS\"] = \"limited-quirks\";\n})(DOCUMENT_MODE || (DOCUMENT_MODE = {}));\nexport var TAG_NAMES;\n(function (TAG_NAMES) {\n TAG_NAMES[\"A\"] = \"a\";\n TAG_NAMES[\"ADDRESS\"] = \"address\";\n TAG_NAMES[\"ANNOTATION_XML\"] = \"annotation-xml\";\n TAG_NAMES[\"APPLET\"] = \"applet\";\n TAG_NAMES[\"AREA\"] = \"area\";\n TAG_NAMES[\"ARTICLE\"] = \"article\";\n TAG_NAMES[\"ASIDE\"] = \"aside\";\n TAG_NAMES[\"B\"] = \"b\";\n TAG_NAMES[\"BASE\"] = \"base\";\n TAG_NAMES[\"BASEFONT\"] = \"basefont\";\n TAG_NAMES[\"BGSOUND\"] = \"bgsound\";\n TAG_NAMES[\"BIG\"] = \"big\";\n TAG_NAMES[\"BLOCKQUOTE\"] = \"blockquote\";\n TAG_NAMES[\"BODY\"] = \"body\";\n TAG_NAMES[\"BR\"] = \"br\";\n TAG_NAMES[\"BUTTON\"] = \"button\";\n TAG_NAMES[\"CAPTION\"] = \"caption\";\n TAG_NAMES[\"CENTER\"] = \"center\";\n TAG_NAMES[\"CODE\"] = \"code\";\n TAG_NAMES[\"COL\"] = \"col\";\n TAG_NAMES[\"COLGROUP\"] = \"colgroup\";\n TAG_NAMES[\"DD\"] = \"dd\";\n TAG_NAMES[\"DESC\"] = \"desc\";\n TAG_NAMES[\"DETAILS\"] = \"details\";\n TAG_NAMES[\"DIALOG\"] = \"dialog\";\n TAG_NAMES[\"DIR\"] = \"dir\";\n TAG_NAMES[\"DIV\"] = \"div\";\n TAG_NAMES[\"DL\"] = \"dl\";\n TAG_NAMES[\"DT\"] = \"dt\";\n TAG_NAMES[\"EM\"] = \"em\";\n TAG_NAMES[\"EMBED\"] = \"embed\";\n TAG_NAMES[\"FIELDSET\"] = \"fieldset\";\n TAG_NAMES[\"FIGCAPTION\"] = \"figcaption\";\n TAG_NAMES[\"FIGURE\"] = \"figure\";\n TAG_NAMES[\"FONT\"] = \"font\";\n TAG_NAMES[\"FOOTER\"] = \"footer\";\n TAG_NAMES[\"FOREIGN_OBJECT\"] = \"foreignObject\";\n TAG_NAMES[\"FORM\"] = \"form\";\n TAG_NAMES[\"FRAME\"] = \"frame\";\n TAG_NAMES[\"FRAMESET\"] = \"frameset\";\n TAG_NAMES[\"H1\"] = \"h1\";\n TAG_NAMES[\"H2\"] = \"h2\";\n TAG_NAMES[\"H3\"] = \"h3\";\n TAG_NAMES[\"H4\"] = \"h4\";\n TAG_NAMES[\"H5\"] = \"h5\";\n TAG_NAMES[\"H6\"] = \"h6\";\n TAG_NAMES[\"HEAD\"] = \"head\";\n TAG_NAMES[\"HEADER\"] = \"header\";\n TAG_NAMES[\"HGROUP\"] = \"hgroup\";\n TAG_NAMES[\"HR\"] = \"hr\";\n TAG_NAMES[\"HTML\"] = \"html\";\n TAG_NAMES[\"I\"] = \"i\";\n TAG_NAMES[\"IMG\"] = \"img\";\n TAG_NAMES[\"IMAGE\"] = \"image\";\n TAG_NAMES[\"INPUT\"] = \"input\";\n TAG_NAMES[\"IFRAME\"] = \"iframe\";\n TAG_NAMES[\"KEYGEN\"] = \"keygen\";\n TAG_NAMES[\"LABEL\"] = \"label\";\n TAG_NAMES[\"LI\"] = \"li\";\n TAG_NAMES[\"LINK\"] = \"link\";\n TAG_NAMES[\"LISTING\"] = \"listing\";\n TAG_NAMES[\"MAIN\"] = \"main\";\n TAG_NAMES[\"MALIGNMARK\"] = \"malignmark\";\n TAG_NAMES[\"MARQUEE\"] = \"marquee\";\n TAG_NAMES[\"MATH\"] = \"math\";\n TAG_NAMES[\"MENU\"] = \"menu\";\n TAG_NAMES[\"META\"] = \"meta\";\n TAG_NAMES[\"MGLYPH\"] = \"mglyph\";\n TAG_NAMES[\"MI\"] = \"mi\";\n TAG_NAMES[\"MO\"] = \"mo\";\n TAG_NAMES[\"MN\"] = \"mn\";\n TAG_NAMES[\"MS\"] = \"ms\";\n TAG_NAMES[\"MTEXT\"] = \"mtext\";\n TAG_NAMES[\"NAV\"] = \"nav\";\n TAG_NAMES[\"NOBR\"] = \"nobr\";\n TAG_NAMES[\"NOFRAMES\"] = \"noframes\";\n TAG_NAMES[\"NOEMBED\"] = \"noembed\";\n TAG_NAMES[\"NOSCRIPT\"] = \"noscript\";\n TAG_NAMES[\"OBJECT\"] = \"object\";\n TAG_NAMES[\"OL\"] = \"ol\";\n TAG_NAMES[\"OPTGROUP\"] = \"optgroup\";\n TAG_NAMES[\"OPTION\"] = \"option\";\n TAG_NAMES[\"P\"] = \"p\";\n TAG_NAMES[\"PARAM\"] = \"param\";\n TAG_NAMES[\"PLAINTEXT\"] = \"plaintext\";\n TAG_NAMES[\"PRE\"] = \"pre\";\n TAG_NAMES[\"RB\"] = \"rb\";\n TAG_NAMES[\"RP\"] = \"rp\";\n TAG_NAMES[\"RT\"] = \"rt\";\n TAG_NAMES[\"RTC\"] = \"rtc\";\n TAG_NAMES[\"RUBY\"] = \"ruby\";\n TAG_NAMES[\"S\"] = \"s\";\n TAG_NAMES[\"SCRIPT\"] = \"script\";\n TAG_NAMES[\"SEARCH\"] = \"search\";\n TAG_NAMES[\"SECTION\"] = \"section\";\n TAG_NAMES[\"SELECT\"] = \"select\";\n TAG_NAMES[\"SOURCE\"] = \"source\";\n TAG_NAMES[\"SMALL\"] = \"small\";\n TAG_NAMES[\"SPAN\"] = \"span\";\n TAG_NAMES[\"STRIKE\"] = \"strike\";\n TAG_NAMES[\"STRONG\"] = \"strong\";\n TAG_NAMES[\"STYLE\"] = \"style\";\n TAG_NAMES[\"SUB\"] = \"sub\";\n TAG_NAMES[\"SUMMARY\"] = \"summary\";\n TAG_NAMES[\"SUP\"] = \"sup\";\n TAG_NAMES[\"TABLE\"] = \"table\";\n TAG_NAMES[\"TBODY\"] = \"tbody\";\n TAG_NAMES[\"TEMPLATE\"] = \"template\";\n TAG_NAMES[\"TEXTAREA\"] = \"textarea\";\n TAG_NAMES[\"TFOOT\"] = \"tfoot\";\n TAG_NAMES[\"TD\"] = \"td\";\n TAG_NAMES[\"TH\"] = \"th\";\n TAG_NAMES[\"THEAD\"] = \"thead\";\n TAG_NAMES[\"TITLE\"] = \"title\";\n TAG_NAMES[\"TR\"] = \"tr\";\n TAG_NAMES[\"TRACK\"] = \"track\";\n TAG_NAMES[\"TT\"] = \"tt\";\n TAG_NAMES[\"U\"] = \"u\";\n TAG_NAMES[\"UL\"] = \"ul\";\n TAG_NAMES[\"SVG\"] = \"svg\";\n TAG_NAMES[\"VAR\"] = \"var\";\n TAG_NAMES[\"WBR\"] = \"wbr\";\n TAG_NAMES[\"XMP\"] = \"xmp\";\n})(TAG_NAMES || (TAG_NAMES = {}));\n/**\n * Tag IDs are numeric IDs for known tag names.\n *\n * We use tag IDs to improve the performance of tag name comparisons.\n */\nexport var TAG_ID;\n(function (TAG_ID) {\n TAG_ID[TAG_ID[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n TAG_ID[TAG_ID[\"A\"] = 1] = \"A\";\n TAG_ID[TAG_ID[\"ADDRESS\"] = 2] = \"ADDRESS\";\n TAG_ID[TAG_ID[\"ANNOTATION_XML\"] = 3] = \"ANNOTATION_XML\";\n TAG_ID[TAG_ID[\"APPLET\"] = 4] = \"APPLET\";\n TAG_ID[TAG_ID[\"AREA\"] = 5] = \"AREA\";\n TAG_ID[TAG_ID[\"ARTICLE\"] = 6] = \"ARTICLE\";\n TAG_ID[TAG_ID[\"ASIDE\"] = 7] = \"ASIDE\";\n TAG_ID[TAG_ID[\"B\"] = 8] = \"B\";\n TAG_ID[TAG_ID[\"BASE\"] = 9] = \"BASE\";\n TAG_ID[TAG_ID[\"BASEFONT\"] = 10] = \"BASEFONT\";\n TAG_ID[TAG_ID[\"BGSOUND\"] = 11] = \"BGSOUND\";\n TAG_ID[TAG_ID[\"BIG\"] = 12] = \"BIG\";\n TAG_ID[TAG_ID[\"BLOCKQUOTE\"] = 13] = \"BLOCKQUOTE\";\n TAG_ID[TAG_ID[\"BODY\"] = 14] = \"BODY\";\n TAG_ID[TAG_ID[\"BR\"] = 15] = \"BR\";\n TAG_ID[TAG_ID[\"BUTTON\"] = 16] = \"BUTTON\";\n TAG_ID[TAG_ID[\"CAPTION\"] = 17] = \"CAPTION\";\n TAG_ID[TAG_ID[\"CENTER\"] = 18] = \"CENTER\";\n TAG_ID[TAG_ID[\"CODE\"] = 19] = \"CODE\";\n TAG_ID[TAG_ID[\"COL\"] = 20] = \"COL\";\n TAG_ID[TAG_ID[\"COLGROUP\"] = 21] = \"COLGROUP\";\n TAG_ID[TAG_ID[\"DD\"] = 22] = \"DD\";\n TAG_ID[TAG_ID[\"DESC\"] = 23] = \"DESC\";\n TAG_ID[TAG_ID[\"DETAILS\"] = 24] = \"DETAILS\";\n TAG_ID[TAG_ID[\"DIALOG\"] = 25] = \"DIALOG\";\n TAG_ID[TAG_ID[\"DIR\"] = 26] = \"DIR\";\n TAG_ID[TAG_ID[\"DIV\"] = 27] = \"DIV\";\n TAG_ID[TAG_ID[\"DL\"] = 28] = \"DL\";\n TAG_ID[TAG_ID[\"DT\"] = 29] = \"DT\";\n TAG_ID[TAG_ID[\"EM\"] = 30] = \"EM\";\n TAG_ID[TAG_ID[\"EMBED\"] = 31] = \"EMBED\";\n TAG_ID[TAG_ID[\"FIELDSET\"] = 32] = \"FIELDSET\";\n TAG_ID[TAG_ID[\"FIGCAPTION\"] = 33] = \"FIGCAPTION\";\n TAG_ID[TAG_ID[\"FIGURE\"] = 34] = \"FIGURE\";\n TAG_ID[TAG_ID[\"FONT\"] = 35] = \"FONT\";\n TAG_ID[TAG_ID[\"FOOTER\"] = 36] = \"FOOTER\";\n TAG_ID[TAG_ID[\"FOREIGN_OBJECT\"] = 37] = \"FOREIGN_OBJECT\";\n TAG_ID[TAG_ID[\"FORM\"] = 38] = \"FORM\";\n TAG_ID[TAG_ID[\"FRAME\"] = 39] = \"FRAME\";\n TAG_ID[TAG_ID[\"FRAMESET\"] = 40] = \"FRAMESET\";\n TAG_ID[TAG_ID[\"H1\"] = 41] = \"H1\";\n TAG_ID[TAG_ID[\"H2\"] = 42] = \"H2\";\n TAG_ID[TAG_ID[\"H3\"] = 43] = \"H3\";\n TAG_ID[TAG_ID[\"H4\"] = 44] = \"H4\";\n TAG_ID[TAG_ID[\"H5\"] = 45] = \"H5\";\n TAG_ID[TAG_ID[\"H6\"] = 46] = \"H6\";\n TAG_ID[TAG_ID[\"HEAD\"] = 47] = \"HEAD\";\n TAG_ID[TAG_ID[\"HEADER\"] = 48] = \"HEADER\";\n TAG_ID[TAG_ID[\"HGROUP\"] = 49] = \"HGROUP\";\n TAG_ID[TAG_ID[\"HR\"] = 50] = \"HR\";\n TAG_ID[TAG_ID[\"HTML\"] = 51] = \"HTML\";\n TAG_ID[TAG_ID[\"I\"] = 52] = \"I\";\n TAG_ID[TAG_ID[\"IMG\"] = 53] = \"IMG\";\n TAG_ID[TAG_ID[\"IMAGE\"] = 54] = \"IMAGE\";\n TAG_ID[TAG_ID[\"INPUT\"] = 55] = \"INPUT\";\n TAG_ID[TAG_ID[\"IFRAME\"] = 56] = \"IFRAME\";\n TAG_ID[TAG_ID[\"KEYGEN\"] = 57] = \"KEYGEN\";\n TAG_ID[TAG_ID[\"LABEL\"] = 58] = \"LABEL\";\n TAG_ID[TAG_ID[\"LI\"] = 59] = \"LI\";\n TAG_ID[TAG_ID[\"LINK\"] = 60] = \"LINK\";\n TAG_ID[TAG_ID[\"LISTING\"] = 61] = \"LISTING\";\n TAG_ID[TAG_ID[\"MAIN\"] = 62] = \"MAIN\";\n TAG_ID[TAG_ID[\"MALIGNMARK\"] = 63] = \"MALIGNMARK\";\n TAG_ID[TAG_ID[\"MARQUEE\"] = 64] = \"MARQUEE\";\n TAG_ID[TAG_ID[\"MATH\"] = 65] = \"MATH\";\n TAG_ID[TAG_ID[\"MENU\"] = 66] = \"MENU\";\n TAG_ID[TAG_ID[\"META\"] = 67] = \"META\";\n TAG_ID[TAG_ID[\"MGLYPH\"] = 68] = \"MGLYPH\";\n TAG_ID[TAG_ID[\"MI\"] = 69] = \"MI\";\n TAG_ID[TAG_ID[\"MO\"] = 70] = \"MO\";\n TAG_ID[TAG_ID[\"MN\"] = 71] = \"MN\";\n TAG_ID[TAG_ID[\"MS\"] = 72] = \"MS\";\n TAG_ID[TAG_ID[\"MTEXT\"] = 73] = \"MTEXT\";\n TAG_ID[TAG_ID[\"NAV\"] = 74] = \"NAV\";\n TAG_ID[TAG_ID[\"NOBR\"] = 75] = \"NOBR\";\n TAG_ID[TAG_ID[\"NOFRAMES\"] = 76] = \"NOFRAMES\";\n TAG_ID[TAG_ID[\"NOEMBED\"] = 77] = \"NOEMBED\";\n TAG_ID[TAG_ID[\"NOSCRIPT\"] = 78] = \"NOSCRIPT\";\n TAG_ID[TAG_ID[\"OBJECT\"] = 79] = \"OBJECT\";\n TAG_ID[TAG_ID[\"OL\"] = 80] = \"OL\";\n TAG_ID[TAG_ID[\"OPTGROUP\"] = 81] = \"OPTGROUP\";\n TAG_ID[TAG_ID[\"OPTION\"] = 82] = \"OPTION\";\n TAG_ID[TAG_ID[\"P\"] = 83] = \"P\";\n TAG_ID[TAG_ID[\"PARAM\"] = 84] = \"PARAM\";\n TAG_ID[TAG_ID[\"PLAINTEXT\"] = 85] = \"PLAINTEXT\";\n TAG_ID[TAG_ID[\"PRE\"] = 86] = \"PRE\";\n TAG_ID[TAG_ID[\"RB\"] = 87] = \"RB\";\n TAG_ID[TAG_ID[\"RP\"] = 88] = \"RP\";\n TAG_ID[TAG_ID[\"RT\"] = 89] = \"RT\";\n TAG_ID[TAG_ID[\"RTC\"] = 90] = \"RTC\";\n TAG_ID[TAG_ID[\"RUBY\"] = 91] = \"RUBY\";\n TAG_ID[TAG_ID[\"S\"] = 92] = \"S\";\n TAG_ID[TAG_ID[\"SCRIPT\"] = 93] = \"SCRIPT\";\n TAG_ID[TAG_ID[\"SEARCH\"] = 94] = \"SEARCH\";\n TAG_ID[TAG_ID[\"SECTION\"] = 95] = \"SECTION\";\n TAG_ID[TAG_ID[\"SELECT\"] = 96] = \"SELECT\";\n TAG_ID[TAG_ID[\"SOURCE\"] = 97] = \"SOURCE\";\n TAG_ID[TAG_ID[\"SMALL\"] = 98] = \"SMALL\";\n TAG_ID[TAG_ID[\"SPAN\"] = 99] = \"SPAN\";\n TAG_ID[TAG_ID[\"STRIKE\"] = 100] = \"STRIKE\";\n TAG_ID[TAG_ID[\"STRONG\"] = 101] = \"STRONG\";\n TAG_ID[TAG_ID[\"STYLE\"] = 102] = \"STYLE\";\n TAG_ID[TAG_ID[\"SUB\"] = 103] = \"SUB\";\n TAG_ID[TAG_ID[\"SUMMARY\"] = 104] = \"SUMMARY\";\n TAG_ID[TAG_ID[\"SUP\"] = 105] = \"SUP\";\n TAG_ID[TAG_ID[\"TABLE\"] = 106] = \"TABLE\";\n TAG_ID[TAG_ID[\"TBODY\"] = 107] = \"TBODY\";\n TAG_ID[TAG_ID[\"TEMPLATE\"] = 108] = \"TEMPLATE\";\n TAG_ID[TAG_ID[\"TEXTAREA\"] = 109] = \"TEXTAREA\";\n TAG_ID[TAG_ID[\"TFOOT\"] = 110] = \"TFOOT\";\n TAG_ID[TAG_ID[\"TD\"] = 111] = \"TD\";\n TAG_ID[TAG_ID[\"TH\"] = 112] = \"TH\";\n TAG_ID[TAG_ID[\"THEAD\"] = 113] = \"THEAD\";\n TAG_ID[TAG_ID[\"TITLE\"] = 114] = \"TITLE\";\n TAG_ID[TAG_ID[\"TR\"] = 115] = \"TR\";\n TAG_ID[TAG_ID[\"TRACK\"] = 116] = \"TRACK\";\n TAG_ID[TAG_ID[\"TT\"] = 117] = \"TT\";\n TAG_ID[TAG_ID[\"U\"] = 118] = \"U\";\n TAG_ID[TAG_ID[\"UL\"] = 119] = \"UL\";\n TAG_ID[TAG_ID[\"SVG\"] = 120] = \"SVG\";\n TAG_ID[TAG_ID[\"VAR\"] = 121] = \"VAR\";\n TAG_ID[TAG_ID[\"WBR\"] = 122] = \"WBR\";\n TAG_ID[TAG_ID[\"XMP\"] = 123] = \"XMP\";\n})(TAG_ID || (TAG_ID = {}));\nconst TAG_NAME_TO_ID = new Map([\n [TAG_NAMES.A, TAG_ID.A],\n [TAG_NAMES.ADDRESS, TAG_ID.ADDRESS],\n [TAG_NAMES.ANNOTATION_XML, TAG_ID.ANNOTATION_XML],\n [TAG_NAMES.APPLET, TAG_ID.APPLET],\n [TAG_NAMES.AREA, TAG_ID.AREA],\n [TAG_NAMES.ARTICLE, TAG_ID.ARTICLE],\n [TAG_NAMES.ASIDE, TAG_ID.ASIDE],\n [TAG_NAMES.B, TAG_ID.B],\n [TAG_NAMES.BASE, TAG_ID.BASE],\n [TAG_NAMES.BASEFONT, TAG_ID.BASEFONT],\n [TAG_NAMES.BGSOUND, TAG_ID.BGSOUND],\n [TAG_NAMES.BIG, TAG_ID.BIG],\n [TAG_NAMES.BLOCKQUOTE, TAG_ID.BLOCKQUOTE],\n [TAG_NAMES.BODY, TAG_ID.BODY],\n [TAG_NAMES.BR, TAG_ID.BR],\n [TAG_NAMES.BUTTON, TAG_ID.BUTTON],\n [TAG_NAMES.CAPTION, TAG_ID.CAPTION],\n [TAG_NAMES.CENTER, TAG_ID.CENTER],\n [TAG_NAMES.CODE, TAG_ID.CODE],\n [TAG_NAMES.COL, TAG_ID.COL],\n [TAG_NAMES.COLGROUP, TAG_ID.COLGROUP],\n [TAG_NAMES.DD, TAG_ID.DD],\n [TAG_NAMES.DESC, TAG_ID.DESC],\n [TAG_NAMES.DETAILS, TAG_ID.DETAILS],\n [TAG_NAMES.DIALOG, TAG_ID.DIALOG],\n [TAG_NAMES.DIR, TAG_ID.DIR],\n [TAG_NAMES.DIV, TAG_ID.DIV],\n [TAG_NAMES.DL, TAG_ID.DL],\n [TAG_NAMES.DT, TAG_ID.DT],\n [TAG_NAMES.EM, TAG_ID.EM],\n [TAG_NAMES.EMBED, TAG_ID.EMBED],\n [TAG_NAMES.FIELDSET, TAG_ID.FIELDSET],\n [TAG_NAMES.FIGCAPTION, TAG_ID.FIGCAPTION],\n [TAG_NAMES.FIGURE, TAG_ID.FIGURE],\n [TAG_NAMES.FONT, TAG_ID.FONT],\n [TAG_NAMES.FOOTER, TAG_ID.FOOTER],\n [TAG_NAMES.FOREIGN_OBJECT, TAG_ID.FOREIGN_OBJECT],\n [TAG_NAMES.FORM, TAG_ID.FORM],\n [TAG_NAMES.FRAME, TAG_ID.FRAME],\n [TAG_NAMES.FRAMESET, TAG_ID.FRAMESET],\n [TAG_NAMES.H1, TAG_ID.H1],\n [TAG_NAMES.H2, TAG_ID.H2],\n [TAG_NAMES.H3, TAG_ID.H3],\n [TAG_NAMES.H4, TAG_ID.H4],\n [TAG_NAMES.H5, TAG_ID.H5],\n [TAG_NAMES.H6, TAG_ID.H6],\n [TAG_NAMES.HEAD, TAG_ID.HEAD],\n [TAG_NAMES.HEADER, TAG_ID.HEADER],\n [TAG_NAMES.HGROUP, TAG_ID.HGROUP],\n [TAG_NAMES.HR, TAG_ID.HR],\n [TAG_NAMES.HTML, TAG_ID.HTML],\n [TAG_NAMES.I, TAG_ID.I],\n [TAG_NAMES.IMG, TAG_ID.IMG],\n [TAG_NAMES.IMAGE, TAG_ID.IMAGE],\n [TAG_NAMES.INPUT, TAG_ID.INPUT],\n [TAG_NAMES.IFRAME, TAG_ID.IFRAME],\n [TAG_NAMES.KEYGEN, TAG_ID.KEYGEN],\n [TAG_NAMES.LABEL, TAG_ID.LABEL],\n [TAG_NAMES.LI, TAG_ID.LI],\n [TAG_NAMES.LINK, TAG_ID.LINK],\n [TAG_NAMES.LISTING, TAG_ID.LISTING],\n [TAG_NAMES.MAIN, TAG_ID.MAIN],\n [TAG_NAMES.MALIGNMARK, TAG_ID.MALIGNMARK],\n [TAG_NAMES.MARQUEE, TAG_ID.MARQUEE],\n [TAG_NAMES.MATH, TAG_ID.MATH],\n [TAG_NAMES.MENU, TAG_ID.MENU],\n [TAG_NAMES.META, TAG_ID.META],\n [TAG_NAMES.MGLYPH, TAG_ID.MGLYPH],\n [TAG_NAMES.MI, TAG_ID.MI],\n [TAG_NAMES.MO, TAG_ID.MO],\n [TAG_NAMES.MN, TAG_ID.MN],\n [TAG_NAMES.MS, TAG_ID.MS],\n [TAG_NAMES.MTEXT, TAG_ID.MTEXT],\n [TAG_NAMES.NAV, TAG_ID.NAV],\n [TAG_NAMES.NOBR, TAG_ID.NOBR],\n [TAG_NAMES.NOFRAMES, TAG_ID.NOFRAMES],\n [TAG_NAMES.NOEMBED, TAG_ID.NOEMBED],\n [TAG_NAMES.NOSCRIPT, TAG_ID.NOSCRIPT],\n [TAG_NAMES.OBJECT, TAG_ID.OBJECT],\n [TAG_NAMES.OL, TAG_ID.OL],\n [TAG_NAMES.OPTGROUP, TAG_ID.OPTGROUP],\n [TAG_NAMES.OPTION, TAG_ID.OPTION],\n [TAG_NAMES.P, TAG_ID.P],\n [TAG_NAMES.PARAM, TAG_ID.PARAM],\n [TAG_NAMES.PLAINTEXT, TAG_ID.PLAINTEXT],\n [TAG_NAMES.PRE, TAG_ID.PRE],\n [TAG_NAMES.RB, TAG_ID.RB],\n [TAG_NAMES.RP, TAG_ID.RP],\n [TAG_NAMES.RT, TAG_ID.RT],\n [TAG_NAMES.RTC, TAG_ID.RTC],\n [TAG_NAMES.RUBY, TAG_ID.RUBY],\n [TAG_NAMES.S, TAG_ID.S],\n [TAG_NAMES.SCRIPT, TAG_ID.SCRIPT],\n [TAG_NAMES.SEARCH, TAG_ID.SEARCH],\n [TAG_NAMES.SECTION, TAG_ID.SECTION],\n [TAG_NAMES.SELECT, TAG_ID.SELECT],\n [TAG_NAMES.SOURCE, TAG_ID.SOURCE],\n [TAG_NAMES.SMALL, TAG_ID.SMALL],\n [TAG_NAMES.SPAN, TAG_ID.SPAN],\n [TAG_NAMES.STRIKE, TAG_ID.STRIKE],\n [TAG_NAMES.STRONG, TAG_ID.STRONG],\n [TAG_NAMES.STYLE, TAG_ID.STYLE],\n [TAG_NAMES.SUB, TAG_ID.SUB],\n [TAG_NAMES.SUMMARY, TAG_ID.SUMMARY],\n [TAG_NAMES.SUP, TAG_ID.SUP],\n [TAG_NAMES.TABLE, TAG_ID.TABLE],\n [TAG_NAMES.TBODY, TAG_ID.TBODY],\n [TAG_NAMES.TEMPLATE, TAG_ID.TEMPLATE],\n [TAG_NAMES.TEXTAREA, TAG_ID.TEXTAREA],\n [TAG_NAMES.TFOOT, TAG_ID.TFOOT],\n [TAG_NAMES.TD, TAG_ID.TD],\n [TAG_NAMES.TH, TAG_ID.TH],\n [TAG_NAMES.THEAD, TAG_ID.THEAD],\n [TAG_NAMES.TITLE, TAG_ID.TITLE],\n [TAG_NAMES.TR, TAG_ID.TR],\n [TAG_NAMES.TRACK, TAG_ID.TRACK],\n [TAG_NAMES.TT, TAG_ID.TT],\n [TAG_NAMES.U, TAG_ID.U],\n [TAG_NAMES.UL, TAG_ID.UL],\n [TAG_NAMES.SVG, TAG_ID.SVG],\n [TAG_NAMES.VAR, TAG_ID.VAR],\n [TAG_NAMES.WBR, TAG_ID.WBR],\n [TAG_NAMES.XMP, TAG_ID.XMP],\n]);\nexport function getTagID(tagName) {\n var _a;\n return (_a = TAG_NAME_TO_ID.get(tagName)) !== null && _a !== void 0 ? _a : TAG_ID.UNKNOWN;\n}\nconst $ = TAG_ID;\nexport const SPECIAL_ELEMENTS = {\n [NS.HTML]: new Set([\n $.ADDRESS,\n $.APPLET,\n $.AREA,\n $.ARTICLE,\n $.ASIDE,\n $.BASE,\n $.BASEFONT,\n $.BGSOUND,\n $.BLOCKQUOTE,\n $.BODY,\n $.BR,\n $.BUTTON,\n $.CAPTION,\n $.CENTER,\n $.COL,\n $.COLGROUP,\n $.DD,\n $.DETAILS,\n $.DIR,\n $.DIV,\n $.DL,\n $.DT,\n $.EMBED,\n $.FIELDSET,\n $.FIGCAPTION,\n $.FIGURE,\n $.FOOTER,\n $.FORM,\n $.FRAME,\n $.FRAMESET,\n $.H1,\n $.H2,\n $.H3,\n $.H4,\n $.H5,\n $.H6,\n $.HEAD,\n $.HEADER,\n $.HGROUP,\n $.HR,\n $.HTML,\n $.IFRAME,\n $.IMG,\n $.INPUT,\n $.LI,\n $.LINK,\n $.LISTING,\n $.MAIN,\n $.MARQUEE,\n $.MENU,\n $.META,\n $.NAV,\n $.NOEMBED,\n $.NOFRAMES,\n $.NOSCRIPT,\n $.OBJECT,\n $.OL,\n $.P,\n $.PARAM,\n $.PLAINTEXT,\n $.PRE,\n $.SCRIPT,\n $.SECTION,\n $.SELECT,\n $.SOURCE,\n $.STYLE,\n $.SUMMARY,\n $.TABLE,\n $.TBODY,\n $.TD,\n $.TEMPLATE,\n $.TEXTAREA,\n $.TFOOT,\n $.TH,\n $.THEAD,\n $.TITLE,\n $.TR,\n $.TRACK,\n $.UL,\n $.WBR,\n $.XMP,\n ]),\n [NS.MATHML]: new Set([$.MI, $.MO, $.MN, $.MS, $.MTEXT, $.ANNOTATION_XML]),\n [NS.SVG]: new Set([$.TITLE, $.FOREIGN_OBJECT, $.DESC]),\n [NS.XLINK]: new Set(),\n [NS.XML]: new Set(),\n [NS.XMLNS]: new Set(),\n};\nexport const NUMBERED_HEADERS = new Set([$.H1, $.H2, $.H3, $.H4, $.H5, $.H6]);\nconst UNESCAPED_TEXT = new Set([\n TAG_NAMES.STYLE,\n TAG_NAMES.SCRIPT,\n TAG_NAMES.XMP,\n TAG_NAMES.IFRAME,\n TAG_NAMES.NOEMBED,\n TAG_NAMES.NOFRAMES,\n TAG_NAMES.PLAINTEXT,\n]);\nexport function hasUnescapedText(tn, scriptingEnabled) {\n return UNESCAPED_TEXT.has(tn) || (scriptingEnabled && tn === TAG_NAMES.NOSCRIPT);\n}\n","import { Preprocessor } from './preprocessor.js';\nimport { CODE_POINTS as $, SEQUENCES as $$, REPLACEMENT_CHARACTER, isSurrogate, isUndefinedCodePoint, isControlCodePoint, } from '../common/unicode.js';\nimport { TokenType, getTokenAttr, } from '../common/token.js';\nimport { htmlDecodeTree, EntityDecoder, DecodingMode } from 'entities/decode';\nimport { ERR } from '../common/error-codes.js';\nimport { TAG_ID, getTagID } from '../common/html.js';\n//States\nvar State;\n(function (State) {\n State[State[\"DATA\"] = 0] = \"DATA\";\n State[State[\"RCDATA\"] = 1] = \"RCDATA\";\n State[State[\"RAWTEXT\"] = 2] = \"RAWTEXT\";\n State[State[\"SCRIPT_DATA\"] = 3] = \"SCRIPT_DATA\";\n State[State[\"PLAINTEXT\"] = 4] = \"PLAINTEXT\";\n State[State[\"TAG_OPEN\"] = 5] = \"TAG_OPEN\";\n State[State[\"END_TAG_OPEN\"] = 6] = \"END_TAG_OPEN\";\n State[State[\"TAG_NAME\"] = 7] = \"TAG_NAME\";\n State[State[\"RCDATA_LESS_THAN_SIGN\"] = 8] = \"RCDATA_LESS_THAN_SIGN\";\n State[State[\"RCDATA_END_TAG_OPEN\"] = 9] = \"RCDATA_END_TAG_OPEN\";\n State[State[\"RCDATA_END_TAG_NAME\"] = 10] = \"RCDATA_END_TAG_NAME\";\n State[State[\"RAWTEXT_LESS_THAN_SIGN\"] = 11] = \"RAWTEXT_LESS_THAN_SIGN\";\n State[State[\"RAWTEXT_END_TAG_OPEN\"] = 12] = \"RAWTEXT_END_TAG_OPEN\";\n State[State[\"RAWTEXT_END_TAG_NAME\"] = 13] = \"RAWTEXT_END_TAG_NAME\";\n State[State[\"SCRIPT_DATA_LESS_THAN_SIGN\"] = 14] = \"SCRIPT_DATA_LESS_THAN_SIGN\";\n State[State[\"SCRIPT_DATA_END_TAG_OPEN\"] = 15] = \"SCRIPT_DATA_END_TAG_OPEN\";\n State[State[\"SCRIPT_DATA_END_TAG_NAME\"] = 16] = \"SCRIPT_DATA_END_TAG_NAME\";\n State[State[\"SCRIPT_DATA_ESCAPE_START\"] = 17] = \"SCRIPT_DATA_ESCAPE_START\";\n State[State[\"SCRIPT_DATA_ESCAPE_START_DASH\"] = 18] = \"SCRIPT_DATA_ESCAPE_START_DASH\";\n State[State[\"SCRIPT_DATA_ESCAPED\"] = 19] = \"SCRIPT_DATA_ESCAPED\";\n State[State[\"SCRIPT_DATA_ESCAPED_DASH\"] = 20] = \"SCRIPT_DATA_ESCAPED_DASH\";\n State[State[\"SCRIPT_DATA_ESCAPED_DASH_DASH\"] = 21] = \"SCRIPT_DATA_ESCAPED_DASH_DASH\";\n State[State[\"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN\"] = 22] = \"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN\";\n State[State[\"SCRIPT_DATA_ESCAPED_END_TAG_OPEN\"] = 23] = \"SCRIPT_DATA_ESCAPED_END_TAG_OPEN\";\n State[State[\"SCRIPT_DATA_ESCAPED_END_TAG_NAME\"] = 24] = \"SCRIPT_DATA_ESCAPED_END_TAG_NAME\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPE_START\"] = 25] = \"SCRIPT_DATA_DOUBLE_ESCAPE_START\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED\"] = 26] = \"SCRIPT_DATA_DOUBLE_ESCAPED\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_DASH\"] = 27] = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH\"] = 28] = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN\"] = 29] = \"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPE_END\"] = 30] = \"SCRIPT_DATA_DOUBLE_ESCAPE_END\";\n State[State[\"BEFORE_ATTRIBUTE_NAME\"] = 31] = \"BEFORE_ATTRIBUTE_NAME\";\n State[State[\"ATTRIBUTE_NAME\"] = 32] = \"ATTRIBUTE_NAME\";\n State[State[\"AFTER_ATTRIBUTE_NAME\"] = 33] = \"AFTER_ATTRIBUTE_NAME\";\n State[State[\"BEFORE_ATTRIBUTE_VALUE\"] = 34] = \"BEFORE_ATTRIBUTE_VALUE\";\n State[State[\"ATTRIBUTE_VALUE_DOUBLE_QUOTED\"] = 35] = \"ATTRIBUTE_VALUE_DOUBLE_QUOTED\";\n State[State[\"ATTRIBUTE_VALUE_SINGLE_QUOTED\"] = 36] = \"ATTRIBUTE_VALUE_SINGLE_QUOTED\";\n State[State[\"ATTRIBUTE_VALUE_UNQUOTED\"] = 37] = \"ATTRIBUTE_VALUE_UNQUOTED\";\n State[State[\"AFTER_ATTRIBUTE_VALUE_QUOTED\"] = 38] = \"AFTER_ATTRIBUTE_VALUE_QUOTED\";\n State[State[\"SELF_CLOSING_START_TAG\"] = 39] = \"SELF_CLOSING_START_TAG\";\n State[State[\"BOGUS_COMMENT\"] = 40] = \"BOGUS_COMMENT\";\n State[State[\"MARKUP_DECLARATION_OPEN\"] = 41] = \"MARKUP_DECLARATION_OPEN\";\n State[State[\"COMMENT_START\"] = 42] = \"COMMENT_START\";\n State[State[\"COMMENT_START_DASH\"] = 43] = \"COMMENT_START_DASH\";\n State[State[\"COMMENT\"] = 44] = \"COMMENT\";\n State[State[\"COMMENT_LESS_THAN_SIGN\"] = 45] = \"COMMENT_LESS_THAN_SIGN\";\n State[State[\"COMMENT_LESS_THAN_SIGN_BANG\"] = 46] = \"COMMENT_LESS_THAN_SIGN_BANG\";\n State[State[\"COMMENT_LESS_THAN_SIGN_BANG_DASH\"] = 47] = \"COMMENT_LESS_THAN_SIGN_BANG_DASH\";\n State[State[\"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\"] = 48] = \"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\";\n State[State[\"COMMENT_END_DASH\"] = 49] = \"COMMENT_END_DASH\";\n State[State[\"COMMENT_END\"] = 50] = \"COMMENT_END\";\n State[State[\"COMMENT_END_BANG\"] = 51] = \"COMMENT_END_BANG\";\n State[State[\"DOCTYPE\"] = 52] = \"DOCTYPE\";\n State[State[\"BEFORE_DOCTYPE_NAME\"] = 53] = \"BEFORE_DOCTYPE_NAME\";\n State[State[\"DOCTYPE_NAME\"] = 54] = \"DOCTYPE_NAME\";\n State[State[\"AFTER_DOCTYPE_NAME\"] = 55] = \"AFTER_DOCTYPE_NAME\";\n State[State[\"AFTER_DOCTYPE_PUBLIC_KEYWORD\"] = 56] = \"AFTER_DOCTYPE_PUBLIC_KEYWORD\";\n State[State[\"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER\"] = 57] = \"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER\";\n State[State[\"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED\"] = 58] = \"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED\";\n State[State[\"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED\"] = 59] = \"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED\";\n State[State[\"AFTER_DOCTYPE_PUBLIC_IDENTIFIER\"] = 60] = \"AFTER_DOCTYPE_PUBLIC_IDENTIFIER\";\n State[State[\"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS\"] = 61] = \"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS\";\n State[State[\"AFTER_DOCTYPE_SYSTEM_KEYWORD\"] = 62] = \"AFTER_DOCTYPE_SYSTEM_KEYWORD\";\n State[State[\"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER\"] = 63] = \"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER\";\n State[State[\"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED\"] = 64] = \"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED\";\n State[State[\"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED\"] = 65] = \"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED\";\n State[State[\"AFTER_DOCTYPE_SYSTEM_IDENTIFIER\"] = 66] = \"AFTER_DOCTYPE_SYSTEM_IDENTIFIER\";\n State[State[\"BOGUS_DOCTYPE\"] = 67] = \"BOGUS_DOCTYPE\";\n State[State[\"CDATA_SECTION\"] = 68] = \"CDATA_SECTION\";\n State[State[\"CDATA_SECTION_BRACKET\"] = 69] = \"CDATA_SECTION_BRACKET\";\n State[State[\"CDATA_SECTION_END\"] = 70] = \"CDATA_SECTION_END\";\n State[State[\"CHARACTER_REFERENCE\"] = 71] = \"CHARACTER_REFERENCE\";\n State[State[\"AMBIGUOUS_AMPERSAND\"] = 72] = \"AMBIGUOUS_AMPERSAND\";\n})(State || (State = {}));\n//Tokenizer initial states for different modes\nexport const TokenizerMode = {\n DATA: State.DATA,\n RCDATA: State.RCDATA,\n RAWTEXT: State.RAWTEXT,\n SCRIPT_DATA: State.SCRIPT_DATA,\n PLAINTEXT: State.PLAINTEXT,\n CDATA_SECTION: State.CDATA_SECTION,\n};\n//Utils\n//OPTIMIZATION: these utility functions should not be moved out of this module. V8 Crankshaft will not inline\n//this functions if they will be situated in another module due to context switch.\n//Always perform inlining check before modifying this functions ('node --trace-inlining').\nfunction isAsciiDigit(cp) {\n return cp >= $.DIGIT_0 && cp <= $.DIGIT_9;\n}\nfunction isAsciiUpper(cp) {\n return cp >= $.LATIN_CAPITAL_A && cp <= $.LATIN_CAPITAL_Z;\n}\nfunction isAsciiLower(cp) {\n return cp >= $.LATIN_SMALL_A && cp <= $.LATIN_SMALL_Z;\n}\nfunction isAsciiLetter(cp) {\n return isAsciiLower(cp) || isAsciiUpper(cp);\n}\nfunction isAsciiAlphaNumeric(cp) {\n return isAsciiLetter(cp) || isAsciiDigit(cp);\n}\nfunction toAsciiLower(cp) {\n return cp + 32;\n}\nfunction isWhitespace(cp) {\n return cp === $.SPACE || cp === $.LINE_FEED || cp === $.TABULATION || cp === $.FORM_FEED;\n}\nfunction isScriptDataDoubleEscapeSequenceEnd(cp) {\n return isWhitespace(cp) || cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN;\n}\nfunction getErrorForNumericCharacterReference(code) {\n if (code === $.NULL) {\n return ERR.nullCharacterReference;\n }\n else if (code > 1114111) {\n return ERR.characterReferenceOutsideUnicodeRange;\n }\n else if (isSurrogate(code)) {\n return ERR.surrogateCharacterReference;\n }\n else if (isUndefinedCodePoint(code)) {\n return ERR.noncharacterCharacterReference;\n }\n else if (isControlCodePoint(code) || code === $.CARRIAGE_RETURN) {\n return ERR.controlCharacterReference;\n }\n return null;\n}\n//Tokenizer\nexport class Tokenizer {\n constructor(options, handler) {\n this.options = options;\n this.handler = handler;\n this.paused = false;\n /** Ensures that the parsing loop isn't run multiple times at once. */\n this.inLoop = false;\n /**\n * Indicates that the current adjusted node exists, is not an element in the HTML namespace,\n * and that it is not an integration point for either MathML or HTML.\n *\n * @see {@link https://html.spec.whatwg.org/multipage/parsing.html#tree-construction}\n */\n this.inForeignNode = false;\n this.lastStartTagName = '';\n this.active = false;\n this.state = State.DATA;\n this.returnState = State.DATA;\n this.entityStartPos = 0;\n this.consumedAfterSnapshot = -1;\n this.currentCharacterToken = null;\n this.currentToken = null;\n this.currentAttr = { name: '', value: '' };\n this.preprocessor = new Preprocessor(handler);\n this.currentLocation = this.getCurrentLocation(-1);\n this.entityDecoder = new EntityDecoder(htmlDecodeTree, (cp, consumed) => {\n // Note: Set `pos` _before_ flushing, as flushing might drop\n // the current chunk and invalidate `entityStartPos`.\n this.preprocessor.pos = this.entityStartPos + consumed - 1;\n this._flushCodePointConsumedAsCharacterReference(cp);\n }, handler.onParseError\n ? {\n missingSemicolonAfterCharacterReference: () => {\n this._err(ERR.missingSemicolonAfterCharacterReference, 1);\n },\n absenceOfDigitsInNumericCharacterReference: (consumed) => {\n this._err(ERR.absenceOfDigitsInNumericCharacterReference, this.entityStartPos - this.preprocessor.pos + consumed);\n },\n validateNumericCharacterReference: (code) => {\n const error = getErrorForNumericCharacterReference(code);\n if (error)\n this._err(error, 1);\n },\n }\n : undefined);\n }\n //Errors\n _err(code, cpOffset = 0) {\n var _a, _b;\n (_b = (_a = this.handler).onParseError) === null || _b === void 0 ? void 0 : _b.call(_a, this.preprocessor.getError(code, cpOffset));\n }\n // NOTE: `offset` may never run across line boundaries.\n getCurrentLocation(offset) {\n if (!this.options.sourceCodeLocationInfo) {\n return null;\n }\n return {\n startLine: this.preprocessor.line,\n startCol: this.preprocessor.col - offset,\n startOffset: this.preprocessor.offset - offset,\n endLine: -1,\n endCol: -1,\n endOffset: -1,\n };\n }\n _runParsingLoop() {\n if (this.inLoop)\n return;\n this.inLoop = true;\n while (this.active && !this.paused) {\n this.consumedAfterSnapshot = 0;\n const cp = this._consume();\n if (!this._ensureHibernation()) {\n this._callState(cp);\n }\n }\n this.inLoop = false;\n }\n //API\n pause() {\n this.paused = true;\n }\n resume(writeCallback) {\n if (!this.paused) {\n throw new Error('Parser was already resumed');\n }\n this.paused = false;\n // Necessary for synchronous resume.\n if (this.inLoop)\n return;\n this._runParsingLoop();\n if (!this.paused) {\n writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();\n }\n }\n write(chunk, isLastChunk, writeCallback) {\n this.active = true;\n this.preprocessor.write(chunk, isLastChunk);\n this._runParsingLoop();\n if (!this.paused) {\n writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();\n }\n }\n insertHtmlAtCurrentPos(chunk) {\n this.active = true;\n this.preprocessor.insertHtmlAtCurrentPos(chunk);\n this._runParsingLoop();\n }\n //Hibernation\n _ensureHibernation() {\n if (this.preprocessor.endOfChunkHit) {\n this.preprocessor.retreat(this.consumedAfterSnapshot);\n this.consumedAfterSnapshot = 0;\n this.active = false;\n return true;\n }\n return false;\n }\n //Consumption\n _consume() {\n this.consumedAfterSnapshot++;\n return this.preprocessor.advance();\n }\n _advanceBy(count) {\n this.consumedAfterSnapshot += count;\n for (let i = 0; i < count; i++) {\n this.preprocessor.advance();\n }\n }\n _consumeSequenceIfMatch(pattern, caseSensitive) {\n if (this.preprocessor.startsWith(pattern, caseSensitive)) {\n // We will already have consumed one character before calling this method.\n this._advanceBy(pattern.length - 1);\n return true;\n }\n return false;\n }\n //Token creation\n _createStartTagToken() {\n this.currentToken = {\n type: TokenType.START_TAG,\n tagName: '',\n tagID: TAG_ID.UNKNOWN,\n selfClosing: false,\n ackSelfClosing: false,\n attrs: [],\n location: this.getCurrentLocation(1),\n };\n }\n _createEndTagToken() {\n this.currentToken = {\n type: TokenType.END_TAG,\n tagName: '',\n tagID: TAG_ID.UNKNOWN,\n selfClosing: false,\n ackSelfClosing: false,\n attrs: [],\n location: this.getCurrentLocation(2),\n };\n }\n _createCommentToken(offset) {\n this.currentToken = {\n type: TokenType.COMMENT,\n data: '',\n location: this.getCurrentLocation(offset),\n };\n }\n _createDoctypeToken(initialName) {\n this.currentToken = {\n type: TokenType.DOCTYPE,\n name: initialName,\n forceQuirks: false,\n publicId: null,\n systemId: null,\n location: this.currentLocation,\n };\n }\n _createCharacterToken(type, chars) {\n this.currentCharacterToken = {\n type,\n chars,\n location: this.currentLocation,\n };\n }\n //Tag attributes\n _createAttr(attrNameFirstCh) {\n this.currentAttr = {\n name: attrNameFirstCh,\n value: '',\n };\n this.currentLocation = this.getCurrentLocation(0);\n }\n _leaveAttrName() {\n var _a;\n var _b;\n const token = this.currentToken;\n if (getTokenAttr(token, this.currentAttr.name) === null) {\n token.attrs.push(this.currentAttr);\n if (token.location && this.currentLocation) {\n const attrLocations = ((_a = (_b = token.location).attrs) !== null && _a !== void 0 ? _a : (_b.attrs = Object.create(null)));\n attrLocations[this.currentAttr.name] = this.currentLocation;\n // Set end location\n this._leaveAttrValue();\n }\n }\n else {\n this._err(ERR.duplicateAttribute);\n }\n }\n _leaveAttrValue() {\n if (this.currentLocation) {\n this.currentLocation.endLine = this.preprocessor.line;\n this.currentLocation.endCol = this.preprocessor.col;\n this.currentLocation.endOffset = this.preprocessor.offset;\n }\n }\n //Token emission\n prepareToken(ct) {\n this._emitCurrentCharacterToken(ct.location);\n this.currentToken = null;\n if (ct.location) {\n ct.location.endLine = this.preprocessor.line;\n ct.location.endCol = this.preprocessor.col + 1;\n ct.location.endOffset = this.preprocessor.offset + 1;\n }\n this.currentLocation = this.getCurrentLocation(-1);\n }\n emitCurrentTagToken() {\n const ct = this.currentToken;\n this.prepareToken(ct);\n ct.tagID = getTagID(ct.tagName);\n if (ct.type === TokenType.START_TAG) {\n this.lastStartTagName = ct.tagName;\n this.handler.onStartTag(ct);\n }\n else {\n if (ct.attrs.length > 0) {\n this._err(ERR.endTagWithAttributes);\n }\n if (ct.selfClosing) {\n this._err(ERR.endTagWithTrailingSolidus);\n }\n this.handler.onEndTag(ct);\n }\n this.preprocessor.dropParsedChunk();\n }\n emitCurrentComment(ct) {\n this.prepareToken(ct);\n this.handler.onComment(ct);\n this.preprocessor.dropParsedChunk();\n }\n emitCurrentDoctype(ct) {\n this.prepareToken(ct);\n this.handler.onDoctype(ct);\n this.preprocessor.dropParsedChunk();\n }\n _emitCurrentCharacterToken(nextLocation) {\n if (this.currentCharacterToken) {\n //NOTE: if we have a pending character token, make it's end location equal to the\n //current token's start location.\n if (nextLocation && this.currentCharacterToken.location) {\n this.currentCharacterToken.location.endLine = nextLocation.startLine;\n this.currentCharacterToken.location.endCol = nextLocation.startCol;\n this.currentCharacterToken.location.endOffset = nextLocation.startOffset;\n }\n switch (this.currentCharacterToken.type) {\n case TokenType.CHARACTER: {\n this.handler.onCharacter(this.currentCharacterToken);\n break;\n }\n case TokenType.NULL_CHARACTER: {\n this.handler.onNullCharacter(this.currentCharacterToken);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n this.handler.onWhitespaceCharacter(this.currentCharacterToken);\n break;\n }\n }\n this.currentCharacterToken = null;\n }\n }\n _emitEOFToken() {\n const location = this.getCurrentLocation(0);\n if (location) {\n location.endLine = location.startLine;\n location.endCol = location.startCol;\n location.endOffset = location.startOffset;\n }\n this._emitCurrentCharacterToken(location);\n this.handler.onEof({ type: TokenType.EOF, location });\n this.active = false;\n }\n //Characters emission\n //OPTIMIZATION: The specification uses only one type of character token (one token per character).\n //This causes a huge memory overhead and a lot of unnecessary parser loops. parse5 uses 3 groups of characters.\n //If we have a sequence of characters that belong to the same group, the parser can process it\n //as a single solid character token.\n //So, there are 3 types of character tokens in parse5:\n //1)TokenType.NULL_CHARACTER - \\u0000-character sequences (e.g. '\\u0000\\u0000\\u0000')\n //2)TokenType.WHITESPACE_CHARACTER - any whitespace/new-line character sequences (e.g. '\\n \\r\\t \\f')\n //3)TokenType.CHARACTER - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^')\n _appendCharToCurrentCharacterToken(type, ch) {\n if (this.currentCharacterToken) {\n if (this.currentCharacterToken.type === type) {\n this.currentCharacterToken.chars += ch;\n return;\n }\n else {\n this.currentLocation = this.getCurrentLocation(0);\n this._emitCurrentCharacterToken(this.currentLocation);\n this.preprocessor.dropParsedChunk();\n }\n }\n this._createCharacterToken(type, ch);\n }\n _emitCodePoint(cp) {\n const type = isWhitespace(cp)\n ? TokenType.WHITESPACE_CHARACTER\n : cp === $.NULL\n ? TokenType.NULL_CHARACTER\n : TokenType.CHARACTER;\n this._appendCharToCurrentCharacterToken(type, String.fromCodePoint(cp));\n }\n //NOTE: used when we emit characters explicitly.\n //This is always for non-whitespace and non-null characters, which allows us to avoid additional checks.\n _emitChars(ch) {\n this._appendCharToCurrentCharacterToken(TokenType.CHARACTER, ch);\n }\n // Character reference helpers\n _startCharacterReference() {\n this.returnState = this.state;\n this.state = State.CHARACTER_REFERENCE;\n this.entityStartPos = this.preprocessor.pos;\n this.entityDecoder.startEntity(this._isCharacterReferenceInAttribute() ? DecodingMode.Attribute : DecodingMode.Legacy);\n }\n _isCharacterReferenceInAttribute() {\n return (this.returnState === State.ATTRIBUTE_VALUE_DOUBLE_QUOTED ||\n this.returnState === State.ATTRIBUTE_VALUE_SINGLE_QUOTED ||\n this.returnState === State.ATTRIBUTE_VALUE_UNQUOTED);\n }\n _flushCodePointConsumedAsCharacterReference(cp) {\n if (this._isCharacterReferenceInAttribute()) {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n else {\n this._emitCodePoint(cp);\n }\n }\n // Calling states this way turns out to be much faster than any other approach.\n _callState(cp) {\n switch (this.state) {\n case State.DATA: {\n this._stateData(cp);\n break;\n }\n case State.RCDATA: {\n this._stateRcdata(cp);\n break;\n }\n case State.RAWTEXT: {\n this._stateRawtext(cp);\n break;\n }\n case State.SCRIPT_DATA: {\n this._stateScriptData(cp);\n break;\n }\n case State.PLAINTEXT: {\n this._statePlaintext(cp);\n break;\n }\n case State.TAG_OPEN: {\n this._stateTagOpen(cp);\n break;\n }\n case State.END_TAG_OPEN: {\n this._stateEndTagOpen(cp);\n break;\n }\n case State.TAG_NAME: {\n this._stateTagName(cp);\n break;\n }\n case State.RCDATA_LESS_THAN_SIGN: {\n this._stateRcdataLessThanSign(cp);\n break;\n }\n case State.RCDATA_END_TAG_OPEN: {\n this._stateRcdataEndTagOpen(cp);\n break;\n }\n case State.RCDATA_END_TAG_NAME: {\n this._stateRcdataEndTagName(cp);\n break;\n }\n case State.RAWTEXT_LESS_THAN_SIGN: {\n this._stateRawtextLessThanSign(cp);\n break;\n }\n case State.RAWTEXT_END_TAG_OPEN: {\n this._stateRawtextEndTagOpen(cp);\n break;\n }\n case State.RAWTEXT_END_TAG_NAME: {\n this._stateRawtextEndTagName(cp);\n break;\n }\n case State.SCRIPT_DATA_LESS_THAN_SIGN: {\n this._stateScriptDataLessThanSign(cp);\n break;\n }\n case State.SCRIPT_DATA_END_TAG_OPEN: {\n this._stateScriptDataEndTagOpen(cp);\n break;\n }\n case State.SCRIPT_DATA_END_TAG_NAME: {\n this._stateScriptDataEndTagName(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPE_START: {\n this._stateScriptDataEscapeStart(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPE_START_DASH: {\n this._stateScriptDataEscapeStartDash(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED: {\n this._stateScriptDataEscaped(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_DASH: {\n this._stateScriptDataEscapedDash(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_DASH_DASH: {\n this._stateScriptDataEscapedDashDash(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN: {\n this._stateScriptDataEscapedLessThanSign(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN: {\n this._stateScriptDataEscapedEndTagOpen(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_END_TAG_NAME: {\n this._stateScriptDataEscapedEndTagName(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPE_START: {\n this._stateScriptDataDoubleEscapeStart(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED: {\n this._stateScriptDataDoubleEscaped(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH: {\n this._stateScriptDataDoubleEscapedDash(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH: {\n this._stateScriptDataDoubleEscapedDashDash(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN: {\n this._stateScriptDataDoubleEscapedLessThanSign(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPE_END: {\n this._stateScriptDataDoubleEscapeEnd(cp);\n break;\n }\n case State.BEFORE_ATTRIBUTE_NAME: {\n this._stateBeforeAttributeName(cp);\n break;\n }\n case State.ATTRIBUTE_NAME: {\n this._stateAttributeName(cp);\n break;\n }\n case State.AFTER_ATTRIBUTE_NAME: {\n this._stateAfterAttributeName(cp);\n break;\n }\n case State.BEFORE_ATTRIBUTE_VALUE: {\n this._stateBeforeAttributeValue(cp);\n break;\n }\n case State.ATTRIBUTE_VALUE_DOUBLE_QUOTED: {\n this._stateAttributeValueDoubleQuoted(cp);\n break;\n }\n case State.ATTRIBUTE_VALUE_SINGLE_QUOTED: {\n this._stateAttributeValueSingleQuoted(cp);\n break;\n }\n case State.ATTRIBUTE_VALUE_UNQUOTED: {\n this._stateAttributeValueUnquoted(cp);\n break;\n }\n case State.AFTER_ATTRIBUTE_VALUE_QUOTED: {\n this._stateAfterAttributeValueQuoted(cp);\n break;\n }\n case State.SELF_CLOSING_START_TAG: {\n this._stateSelfClosingStartTag(cp);\n break;\n }\n case State.BOGUS_COMMENT: {\n this._stateBogusComment(cp);\n break;\n }\n case State.MARKUP_DECLARATION_OPEN: {\n this._stateMarkupDeclarationOpen(cp);\n break;\n }\n case State.COMMENT_START: {\n this._stateCommentStart(cp);\n break;\n }\n case State.COMMENT_START_DASH: {\n this._stateCommentStartDash(cp);\n break;\n }\n case State.COMMENT: {\n this._stateComment(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN: {\n this._stateCommentLessThanSign(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN_BANG: {\n this._stateCommentLessThanSignBang(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN_BANG_DASH: {\n this._stateCommentLessThanSignBangDash(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH: {\n this._stateCommentLessThanSignBangDashDash(cp);\n break;\n }\n case State.COMMENT_END_DASH: {\n this._stateCommentEndDash(cp);\n break;\n }\n case State.COMMENT_END: {\n this._stateCommentEnd(cp);\n break;\n }\n case State.COMMENT_END_BANG: {\n this._stateCommentEndBang(cp);\n break;\n }\n case State.DOCTYPE: {\n this._stateDoctype(cp);\n break;\n }\n case State.BEFORE_DOCTYPE_NAME: {\n this._stateBeforeDoctypeName(cp);\n break;\n }\n case State.DOCTYPE_NAME: {\n this._stateDoctypeName(cp);\n break;\n }\n case State.AFTER_DOCTYPE_NAME: {\n this._stateAfterDoctypeName(cp);\n break;\n }\n case State.AFTER_DOCTYPE_PUBLIC_KEYWORD: {\n this._stateAfterDoctypePublicKeyword(cp);\n break;\n }\n case State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER: {\n this._stateBeforeDoctypePublicIdentifier(cp);\n break;\n }\n case State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED: {\n this._stateDoctypePublicIdentifierDoubleQuoted(cp);\n break;\n }\n case State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED: {\n this._stateDoctypePublicIdentifierSingleQuoted(cp);\n break;\n }\n case State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER: {\n this._stateAfterDoctypePublicIdentifier(cp);\n break;\n }\n case State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS: {\n this._stateBetweenDoctypePublicAndSystemIdentifiers(cp);\n break;\n }\n case State.AFTER_DOCTYPE_SYSTEM_KEYWORD: {\n this._stateAfterDoctypeSystemKeyword(cp);\n break;\n }\n case State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER: {\n this._stateBeforeDoctypeSystemIdentifier(cp);\n break;\n }\n case State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED: {\n this._stateDoctypeSystemIdentifierDoubleQuoted(cp);\n break;\n }\n case State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED: {\n this._stateDoctypeSystemIdentifierSingleQuoted(cp);\n break;\n }\n case State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER: {\n this._stateAfterDoctypeSystemIdentifier(cp);\n break;\n }\n case State.BOGUS_DOCTYPE: {\n this._stateBogusDoctype(cp);\n break;\n }\n case State.CDATA_SECTION: {\n this._stateCdataSection(cp);\n break;\n }\n case State.CDATA_SECTION_BRACKET: {\n this._stateCdataSectionBracket(cp);\n break;\n }\n case State.CDATA_SECTION_END: {\n this._stateCdataSectionEnd(cp);\n break;\n }\n case State.CHARACTER_REFERENCE: {\n this._stateCharacterReference();\n break;\n }\n case State.AMBIGUOUS_AMPERSAND: {\n this._stateAmbiguousAmpersand(cp);\n break;\n }\n default: {\n throw new Error('Unknown state');\n }\n }\n }\n // State machine\n // Data state\n //------------------------------------------------------------------\n _stateData(cp) {\n switch (cp) {\n case $.LESS_THAN_SIGN: {\n this.state = State.TAG_OPEN;\n break;\n }\n case $.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitCodePoint(cp);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // RCDATA state\n //------------------------------------------------------------------\n _stateRcdata(cp) {\n switch (cp) {\n case $.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.RCDATA_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // RAWTEXT state\n //------------------------------------------------------------------\n _stateRawtext(cp) {\n switch (cp) {\n case $.LESS_THAN_SIGN: {\n this.state = State.RAWTEXT_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data state\n //------------------------------------------------------------------\n _stateScriptData(cp) {\n switch (cp) {\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // PLAINTEXT state\n //------------------------------------------------------------------\n _statePlaintext(cp) {\n switch (cp) {\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Tag open state\n //------------------------------------------------------------------\n _stateTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this._createStartTagToken();\n this.state = State.TAG_NAME;\n this._stateTagName(cp);\n }\n else\n switch (cp) {\n case $.EXCLAMATION_MARK: {\n this.state = State.MARKUP_DECLARATION_OPEN;\n break;\n }\n case $.SOLIDUS: {\n this.state = State.END_TAG_OPEN;\n break;\n }\n case $.QUESTION_MARK: {\n this._err(ERR.unexpectedQuestionMarkInsteadOfTagName);\n this._createCommentToken(1);\n this.state = State.BOGUS_COMMENT;\n this._stateBogusComment(cp);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofBeforeTagName);\n this._emitChars('<');\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.invalidFirstCharacterOfTagName);\n this._emitChars('<');\n this.state = State.DATA;\n this._stateData(cp);\n }\n }\n }\n // End tag open state\n //------------------------------------------------------------------\n _stateEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this.state = State.TAG_NAME;\n this._stateTagName(cp);\n }\n else\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingEndTagName);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofBeforeTagName);\n this._emitChars('</');\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.invalidFirstCharacterOfTagName);\n this._createCommentToken(2);\n this.state = State.BOGUS_COMMENT;\n this._stateBogusComment(cp);\n }\n }\n }\n // Tag name state\n //------------------------------------------------------------------\n _stateTagName(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n break;\n }\n case $.SOLIDUS: {\n this.state = State.SELF_CLOSING_START_TAG;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.tagName += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n token.tagName += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n }\n }\n }\n // RCDATA less-than sign state\n //------------------------------------------------------------------\n _stateRcdataLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.RCDATA_END_TAG_OPEN;\n }\n else {\n this._emitChars('<');\n this.state = State.RCDATA;\n this._stateRcdata(cp);\n }\n }\n // RCDATA end tag open state\n //------------------------------------------------------------------\n _stateRcdataEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.RCDATA_END_TAG_NAME;\n this._stateRcdataEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.RCDATA;\n this._stateRcdata(cp);\n }\n }\n handleSpecialEndTag(_cp) {\n if (!this.preprocessor.startsWith(this.lastStartTagName, false)) {\n return !this._ensureHibernation();\n }\n this._createEndTagToken();\n const token = this.currentToken;\n token.tagName = this.lastStartTagName;\n const cp = this.preprocessor.peek(this.lastStartTagName.length);\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this._advanceBy(this.lastStartTagName.length);\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n return false;\n }\n case $.SOLIDUS: {\n this._advanceBy(this.lastStartTagName.length);\n this.state = State.SELF_CLOSING_START_TAG;\n return false;\n }\n case $.GREATER_THAN_SIGN: {\n this._advanceBy(this.lastStartTagName.length);\n this.emitCurrentTagToken();\n this.state = State.DATA;\n return false;\n }\n default: {\n return !this._ensureHibernation();\n }\n }\n }\n // RCDATA end tag name state\n //------------------------------------------------------------------\n _stateRcdataEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.RCDATA;\n this._stateRcdata(cp);\n }\n }\n // RAWTEXT less-than sign state\n //------------------------------------------------------------------\n _stateRawtextLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.RAWTEXT_END_TAG_OPEN;\n }\n else {\n this._emitChars('<');\n this.state = State.RAWTEXT;\n this._stateRawtext(cp);\n }\n }\n // RAWTEXT end tag open state\n //------------------------------------------------------------------\n _stateRawtextEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.RAWTEXT_END_TAG_NAME;\n this._stateRawtextEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.RAWTEXT;\n this._stateRawtext(cp);\n }\n }\n // RAWTEXT end tag name state\n //------------------------------------------------------------------\n _stateRawtextEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.RAWTEXT;\n this._stateRawtext(cp);\n }\n }\n // Script data less-than sign state\n //------------------------------------------------------------------\n _stateScriptDataLessThanSign(cp) {\n switch (cp) {\n case $.SOLIDUS: {\n this.state = State.SCRIPT_DATA_END_TAG_OPEN;\n break;\n }\n case $.EXCLAMATION_MARK: {\n this.state = State.SCRIPT_DATA_ESCAPE_START;\n this._emitChars('<!');\n break;\n }\n default: {\n this._emitChars('<');\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n }\n // Script data end tag open state\n //------------------------------------------------------------------\n _stateScriptDataEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.SCRIPT_DATA_END_TAG_NAME;\n this._stateScriptDataEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data end tag name state\n //------------------------------------------------------------------\n _stateScriptDataEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data escape start state\n //------------------------------------------------------------------\n _stateScriptDataEscapeStart(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.SCRIPT_DATA_ESCAPE_START_DASH;\n this._emitChars('-');\n }\n else {\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data escape start dash state\n //------------------------------------------------------------------\n _stateScriptDataEscapeStartDash(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH;\n this._emitChars('-');\n }\n else {\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data escaped state\n //------------------------------------------------------------------\n _stateScriptDataEscaped(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_ESCAPED_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data escaped dash state\n //------------------------------------------------------------------\n _stateScriptDataEscapedDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data escaped dash dash state\n //------------------------------------------------------------------\n _stateScriptDataEscapedDashDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.SCRIPT_DATA;\n this._emitChars('>');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data escaped less-than sign state\n //------------------------------------------------------------------\n _stateScriptDataEscapedLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN;\n }\n else if (isAsciiLetter(cp)) {\n this._emitChars('<');\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_START;\n this._stateScriptDataDoubleEscapeStart(cp);\n }\n else {\n this._emitChars('<');\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data escaped end tag open state\n //------------------------------------------------------------------\n _stateScriptDataEscapedEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_NAME;\n this._stateScriptDataEscapedEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data escaped end tag name state\n //------------------------------------------------------------------\n _stateScriptDataEscapedEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data double escape start state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapeStart(cp) {\n if (this.preprocessor.startsWith($$.SCRIPT, false) &&\n isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek($$.SCRIPT.length))) {\n this._emitCodePoint(cp);\n for (let i = 0; i < $$.SCRIPT.length; i++) {\n this._emitCodePoint(this._consume());\n }\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n }\n else if (!this._ensureHibernation()) {\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data double escaped state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscaped(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n this._emitChars('<');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data double escaped dash state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapedDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n this._emitChars('<');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data double escaped dash dash state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapedDashDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n this._emitChars('<');\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.SCRIPT_DATA;\n this._emitChars('>');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data double escaped less-than sign state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapedLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_END;\n this._emitChars('/');\n }\n else {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._stateScriptDataDoubleEscaped(cp);\n }\n }\n // Script data double escape end state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapeEnd(cp) {\n if (this.preprocessor.startsWith($$.SCRIPT, false) &&\n isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek($$.SCRIPT.length))) {\n this._emitCodePoint(cp);\n for (let i = 0; i < $$.SCRIPT.length; i++) {\n this._emitCodePoint(this._consume());\n }\n this.state = State.SCRIPT_DATA_ESCAPED;\n }\n else if (!this._ensureHibernation()) {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._stateScriptDataDoubleEscaped(cp);\n }\n }\n // Before attribute name state\n //------------------------------------------------------------------\n _stateBeforeAttributeName(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.SOLIDUS:\n case $.GREATER_THAN_SIGN:\n case $.EOF: {\n this.state = State.AFTER_ATTRIBUTE_NAME;\n this._stateAfterAttributeName(cp);\n break;\n }\n case $.EQUALS_SIGN: {\n this._err(ERR.unexpectedEqualsSignBeforeAttributeName);\n this._createAttr('=');\n this.state = State.ATTRIBUTE_NAME;\n break;\n }\n default: {\n this._createAttr('');\n this.state = State.ATTRIBUTE_NAME;\n this._stateAttributeName(cp);\n }\n }\n }\n // Attribute name state\n //------------------------------------------------------------------\n _stateAttributeName(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED:\n case $.SOLIDUS:\n case $.GREATER_THAN_SIGN:\n case $.EOF: {\n this._leaveAttrName();\n this.state = State.AFTER_ATTRIBUTE_NAME;\n this._stateAfterAttributeName(cp);\n break;\n }\n case $.EQUALS_SIGN: {\n this._leaveAttrName();\n this.state = State.BEFORE_ATTRIBUTE_VALUE;\n break;\n }\n case $.QUOTATION_MARK:\n case $.APOSTROPHE:\n case $.LESS_THAN_SIGN: {\n this._err(ERR.unexpectedCharacterInAttributeName);\n this.currentAttr.name += String.fromCodePoint(cp);\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.name += REPLACEMENT_CHARACTER;\n break;\n }\n default: {\n this.currentAttr.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n }\n }\n }\n // After attribute name state\n //------------------------------------------------------------------\n _stateAfterAttributeName(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.SOLIDUS: {\n this.state = State.SELF_CLOSING_START_TAG;\n break;\n }\n case $.EQUALS_SIGN: {\n this.state = State.BEFORE_ATTRIBUTE_VALUE;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this._createAttr('');\n this.state = State.ATTRIBUTE_NAME;\n this._stateAttributeName(cp);\n }\n }\n }\n // Before attribute value state\n //------------------------------------------------------------------\n _stateBeforeAttributeValue(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.QUOTATION_MARK: {\n this.state = State.ATTRIBUTE_VALUE_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this.state = State.ATTRIBUTE_VALUE_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingAttributeValue);\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n default: {\n this.state = State.ATTRIBUTE_VALUE_UNQUOTED;\n this._stateAttributeValueUnquoted(cp);\n }\n }\n }\n // Attribute value (double-quoted) state\n //------------------------------------------------------------------\n _stateAttributeValueDoubleQuoted(cp) {\n switch (cp) {\n case $.QUOTATION_MARK: {\n this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED;\n break;\n }\n case $.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n }\n }\n // Attribute value (single-quoted) state\n //------------------------------------------------------------------\n _stateAttributeValueSingleQuoted(cp) {\n switch (cp) {\n case $.APOSTROPHE: {\n this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED;\n break;\n }\n case $.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n }\n }\n // Attribute value (unquoted) state\n //------------------------------------------------------------------\n _stateAttributeValueUnquoted(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this._leaveAttrValue();\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n break;\n }\n case $.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._leaveAttrValue();\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += REPLACEMENT_CHARACTER;\n break;\n }\n case $.QUOTATION_MARK:\n case $.APOSTROPHE:\n case $.LESS_THAN_SIGN:\n case $.EQUALS_SIGN:\n case $.GRAVE_ACCENT: {\n this._err(ERR.unexpectedCharacterInUnquotedAttributeValue);\n this.currentAttr.value += String.fromCodePoint(cp);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n }\n }\n // After attribute value (quoted) state\n //------------------------------------------------------------------\n _stateAfterAttributeValueQuoted(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this._leaveAttrValue();\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n break;\n }\n case $.SOLIDUS: {\n this._leaveAttrValue();\n this.state = State.SELF_CLOSING_START_TAG;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._leaveAttrValue();\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingWhitespaceBetweenAttributes);\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n this._stateBeforeAttributeName(cp);\n }\n }\n }\n // Self-closing start tag state\n //------------------------------------------------------------------\n _stateSelfClosingStartTag(cp) {\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n const token = this.currentToken;\n token.selfClosing = true;\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.unexpectedSolidusInTag);\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n this._stateBeforeAttributeName(cp);\n }\n }\n }\n // Bogus comment state\n //------------------------------------------------------------------\n _stateBogusComment(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EOF: {\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.data += REPLACEMENT_CHARACTER;\n break;\n }\n default: {\n token.data += String.fromCodePoint(cp);\n }\n }\n }\n // Markup declaration open state\n //------------------------------------------------------------------\n _stateMarkupDeclarationOpen(cp) {\n if (this._consumeSequenceIfMatch($$.DASH_DASH, true)) {\n this._createCommentToken($$.DASH_DASH.length + 1);\n this.state = State.COMMENT_START;\n }\n else if (this._consumeSequenceIfMatch($$.DOCTYPE, false)) {\n // NOTE: Doctypes tokens are created without fixed offsets. We keep track of the moment a doctype *might* start here.\n this.currentLocation = this.getCurrentLocation($$.DOCTYPE.length + 1);\n this.state = State.DOCTYPE;\n }\n else if (this._consumeSequenceIfMatch($$.CDATA_START, true)) {\n if (this.inForeignNode) {\n this.state = State.CDATA_SECTION;\n }\n else {\n this._err(ERR.cdataInHtmlContent);\n this._createCommentToken($$.CDATA_START.length + 1);\n this.currentToken.data = '[CDATA[';\n this.state = State.BOGUS_COMMENT;\n }\n }\n //NOTE: Sequence lookups can be abrupted by hibernation. In that case, lookup\n //results are no longer valid and we will need to start over.\n else if (!this._ensureHibernation()) {\n this._err(ERR.incorrectlyOpenedComment);\n this._createCommentToken(2);\n this.state = State.BOGUS_COMMENT;\n this._stateBogusComment(cp);\n }\n }\n // Comment start state\n //------------------------------------------------------------------\n _stateCommentStart(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_START_DASH;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptClosingOfEmptyComment);\n this.state = State.DATA;\n const token = this.currentToken;\n this.emitCurrentComment(token);\n break;\n }\n default: {\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment start dash state\n //------------------------------------------------------------------\n _stateCommentStartDash(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_END;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptClosingOfEmptyComment);\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '-';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment state\n //------------------------------------------------------------------\n _stateComment(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_END_DASH;\n break;\n }\n case $.LESS_THAN_SIGN: {\n token.data += '<';\n this.state = State.COMMENT_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.data += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += String.fromCodePoint(cp);\n }\n }\n }\n // Comment less-than sign state\n //------------------------------------------------------------------\n _stateCommentLessThanSign(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.EXCLAMATION_MARK: {\n token.data += '!';\n this.state = State.COMMENT_LESS_THAN_SIGN_BANG;\n break;\n }\n case $.LESS_THAN_SIGN: {\n token.data += '<';\n break;\n }\n default: {\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment less-than sign bang state\n //------------------------------------------------------------------\n _stateCommentLessThanSignBang(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH;\n }\n else {\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n // Comment less-than sign bang dash state\n //------------------------------------------------------------------\n _stateCommentLessThanSignBangDash(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH;\n }\n else {\n this.state = State.COMMENT_END_DASH;\n this._stateCommentEndDash(cp);\n }\n }\n // Comment less-than sign bang dash dash state\n //------------------------------------------------------------------\n _stateCommentLessThanSignBangDashDash(cp) {\n if (cp !== $.GREATER_THAN_SIGN && cp !== $.EOF) {\n this._err(ERR.nestedComment);\n }\n this.state = State.COMMENT_END;\n this._stateCommentEnd(cp);\n }\n // Comment end dash state\n //------------------------------------------------------------------\n _stateCommentEndDash(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_END;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '-';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment end state\n //------------------------------------------------------------------\n _stateCommentEnd(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EXCLAMATION_MARK: {\n this.state = State.COMMENT_END_BANG;\n break;\n }\n case $.HYPHEN_MINUS: {\n token.data += '-';\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '--';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment end bang state\n //------------------------------------------------------------------\n _stateCommentEndBang(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n token.data += '--!';\n this.state = State.COMMENT_END_DASH;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.incorrectlyClosedComment);\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '--!';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // DOCTYPE state\n //------------------------------------------------------------------\n _stateDoctype(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_DOCTYPE_NAME;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.BEFORE_DOCTYPE_NAME;\n this._stateBeforeDoctypeName(cp);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n this._createDoctypeToken(null);\n const token = this.currentToken;\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingWhitespaceBeforeDoctypeName);\n this.state = State.BEFORE_DOCTYPE_NAME;\n this._stateBeforeDoctypeName(cp);\n }\n }\n }\n // Before DOCTYPE name state\n //------------------------------------------------------------------\n _stateBeforeDoctypeName(cp) {\n if (isAsciiUpper(cp)) {\n this._createDoctypeToken(String.fromCharCode(toAsciiLower(cp)));\n this.state = State.DOCTYPE_NAME;\n }\n else\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._createDoctypeToken(REPLACEMENT_CHARACTER);\n this.state = State.DOCTYPE_NAME;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypeName);\n this._createDoctypeToken(null);\n const token = this.currentToken;\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n this._createDoctypeToken(null);\n const token = this.currentToken;\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._createDoctypeToken(String.fromCodePoint(cp));\n this.state = State.DOCTYPE_NAME;\n }\n }\n }\n // DOCTYPE name state\n //------------------------------------------------------------------\n _stateDoctypeName(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.AFTER_DOCTYPE_NAME;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.name += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n }\n }\n }\n // After DOCTYPE name state\n //------------------------------------------------------------------\n _stateAfterDoctypeName(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n if (this._consumeSequenceIfMatch($$.PUBLIC, false)) {\n this.state = State.AFTER_DOCTYPE_PUBLIC_KEYWORD;\n }\n else if (this._consumeSequenceIfMatch($$.SYSTEM, false)) {\n this.state = State.AFTER_DOCTYPE_SYSTEM_KEYWORD;\n }\n //NOTE: sequence lookup can be abrupted by hibernation. In that case lookup\n //results are no longer valid and we will need to start over.\n else if (!this._ensureHibernation()) {\n this._err(ERR.invalidCharacterSequenceAfterDoctypeName);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n }\n // After DOCTYPE public keyword state\n //------------------------------------------------------------------\n _stateAfterDoctypePublicKeyword(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER;\n break;\n }\n case $.QUOTATION_MARK: {\n this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Before DOCTYPE public identifier state\n //------------------------------------------------------------------\n _stateBeforeDoctypePublicIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.QUOTATION_MARK: {\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // DOCTYPE public identifier (double-quoted) state\n //------------------------------------------------------------------\n _stateDoctypePublicIdentifierDoubleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.QUOTATION_MARK: {\n this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.publicId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.publicId += String.fromCodePoint(cp);\n }\n }\n }\n // DOCTYPE public identifier (single-quoted) state\n //------------------------------------------------------------------\n _stateDoctypePublicIdentifierSingleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.APOSTROPHE: {\n this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.publicId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.publicId += String.fromCodePoint(cp);\n }\n }\n }\n // After DOCTYPE public identifier state\n //------------------------------------------------------------------\n _stateAfterDoctypePublicIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.QUOTATION_MARK: {\n this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Between DOCTYPE public and system identifiers state\n //------------------------------------------------------------------\n _stateBetweenDoctypePublicAndSystemIdentifiers(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.QUOTATION_MARK: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // After DOCTYPE system keyword state\n //------------------------------------------------------------------\n _stateAfterDoctypeSystemKeyword(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER;\n break;\n }\n case $.QUOTATION_MARK: {\n this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Before DOCTYPE system identifier state\n //------------------------------------------------------------------\n _stateBeforeDoctypeSystemIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.QUOTATION_MARK: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // DOCTYPE system identifier (double-quoted) state\n //------------------------------------------------------------------\n _stateDoctypeSystemIdentifierDoubleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.QUOTATION_MARK: {\n this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.systemId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.systemId += String.fromCodePoint(cp);\n }\n }\n }\n // DOCTYPE system identifier (single-quoted) state\n //------------------------------------------------------------------\n _stateDoctypeSystemIdentifierSingleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.APOSTROPHE: {\n this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.systemId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.systemId += String.fromCodePoint(cp);\n }\n }\n }\n // After DOCTYPE system identifier state\n //------------------------------------------------------------------\n _stateAfterDoctypeSystemIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.unexpectedCharacterAfterDoctypeSystemIdentifier);\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Bogus DOCTYPE state\n //------------------------------------------------------------------\n _stateBogusDoctype(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n break;\n }\n case $.EOF: {\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default:\n // Do nothing\n }\n }\n // CDATA section state\n //------------------------------------------------------------------\n _stateCdataSection(cp) {\n switch (cp) {\n case $.RIGHT_SQUARE_BRACKET: {\n this.state = State.CDATA_SECTION_BRACKET;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInCdata);\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // CDATA section bracket state\n //------------------------------------------------------------------\n _stateCdataSectionBracket(cp) {\n if (cp === $.RIGHT_SQUARE_BRACKET) {\n this.state = State.CDATA_SECTION_END;\n }\n else {\n this._emitChars(']');\n this.state = State.CDATA_SECTION;\n this._stateCdataSection(cp);\n }\n }\n // CDATA section end state\n //------------------------------------------------------------------\n _stateCdataSectionEnd(cp) {\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n break;\n }\n case $.RIGHT_SQUARE_BRACKET: {\n this._emitChars(']');\n break;\n }\n default: {\n this._emitChars(']]');\n this.state = State.CDATA_SECTION;\n this._stateCdataSection(cp);\n }\n }\n }\n // Character reference state\n //------------------------------------------------------------------\n _stateCharacterReference() {\n let length = this.entityDecoder.write(this.preprocessor.html, this.preprocessor.pos);\n if (length < 0) {\n if (this.preprocessor.lastChunkWritten) {\n length = this.entityDecoder.end();\n }\n else {\n // Wait for the rest of the entity.\n this.active = false;\n // Mark the entire buffer as read.\n this.preprocessor.pos = this.preprocessor.html.length - 1;\n this.consumedAfterSnapshot = 0;\n this.preprocessor.endOfChunkHit = true;\n return;\n }\n }\n if (length === 0) {\n // This was not a valid entity. Go back to the beginning, and\n // figure out what to do.\n this.preprocessor.pos = this.entityStartPos;\n this._flushCodePointConsumedAsCharacterReference($.AMPERSAND);\n this.state =\n !this._isCharacterReferenceInAttribute() && isAsciiAlphaNumeric(this.preprocessor.peek(1))\n ? State.AMBIGUOUS_AMPERSAND\n : this.returnState;\n }\n else {\n // We successfully parsed an entity. Switch to the return state.\n this.state = this.returnState;\n }\n }\n // Ambiguos ampersand state\n //------------------------------------------------------------------\n _stateAmbiguousAmpersand(cp) {\n if (isAsciiAlphaNumeric(cp)) {\n this._flushCodePointConsumedAsCharacterReference(cp);\n }\n else {\n if (cp === $.SEMICOLON) {\n this._err(ERR.unknownNamedCharacterReference);\n }\n this.state = this.returnState;\n this._callState(cp);\n }\n }\n}\n","import { TAG_ID as $, NS, NUMBERED_HEADERS } from '../common/html.js';\n//Element utils\nconst IMPLICIT_END_TAG_REQUIRED = new Set([$.DD, $.DT, $.LI, $.OPTGROUP, $.OPTION, $.P, $.RB, $.RP, $.RT, $.RTC]);\nconst IMPLICIT_END_TAG_REQUIRED_THOROUGHLY = new Set([\n ...IMPLICIT_END_TAG_REQUIRED,\n $.CAPTION,\n $.COLGROUP,\n $.TBODY,\n $.TD,\n $.TFOOT,\n $.TH,\n $.THEAD,\n $.TR,\n]);\nconst SCOPING_ELEMENTS_HTML = new Set([\n $.APPLET,\n $.CAPTION,\n $.HTML,\n $.MARQUEE,\n $.OBJECT,\n $.TABLE,\n $.TD,\n $.TEMPLATE,\n $.TH,\n]);\nconst SCOPING_ELEMENTS_HTML_LIST = new Set([...SCOPING_ELEMENTS_HTML, $.OL, $.UL]);\nconst SCOPING_ELEMENTS_HTML_BUTTON = new Set([...SCOPING_ELEMENTS_HTML, $.BUTTON]);\nconst SCOPING_ELEMENTS_MATHML = new Set([$.ANNOTATION_XML, $.MI, $.MN, $.MO, $.MS, $.MTEXT]);\nconst SCOPING_ELEMENTS_SVG = new Set([$.DESC, $.FOREIGN_OBJECT, $.TITLE]);\nconst TABLE_ROW_CONTEXT = new Set([$.TR, $.TEMPLATE, $.HTML]);\nconst TABLE_BODY_CONTEXT = new Set([$.TBODY, $.TFOOT, $.THEAD, $.TEMPLATE, $.HTML]);\nconst TABLE_CONTEXT = new Set([$.TABLE, $.TEMPLATE, $.HTML]);\nconst TABLE_CELLS = new Set([$.TD, $.TH]);\n//Stack of open elements\nexport class OpenElementStack {\n get currentTmplContentOrNode() {\n return this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : this.current;\n }\n constructor(document, treeAdapter, handler) {\n this.treeAdapter = treeAdapter;\n this.handler = handler;\n this.items = [];\n this.tagIDs = [];\n this.stackTop = -1;\n this.tmplCount = 0;\n this.currentTagId = $.UNKNOWN;\n this.current = document;\n }\n //Index of element\n _indexOf(element) {\n return this.items.lastIndexOf(element, this.stackTop);\n }\n //Update current element\n _isInTemplate() {\n return this.currentTagId === $.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === NS.HTML;\n }\n _updateCurrentElement() {\n this.current = this.items[this.stackTop];\n this.currentTagId = this.tagIDs[this.stackTop];\n }\n //Mutations\n push(element, tagID) {\n this.stackTop++;\n this.items[this.stackTop] = element;\n this.current = element;\n this.tagIDs[this.stackTop] = tagID;\n this.currentTagId = tagID;\n if (this._isInTemplate()) {\n this.tmplCount++;\n }\n this.handler.onItemPush(element, tagID, true);\n }\n pop() {\n const popped = this.current;\n if (this.tmplCount > 0 && this._isInTemplate()) {\n this.tmplCount--;\n }\n this.stackTop--;\n this._updateCurrentElement();\n this.handler.onItemPop(popped, true);\n }\n replace(oldElement, newElement) {\n const idx = this._indexOf(oldElement);\n this.items[idx] = newElement;\n if (idx === this.stackTop) {\n this.current = newElement;\n }\n }\n insertAfter(referenceElement, newElement, newElementID) {\n const insertionIdx = this._indexOf(referenceElement) + 1;\n this.items.splice(insertionIdx, 0, newElement);\n this.tagIDs.splice(insertionIdx, 0, newElementID);\n this.stackTop++;\n if (insertionIdx === this.stackTop) {\n this._updateCurrentElement();\n }\n if (this.current && this.currentTagId !== undefined) {\n this.handler.onItemPush(this.current, this.currentTagId, insertionIdx === this.stackTop);\n }\n }\n popUntilTagNamePopped(tagName) {\n let targetIdx = this.stackTop + 1;\n do {\n targetIdx = this.tagIDs.lastIndexOf(tagName, targetIdx - 1);\n } while (targetIdx > 0 && this.treeAdapter.getNamespaceURI(this.items[targetIdx]) !== NS.HTML);\n this.shortenToLength(Math.max(targetIdx, 0));\n }\n shortenToLength(idx) {\n while (this.stackTop >= idx) {\n const popped = this.current;\n if (this.tmplCount > 0 && this._isInTemplate()) {\n this.tmplCount -= 1;\n }\n this.stackTop--;\n this._updateCurrentElement();\n this.handler.onItemPop(popped, this.stackTop < idx);\n }\n }\n popUntilElementPopped(element) {\n const idx = this._indexOf(element);\n this.shortenToLength(Math.max(idx, 0));\n }\n popUntilPopped(tagNames, targetNS) {\n const idx = this._indexOfTagNames(tagNames, targetNS);\n this.shortenToLength(Math.max(idx, 0));\n }\n popUntilNumberedHeaderPopped() {\n this.popUntilPopped(NUMBERED_HEADERS, NS.HTML);\n }\n popUntilTableCellPopped() {\n this.popUntilPopped(TABLE_CELLS, NS.HTML);\n }\n popAllUpToHtmlElement() {\n //NOTE: here we assume that the root <html> element is always first in the open element stack, so\n //we perform this fast stack clean up.\n this.tmplCount = 0;\n this.shortenToLength(1);\n }\n _indexOfTagNames(tagNames, namespace) {\n for (let i = this.stackTop; i >= 0; i--) {\n if (tagNames.has(this.tagIDs[i]) && this.treeAdapter.getNamespaceURI(this.items[i]) === namespace) {\n return i;\n }\n }\n return -1;\n }\n clearBackTo(tagNames, targetNS) {\n const idx = this._indexOfTagNames(tagNames, targetNS);\n this.shortenToLength(idx + 1);\n }\n clearBackToTableContext() {\n this.clearBackTo(TABLE_CONTEXT, NS.HTML);\n }\n clearBackToTableBodyContext() {\n this.clearBackTo(TABLE_BODY_CONTEXT, NS.HTML);\n }\n clearBackToTableRowContext() {\n this.clearBackTo(TABLE_ROW_CONTEXT, NS.HTML);\n }\n remove(element) {\n const idx = this._indexOf(element);\n if (idx >= 0) {\n if (idx === this.stackTop) {\n this.pop();\n }\n else {\n this.items.splice(idx, 1);\n this.tagIDs.splice(idx, 1);\n this.stackTop--;\n this._updateCurrentElement();\n this.handler.onItemPop(element, false);\n }\n }\n }\n //Search\n tryPeekProperlyNestedBodyElement() {\n //Properly nested <body> element (should be second element in stack).\n return this.stackTop >= 1 && this.tagIDs[1] === $.BODY ? this.items[1] : null;\n }\n contains(element) {\n return this._indexOf(element) > -1;\n }\n getCommonAncestor(element) {\n const elementIdx = this._indexOf(element) - 1;\n return elementIdx >= 0 ? this.items[elementIdx] : null;\n }\n isRootHtmlElementCurrent() {\n return this.stackTop === 0 && this.tagIDs[0] === $.HTML;\n }\n //Element in scope\n hasInDynamicScope(tagName, htmlScope) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n switch (this.treeAdapter.getNamespaceURI(this.items[i])) {\n case NS.HTML: {\n if (tn === tagName)\n return true;\n if (htmlScope.has(tn))\n return false;\n break;\n }\n case NS.SVG: {\n if (SCOPING_ELEMENTS_SVG.has(tn))\n return false;\n break;\n }\n case NS.MATHML: {\n if (SCOPING_ELEMENTS_MATHML.has(tn))\n return false;\n break;\n }\n }\n }\n return true;\n }\n hasInScope(tagName) {\n return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML);\n }\n hasInListItemScope(tagName) {\n return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML_LIST);\n }\n hasInButtonScope(tagName) {\n return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML_BUTTON);\n }\n hasNumberedHeaderInScope() {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n switch (this.treeAdapter.getNamespaceURI(this.items[i])) {\n case NS.HTML: {\n if (NUMBERED_HEADERS.has(tn))\n return true;\n if (SCOPING_ELEMENTS_HTML.has(tn))\n return false;\n break;\n }\n case NS.SVG: {\n if (SCOPING_ELEMENTS_SVG.has(tn))\n return false;\n break;\n }\n case NS.MATHML: {\n if (SCOPING_ELEMENTS_MATHML.has(tn))\n return false;\n break;\n }\n }\n }\n return true;\n }\n hasInTableScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n if (this.treeAdapter.getNamespaceURI(this.items[i]) !== NS.HTML) {\n continue;\n }\n switch (this.tagIDs[i]) {\n case tagName: {\n return true;\n }\n case $.TABLE:\n case $.HTML: {\n return false;\n }\n }\n }\n return true;\n }\n hasTableBodyContextInTableScope() {\n for (let i = this.stackTop; i >= 0; i--) {\n if (this.treeAdapter.getNamespaceURI(this.items[i]) !== NS.HTML) {\n continue;\n }\n switch (this.tagIDs[i]) {\n case $.TBODY:\n case $.THEAD:\n case $.TFOOT: {\n return true;\n }\n case $.TABLE:\n case $.HTML: {\n return false;\n }\n }\n }\n return true;\n }\n hasInSelectScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n if (this.treeAdapter.getNamespaceURI(this.items[i]) !== NS.HTML) {\n continue;\n }\n switch (this.tagIDs[i]) {\n case tagName: {\n return true;\n }\n case $.OPTION:\n case $.OPTGROUP: {\n break;\n }\n default: {\n return false;\n }\n }\n }\n return true;\n }\n //Implied end tags\n generateImpliedEndTags() {\n while (this.currentTagId !== undefined && IMPLICIT_END_TAG_REQUIRED.has(this.currentTagId)) {\n this.pop();\n }\n }\n generateImpliedEndTagsThoroughly() {\n while (this.currentTagId !== undefined && IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {\n this.pop();\n }\n }\n generateImpliedEndTagsWithExclusion(exclusionId) {\n while (this.currentTagId !== undefined &&\n this.currentTagId !== exclusionId &&\n IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {\n this.pop();\n }\n }\n}\n","//Const\nconst NOAH_ARK_CAPACITY = 3;\nexport var EntryType;\n(function (EntryType) {\n EntryType[EntryType[\"Marker\"] = 0] = \"Marker\";\n EntryType[EntryType[\"Element\"] = 1] = \"Element\";\n})(EntryType || (EntryType = {}));\nconst MARKER = { type: EntryType.Marker };\n//List of formatting elements\nexport class FormattingElementList {\n constructor(treeAdapter) {\n this.treeAdapter = treeAdapter;\n this.entries = [];\n this.bookmark = null;\n }\n //Noah Ark's condition\n //OPTIMIZATION: at first we try to find possible candidates for exclusion using\n //lightweight heuristics without thorough attributes check.\n _getNoahArkConditionCandidates(newElement, neAttrs) {\n const candidates = [];\n const neAttrsLength = neAttrs.length;\n const neTagName = this.treeAdapter.getTagName(newElement);\n const neNamespaceURI = this.treeAdapter.getNamespaceURI(newElement);\n for (let i = 0; i < this.entries.length; i++) {\n const entry = this.entries[i];\n if (entry.type === EntryType.Marker) {\n break;\n }\n const { element } = entry;\n if (this.treeAdapter.getTagName(element) === neTagName &&\n this.treeAdapter.getNamespaceURI(element) === neNamespaceURI) {\n const elementAttrs = this.treeAdapter.getAttrList(element);\n if (elementAttrs.length === neAttrsLength) {\n candidates.push({ idx: i, attrs: elementAttrs });\n }\n }\n }\n return candidates;\n }\n _ensureNoahArkCondition(newElement) {\n if (this.entries.length < NOAH_ARK_CAPACITY)\n return;\n const neAttrs = this.treeAdapter.getAttrList(newElement);\n const candidates = this._getNoahArkConditionCandidates(newElement, neAttrs);\n if (candidates.length < NOAH_ARK_CAPACITY)\n return;\n //NOTE: build attrs map for the new element, so we can perform fast lookups\n const neAttrsMap = new Map(neAttrs.map((neAttr) => [neAttr.name, neAttr.value]));\n let validCandidates = 0;\n //NOTE: remove bottommost candidates, until Noah's Ark condition will not be met\n for (let i = 0; i < candidates.length; i++) {\n const candidate = candidates[i];\n // We know that `candidate.attrs.length === neAttrs.length`\n if (candidate.attrs.every((cAttr) => neAttrsMap.get(cAttr.name) === cAttr.value)) {\n validCandidates += 1;\n if (validCandidates >= NOAH_ARK_CAPACITY) {\n this.entries.splice(candidate.idx, 1);\n }\n }\n }\n }\n //Mutations\n insertMarker() {\n this.entries.unshift(MARKER);\n }\n pushElement(element, token) {\n this._ensureNoahArkCondition(element);\n this.entries.unshift({\n type: EntryType.Element,\n element,\n token,\n });\n }\n insertElementAfterBookmark(element, token) {\n const bookmarkIdx = this.entries.indexOf(this.bookmark);\n this.entries.splice(bookmarkIdx, 0, {\n type: EntryType.Element,\n element,\n token,\n });\n }\n removeEntry(entry) {\n const entryIndex = this.entries.indexOf(entry);\n if (entryIndex !== -1) {\n this.entries.splice(entryIndex, 1);\n }\n }\n /**\n * Clears the list of formatting elements up to the last marker.\n *\n * @see https://html.spec.whatwg.org/multipage/parsing.html#clear-the-list-of-active-formatting-elements-up-to-the-last-marker\n */\n clearToLastMarker() {\n const markerIdx = this.entries.indexOf(MARKER);\n if (markerIdx === -1) {\n this.entries.length = 0;\n }\n else {\n this.entries.splice(0, markerIdx + 1);\n }\n }\n //Search\n getElementEntryInScopeWithTagName(tagName) {\n const entry = this.entries.find((entry) => entry.type === EntryType.Marker || this.treeAdapter.getTagName(entry.element) === tagName);\n return entry && entry.type === EntryType.Element ? entry : null;\n }\n getElementEntry(element) {\n return this.entries.find((entry) => entry.type === EntryType.Element && entry.element === element);\n }\n}\n","import { DOCUMENT_MODE } from '../common/html.js';\nexport const defaultTreeAdapter = {\n //Node construction\n createDocument() {\n return {\n nodeName: '#document',\n mode: DOCUMENT_MODE.NO_QUIRKS,\n childNodes: [],\n };\n },\n createDocumentFragment() {\n return {\n nodeName: '#document-fragment',\n childNodes: [],\n };\n },\n createElement(tagName, namespaceURI, attrs) {\n return {\n nodeName: tagName,\n tagName,\n attrs,\n namespaceURI,\n childNodes: [],\n parentNode: null,\n };\n },\n createCommentNode(data) {\n return {\n nodeName: '#comment',\n data,\n parentNode: null,\n };\n },\n createTextNode(value) {\n return {\n nodeName: '#text',\n value,\n parentNode: null,\n };\n },\n //Tree mutation\n appendChild(parentNode, newNode) {\n parentNode.childNodes.push(newNode);\n newNode.parentNode = parentNode;\n },\n insertBefore(parentNode, newNode, referenceNode) {\n const insertionIdx = parentNode.childNodes.indexOf(referenceNode);\n parentNode.childNodes.splice(insertionIdx, 0, newNode);\n newNode.parentNode = parentNode;\n },\n setTemplateContent(templateElement, contentElement) {\n templateElement.content = contentElement;\n },\n getTemplateContent(templateElement) {\n return templateElement.content;\n },\n setDocumentType(document, name, publicId, systemId) {\n const doctypeNode = document.childNodes.find((node) => node.nodeName === '#documentType');\n if (doctypeNode) {\n doctypeNode.name = name;\n doctypeNode.publicId = publicId;\n doctypeNode.systemId = systemId;\n }\n else {\n const node = {\n nodeName: '#documentType',\n name,\n publicId,\n systemId,\n parentNode: null,\n };\n defaultTreeAdapter.appendChild(document, node);\n }\n },\n setDocumentMode(document, mode) {\n document.mode = mode;\n },\n getDocumentMode(document) {\n return document.mode;\n },\n detachNode(node) {\n if (node.parentNode) {\n const idx = node.parentNode.childNodes.indexOf(node);\n node.parentNode.childNodes.splice(idx, 1);\n node.parentNode = null;\n }\n },\n insertText(parentNode, text) {\n if (parentNode.childNodes.length > 0) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.length - 1];\n if (defaultTreeAdapter.isTextNode(prevNode)) {\n prevNode.value += text;\n return;\n }\n }\n defaultTreeAdapter.appendChild(parentNode, defaultTreeAdapter.createTextNode(text));\n },\n insertTextBefore(parentNode, text, referenceNode) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1];\n if (prevNode && defaultTreeAdapter.isTextNode(prevNode)) {\n prevNode.value += text;\n }\n else {\n defaultTreeAdapter.insertBefore(parentNode, defaultTreeAdapter.createTextNode(text), referenceNode);\n }\n },\n adoptAttributes(recipient, attrs) {\n const recipientAttrsMap = new Set(recipient.attrs.map((attr) => attr.name));\n for (let j = 0; j < attrs.length; j++) {\n if (!recipientAttrsMap.has(attrs[j].name)) {\n recipient.attrs.push(attrs[j]);\n }\n }\n },\n //Tree traversing\n getFirstChild(node) {\n return node.childNodes[0];\n },\n getChildNodes(node) {\n return node.childNodes;\n },\n getParentNode(node) {\n return node.parentNode;\n },\n getAttrList(element) {\n return element.attrs;\n },\n //Node data\n getTagName(element) {\n return element.tagName;\n },\n getNamespaceURI(element) {\n return element.namespaceURI;\n },\n getTextNodeContent(textNode) {\n return textNode.value;\n },\n getCommentNodeContent(commentNode) {\n return commentNode.data;\n },\n getDocumentTypeNodeName(doctypeNode) {\n return doctypeNode.name;\n },\n getDocumentTypeNodePublicId(doctypeNode) {\n return doctypeNode.publicId;\n },\n getDocumentTypeNodeSystemId(doctypeNode) {\n return doctypeNode.systemId;\n },\n //Node types\n isTextNode(node) {\n return node.nodeName === '#text';\n },\n isCommentNode(node) {\n return node.nodeName === '#comment';\n },\n isDocumentTypeNode(node) {\n return node.nodeName === '#documentType';\n },\n isElementNode(node) {\n return Object.prototype.hasOwnProperty.call(node, 'tagName');\n },\n // Source code location\n setNodeSourceCodeLocation(node, location) {\n node.sourceCodeLocation = location;\n },\n getNodeSourceCodeLocation(node) {\n return node.sourceCodeLocation;\n },\n updateNodeSourceCodeLocation(node, endLocation) {\n node.sourceCodeLocation = { ...node.sourceCodeLocation, ...endLocation };\n },\n};\n","import { DOCUMENT_MODE } from './html.js';\n//Const\nconst VALID_DOCTYPE_NAME = 'html';\nconst VALID_SYSTEM_ID = 'about:legacy-compat';\nconst QUIRKS_MODE_SYSTEM_ID = 'http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd';\nconst QUIRKS_MODE_PUBLIC_ID_PREFIXES = [\n '+//silmaril//dtd html pro v0r11 19970101//',\n '-//as//dtd html 3.0 aswedit + extensions//',\n '-//advasoft ltd//dtd html 3.0 aswedit + extensions//',\n '-//ietf//dtd html 2.0 level 1//',\n '-//ietf//dtd html 2.0 level 2//',\n '-//ietf//dtd html 2.0 strict level 1//',\n '-//ietf//dtd html 2.0 strict level 2//',\n '-//ietf//dtd html 2.0 strict//',\n '-//ietf//dtd html 2.0//',\n '-//ietf//dtd html 2.1e//',\n '-//ietf//dtd html 3.0//',\n '-//ietf//dtd html 3.2 final//',\n '-//ietf//dtd html 3.2//',\n '-//ietf//dtd html 3//',\n '-//ietf//dtd html level 0//',\n '-//ietf//dtd html level 1//',\n '-//ietf//dtd html level 2//',\n '-//ietf//dtd html level 3//',\n '-//ietf//dtd html strict level 0//',\n '-//ietf//dtd html strict level 1//',\n '-//ietf//dtd html strict level 2//',\n '-//ietf//dtd html strict level 3//',\n '-//ietf//dtd html strict//',\n '-//ietf//dtd html//',\n '-//metrius//dtd metrius presentational//',\n '-//microsoft//dtd internet explorer 2.0 html strict//',\n '-//microsoft//dtd internet explorer 2.0 html//',\n '-//microsoft//dtd internet explorer 2.0 tables//',\n '-//microsoft//dtd internet explorer 3.0 html strict//',\n '-//microsoft//dtd internet explorer 3.0 html//',\n '-//microsoft//dtd internet explorer 3.0 tables//',\n '-//netscape comm. corp.//dtd html//',\n '-//netscape comm. corp.//dtd strict html//',\n \"-//o'reilly and associates//dtd html 2.0//\",\n \"-//o'reilly and associates//dtd html extended 1.0//\",\n \"-//o'reilly and associates//dtd html extended relaxed 1.0//\",\n '-//sq//dtd html 2.0 hotmetal + extensions//',\n '-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//',\n '-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//',\n '-//spyglass//dtd html 2.0 extended//',\n '-//sun microsystems corp.//dtd hotjava html//',\n '-//sun microsystems corp.//dtd hotjava strict html//',\n '-//w3c//dtd html 3 1995-03-24//',\n '-//w3c//dtd html 3.2 draft//',\n '-//w3c//dtd html 3.2 final//',\n '-//w3c//dtd html 3.2//',\n '-//w3c//dtd html 3.2s draft//',\n '-//w3c//dtd html 4.0 frameset//',\n '-//w3c//dtd html 4.0 transitional//',\n '-//w3c//dtd html experimental 19960712//',\n '-//w3c//dtd html experimental 970421//',\n '-//w3c//dtd w3 html//',\n '-//w3o//dtd w3 html 3.0//',\n '-//webtechs//dtd mozilla html 2.0//',\n '-//webtechs//dtd mozilla html//',\n];\nconst QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES = [\n ...QUIRKS_MODE_PUBLIC_ID_PREFIXES,\n '-//w3c//dtd html 4.01 frameset//',\n '-//w3c//dtd html 4.01 transitional//',\n];\nconst QUIRKS_MODE_PUBLIC_IDS = new Set([\n '-//w3o//dtd w3 html strict 3.0//en//',\n '-/w3c/dtd html 4.0 transitional/en',\n 'html',\n]);\nconst LIMITED_QUIRKS_PUBLIC_ID_PREFIXES = ['-//w3c//dtd xhtml 1.0 frameset//', '-//w3c//dtd xhtml 1.0 transitional//'];\nconst LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES = [\n ...LIMITED_QUIRKS_PUBLIC_ID_PREFIXES,\n '-//w3c//dtd html 4.01 frameset//',\n '-//w3c//dtd html 4.01 transitional//',\n];\n//Utils\nfunction hasPrefix(publicId, prefixes) {\n return prefixes.some((prefix) => publicId.startsWith(prefix));\n}\n//API\nexport function isConforming(token) {\n return (token.name === VALID_DOCTYPE_NAME &&\n token.publicId === null &&\n (token.systemId === null || token.systemId === VALID_SYSTEM_ID));\n}\nexport function getDocumentMode(token) {\n if (token.name !== VALID_DOCTYPE_NAME) {\n return DOCUMENT_MODE.QUIRKS;\n }\n const { systemId } = token;\n if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID) {\n return DOCUMENT_MODE.QUIRKS;\n }\n let { publicId } = token;\n if (publicId !== null) {\n publicId = publicId.toLowerCase();\n if (QUIRKS_MODE_PUBLIC_IDS.has(publicId)) {\n return DOCUMENT_MODE.QUIRKS;\n }\n let prefixes = systemId === null ? QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES : QUIRKS_MODE_PUBLIC_ID_PREFIXES;\n if (hasPrefix(publicId, prefixes)) {\n return DOCUMENT_MODE.QUIRKS;\n }\n prefixes =\n systemId === null ? LIMITED_QUIRKS_PUBLIC_ID_PREFIXES : LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES;\n if (hasPrefix(publicId, prefixes)) {\n return DOCUMENT_MODE.LIMITED_QUIRKS;\n }\n }\n return DOCUMENT_MODE.NO_QUIRKS;\n}\n","import { TAG_ID as $, NS, ATTRS, getTagID } from './html.js';\n//MIME types\nconst MIME_TYPES = {\n TEXT_HTML: 'text/html',\n APPLICATION_XML: 'application/xhtml+xml',\n};\n//Attributes\nconst DEFINITION_URL_ATTR = 'definitionurl';\nconst ADJUSTED_DEFINITION_URL_ATTR = 'definitionURL';\nconst SVG_ATTRS_ADJUSTMENT_MAP = new Map([\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((attr) => [attr.toLowerCase(), attr]));\nconst XML_ATTRS_ADJUSTMENT_MAP = new Map([\n ['xlink:actuate', { prefix: 'xlink', name: 'actuate', namespace: NS.XLINK }],\n ['xlink:arcrole', { prefix: 'xlink', name: 'arcrole', namespace: NS.XLINK }],\n ['xlink:href', { prefix: 'xlink', name: 'href', namespace: NS.XLINK }],\n ['xlink:role', { prefix: 'xlink', name: 'role', namespace: NS.XLINK }],\n ['xlink:show', { prefix: 'xlink', name: 'show', namespace: NS.XLINK }],\n ['xlink:title', { prefix: 'xlink', name: 'title', namespace: NS.XLINK }],\n ['xlink:type', { prefix: 'xlink', name: 'type', namespace: NS.XLINK }],\n ['xml:lang', { prefix: 'xml', name: 'lang', namespace: NS.XML }],\n ['xml:space', { prefix: 'xml', name: 'space', namespace: NS.XML }],\n ['xmlns', { prefix: '', name: 'xmlns', namespace: NS.XMLNS }],\n ['xmlns:xlink', { prefix: 'xmlns', name: 'xlink', namespace: NS.XMLNS }],\n]);\n//SVG tag names adjustment map\nexport const SVG_TAG_NAMES_ADJUSTMENT_MAP = 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 '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((tn) => [tn.toLowerCase(), tn]));\n//Tags that causes exit from foreign content\nconst EXITS_FOREIGN_CONTENT = new Set([\n $.B,\n $.BIG,\n $.BLOCKQUOTE,\n $.BODY,\n $.BR,\n $.CENTER,\n $.CODE,\n $.DD,\n $.DIV,\n $.DL,\n $.DT,\n $.EM,\n $.EMBED,\n $.H1,\n $.H2,\n $.H3,\n $.H4,\n $.H5,\n $.H6,\n $.HEAD,\n $.HR,\n $.I,\n $.IMG,\n $.LI,\n $.LISTING,\n $.MENU,\n $.META,\n $.NOBR,\n $.OL,\n $.P,\n $.PRE,\n $.RUBY,\n $.S,\n $.SMALL,\n $.SPAN,\n $.STRONG,\n $.STRIKE,\n $.SUB,\n $.SUP,\n $.TABLE,\n $.TT,\n $.U,\n $.UL,\n $.VAR,\n]);\n//Check exit from foreign content\nexport function causesExit(startTagToken) {\n const tn = startTagToken.tagID;\n const isFontWithAttrs = tn === $.FONT &&\n startTagToken.attrs.some(({ name }) => name === ATTRS.COLOR || name === ATTRS.SIZE || name === ATTRS.FACE);\n return isFontWithAttrs || EXITS_FOREIGN_CONTENT.has(tn);\n}\n//Token adjustments\nexport function adjustTokenMathMLAttrs(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n if (token.attrs[i].name === DEFINITION_URL_ATTR) {\n token.attrs[i].name = ADJUSTED_DEFINITION_URL_ATTR;\n break;\n }\n }\n}\nexport function adjustTokenSVGAttrs(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n const adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name);\n if (adjustedAttrName != null) {\n token.attrs[i].name = adjustedAttrName;\n }\n }\n}\nexport function adjustTokenXMLAttrs(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n const adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name);\n if (adjustedAttrEntry) {\n token.attrs[i].prefix = adjustedAttrEntry.prefix;\n token.attrs[i].name = adjustedAttrEntry.name;\n token.attrs[i].namespace = adjustedAttrEntry.namespace;\n }\n }\n}\nexport function adjustTokenSVGTagName(token) {\n const adjustedTagName = SVG_TAG_NAMES_ADJUSTMENT_MAP.get(token.tagName);\n if (adjustedTagName != null) {\n token.tagName = adjustedTagName;\n token.tagID = getTagID(token.tagName);\n }\n}\n//Integration points\nfunction isMathMLTextIntegrationPoint(tn, ns) {\n return ns === NS.MATHML && (tn === $.MI || tn === $.MO || tn === $.MN || tn === $.MS || tn === $.MTEXT);\n}\nfunction isHtmlIntegrationPoint(tn, ns, attrs) {\n if (ns === NS.MATHML && tn === $.ANNOTATION_XML) {\n for (let i = 0; i < attrs.length; i++) {\n if (attrs[i].name === ATTRS.ENCODING) {\n const value = attrs[i].value.toLowerCase();\n return value === MIME_TYPES.TEXT_HTML || value === MIME_TYPES.APPLICATION_XML;\n }\n }\n }\n return ns === NS.SVG && (tn === $.FOREIGN_OBJECT || tn === $.DESC || tn === $.TITLE);\n}\nexport function isIntegrationPoint(tn, ns, attrs, foreignNS) {\n return (((!foreignNS || foreignNS === NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs)) ||\n ((!foreignNS || foreignNS === NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns)));\n}\n","import { Tokenizer, TokenizerMode } from '../tokenizer/index.js';\nimport { OpenElementStack } from './open-element-stack.js';\nimport { FormattingElementList, EntryType } from './formatting-element-list.js';\nimport { defaultTreeAdapter } from '../tree-adapters/default.js';\nimport * as doctype from '../common/doctype.js';\nimport * as foreignContent from '../common/foreign-content.js';\nimport { ERR } from '../common/error-codes.js';\nimport * as unicode from '../common/unicode.js';\nimport { TAG_ID as $, TAG_NAMES as TN, NS, ATTRS, SPECIAL_ELEMENTS, DOCUMENT_MODE, NUMBERED_HEADERS, getTagID, } from '../common/html.js';\nimport { TokenType, getTokenAttr, } from '../common/token.js';\n//Misc constants\nconst HIDDEN_INPUT_TYPE = 'hidden';\n//Adoption agency loops iteration count\nconst AA_OUTER_LOOP_ITER = 8;\nconst AA_INNER_LOOP_ITER = 3;\n//Insertion modes\nvar InsertionMode;\n(function (InsertionMode) {\n InsertionMode[InsertionMode[\"INITIAL\"] = 0] = \"INITIAL\";\n InsertionMode[InsertionMode[\"BEFORE_HTML\"] = 1] = \"BEFORE_HTML\";\n InsertionMode[InsertionMode[\"BEFORE_HEAD\"] = 2] = \"BEFORE_HEAD\";\n InsertionMode[InsertionMode[\"IN_HEAD\"] = 3] = \"IN_HEAD\";\n InsertionMode[InsertionMode[\"IN_HEAD_NO_SCRIPT\"] = 4] = \"IN_HEAD_NO_SCRIPT\";\n InsertionMode[InsertionMode[\"AFTER_HEAD\"] = 5] = \"AFTER_HEAD\";\n InsertionMode[InsertionMode[\"IN_BODY\"] = 6] = \"IN_BODY\";\n InsertionMode[InsertionMode[\"TEXT\"] = 7] = \"TEXT\";\n InsertionMode[InsertionMode[\"IN_TABLE\"] = 8] = \"IN_TABLE\";\n InsertionMode[InsertionMode[\"IN_TABLE_TEXT\"] = 9] = \"IN_TABLE_TEXT\";\n InsertionMode[InsertionMode[\"IN_CAPTION\"] = 10] = \"IN_CAPTION\";\n InsertionMode[InsertionMode[\"IN_COLUMN_GROUP\"] = 11] = \"IN_COLUMN_GROUP\";\n InsertionMode[InsertionMode[\"IN_TABLE_BODY\"] = 12] = \"IN_TABLE_BODY\";\n InsertionMode[InsertionMode[\"IN_ROW\"] = 13] = \"IN_ROW\";\n InsertionMode[InsertionMode[\"IN_CELL\"] = 14] = \"IN_CELL\";\n InsertionMode[InsertionMode[\"IN_SELECT\"] = 15] = \"IN_SELECT\";\n InsertionMode[InsertionMode[\"IN_SELECT_IN_TABLE\"] = 16] = \"IN_SELECT_IN_TABLE\";\n InsertionMode[InsertionMode[\"IN_TEMPLATE\"] = 17] = \"IN_TEMPLATE\";\n InsertionMode[InsertionMode[\"AFTER_BODY\"] = 18] = \"AFTER_BODY\";\n InsertionMode[InsertionMode[\"IN_FRAMESET\"] = 19] = \"IN_FRAMESET\";\n InsertionMode[InsertionMode[\"AFTER_FRAMESET\"] = 20] = \"AFTER_FRAMESET\";\n InsertionMode[InsertionMode[\"AFTER_AFTER_BODY\"] = 21] = \"AFTER_AFTER_BODY\";\n InsertionMode[InsertionMode[\"AFTER_AFTER_FRAMESET\"] = 22] = \"AFTER_AFTER_FRAMESET\";\n})(InsertionMode || (InsertionMode = {}));\nconst BASE_LOC = {\n startLine: -1,\n startCol: -1,\n startOffset: -1,\n endLine: -1,\n endCol: -1,\n endOffset: -1,\n};\nconst TABLE_STRUCTURE_TAGS = new Set([$.TABLE, $.TBODY, $.TFOOT, $.THEAD, $.TR]);\nconst defaultParserOptions = {\n scriptingEnabled: true,\n sourceCodeLocationInfo: false,\n treeAdapter: defaultTreeAdapter,\n onParseError: null,\n};\n//Parser\nexport class Parser {\n constructor(options, document, \n /** @internal */\n fragmentContext = null, \n /** @internal */\n scriptHandler = null) {\n this.fragmentContext = fragmentContext;\n this.scriptHandler = scriptHandler;\n this.currentToken = null;\n this.stopped = false;\n /** @internal */\n this.insertionMode = InsertionMode.INITIAL;\n /** @internal */\n this.originalInsertionMode = InsertionMode.INITIAL;\n /** @internal */\n this.headElement = null;\n /** @internal */\n this.formElement = null;\n /** Indicates that the current node is not an element in the HTML namespace */\n this.currentNotInHTML = false;\n /**\n * The template insertion mode stack is maintained from the left.\n * Ie. the topmost element will always have index 0.\n *\n * @internal\n */\n this.tmplInsertionModeStack = [];\n /** @internal */\n this.pendingCharacterTokens = [];\n /** @internal */\n this.hasNonWhitespacePendingCharacterToken = false;\n /** @internal */\n this.framesetOk = true;\n /** @internal */\n this.skipNextNewLine = false;\n /** @internal */\n this.fosterParentingEnabled = false;\n this.options = {\n ...defaultParserOptions,\n ...options,\n };\n this.treeAdapter = this.options.treeAdapter;\n this.onParseError = this.options.onParseError;\n // Always enable location info if we report parse errors.\n if (this.onParseError) {\n this.options.sourceCodeLocationInfo = true;\n }\n this.document = document !== null && document !== void 0 ? document : this.treeAdapter.createDocument();\n this.tokenizer = new Tokenizer(this.options, this);\n this.activeFormattingElements = new FormattingElementList(this.treeAdapter);\n this.fragmentContextID = fragmentContext ? getTagID(this.treeAdapter.getTagName(fragmentContext)) : $.UNKNOWN;\n this._setContextModes(fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : this.document, this.fragmentContextID);\n this.openElements = new OpenElementStack(this.document, this.treeAdapter, this);\n }\n // API\n static parse(html, options) {\n const parser = new this(options);\n parser.tokenizer.write(html, true);\n return parser.document;\n }\n static getFragmentParser(fragmentContext, options) {\n const opts = {\n ...defaultParserOptions,\n ...options,\n };\n //NOTE: use a <template> element as the fragment context if no context element was provided,\n //so we will parse in a \"forgiving\" manner\n fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : (fragmentContext = opts.treeAdapter.createElement(TN.TEMPLATE, NS.HTML, []));\n //NOTE: create a fake element which will be used as the `document` for fragment parsing.\n //This is important for jsdom, where a new `document` cannot be created. This led to\n //fragment parsing messing with the main `document`.\n const documentMock = opts.treeAdapter.createElement('documentmock', NS.HTML, []);\n const parser = new this(opts, documentMock, fragmentContext);\n if (parser.fragmentContextID === $.TEMPLATE) {\n parser.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE);\n }\n parser._initTokenizerForFragmentParsing();\n parser._insertFakeRootElement();\n parser._resetInsertionMode();\n parser._findFormInFragmentContext();\n return parser;\n }\n getFragment() {\n const rootElement = this.treeAdapter.getFirstChild(this.document);\n const fragment = this.treeAdapter.createDocumentFragment();\n this._adoptNodes(rootElement, fragment);\n return fragment;\n }\n //Errors\n /** @internal */\n _err(token, code, beforeToken) {\n var _a;\n if (!this.onParseError)\n return;\n const loc = (_a = token.location) !== null && _a !== void 0 ? _a : BASE_LOC;\n const err = {\n code,\n startLine: loc.startLine,\n startCol: loc.startCol,\n startOffset: loc.startOffset,\n endLine: beforeToken ? loc.startLine : loc.endLine,\n endCol: beforeToken ? loc.startCol : loc.endCol,\n endOffset: beforeToken ? loc.startOffset : loc.endOffset,\n };\n this.onParseError(err);\n }\n //Stack events\n /** @internal */\n onItemPush(node, tid, isTop) {\n var _a, _b;\n (_b = (_a = this.treeAdapter).onItemPush) === null || _b === void 0 ? void 0 : _b.call(_a, node);\n if (isTop && this.openElements.stackTop > 0)\n this._setContextModes(node, tid);\n }\n /** @internal */\n onItemPop(node, isTop) {\n var _a, _b;\n if (this.options.sourceCodeLocationInfo) {\n this._setEndLocation(node, this.currentToken);\n }\n (_b = (_a = this.treeAdapter).onItemPop) === null || _b === void 0 ? void 0 : _b.call(_a, node, this.openElements.current);\n if (isTop) {\n let current;\n let currentTagId;\n if (this.openElements.stackTop === 0 && this.fragmentContext) {\n current = this.fragmentContext;\n currentTagId = this.fragmentContextID;\n }\n else {\n ({ current, currentTagId } = this.openElements);\n }\n this._setContextModes(current, currentTagId);\n }\n }\n _setContextModes(current, tid) {\n const isHTML = current === this.document || (current && this.treeAdapter.getNamespaceURI(current) === NS.HTML);\n this.currentNotInHTML = !isHTML;\n this.tokenizer.inForeignNode =\n !isHTML && current !== undefined && tid !== undefined && !this._isIntegrationPoint(tid, current);\n }\n /** @protected */\n _switchToTextParsing(currentToken, nextTokenizerState) {\n this._insertElement(currentToken, NS.HTML);\n this.tokenizer.state = nextTokenizerState;\n this.originalInsertionMode = this.insertionMode;\n this.insertionMode = InsertionMode.TEXT;\n }\n switchToPlaintextParsing() {\n this.insertionMode = InsertionMode.TEXT;\n this.originalInsertionMode = InsertionMode.IN_BODY;\n this.tokenizer.state = TokenizerMode.PLAINTEXT;\n }\n //Fragment parsing\n /** @protected */\n _getAdjustedCurrentElement() {\n return this.openElements.stackTop === 0 && this.fragmentContext\n ? this.fragmentContext\n : this.openElements.current;\n }\n /** @protected */\n _findFormInFragmentContext() {\n let node = this.fragmentContext;\n while (node) {\n if (this.treeAdapter.getTagName(node) === TN.FORM) {\n this.formElement = node;\n break;\n }\n node = this.treeAdapter.getParentNode(node);\n }\n }\n _initTokenizerForFragmentParsing() {\n if (!this.fragmentContext || this.treeAdapter.getNamespaceURI(this.fragmentContext) !== NS.HTML) {\n return;\n }\n switch (this.fragmentContextID) {\n case $.TITLE:\n case $.TEXTAREA: {\n this.tokenizer.state = TokenizerMode.RCDATA;\n break;\n }\n case $.STYLE:\n case $.XMP:\n case $.IFRAME:\n case $.NOEMBED:\n case $.NOFRAMES:\n case $.NOSCRIPT: {\n this.tokenizer.state = TokenizerMode.RAWTEXT;\n break;\n }\n case $.SCRIPT: {\n this.tokenizer.state = TokenizerMode.SCRIPT_DATA;\n break;\n }\n case $.PLAINTEXT: {\n this.tokenizer.state = TokenizerMode.PLAINTEXT;\n break;\n }\n default:\n // Do nothing\n }\n }\n //Tree mutation\n /** @protected */\n _setDocumentType(token) {\n const name = token.name || '';\n const publicId = token.publicId || '';\n const systemId = token.systemId || '';\n this.treeAdapter.setDocumentType(this.document, name, publicId, systemId);\n if (token.location) {\n const documentChildren = this.treeAdapter.getChildNodes(this.document);\n const docTypeNode = documentChildren.find((node) => this.treeAdapter.isDocumentTypeNode(node));\n if (docTypeNode) {\n this.treeAdapter.setNodeSourceCodeLocation(docTypeNode, token.location);\n }\n }\n }\n /** @protected */\n _attachElementToTree(element, location) {\n if (this.options.sourceCodeLocationInfo) {\n const loc = location && {\n ...location,\n startTag: location,\n };\n this.treeAdapter.setNodeSourceCodeLocation(element, loc);\n }\n if (this._shouldFosterParentOnInsertion()) {\n this._fosterParentElement(element);\n }\n else {\n const parent = this.openElements.currentTmplContentOrNode;\n this.treeAdapter.appendChild(parent !== null && parent !== void 0 ? parent : this.document, element);\n }\n }\n /**\n * For self-closing tags. Add an element to the tree, but skip adding it\n * to the stack.\n */\n /** @protected */\n _appendElement(token, namespaceURI) {\n const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n this._attachElementToTree(element, token.location);\n }\n /** @protected */\n _insertElement(token, namespaceURI) {\n const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n this._attachElementToTree(element, token.location);\n this.openElements.push(element, token.tagID);\n }\n /** @protected */\n _insertFakeElement(tagName, tagID) {\n const element = this.treeAdapter.createElement(tagName, NS.HTML, []);\n this._attachElementToTree(element, null);\n this.openElements.push(element, tagID);\n }\n /** @protected */\n _insertTemplate(token) {\n const tmpl = this.treeAdapter.createElement(token.tagName, NS.HTML, token.attrs);\n const content = this.treeAdapter.createDocumentFragment();\n this.treeAdapter.setTemplateContent(tmpl, content);\n this._attachElementToTree(tmpl, token.location);\n this.openElements.push(tmpl, token.tagID);\n if (this.options.sourceCodeLocationInfo)\n this.treeAdapter.setNodeSourceCodeLocation(content, null);\n }\n /** @protected */\n _insertFakeRootElement() {\n const element = this.treeAdapter.createElement(TN.HTML, NS.HTML, []);\n if (this.options.sourceCodeLocationInfo)\n this.treeAdapter.setNodeSourceCodeLocation(element, null);\n this.treeAdapter.appendChild(this.openElements.current, element);\n this.openElements.push(element, $.HTML);\n }\n /** @protected */\n _appendCommentNode(token, parent) {\n const commentNode = this.treeAdapter.createCommentNode(token.data);\n this.treeAdapter.appendChild(parent, commentNode);\n if (this.options.sourceCodeLocationInfo) {\n this.treeAdapter.setNodeSourceCodeLocation(commentNode, token.location);\n }\n }\n /** @protected */\n _insertCharacters(token) {\n let parent;\n let beforeElement;\n if (this._shouldFosterParentOnInsertion()) {\n ({ parent, beforeElement } = this._findFosterParentingLocation());\n if (beforeElement) {\n this.treeAdapter.insertTextBefore(parent, token.chars, beforeElement);\n }\n else {\n this.treeAdapter.insertText(parent, token.chars);\n }\n }\n else {\n parent = this.openElements.currentTmplContentOrNode;\n this.treeAdapter.insertText(parent, token.chars);\n }\n if (!token.location)\n return;\n const siblings = this.treeAdapter.getChildNodes(parent);\n const textNodeIdx = beforeElement ? siblings.lastIndexOf(beforeElement) : siblings.length;\n const textNode = siblings[textNodeIdx - 1];\n //NOTE: if we have a location assigned by another token, then just update the end position\n const tnLoc = this.treeAdapter.getNodeSourceCodeLocation(textNode);\n if (tnLoc) {\n const { endLine, endCol, endOffset } = token.location;\n this.treeAdapter.updateNodeSourceCodeLocation(textNode, { endLine, endCol, endOffset });\n }\n else if (this.options.sourceCodeLocationInfo) {\n this.treeAdapter.setNodeSourceCodeLocation(textNode, token.location);\n }\n }\n /** @protected */\n _adoptNodes(donor, recipient) {\n for (let child = this.treeAdapter.getFirstChild(donor); child; child = this.treeAdapter.getFirstChild(donor)) {\n this.treeAdapter.detachNode(child);\n this.treeAdapter.appendChild(recipient, child);\n }\n }\n /** @protected */\n _setEndLocation(element, closingToken) {\n if (this.treeAdapter.getNodeSourceCodeLocation(element) && closingToken.location) {\n const ctLoc = closingToken.location;\n const tn = this.treeAdapter.getTagName(element);\n const endLoc = \n // NOTE: For cases like <p> <p> </p> - First 'p' closes without a closing\n // tag and for cases like <td> <p> </td> - 'p' closes without a closing tag.\n closingToken.type === TokenType.END_TAG && tn === closingToken.tagName\n ? {\n endTag: { ...ctLoc },\n endLine: ctLoc.endLine,\n endCol: ctLoc.endCol,\n endOffset: ctLoc.endOffset,\n }\n : {\n endLine: ctLoc.startLine,\n endCol: ctLoc.startCol,\n endOffset: ctLoc.startOffset,\n };\n this.treeAdapter.updateNodeSourceCodeLocation(element, endLoc);\n }\n }\n //Token processing\n shouldProcessStartTagTokenInForeignContent(token) {\n // Check that neither current === document, or ns === NS.HTML\n if (!this.currentNotInHTML)\n return false;\n let current;\n let currentTagId;\n if (this.openElements.stackTop === 0 && this.fragmentContext) {\n current = this.fragmentContext;\n currentTagId = this.fragmentContextID;\n }\n else {\n ({ current, currentTagId } = this.openElements);\n }\n if (token.tagID === $.SVG &&\n this.treeAdapter.getTagName(current) === TN.ANNOTATION_XML &&\n this.treeAdapter.getNamespaceURI(current) === NS.MATHML) {\n return false;\n }\n return (\n // Check that `current` is not an integration point for HTML or MathML elements.\n this.tokenizer.inForeignNode ||\n // If it _is_ an integration point, then we might have to check that it is not an HTML\n // integration point.\n ((token.tagID === $.MGLYPH || token.tagID === $.MALIGNMARK) &&\n currentTagId !== undefined &&\n !this._isIntegrationPoint(currentTagId, current, NS.HTML)));\n }\n /** @protected */\n _processToken(token) {\n switch (token.type) {\n case TokenType.CHARACTER: {\n this.onCharacter(token);\n break;\n }\n case TokenType.NULL_CHARACTER: {\n this.onNullCharacter(token);\n break;\n }\n case TokenType.COMMENT: {\n this.onComment(token);\n break;\n }\n case TokenType.DOCTYPE: {\n this.onDoctype(token);\n break;\n }\n case TokenType.START_TAG: {\n this._processStartTag(token);\n break;\n }\n case TokenType.END_TAG: {\n this.onEndTag(token);\n break;\n }\n case TokenType.EOF: {\n this.onEof(token);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n this.onWhitespaceCharacter(token);\n break;\n }\n }\n }\n //Integration points\n /** @protected */\n _isIntegrationPoint(tid, element, foreignNS) {\n const ns = this.treeAdapter.getNamespaceURI(element);\n const attrs = this.treeAdapter.getAttrList(element);\n return foreignContent.isIntegrationPoint(tid, ns, attrs, foreignNS);\n }\n //Active formatting elements reconstruction\n /** @protected */\n _reconstructActiveFormattingElements() {\n const listLength = this.activeFormattingElements.entries.length;\n if (listLength) {\n const endIndex = this.activeFormattingElements.entries.findIndex((entry) => entry.type === EntryType.Marker || this.openElements.contains(entry.element));\n const unopenIdx = endIndex === -1 ? listLength - 1 : endIndex - 1;\n for (let i = unopenIdx; i >= 0; i--) {\n const entry = this.activeFormattingElements.entries[i];\n this._insertElement(entry.token, this.treeAdapter.getNamespaceURI(entry.element));\n entry.element = this.openElements.current;\n }\n }\n }\n //Close elements\n /** @protected */\n _closeTableCell() {\n this.openElements.generateImpliedEndTags();\n this.openElements.popUntilTableCellPopped();\n this.activeFormattingElements.clearToLastMarker();\n this.insertionMode = InsertionMode.IN_ROW;\n }\n /** @protected */\n _closePElement() {\n this.openElements.generateImpliedEndTagsWithExclusion($.P);\n this.openElements.popUntilTagNamePopped($.P);\n }\n //Insertion modes\n /** @protected */\n _resetInsertionMode() {\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n //Insertion mode reset map\n switch (i === 0 && this.fragmentContext ? this.fragmentContextID : this.openElements.tagIDs[i]) {\n case $.TR: {\n this.insertionMode = InsertionMode.IN_ROW;\n return;\n }\n case $.TBODY:\n case $.THEAD:\n case $.TFOOT: {\n this.insertionMode = InsertionMode.IN_TABLE_BODY;\n return;\n }\n case $.CAPTION: {\n this.insertionMode = InsertionMode.IN_CAPTION;\n return;\n }\n case $.COLGROUP: {\n this.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n return;\n }\n case $.TABLE: {\n this.insertionMode = InsertionMode.IN_TABLE;\n return;\n }\n case $.BODY: {\n this.insertionMode = InsertionMode.IN_BODY;\n return;\n }\n case $.FRAMESET: {\n this.insertionMode = InsertionMode.IN_FRAMESET;\n return;\n }\n case $.SELECT: {\n this._resetInsertionModeForSelect(i);\n return;\n }\n case $.TEMPLATE: {\n this.insertionMode = this.tmplInsertionModeStack[0];\n return;\n }\n case $.HTML: {\n this.insertionMode = this.headElement ? InsertionMode.AFTER_HEAD : InsertionMode.BEFORE_HEAD;\n return;\n }\n case $.TD:\n case $.TH: {\n if (i > 0) {\n this.insertionMode = InsertionMode.IN_CELL;\n return;\n }\n break;\n }\n case $.HEAD: {\n if (i > 0) {\n this.insertionMode = InsertionMode.IN_HEAD;\n return;\n }\n break;\n }\n }\n }\n this.insertionMode = InsertionMode.IN_BODY;\n }\n /** @protected */\n _resetInsertionModeForSelect(selectIdx) {\n if (selectIdx > 0) {\n for (let i = selectIdx - 1; i > 0; i--) {\n const tn = this.openElements.tagIDs[i];\n if (tn === $.TEMPLATE) {\n break;\n }\n else if (tn === $.TABLE) {\n this.insertionMode = InsertionMode.IN_SELECT_IN_TABLE;\n return;\n }\n }\n }\n this.insertionMode = InsertionMode.IN_SELECT;\n }\n //Foster parenting\n /** @protected */\n _isElementCausesFosterParenting(tn) {\n return TABLE_STRUCTURE_TAGS.has(tn);\n }\n /** @protected */\n _shouldFosterParentOnInsertion() {\n return (this.fosterParentingEnabled &&\n this.openElements.currentTagId !== undefined &&\n this._isElementCausesFosterParenting(this.openElements.currentTagId));\n }\n /** @protected */\n _findFosterParentingLocation() {\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n const openElement = this.openElements.items[i];\n switch (this.openElements.tagIDs[i]) {\n case $.TEMPLATE: {\n if (this.treeAdapter.getNamespaceURI(openElement) === NS.HTML) {\n return { parent: this.treeAdapter.getTemplateContent(openElement), beforeElement: null };\n }\n break;\n }\n case $.TABLE: {\n const parent = this.treeAdapter.getParentNode(openElement);\n if (parent) {\n return { parent, beforeElement: openElement };\n }\n return { parent: this.openElements.items[i - 1], beforeElement: null };\n }\n default:\n // Do nothing\n }\n }\n return { parent: this.openElements.items[0], beforeElement: null };\n }\n /** @protected */\n _fosterParentElement(element) {\n const location = this._findFosterParentingLocation();\n if (location.beforeElement) {\n this.treeAdapter.insertBefore(location.parent, element, location.beforeElement);\n }\n else {\n this.treeAdapter.appendChild(location.parent, element);\n }\n }\n //Special elements\n /** @protected */\n _isSpecialElement(element, id) {\n const ns = this.treeAdapter.getNamespaceURI(element);\n return SPECIAL_ELEMENTS[ns].has(id);\n }\n /** @internal */\n onCharacter(token) {\n this.skipNextNewLine = false;\n if (this.tokenizer.inForeignNode) {\n characterInForeignContent(this, token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n tokenBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n tokenBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n tokenInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n tokenInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n tokenAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_TEMPLATE: {\n characterInBody(this, token);\n break;\n }\n case InsertionMode.TEXT:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE: {\n this._insertCharacters(token);\n break;\n }\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW: {\n characterInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n characterInTableText(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n tokenInColumnGroup(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n tokenAfterBody(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n tokenAfterAfterBody(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onNullCharacter(token) {\n this.skipNextNewLine = false;\n if (this.tokenizer.inForeignNode) {\n nullCharacterInForeignContent(this, token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n tokenBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n tokenBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n tokenInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n tokenInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n tokenAfterHead(this, token);\n break;\n }\n case InsertionMode.TEXT: {\n this._insertCharacters(token);\n break;\n }\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW: {\n characterInTable(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n tokenInColumnGroup(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n tokenAfterBody(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n tokenAfterAfterBody(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onComment(token) {\n this.skipNextNewLine = false;\n if (this.currentNotInHTML) {\n appendComment(this, token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.INITIAL:\n case InsertionMode.BEFORE_HTML:\n case InsertionMode.BEFORE_HEAD:\n case InsertionMode.IN_HEAD:\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n case InsertionMode.AFTER_HEAD:\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_COLUMN_GROUP:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE:\n case InsertionMode.IN_TEMPLATE:\n case InsertionMode.IN_FRAMESET:\n case InsertionMode.AFTER_FRAMESET: {\n appendComment(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n appendCommentToRootHtmlElement(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY:\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n appendCommentToDocument(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onDoctype(token) {\n this.skipNextNewLine = false;\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n doctypeInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD:\n case InsertionMode.IN_HEAD:\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n case InsertionMode.AFTER_HEAD: {\n this._err(token, ERR.misplacedDoctype);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onStartTag(token) {\n this.skipNextNewLine = false;\n this.currentToken = token;\n this._processStartTag(token);\n if (token.selfClosing && !token.ackSelfClosing) {\n this._err(token, ERR.nonVoidHtmlElementStartTagWithTrailingSolidus);\n }\n }\n /**\n * Processes a given start tag.\n *\n * `onStartTag` checks if a self-closing tag was recognized. When a token\n * is moved inbetween multiple insertion modes, this check for self-closing\n * could lead to false positives. To avoid this, `_processStartTag` is used\n * for nested calls.\n *\n * @param token The token to process.\n * @protected\n */\n _processStartTag(token) {\n if (this.shouldProcessStartTagTokenInForeignContent(token)) {\n startTagInForeignContent(this, token);\n }\n else {\n this._startTagOutsideForeignContent(token);\n }\n }\n /** @protected */\n _startTagOutsideForeignContent(token) {\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n startTagBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n startTagBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n startTagInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n startTagInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n startTagAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY: {\n startTagInBody(this, token);\n break;\n }\n case InsertionMode.IN_TABLE: {\n startTagInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.IN_CAPTION: {\n startTagInCaption(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n startTagInColumnGroup(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_BODY: {\n startTagInTableBody(this, token);\n break;\n }\n case InsertionMode.IN_ROW: {\n startTagInRow(this, token);\n break;\n }\n case InsertionMode.IN_CELL: {\n startTagInCell(this, token);\n break;\n }\n case InsertionMode.IN_SELECT: {\n startTagInSelect(this, token);\n break;\n }\n case InsertionMode.IN_SELECT_IN_TABLE: {\n startTagInSelectInTable(this, token);\n break;\n }\n case InsertionMode.IN_TEMPLATE: {\n startTagInTemplate(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n startTagAfterBody(this, token);\n break;\n }\n case InsertionMode.IN_FRAMESET: {\n startTagInFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_FRAMESET: {\n startTagAfterFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n startTagAfterAfterBody(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n startTagAfterAfterFrameset(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onEndTag(token) {\n this.skipNextNewLine = false;\n this.currentToken = token;\n if (this.currentNotInHTML) {\n endTagInForeignContent(this, token);\n }\n else {\n this._endTagOutsideForeignContent(token);\n }\n }\n /** @protected */\n _endTagOutsideForeignContent(token) {\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n endTagBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n endTagBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n endTagInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n endTagInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n endTagAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY: {\n endTagInBody(this, token);\n break;\n }\n case InsertionMode.TEXT: {\n endTagInText(this, token);\n break;\n }\n case InsertionMode.IN_TABLE: {\n endTagInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.IN_CAPTION: {\n endTagInCaption(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n endTagInColumnGroup(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_BODY: {\n endTagInTableBody(this, token);\n break;\n }\n case InsertionMode.IN_ROW: {\n endTagInRow(this, token);\n break;\n }\n case InsertionMode.IN_CELL: {\n endTagInCell(this, token);\n break;\n }\n case InsertionMode.IN_SELECT: {\n endTagInSelect(this, token);\n break;\n }\n case InsertionMode.IN_SELECT_IN_TABLE: {\n endTagInSelectInTable(this, token);\n break;\n }\n case InsertionMode.IN_TEMPLATE: {\n endTagInTemplate(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n endTagAfterBody(this, token);\n break;\n }\n case InsertionMode.IN_FRAMESET: {\n endTagInFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_FRAMESET: {\n endTagAfterFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n tokenAfterAfterBody(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onEof(token) {\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n tokenBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n tokenBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n tokenInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n tokenInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n tokenAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_COLUMN_GROUP:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE: {\n eofInBody(this, token);\n break;\n }\n case InsertionMode.TEXT: {\n eofInText(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.IN_TEMPLATE: {\n eofInTemplate(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY:\n case InsertionMode.IN_FRAMESET:\n case InsertionMode.AFTER_FRAMESET:\n case InsertionMode.AFTER_AFTER_BODY:\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n stopParsing(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onWhitespaceCharacter(token) {\n if (this.skipNextNewLine) {\n this.skipNextNewLine = false;\n if (token.chars.charCodeAt(0) === unicode.CODE_POINTS.LINE_FEED) {\n if (token.chars.length === 1) {\n return;\n }\n token.chars = token.chars.substr(1);\n }\n }\n if (this.tokenizer.inForeignNode) {\n this._insertCharacters(token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.IN_HEAD:\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n case InsertionMode.AFTER_HEAD:\n case InsertionMode.TEXT:\n case InsertionMode.IN_COLUMN_GROUP:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE:\n case InsertionMode.IN_FRAMESET:\n case InsertionMode.AFTER_FRAMESET: {\n this._insertCharacters(token);\n break;\n }\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_TEMPLATE:\n case InsertionMode.AFTER_BODY:\n case InsertionMode.AFTER_AFTER_BODY:\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n whitespaceCharacterInBody(this, token);\n break;\n }\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW: {\n characterInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n whitespaceCharacterInTableText(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n}\n//Adoption agency algorithm\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/tree-construction.html#adoptionAgency)\n//------------------------------------------------------------------\n//Steps 5-8 of the algorithm\nfunction aaObtainFormattingElementEntry(p, token) {\n let formattingElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(token.tagName);\n if (formattingElementEntry) {\n if (!p.openElements.contains(formattingElementEntry.element)) {\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n formattingElementEntry = null;\n }\n else if (!p.openElements.hasInScope(token.tagID)) {\n formattingElementEntry = null;\n }\n }\n else {\n genericEndTagInBody(p, token);\n }\n return formattingElementEntry;\n}\n//Steps 9 and 10 of the algorithm\nfunction aaObtainFurthestBlock(p, formattingElementEntry) {\n let furthestBlock = null;\n let idx = p.openElements.stackTop;\n for (; idx >= 0; idx--) {\n const element = p.openElements.items[idx];\n if (element === formattingElementEntry.element) {\n break;\n }\n if (p._isSpecialElement(element, p.openElements.tagIDs[idx])) {\n furthestBlock = element;\n }\n }\n if (!furthestBlock) {\n p.openElements.shortenToLength(Math.max(idx, 0));\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n }\n return furthestBlock;\n}\n//Step 13 of the algorithm\nfunction aaInnerLoop(p, furthestBlock, formattingElement) {\n let lastElement = furthestBlock;\n let nextElement = p.openElements.getCommonAncestor(furthestBlock);\n for (let i = 0, element = nextElement; element !== formattingElement; i++, element = nextElement) {\n //NOTE: store the next element for the next loop iteration (it may be deleted from the stack by step 9.5)\n nextElement = p.openElements.getCommonAncestor(element);\n const elementEntry = p.activeFormattingElements.getElementEntry(element);\n const counterOverflow = elementEntry && i >= AA_INNER_LOOP_ITER;\n const shouldRemoveFromOpenElements = !elementEntry || counterOverflow;\n if (shouldRemoveFromOpenElements) {\n if (counterOverflow) {\n p.activeFormattingElements.removeEntry(elementEntry);\n }\n p.openElements.remove(element);\n }\n else {\n element = aaRecreateElementFromEntry(p, elementEntry);\n if (lastElement === furthestBlock) {\n p.activeFormattingElements.bookmark = elementEntry;\n }\n p.treeAdapter.detachNode(lastElement);\n p.treeAdapter.appendChild(element, lastElement);\n lastElement = element;\n }\n }\n return lastElement;\n}\n//Step 13.7 of the algorithm\nfunction aaRecreateElementFromEntry(p, elementEntry) {\n const ns = p.treeAdapter.getNamespaceURI(elementEntry.element);\n const newElement = p.treeAdapter.createElement(elementEntry.token.tagName, ns, elementEntry.token.attrs);\n p.openElements.replace(elementEntry.element, newElement);\n elementEntry.element = newElement;\n return newElement;\n}\n//Step 14 of the algorithm\nfunction aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement) {\n const tn = p.treeAdapter.getTagName(commonAncestor);\n const tid = getTagID(tn);\n if (p._isElementCausesFosterParenting(tid)) {\n p._fosterParentElement(lastElement);\n }\n else {\n const ns = p.treeAdapter.getNamespaceURI(commonAncestor);\n if (tid === $.TEMPLATE && ns === NS.HTML) {\n commonAncestor = p.treeAdapter.getTemplateContent(commonAncestor);\n }\n p.treeAdapter.appendChild(commonAncestor, lastElement);\n }\n}\n//Steps 15-19 of the algorithm\nfunction aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry) {\n const ns = p.treeAdapter.getNamespaceURI(formattingElementEntry.element);\n const { token } = formattingElementEntry;\n const newElement = p.treeAdapter.createElement(token.tagName, ns, token.attrs);\n p._adoptNodes(furthestBlock, newElement);\n p.treeAdapter.appendChild(furthestBlock, newElement);\n p.activeFormattingElements.insertElementAfterBookmark(newElement, token);\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n p.openElements.remove(formattingElementEntry.element);\n p.openElements.insertAfter(furthestBlock, newElement, token.tagID);\n}\n//Algorithm entry point\nfunction callAdoptionAgency(p, token) {\n for (let i = 0; i < AA_OUTER_LOOP_ITER; i++) {\n const formattingElementEntry = aaObtainFormattingElementEntry(p, token);\n if (!formattingElementEntry) {\n break;\n }\n const furthestBlock = aaObtainFurthestBlock(p, formattingElementEntry);\n if (!furthestBlock) {\n break;\n }\n p.activeFormattingElements.bookmark = formattingElementEntry;\n const lastElement = aaInnerLoop(p, furthestBlock, formattingElementEntry.element);\n const commonAncestor = p.openElements.getCommonAncestor(formattingElementEntry.element);\n p.treeAdapter.detachNode(lastElement);\n if (commonAncestor)\n aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement);\n aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry);\n }\n}\n//Generic token handlers\n//------------------------------------------------------------------\nfunction appendComment(p, token) {\n p._appendCommentNode(token, p.openElements.currentTmplContentOrNode);\n}\nfunction appendCommentToRootHtmlElement(p, token) {\n p._appendCommentNode(token, p.openElements.items[0]);\n}\nfunction appendCommentToDocument(p, token) {\n p._appendCommentNode(token, p.document);\n}\nfunction stopParsing(p, token) {\n p.stopped = true;\n // NOTE: Set end locations for elements that remain on the open element stack.\n if (token.location) {\n // NOTE: If we are not in a fragment, `html` and `body` will stay on the stack.\n // This is a problem, as we might overwrite their end position here.\n const target = p.fragmentContext ? 0 : 2;\n for (let i = p.openElements.stackTop; i >= target; i--) {\n p._setEndLocation(p.openElements.items[i], token);\n }\n // Handle `html` and `body`\n if (!p.fragmentContext && p.openElements.stackTop >= 0) {\n const htmlElement = p.openElements.items[0];\n const htmlLocation = p.treeAdapter.getNodeSourceCodeLocation(htmlElement);\n if (htmlLocation && !htmlLocation.endTag) {\n p._setEndLocation(htmlElement, token);\n if (p.openElements.stackTop >= 1) {\n const bodyElement = p.openElements.items[1];\n const bodyLocation = p.treeAdapter.getNodeSourceCodeLocation(bodyElement);\n if (bodyLocation && !bodyLocation.endTag) {\n p._setEndLocation(bodyElement, token);\n }\n }\n }\n }\n }\n}\n// The \"initial\" insertion mode\n//------------------------------------------------------------------\nfunction doctypeInInitialMode(p, token) {\n p._setDocumentType(token);\n const mode = token.forceQuirks ? DOCUMENT_MODE.QUIRKS : doctype.getDocumentMode(token);\n if (!doctype.isConforming(token)) {\n p._err(token, ERR.nonConformingDoctype);\n }\n p.treeAdapter.setDocumentMode(p.document, mode);\n p.insertionMode = InsertionMode.BEFORE_HTML;\n}\nfunction tokenInInitialMode(p, token) {\n p._err(token, ERR.missingDoctype, true);\n p.treeAdapter.setDocumentMode(p.document, DOCUMENT_MODE.QUIRKS);\n p.insertionMode = InsertionMode.BEFORE_HTML;\n p._processToken(token);\n}\n// The \"before html\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHtml(p, token) {\n if (token.tagID === $.HTML) {\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.BEFORE_HEAD;\n }\n else {\n tokenBeforeHtml(p, token);\n }\n}\nfunction endTagBeforeHtml(p, token) {\n const tn = token.tagID;\n if (tn === $.HTML || tn === $.HEAD || tn === $.BODY || tn === $.BR) {\n tokenBeforeHtml(p, token);\n }\n}\nfunction tokenBeforeHtml(p, token) {\n p._insertFakeRootElement();\n p.insertionMode = InsertionMode.BEFORE_HEAD;\n p._processToken(token);\n}\n// The \"before head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHead(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.HEAD: {\n p._insertElement(token, NS.HTML);\n p.headElement = p.openElements.current;\n p.insertionMode = InsertionMode.IN_HEAD;\n break;\n }\n default: {\n tokenBeforeHead(p, token);\n }\n }\n}\nfunction endTagBeforeHead(p, token) {\n const tn = token.tagID;\n if (tn === $.HEAD || tn === $.BODY || tn === $.HTML || tn === $.BR) {\n tokenBeforeHead(p, token);\n }\n else {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n}\nfunction tokenBeforeHead(p, token) {\n p._insertFakeElement(TN.HEAD, $.HEAD);\n p.headElement = p.openElements.current;\n p.insertionMode = InsertionMode.IN_HEAD;\n p._processToken(token);\n}\n// The \"in head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHead(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.BASE:\n case $.BASEFONT:\n case $.BGSOUND:\n case $.LINK:\n case $.META: {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case $.TITLE: {\n p._switchToTextParsing(token, TokenizerMode.RCDATA);\n break;\n }\n case $.NOSCRIPT: {\n if (p.options.scriptingEnabled) {\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n }\n else {\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_HEAD_NO_SCRIPT;\n }\n break;\n }\n case $.NOFRAMES:\n case $.STYLE: {\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n break;\n }\n case $.SCRIPT: {\n p._switchToTextParsing(token, TokenizerMode.SCRIPT_DATA);\n break;\n }\n case $.TEMPLATE: {\n p._insertTemplate(token);\n p.activeFormattingElements.insertMarker();\n p.framesetOk = false;\n p.insertionMode = InsertionMode.IN_TEMPLATE;\n p.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE);\n break;\n }\n case $.HEAD: {\n p._err(token, ERR.misplacedStartTagForHeadElement);\n break;\n }\n default: {\n tokenInHead(p, token);\n }\n }\n}\nfunction endTagInHead(p, token) {\n switch (token.tagID) {\n case $.HEAD: {\n p.openElements.pop();\n p.insertionMode = InsertionMode.AFTER_HEAD;\n break;\n }\n case $.BODY:\n case $.BR:\n case $.HTML: {\n tokenInHead(p, token);\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default: {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n }\n}\nfunction templateEndTagInHead(p, token) {\n if (p.openElements.tmplCount > 0) {\n p.openElements.generateImpliedEndTagsThoroughly();\n if (p.openElements.currentTagId !== $.TEMPLATE) {\n p._err(token, ERR.closingOfElementWithOpenChildElements);\n }\n p.openElements.popUntilTagNamePopped($.TEMPLATE);\n p.activeFormattingElements.clearToLastMarker();\n p.tmplInsertionModeStack.shift();\n p._resetInsertionMode();\n }\n else {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n}\nfunction tokenInHead(p, token) {\n p.openElements.pop();\n p.insertionMode = InsertionMode.AFTER_HEAD;\n p._processToken(token);\n}\n// The \"in head no script\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHeadNoScript(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.BASEFONT:\n case $.BGSOUND:\n case $.HEAD:\n case $.LINK:\n case $.META:\n case $.NOFRAMES:\n case $.STYLE: {\n startTagInHead(p, token);\n break;\n }\n case $.NOSCRIPT: {\n p._err(token, ERR.nestedNoscriptInHead);\n break;\n }\n default: {\n tokenInHeadNoScript(p, token);\n }\n }\n}\nfunction endTagInHeadNoScript(p, token) {\n switch (token.tagID) {\n case $.NOSCRIPT: {\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_HEAD;\n break;\n }\n case $.BR: {\n tokenInHeadNoScript(p, token);\n break;\n }\n default: {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n }\n}\nfunction tokenInHeadNoScript(p, token) {\n const errCode = token.type === TokenType.EOF ? ERR.openElementsLeftAfterEof : ERR.disallowedContentInNoscriptInHead;\n p._err(token, errCode);\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_HEAD;\n p._processToken(token);\n}\n// The \"after head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterHead(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.BODY: {\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode = InsertionMode.IN_BODY;\n break;\n }\n case $.FRAMESET: {\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_FRAMESET;\n break;\n }\n case $.BASE:\n case $.BASEFONT:\n case $.BGSOUND:\n case $.LINK:\n case $.META:\n case $.NOFRAMES:\n case $.SCRIPT:\n case $.STYLE:\n case $.TEMPLATE:\n case $.TITLE: {\n p._err(token, ERR.abandonedHeadElementChild);\n p.openElements.push(p.headElement, $.HEAD);\n startTagInHead(p, token);\n p.openElements.remove(p.headElement);\n break;\n }\n case $.HEAD: {\n p._err(token, ERR.misplacedStartTagForHeadElement);\n break;\n }\n default: {\n tokenAfterHead(p, token);\n }\n }\n}\nfunction endTagAfterHead(p, token) {\n switch (token.tagID) {\n case $.BODY:\n case $.HTML:\n case $.BR: {\n tokenAfterHead(p, token);\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default: {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n }\n}\nfunction tokenAfterHead(p, token) {\n p._insertFakeElement(TN.BODY, $.BODY);\n p.insertionMode = InsertionMode.IN_BODY;\n modeInBody(p, token);\n}\n// The \"in body\" insertion mode\n//------------------------------------------------------------------\nfunction modeInBody(p, token) {\n switch (token.type) {\n case TokenType.CHARACTER: {\n characterInBody(p, token);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n whitespaceCharacterInBody(p, token);\n break;\n }\n case TokenType.COMMENT: {\n appendComment(p, token);\n break;\n }\n case TokenType.START_TAG: {\n startTagInBody(p, token);\n break;\n }\n case TokenType.END_TAG: {\n endTagInBody(p, token);\n break;\n }\n case TokenType.EOF: {\n eofInBody(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction whitespaceCharacterInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertCharacters(token);\n}\nfunction characterInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertCharacters(token);\n p.framesetOk = false;\n}\nfunction htmlStartTagInBody(p, token) {\n if (p.openElements.tmplCount === 0) {\n p.treeAdapter.adoptAttributes(p.openElements.items[0], token.attrs);\n }\n}\nfunction bodyStartTagInBody(p, token) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n if (bodyElement && p.openElements.tmplCount === 0) {\n p.framesetOk = false;\n p.treeAdapter.adoptAttributes(bodyElement, token.attrs);\n }\n}\nfunction framesetStartTagInBody(p, token) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n if (p.framesetOk && bodyElement) {\n p.treeAdapter.detachNode(bodyElement);\n p.openElements.popAllUpToHtmlElement();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_FRAMESET;\n }\n}\nfunction addressStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction numberedHeaderStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n if (p.openElements.currentTagId !== undefined && NUMBERED_HEADERS.has(p.openElements.currentTagId)) {\n p.openElements.pop();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction preStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n //on to the next one. (Newlines at the start of pre blocks are ignored as an authoring convenience.)\n p.skipNextNewLine = true;\n p.framesetOk = false;\n}\nfunction formStartTagInBody(p, token) {\n const inTemplate = p.openElements.tmplCount > 0;\n if (!p.formElement || inTemplate) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n if (!inTemplate) {\n p.formElement = p.openElements.current;\n }\n }\n}\nfunction listItemStartTagInBody(p, token) {\n p.framesetOk = false;\n const tn = token.tagID;\n for (let i = p.openElements.stackTop; i >= 0; i--) {\n const elementId = p.openElements.tagIDs[i];\n if ((tn === $.LI && elementId === $.LI) ||\n ((tn === $.DD || tn === $.DT) && (elementId === $.DD || elementId === $.DT))) {\n p.openElements.generateImpliedEndTagsWithExclusion(elementId);\n p.openElements.popUntilTagNamePopped(elementId);\n break;\n }\n if (elementId !== $.ADDRESS &&\n elementId !== $.DIV &&\n elementId !== $.P &&\n p._isSpecialElement(p.openElements.items[i], elementId)) {\n break;\n }\n }\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction plaintextStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n p.tokenizer.state = TokenizerMode.PLAINTEXT;\n}\nfunction buttonStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.BUTTON)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.BUTTON);\n }\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n}\nfunction aStartTagInBody(p, token) {\n const activeElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(TN.A);\n if (activeElementEntry) {\n callAdoptionAgency(p, token);\n p.openElements.remove(activeElementEntry.element);\n p.activeFormattingElements.removeEntry(activeElementEntry);\n }\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction bStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction nobrStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n if (p.openElements.hasInScope($.NOBR)) {\n callAdoptionAgency(p, token);\n p._reconstructActiveFormattingElements();\n }\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction appletStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.insertMarker();\n p.framesetOk = false;\n}\nfunction tableStartTagInBody(p, token) {\n if (p.treeAdapter.getDocumentMode(p.document) !== DOCUMENT_MODE.QUIRKS && p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode = InsertionMode.IN_TABLE;\n}\nfunction areaStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._appendElement(token, NS.HTML);\n p.framesetOk = false;\n token.ackSelfClosing = true;\n}\nfunction isHiddenInput(token) {\n const inputType = getTokenAttr(token, ATTRS.TYPE);\n return inputType != null && inputType.toLowerCase() === HIDDEN_INPUT_TYPE;\n}\nfunction inputStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._appendElement(token, NS.HTML);\n if (!isHiddenInput(token)) {\n p.framesetOk = false;\n }\n token.ackSelfClosing = true;\n}\nfunction paramStartTagInBody(p, token) {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n}\nfunction hrStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._appendElement(token, NS.HTML);\n p.framesetOk = false;\n token.ackSelfClosing = true;\n}\nfunction imageStartTagInBody(p, token) {\n token.tagName = TN.IMG;\n token.tagID = $.IMG;\n areaStartTagInBody(p, token);\n}\nfunction textareaStartTagInBody(p, token) {\n p._insertElement(token, NS.HTML);\n //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n //on to the next one. (Newlines at the start of textarea elements are ignored as an authoring convenience.)\n p.skipNextNewLine = true;\n p.tokenizer.state = TokenizerMode.RCDATA;\n p.originalInsertionMode = p.insertionMode;\n p.framesetOk = false;\n p.insertionMode = InsertionMode.TEXT;\n}\nfunction xmpStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._reconstructActiveFormattingElements();\n p.framesetOk = false;\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\nfunction iframeStartTagInBody(p, token) {\n p.framesetOk = false;\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\n//NOTE: here we assume that we always act as a user agent with enabled plugins/frames, so we parse\n//<noembed>/<noframes> as rawtext.\nfunction rawTextStartTagInBody(p, token) {\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\nfunction selectStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode =\n p.insertionMode === InsertionMode.IN_TABLE ||\n p.insertionMode === InsertionMode.IN_CAPTION ||\n p.insertionMode === InsertionMode.IN_TABLE_BODY ||\n p.insertionMode === InsertionMode.IN_ROW ||\n p.insertionMode === InsertionMode.IN_CELL\n ? InsertionMode.IN_SELECT_IN_TABLE\n : InsertionMode.IN_SELECT;\n}\nfunction optgroupStartTagInBody(p, token) {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n}\nfunction rbStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.RUBY)) {\n p.openElements.generateImpliedEndTags();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction rtStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.RUBY)) {\n p.openElements.generateImpliedEndTagsWithExclusion($.RTC);\n }\n p._insertElement(token, NS.HTML);\n}\nfunction mathStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n foreignContent.adjustTokenMathMLAttrs(token);\n foreignContent.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p._appendElement(token, NS.MATHML);\n }\n else {\n p._insertElement(token, NS.MATHML);\n }\n token.ackSelfClosing = true;\n}\nfunction svgStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n foreignContent.adjustTokenSVGAttrs(token);\n foreignContent.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p._appendElement(token, NS.SVG);\n }\n else {\n p._insertElement(token, NS.SVG);\n }\n token.ackSelfClosing = true;\n}\nfunction genericStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n}\nfunction startTagInBody(p, token) {\n switch (token.tagID) {\n case $.I:\n case $.S:\n case $.B:\n case $.U:\n case $.EM:\n case $.TT:\n case $.BIG:\n case $.CODE:\n case $.FONT:\n case $.SMALL:\n case $.STRIKE:\n case $.STRONG: {\n bStartTagInBody(p, token);\n break;\n }\n case $.A: {\n aStartTagInBody(p, token);\n break;\n }\n case $.H1:\n case $.H2:\n case $.H3:\n case $.H4:\n case $.H5:\n case $.H6: {\n numberedHeaderStartTagInBody(p, token);\n break;\n }\n case $.P:\n case $.DL:\n case $.OL:\n case $.UL:\n case $.DIV:\n case $.DIR:\n case $.NAV:\n case $.MAIN:\n case $.MENU:\n case $.ASIDE:\n case $.CENTER:\n case $.FIGURE:\n case $.FOOTER:\n case $.HEADER:\n case $.HGROUP:\n case $.DIALOG:\n case $.DETAILS:\n case $.ADDRESS:\n case $.ARTICLE:\n case $.SEARCH:\n case $.SECTION:\n case $.SUMMARY:\n case $.FIELDSET:\n case $.BLOCKQUOTE:\n case $.FIGCAPTION: {\n addressStartTagInBody(p, token);\n break;\n }\n case $.LI:\n case $.DD:\n case $.DT: {\n listItemStartTagInBody(p, token);\n break;\n }\n case $.BR:\n case $.IMG:\n case $.WBR:\n case $.AREA:\n case $.EMBED:\n case $.KEYGEN: {\n areaStartTagInBody(p, token);\n break;\n }\n case $.HR: {\n hrStartTagInBody(p, token);\n break;\n }\n case $.RB:\n case $.RTC: {\n rbStartTagInBody(p, token);\n break;\n }\n case $.RT:\n case $.RP: {\n rtStartTagInBody(p, token);\n break;\n }\n case $.PRE:\n case $.LISTING: {\n preStartTagInBody(p, token);\n break;\n }\n case $.XMP: {\n xmpStartTagInBody(p, token);\n break;\n }\n case $.SVG: {\n svgStartTagInBody(p, token);\n break;\n }\n case $.HTML: {\n htmlStartTagInBody(p, token);\n break;\n }\n case $.BASE:\n case $.LINK:\n case $.META:\n case $.STYLE:\n case $.TITLE:\n case $.SCRIPT:\n case $.BGSOUND:\n case $.BASEFONT:\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n case $.BODY: {\n bodyStartTagInBody(p, token);\n break;\n }\n case $.FORM: {\n formStartTagInBody(p, token);\n break;\n }\n case $.NOBR: {\n nobrStartTagInBody(p, token);\n break;\n }\n case $.MATH: {\n mathStartTagInBody(p, token);\n break;\n }\n case $.TABLE: {\n tableStartTagInBody(p, token);\n break;\n }\n case $.INPUT: {\n inputStartTagInBody(p, token);\n break;\n }\n case $.PARAM:\n case $.TRACK:\n case $.SOURCE: {\n paramStartTagInBody(p, token);\n break;\n }\n case $.IMAGE: {\n imageStartTagInBody(p, token);\n break;\n }\n case $.BUTTON: {\n buttonStartTagInBody(p, token);\n break;\n }\n case $.APPLET:\n case $.OBJECT:\n case $.MARQUEE: {\n appletStartTagInBody(p, token);\n break;\n }\n case $.IFRAME: {\n iframeStartTagInBody(p, token);\n break;\n }\n case $.SELECT: {\n selectStartTagInBody(p, token);\n break;\n }\n case $.OPTION:\n case $.OPTGROUP: {\n optgroupStartTagInBody(p, token);\n break;\n }\n case $.NOEMBED:\n case $.NOFRAMES: {\n rawTextStartTagInBody(p, token);\n break;\n }\n case $.FRAMESET: {\n framesetStartTagInBody(p, token);\n break;\n }\n case $.TEXTAREA: {\n textareaStartTagInBody(p, token);\n break;\n }\n case $.NOSCRIPT: {\n if (p.options.scriptingEnabled) {\n rawTextStartTagInBody(p, token);\n }\n else {\n genericStartTagInBody(p, token);\n }\n break;\n }\n case $.PLAINTEXT: {\n plaintextStartTagInBody(p, token);\n break;\n }\n case $.COL:\n case $.TH:\n case $.TD:\n case $.TR:\n case $.HEAD:\n case $.FRAME:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD:\n case $.CAPTION:\n case $.COLGROUP: {\n // Ignore token\n break;\n }\n default: {\n genericStartTagInBody(p, token);\n }\n }\n}\nfunction bodyEndTagInBody(p, token) {\n if (p.openElements.hasInScope($.BODY)) {\n p.insertionMode = InsertionMode.AFTER_BODY;\n //NOTE: <body> is never popped from the stack, so we need to updated\n //the end location explicitly.\n if (p.options.sourceCodeLocationInfo) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n if (bodyElement) {\n p._setEndLocation(bodyElement, token);\n }\n }\n }\n}\nfunction htmlEndTagInBody(p, token) {\n if (p.openElements.hasInScope($.BODY)) {\n p.insertionMode = InsertionMode.AFTER_BODY;\n endTagAfterBody(p, token);\n }\n}\nfunction addressEndTagInBody(p, token) {\n const tn = token.tagID;\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n }\n}\nfunction formEndTagInBody(p) {\n const inTemplate = p.openElements.tmplCount > 0;\n const { formElement } = p;\n if (!inTemplate) {\n p.formElement = null;\n }\n if ((formElement || inTemplate) && p.openElements.hasInScope($.FORM)) {\n p.openElements.generateImpliedEndTags();\n if (inTemplate) {\n p.openElements.popUntilTagNamePopped($.FORM);\n }\n else if (formElement) {\n p.openElements.remove(formElement);\n }\n }\n}\nfunction pEndTagInBody(p) {\n if (!p.openElements.hasInButtonScope($.P)) {\n p._insertFakeElement(TN.P, $.P);\n }\n p._closePElement();\n}\nfunction liEndTagInBody(p) {\n if (p.openElements.hasInListItemScope($.LI)) {\n p.openElements.generateImpliedEndTagsWithExclusion($.LI);\n p.openElements.popUntilTagNamePopped($.LI);\n }\n}\nfunction ddEndTagInBody(p, token) {\n const tn = token.tagID;\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTagsWithExclusion(tn);\n p.openElements.popUntilTagNamePopped(tn);\n }\n}\nfunction numberedHeaderEndTagInBody(p) {\n if (p.openElements.hasNumberedHeaderInScope()) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilNumberedHeaderPopped();\n }\n}\nfunction appletEndTagInBody(p, token) {\n const tn = token.tagID;\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n p.activeFormattingElements.clearToLastMarker();\n }\n}\nfunction brEndTagInBody(p) {\n p._reconstructActiveFormattingElements();\n p._insertFakeElement(TN.BR, $.BR);\n p.openElements.pop();\n p.framesetOk = false;\n}\nfunction genericEndTagInBody(p, token) {\n const tn = token.tagName;\n const tid = token.tagID;\n for (let i = p.openElements.stackTop; i > 0; i--) {\n const element = p.openElements.items[i];\n const elementId = p.openElements.tagIDs[i];\n // Compare the tag name here, as the tag might not be a known tag with an ID.\n if (tid === elementId && (tid !== $.UNKNOWN || p.treeAdapter.getTagName(element) === tn)) {\n p.openElements.generateImpliedEndTagsWithExclusion(tid);\n if (p.openElements.stackTop >= i)\n p.openElements.shortenToLength(i);\n break;\n }\n if (p._isSpecialElement(element, elementId)) {\n break;\n }\n }\n}\nfunction endTagInBody(p, token) {\n switch (token.tagID) {\n case $.A:\n case $.B:\n case $.I:\n case $.S:\n case $.U:\n case $.EM:\n case $.TT:\n case $.BIG:\n case $.CODE:\n case $.FONT:\n case $.NOBR:\n case $.SMALL:\n case $.STRIKE:\n case $.STRONG: {\n callAdoptionAgency(p, token);\n break;\n }\n case $.P: {\n pEndTagInBody(p);\n break;\n }\n case $.DL:\n case $.UL:\n case $.OL:\n case $.DIR:\n case $.DIV:\n case $.NAV:\n case $.PRE:\n case $.MAIN:\n case $.MENU:\n case $.ASIDE:\n case $.BUTTON:\n case $.CENTER:\n case $.FIGURE:\n case $.FOOTER:\n case $.HEADER:\n case $.HGROUP:\n case $.DIALOG:\n case $.ADDRESS:\n case $.ARTICLE:\n case $.DETAILS:\n case $.SEARCH:\n case $.SECTION:\n case $.SUMMARY:\n case $.LISTING:\n case $.FIELDSET:\n case $.BLOCKQUOTE:\n case $.FIGCAPTION: {\n addressEndTagInBody(p, token);\n break;\n }\n case $.LI: {\n liEndTagInBody(p);\n break;\n }\n case $.DD:\n case $.DT: {\n ddEndTagInBody(p, token);\n break;\n }\n case $.H1:\n case $.H2:\n case $.H3:\n case $.H4:\n case $.H5:\n case $.H6: {\n numberedHeaderEndTagInBody(p);\n break;\n }\n case $.BR: {\n brEndTagInBody(p);\n break;\n }\n case $.BODY: {\n bodyEndTagInBody(p, token);\n break;\n }\n case $.HTML: {\n htmlEndTagInBody(p, token);\n break;\n }\n case $.FORM: {\n formEndTagInBody(p);\n break;\n }\n case $.APPLET:\n case $.OBJECT:\n case $.MARQUEE: {\n appletEndTagInBody(p, token);\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default: {\n genericEndTagInBody(p, token);\n }\n }\n}\nfunction eofInBody(p, token) {\n if (p.tmplInsertionModeStack.length > 0) {\n eofInTemplate(p, token);\n }\n else {\n stopParsing(p, token);\n }\n}\n// The \"text\" insertion mode\n//------------------------------------------------------------------\nfunction endTagInText(p, token) {\n var _a;\n if (token.tagID === $.SCRIPT) {\n (_a = p.scriptHandler) === null || _a === void 0 ? void 0 : _a.call(p, p.openElements.current);\n }\n p.openElements.pop();\n p.insertionMode = p.originalInsertionMode;\n}\nfunction eofInText(p, token) {\n p._err(token, ERR.eofInElementThatCanContainOnlyText);\n p.openElements.pop();\n p.insertionMode = p.originalInsertionMode;\n p.onEof(token);\n}\n// The \"in table\" insertion mode\n//------------------------------------------------------------------\nfunction characterInTable(p, token) {\n if (p.openElements.currentTagId !== undefined && TABLE_STRUCTURE_TAGS.has(p.openElements.currentTagId)) {\n p.pendingCharacterTokens.length = 0;\n p.hasNonWhitespacePendingCharacterToken = false;\n p.originalInsertionMode = p.insertionMode;\n p.insertionMode = InsertionMode.IN_TABLE_TEXT;\n switch (token.type) {\n case TokenType.CHARACTER: {\n characterInTableText(p, token);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n whitespaceCharacterInTableText(p, token);\n break;\n }\n // Ignore null\n }\n }\n else {\n tokenInTable(p, token);\n }\n}\nfunction captionStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p.activeFormattingElements.insertMarker();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_CAPTION;\n}\nfunction colgroupStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n}\nfunction colStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertFakeElement(TN.COLGROUP, $.COLGROUP);\n p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n startTagInColumnGroup(p, token);\n}\nfunction tbodyStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n}\nfunction tdStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertFakeElement(TN.TBODY, $.TBODY);\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n startTagInTableBody(p, token);\n}\nfunction tableStartTagInTable(p, token) {\n if (p.openElements.hasInTableScope($.TABLE)) {\n p.openElements.popUntilTagNamePopped($.TABLE);\n p._resetInsertionMode();\n p._processStartTag(token);\n }\n}\nfunction inputStartTagInTable(p, token) {\n if (isHiddenInput(token)) {\n p._appendElement(token, NS.HTML);\n }\n else {\n tokenInTable(p, token);\n }\n token.ackSelfClosing = true;\n}\nfunction formStartTagInTable(p, token) {\n if (!p.formElement && p.openElements.tmplCount === 0) {\n p._insertElement(token, NS.HTML);\n p.formElement = p.openElements.current;\n p.openElements.pop();\n }\n}\nfunction startTagInTable(p, token) {\n switch (token.tagID) {\n case $.TD:\n case $.TH:\n case $.TR: {\n tdStartTagInTable(p, token);\n break;\n }\n case $.STYLE:\n case $.SCRIPT:\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n case $.COL: {\n colStartTagInTable(p, token);\n break;\n }\n case $.FORM: {\n formStartTagInTable(p, token);\n break;\n }\n case $.TABLE: {\n tableStartTagInTable(p, token);\n break;\n }\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n tbodyStartTagInTable(p, token);\n break;\n }\n case $.INPUT: {\n inputStartTagInTable(p, token);\n break;\n }\n case $.CAPTION: {\n captionStartTagInTable(p, token);\n break;\n }\n case $.COLGROUP: {\n colgroupStartTagInTable(p, token);\n break;\n }\n default: {\n tokenInTable(p, token);\n }\n }\n}\nfunction endTagInTable(p, token) {\n switch (token.tagID) {\n case $.TABLE: {\n if (p.openElements.hasInTableScope($.TABLE)) {\n p.openElements.popUntilTagNamePopped($.TABLE);\n p._resetInsertionMode();\n }\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TBODY:\n case $.TD:\n case $.TFOOT:\n case $.TH:\n case $.THEAD:\n case $.TR: {\n // Ignore token\n break;\n }\n default: {\n tokenInTable(p, token);\n }\n }\n}\nfunction tokenInTable(p, token) {\n const savedFosterParentingState = p.fosterParentingEnabled;\n p.fosterParentingEnabled = true;\n // Process token in `In Body` mode\n modeInBody(p, token);\n p.fosterParentingEnabled = savedFosterParentingState;\n}\n// The \"in table text\" insertion mode\n//------------------------------------------------------------------\nfunction whitespaceCharacterInTableText(p, token) {\n p.pendingCharacterTokens.push(token);\n}\nfunction characterInTableText(p, token) {\n p.pendingCharacterTokens.push(token);\n p.hasNonWhitespacePendingCharacterToken = true;\n}\nfunction tokenInTableText(p, token) {\n let i = 0;\n if (p.hasNonWhitespacePendingCharacterToken) {\n for (; i < p.pendingCharacterTokens.length; i++) {\n tokenInTable(p, p.pendingCharacterTokens[i]);\n }\n }\n else {\n for (; i < p.pendingCharacterTokens.length; i++) {\n p._insertCharacters(p.pendingCharacterTokens[i]);\n }\n }\n p.insertionMode = p.originalInsertionMode;\n p._processToken(token);\n}\n// The \"in caption\" insertion mode\n//------------------------------------------------------------------\nconst TABLE_VOID_ELEMENTS = new Set([$.CAPTION, $.COL, $.COLGROUP, $.TBODY, $.TD, $.TFOOT, $.TH, $.THEAD, $.TR]);\nfunction startTagInCaption(p, token) {\n const tn = token.tagID;\n if (TABLE_VOID_ELEMENTS.has(tn)) {\n if (p.openElements.hasInTableScope($.CAPTION)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.CAPTION);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = InsertionMode.IN_TABLE;\n startTagInTable(p, token);\n }\n }\n else {\n startTagInBody(p, token);\n }\n}\nfunction endTagInCaption(p, token) {\n const tn = token.tagID;\n switch (tn) {\n case $.CAPTION:\n case $.TABLE: {\n if (p.openElements.hasInTableScope($.CAPTION)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.CAPTION);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = InsertionMode.IN_TABLE;\n if (tn === $.TABLE) {\n endTagInTable(p, token);\n }\n }\n break;\n }\n case $.BODY:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TBODY:\n case $.TD:\n case $.TFOOT:\n case $.TH:\n case $.THEAD:\n case $.TR: {\n // Ignore token\n break;\n }\n default: {\n endTagInBody(p, token);\n }\n }\n}\n// The \"in column group\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInColumnGroup(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.COL: {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n default: {\n tokenInColumnGroup(p, token);\n }\n }\n}\nfunction endTagInColumnGroup(p, token) {\n switch (token.tagID) {\n case $.COLGROUP: {\n if (p.openElements.currentTagId === $.COLGROUP) {\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n }\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n case $.COL: {\n // Ignore token\n break;\n }\n default: {\n tokenInColumnGroup(p, token);\n }\n }\n}\nfunction tokenInColumnGroup(p, token) {\n if (p.openElements.currentTagId === $.COLGROUP) {\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n p._processToken(token);\n }\n}\n// The \"in table body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTableBody(p, token) {\n switch (token.tagID) {\n case $.TR: {\n p.openElements.clearBackToTableBodyContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_ROW;\n break;\n }\n case $.TH:\n case $.TD: {\n p.openElements.clearBackToTableBodyContext();\n p._insertFakeElement(TN.TR, $.TR);\n p.insertionMode = InsertionMode.IN_ROW;\n startTagInRow(p, token);\n break;\n }\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n if (p.openElements.hasTableBodyContextInTableScope()) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n startTagInTable(p, token);\n }\n break;\n }\n default: {\n startTagInTable(p, token);\n }\n }\n}\nfunction endTagInTableBody(p, token) {\n const tn = token.tagID;\n switch (token.tagID) {\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n }\n break;\n }\n case $.TABLE: {\n if (p.openElements.hasTableBodyContextInTableScope()) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n endTagInTable(p, token);\n }\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TD:\n case $.TH:\n case $.TR: {\n // Ignore token\n break;\n }\n default: {\n endTagInTable(p, token);\n }\n }\n}\n// The \"in row\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInRow(p, token) {\n switch (token.tagID) {\n case $.TH:\n case $.TD: {\n p.openElements.clearBackToTableRowContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_CELL;\n p.activeFormattingElements.insertMarker();\n break;\n }\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD:\n case $.TR: {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n startTagInTableBody(p, token);\n }\n break;\n }\n default: {\n startTagInTable(p, token);\n }\n }\n}\nfunction endTagInRow(p, token) {\n switch (token.tagID) {\n case $.TR: {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n }\n break;\n }\n case $.TABLE: {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n endTagInTableBody(p, token);\n }\n break;\n }\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n if (p.openElements.hasInTableScope(token.tagID) || p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n endTagInTableBody(p, token);\n }\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TD:\n case $.TH: {\n // Ignore end tag\n break;\n }\n default: {\n endTagInTable(p, token);\n }\n }\n}\n// The \"in cell\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInCell(p, token) {\n const tn = token.tagID;\n if (TABLE_VOID_ELEMENTS.has(tn)) {\n if (p.openElements.hasInTableScope($.TD) || p.openElements.hasInTableScope($.TH)) {\n p._closeTableCell();\n startTagInRow(p, token);\n }\n }\n else {\n startTagInBody(p, token);\n }\n}\nfunction endTagInCell(p, token) {\n const tn = token.tagID;\n switch (tn) {\n case $.TD:\n case $.TH: {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = InsertionMode.IN_ROW;\n }\n break;\n }\n case $.TABLE:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD:\n case $.TR: {\n if (p.openElements.hasInTableScope(tn)) {\n p._closeTableCell();\n endTagInRow(p, token);\n }\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML: {\n // Ignore token\n break;\n }\n default: {\n endTagInBody(p, token);\n }\n }\n}\n// The \"in select\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelect(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.OPTION: {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n p._insertElement(token, NS.HTML);\n break;\n }\n case $.OPTGROUP: {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n if (p.openElements.currentTagId === $.OPTGROUP) {\n p.openElements.pop();\n }\n p._insertElement(token, NS.HTML);\n break;\n }\n case $.HR: {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n if (p.openElements.currentTagId === $.OPTGROUP) {\n p.openElements.pop();\n }\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case $.INPUT:\n case $.KEYGEN:\n case $.TEXTAREA:\n case $.SELECT: {\n if (p.openElements.hasInSelectScope($.SELECT)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n if (token.tagID !== $.SELECT) {\n p._processStartTag(token);\n }\n }\n break;\n }\n case $.SCRIPT:\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction endTagInSelect(p, token) {\n switch (token.tagID) {\n case $.OPTGROUP: {\n if (p.openElements.stackTop > 0 &&\n p.openElements.currentTagId === $.OPTION &&\n p.openElements.tagIDs[p.openElements.stackTop - 1] === $.OPTGROUP) {\n p.openElements.pop();\n }\n if (p.openElements.currentTagId === $.OPTGROUP) {\n p.openElements.pop();\n }\n break;\n }\n case $.OPTION: {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n break;\n }\n case $.SELECT: {\n if (p.openElements.hasInSelectScope($.SELECT)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n }\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\n// The \"in select in table\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelectInTable(p, token) {\n const tn = token.tagID;\n if (tn === $.CAPTION ||\n tn === $.TABLE ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD ||\n tn === $.TR ||\n tn === $.TD ||\n tn === $.TH) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n p._processStartTag(token);\n }\n else {\n startTagInSelect(p, token);\n }\n}\nfunction endTagInSelectInTable(p, token) {\n const tn = token.tagID;\n if (tn === $.CAPTION ||\n tn === $.TABLE ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD ||\n tn === $.TR ||\n tn === $.TD ||\n tn === $.TH) {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n p.onEndTag(token);\n }\n }\n else {\n endTagInSelect(p, token);\n }\n}\n// The \"in template\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTemplate(p, token) {\n switch (token.tagID) {\n // First, handle tags that can start without a mode change\n case $.BASE:\n case $.BASEFONT:\n case $.BGSOUND:\n case $.LINK:\n case $.META:\n case $.NOFRAMES:\n case $.SCRIPT:\n case $.STYLE:\n case $.TEMPLATE:\n case $.TITLE: {\n startTagInHead(p, token);\n break;\n }\n // Re-process the token in the appropriate mode\n case $.CAPTION:\n case $.COLGROUP:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE;\n p.insertionMode = InsertionMode.IN_TABLE;\n startTagInTable(p, token);\n break;\n }\n case $.COL: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_COLUMN_GROUP;\n p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n startTagInColumnGroup(p, token);\n break;\n }\n case $.TR: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE_BODY;\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n startTagInTableBody(p, token);\n break;\n }\n case $.TD:\n case $.TH: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_ROW;\n p.insertionMode = InsertionMode.IN_ROW;\n startTagInRow(p, token);\n break;\n }\n default: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_BODY;\n p.insertionMode = InsertionMode.IN_BODY;\n startTagInBody(p, token);\n }\n }\n}\nfunction endTagInTemplate(p, token) {\n if (token.tagID === $.TEMPLATE) {\n templateEndTagInHead(p, token);\n }\n}\nfunction eofInTemplate(p, token) {\n if (p.openElements.tmplCount > 0) {\n p.openElements.popUntilTagNamePopped($.TEMPLATE);\n p.activeFormattingElements.clearToLastMarker();\n p.tmplInsertionModeStack.shift();\n p._resetInsertionMode();\n p.onEof(token);\n }\n else {\n stopParsing(p, token);\n }\n}\n// The \"after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterBody(p, token) {\n if (token.tagID === $.HTML) {\n startTagInBody(p, token);\n }\n else {\n tokenAfterBody(p, token);\n }\n}\nfunction endTagAfterBody(p, token) {\n var _a;\n if (token.tagID === $.HTML) {\n if (!p.fragmentContext) {\n p.insertionMode = InsertionMode.AFTER_AFTER_BODY;\n }\n //NOTE: <html> is never popped from the stack, so we need to updated\n //the end location explicitly.\n if (p.options.sourceCodeLocationInfo && p.openElements.tagIDs[0] === $.HTML) {\n p._setEndLocation(p.openElements.items[0], token);\n // Update the body element, if it doesn't have an end tag\n const bodyElement = p.openElements.items[1];\n if (bodyElement && !((_a = p.treeAdapter.getNodeSourceCodeLocation(bodyElement)) === null || _a === void 0 ? void 0 : _a.endTag)) {\n p._setEndLocation(bodyElement, token);\n }\n }\n }\n else {\n tokenAfterBody(p, token);\n }\n}\nfunction tokenAfterBody(p, token) {\n p.insertionMode = InsertionMode.IN_BODY;\n modeInBody(p, token);\n}\n// The \"in frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInFrameset(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.FRAMESET: {\n p._insertElement(token, NS.HTML);\n break;\n }\n case $.FRAME: {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case $.NOFRAMES: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction endTagInFrameset(p, token) {\n if (token.tagID === $.FRAMESET && !p.openElements.isRootHtmlElementCurrent()) {\n p.openElements.pop();\n if (!p.fragmentContext && p.openElements.currentTagId !== $.FRAMESET) {\n p.insertionMode = InsertionMode.AFTER_FRAMESET;\n }\n }\n}\n// The \"after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterFrameset(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.NOFRAMES: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction endTagAfterFrameset(p, token) {\n if (token.tagID === $.HTML) {\n p.insertionMode = InsertionMode.AFTER_AFTER_FRAMESET;\n }\n}\n// The \"after after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterBody(p, token) {\n if (token.tagID === $.HTML) {\n startTagInBody(p, token);\n }\n else {\n tokenAfterAfterBody(p, token);\n }\n}\nfunction tokenAfterAfterBody(p, token) {\n p.insertionMode = InsertionMode.IN_BODY;\n modeInBody(p, token);\n}\n// The \"after after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterFrameset(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.NOFRAMES: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\n// The rules for parsing tokens in foreign content\n//------------------------------------------------------------------\nfunction nullCharacterInForeignContent(p, token) {\n token.chars = unicode.REPLACEMENT_CHARACTER;\n p._insertCharacters(token);\n}\nfunction characterInForeignContent(p, token) {\n p._insertCharacters(token);\n p.framesetOk = false;\n}\nfunction popUntilHtmlOrIntegrationPoint(p) {\n while (p.treeAdapter.getNamespaceURI(p.openElements.current) !== NS.HTML &&\n p.openElements.currentTagId !== undefined &&\n !p._isIntegrationPoint(p.openElements.currentTagId, p.openElements.current)) {\n p.openElements.pop();\n }\n}\nfunction startTagInForeignContent(p, token) {\n if (foreignContent.causesExit(token)) {\n popUntilHtmlOrIntegrationPoint(p);\n p._startTagOutsideForeignContent(token);\n }\n else {\n const current = p._getAdjustedCurrentElement();\n const currentNs = p.treeAdapter.getNamespaceURI(current);\n if (currentNs === NS.MATHML) {\n foreignContent.adjustTokenMathMLAttrs(token);\n }\n else if (currentNs === NS.SVG) {\n foreignContent.adjustTokenSVGTagName(token);\n foreignContent.adjustTokenSVGAttrs(token);\n }\n foreignContent.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p._appendElement(token, currentNs);\n }\n else {\n p._insertElement(token, currentNs);\n }\n token.ackSelfClosing = true;\n }\n}\nfunction endTagInForeignContent(p, token) {\n if (token.tagID === $.P || token.tagID === $.BR) {\n popUntilHtmlOrIntegrationPoint(p);\n p._endTagOutsideForeignContent(token);\n return;\n }\n for (let i = p.openElements.stackTop; i > 0; i--) {\n const element = p.openElements.items[i];\n if (p.treeAdapter.getNamespaceURI(element) === NS.HTML) {\n p._endTagOutsideForeignContent(token);\n break;\n }\n const tagName = p.treeAdapter.getTagName(element);\n if (tagName.toLowerCase() === token.tagName) {\n //NOTE: update the token tag name for `_setEndLocation`.\n token.tagName = tagName;\n p.openElements.shortenToLength(i);\n break;\n }\n }\n}\n","import { TAG_NAMES as $, NS, hasUnescapedText } from '../common/html.js';\nimport { escapeText, escapeAttribute } from 'entities/escape';\nimport { defaultTreeAdapter } from '../tree-adapters/default.js';\n// Sets\nconst VOID_ELEMENTS = new Set([\n $.AREA,\n $.BASE,\n $.BASEFONT,\n $.BGSOUND,\n $.BR,\n $.COL,\n $.EMBED,\n $.FRAME,\n $.HR,\n $.IMG,\n $.INPUT,\n $.KEYGEN,\n $.LINK,\n $.META,\n $.PARAM,\n $.SOURCE,\n $.TRACK,\n $.WBR,\n]);\nfunction isVoidElement(node, options) {\n return (options.treeAdapter.isElementNode(node) &&\n options.treeAdapter.getNamespaceURI(node) === NS.HTML &&\n VOID_ELEMENTS.has(options.treeAdapter.getTagName(node)));\n}\nconst defaultOpts = { treeAdapter: defaultTreeAdapter, scriptingEnabled: true };\n/**\n * Serializes an AST node to an HTML string.\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parse('<!DOCTYPE html><html><head></head><body>Hi there!</body></html>');\n *\n * // Serializes a document.\n * const html = parse5.serialize(document);\n *\n * // Serializes the <html> element content.\n * const str = parse5.serialize(document.childNodes[1]);\n *\n * console.log(str); //> '<head></head><body>Hi there!</body>'\n * ```\n *\n * @param node Node to serialize.\n * @param options Serialization options.\n */\nexport function serialize(node, options) {\n const opts = { ...defaultOpts, ...options };\n if (isVoidElement(node, opts)) {\n return '';\n }\n return serializeChildNodes(node, opts);\n}\n/**\n * Serializes an AST element node to an HTML string, including the element node.\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parseFragment('<div>Hello, <b>world</b>!</div>');\n *\n * // Serializes the <div> element.\n * const str = parse5.serializeOuter(document.childNodes[0]);\n *\n * console.log(str); //> '<div>Hello, <b>world</b>!</div>'\n * ```\n *\n * @param node Node to serialize.\n * @param options Serialization options.\n */\nexport function serializeOuter(node, options) {\n const opts = { ...defaultOpts, ...options };\n return serializeNode(node, opts);\n}\nfunction serializeChildNodes(parentNode, options) {\n let html = '';\n // Get container of the child nodes\n const container = options.treeAdapter.isElementNode(parentNode) &&\n options.treeAdapter.getTagName(parentNode) === $.TEMPLATE &&\n options.treeAdapter.getNamespaceURI(parentNode) === NS.HTML\n ? options.treeAdapter.getTemplateContent(parentNode)\n : parentNode;\n const childNodes = options.treeAdapter.getChildNodes(container);\n if (childNodes) {\n for (const currentNode of childNodes) {\n html += serializeNode(currentNode, options);\n }\n }\n return html;\n}\nfunction serializeNode(node, options) {\n if (options.treeAdapter.isElementNode(node)) {\n return serializeElement(node, options);\n }\n if (options.treeAdapter.isTextNode(node)) {\n return serializeTextNode(node, options);\n }\n if (options.treeAdapter.isCommentNode(node)) {\n return serializeCommentNode(node, options);\n }\n if (options.treeAdapter.isDocumentTypeNode(node)) {\n return serializeDocumentTypeNode(node, options);\n }\n // Return an empty string for unknown nodes\n return '';\n}\nfunction serializeElement(node, options) {\n const tn = options.treeAdapter.getTagName(node);\n return `<${tn}${serializeAttributes(node, options)}>${isVoidElement(node, options) ? '' : `${serializeChildNodes(node, options)}</${tn}>`}`;\n}\nfunction serializeAttributes(node, { treeAdapter }) {\n let html = '';\n for (const attr of treeAdapter.getAttrList(node)) {\n html += ' ';\n if (attr.namespace) {\n switch (attr.namespace) {\n case NS.XML: {\n html += `xml:${attr.name}`;\n break;\n }\n case NS.XMLNS: {\n if (attr.name !== 'xmlns') {\n html += 'xmlns:';\n }\n html += attr.name;\n break;\n }\n case NS.XLINK: {\n html += `xlink:${attr.name}`;\n break;\n }\n default: {\n html += `${attr.prefix}:${attr.name}`;\n }\n }\n }\n else {\n html += attr.name;\n }\n html += `=\"${escapeAttribute(attr.value)}\"`;\n }\n return html;\n}\nfunction serializeTextNode(node, options) {\n const { treeAdapter } = options;\n const content = treeAdapter.getTextNodeContent(node);\n const parent = treeAdapter.getParentNode(node);\n const parentTn = parent && treeAdapter.isElementNode(parent) && treeAdapter.getTagName(parent);\n return parentTn &&\n treeAdapter.getNamespaceURI(parent) === NS.HTML &&\n hasUnescapedText(parentTn, options.scriptingEnabled)\n ? content\n : escapeText(content);\n}\nfunction serializeCommentNode(node, { treeAdapter }) {\n return `<!--${treeAdapter.getCommentNodeContent(node)}-->`;\n}\nfunction serializeDocumentTypeNode(node, { treeAdapter }) {\n return `<!DOCTYPE ${treeAdapter.getDocumentTypeNodeName(node)}>`;\n}\n","import { Parser } from './parser/index.js';\nexport { defaultTreeAdapter } from './tree-adapters/default.js';\nexport { /** @internal */ Parser } from './parser/index.js';\nexport { serialize, serializeOuter } from './serializer/index.js';\nexport { ERR as ErrorCodes } from './common/error-codes.js';\n/** @internal */\nexport * as foreignContent from './common/foreign-content.js';\nexport * as html from './common/html.js';\nexport * as Token from './common/token.js';\n/** @internal */\nexport { Tokenizer, TokenizerMode } from './tokenizer/index.js';\n// Shorthands\n/**\n * Parses an HTML string.\n *\n * @param html Input HTML string.\n * @param options Parsing options.\n * @returns Document\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parse('<!DOCTYPE html><html><head></head><body>Hi there!</body></html>');\n *\n * console.log(document.childNodes[1].tagName); //> 'html'\n *```\n */\nexport function parse(html, options) {\n return Parser.parse(html, options);\n}\nexport function parseFragment(fragmentContext, html, options) {\n if (typeof fragmentContext === 'string') {\n options = html;\n html = fragmentContext;\n fragmentContext = null;\n }\n const parser = Parser.getFragmentParser(fragmentContext, options);\n parser.tokenizer.write(html, true);\n return parser.getFragment();\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n */\n\n/**\n * Serialize the positional info of a point, position (start and end points),\n * or node.\n *\n * @param {Node | NodeLike | Point | PointLike | Position | PositionLike | null | undefined} [value]\n * Node, position, or point.\n * @returns {string}\n * Pretty printed positional info of a node (`string`).\n *\n * In the format of a range `ls:cs-le:ce` (when given `node` or `position`)\n * or a point `l:c` (when given `point`), where `l` stands for line, `c` for\n * column, `s` for `start`, and `e` for end.\n * An empty string (`''`) is returned if the given value is neither `node`,\n * `position`, nor `point`.\n */\nexport function stringifyPosition(value) {\n // Nothing.\n if (!value || typeof value !== 'object') {\n return ''\n }\n\n // Node.\n if ('position' in value || 'type' in value) {\n return position(value.position)\n }\n\n // Position.\n if ('start' in value || 'end' in value) {\n return position(value)\n }\n\n // Point.\n if ('line' in value || 'column' in value) {\n return point(value)\n }\n\n // ?\n return ''\n}\n\n/**\n * @param {Point | PointLike | null | undefined} point\n * @returns {string}\n */\nfunction point(point) {\n return index(point && point.line) + ':' + index(point && point.column)\n}\n\n/**\n * @param {Position | PositionLike | null | undefined} pos\n * @returns {string}\n */\nfunction position(pos) {\n return point(pos && pos.start) + '-' + point(pos && pos.end)\n}\n\n/**\n * @param {number | null | undefined} value\n * @returns {number}\n */\nfunction index(value) {\n return value && typeof value === 'number' ? value : 1\n}\n","/**\n * @import {Node, Point, Position} from 'unist'\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n *\n * @typedef Options\n * Configuration.\n * @property {Array<Node> | null | undefined} [ancestors]\n * Stack of (inclusive) ancestor nodes surrounding the message (optional).\n * @property {Error | null | undefined} [cause]\n * Original error cause of the message (optional).\n * @property {Point | Position | null | undefined} [place]\n * Place of message (optional).\n * @property {string | null | undefined} [ruleId]\n * Category of message (optional, example: `'my-rule'`).\n * @property {string | null | undefined} [source]\n * Namespace of who sent the message (optional, example: `'my-package'`).\n */\n\nimport {stringifyPosition} from 'unist-util-stringify-position'\n\n/**\n * Message.\n */\nexport class VFileMessage extends Error {\n /**\n * Create a message for `reason`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {Options | null | undefined} [options]\n * @returns\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | Options | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns\n * Instance of `VFileMessage`.\n */\n // eslint-disable-next-line complexity\n constructor(causeOrReason, optionsOrParentOrPlace, origin) {\n super()\n\n if (typeof optionsOrParentOrPlace === 'string') {\n origin = optionsOrParentOrPlace\n optionsOrParentOrPlace = undefined\n }\n\n /** @type {string} */\n let reason = ''\n /** @type {Options} */\n let options = {}\n let legacyCause = false\n\n if (optionsOrParentOrPlace) {\n // Point.\n if (\n 'line' in optionsOrParentOrPlace &&\n 'column' in optionsOrParentOrPlace\n ) {\n options = {place: optionsOrParentOrPlace}\n }\n // Position.\n else if (\n 'start' in optionsOrParentOrPlace &&\n 'end' in optionsOrParentOrPlace\n ) {\n options = {place: optionsOrParentOrPlace}\n }\n // Node.\n else if ('type' in optionsOrParentOrPlace) {\n options = {\n ancestors: [optionsOrParentOrPlace],\n place: optionsOrParentOrPlace.position\n }\n }\n // Options.\n else {\n options = {...optionsOrParentOrPlace}\n }\n }\n\n if (typeof causeOrReason === 'string') {\n reason = causeOrReason\n }\n // Error.\n else if (!options.cause && causeOrReason) {\n legacyCause = true\n reason = causeOrReason.message\n options.cause = causeOrReason\n }\n\n if (!options.ruleId && !options.source && typeof origin === 'string') {\n const index = origin.indexOf(':')\n\n if (index === -1) {\n options.ruleId = origin\n } else {\n options.source = origin.slice(0, index)\n options.ruleId = origin.slice(index + 1)\n }\n }\n\n if (!options.place && options.ancestors && options.ancestors) {\n const parent = options.ancestors[options.ancestors.length - 1]\n\n if (parent) {\n options.place = parent.position\n }\n }\n\n const start =\n options.place && 'start' in options.place\n ? options.place.start\n : options.place\n\n /**\n * Stack of ancestor nodes surrounding the message.\n *\n * @type {Array<Node> | undefined}\n */\n this.ancestors = options.ancestors || undefined\n\n /**\n * Original error cause of the message.\n *\n * @type {Error | undefined}\n */\n this.cause = options.cause || undefined\n\n /**\n * Starting column of message.\n *\n * @type {number | undefined}\n */\n this.column = start ? start.column : undefined\n\n /**\n * State of problem.\n *\n * * `true` — error, file not usable\n * * `false` — warning, change may be needed\n * * `undefined` — change likely not needed\n *\n * @type {boolean | null | undefined}\n */\n this.fatal = undefined\n\n /**\n * Path of a file (used throughout the `VFile` ecosystem).\n *\n * @type {string | undefined}\n */\n this.file = ''\n\n // Field from `Error`.\n /**\n * Reason for message.\n *\n * @type {string}\n */\n this.message = reason\n\n /**\n * Starting line of error.\n *\n * @type {number | undefined}\n */\n this.line = start ? start.line : undefined\n\n // Field from `Error`.\n /**\n * Serialized positional info of message.\n *\n * On normal errors, this would be something like `ParseError`, buit in\n * `VFile` messages we use this space to show where an error happened.\n */\n this.name = stringifyPosition(options.place) || '1:1'\n\n /**\n * Place of message.\n *\n * @type {Point | Position | undefined}\n */\n this.place = options.place || undefined\n\n /**\n * Reason for message, should use markdown.\n *\n * @type {string}\n */\n this.reason = this.message\n\n /**\n * Category of message (example: `'my-rule'`).\n *\n * @type {string | undefined}\n */\n this.ruleId = options.ruleId || undefined\n\n /**\n * Namespace of message (example: `'my-package'`).\n *\n * @type {string | undefined}\n */\n this.source = options.source || undefined\n\n // Field from `Error`.\n /**\n * Stack of message.\n *\n * This is used by normal errors to show where something happened in\n * programming code, irrelevant for `VFile` messages,\n *\n * @type {string}\n */\n this.stack =\n legacyCause && options.cause && typeof options.cause.stack === 'string'\n ? options.cause.stack\n : ''\n\n // The following fields are “well known”.\n // Not standard.\n // Feel free to add other non-standard fields to your messages.\n\n /**\n * Specify the source value that’s being reported, which is deemed\n * incorrect.\n *\n * @type {string | undefined}\n */\n this.actual = undefined\n\n /**\n * Suggest acceptable values that can be used instead of `actual`.\n *\n * @type {Array<string> | undefined}\n */\n this.expected = undefined\n\n /**\n * Long form description of the message (you should use markdown).\n *\n * @type {string | undefined}\n */\n this.note = undefined\n\n /**\n * Link to docs for the message.\n *\n * > 👉 **Note**: this must be an absolute URL that can be passed as `x`\n * > to `new URL(x)`.\n *\n * @type {string | undefined}\n */\n this.url = undefined\n }\n}\n\nVFileMessage.prototype.file = ''\nVFileMessage.prototype.name = ''\nVFileMessage.prototype.reason = ''\nVFileMessage.prototype.message = ''\nVFileMessage.prototype.stack = ''\nVFileMessage.prototype.column = undefined\nVFileMessage.prototype.line = undefined\nVFileMessage.prototype.ancestors = undefined\nVFileMessage.prototype.cause = undefined\nVFileMessage.prototype.fatal = undefined\nVFileMessage.prototype.place = undefined\nVFileMessage.prototype.ruleId = undefined\nVFileMessage.prototype.source = undefined\n","/**\n * Checks if a value has the shape of a WHATWG URL object.\n *\n * Using a symbol or instanceof would not be able to recognize URL objects\n * coming from other implementations (e.g. in Electron), so instead we are\n * checking some well known properties for a lack of a better test.\n *\n * We use `href` and `protocol` as they are the only properties that are\n * easy to retrieve and calculate due to the lazy nature of the getters.\n *\n * We check for auth attribute to distinguish legacy url instance with\n * WHATWG URL instance.\n *\n * @param {unknown} fileUrlOrPath\n * File path or URL.\n * @returns {fileUrlOrPath is URL}\n * Whether it’s a URL.\n */\n// From: <https://github.com/nodejs/node/blob/6a3403c/lib/internal/url.js#L720>\nexport function isUrl(fileUrlOrPath) {\n return Boolean(\n fileUrlOrPath !== null &&\n typeof fileUrlOrPath === 'object' &&\n 'href' in fileUrlOrPath &&\n fileUrlOrPath.href &&\n 'protocol' in fileUrlOrPath &&\n fileUrlOrPath.protocol &&\n // @ts-expect-error: indexing is fine.\n fileUrlOrPath.auth === undefined\n )\n}\n","/**\n * @import {Node, Point, Position} from 'unist'\n * @import {Options as MessageOptions} from 'vfile-message'\n * @import {Compatible, Data, Map, Options, Value} from 'vfile'\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n */\n\nimport {VFileMessage} from 'vfile-message'\nimport {minpath} from '#minpath'\nimport {minproc} from '#minproc'\nimport {urlToPath, isUrl} from '#minurl'\n\n/**\n * Order of setting (least specific to most), we need this because otherwise\n * `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n * stem can be set.\n */\nconst order = /** @type {const} */ ([\n 'history',\n 'path',\n 'basename',\n 'stem',\n 'extname',\n 'dirname'\n])\n\nexport class VFile {\n /**\n * Create a new virtual file.\n *\n * `options` is treated as:\n *\n * * `string` or `Uint8Array` — `{value: options}`\n * * `URL` — `{path: options}`\n * * `VFile` — shallow copies its data over to the new file\n * * `object` — all fields are shallow copied over to the new file\n *\n * Path related fields are set in the following order (least specific to\n * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n * `dirname`.\n *\n * You cannot set `dirname` or `extname` without setting either `history`,\n * `path`, `basename`, or `stem` too.\n *\n * @param {Compatible | null | undefined} [value]\n * File value.\n * @returns\n * New instance.\n */\n constructor(value) {\n /** @type {Options | VFile} */\n let options\n\n if (!value) {\n options = {}\n } else if (isUrl(value)) {\n options = {path: value}\n } else if (typeof value === 'string' || isUint8Array(value)) {\n options = {value}\n } else {\n options = value\n }\n\n /* eslint-disable no-unused-expressions */\n\n /**\n * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n *\n * @type {string}\n */\n // Prevent calling `cwd` (which could be expensive) if it’s not needed;\n // the empty string will be overridden in the next block.\n this.cwd = 'cwd' in options ? '' : minproc.cwd()\n\n /**\n * Place to store custom info (default: `{}`).\n *\n * It’s OK to store custom data directly on the file but moving it to\n * `data` is recommended.\n *\n * @type {Data}\n */\n this.data = {}\n\n /**\n * List of file paths the file moved between.\n *\n * The first is the original path and the last is the current path.\n *\n * @type {Array<string>}\n */\n this.history = []\n\n /**\n * List of messages associated with the file.\n *\n * @type {Array<VFileMessage>}\n */\n this.messages = []\n\n /**\n * Raw value.\n *\n * @type {Value}\n */\n this.value\n\n // The below are non-standard, they are “well-known”.\n // As in, used in several tools.\n /**\n * Source map.\n *\n * This type is equivalent to the `RawSourceMap` type from the `source-map`\n * module.\n *\n * @type {Map | null | undefined}\n */\n this.map\n\n /**\n * Custom, non-string, compiled, representation.\n *\n * This is used by unified to store non-string results.\n * One example is when turning markdown into React nodes.\n *\n * @type {unknown}\n */\n this.result\n\n /**\n * Whether a file was saved to disk.\n *\n * This is used by vfile reporters.\n *\n * @type {boolean}\n */\n this.stored\n /* eslint-enable no-unused-expressions */\n\n // Set path related properties in the correct order.\n let index = -1\n\n while (++index < order.length) {\n const field = order[index]\n\n // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n // `vfile`s too.\n if (\n field in options &&\n options[field] !== undefined &&\n options[field] !== null\n ) {\n // @ts-expect-error: TS doesn’t understand basic reality.\n this[field] = field === 'history' ? [...options[field]] : options[field]\n }\n }\n\n /** @type {string} */\n let field\n\n // Set non-path related properties.\n for (field in options) {\n // @ts-expect-error: fine to set other things.\n if (!order.includes(field)) {\n // @ts-expect-error: fine to set other things.\n this[field] = options[field]\n }\n }\n }\n\n /**\n * Get the basename (including extname) (example: `'index.min.js'`).\n *\n * @returns {string | undefined}\n * Basename.\n */\n get basename() {\n return typeof this.path === 'string'\n ? minpath.basename(this.path)\n : undefined\n }\n\n /**\n * Set basename (including extname) (`'index.min.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} basename\n * Basename.\n * @returns {undefined}\n * Nothing.\n */\n set basename(basename) {\n assertNonEmpty(basename, 'basename')\n assertPart(basename, 'basename')\n this.path = minpath.join(this.dirname || '', basename)\n }\n\n /**\n * Get the parent path (example: `'~'`).\n *\n * @returns {string | undefined}\n * Dirname.\n */\n get dirname() {\n return typeof this.path === 'string'\n ? minpath.dirname(this.path)\n : undefined\n }\n\n /**\n * Set the parent path (example: `'~'`).\n *\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} dirname\n * Dirname.\n * @returns {undefined}\n * Nothing.\n */\n set dirname(dirname) {\n assertPath(this.basename, 'dirname')\n this.path = minpath.join(dirname || '', this.basename)\n }\n\n /**\n * Get the extname (including dot) (example: `'.js'`).\n *\n * @returns {string | undefined}\n * Extname.\n */\n get extname() {\n return typeof this.path === 'string'\n ? minpath.extname(this.path)\n : undefined\n }\n\n /**\n * Set the extname (including dot) (example: `'.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} extname\n * Extname.\n * @returns {undefined}\n * Nothing.\n */\n set extname(extname) {\n assertPart(extname, 'extname')\n assertPath(this.dirname, 'extname')\n\n if (extname) {\n if (extname.codePointAt(0) !== 46 /* `.` */) {\n throw new Error('`extname` must start with `.`')\n }\n\n if (extname.includes('.', 1)) {\n throw new Error('`extname` cannot contain multiple dots')\n }\n }\n\n this.path = minpath.join(this.dirname, this.stem + (extname || ''))\n }\n\n /**\n * Get the full path (example: `'~/index.min.js'`).\n *\n * @returns {string}\n * Path.\n */\n get path() {\n return this.history[this.history.length - 1]\n }\n\n /**\n * Set the full path (example: `'~/index.min.js'`).\n *\n * Cannot be nullified.\n * You can set a file URL (a `URL` object with a `file:` protocol) which will\n * be turned into a path with `url.fileURLToPath`.\n *\n * @param {URL | string} path\n * Path.\n * @returns {undefined}\n * Nothing.\n */\n set path(path) {\n if (isUrl(path)) {\n path = urlToPath(path)\n }\n\n assertNonEmpty(path, 'path')\n\n if (this.path !== path) {\n this.history.push(path)\n }\n }\n\n /**\n * Get the stem (basename w/o extname) (example: `'index.min'`).\n *\n * @returns {string | undefined}\n * Stem.\n */\n get stem() {\n return typeof this.path === 'string'\n ? minpath.basename(this.path, this.extname)\n : undefined\n }\n\n /**\n * Set the stem (basename w/o extname) (example: `'index.min'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} stem\n * Stem.\n * @returns {undefined}\n * Nothing.\n */\n set stem(stem) {\n assertNonEmpty(stem, 'stem')\n assertPart(stem, 'stem')\n this.path = minpath.join(this.dirname || '', stem + (this.extname || ''))\n }\n\n // Normal prototypal methods.\n /**\n * Create a fatal message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `true` (error; file not usable)\n * and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {never}\n * Never.\n * @throws {VFileMessage}\n * Message.\n */\n fail(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = true\n\n throw message\n }\n\n /**\n * Create an info message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `undefined` (info; change\n * likely not needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n info(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = undefined\n\n return message\n }\n\n /**\n * Create a message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `false` (warning; change may be\n * needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n message(causeOrReason, optionsOrParentOrPlace, origin) {\n const message = new VFileMessage(\n // @ts-expect-error: the overloads are fine.\n causeOrReason,\n optionsOrParentOrPlace,\n origin\n )\n\n if (this.path) {\n message.name = this.path + ':' + message.name\n message.file = this.path\n }\n\n message.fatal = false\n\n this.messages.push(message)\n\n return message\n }\n\n /**\n * Serialize the file.\n *\n * > **Note**: which encodings are supported depends on the engine.\n * > For info on Node.js, see:\n * > <https://nodejs.org/api/util.html#whatwg-supported-encodings>.\n *\n * @param {string | null | undefined} [encoding='utf8']\n * Character encoding to understand `value` as when it’s a `Uint8Array`\n * (default: `'utf-8'`).\n * @returns {string}\n * Serialized file.\n */\n toString(encoding) {\n if (this.value === undefined) {\n return ''\n }\n\n if (typeof this.value === 'string') {\n return this.value\n }\n\n const decoder = new TextDecoder(encoding || undefined)\n return decoder.decode(this.value)\n }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string | null | undefined} part\n * File path part.\n * @param {string} name\n * Part name.\n * @returns {undefined}\n * Nothing.\n */\nfunction assertPart(part, name) {\n if (part && part.includes(minpath.sep)) {\n throw new Error(\n '`' + name + '` cannot be a path: did not expect `' + minpath.sep + '`'\n )\n }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string | undefined} part\n * Thing.\n * @param {string} name\n * Part name.\n * @returns {asserts part is string}\n * Nothing.\n */\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty')\n }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string | undefined} path\n * Path.\n * @param {string} name\n * Dependency name.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too')\n }\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n","/**\n * @typedef ErrorInfo\n * Info on a `parse5` error.\n * @property {string} reason\n * Reason of error.\n * @property {string} description\n * More info on error.\n * @property {false} [url]\n * Turn off if this is not documented in the html5 spec (optional).\n */\n\nexport const errors = {\n /** @type {ErrorInfo} */\n abandonedHeadElementChild: {\n reason: 'Unexpected metadata element after head',\n description:\n 'Unexpected element after head. Expected the element before `</head>`',\n url: false\n },\n /** @type {ErrorInfo} */\n abruptClosingOfEmptyComment: {\n reason: 'Unexpected abruptly closed empty comment',\n description: 'Unexpected `>` or `->`. Expected `-->` to close comments'\n },\n /** @type {ErrorInfo} */\n abruptDoctypePublicIdentifier: {\n reason: 'Unexpected abruptly closed public identifier',\n description:\n 'Unexpected `>`. Expected a closing `\"` or `\\'` after the public identifier'\n },\n /** @type {ErrorInfo} */\n abruptDoctypeSystemIdentifier: {\n reason: 'Unexpected abruptly closed system identifier',\n description:\n 'Unexpected `>`. Expected a closing `\"` or `\\'` after the identifier identifier'\n },\n /** @type {ErrorInfo} */\n absenceOfDigitsInNumericCharacterReference: {\n reason: 'Unexpected non-digit at start of numeric character reference',\n description:\n 'Unexpected `%c`. Expected `[0-9]` for decimal references or `[0-9a-fA-F]` for hexadecimal references'\n },\n /** @type {ErrorInfo} */\n cdataInHtmlContent: {\n reason: 'Unexpected CDATA section in HTML',\n description:\n 'Unexpected `<![CDATA[` in HTML. Remove it, use a comment, or encode special characters instead'\n },\n /** @type {ErrorInfo} */\n characterReferenceOutsideUnicodeRange: {\n reason: 'Unexpected too big numeric character reference',\n description:\n 'Unexpectedly high character reference. Expected character references to be at most hexadecimal 10ffff (or decimal 1114111)'\n },\n /** @type {ErrorInfo} */\n closingOfElementWithOpenChildElements: {\n reason: 'Unexpected closing tag with open child elements',\n description:\n 'Unexpectedly closing tag. Expected other tags to be closed first',\n url: false\n },\n /** @type {ErrorInfo} */\n controlCharacterInInputStream: {\n reason: 'Unexpected control character',\n description:\n 'Unexpected control character `%x`. Expected a non-control code point, 0x00, or ASCII whitespace'\n },\n /** @type {ErrorInfo} */\n controlCharacterReference: {\n reason: 'Unexpected control character reference',\n description:\n 'Unexpectedly control character in reference. Expected a non-control code point, 0x00, or ASCII whitespace'\n },\n /** @type {ErrorInfo} */\n disallowedContentInNoscriptInHead: {\n reason: 'Disallowed content inside `<noscript>` in `<head>`',\n description:\n 'Unexpected text character `%c`. Only use text in `<noscript>`s in `<body>`',\n url: false\n },\n /** @type {ErrorInfo} */\n duplicateAttribute: {\n reason: 'Unexpected duplicate attribute',\n description:\n 'Unexpectedly double attribute. Expected attributes to occur only once'\n },\n /** @type {ErrorInfo} */\n endTagWithAttributes: {\n reason: 'Unexpected attribute on closing tag',\n description: 'Unexpected attribute. Expected `>` instead'\n },\n /** @type {ErrorInfo} */\n endTagWithTrailingSolidus: {\n reason: 'Unexpected slash at end of closing tag',\n description: 'Unexpected `%c-1`. Expected `>` instead'\n },\n /** @type {ErrorInfo} */\n endTagWithoutMatchingOpenElement: {\n reason: 'Unexpected unopened end tag',\n description: 'Unexpected end tag. Expected no end tag or another end tag',\n url: false\n },\n /** @type {ErrorInfo} */\n eofBeforeTagName: {\n reason: 'Unexpected end of file',\n description: 'Unexpected end of file. Expected tag name instead'\n },\n /** @type {ErrorInfo} */\n eofInCdata: {\n reason: 'Unexpected end of file in CDATA',\n description: 'Unexpected end of file. Expected `]]>` to close the CDATA'\n },\n /** @type {ErrorInfo} */\n eofInComment: {\n reason: 'Unexpected end of file in comment',\n description: 'Unexpected end of file. Expected `-->` to close the comment'\n },\n /** @type {ErrorInfo} */\n eofInDoctype: {\n reason: 'Unexpected end of file in doctype',\n description:\n 'Unexpected end of file. Expected a valid doctype (such as `<!doctype html>`)'\n },\n /** @type {ErrorInfo} */\n eofInElementThatCanContainOnlyText: {\n reason: 'Unexpected end of file in element that can only contain text',\n description: 'Unexpected end of file. Expected text or a closing tag',\n url: false\n },\n /** @type {ErrorInfo} */\n eofInScriptHtmlCommentLikeText: {\n reason: 'Unexpected end of file in comment inside script',\n description: 'Unexpected end of file. Expected `-->` to close the comment'\n },\n /** @type {ErrorInfo} */\n eofInTag: {\n reason: 'Unexpected end of file in tag',\n description: 'Unexpected end of file. Expected `>` to close the tag'\n },\n /** @type {ErrorInfo} */\n incorrectlyClosedComment: {\n reason: 'Incorrectly closed comment',\n description: 'Unexpected `%c-1`. Expected `-->` to close the comment'\n },\n /** @type {ErrorInfo} */\n incorrectlyOpenedComment: {\n reason: 'Incorrectly opened comment',\n description: 'Unexpected `%c`. Expected `<!--` to open the comment'\n },\n /** @type {ErrorInfo} */\n invalidCharacterSequenceAfterDoctypeName: {\n reason: 'Invalid sequence after doctype name',\n description: 'Unexpected sequence at `%c`. Expected `public` or `system`'\n },\n /** @type {ErrorInfo} */\n invalidFirstCharacterOfTagName: {\n reason: 'Invalid first character in tag name',\n description: 'Unexpected `%c`. Expected an ASCII letter instead'\n },\n /** @type {ErrorInfo} */\n misplacedDoctype: {\n reason: 'Misplaced doctype',\n description: 'Unexpected doctype. Expected doctype before head',\n url: false\n },\n /** @type {ErrorInfo} */\n misplacedStartTagForHeadElement: {\n reason: 'Misplaced `<head>` start tag',\n description:\n 'Unexpected start tag `<head>`. Expected `<head>` directly after doctype',\n url: false\n },\n /** @type {ErrorInfo} */\n missingAttributeValue: {\n reason: 'Missing attribute value',\n description:\n 'Unexpected `%c-1`. Expected an attribute value or no `%c-1` instead'\n },\n /** @type {ErrorInfo} */\n missingDoctype: {\n reason: 'Missing doctype before other content',\n description: 'Expected a `<!doctype html>` before anything else',\n url: false\n },\n /** @type {ErrorInfo} */\n missingDoctypeName: {\n reason: 'Missing doctype name',\n description: 'Unexpected doctype end at `%c`. Expected `html` instead'\n },\n /** @type {ErrorInfo} */\n missingDoctypePublicIdentifier: {\n reason: 'Missing public identifier in doctype',\n description: 'Unexpected `%c`. Expected identifier for `public` instead'\n },\n /** @type {ErrorInfo} */\n missingDoctypeSystemIdentifier: {\n reason: 'Missing system identifier in doctype',\n description:\n 'Unexpected `%c`. Expected identifier for `system` instead (suggested: `\"about:legacy-compat\"`)'\n },\n /** @type {ErrorInfo} */\n missingEndTagName: {\n reason: 'Missing name in end tag',\n description: 'Unexpected `%c`. Expected an ASCII letter instead'\n },\n /** @type {ErrorInfo} */\n missingQuoteBeforeDoctypePublicIdentifier: {\n reason: 'Missing quote before public identifier in doctype',\n description: 'Unexpected `%c`. Expected `\"` or `\\'` instead'\n },\n /** @type {ErrorInfo} */\n missingQuoteBeforeDoctypeSystemIdentifier: {\n reason: 'Missing quote before system identifier in doctype',\n description: 'Unexpected `%c`. Expected `\"` or `\\'` instead'\n },\n /** @type {ErrorInfo} */\n missingSemicolonAfterCharacterReference: {\n reason: 'Missing semicolon after character reference',\n description: 'Unexpected `%c`. Expected `;` instead'\n },\n /** @type {ErrorInfo} */\n missingWhitespaceAfterDoctypePublicKeyword: {\n reason: 'Missing whitespace after public identifier in doctype',\n description: 'Unexpected `%c`. Expected ASCII whitespace instead'\n },\n /** @type {ErrorInfo} */\n missingWhitespaceAfterDoctypeSystemKeyword: {\n reason: 'Missing whitespace after system identifier in doctype',\n description: 'Unexpected `%c`. Expected ASCII whitespace instead'\n },\n /** @type {ErrorInfo} */\n missingWhitespaceBeforeDoctypeName: {\n reason: 'Missing whitespace before doctype name',\n description: 'Unexpected `%c`. Expected ASCII whitespace instead'\n },\n /** @type {ErrorInfo} */\n missingWhitespaceBetweenAttributes: {\n reason: 'Missing whitespace between attributes',\n description: 'Unexpected `%c`. Expected ASCII whitespace instead'\n },\n /** @type {ErrorInfo} */\n missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers: {\n reason:\n 'Missing whitespace between public and system identifiers in doctype',\n description: 'Unexpected `%c`. Expected ASCII whitespace instead'\n },\n /** @type {ErrorInfo} */\n nestedComment: {\n reason: 'Unexpected nested comment',\n description: 'Unexpected `<!--`. Expected `-->`'\n },\n /** @type {ErrorInfo} */\n nestedNoscriptInHead: {\n reason: 'Unexpected nested `<noscript>` in `<head>`',\n description:\n 'Unexpected `<noscript>`. Expected a closing tag or a meta element',\n url: false\n },\n /** @type {ErrorInfo} */\n nonConformingDoctype: {\n reason: 'Unexpected non-conforming doctype declaration',\n description:\n 'Expected `<!doctype html>` or `<!doctype html system \"about:legacy-compat\">`',\n url: false\n },\n /** @type {ErrorInfo} */\n nonVoidHtmlElementStartTagWithTrailingSolidus: {\n reason: 'Unexpected trailing slash on start tag of non-void element',\n description: 'Unexpected `/`. Expected `>` instead'\n },\n /** @type {ErrorInfo} */\n noncharacterCharacterReference: {\n reason:\n 'Unexpected noncharacter code point referenced by character reference',\n description: 'Unexpected code point. Do not use noncharacters in HTML'\n },\n /** @type {ErrorInfo} */\n noncharacterInInputStream: {\n reason: 'Unexpected noncharacter character',\n description: 'Unexpected code point `%x`. Do not use noncharacters in HTML'\n },\n /** @type {ErrorInfo} */\n nullCharacterReference: {\n reason: 'Unexpected NULL character referenced by character reference',\n description: 'Unexpected code point. Do not use NULL characters in HTML'\n },\n /** @type {ErrorInfo} */\n openElementsLeftAfterEof: {\n reason: 'Unexpected end of file',\n description: 'Unexpected end of file. Expected closing tag instead',\n url: false\n },\n /** @type {ErrorInfo} */\n surrogateCharacterReference: {\n reason: 'Unexpected surrogate character referenced by character reference',\n description:\n 'Unexpected code point. Do not use lone surrogate characters in HTML'\n },\n /** @type {ErrorInfo} */\n surrogateInInputStream: {\n reason: 'Unexpected surrogate character',\n description:\n 'Unexpected code point `%x`. Do not use lone surrogate characters in HTML'\n },\n /** @type {ErrorInfo} */\n unexpectedCharacterAfterDoctypeSystemIdentifier: {\n reason: 'Invalid character after system identifier in doctype',\n description: 'Unexpected character at `%c`. Expected `>`'\n },\n /** @type {ErrorInfo} */\n unexpectedCharacterInAttributeName: {\n reason: 'Unexpected character in attribute name',\n description:\n 'Unexpected `%c`. Expected whitespace, `/`, `>`, `=`, or probably an ASCII letter'\n },\n /** @type {ErrorInfo} */\n unexpectedCharacterInUnquotedAttributeValue: {\n reason: 'Unexpected character in unquoted attribute value',\n description: 'Unexpected `%c`. Quote the attribute value to include it'\n },\n /** @type {ErrorInfo} */\n unexpectedEqualsSignBeforeAttributeName: {\n reason: 'Unexpected equals sign before attribute name',\n description: 'Unexpected `%c`. Add an attribute name before it'\n },\n /** @type {ErrorInfo} */\n unexpectedNullCharacter: {\n reason: 'Unexpected NULL character',\n description:\n 'Unexpected code point `%x`. Do not use NULL characters in HTML'\n },\n /** @type {ErrorInfo} */\n unexpectedQuestionMarkInsteadOfTagName: {\n reason: 'Unexpected question mark instead of tag name',\n description: 'Unexpected `%c`. Expected an ASCII letter instead'\n },\n /** @type {ErrorInfo} */\n unexpectedSolidusInTag: {\n reason: 'Unexpected slash in tag',\n description:\n 'Unexpected `%c-1`. Expected it followed by `>` or in a quoted attribute value'\n },\n /** @type {ErrorInfo} */\n unknownNamedCharacterReference: {\n reason: 'Unexpected unknown named character reference',\n description:\n 'Unexpected character reference. Expected known named character references'\n }\n}\n","/**\n * @import {Root} from 'hast'\n * @import {ParserError} from 'parse5'\n * @import {Value} from 'vfile'\n * @import {ErrorCode, Options} from './types.js'\n */\n\nimport {ok as assert} from 'devlop'\nimport {fromParse5} from 'hast-util-from-parse5'\nimport {parse, parseFragment} from 'parse5'\nimport {VFile} from 'vfile'\nimport {VFileMessage} from 'vfile-message'\nimport {errors} from './errors.js'\n\nconst base = 'https://html.spec.whatwg.org/multipage/parsing.html#parse-error-'\n\nconst dashToCamelRe = /-[a-z]/g\nconst formatCRe = /%c(?:([-+])(\\d+))?/g\nconst formatXRe = /%x/g\n\nconst fatalities = {2: true, 1: false, 0: null}\n\n/** @type {Readonly<Options>} */\nconst emptyOptions = {}\n\n/**\n * Turn serialized HTML into a hast tree.\n *\n * @param {VFile | Value} value\n * Serialized HTML to parse.\n * @param {Readonly<Options> | null | undefined} [options]\n * Configuration (optional).\n * @returns {Root}\n * Tree.\n */\nexport function fromHtml(value, options) {\n const settings = options || emptyOptions\n const onerror = settings.onerror\n const file = value instanceof VFile ? value : new VFile(value)\n const parseFunction = settings.fragment ? parseFragment : parse\n const document = String(file)\n const p5Document = parseFunction(document, {\n sourceCodeLocationInfo: true,\n // Note `parse5` types currently do not allow `undefined`.\n onParseError: settings.onerror ? internalOnerror : null,\n scriptingEnabled: false\n })\n\n // `parse5` returns document which are always mapped to roots.\n return /** @type {Root} */ (\n fromParse5(p5Document, {\n file,\n space: settings.space,\n verbose: settings.verbose\n })\n )\n\n /**\n * Handle a parse error.\n *\n * @param {ParserError} error\n * Parse5 error.\n * @returns {undefined}\n * Nothing.\n */\n function internalOnerror(error) {\n const code = error.code\n const name = camelcase(code)\n const setting = settings[name]\n const config = setting === null || setting === undefined ? true : setting\n const level = typeof config === 'number' ? config : config ? 1 : 0\n\n if (level) {\n const info = errors[name]\n assert(info, 'expected known error from `parse5`')\n\n const message = new VFileMessage(format(info.reason), {\n place: {\n start: {\n line: error.startLine,\n column: error.startCol,\n offset: error.startOffset\n },\n end: {\n line: error.endLine,\n column: error.endCol,\n offset: error.endOffset\n }\n },\n ruleId: code,\n source: 'hast-util-from-html'\n })\n\n if (file.path) {\n message.file = file.path\n message.name = file.path + ':' + message.name\n }\n\n message.fatal = fatalities[level]\n message.note = format(info.description)\n message.url = info.url === false ? undefined : base + code\n\n assert(onerror, '`internalOnerror` is not passed if `onerror` is not set')\n onerror(message)\n }\n\n /**\n * Format a human readable string about an error.\n *\n * @param {string} value\n * Value to format.\n * @returns {string}\n * Formatted.\n */\n function format(value) {\n return value.replace(formatCRe, formatC).replace(formatXRe, formatX)\n\n /**\n * Format the character.\n *\n * @param {string} _\n * Match.\n * @param {string} $1\n * Sign (`-` or `+`, optional).\n * @param {string} $2\n * Offset.\n * @returns {string}\n * Formatted.\n */\n function formatC(_, $1, $2) {\n const offset =\n ($2 ? Number.parseInt($2, 10) : 0) * ($1 === '-' ? -1 : 1)\n const char = document.charAt(error.startOffset + offset)\n return visualizeCharacter(char)\n }\n\n /**\n * Format the character code.\n *\n * @returns {string}\n * Formatted.\n */\n function formatX() {\n return visualizeCharacterCode(document.charCodeAt(error.startOffset))\n }\n }\n }\n}\n\n/**\n * @param {string} value\n * Error code in dash case.\n * @returns {ErrorCode}\n * Error code in camelcase.\n */\nfunction camelcase(value) {\n // This should match an error code.\n return /** @type {ErrorCode} */ (value.replace(dashToCamelRe, dashToCamel))\n}\n\n/**\n * @param {string} $0\n * Match.\n * @returns {string}\n * Camelcased.\n */\nfunction dashToCamel($0) {\n return $0.charAt(1).toUpperCase()\n}\n\n/**\n * @param {string} char\n * Character.\n * @returns {string}\n * Formatted.\n */\nfunction visualizeCharacter(char) {\n return char === '`' ? '` ` `' : char\n}\n\n/**\n * @param {number} charCode\n * Character code.\n * @returns {string}\n * Formatted.\n */\nfunction visualizeCharacterCode(charCode) {\n return '0x' + charCode.toString(16).toUpperCase()\n}\n","import { parse } from \"yaml\";\nimport type { BasesData, BasesView, SortEntry } from \"./types\";\n\nfunction extractBaseBlock(raw: string): string | null {\n const lines = raw.split(\"\\n\");\n let start = -1;\n for (let i = 0; i < lines.length; i += 1) {\n const trimmed = (lines[i] ?? \"\").trim();\n if (!trimmed.startsWith(\"```\")) continue;\n const lang = trimmed.slice(3).trim();\n if (lang === \"base\") {\n start = i + 1;\n break;\n }\n }\n\n if (start === -1) return null;\n\n let end = -1;\n for (let i = start; i < lines.length; i += 1) {\n if ((lines[i] ?? \"\").trim().startsWith(\"```\")) {\n end = i;\n break;\n }\n }\n\n if (end === -1) return null;\n return lines.slice(start, end).join(\"\\n\");\n}\n\nfunction normalizeSortEntries(sort: unknown): SortEntry[] | undefined {\n if (!Array.isArray(sort)) return undefined;\n const result: SortEntry[] = [];\n for (const entry of sort) {\n if (!entry || typeof entry !== \"object\" || Array.isArray(entry)) continue;\n const rec = entry as Record<string, unknown>;\n // Obsidian uses \"column\" but our SortEntry expects \"property\"\n const property =\n typeof rec.property === \"string\"\n ? rec.property\n : typeof rec.column === \"string\"\n ? rec.column\n : undefined;\n if (!property) continue;\n const direction = rec.direction === \"DESC\" ? (\"DESC\" as const) : (\"ASC\" as const);\n result.push({ property, direction });\n }\n return result;\n}\n\nfunction normalizeViews(views: unknown): BasesView[] | null | undefined {\n if (views === undefined) return undefined;\n if (!Array.isArray(views)) return null;\n\n const normalized = views\n .map((view) => {\n if (!view || typeof view !== \"object\" || Array.isArray(view)) return null;\n const record = view as Record<string, unknown>;\n if (typeof record.type !== \"string\") return null;\n const sort = normalizeSortEntries(record.sort);\n if (sort !== undefined) {\n record.sort = sort;\n }\n return record as BasesView;\n })\n .filter((view): view is BasesView => view !== null);\n\n return normalized;\n}\n\nexport function parseBasesData(raw: string): BasesData | null {\n const block = extractBaseBlock(raw);\n const content = block ?? raw;\n\n let data: unknown;\n try {\n data = parse(content);\n } catch {\n return null;\n }\n\n if (!data || typeof data !== \"object\" || Array.isArray(data)) {\n return null;\n }\n\n const record = data as Record<string, unknown>;\n const views = normalizeViews(record.views);\n if (views === null) return null;\n\n return {\n ...(record as BasesData),\n views,\n };\n}\n","import type {\n QuartzPageTypePlugin,\n PageMatcher,\n FullSlug,\n FilePath,\n VirtualPage,\n TreeTransform,\n QuartzComponentProps,\n} from \"@quartz-community/types\";\nimport type { Root as HtmlRoot, Element, ElementContent } from \"hast\";\nimport { visit } from \"unist-util-visit\";\nimport { render } from \"preact-render-to-string\";\nimport { h, Fragment } from \"preact\";\nimport { fromHtml } from \"hast-util-from-html\";\nimport { readFileSync } from \"fs\";\nimport { join } from \"path\";\nimport { slugifyFilePath } from \"@quartz-community/utils\";\nimport type { SimpleSlug } from \"@quartz-community/utils\";\nimport { parseBasesData } from \"./parser\";\nimport { resolveBasesEntries } from \"./resolver\";\nimport BasesBody from \"./components/BasesBody\";\nimport type { BasesPageOptions, BasesData } from \"./types\";\nimport type { EvalContext } from \"./compiler\";\nimport { registerBuiltinViews } from \"./components/views\";\nimport { registerCustomViews, viewRegistry } from \"./registry\";\nimport { i18n } from \"./i18n\";\nimport { ViewSelector } from \"./components/ViewSelector\";\n\nconst basesMatcher: PageMatcher = ({ fileData }) => {\n return \"basesData\" in fileData;\n};\n\nexport const BasesPage: QuartzPageTypePlugin<BasesPageOptions> = (opts) => ({\n name: \"BasesPage\",\n priority: 20,\n fileExtensions: [\".base\"],\n match: basesMatcher,\n generate({ content, ctx }) {\n const baseFiles = ctx.allFiles.filter((fp) => fp.endsWith(\".base\"));\n const allFileData = content.map((c) => c[1].data);\n const virtualPages: VirtualPage[] = [];\n\n for (const filePath of baseFiles) {\n const fullPath = join(ctx.argv.directory, filePath);\n let raw: string;\n try {\n raw = readFileSync(fullPath, \"utf-8\");\n } catch {\n continue;\n }\n\n const basesData = parseBasesData(raw);\n if (!basesData) continue;\n\n const slug = slugifyFilePath(filePath as unknown as FilePath) as unknown as FullSlug;\n const fileWithoutExt = filePath.replace(/\\.base$/, \"\");\n const baseName = fileWithoutExt.split(\"/\").pop() ?? \"Base\";\n\n const lastSlash = filePath.lastIndexOf(\"/\");\n const folder = lastSlash >= 0 ? filePath.slice(0, lastSlash) : \"\";\n const dotIndex = filePath.lastIndexOf(\".\");\n const ext = dotIndex >= 0 ? filePath.slice(dotIndex + 1) : \"\";\n const basesSelfContext = {\n file: {\n name: baseName,\n path: filePath,\n folder,\n ext,\n },\n };\n\n virtualPages.push({\n slug,\n title: baseName,\n data: {\n frontmatter: { title: baseName, tags: [] },\n links: resolveBasesEntries(\n basesData,\n allFileData,\n undefined,\n basesSelfContext,\n ).entries.map((e) => e.slug as SimpleSlug),\n basesData,\n basesOptions: opts,\n basesSelfContext,\n },\n });\n }\n\n return virtualPages;\n },\n layout: \"bases\",\n body: BasesBody,\n treeTransforms(_ctx) {\n return [createBasesCodeblockTransform(opts)];\n },\n});\n\n/**\n * Creates a tree transform that resolves `data-qz-bases-codeblock` placeholder\n * divs at render time, replacing them with fully rendered Bases views.\n *\n * This runs after transclusion in `renderPage()`, when `allFiles` is available.\n */\nfunction createBasesCodeblockTransform(opts: BasesPageOptions | undefined): TreeTransform {\n let builtinViewsRegistered = false;\n\n return (root: HtmlRoot, _slug: FullSlug, componentData: QuartzComponentProps) => {\n const fileData = componentData.fileData as Record<string, unknown>;\n const basesBlocks = fileData.basesBlocks as BasesData[] | undefined;\n if (!basesBlocks || basesBlocks.length === 0) return;\n\n // Ensure built-in views are registered\n if (!builtinViewsRegistered) {\n registerBuiltinViews();\n builtinViewsRegistered = true;\n }\n if (opts?.customViews) {\n registerCustomViews(opts.customViews);\n }\n\n const locale = componentData.cfg?.locale ?? \"en-US\";\n const localeStrings = i18n(locale).components.bases;\n const allFiles = componentData.allFiles;\n const slug = (componentData.fileData.slug as string) ?? \"\";\n const allSlugs = ((componentData.ctx as Record<string, unknown>)?.allSlugs as string[]) ?? [];\n const linkResolution = opts?.linkResolution ?? \"shortest\";\n\n visit(root, \"element\", (node: Element, index, parent) => {\n if (!parent || index === undefined) return;\n const blockIndexStr = node.properties?.[\"dataQzBasesCodeblock\"] as string | undefined;\n if (blockIndexStr === undefined) return;\n\n const blockIndex = Number(blockIndexStr);\n const basesData = basesBlocks[blockIndex];\n if (!basesData) return;\n\n const viewName = node.properties?.[\"dataQzBasesView\"] as string | undefined;\n\n const fd = componentData.fileData as Record<string, unknown>;\n const selfPath = (fd.relativePath ?? fd.filePath ?? slug) as string;\n const selfName =\n selfPath\n .split(\"/\")\n .pop()\n ?.replace(/\\.[^.]+$/, \"\") ?? \"\";\n const selfLastSlash = selfPath.lastIndexOf(\"/\");\n const selfContext = {\n file: {\n name: selfName,\n path: selfPath,\n folder: selfLastSlash >= 0 ? selfPath.slice(0, selfLastSlash) : \"\",\n ext: selfPath.slice(selfPath.lastIndexOf(\".\") + 1),\n },\n };\n\n const baseSlugs = new Set(allSlugs.filter((s) => s.endsWith(\".base\")));\n const baseAliases = new Set([...baseSlugs].map((s) => s.replace(/\\.base$/, \"\")));\n const contentSlugs = allSlugs.filter((s) => !baseSlugs.has(s) && !baseAliases.has(s));\n\n const htmlString = renderBasesInline(\n basesData,\n allFiles,\n locale,\n localeStrings,\n opts,\n slug,\n contentSlugs,\n linkResolution,\n viewName,\n selfContext,\n );\n const fragment = fromHtml(htmlString, { fragment: true }) as HtmlRoot;\n\n // Replace the placeholder node's children with the rendered content\n node.tagName = \"div\";\n node.properties = { class: \"bases-page bases-inline\" };\n node.children = fragment.children as ElementContent[];\n });\n };\n}\n\n/**\n * Render a BasesData block to an HTML string, replicating the core rendering\n * logic of BasesBody.tsx but invoked at tree-transform time.\n */\nfunction renderBasesInline(\n basesData: BasesData,\n allFiles: Record<string, unknown>[],\n locale: string,\n localeStrings: { noData: string; noViews: string },\n opts: BasesPageOptions | undefined,\n slug: string,\n allSlugs: string[],\n linkResolution: \"absolute\" | \"relative\" | \"shortest\",\n viewName?: string,\n selfContext?: EvalContext[\"self\"],\n): string {\n let views = basesData.views ?? [];\n\n if (viewName) {\n const viewNameLower = viewName.toLowerCase();\n views = views.filter((v) => v.name?.toLowerCase() === viewNameLower);\n if (views.length === 0) {\n return `<div class=\"bases-empty\">View "${viewName}" not found</div>`;\n }\n }\n\n if (views.length === 0) {\n return `<div class=\"bases-empty\">${localeStrings.noViews}</div>`;\n }\n\n const preferredType = opts?.defaultViewType ?? \"table\";\n const initialIndex = Math.max(\n 0,\n views.findIndex((view) => view.type === preferredType),\n );\n\n // Collect CSS from custom view registrations (deduplicated by type)\n const activeTypes = new Set(views.map((v) => v.type));\n const viewCssChunks: string[] = [];\n for (const typeId of activeTypes) {\n const reg = viewRegistry.get(typeId);\n if (reg?.css) viewCssChunks.push(reg.css);\n }\n\n // Render the view selector\n const selectorHtml = render(\n h(Fragment, null, ViewSelector({ views, activeIndex: initialIndex, locale })),\n );\n\n // Render each view panel\n const viewPanels = views.map((view, index) => {\n const { entries, total } = resolveBasesEntries(basesData, allFiles, view, selfContext);\n const registration = viewRegistry.get(view.type);\n const Renderer = registration?.render;\n const activeClass = index === initialIndex ? \" is-active\" : \"\";\n\n let innerHtml: string;\n if (entries.length === 0) {\n innerHtml = `<div class=\"bases-empty\">${localeStrings.noData}</div>`;\n } else if (Renderer) {\n innerHtml = render(\n h(\n Fragment,\n null,\n Renderer({\n entries,\n view,\n basesData,\n total,\n locale,\n slug,\n allSlugs,\n linkResolution,\n options: registration?.options,\n }),\n ),\n );\n } else {\n innerHtml = `<div class=\"bases-empty\">Unknown view type: ${view.type}</div>`;\n }\n\n return `<div class=\"bases-view${activeClass}\" data-view-index=\"${index}\" data-view-type=\"${view.type}\">${innerHtml}</div>`;\n });\n\n const cssBlock = viewCssChunks.length > 0 ? `<style>${viewCssChunks.join(\"\\n\")}</style>` : \"\";\n\n return `${cssBlock}${selectorHtml}<div class=\"bases-view-container\">${viewPanels.join(\"\")}</div>`;\n}\n","import type { Root as HTMLRoot, Element, ElementContent } from \"hast\";\nimport type { QuartzTransformerPlugin, BuildCtx } from \"@quartz-community/types\";\nimport type { FilePath } from \"@quartz-community/utils\";\nimport { slugifyFilePath } from \"@quartz-community/utils\";\nimport type { VFile } from \"vfile\";\nimport { visit } from \"unist-util-visit\";\nimport { readFileSync } from \"fs\";\nimport { join } from \"path\";\nimport { parseBasesData } from \"./parser\";\nimport type { BasesData, BasesPageOptions } from \"./types\";\n\n/**\n * Rehype plugin that finds ` ```base ` codeblocks in the HAST tree and replaces\n * them with placeholder `<div>` elements. The parsed BasesData for each block is\n * stored on `vfile.data.basesBlocks` so it can be resolved at render time by the\n * tree-transform hook (when `allFiles` is available).\n *\n * Markdown parsers convert fenced code blocks to `<pre><code class=\"language-base\">`.\n * Syntax highlighters (e.g. rehype-pretty-code) may transform this further to\n * `<figure><pre><code data-language=\"base\">` with text wrapped in `<span data-line>`.\n * This plugin detects both patterns, extracts the text content, parses it as YAML\n * via `parseBasesData()`, and replaces the top-level node with a placeholder div.\n */\nexport const BasesTransformer: QuartzTransformerPlugin<Partial<BasesPageOptions>> = (_opts) => {\n return {\n name: \"BasesTransformer\",\n htmlPlugins(ctx: BuildCtx) {\n const baseFileBySlug = buildBaseFileLookup(ctx);\n\n return [\n () => {\n return (tree: HTMLRoot, file: VFile) => {\n const embeds: string[] = [];\n\n visit(tree, \"element\", (node: Element, index, parent) => {\n if (!parent || index === undefined) return;\n if (node.tagName !== \"blockquote\") return;\n const classes = (node.properties?.className ?? []) as string[];\n if (!classes.includes(\"transclude\")) return;\n\n const url = node.properties?.dataUrl as string | undefined;\n if (!url) return;\n\n const baseFile = baseFileBySlug.get(url);\n if (!baseFile) {\n embeds.push(url);\n return;\n }\n\n const block = (node.properties?.dataBlock as string) ?? \"\";\n const viewName = block.startsWith(\"#\") ? block.slice(1) : \"\";\n\n const fullPath = join(ctx.argv.directory, baseFile);\n let raw: string;\n try {\n raw = readFileSync(fullPath, \"utf-8\");\n } catch {\n embeds.push(url);\n return;\n }\n\n const basesData = parseBasesData(raw);\n if (!basesData) {\n embeds.push(url);\n return;\n }\n\n if (!file.data.basesBlocks) file.data.basesBlocks = [];\n const blockIndex = file.data.basesBlocks.length;\n file.data.basesBlocks.push(basesData);\n\n const placeholder: Element = {\n type: \"element\",\n tagName: \"div\",\n properties: {\n dataQzBasesCodeblock: String(blockIndex),\n ...(viewName ? { dataQzBasesView: viewName } : {}),\n },\n children: [],\n };\n parent.children[index] = placeholder;\n });\n\n if (embeds.length > 0) {\n file.data.embeds = embeds;\n }\n };\n },\n () => {\n return (tree: HTMLRoot, file: VFile) => {\n const basesBlocks: BasesData[] = [];\n\n visit(tree, \"element\", (node: Element, index, parent) => {\n if (!parent || index === undefined) return;\n\n // Detect base codeblocks in two forms:\n // 1. Raw: <pre><code class=\"language-base\">\n // 2. Post-syntax-highlighting: <figure><pre><code data-language=\"base\">\n // (rehype-pretty-code wraps in <figure> and uses data-language prop)\n const {\n codeElement,\n replaceNode: _replaceNode,\n replaceIndex,\n replaceParent,\n } = findBaseCodeblock(node, index, parent);\n if (!codeElement) return;\n\n // Extract raw text from the <code> element (handles both plain\n // text nodes and <span data-line> wrappers from syntax highlighters)\n const rawText = extractText(codeElement);\n if (!rawText) return;\n\n // Parse as YAML — parseBasesData handles both raw YAML and ``` fenced blocks\n const basesData = parseBasesData(rawText);\n if (!basesData) return;\n\n const blockIndex = basesBlocks.length;\n basesBlocks.push(basesData);\n\n // Replace the <pre> node with a placeholder div\n const placeholder: Element = {\n type: \"element\",\n tagName: \"div\",\n properties: {\n dataQzBasesCodeblock: String(blockIndex),\n },\n children: [],\n };\n\n replaceParent.children[replaceIndex] = placeholder;\n });\n\n if (basesBlocks.length > 0) {\n file.data.basesBlocks = basesBlocks;\n }\n };\n },\n ];\n },\n };\n};\n\n/**\n * Detect whether a HAST node is (or contains) a ```base codeblock.\n * Returns the code element and the node/parent/index to replace.\n *\n * Handles two shapes:\n * - `<pre><code class=\"language-base\">` (standard markdown → HTML)\n * - `<figure data-rehype-pretty-code-figure><pre><code data-language=\"base\">` (after syntax highlighting)\n */\nfunction findBaseCodeblock(\n node: Element,\n index: number | undefined,\n parent: { children: (ElementContent | import(\"hast\").RootContent)[] },\n): {\n codeElement: Element | null;\n replaceNode: Element;\n replaceIndex: number;\n replaceParent: { children: (ElementContent | import(\"hast\").RootContent)[] };\n} {\n const empty = {\n codeElement: null,\n replaceNode: node,\n replaceIndex: index ?? 0,\n replaceParent: parent,\n };\n\n // Case 1: node is <pre> directly\n if (node.tagName === \"pre\") {\n const code = findCodeChild(node);\n if (code && isBaseLanguage(code)) {\n return {\n codeElement: code,\n replaceNode: node,\n replaceIndex: index ?? 0,\n replaceParent: parent,\n };\n }\n return empty;\n }\n\n // Case 2: node is <figure data-rehype-pretty-code-figure> wrapping <pre><code>\n if (node.tagName === \"figure\" && node.properties?.dataRehypePrettyCodeFigure !== undefined) {\n const pre = node.children.find(\n (child): child is Element => child.type === \"element\" && child.tagName === \"pre\",\n );\n if (pre) {\n const code = findCodeChild(pre);\n if (code && isBaseLanguage(code)) {\n // Replace the <figure>, not just the <pre>\n return {\n codeElement: code,\n replaceNode: node,\n replaceIndex: index ?? 0,\n replaceParent: parent,\n };\n }\n }\n return empty;\n }\n\n return empty;\n}\n\n/** Find the first <code> child element */\nfunction findCodeChild(pre: Element): Element | null {\n return (\n pre.children.find(\n (child): child is Element => child.type === \"element\" && child.tagName === \"code\",\n ) ?? null\n );\n}\n\n/**\n * Check whether a <code> element represents a `base` language block.\n * Checks both `class=\"language-base\"` (standard) and `data-language=\"base\"` (rehype-pretty-code).\n */\nfunction isBaseLanguage(code: Element): boolean {\n // Standard: class includes \"language-base\"\n const classNames = (code.properties?.className ?? []) as string[];\n if (classNames.includes(\"language-base\")) return true;\n\n // rehype-pretty-code: data-language=\"base\"\n if (code.properties?.dataLanguage === \"base\") return true;\n\n return false;\n}\n\n/**\n * Recursively extract text content from a HAST element.\n * Handles both plain text nodes and <span data-line> wrappers\n * from syntax highlighters. Avoids regex by walking the tree directly.\n */\nfunction extractText(node: Element): string {\n const parts: string[] = [];\n for (const child of node.children) {\n if (child.type === \"text\") {\n parts.push(child.value);\n } else if (child.type === \"element\") {\n parts.push(extractText(child));\n }\n }\n return parts.join(\"\");\n}\n\nfunction buildBaseFileLookup(ctx: BuildCtx): Map<string, string> {\n const lookup = new Map<string, string>();\n const baseFiles = ctx.allFiles.filter((fp) => fp.endsWith(\".base\"));\n for (const fp of baseFiles) {\n const slug = slugifyFilePath(fp as unknown as FilePath);\n lookup.set(slug, fp);\n\n const fileName = fp.split(\"/\").pop() ?? \"\";\n const fileNameSlug = slugifyFilePath(fileName as unknown as FilePath);\n if (!lookup.has(fileNameSlug)) {\n lookup.set(fileNameSlug, fp);\n }\n\n const withoutExt = fp.replace(/\\.base$/, \"\");\n const nameOnly = withoutExt.split(\"/\").pop() ?? \"\";\n const nameSlug = slugifyFilePath(nameOnly as unknown as FilePath);\n if (!lookup.has(nameSlug)) {\n lookup.set(nameSlug, fp);\n }\n }\n return lookup;\n}\n\ndeclare module \"vfile\" {\n interface DataMap {\n basesBlocks?: BasesData[];\n embeds?: string[];\n }\n}\n"]}
|