{"version":3,"file":"dom-helpers.6a1771a5.js","sources":["../../../../../../node_modules/svelte/src/runtime/internal/spread.js","../../../../../../node_modules/@sveltejs/kit/src/runtime/app/stores.js","../../../../../../node_modules/@lukeed/uuid/dist/index.mjs","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/x.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/youtube.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/threads.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/search.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/playOffset.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/play.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/pause.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/menu.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/linkedIn.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/instagram.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/filter.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/facebook.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/close.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/check.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/caretUp.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/caretDown.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/arrowUpRight.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/arrowRight.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/arrowLeft.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/alert.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/utilities/logs.js","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/atoms/Icon.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/atoms/DynamicHeadingContext.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/atoms/DynamicHeading.svelte","../../../../../../node_modules/svelte/src/runtime/easing/index.js","../../../../../../node_modules/svelte/src/runtime/transition/index.js","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/utilities/aspectRatios.js","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/utilities/accessibility.js","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/utilities/breakpoints.js","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/utilities/themes.js","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/atoms/Image.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/atoms/Link.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/atoms/LoadingIndicator.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/atoms/Button.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/atoms/Grid.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/atoms/GridContainer.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/atoms/Rule.svelte","../../../../../../node_modules/tua-body-scroll-lock/dist/tua-bsl.mjs","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/atoms/Tags.svelte","../../../../../../node_modules/textfit/textFit.js","../../../../../../node_modules/@ObamaFoundation/of-design-system/node_modules/marked/lib/marked.esm.js","../../../../../../node_modules/dompurify/dist/purify.js","../../../../../../node_modules/@ObamaFoundation/of-design-system/node_modules/isomorphic-dompurify/browser.js","../../../../../../src/lib/utilities/url-helpers.js","../../../../../../src/lib/utilities/image.js","../../../../../../node_modules/marked/lib/marked.esm.js","../../../../../../node_modules/isomorphic-dompurify/browser.js","../../../../../../src/lib/utilities/components/image-helpers.js","../../../../../../src/lib/stores.js","../../../../../../src/lib/utilities/filters.js","../../../../../../node_modules/linkedom/esm/shared/symbols.js","../../../../../../node_modules/entities/lib/esm/generated/decode-data-html.js","../../../../../../node_modules/entities/lib/esm/generated/decode-data-xml.js","../../../../../../node_modules/entities/lib/esm/decode_codepoint.js","../../../../../../node_modules/entities/lib/esm/decode.js","../../../../../../node_modules/htmlparser2/lib/esm/Tokenizer.js","../../../../../../node_modules/htmlparser2/lib/esm/Parser.js","../../../../../../node_modules/domelementtype/lib/esm/index.js","../../../../../../node_modules/domhandler/lib/esm/node.js","../../../../../../node_modules/domhandler/lib/esm/index.js","../../../../../../node_modules/entities/lib/esm/escape.js","../../../../../../node_modules/dom-serializer/lib/esm/foreignNames.js","../../../../../../node_modules/dom-serializer/lib/esm/index.js","../../../../../../node_modules/domutils/lib/esm/stringify.js","../../../../../../node_modules/domutils/lib/esm/traversal.js","../../../../../../node_modules/domutils/lib/esm/manipulation.js","../../../../../../node_modules/domutils/lib/esm/querying.js","../../../../../../node_modules/domutils/lib/esm/legacy.js","../../../../../../node_modules/domutils/lib/esm/helpers.js","../../../../../../node_modules/domutils/lib/esm/feeds.js","../../../../../../node_modules/htmlparser2/lib/esm/index.js","../../../../../../node_modules/linkedom/esm/shared/constants.js","../../../../../../node_modules/linkedom/esm/shared/object.js","../../../../../../node_modules/linkedom/esm/shared/utils.js","../../../../../../node_modules/linkedom/esm/shared/shadow-roots.js","../../../../../../node_modules/linkedom/esm/interface/custom-element-registry.js","../../../../../../node_modules/linkedom/esm/shared/parse-from-string.js","../../../../../../node_modules/linkedom/esm/shared/register-html-class.js","../../../../../../__vite-browser-external","../../../../../../node_modules/linkedom/commonjs/perf_hooks.cjs","../../../../../../node_modules/linkedom/esm/shared/jsdon.js","../../../../../../node_modules/linkedom/esm/interface/mutation-observer.js","../../../../../../node_modules/linkedom/esm/shared/attributes.js","../../../../../../node_modules/linkedom/esm/interface/event-target.js","../../../../../../node_modules/linkedom/esm/interface/node-list.js","../../../../../../node_modules/linkedom/esm/interface/node.js","../../../../../../node_modules/linkedom/esm/shared/text-escaper.js","../../../../../../node_modules/linkedom/esm/interface/attr.js","../../../../../../node_modules/linkedom/esm/shared/node.js","../../../../../../node_modules/linkedom/esm/mixin/non-document-type-child-node.js","../../../../../../node_modules/linkedom/esm/mixin/child-node.js","../../../../../../node_modules/linkedom/esm/interface/character-data.js","../../../../../../node_modules/linkedom/esm/interface/cdata-section.js","../../../../../../node_modules/linkedom/esm/interface/comment.js","../../../../../../node_modules/boolbase/index.js","../../../../../../node_modules/css-what/lib/es/types.js","../../../../../../node_modules/css-what/lib/es/parse.js","../../../../../../node_modules/css-select/lib/esm/sort.js","../../../../../../node_modules/css-select/lib/esm/attributes.js","../../../../../../node_modules/nth-check/lib/esm/parse.js","../../../../../../node_modules/nth-check/lib/esm/compile.js","../../../../../../node_modules/nth-check/lib/esm/index.js","../../../../../../node_modules/css-select/lib/esm/pseudo-selectors/filters.js","../../../../../../node_modules/css-select/lib/esm/pseudo-selectors/pseudos.js","../../../../../../node_modules/css-select/lib/esm/pseudo-selectors/aliases.js","../../../../../../node_modules/css-select/lib/esm/pseudo-selectors/subselects.js","../../../../../../node_modules/css-select/lib/esm/pseudo-selectors/index.js","../../../../../../node_modules/css-select/lib/esm/general.js","../../../../../../node_modules/css-select/lib/esm/compile.js","../../../../../../node_modules/css-select/lib/esm/index.js","../../../../../../node_modules/linkedom/esm/shared/matches.js","../../../../../../node_modules/linkedom/esm/interface/text.js","../../../../../../node_modules/linkedom/esm/mixin/parent-node.js","../../../../../../node_modules/linkedom/esm/mixin/non-element-parent-node.js","../../../../../../node_modules/linkedom/esm/interface/document-fragment.js","../../../../../../node_modules/linkedom/esm/interface/document-type.js","../../../../../../node_modules/linkedom/esm/mixin/inner-html.js","../../../../../../node_modules/uhyphen/esm/index.js","../../../../../../node_modules/linkedom/esm/dom/string-map.js","../../../../../../node_modules/linkedom/esm/dom/token-list.js","../../../../../../node_modules/linkedom/esm/interface/css-style-declaration.js","../../../../../../node_modules/linkedom/esm/interface/event.js","../../../../../../node_modules/linkedom/esm/interface/named-node-map.js","../../../../../../node_modules/linkedom/esm/interface/shadow-root.js","../../../../../../node_modules/linkedom/esm/interface/element.js","../../../../../../node_modules/linkedom/esm/svg/element.js","../../../../../../node_modules/linkedom/esm/shared/facades.js","../../../../../../node_modules/linkedom/esm/html/element.js","../../../../../../node_modules/linkedom/esm/html/template-element.js","../../../../../../node_modules/linkedom/esm/html/html-element.js","../../../../../../node_modules/linkedom/esm/html/text-element.js","../../../../../../node_modules/linkedom/esm/html/script-element.js","../../../../../../node_modules/linkedom/esm/html/frame-element.js","../../../../../../node_modules/linkedom/esm/html/i-frame-element.js","../../../../../../node_modules/linkedom/esm/html/object-element.js","../../../../../../node_modules/linkedom/esm/html/head-element.js","../../../../../../node_modules/linkedom/esm/html/body-element.js","../../../../../../node_modules/cssom/lib/StyleSheet.js","../../../../../../node_modules/cssom/lib/CSSRule.js","../../../../../../node_modules/cssom/lib/CSSStyleRule.js","../../../../../../node_modules/cssom/lib/CSSStyleSheet.js","../../../../../../node_modules/cssom/lib/MediaList.js","../../../../../../node_modules/cssom/lib/CSSImportRule.js","../../../../../../node_modules/cssom/lib/CSSGroupingRule.js","../../../../../../node_modules/cssom/lib/CSSConditionRule.js","../../../../../../node_modules/cssom/lib/CSSMediaRule.js","../../../../../../node_modules/cssom/lib/CSSSupportsRule.js","../../../../../../node_modules/cssom/lib/CSSFontFaceRule.js","../../../../../../node_modules/cssom/lib/CSSHostRule.js","../../../../../../node_modules/cssom/lib/CSSKeyframeRule.js","../../../../../../node_modules/cssom/lib/CSSKeyframesRule.js","../../../../../../node_modules/cssom/lib/CSSValue.js","../../../../../../node_modules/cssom/lib/CSSValueExpression.js","../../../../../../node_modules/cssom/lib/MatcherList.js","../../../../../../node_modules/cssom/lib/CSSDocumentRule.js","../../../../../../node_modules/cssom/lib/parse.js","../../../../../../node_modules/cssom/lib/CSSStyleDeclaration.js","../../../../../../node_modules/cssom/lib/clone.js","../../../../../../node_modules/cssom/lib/index.js","../../../../../../node_modules/linkedom/esm/html/style-element.js","../../../../../../node_modules/linkedom/esm/html/time-element.js","../../../../../../node_modules/linkedom/esm/html/field-set-element.js","../../../../../../node_modules/linkedom/esm/html/embed-element.js","../../../../../../node_modules/linkedom/esm/html/hr-element.js","../../../../../../node_modules/linkedom/esm/html/progress-element.js","../../../../../../node_modules/linkedom/esm/html/paragraph-element.js","../../../../../../node_modules/linkedom/esm/html/table-element.js","../../../../../../node_modules/linkedom/esm/html/frame-set-element.js","../../../../../../node_modules/linkedom/esm/html/li-element.js","../../../../../../node_modules/linkedom/esm/html/base-element.js","../../../../../../node_modules/linkedom/esm/html/data-list-element.js","../../../../../../node_modules/linkedom/esm/html/input-element.js","../../../../../../node_modules/linkedom/esm/html/param-element.js","../../../../../../node_modules/linkedom/esm/html/media-element.js","../../../../../../node_modules/linkedom/esm/html/audio-element.js","../../../../../../node_modules/linkedom/esm/html/heading-element.js","../../../../../../node_modules/linkedom/esm/html/directory-element.js","../../../../../../node_modules/linkedom/esm/html/quote-element.js","../../../../../../node_modules/linkedom/commonjs/canvas-shim.cjs","../../../../../../node_modules/linkedom/commonjs/canvas.cjs","../../../../../../node_modules/linkedom/esm/html/canvas-element.js","../../../../../../node_modules/linkedom/esm/html/legend-element.js","../../../../../../node_modules/linkedom/esm/html/option-element.js","../../../../../../node_modules/linkedom/esm/html/span-element.js","../../../../../../node_modules/linkedom/esm/html/meter-element.js","../../../../../../node_modules/linkedom/esm/html/video-element.js","../../../../../../node_modules/linkedom/esm/html/table-cell-element.js","../../../../../../node_modules/linkedom/esm/html/title-element.js","../../../../../../node_modules/linkedom/esm/html/output-element.js","../../../../../../node_modules/linkedom/esm/html/table-row-element.js","../../../../../../node_modules/linkedom/esm/html/data-element.js","../../../../../../node_modules/linkedom/esm/html/menu-element.js","../../../../../../node_modules/linkedom/esm/html/select-element.js","../../../../../../node_modules/linkedom/esm/html/br-element.js","../../../../../../node_modules/linkedom/esm/html/button-element.js","../../../../../../node_modules/linkedom/esm/html/map-element.js","../../../../../../node_modules/linkedom/esm/html/opt-group-element.js","../../../../../../node_modules/linkedom/esm/html/d-list-element.js","../../../../../../node_modules/linkedom/esm/html/text-area-element.js","../../../../../../node_modules/linkedom/esm/html/font-element.js","../../../../../../node_modules/linkedom/esm/html/div-element.js","../../../../../../node_modules/linkedom/esm/html/link-element.js","../../../../../../node_modules/linkedom/esm/html/slot-element.js","../../../../../../node_modules/linkedom/esm/html/form-element.js","../../../../../../node_modules/linkedom/esm/html/image-element.js","../../../../../../node_modules/linkedom/esm/html/pre-element.js","../../../../../../node_modules/linkedom/esm/html/u-list-element.js","../../../../../../node_modules/linkedom/esm/html/meta-element.js","../../../../../../node_modules/linkedom/esm/html/picture-element.js","../../../../../../node_modules/linkedom/esm/html/area-element.js","../../../../../../node_modules/linkedom/esm/html/o-list-element.js","../../../../../../node_modules/linkedom/esm/html/table-caption-element.js","../../../../../../node_modules/linkedom/esm/html/anchor-element.js","../../../../../../node_modules/linkedom/esm/html/label-element.js","../../../../../../node_modules/linkedom/esm/html/unknown-element.js","../../../../../../node_modules/linkedom/esm/html/mod-element.js","../../../../../../node_modules/linkedom/esm/html/details-element.js","../../../../../../node_modules/linkedom/esm/html/source-element.js","../../../../../../node_modules/linkedom/esm/html/track-element.js","../../../../../../node_modules/linkedom/esm/html/marquee-element.js","../../../../../../node_modules/linkedom/esm/shared/html-classes.js","../../../../../../node_modules/linkedom/esm/shared/mime.js","../../../../../../node_modules/linkedom/esm/interface/custom-event.js","../../../../../../node_modules/linkedom/esm/interface/input-event.js","../../../../../../node_modules/linkedom/esm/interface/image.js","../../../../../../node_modules/linkedom/esm/interface/range.js","../../../../../../node_modules/linkedom/esm/interface/tree-walker.js","../../../../../../node_modules/linkedom/esm/interface/document.js","../../../../../../node_modules/linkedom/esm/index.js","../../../../../../src/lib/utilities/dom-helpers.js"],"sourcesContent":["/** @returns {{}} */\nexport function get_spread_update(levels, updates) {\n\tconst update = {};\n\tconst to_null_out = {};\n\tconst accounted_for = { $$scope: 1 };\n\tlet i = levels.length;\n\twhile (i--) {\n\t\tconst o = levels[i];\n\t\tconst n = updates[i];\n\t\tif (n) {\n\t\t\tfor (const key in o) {\n\t\t\t\tif (!(key in n)) to_null_out[key] = 1;\n\t\t\t}\n\t\t\tfor (const key in n) {\n\t\t\t\tif (!accounted_for[key]) {\n\t\t\t\t\tupdate[key] = n[key];\n\t\t\t\t\taccounted_for[key] = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\tlevels[i] = n;\n\t\t} else {\n\t\t\tfor (const key in o) {\n\t\t\t\taccounted_for[key] = 1;\n\t\t\t}\n\t\t}\n\t}\n\tfor (const key in to_null_out) {\n\t\tif (!(key in update)) update[key] = undefined;\n\t}\n\treturn update;\n}\n\nexport function get_spread_object(spread_props) {\n\treturn typeof spread_props === 'object' && spread_props !== null ? spread_props : {};\n}\n","import { getContext } from 'svelte';\nimport { browser } from './environment.js';\nimport { stores as browser_stores } from '../client/singletons.js';\n\n/**\n * A function that returns all of the contextual stores. On the server, this must be called during component initialization.\n * Only use this if you need to defer store subscription until after the component has mounted, for some reason.\n */\nexport const getStores = () => {\n\tconst stores = browser ? browser_stores : getContext('__svelte__');\n\n\treturn {\n\t\t/** @type {typeof page} */\n\t\tpage: {\n\t\t\tsubscribe: stores.page.subscribe\n\t\t},\n\t\t/** @type {typeof navigating} */\n\t\tnavigating: {\n\t\t\tsubscribe: stores.navigating.subscribe\n\t\t},\n\t\t/** @type {typeof updated} */\n\t\tupdated: stores.updated\n\t};\n};\n\n/**\n * A readable store whose value contains page data.\n *\n * On the server, this store can only be subscribed to during component initialization. In the browser, it can be subscribed to at any time.\n *\n * @type {import('svelte/store').Readable}\n */\nexport const page = {\n\tsubscribe(fn) {\n\t\tconst store = __SVELTEKIT_DEV__ ? get_store('page') : getStores().page;\n\t\treturn store.subscribe(fn);\n\t}\n};\n\n/**\n * A readable store.\n * When navigating starts, its value is a `Navigation` object with `from`, `to`, `type` and (if `type === 'popstate'`) `delta` properties.\n * When navigating finishes, its value reverts to `null`.\n *\n * On the server, this store can only be subscribed to during component initialization. In the browser, it can be subscribed to at any time.\n * @type {import('svelte/store').Readable}\n */\nexport const navigating = {\n\tsubscribe(fn) {\n\t\tconst store = __SVELTEKIT_DEV__ ? get_store('navigating') : getStores().navigating;\n\t\treturn store.subscribe(fn);\n\t}\n};\n\n/**\n * A readable store whose initial value is `false`. If [`version.pollInterval`](https://kit.svelte.dev/docs/configuration#version) is a non-zero value, SvelteKit will poll for new versions of the app and update the store value to `true` when it detects one. `updated.check()` will force an immediate check, regardless of polling.\n *\n * On the server, this store can only be subscribed to during component initialization. In the browser, it can be subscribed to at any time.\n * @type {import('svelte/store').Readable & { check(): Promise }}\n */\nexport const updated = {\n\tsubscribe(fn) {\n\t\tconst store = __SVELTEKIT_DEV__ ? get_store('updated') : getStores().updated;\n\n\t\tif (browser) {\n\t\t\tupdated.check = store.check;\n\t\t}\n\n\t\treturn store.subscribe(fn);\n\t},\n\tcheck: () => {\n\t\tthrow new Error(\n\t\t\tbrowser\n\t\t\t\t? 'Cannot check updated store before subscribing'\n\t\t\t\t: 'Can only check updated store in browser'\n\t\t);\n\t}\n};\n\n/**\n * @template {keyof ReturnType} Name\n * @param {Name} name\n * @returns {ReturnType[Name]}\n */\nfunction get_store(name) {\n\ttry {\n\t\treturn getStores()[name];\n\t} catch (e) {\n\t\tthrow new Error(\n\t\t\t`Cannot subscribe to '${name}' store on the server outside of a Svelte component, as it is bound to the current request via component context. This prevents state from leaking between users.` +\n\t\t\t\t'For more information, see https://kit.svelte.dev/docs/state-management#avoid-shared-state-on-the-server'\n\t\t);\n\t}\n}\n","var IDX=256, HEX=[], BUFFER;\nwhile (IDX--) HEX[IDX] = (IDX + 256).toString(16).substring(1);\n\nexport function v4() {\n\tvar i=0, num, out='';\n\n\tif (!BUFFER || ((IDX + 16) > 256)) {\n\t\tBUFFER = Array(i=256);\n\t\twhile (i--) BUFFER[i] = 256 * Math.random() | 0;\n\t\ti = IDX = 0;\n\t}\n\n\tfor (; i < 16; i++) {\n\t\tnum = BUFFER[IDX + i];\n\t\tif (i==6) out += HEX[num & 15 | 64];\n\t\telse if (i==8) out += HEX[num & 63 | 128];\n\t\telse out += HEX[num];\n\n\t\tif (i & 1 && i > 1 && i < 11) out += '-';\n\t}\n\n\tIDX++;\n\treturn out;\n}\n","\n \n\n","\n \n\n","\n \n \n \n \n \n \n \n \n\n","\n \n \n \n \n \n \n \n \n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n \n \n\n","\n \n \n \n \n \n \n \n \n\n","\n \n\n","\n \n \n\n","\n \n \n \n \n \n \n \n \n\n","\n \n \n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n \n\n","/**\n * Validates a prop value against a list of valid values.\n *\n * @param {Object} params - The parameters for the function.\n * @param {string} params.componentName - The name of the component.\n * @param {string} params.propName - The name of the prop.\n * @param {string} params.propValue - The value of the prop.\n * @param {Array.} params.validPropValues - The list of valid prop values.\n */\nfunction validatePropValue({ componentName, propName, propValue, validPropValues }) {\n if (!validPropValues.includes(propValue)) {\n /* eslint-disable no-console */\n console.error(\n `[${componentName} ERROR] \"${propValue}\" is not a supported ${propName} value. Must be one of: ${validPropValues.join(\n \" \"\n )}`\n );\n }\n}\n\n/** Validates an object prop value with a schema.\n * @param {Object} params - The parameters for the function.\n * @param {string} params.componentName - The name of the component.\n * @param {string} params.propName - The name of the prop.\n * @param {Object} params.propValue - The value of the prop.\n * @param {Object} params.schema - The schema for the prop validation.\n */\n\nfunction validatePropObjectWithSchema({ componentName, propName, propValue, schema }) {\n Object.keys(schema).forEach((key) => {\n if (schema[key] === \"array\" && !Array.isArray(propValue[key])) {\n /* eslint-disable no-console */\n console.error(\n `[${componentName} ERROR] \"${propValue[key]}\" is not a supported ${propName} value for ${key} property. Must be an array`\n );\n } else if (schema[key] !== \"array\" && propValue[key] && typeof propValue[key] !== schema[key]) {\n /* eslint-disable no-console */\n console.error(\n `[${componentName} ERROR] \"${propValue[key]}\" is not a supported ${propName} value for ${key} property. Must be a(n) ${schema[key]}`\n );\n }\n });\n}\n\nexport { validatePropValue, validatePropObjectWithSchema };\n","\n\n\n\n\n","\n\n\n\n\n\n","\n\n\n\n\n\n \n\n","/*\nAdapted from https://github.com/mattdesl\nDistributed under MIT License https://github.com/mattdesl/eases/blob/master/LICENSE.md\n*/\nexport { identity as linear } from '../internal/index.js';\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function backInOut(t) {\n\tconst s = 1.70158 * 1.525;\n\tif ((t *= 2) < 1) return 0.5 * (t * t * ((s + 1) * t - s));\n\treturn 0.5 * ((t -= 2) * t * ((s + 1) * t + s) + 2);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function backIn(t) {\n\tconst s = 1.70158;\n\treturn t * t * ((s + 1) * t - s);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function backOut(t) {\n\tconst s = 1.70158;\n\treturn --t * t * ((s + 1) * t + s) + 1;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function bounceOut(t) {\n\tconst a = 4.0 / 11.0;\n\tconst b = 8.0 / 11.0;\n\tconst c = 9.0 / 10.0;\n\tconst ca = 4356.0 / 361.0;\n\tconst cb = 35442.0 / 1805.0;\n\tconst cc = 16061.0 / 1805.0;\n\tconst t2 = t * t;\n\treturn t < a\n\t\t? 7.5625 * t2\n\t\t: t < b\n\t\t? 9.075 * t2 - 9.9 * t + 3.4\n\t\t: t < c\n\t\t? ca * t2 - cb * t + cc\n\t\t: 10.8 * t * t - 20.52 * t + 10.72;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function bounceInOut(t) {\n\treturn t < 0.5 ? 0.5 * (1.0 - bounceOut(1.0 - t * 2.0)) : 0.5 * bounceOut(t * 2.0 - 1.0) + 0.5;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function bounceIn(t) {\n\treturn 1.0 - bounceOut(1.0 - t);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function circInOut(t) {\n\tif ((t *= 2) < 1) return -0.5 * (Math.sqrt(1 - t * t) - 1);\n\treturn 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function circIn(t) {\n\treturn 1.0 - Math.sqrt(1.0 - t * t);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function circOut(t) {\n\treturn Math.sqrt(1 - --t * t);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function cubicInOut(t) {\n\treturn t < 0.5 ? 4.0 * t * t * t : 0.5 * Math.pow(2.0 * t - 2.0, 3.0) + 1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function cubicIn(t) {\n\treturn t * t * t;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function cubicOut(t) {\n\tconst f = t - 1.0;\n\treturn f * f * f + 1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function elasticInOut(t) {\n\treturn t < 0.5\n\t\t? 0.5 * Math.sin(((+13.0 * Math.PI) / 2) * 2.0 * t) * Math.pow(2.0, 10.0 * (2.0 * t - 1.0))\n\t\t: 0.5 *\n\t\t\t\tMath.sin(((-13.0 * Math.PI) / 2) * (2.0 * t - 1.0 + 1.0)) *\n\t\t\t\tMath.pow(2.0, -10.0 * (2.0 * t - 1.0)) +\n\t\t\t\t1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function elasticIn(t) {\n\treturn Math.sin((13.0 * t * Math.PI) / 2) * Math.pow(2.0, 10.0 * (t - 1.0));\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function elasticOut(t) {\n\treturn Math.sin((-13.0 * (t + 1.0) * Math.PI) / 2) * Math.pow(2.0, -10.0 * t) + 1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function expoInOut(t) {\n\treturn t === 0.0 || t === 1.0\n\t\t? t\n\t\t: t < 0.5\n\t\t? +0.5 * Math.pow(2.0, 20.0 * t - 10.0)\n\t\t: -0.5 * Math.pow(2.0, 10.0 - t * 20.0) + 1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function expoIn(t) {\n\treturn t === 0.0 ? t : Math.pow(2.0, 10.0 * (t - 1.0));\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function expoOut(t) {\n\treturn t === 1.0 ? t : 1.0 - Math.pow(2.0, -10.0 * t);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quadInOut(t) {\n\tt /= 0.5;\n\tif (t < 1) return 0.5 * t * t;\n\tt--;\n\treturn -0.5 * (t * (t - 2) - 1);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quadIn(t) {\n\treturn t * t;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quadOut(t) {\n\treturn -t * (t - 2.0);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quartInOut(t) {\n\treturn t < 0.5 ? +8.0 * Math.pow(t, 4.0) : -8.0 * Math.pow(t - 1.0, 4.0) + 1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quartIn(t) {\n\treturn Math.pow(t, 4.0);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quartOut(t) {\n\treturn Math.pow(t - 1.0, 3.0) * (1.0 - t) + 1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quintInOut(t) {\n\tif ((t *= 2) < 1) return 0.5 * t * t * t * t * t;\n\treturn 0.5 * ((t -= 2) * t * t * t * t + 2);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quintIn(t) {\n\treturn t * t * t * t * t;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quintOut(t) {\n\treturn --t * t * t * t * t + 1;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function sineInOut(t) {\n\treturn -0.5 * (Math.cos(Math.PI * t) - 1);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function sineIn(t) {\n\tconst v = Math.cos(t * Math.PI * 0.5);\n\tif (Math.abs(v) < 1e-14) return 1;\n\telse return 1 - v;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function sineOut(t) {\n\treturn Math.sin((t * Math.PI) / 2);\n}\n","import { cubicOut, cubicInOut, linear } from '../easing/index.js';\nimport { assign, split_css_unit, is_function } from '../internal/index.js';\n\n/**\n * Animates a `blur` filter alongside an element's opacity.\n *\n * https://svelte.dev/docs/svelte-transition#blur\n * @param {Element} node\n * @param {import('./public').BlurParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function blur(\n\tnode,\n\t{ delay = 0, duration = 400, easing = cubicInOut, amount = 5, opacity = 0 } = {}\n) {\n\tconst style = getComputedStyle(node);\n\tconst target_opacity = +style.opacity;\n\tconst f = style.filter === 'none' ? '' : style.filter;\n\tconst od = target_opacity * (1 - opacity);\n\tconst [value, unit] = split_css_unit(amount);\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (_t, u) => `opacity: ${target_opacity - od * u}; filter: ${f} blur(${u * value}${unit});`\n\t};\n}\n\n/**\n * Animates the opacity of an element from 0 to the current opacity for `in` transitions and from the current opacity to 0 for `out` transitions.\n *\n * https://svelte.dev/docs/svelte-transition#fade\n * @param {Element} node\n * @param {import('./public').FadeParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function fade(node, { delay = 0, duration = 400, easing = linear } = {}) {\n\tconst o = +getComputedStyle(node).opacity;\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (t) => `opacity: ${t * o}`\n\t};\n}\n\n/**\n * Animates the x and y positions and the opacity of an element. `in` transitions animate from the provided values, passed as parameters to the element's default values. `out` transitions animate from the element's default values to the provided values.\n *\n * https://svelte.dev/docs/svelte-transition#fly\n * @param {Element} node\n * @param {import('./public').FlyParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function fly(\n\tnode,\n\t{ delay = 0, duration = 400, easing = cubicOut, x = 0, y = 0, opacity = 0 } = {}\n) {\n\tconst style = getComputedStyle(node);\n\tconst target_opacity = +style.opacity;\n\tconst transform = style.transform === 'none' ? '' : style.transform;\n\tconst od = target_opacity * (1 - opacity);\n\tconst [xValue, xUnit] = split_css_unit(x);\n\tconst [yValue, yUnit] = split_css_unit(y);\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (t, u) => `\n\t\t\ttransform: ${transform} translate(${(1 - t) * xValue}${xUnit}, ${(1 - t) * yValue}${yUnit});\n\t\t\topacity: ${target_opacity - od * u}`\n\t};\n}\n\n/**\n * Slides an element in and out.\n *\n * https://svelte.dev/docs/svelte-transition#slide\n * @param {Element} node\n * @param {import('./public').SlideParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function slide(node, { delay = 0, duration = 400, easing = cubicOut, axis = 'y' } = {}) {\n\tconst style = getComputedStyle(node);\n\tconst opacity = +style.opacity;\n\tconst primary_property = axis === 'y' ? 'height' : 'width';\n\tconst primary_property_value = parseFloat(style[primary_property]);\n\tconst secondary_properties = axis === 'y' ? ['top', 'bottom'] : ['left', 'right'];\n\tconst capitalized_secondary_properties = secondary_properties.map(\n\t\t(e) => `${e[0].toUpperCase()}${e.slice(1)}`\n\t);\n\tconst padding_start_value = parseFloat(style[`padding${capitalized_secondary_properties[0]}`]);\n\tconst padding_end_value = parseFloat(style[`padding${capitalized_secondary_properties[1]}`]);\n\tconst margin_start_value = parseFloat(style[`margin${capitalized_secondary_properties[0]}`]);\n\tconst margin_end_value = parseFloat(style[`margin${capitalized_secondary_properties[1]}`]);\n\tconst border_width_start_value = parseFloat(\n\t\tstyle[`border${capitalized_secondary_properties[0]}Width`]\n\t);\n\tconst border_width_end_value = parseFloat(\n\t\tstyle[`border${capitalized_secondary_properties[1]}Width`]\n\t);\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (t) =>\n\t\t\t'overflow: hidden;' +\n\t\t\t`opacity: ${Math.min(t * 20, 1) * opacity};` +\n\t\t\t`${primary_property}: ${t * primary_property_value}px;` +\n\t\t\t`padding-${secondary_properties[0]}: ${t * padding_start_value}px;` +\n\t\t\t`padding-${secondary_properties[1]}: ${t * padding_end_value}px;` +\n\t\t\t`margin-${secondary_properties[0]}: ${t * margin_start_value}px;` +\n\t\t\t`margin-${secondary_properties[1]}: ${t * margin_end_value}px;` +\n\t\t\t`border-${secondary_properties[0]}-width: ${t * border_width_start_value}px;` +\n\t\t\t`border-${secondary_properties[1]}-width: ${t * border_width_end_value}px;`\n\t};\n}\n\n/**\n * Animates the opacity and scale of an element. `in` transitions animate from an element's current (default) values to the provided values, passed as parameters. `out` transitions animate from the provided values to an element's default values.\n *\n * https://svelte.dev/docs/svelte-transition#scale\n * @param {Element} node\n * @param {import('./public').ScaleParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function scale(\n\tnode,\n\t{ delay = 0, duration = 400, easing = cubicOut, start = 0, opacity = 0 } = {}\n) {\n\tconst style = getComputedStyle(node);\n\tconst target_opacity = +style.opacity;\n\tconst transform = style.transform === 'none' ? '' : style.transform;\n\tconst sd = 1 - start;\n\tconst od = target_opacity * (1 - opacity);\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (_t, u) => `\n\t\t\ttransform: ${transform} scale(${1 - sd * u});\n\t\t\topacity: ${target_opacity - od * u}\n\t\t`\n\t};\n}\n\n/**\n * Animates the stroke of an SVG element, like a snake in a tube. `in` transitions begin with the path invisible and draw the path to the screen over time. `out` transitions start in a visible state and gradually erase the path. `draw` only works with elements that have a `getTotalLength` method, like `` and ``.\n *\n * https://svelte.dev/docs/svelte-transition#draw\n * @param {SVGElement & { getTotalLength(): number }} node\n * @param {import('./public').DrawParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function draw(node, { delay = 0, speed, duration, easing = cubicInOut } = {}) {\n\tlet len = node.getTotalLength();\n\tconst style = getComputedStyle(node);\n\tif (style.strokeLinecap !== 'butt') {\n\t\tlen += parseInt(style.strokeWidth);\n\t}\n\tif (duration === undefined) {\n\t\tif (speed === undefined) {\n\t\t\tduration = 800;\n\t\t} else {\n\t\t\tduration = len / speed;\n\t\t}\n\t} else if (typeof duration === 'function') {\n\t\tduration = duration(len);\n\t}\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (_, u) => `\n\t\t\tstroke-dasharray: ${len};\n\t\t\tstroke-dashoffset: ${u * len};\n\t\t`\n\t};\n}\n\n/**\n * The `crossfade` function creates a pair of [transitions](https://svelte.dev/docs#template-syntax-element-directives-transition-fn) called `send` and `receive`. When an element is 'sent', it looks for a corresponding element being 'received', and generates a transition that transforms the element to its counterpart's position and fades it out. When an element is 'received', the reverse happens. If there is no counterpart, the `fallback` transition is used.\n *\n * https://svelte.dev/docs/svelte-transition#crossfade\n * @param {import('./public').CrossfadeParams & {\n * \tfallback?: (node: Element, params: import('./public').CrossfadeParams, intro: boolean) => import('./public').TransitionConfig;\n * }} params\n * @returns {[(node: any, params: import('./public').CrossfadeParams & { key: any; }) => () => import('./public').TransitionConfig, (node: any, params: import('./public').CrossfadeParams & { key: any; }) => () => import('./public').TransitionConfig]}\n */\nexport function crossfade({ fallback, ...defaults }) {\n\t/** @type {Map} */\n\tconst to_receive = new Map();\n\t/** @type {Map} */\n\tconst to_send = new Map();\n\t/**\n\t * @param {Element} from_node\n\t * @param {Element} node\n\t * @param {import('./public').CrossfadeParams} params\n\t * @returns {import('./public').TransitionConfig}\n\t */\n\tfunction crossfade(from_node, node, params) {\n\t\tconst {\n\t\t\tdelay = 0,\n\t\t\tduration = (d) => Math.sqrt(d) * 30,\n\t\t\teasing = cubicOut\n\t\t} = assign(assign({}, defaults), params);\n\t\tconst from = from_node.getBoundingClientRect();\n\t\tconst to = node.getBoundingClientRect();\n\t\tconst dx = from.left - to.left;\n\t\tconst dy = from.top - to.top;\n\t\tconst dw = from.width / to.width;\n\t\tconst dh = from.height / to.height;\n\t\tconst d = Math.sqrt(dx * dx + dy * dy);\n\t\tconst style = getComputedStyle(node);\n\t\tconst transform = style.transform === 'none' ? '' : style.transform;\n\t\tconst opacity = +style.opacity;\n\t\treturn {\n\t\t\tdelay,\n\t\t\tduration: is_function(duration) ? duration(d) : duration,\n\t\t\teasing,\n\t\t\tcss: (t, u) => `\n\t\t\t\topacity: ${t * opacity};\n\t\t\t\ttransform-origin: top left;\n\t\t\t\ttransform: ${transform} translate(${u * dx}px,${u * dy}px) scale(${t + (1 - t) * dw}, ${\n\t\t\t\tt + (1 - t) * dh\n\t\t\t});\n\t\t\t`\n\t\t};\n\t}\n\n\t/**\n\t * @param {Map} items\n\t * @param {Map} counterparts\n\t * @param {boolean} intro\n\t * @returns {(node: any, params: import('./public').CrossfadeParams & { key: any; }) => () => import('./public').TransitionConfig}\n\t */\n\tfunction transition(items, counterparts, intro) {\n\t\treturn (node, params) => {\n\t\t\titems.set(params.key, node);\n\t\t\treturn () => {\n\t\t\t\tif (counterparts.has(params.key)) {\n\t\t\t\t\tconst other_node = counterparts.get(params.key);\n\t\t\t\t\tcounterparts.delete(params.key);\n\t\t\t\t\treturn crossfade(other_node, node, params);\n\t\t\t\t}\n\t\t\t\t// if the node is disappearing altogether\n\t\t\t\t// (i.e. wasn't claimed by the other list)\n\t\t\t\t// then we need to supply an outro\n\t\t\t\titems.delete(params.key);\n\t\t\t\treturn fallback && fallback(node, params, intro);\n\t\t\t};\n\t\t};\n\t}\n\treturn [transition(to_send, to_receive, false), transition(to_receive, to_send, true)];\n}\n","/**\n * Aspect ratios for images.\n * @typedef {Object} ImageAspectRatios\n * @property {string} RATIO_16_9 - Aspect ratio of 16:9.\n * @property {string} RATIO_1_1 - Aspect ratio of 1:1.\n * @property {string} RATIO_4_3 - Aspect ratio of 4:3.\n * @property {string} RATIO_3_2 - Aspect ratio of 3:2.\n * @property {string} RATIO_3_4 - Aspect ratio of 3:4.\n * @property {string} RATIO_NONE - Aspect ratio of none.\n */\n\n/**\n * Image aspect ratios.\n * @type {ImageAspectRatios}\n */\nexport const IMAGE_ASPECT_RATIOS = {\n RATIO_16_9: \"16/9\",\n RATIO_1_1: \"1/1\",\n RATIO_4_3: \"4/3\",\n RATIO_3_2: \"3/2\",\n RATIO_3_4: \"3/4\",\n RATIO_NONE: \"none\"\n};\n\n/**\n * @typedef {Object} AspectRatioClasses\n * @property {string} aspect-1/1 - Class for aspect ratio 1:1.\n * @property {string} aspect-16/9 - Class for aspect ratio 16:9.\n * @property {string} aspect-4/3 - Class for aspect ratio 4:3.\n * @property {string} aspect-3/2 - Class for aspect ratio 3:2.\n * @property {string} aspect-3/4 - Class for aspect ratio 3:4.\n * @property {string} aspect-none - Class for aspect ratio none.\n */\nexport const ASPECT_RATIO_CLASSES = {\n [IMAGE_ASPECT_RATIOS.RATIO_1_1]: \"aspect-1/1\",\n [IMAGE_ASPECT_RATIOS.RATIO_16_9]: \"aspect-16/9\",\n [IMAGE_ASPECT_RATIOS.RATIO_4_3]: \"aspect-4/3\",\n [IMAGE_ASPECT_RATIOS.RATIO_3_2]: \"aspect-3/2\",\n [IMAGE_ASPECT_RATIOS.RATIO_3_4]: \"aspect-3/4\",\n [IMAGE_ASPECT_RATIOS.RATIO_NONE]: \"aspect-none\"\n};\n\n/**\n * Validates aspect ratio classes.\n *\n * @param {string} aspectRatioClasses - A string of space-separated aspect ratio Tailwind classes.\n */\nexport function validateAspectRatioClasses(aspectRatioClasses) {\n const listOfClasses = aspectRatioClasses.split(\" \");\n const validClasses = Object.values(ASPECT_RATIO_CLASSES);\n const isValid = listOfClasses.every((aspectRatioClass) => {\n return validClasses.some((validClass) => aspectRatioClass.includes(validClass));\n });\n\n if (!isValid) {\n console.warn(\"Invalid aspect ratio class detected\");\n }\n}\n","// @ts-check\n/** @typedef {Object} FocusTrapOptions\n * @property {string | undefined} triggerElementQuery\n * @property {boolean} shouldTrapFocus\n */\n\n/** @type {import('svelte/action').Action} */\nexport const trapFocus = (node, options) => {\n /** @type {AbortController | undefined} */\n let abortController;\n let currentOptions = options;\n if (typeof window === \"undefined\") {\n return;\n }\n\n /** @type {HTMLElement} */\n let firstElement;\n /** @type {HTMLElement} */\n let secondElement;\n /** @type {HTMLElement} */\n let lastElement;\n\n const focusableElements =\n \"a:not([tabindex='-1']), area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]):not([tabindex='-1']), iframe, object, embed, *[contenteditable]\";\n\n /** @type {(e: KeyboardEvent) => void} */\n const onFirstElementKeydown = (e) => {\n if (!e.shiftKey && e.code === \"Tab\") {\n e.preventDefault();\n secondElement.focus();\n }\n if (e.shiftKey && e.code === \"Tab\") {\n e.preventDefault();\n lastElement.focus();\n }\n };\n\n /** @type {(e: KeyboardEvent) => void} */\n const onSecondElementKeydown = (e) => {\n if (e.shiftKey && e.code === \"Tab\") {\n e.preventDefault();\n firstElement.focus();\n }\n };\n\n /** @type {(e: KeyboardEvent) => void} */\n const onLastElementKeydown = (e) => {\n if (!e.shiftKey && e.code === \"Tab\") {\n e.preventDefault();\n firstElement.focus();\n }\n };\n\n const manageFocus = () => {\n if (currentOptions?.shouldTrapFocus !== true) {\n return;\n }\n\n abortController = new AbortController();\n const signal = abortController.signal;\n\n const focusableListList = node.querySelectorAll(focusableElements);\n\n const focusableList = Array.from(focusableListList);\n\n let triggerElement;\n if (currentOptions?.triggerElementQuery) {\n triggerElement = document.querySelector(options.triggerElementQuery);\n }\n\n if (triggerElement) {\n focusableList.unshift(triggerElement);\n }\n\n if (focusableList.length < 2) {\n return;\n }\n\n firstElement = /** @type {HTMLElement} */ (focusableList[0]);\n\n // For external trigger support\n secondElement = /** @type {HTMLElement} */ (focusableList[1]);\n\n lastElement = /** @type {HTMLElement} */ (focusableList[focusableList.length - 1]);\n\n firstElement?.addEventListener(\"keydown\", onFirstElementKeydown, { signal });\n secondElement?.addEventListener(\"keydown\", onSecondElementKeydown, { signal });\n lastElement?.addEventListener(\"keydown\", onLastElementKeydown, { signal });\n };\n\n const cleanUp = () => {\n abortController?.abort();\n };\n\n const observationChange = () => {\n cleanUp();\n manageFocus();\n };\n\n const observer = new MutationObserver(observationChange);\n observer.observe(node, { childList: true, subtree: true });\n\n manageFocus();\n return {\n update(newOptions) {\n currentOptions = newOptions;\n },\n destroy() {\n observer.disconnect();\n cleanUp();\n }\n };\n};\n","import mediaQueries from \"../design-tokens/mediaQueries\";\n// @ts-check\n\nexport const Breakpoints = /** @type {const} */ ({\n sm: \"sm\",\n md: \"md\",\n lg: \"lg\",\n xl: \"xl\"\n});\n\nexport const breakpointValues = /** @type {const} */ ({\n [Breakpoints.sm]: 0, // No need to use media queries for small screens\n [Breakpoints.md]: parseInt(mediaQueries[\"medium-min\"]),\n [Breakpoints.lg]: parseInt(mediaQueries[\"large-min\"]),\n [Breakpoints.xl]: parseInt(mediaQueries[\"xlarge-min\"])\n});\n\n/** @param {number} width */\nexport const getBreakpoint = (width) => {\n if (width >= breakpointValues.xl) {\n return Breakpoints.xl;\n }\n if (width >= breakpointValues.lg) {\n return Breakpoints.lg;\n }\n if (width >= breakpointValues.md) {\n return Breakpoints.md;\n }\n\n return Breakpoints.sm;\n};\n\nexport const breakpointWeights = /** @type {const} */ ({\n [Breakpoints.sm]: 0,\n [Breakpoints.md]: 1,\n [Breakpoints.lg]: 2,\n [Breakpoints.xl]: 3\n});\n\nexport const maxFontSizeMapForFullWidthText = /** @type {const} */ {\n [Breakpoints.sm]: 195,\n [Breakpoints.md]: 220,\n [Breakpoints.lg]: 410,\n [Breakpoints.xl]: 560\n};\n\nexport const isSmallOrMediumBreakpoint = (screenWidth) => {\n const currentBreakpoint = getBreakpoint(screenWidth);\n return breakpointWeights[currentBreakpoint] < breakpointWeights.lg;\n};\n","import COLORS from \"../design-tokens/colors\";\n\n/**\n * @typedef {Object} Theme An object of CSS classes to be applied for the theme\n * @property {string} backgroundColor\n * @property {string} hoverBackgroundColor\n * @property {string} textColor\n * @property {string} hoverTextColor\n * @property {string} translucentTextColor\n * @property {string} borderColor\n * @property {string} ruleColor\n * @property {string} componentColorTheme\n * @property {string} [focusTextColor]\n * @property {string} [focusOutlineColor]\n */\n\n/**\n * @typedef {keyof typeof STANDARD_THEMES} StandardThemeName\n\n * @typedef {keyof typeof PATTERN_THEMES} PatternThemeName\n\n * @typedef {keyof typeof DEM_FORUM_THEMES} DemForumThemeName\n\n* @typedef {StandardThemeName | PatternThemeName | DemForumThemeName} ThemeName\n */\n\n/**\n * @typedef {Object.} ThemeTable1\n * @description An object that maps theme names to their corresponding theme configurations.\n */\nexport const STANDARD_THEMES = {\n transparent: {\n backgroundColor: \"bg-transparent\",\n hoverBackgroundColor: \"hover:bg-transparent\",\n textColor: \"text-transparent\",\n translucentTextColor: \"text-transparent\",\n hoverTextColor: \"hover:text-transparent\",\n borderColor: \"border-transparent\",\n ruleColor: \"bg-transparent\",\n focusOutlineColor: \"focus-visible:outline-transparent\",\n componentColorTheme: \"black\",\n backgroundColorValue: COLORS.transparent,\n textColorValue: COLORS.transparent\n },\n black: {\n backgroundColor: \"bg-black\",\n hoverBackgroundColor: \"hover:bg-white\",\n textColor: \"text-white\",\n translucentTextColor: \"text-white-60\",\n hoverTextColor: \"hover:text-cobalt-blue\",\n borderColor: \"border-black\",\n ruleColor: \"bg-white\",\n focusOutlineColor: \"focus-visible:outline-white\",\n componentColorTheme: \"black\",\n backgroundColorValue: COLORS.black,\n textColorValue: COLORS.white\n },\n white: {\n backgroundColor: \"bg-white\",\n hoverBackgroundColor: \"hover:bg-black\",\n borderColor: \"border-white\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black-60\",\n hoverTextColor: \"hover:text-cobalt-blue\",\n ruleColor: \"bg-black\",\n focusTextColor: \"focus-visible:text-cobalt-blue\",\n focusOutlineColor: \"focus-visible:outline-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.white,\n textColorValue: COLORS.black\n },\n darkBlue: {\n backgroundColor: \"bg-dark-blue\",\n hoverBackgroundColor: \"\",\n textColor: \"text-white\",\n translucentTextColor: \"text-white-60\",\n hoverTextColor: \"\",\n borderColor: \"border-dark-blue\",\n ruleColor: \"bg-white\",\n componentColorTheme: \"black\",\n backgroundColorValue: COLORS.darkBlue,\n textColorValue: COLORS.white\n },\n cobaltBlue: {\n backgroundColor: \"bg-cobalt-blue\",\n hoverBackgroundColor: \"\",\n textColor: \"text-white\",\n translucentTextColor: \"text-white\",\n hoverTextColor: \"hover:text-white\",\n focusOutlineColor: \"focus-visible:outline-white\",\n borderColor: \"border-cobalt-blue\",\n ruleColor: \"bg-white\",\n componentColorTheme: \"black\",\n backgroundColorValue: COLORS.cobaltBlue,\n textColorValue: COLORS.white\n },\n skyBlue: {\n backgroundColor: \"bg-sky-blue\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black-60\",\n hoverTextColor: \"\",\n borderColor: \"border-sky-blue\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.skyBlue,\n textColorValue: COLORS.black\n },\n lightBlue: {\n backgroundColor: \"bg-light-blue\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black-60\",\n hoverTextColor: \"\",\n borderColor: \"border-light-blue\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.lightBlue,\n textColorValue: COLORS.black\n },\n lightGrey: {\n backgroundColor: \"bg-light-grey\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black-60\",\n hoverTextColor: \"hover:text-cobalt-blue\",\n borderColor: \"border-light-grey\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n focusTextColor: \"focus-visible:text-cobalt-blue\",\n focusOutlineColor: \"focus-visible:outline-black\",\n backgroundColorValue: COLORS.lightGrey,\n textColorValue: COLORS.black\n },\n red: {\n backgroundColor: \"bg-red\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black-75\",\n hoverTextColor: \"\",\n borderColor: \"border-red\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.red,\n textColorValue: COLORS.black\n },\n orange: {\n backgroundColor: \"bg-orange\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black-75\",\n hoverTextColor: \"\",\n borderColor: \"border-orange\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.orange,\n textColorValue: COLORS.black\n },\n yellow: {\n backgroundColor: \"bg-yellow\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black-60\",\n hoverTextColor: \"\",\n borderColor: \"border-yellow\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.yellow,\n textColorValue: COLORS.black\n },\n green: {\n backgroundColor: \"bg-green\",\n hoverBackgroundColor: \"\",\n textColor: \"text-white\",\n translucentTextColor: \"text-white-80\",\n hoverTextColor: \"\",\n borderColor: \"border-green\",\n ruleColor: \"bg-white\",\n componentColorTheme: \"black\",\n backgroundColorValue: COLORS.green,\n textColorValue: COLORS.white\n },\n pink: {\n backgroundColor: \"bg-pink\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black-60\",\n hoverTextColor: \"\",\n borderColor: \"border-pink\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.pink,\n textColorValue: COLORS.black\n },\n lightOrange: {\n backgroundColor: \"bg-light-orange\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black-60\",\n hoverTextColor: \"\",\n borderColor: \"border-light-orange\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.lightOrange,\n textColorValue: COLORS.black\n },\n lightYellow: {\n backgroundColor: \"bg-light-yellow\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black-60\",\n hoverTextColor: \"\",\n borderColor: \"border-light-yellow\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.lightYellow,\n textColorValue: COLORS.black\n },\n lightGreen: {\n backgroundColor: \"bg-light-green\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black-60\",\n hoverTextColor: \"\",\n borderColor: \"border-light-green\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.lightGreen,\n textColorValue: COLORS.black\n },\n goaPurple: {\n backgroundColor: \"bg-goa-purple\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black\",\n hoverTextColor: \"\",\n borderColor: \"border-goa-purple\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.goaPurple,\n textColorValue: COLORS.black\n },\n goaPink: {\n backgroundColor: \"bg-goa-pink\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black-80\",\n hoverTextColor: \"\",\n borderColor: \"border-goa-pink\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.goaPink,\n textColorValue: COLORS.black\n },\n teal: {\n backgroundColor: \"bg-goa-teal\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black-60\",\n hoverTextColor: \"\",\n borderColor: \"border-goa-teal\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.goaTeal,\n textColorValue: COLORS.black\n },\n darkTeal: {\n backgroundColor: \"bg-goa-dark-teal\",\n hoverBackgroundColor: \"\",\n textColor: \"text-white\",\n translucentTextColor: \"text-white\",\n hoverTextColor: \"\",\n borderColor: \"border-goa-dark-teal\",\n ruleColor: \"bg-white\",\n componentColorTheme: \"black\",\n backgroundColorValue: COLORS.goaDarkTeal,\n textColorValue: COLORS.white\n },\n futurePink: {\n backgroundColor: \"bg-future-pink\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black-60\",\n hoverTextColor: \"\",\n borderColor: \"border-future-pink\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.futurePink,\n textColorValue: COLORS.black\n },\n futureGreen: {\n backgroundColor: \"bg-future-green\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black\",\n hoverTextColor: \"\",\n borderColor: \"border-future-green\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.futureGreen,\n textColorValue: COLORS.black\n },\n scholarsMaroon: {\n backgroundColor: \"bg-scholars-maroon\",\n hoverBackgroundColor: \"\",\n textColor: \"text-white\",\n translucentTextColor: \"text-white-80\",\n hoverTextColor: \"\",\n borderColor: \"border-scholars-maroon\",\n ruleColor: \"bg-white\",\n componentColorTheme: \"black\",\n backgroundColorValue: COLORS.scholarsMaroon,\n textColorValue: COLORS.white\n },\n sand: {\n backgroundColor: \"bg-scholars-sand\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black-60\",\n hoverTextColor: \"\",\n borderColor: \"border-scholars-sand\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.scholarsSand,\n textColorValue: COLORS.black\n }\n};\n\n/**\n * @typedef {Object.} ThemeTable2\n * @description An object that maps theme names to their corresponding theme configurations.\n */\nexport const PATTERN_THEMES = {\n skyBlueSpark: {\n ...STANDARD_THEMES.skyBlue,\n pattern: \"spark\"\n },\n darkBlueRadiate: {\n ...STANDARD_THEMES.darkBlue,\n pattern: \"radiate\"\n },\n yellowAmplify: {\n ...STANDARD_THEMES.yellow,\n pattern: \"amplify\"\n }\n};\n\n/**\n * @typedef {Object.} ThemeTable3\n * hard-coded one-off themes\n */\nexport const DEM_FORUM_THEMES = {\n \"Dem Forum Light Green Sky Blue\": {\n backgroundColor: \"bg-gradient-radial from-light-green from-49% to-sky-blue to-94%\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black-60\",\n hoverTextColor: \"\",\n borderColor: \"border-black\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.skyBlue,\n textColorValue: COLORS.black\n },\n \"Dem Forum Orange Cobalt Blue\": {\n backgroundColor: \"bg-gradient-radial from-orange from-49% to-cobalt-blue to-94%\",\n hoverBackgroundColor: \"\",\n textColor: \"text-white\",\n translucentTextColor: \"text-black-60\",\n hoverTextColor: \"\",\n borderColor: \"border-black\",\n ruleColor: \"bg-white\",\n componentColorTheme: \"black\",\n backgroundColorValue: COLORS.cobaltBlue,\n textColorValue: COLORS.black\n },\n \"Dem Forum Orange Sky Blue\": {\n backgroundColor: \"bg-gradient-radial from-orange from-49% to-sky-blue to-94%\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black-60\",\n hoverTextColor: \"\",\n borderColor: \"border-black\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.skyBlue,\n textColorValue: COLORS.black\n },\n \"Dem Forum Yellow Cobalt Blue\": {\n backgroundColor: \"bg-gradient-radial from-yellow from-49% to-cobalt-blue to-94%\",\n hoverBackgroundColor: \"\",\n textColor: \"text-white\",\n translucentTextColor: \"text-black-60\",\n hoverTextColor: \"\",\n borderColor: \"border-black\",\n ruleColor: \"bg-white\",\n componentColorTheme: \"black\",\n backgroundColorValue: COLORS.cobaltBlue,\n textColorValue: COLORS.black\n },\n \"Dem Forum Yellow Orange\": {\n backgroundColor: \"bg-gradient-radial from-yellow from-49% to-orange to-94%\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black-60\",\n hoverTextColor: \"\",\n borderColor: \"border-black\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.orange,\n textColorValue: COLORS.black\n },\n \"Dem Forum Yellow Sky Blue\": {\n backgroundColor: \"bg-gradient-radial from-yellow from-49% to-sky-blue to-94%\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black-60\",\n hoverTextColor: \"\",\n borderColor: \"border-black\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.skyBlue,\n textColorValue: COLORS.black\n }\n};\n\n/**\n * @typedef {Object.} ThemeTable\n * @description An object that maps theme names to their corresponding theme configurations.\n */\nexport const THEMES = {\n ...STANDARD_THEMES,\n ...PATTERN_THEMES,\n ...DEM_FORUM_THEMES\n};\n\n/**\n * @type {StandardThemeName[]}\n */\nexport const STANDARD_THEME_NAMES = Object.keys(STANDARD_THEMES);\n\n/**\n * @type {PatternThemeName[]}\n */\nexport const PATTERN_THEME_NAMES = Object.keys(PATTERN_THEMES);\n\n/**\n * @type {DemForumThemeName[]}\n */\nexport const DEM_FORUM_THEME_NAMES = Object.keys(DEM_FORUM_THEMES);\n\n/**\n * @type {ThemeName[]}\n */\nexport const THEME_NAMES = Object.keys(THEMES);\n\n/**\n *\n * @param {ThemeName} themeName\n * @returns {Theme | undefined}\n */\nexport const getTheme = (themeName) => {\n if (!themeName) {\n return;\n }\n\n if (!THEME_NAMES.includes(themeName)) {\n // eslint-disable-next-line no-console\n console.error(\n `[ERROR] \"${themeName}\" is not a supported theme value. Must be one of: ${THEME_NAMES.join(\n \" \"\n )}`\n );\n }\n\n return THEMES[themeName];\n};\n","\n\n\n\n\n \n\n","\n\n\n\n\n{#if shouldShowArrow || isExternal}\n \n \n \n \n \n {label}\n \n {#if shouldShowArrow}\n \n \n \n \n \n {/if}\n \n \n {#if isExternal}\n (Opens in a new tab)\n {/if}\n \n{:else}\n \n \n \n \n \n {label}\n \n \n \n \n{/if}\n\n\n","\n\n\n \n {accessibilityLabel}\n\n\n\n","\n\n\n\n\n {#if isLoading}\n \n {/if}\n {#if $$slots.icon || Object.keys(ICON_NAMES).some((name) => name === iconName)}\n \n \n \n \n \n {/if}\n {#if hasValidLabel}\n {label}\n {/if}\n \n\n","\n\n\n\n\n \n\n\n\n","\n\n\n \n \n \n\n","\n\n{#if type === \"thick\"}\n \n{:else if type === \"thin\"}\n \n{/if}\n","/**\n * tua-body-scroll-lock v1.5.1\n * (c) 2024 Evinma, BuptStEve\n * @license MIT\n */\n\nvar isServer = function isServer() {\n return typeof window === 'undefined';\n};\nvar detectOS = function detectOS(ua) {\n ua = ua || navigator.userAgent;\n var ipad = /(iPad).*OS\\s([\\d_]+)/.test(ua);\n var iphone = !ipad && /(iPhone\\sOS)\\s([\\d_]+)/.test(ua);\n var android = /(Android);?[\\s/]+([\\d.]+)?/.test(ua);\n var ios = iphone || ipad;\n return {\n ios: ios,\n android: android\n };\n};\nfunction getEventListenerOptions(options) {\n /* istanbul ignore if */\n if (isServer()) return false;\n if (!options) {\n throw new Error('options must be provided');\n }\n var isSupportOptions = false;\n var listenerOptions = {\n get passive() {\n isSupportOptions = true;\n return undefined;\n }\n };\n /* istanbul ignore next */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n var noop = function noop() {};\n var testEvent = '__TUA_BSL_TEST_PASSIVE__';\n window.addEventListener(testEvent, noop, listenerOptions);\n window.removeEventListener(testEvent, noop, listenerOptions);\n var capture = options.capture;\n /* istanbul ignore next */\n return isSupportOptions ? options : typeof capture !== 'undefined' ? capture : false;\n}\nfunction noticeRequiredTargetElement(targetElement) {\n if (targetElement) return false;\n if (targetElement === null) return false;\n /* istanbul ignore if */\n if (process.env.NODE_ENV === 'production') return false;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'test') {\n console.warn('If scrolling is also required in the floating layer, ' + 'the target element must be provided.');\n }\n return true;\n}\n/**\n * Get global function that calls preventDefault\n */\nfunction getPreventEventDefault() {\n if ('__BSL_PREVENT_DEFAULT__' in window) {\n return window.__BSL_PREVENT_DEFAULT__;\n }\n window.__BSL_PREVENT_DEFAULT__ = function (event) {\n if (!event.cancelable) return;\n event.preventDefault();\n };\n return window.__BSL_PREVENT_DEFAULT__;\n}\nfunction toArray(x) {\n if (!x) return [];\n return Array.isArray(x) ? x : [x];\n}\n\nvar initialLockState = {\n lockedNum: 0,\n lockedElements: [],\n unLockCallback: null,\n documentListenerAdded: false,\n initialClientPos: {\n clientX: 0,\n clientY: 0\n }\n};\n/**\n * get current lockState\n * @param options\n * @returns lockState\n */\nfunction getLockState(options) {\n if (isServer()) return initialLockState;\n /** use local lockState */\n if (!(options === null || options === void 0 ? void 0 : options.useGlobalLockState)) return getLockState.lockState;\n /** use global lockState */\n var lockState = '__BSL_LOCK_STATE__' in window ? Object.assign(Object.assign({}, initialLockState), window.__BSL_LOCK_STATE__) : initialLockState;\n /** assign to global */\n window.__BSL_LOCK_STATE__ = lockState;\n return lockState;\n}\ngetLockState.lockState = initialLockState;\n\nfunction handleScroll(event, targetElement, initialClientPos) {\n if (targetElement) {\n var scrollTop = targetElement.scrollTop,\n scrollLeft = targetElement.scrollLeft,\n scrollWidth = targetElement.scrollWidth,\n scrollHeight = targetElement.scrollHeight,\n clientWidth = targetElement.clientWidth,\n clientHeight = targetElement.clientHeight;\n var clientX = event.targetTouches[0].clientX - initialClientPos.clientX;\n var clientY = event.targetTouches[0].clientY - initialClientPos.clientY;\n var isVertical = Math.abs(clientY) > Math.abs(clientX);\n var isOnTop = clientY > 0 && scrollTop === 0;\n var isOnLeft = clientX > 0 && scrollLeft === 0;\n var isOnRight = clientX < 0 && scrollLeft + clientWidth + 1 >= scrollWidth;\n var isOnBottom = clientY < 0 && scrollTop + clientHeight + 1 >= scrollHeight;\n if (isVertical && (isOnTop || isOnBottom) || !isVertical && (isOnLeft || isOnRight)) {\n return getPreventEventDefault()(event);\n }\n }\n event.stopPropagation();\n return true;\n}\n\nfunction setOverflowHiddenPc() {\n var $html = document.documentElement;\n var htmlStyle = Object.assign({}, $html.style);\n var scrollBarWidth = window.innerWidth - $html.clientWidth;\n var previousPaddingRight = parseInt(window.getComputedStyle($html).paddingRight, 10);\n $html.style.overflow = 'hidden';\n $html.style.boxSizing = 'border-box';\n $html.style.paddingRight = \"\".concat(scrollBarWidth + previousPaddingRight, \"px\");\n return function () {\n ['overflow', 'boxSizing', 'paddingRight'].forEach(function (x) {\n $html.style[x] = htmlStyle[x] || '';\n });\n };\n}\nfunction setOverflowHiddenMobile(options) {\n var $html = document.documentElement;\n var $body = document.body;\n var scrollTop = $html.scrollTop || $body.scrollTop;\n var htmlStyle = Object.assign({}, $html.style);\n var bodyStyle = Object.assign({}, $body.style);\n $html.style.height = '100%';\n $html.style.overflow = 'hidden';\n $body.style.top = \"-\".concat(scrollTop, \"px\");\n $body.style.width = '100%';\n $body.style.height = 'auto';\n $body.style.position = 'fixed';\n $body.style.overflow = (options === null || options === void 0 ? void 0 : options.overflowType) || 'hidden';\n return function () {\n $html.style.height = htmlStyle.height || '';\n $html.style.overflow = htmlStyle.overflow || '';\n ['top', 'width', 'height', 'overflow', 'position'].forEach(function (x) {\n $body.style[x] = bodyStyle[x] || '';\n });\n var supportsNativeSmoothScroll = ('scrollBehavior' in document.documentElement.style);\n if (supportsNativeSmoothScroll) {\n window.scrollTo({\n top: scrollTop,\n behavior: 'instant'\n });\n } else {\n window.scrollTo(0, scrollTop);\n }\n };\n}\n\n/**\n * lock body scroll\n * @param targetElement the element(s) still needs scrolling(iOS only)\n * @param options\n */\nfunction lock(targetElement, options) {\n if (isServer()) return;\n noticeRequiredTargetElement(targetElement);\n var detectRes = detectOS();\n var lockState = getLockState(options);\n if (detectRes.ios) {\n toArray(targetElement).filter(function (e) {\n return lockState.lockedElements.indexOf(e) === -1;\n }).forEach(function (element) {\n element.ontouchstart = function (event) {\n var _event$targetTouches$ = event.targetTouches[0],\n clientX = _event$targetTouches$.clientX,\n clientY = _event$targetTouches$.clientY;\n lockState.initialClientPos = {\n clientX: clientX,\n clientY: clientY\n };\n };\n element.ontouchmove = function (event) {\n handleScroll(event, element, lockState.initialClientPos);\n };\n lockState.lockedElements.push(element);\n });\n addTouchMoveListener(lockState);\n } else if (lockState.lockedNum <= 0) {\n lockState.unLockCallback = detectRes.android ? setOverflowHiddenMobile(options) : setOverflowHiddenPc();\n }\n lockState.lockedNum += 1;\n}\n/**\n * unlock body scroll\n * @param targetElement the element(s) still needs scrolling(iOS only)\n * @param options\n */\nfunction unlock(targetElement, options) {\n if (isServer()) return;\n noticeRequiredTargetElement(targetElement);\n var lockState = getLockState(options);\n lockState.lockedNum -= 1;\n if (lockState.lockedNum > 0) return;\n if (unlockByCallback(lockState)) return;\n toArray(targetElement).forEach(function (element) {\n var index = lockState.lockedElements.indexOf(element);\n if (index !== -1) {\n element.ontouchmove = null;\n element.ontouchstart = null;\n lockState.lockedElements.splice(index, 1);\n }\n });\n removeTouchMoveListener(lockState);\n}\n/**\n * clear all body locks\n * @param options\n */\nfunction clearBodyLocks(options) {\n if (isServer()) return;\n var lockState = getLockState(options);\n lockState.lockedNum = 0;\n if (unlockByCallback(lockState)) return;\n if (lockState.lockedElements.length) {\n var element = lockState.lockedElements.pop();\n while (element) {\n element.ontouchmove = null;\n element.ontouchstart = null;\n element = lockState.lockedElements.pop();\n }\n }\n removeTouchMoveListener(lockState);\n}\nfunction unlockByCallback(lockState) {\n if (detectOS().ios) return false;\n if (typeof lockState.unLockCallback !== 'function') return false;\n lockState.unLockCallback();\n return true;\n}\nfunction addTouchMoveListener(lockState) {\n if (!detectOS().ios) return;\n if (lockState.documentListenerAdded) return;\n document.addEventListener('touchmove', getPreventEventDefault(), getEventListenerOptions({\n passive: false\n }));\n lockState.documentListenerAdded = true;\n}\nfunction removeTouchMoveListener(lockState) {\n if (!lockState.documentListenerAdded) return;\n document.removeEventListener('touchmove', getPreventEventDefault(), getEventListenerOptions({\n passive: false\n }));\n lockState.documentListenerAdded = false;\n}\n\nexport { clearBodyLocks, getLockState, lock, unlock };\n","\n\n\n\n{#if tags.length > 0}\n
    \n {#each tags as tag, idx}\n \n {#if tag.href}\n \n {tag.name}\n \n {:else if tag.name}\n {tag.name}\n {/if}\n \n {/each}\n
\n{/if}\n","/**\n * textFit v2.3.1\n * Previously known as jQuery.textFit\n * 11/2014 by STRML (strml.github.com)\n * MIT License\n *\n * To use: textFit(document.getElementById('target-div'), options);\n *\n * Will make the *text* content inside a container scale to fit the container\n * The container is required to have a set width and height\n * Uses binary search to fit text with minimal layout calls.\n * Version 2.0 does not use jQuery.\n */\n/*global define:true, document:true, window:true, HTMLElement:true*/\n\n(function(root, factory) {\n \"use strict\";\n\n // UMD shim\n if (typeof define === \"function\" && define.amd) {\n // AMD\n define([], factory);\n } else if (typeof exports === \"object\") {\n // Node/CommonJS\n module.exports = factory();\n } else {\n // Browser\n root.textFit = factory();\n }\n\n}(typeof global === \"object\" ? global : this, function () {\n \"use strict\";\n\n var defaultSettings = {\n alignVert: false, // if true, textFit will align vertically using css tables\n alignHoriz: false, // if true, textFit will set text-align: center\n multiLine: false, // if true, textFit will not set white-space: no-wrap\n detectMultiLine: true, // disable to turn off automatic multi-line sensing\n minFontSize: 6,\n maxFontSize: 80,\n reProcess: true, // if true, textFit will re-process already-fit nodes. Set to 'false' for better performance\n widthOnly: false, // if true, textFit will fit text to element width, regardless of text height\n alignVertWithFlexbox: false, // if true, textFit will use flexbox for vertical alignment\n };\n\n return function textFit(els, options) {\n\n if (!options) options = {};\n\n // Extend options.\n var settings = {};\n for(var key in defaultSettings){\n if(options.hasOwnProperty(key)){\n settings[key] = options[key];\n } else {\n settings[key] = defaultSettings[key];\n }\n }\n\n // Convert jQuery objects into arrays\n if (typeof els.toArray === \"function\") {\n els = els.toArray();\n }\n\n // Support passing a single el\n var elType = Object.prototype.toString.call(els);\n if (elType !== '[object Array]' && elType !== '[object NodeList]' &&\n elType !== '[object HTMLCollection]'){\n els = [els];\n }\n\n // Process each el we've passed.\n for(var i = 0; i < els.length; i++){\n processItem(els[i], settings);\n }\n };\n\n /**\n * The meat. Given an el, make the text inside it fit its parent.\n * @param {DOMElement} el Child el.\n * @param {Object} settings Options for fit.\n */\n function processItem(el, settings){\n if (!isElement(el) || (!settings.reProcess && el.getAttribute('textFitted'))) {\n return false;\n }\n\n // Set textFitted attribute so we know this was processed.\n if(!settings.reProcess){\n el.setAttribute('textFitted', 1);\n }\n\n var innerSpan, originalHeight, originalHTML, originalWidth;\n var low, mid, high;\n\n // Get element data.\n originalHTML = el.innerHTML;\n originalWidth = innerWidth(el);\n originalHeight = innerHeight(el);\n\n // Don't process if we can't find box dimensions\n if (!originalWidth || (!settings.widthOnly && !originalHeight)) {\n if(!settings.widthOnly)\n throw new Error('Set a static height and width on the target element ' + el.outerHTML +\n ' before using textFit!');\n else\n throw new Error('Set a static width on the target element ' + el.outerHTML +\n ' before using textFit!');\n }\n\n // Add textFitted span inside this container.\n if (originalHTML.indexOf('textFitted') === -1) {\n innerSpan = document.createElement('span');\n innerSpan.className = 'textFitted';\n // Inline block ensure it takes on the size of its contents, even if they are enclosed\n // in other tags like

\n innerSpan.style['display'] = 'inline-block';\n innerSpan.innerHTML = originalHTML;\n el.innerHTML = '';\n el.appendChild(innerSpan);\n } else {\n // Reprocessing.\n innerSpan = el.querySelector('span.textFitted');\n // Remove vertical align if we're reprocessing.\n if (hasClass(innerSpan, 'textFitAlignVert')){\n innerSpan.className = innerSpan.className.replace('textFitAlignVert', '');\n innerSpan.style['height'] = '';\n el.className.replace('textFitAlignVertFlex', '');\n }\n }\n\n // Prepare & set alignment\n if (settings.alignHoriz) {\n el.style['text-align'] = 'center';\n innerSpan.style['text-align'] = 'center';\n }\n\n // Check if this string is multiple lines\n // Not guaranteed to always work if you use wonky line-heights\n var multiLine = settings.multiLine;\n if (settings.detectMultiLine && !multiLine &&\n innerSpan.scrollHeight >= parseInt(window.getComputedStyle(innerSpan)['font-size'], 10) * 2){\n multiLine = true;\n }\n\n // If we're not treating this as a multiline string, don't let it wrap.\n if (!multiLine) {\n el.style['white-space'] = 'nowrap';\n }\n\n low = settings.minFontSize;\n high = settings.maxFontSize;\n\n // Binary search for highest best fit\n var size = low;\n while (low <= high) {\n mid = (high + low) >> 1;\n innerSpan.style.fontSize = mid + 'px';\n if(innerSpan.scrollWidth <= originalWidth && (settings.widthOnly || innerSpan.scrollHeight <= originalHeight)){\n size = mid;\n low = mid + 1;\n } else {\n high = mid - 1;\n }\n // await injection point\n }\n // found, updating font if differs:\n if( innerSpan.style.fontSize != size + 'px' ) innerSpan.style.fontSize = size + 'px';\n\n // Our height is finalized. If we are aligning vertically, set that up.\n if (settings.alignVert) {\n addStyleSheet();\n var height = innerSpan.scrollHeight;\n if (window.getComputedStyle(el)['position'] === \"static\"){\n el.style['position'] = 'relative';\n }\n if (!hasClass(innerSpan, \"textFitAlignVert\")){\n innerSpan.className = innerSpan.className + \" textFitAlignVert\";\n }\n innerSpan.style['height'] = height + \"px\";\n if (settings.alignVertWithFlexbox && !hasClass(el, \"textFitAlignVertFlex\")) {\n el.className = el.className + \" textFitAlignVertFlex\";\n }\n }\n }\n\n // Calculate height without padding.\n function innerHeight(el){\n var style = window.getComputedStyle(el, null);\n return el.clientHeight -\n parseInt(style.getPropertyValue('padding-top'), 10) -\n parseInt(style.getPropertyValue('padding-bottom'), 10);\n }\n\n // Calculate width without padding.\n function innerWidth(el){\n var style = window.getComputedStyle(el, null);\n return el.clientWidth -\n parseInt(style.getPropertyValue('padding-left'), 10) -\n parseInt(style.getPropertyValue('padding-right'), 10);\n }\n\n //Returns true if it is a DOM element\n function isElement(o){\n return (\n typeof HTMLElement === \"object\" ? o instanceof HTMLElement : //DOM2\n o && typeof o === \"object\" && o !== null && o.nodeType === 1 && typeof o.nodeName===\"string\"\n );\n }\n\n function hasClass(element, cls) {\n return (' ' + element.className + ' ').indexOf(' ' + cls + ' ') > -1;\n }\n\n // Better than a stylesheet dependency\n function addStyleSheet() {\n if (document.getElementById(\"textFitStyleSheet\")) return;\n var style = [\n \".textFitAlignVert{\",\n \"position: absolute;\",\n \"top: 0; right: 0; bottom: 0; left: 0;\",\n \"margin: auto;\",\n \"display: flex;\",\n \"justify-content: center;\",\n \"flex-direction: column;\",\n \"}\",\n \".textFitAlignVertFlex{\",\n \"display: flex;\",\n \"}\",\n \".textFitAlignVertFlex .textFitAlignVert{\",\n \"position: static;\",\n \"}\",].join(\"\");\n\n var css = document.createElement(\"style\");\n css.type = \"text/css\";\n css.id = \"textFitStyleSheet\";\n css.innerHTML = style;\n document.body.appendChild(css);\n }\n}));\n","/**\n * marked v14.1.3 - a markdown parser\n * Copyright (c) 2011-2024, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\n/**\n * Gets the original marked default options.\n */\nfunction _getDefaults() {\n return {\n async: false,\n breaks: false,\n extensions: null,\n gfm: true,\n hooks: null,\n pedantic: false,\n renderer: null,\n silent: false,\n tokenizer: null,\n walkTokens: null,\n };\n}\nlet _defaults = _getDefaults();\nfunction changeDefaults(newDefaults) {\n _defaults = newDefaults;\n}\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape$1(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n }\n else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html;\n}\nconst caret = /(^|[^\\[])\\^/g;\nfunction edit(regex, opt) {\n let source = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n let valSource = typeof val === 'string' ? val : val.source;\n valSource = valSource.replace(caret, '$1');\n source = source.replace(name, valSource);\n return obj;\n },\n getRegex: () => {\n return new RegExp(source, opt);\n },\n };\n return obj;\n}\nfunction cleanUrl(href) {\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n }\n catch {\n return null;\n }\n return href;\n}\nconst noopTest = { exec: () => null };\nfunction splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\')\n escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n }\n else {\n // add space before unescaped |\n return ' |';\n }\n }), cells = row.split(/ \\|/);\n let i = 0;\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n }\n else {\n while (cells.length < count)\n cells.push('');\n }\n }\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nfunction rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n }\n else if (currChar !== c && invert) {\n suffLen++;\n }\n else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n }\n else if (str[i] === b[0]) {\n level++;\n }\n else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape$1(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text),\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape$1(text),\n };\n}\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n })\n .join('\\n');\n}\n/**\n * Tokenizer\n */\nclass _Tokenizer {\n options;\n rules; // set by the lexer\n lexer; // set by the lexer\n constructor(options) {\n this.options = options || _defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0],\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^(?: {1,4}| {0,3}\\t)/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text,\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2],\n text,\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n }\n else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text),\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: rtrim(cap[0], '\\n'),\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n let lines = rtrim(cap[0], '\\n').split('\\n');\n let raw = '';\n let text = '';\n const tokens = [];\n while (lines.length > 0) {\n let inBlockquote = false;\n const currentLines = [];\n let i;\n for (i = 0; i < lines.length; i++) {\n // get lines up to a continuation\n if (/^ {0,3}>/.test(lines[i])) {\n currentLines.push(lines[i]);\n inBlockquote = true;\n }\n else if (!inBlockquote) {\n currentLines.push(lines[i]);\n }\n else {\n break;\n }\n }\n lines = lines.slice(i);\n const currentRaw = currentLines.join('\\n');\n const currentText = currentRaw\n // precede setext continuation with 4 spaces so it isn't a setext\n .replace(/\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g, '\\n $1')\n .replace(/^ {0,3}>[ \\t]?/gm, '');\n raw = raw ? `${raw}\\n${currentRaw}` : currentRaw;\n text = text ? `${text}\\n${currentText}` : currentText;\n // parse blockquote lines as top level tokens\n // merge paragraphs if this is a continuation\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n this.lexer.blockTokens(currentText, tokens, true);\n this.lexer.state.top = top;\n // if there is no continuation then we are done\n if (lines.length === 0) {\n break;\n }\n const lastToken = tokens[tokens.length - 1];\n if (lastToken?.type === 'code') {\n // blockquote continuation cannot be preceded by a code block\n break;\n }\n else if (lastToken?.type === 'blockquote') {\n // include continuation in nested blockquote\n const oldToken = lastToken;\n const newText = oldToken.raw + '\\n' + lines.join('\\n');\n const newToken = this.blockquote(newText);\n tokens[tokens.length - 1] = newToken;\n raw = raw.substring(0, raw.length - oldToken.raw.length) + newToken.raw;\n text = text.substring(0, text.length - oldToken.text.length) + newToken.text;\n break;\n }\n else if (lastToken?.type === 'list') {\n // include continuation in nested list\n const oldToken = lastToken;\n const newText = oldToken.raw + '\\n' + lines.join('\\n');\n const newToken = this.list(newText);\n tokens[tokens.length - 1] = newToken;\n raw = raw.substring(0, raw.length - lastToken.raw.length) + newToken.raw;\n text = text.substring(0, text.length - oldToken.raw.length) + newToken.raw;\n lines = newText.substring(tokens[tokens.length - 1].raw.length).split('\\n');\n continue;\n }\n }\n return {\n type: 'blockquote',\n raw,\n tokens,\n text,\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: [],\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n let endsWithBlankLine = false;\n // Check if current bullet point can start a new List Item\n while (src) {\n let endEarly = false;\n let raw = '';\n let itemContents = '';\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n let line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n let nextLine = src.split('\\n', 1)[0];\n let blankLine = !line.trim();\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimStart();\n }\n else if (blankLine) {\n indent = cap[1].length + 1;\n }\n else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n if (blankLine && /^[ \\t]*$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n const htmlBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}<[a-z].*>`, 'i');\n // Check if following lines should be included in List Item\n while (src) {\n const rawLine = src.split('\\n', 1)[0];\n let nextLineWithoutTabs;\n nextLine = rawLine;\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n nextLineWithoutTabs = nextLine;\n }\n else {\n nextLineWithoutTabs = nextLine.replace(/\\t/g, ' ');\n }\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of html block\n if (htmlBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n // Horizontal rule found\n if (hrRegex.test(nextLine)) {\n break;\n }\n if (nextLineWithoutTabs.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLineWithoutTabs.slice(indent);\n }\n else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n // paragraph continuation unless last line was a different block level element\n if (line.replace(/\\t/g, ' ').search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += '\\n' + nextLine;\n }\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLineWithoutTabs.slice(indent);\n }\n }\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n }\n else if (/\\n[ \\t]*\\n[ \\t]*$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n let istask = null;\n let ischecked;\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents,\n tokens: [],\n });\n list.raw += raw;\n }\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = list.items[list.items.length - 1].raw.trimEnd();\n list.items[list.items.length - 1].text = list.items[list.items.length - 1].text.trimEnd();\n list.raw = list.raw.trimEnd();\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (let i = 0; i < list.items.length; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n list.loose = hasMultipleLineBreaks;\n }\n }\n // Set all items to loose if list is loose\n if (list.loose) {\n for (let i = 0; i < list.items.length; i++) {\n list.items[i].loose = true;\n }\n }\n return list;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n text: cap[0],\n };\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline.anyPunctuation, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title,\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (!cap) {\n return;\n }\n if (!/[:|]/.test(cap[2])) {\n // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n return;\n }\n const headers = splitCells(cap[1]);\n const aligns = cap[2].replace(/^\\||\\| *$/g, '').split('|');\n const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : [];\n const item = {\n type: 'table',\n raw: cap[0],\n header: [],\n align: [],\n rows: [],\n };\n if (headers.length !== aligns.length) {\n // header and align columns must be equal, rows can be different.\n return;\n }\n for (const align of aligns) {\n if (/^ *-+: *$/.test(align)) {\n item.align.push('right');\n }\n else if (/^ *:-+: *$/.test(align)) {\n item.align.push('center');\n }\n else if (/^ *:-+ *$/.test(align)) {\n item.align.push('left');\n }\n else {\n item.align.push(null);\n }\n }\n for (let i = 0; i < headers.length; i++) {\n item.header.push({\n text: headers[i],\n tokens: this.lexer.inline(headers[i]),\n header: true,\n align: item.align[i],\n });\n }\n for (const row of rows) {\n item.rows.push(splitCells(row, item.header.length).map((cell, i) => {\n return {\n text: cell,\n tokens: this.lexer.inline(cell),\n header: false,\n align: item.align[i],\n };\n }));\n }\n return item;\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1]),\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text),\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0]),\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape$1(cap[1]),\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n }\n else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: cap[0],\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n }\n else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n if (link) {\n href = link[1];\n title = link[3];\n }\n }\n else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n }\n else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href,\n title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title,\n }, cap[0], this.lexer);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n const linkString = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n const link = links[linkString.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text,\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrongLDelim.exec(src);\n if (!match)\n return;\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u))\n return;\n const nextChar = match[1] || match[2] || '';\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n endReg.lastIndex = 0;\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim)\n continue; // skip single * in __abc*abc__\n rLength = [...rDelim].length;\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n }\n else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0)\n continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n // char length can be >1 for unicode characters;\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text),\n };\n }\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text),\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape$1(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text,\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0],\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2]),\n };\n }\n }\n autolink(src) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape$1(cap[1]);\n href = 'mailto:' + text;\n }\n else {\n text = escape$1(cap[1]);\n href = text;\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text,\n },\n ],\n };\n }\n }\n url(src) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape$1(cap[0]);\n href = 'mailto:' + text;\n }\n else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? '';\n } while (prevCapZero !== cap[0]);\n text = escape$1(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n }\n else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text,\n },\n ],\n };\n }\n }\n inlineText(src) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = cap[0];\n }\n else {\n text = escape$1(cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text,\n };\n }\n }\n}\n\n/**\n * Block-Level Grammar\n */\nconst newline = /^(?:[ \\t]*(?:\\n|$))+/;\nconst blockCode = /^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/;\nconst fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nconst hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nconst heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nconst bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nconst lheading = edit(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/)\n .replace(/bull/g, bullet) // lists can interrupt\n .replace(/blockCode/g, /(?: {4}| {0,3}\\t)/) // indented code blocks can interrupt\n .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt\n .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt\n .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt\n .replace(/html/g, / {0,3}<[^\\n>]+>\\n/) // block html can interrupt\n .getRegex();\nconst _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nconst blockText = /^[^\\n]+/;\nconst _blockLabel = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nconst def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/)\n .replace('label', _blockLabel)\n .replace('title', /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/)\n .getRegex();\nconst list = edit(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/)\n .replace(/bull/g, bullet)\n .getRegex();\nconst _tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title'\n + '|tr|track|ul';\nconst _comment = /|$))/;\nconst html = edit('^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (7) closing tag\n + ')', 'i')\n .replace('comment', _comment)\n .replace('tag', _tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst paragraph = edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\nconst blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/)\n .replace('paragraph', paragraph)\n .getRegex();\n/**\n * Normal Block Grammar\n */\nconst blockNormal = {\n blockquote,\n code: blockCode,\n def,\n fences,\n heading,\n hr,\n html,\n lheading,\n list,\n newline,\n paragraph,\n table: noopTest,\n text: blockText,\n};\n/**\n * GFM Block Grammar\n */\nconst gfmTable = edit('^ *([^\\\\n ].*)\\\\n' // Header\n + ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)') // Cells\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('blockquote', ' {0,3}>')\n .replace('code', '(?: {4}| {0,3}\\t)[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\nconst blockGfm = {\n ...blockNormal,\n table: gfmTable,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('table', gfmTable) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex(),\n};\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\nconst blockPedantic = {\n ...blockNormal,\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', _comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', lheading)\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .replace('|tag', '')\n .getRegex(),\n};\n/**\n * Inline-Level Grammar\n */\nconst escape = /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/;\nconst inlineCode = /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/;\nconst br = /^( {2,}|\\\\)\\n(?!\\s*$)/;\nconst inlineText = /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\\nconst blockSkip = /\\[[^[\\]]*?\\]\\((?:\\\\.|[^\\\\\\(\\)]|\\((?:\\\\.|[^\\\\\\(\\)])*\\))*\\)|`[^`]*?`|<[^<>]*?>/g;\nconst emStrongLDelim = edit(/^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/, 'u')\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst emStrongRDelimAst = edit('^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)' // Skip orphan inside strong\n + '|[^*]+(?=[^*])' // Consume to delim\n + '|(?!\\\\*)[punct](\\\\*+)(?=[\\\\s]|$)' // (1) #*** can only be a Right Delimiter\n + '|[^punct\\\\s](\\\\*+)(?!\\\\*)(?=[punct\\\\s]|$)' // (2) a***#, a*** can only be a Right Delimiter\n + '|(?!\\\\*)[punct\\\\s](\\\\*+)(?=[^punct\\\\s])' // (3) #***a, ***a can only be Left Delimiter\n + '|[\\\\s](\\\\*+)(?!\\\\*)(?=[punct])' // (4) ***# can only be Left Delimiter\n + '|(?!\\\\*)[punct](\\\\*+)(?!\\\\*)(?=[punct])' // (5) #***# can be either Left or Right Delimiter\n + '|[^punct\\\\s](\\\\*+)(?=[^punct\\\\s])', 'gu') // (6) a***a can be either Left or Right Delimiter\n .replace(/punct/g, _punctuation)\n .getRegex();\n// (6) Not allowed for _\nconst emStrongRDelimUnd = edit('^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)' // Skip orphan inside strong\n + '|[^_]+(?=[^_])' // Consume to delim\n + '|(?!_)[punct](_+)(?=[\\\\s]|$)' // (1) #___ can only be a Right Delimiter\n + '|[^punct\\\\s](_+)(?!_)(?=[punct\\\\s]|$)' // (2) a___#, a___ can only be a Right Delimiter\n + '|(?!_)[punct\\\\s](_+)(?=[^punct\\\\s])' // (3) #___a, ___a can only be Left Delimiter\n + '|[\\\\s](_+)(?!_)(?=[punct])' // (4) ___# can only be Left Delimiter\n + '|(?!_)[punct](_+)(?!_)(?=[punct])', 'gu') // (5) #___# can be either Left or Right Delimiter\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst anyPunctuation = edit(/\\\\([punct])/, 'gu')\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst autolink = edit(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/)\n .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/)\n .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/)\n .getRegex();\nconst _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex();\nconst tag = edit('^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^') // CDATA section\n .replace('comment', _inlineComment)\n .replace('attribute', /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst _inlineLabel = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\nconst link = edit(/^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/)\n .replace('label', _inlineLabel)\n .replace('href', /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/)\n .replace('title', /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/)\n .getRegex();\nconst reflink = edit(/^!?\\[(label)\\]\\[(ref)\\]/)\n .replace('label', _inlineLabel)\n .replace('ref', _blockLabel)\n .getRegex();\nconst nolink = edit(/^!?\\[(ref)\\](?:\\[\\])?/)\n .replace('ref', _blockLabel)\n .getRegex();\nconst reflinkSearch = edit('reflink|nolink(?!\\\\()', 'g')\n .replace('reflink', reflink)\n .replace('nolink', nolink)\n .getRegex();\n/**\n * Normal Inline Grammar\n */\nconst inlineNormal = {\n _backpedal: noopTest, // only used for GFM url\n anyPunctuation,\n autolink,\n blockSkip,\n br,\n code: inlineCode,\n del: noopTest,\n emStrongLDelim,\n emStrongRDelimAst,\n emStrongRDelimUnd,\n escape,\n link,\n nolink,\n punctuation,\n reflink,\n reflinkSearch,\n tag,\n text: inlineText,\n url: noopTest,\n};\n/**\n * Pedantic Inline Grammar\n */\nconst inlinePedantic = {\n ...inlineNormal,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', _inlineLabel)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', _inlineLabel)\n .getRegex(),\n};\n/**\n * GFM Inline Grammar\n */\nconst inlineGfm = {\n ...inlineNormal,\n escape: edit(escape).replace('])', '~|])').getRegex(),\n url: edit(/^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/, 'i')\n .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/)\n .getRegex(),\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unnecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title,\n };\n }\n continue;\n }\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken?.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n this.state.top = true;\n return tokens;\n }\n inline(src, tokens = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // autolink\n if (token = this.tokenizer.autolink(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n return tokens;\n }\n}\n\n/**\n * Renderer\n */\nclass _Renderer {\n options;\n parser; // set by the parser\n constructor(options) {\n this.options = options || _defaults;\n }\n space(token) {\n return '';\n }\n code({ text, lang, escaped }) {\n const langString = (lang || '').match(/^\\S*/)?.[0];\n const code = text.replace(/\\n$/, '') + '\\n';\n if (!langString) {\n return '

'\n                + (escaped ? code : escape$1(code, true))\n                + '
\\n';\n }\n return '
'\n            + (escaped ? code : escape$1(code, true))\n            + '
\\n';\n }\n blockquote({ tokens }) {\n const body = this.parser.parse(tokens);\n return `
\\n${body}
\\n`;\n }\n html({ text }) {\n return text;\n }\n heading({ tokens, depth }) {\n return `${this.parser.parseInline(tokens)}\\n`;\n }\n hr(token) {\n return '
\\n';\n }\n list(token) {\n const ordered = token.ordered;\n const start = token.start;\n let body = '';\n for (let j = 0; j < token.items.length; j++) {\n const item = token.items[j];\n body += this.listitem(item);\n }\n const type = ordered ? 'ol' : 'ul';\n const startAttr = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startAttr + '>\\n' + body + '\\n';\n }\n listitem(item) {\n let itemBody = '';\n if (item.task) {\n const checkbox = this.checkbox({ checked: !!item.checked });\n if (item.loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n }\n else {\n item.tokens.unshift({\n type: 'text',\n raw: checkbox + ' ',\n text: checkbox + ' ',\n });\n }\n }\n else {\n itemBody += checkbox + ' ';\n }\n }\n itemBody += this.parser.parse(item.tokens, !!item.loose);\n return `
  • ${itemBody}
  • \\n`;\n }\n checkbox({ checked }) {\n return '';\n }\n paragraph({ tokens }) {\n return `

    ${this.parser.parseInline(tokens)}

    \\n`;\n }\n table(token) {\n let header = '';\n // header\n let cell = '';\n for (let j = 0; j < token.header.length; j++) {\n cell += this.tablecell(token.header[j]);\n }\n header += this.tablerow({ text: cell });\n let body = '';\n for (let j = 0; j < token.rows.length; j++) {\n const row = token.rows[j];\n cell = '';\n for (let k = 0; k < row.length; k++) {\n cell += this.tablecell(row[k]);\n }\n body += this.tablerow({ text: cell });\n }\n if (body)\n body = `${body}`;\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n tablerow({ text }) {\n return `\\n${text}\\n`;\n }\n tablecell(token) {\n const content = this.parser.parseInline(token.tokens);\n const type = token.header ? 'th' : 'td';\n const tag = token.align\n ? `<${type} align=\"${token.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n /**\n * span level renderer\n */\n strong({ tokens }) {\n return `${this.parser.parseInline(tokens)}`;\n }\n em({ tokens }) {\n return `${this.parser.parseInline(tokens)}`;\n }\n codespan({ text }) {\n return `${text}`;\n }\n br(token) {\n return '
    ';\n }\n del({ tokens }) {\n return `${this.parser.parseInline(tokens)}`;\n }\n link({ href, title, tokens }) {\n const text = this.parser.parseInline(tokens);\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = '
    ';\n return out;\n }\n image({ href, title, text }) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = `\"${text}\"`;\n {\n const tokens = genericToken[childTokens].flat(Infinity);\n values = values.concat(this.walkTokens(tokens, callback));\n });\n }\n else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n use(...args) {\n const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack };\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function (...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n }\n else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n }\n else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n }\n else {\n extensions.startBlock = [ext.start];\n }\n }\n else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n }\n else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n if (!(prop in renderer)) {\n throw new Error(`renderer '${prop}' does not exist`);\n }\n if (['options', 'parser'].includes(prop)) {\n // ignore options property\n continue;\n }\n const rendererProp = prop;\n const rendererFunc = pack.renderer[rendererProp];\n const prevRenderer = renderer[rendererProp];\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererProp] = (...args) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n if (!(prop in tokenizer)) {\n throw new Error(`tokenizer '${prop}' does not exist`);\n }\n if (['options', 'rules', 'lexer'].includes(prop)) {\n // ignore options, rules, and lexer properties\n continue;\n }\n const tokenizerProp = prop;\n const tokenizerFunc = pack.tokenizer[tokenizerProp];\n const prevTokenizer = tokenizer[tokenizerProp];\n // Replace tokenizer with func to run extension, but fall back if false\n // @ts-expect-error cannot type tokenizer function dynamically\n tokenizer[tokenizerProp] = (...args) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n if (!(prop in hooks)) {\n throw new Error(`hook '${prop}' does not exist`);\n }\n if (['options', 'block'].includes(prop)) {\n // ignore options and block properties\n continue;\n }\n const hooksProp = prop;\n const hooksFunc = pack.hooks[hooksProp];\n const prevHook = hooks[hooksProp];\n if (_Hooks.passThroughHooks.has(prop)) {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (arg) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n }\n else {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (...args) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function (token) {\n let values = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n this.defaults = { ...this.defaults, ...opts };\n });\n return this;\n }\n setOptions(opt) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n lexer(src, options) {\n return _Lexer.lex(src, options ?? this.defaults);\n }\n parser(tokens, options) {\n return _Parser.parse(tokens, options ?? this.defaults);\n }\n parseMarkdown(blockType) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const parse = (src, options) => {\n const origOpt = { ...options };\n const opt = { ...this.defaults, ...origOpt };\n const throwError = this.onError(!!opt.silent, !!opt.async);\n // throw error if an extension set async to true but parse was called with async: false\n if (this.defaults.async === true && origOpt.async === false) {\n return throwError(new Error('marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.'));\n }\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n if (opt.hooks) {\n opt.hooks.options = opt;\n opt.hooks.block = blockType;\n }\n const lexer = opt.hooks ? opt.hooks.provideLexer() : (blockType ? _Lexer.lex : _Lexer.lexInline);\n const parser = opt.hooks ? opt.hooks.provideParser() : (blockType ? _Parser.parse : _Parser.parseInline);\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens)\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n let tokens = lexer(src, opt);\n if (opt.hooks) {\n tokens = opt.hooks.processAllTokens(tokens);\n }\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n }\n catch (e) {\n return throwError(e);\n }\n };\n return parse;\n }\n onError(silent, async) {\n return (e) => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (silent) {\n const msg = '

    An error occurred:

    '\n                    + escape$1(e.message + '', true)\n                    + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n}\n\nconst markedInstance = new Marked();\nfunction marked(src, opt) {\n return markedInstance.parse(src, opt);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n marked.setOptions = function (options) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n };\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nconst options = marked.options;\nconst setOptions = marked.setOptions;\nconst use = marked.use;\nconst walkTokens = marked.walkTokens;\nconst parseInline = marked.parseInline;\nconst parse = marked;\nconst parser = _Parser.parse;\nconst lexer = _Lexer.lex;\n\nexport { _Hooks as Hooks, _Lexer as Lexer, Marked, _Parser as Parser, _Renderer as Renderer, _TextRenderer as TextRenderer, _Tokenizer as Tokenizer, _defaults as defaults, _getDefaults as getDefaults, lexer, marked, options, parse, parseInline, parser, setOptions, use, walkTokens };\n//# sourceMappingURL=marked.esm.js.map\n","/*! @license DOMPurify 3.1.7 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.1.7/LICENSE */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.DOMPurify = factory());\n})(this, (function () { 'use strict';\n\n const {\n entries,\n setPrototypeOf,\n isFrozen,\n getPrototypeOf,\n getOwnPropertyDescriptor\n } = Object;\n let {\n freeze,\n seal,\n create\n } = Object; // eslint-disable-line import/no-mutable-exports\n let {\n apply,\n construct\n } = typeof Reflect !== 'undefined' && Reflect;\n if (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n }\n if (!seal) {\n seal = function seal(x) {\n return x;\n };\n }\n if (!apply) {\n apply = function apply(fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n }\n if (!construct) {\n construct = function construct(Func, args) {\n return new Func(...args);\n };\n }\n const arrayForEach = unapply(Array.prototype.forEach);\n const arrayPop = unapply(Array.prototype.pop);\n const arrayPush = unapply(Array.prototype.push);\n const stringToLowerCase = unapply(String.prototype.toLowerCase);\n const stringToString = unapply(String.prototype.toString);\n const stringMatch = unapply(String.prototype.match);\n const stringReplace = unapply(String.prototype.replace);\n const stringIndexOf = unapply(String.prototype.indexOf);\n const stringTrim = unapply(String.prototype.trim);\n const objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\n const regExpTest = unapply(RegExp.prototype.test);\n const typeErrorCreate = unconstruct(TypeError);\n\n /**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param {Function} func - The function to be wrapped and called.\n * @returns {Function} A new function that calls the given function with a specified thisArg and arguments.\n */\n function unapply(func) {\n return function (thisArg) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n return apply(func, thisArg, args);\n };\n }\n\n /**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param {Function} func - The constructor function to be wrapped and called.\n * @returns {Function} A new function that constructs an instance of the given constructor function with the provided arguments.\n */\n function unconstruct(func) {\n return function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return construct(func, args);\n };\n }\n\n /**\n * Add properties to a lookup table\n *\n * @param {Object} set - The set to which elements will be added.\n * @param {Array} array - The array containing elements to be added to the set.\n * @param {Function} transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns {Object} The modified set with added elements.\n */\n function addToSet(set, array) {\n let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n let l = array.length;\n while (l--) {\n let element = array[l];\n if (typeof element === 'string') {\n const lcElement = transformCaseFunc(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n element = lcElement;\n }\n }\n set[element] = true;\n }\n return set;\n }\n\n /**\n * Clean up an array to harden against CSPP\n *\n * @param {Array} array - The array to be cleaned.\n * @returns {Array} The cleaned version of the array\n */\n function cleanArray(array) {\n for (let index = 0; index < array.length; index++) {\n const isPropertyExist = objectHasOwnProperty(array, index);\n if (!isPropertyExist) {\n array[index] = null;\n }\n }\n return array;\n }\n\n /**\n * Shallow clone an object\n *\n * @param {Object} object - The object to be cloned.\n * @returns {Object} A new object that copies the original.\n */\n function clone(object) {\n const newObject = create(null);\n for (const [property, value] of entries(object)) {\n const isPropertyExist = objectHasOwnProperty(object, property);\n if (isPropertyExist) {\n if (Array.isArray(value)) {\n newObject[property] = cleanArray(value);\n } else if (value && typeof value === 'object' && value.constructor === Object) {\n newObject[property] = clone(value);\n } else {\n newObject[property] = value;\n }\n }\n }\n return newObject;\n }\n\n /**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param {Object} object - The object to look up the getter function in its prototype chain.\n * @param {String} prop - The property name for which to find the getter function.\n * @returns {Function} The getter function found in the prototype chain or a fallback function.\n */\n function lookupGetter(object, prop) {\n while (object !== null) {\n const desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n object = getPrototypeOf(object);\n }\n function fallbackValue() {\n return null;\n }\n return fallbackValue;\n }\n\n const html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\n\n // SVG\n const svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\n const svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n\n // List of SVG elements that are disallowed by default.\n // We still need to know them so that we can do namespace\n // checks properly in case one wants to add them to\n // allow-list.\n const svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\n const mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']);\n\n // Similarly to SVG, we want to know all MathML elements,\n // even those that we disallow by default.\n const mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\n const text = freeze(['#text']);\n\n const html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']);\n const svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\n const mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\n const xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n // eslint-disable-next-line unicorn/better-regex\n const MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\n const ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\n const TMPLIT_EXPR = seal(/\\${[\\w\\W]*}/gm);\n const DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\n const ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\n const IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n );\n const IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\n const ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n );\n const DOCTYPE_NAME = seal(/^html$/i);\n const CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n\n var EXPRESSIONS = /*#__PURE__*/Object.freeze({\n __proto__: null,\n MUSTACHE_EXPR: MUSTACHE_EXPR,\n ERB_EXPR: ERB_EXPR,\n TMPLIT_EXPR: TMPLIT_EXPR,\n DATA_ATTR: DATA_ATTR,\n ARIA_ATTR: ARIA_ATTR,\n IS_ALLOWED_URI: IS_ALLOWED_URI,\n IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE: ATTR_WHITESPACE,\n DOCTYPE_NAME: DOCTYPE_NAME,\n CUSTOM_ELEMENT: CUSTOM_ELEMENT\n });\n\n // https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\n const NODE_TYPE = {\n element: 1,\n attribute: 2,\n text: 3,\n cdataSection: 4,\n entityReference: 5,\n // Deprecated\n entityNode: 6,\n // Deprecated\n progressingInstruction: 7,\n comment: 8,\n document: 9,\n documentType: 10,\n documentFragment: 11,\n notation: 12 // Deprecated\n };\n const getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n };\n\n /**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param {TrustedTypePolicyFactory} trustedTypes The policy factory.\n * @param {HTMLScriptElement} purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return {TrustedTypePolicy} The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\n const _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n }\n\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n let suffix = null;\n const ATTR_NAME = 'data-tt-policy-suffix';\n if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n suffix = purifyHostElement.getAttribute(ATTR_NAME);\n }\n const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML(html) {\n return html;\n },\n createScriptURL(scriptUrl) {\n return scriptUrl;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n };\n function createDOMPurify() {\n let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n const DOMPurify = root => createDOMPurify(root);\n\n /**\n * Version label, exposed for easier checks\n * if DOMPurify is up to date or not\n */\n DOMPurify.version = '3.1.7';\n\n /**\n * Array of elements that DOMPurify removed during sanitation.\n * Empty if nothing was removed.\n */\n DOMPurify.removed = [];\n if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n return DOMPurify;\n }\n let {\n document\n } = window;\n const originalDocument = document;\n const currentScript = originalDocument.currentScript;\n const {\n DocumentFragment,\n HTMLTemplateElement,\n Node,\n Element,\n NodeFilter,\n NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n HTMLFormElement,\n DOMParser,\n trustedTypes\n } = window;\n const ElementPrototype = Element.prototype;\n const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n const remove = lookupGetter(ElementPrototype, 'remove');\n const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n const template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n let trustedTypesPolicy;\n let emptyHTML = '';\n const {\n implementation,\n createNodeIterator,\n createDocumentFragment,\n getElementsByTagName\n } = document;\n const {\n importNode\n } = originalDocument;\n let hooks = {};\n\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;\n const {\n MUSTACHE_EXPR,\n ERB_EXPR,\n TMPLIT_EXPR,\n DATA_ATTR,\n ARIA_ATTR,\n IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE,\n CUSTOM_ELEMENT\n } = EXPRESSIONS;\n let {\n IS_ALLOWED_URI: IS_ALLOWED_URI$1\n } = EXPRESSIONS;\n\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n\n /* allowed element names */\n let ALLOWED_TAGS = null;\n const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);\n\n /* Allowed attribute names */\n let ALLOWED_ATTR = null;\n const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);\n\n /*\n * Configure how DOMPUrify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false\n }\n }));\n\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n let FORBID_TAGS = null;\n\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n let FORBID_ATTR = null;\n\n /* Decide if ARIA attributes are okay */\n let ALLOW_ARIA_ATTR = true;\n\n /* Decide if custom data attributes are okay */\n let ALLOW_DATA_ATTR = true;\n\n /* Decide if unknown protocols are okay */\n let ALLOW_UNKNOWN_PROTOCOLS = false;\n\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n let ALLOW_SELF_CLOSE_IN_ATTR = true;\n\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n let SAFE_FOR_TEMPLATES = false;\n\n /* Output should be safe even for XML used within HTML and alike.\n * This means, DOMPurify removes comments when containing risky content.\n */\n let SAFE_FOR_XML = true;\n\n /* Decide if document with ... should be returned */\n let WHOLE_DOCUMENT = false;\n\n /* Track whether config is already set on this instance of DOMPurify. */\n let SET_CONFIG = false;\n\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n let FORCE_BODY = false;\n\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n let RETURN_DOM = false;\n\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n let RETURN_DOM_FRAGMENT = false;\n\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n let RETURN_TRUSTED_TYPE = false;\n\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n let SANITIZE_DOM = true;\n\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n let SANITIZE_NAMED_PROPS = false;\n const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n\n /* Keep element content when removing element? */\n let KEEP_CONTENT = true;\n\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n let IN_PLACE = false;\n\n /* Allow usage of profiles like html, svg and mathMl */\n let USE_PROFILES = {};\n\n /* Tags to ignore content of when KEEP_CONTENT is true */\n let FORBID_CONTENTS = null;\n const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n\n /* Tags that are safe for data: URIs */\n let DATA_URI_TAGS = null;\n const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n\n /* Attributes safe for values like \"javascript:\" */\n let URI_SAFE_ATTRIBUTES = null;\n const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n let NAMESPACE = HTML_NAMESPACE;\n let IS_EMPTY_INPUT = false;\n\n /* Allowed XHTML+XML namespaces */\n let ALLOWED_NAMESPACES = null;\n const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n\n /* Parsing of strict XHTML documents */\n let PARSER_MEDIA_TYPE = null;\n const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n let transformCaseFunc = null;\n\n /* Keep a reference to config to pass to hooks */\n let CONFIG = null;\n\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n\n const formElement = document.createElement('form');\n const isRegexOrFunction = function isRegexOrFunction(testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n\n /**\n * _parseConfig\n *\n * @param {Object} cfg optional config literal\n */\n // eslint-disable-next-line complexity\n const _parseConfig = function _parseConfig() {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n\n /* Shield configuration object from tampering */\n if (!cfg || typeof cfg !== 'object') {\n cfg = {};\n }\n\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;\n\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n\n /* Set configuration parameters */\n ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES),\n // eslint-disable-line indent\n cfg.ADD_URI_SAFE_ATTR,\n // eslint-disable-line indent\n transformCaseFunc // eslint-disable-line indent\n ) // eslint-disable-line indent\n : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone(DEFAULT_DATA_URI_TAGS),\n // eslint-disable-line indent\n cfg.ADD_DATA_URI_TAGS,\n // eslint-disable-line indent\n transformCaseFunc // eslint-disable-line indent\n ) // eslint-disable-line indent\n : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {};\n FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {};\n USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, text);\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html$1);\n addToSet(ALLOWED_ATTR, html);\n }\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg$1);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl$1);\n addToSet(ALLOWED_ATTR, mathMl);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n if (cfg.TRUSTED_TYPES_POLICY) {\n if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');\n }\n if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');\n }\n\n // Overwrite existing TrustedTypes policy.\n trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n\n // Sign local variables required by `sanitize`.\n emptyHTML = trustedTypesPolicy.createHTML('');\n } else {\n // Uninitialized policy, attempt to initialize the internal dompurify policy.\n if (trustedTypesPolicy === undefined) {\n trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);\n }\n\n // If creating the internal policy succeeded sign internal variables.\n if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n emptyHTML = trustedTypesPolicy.createHTML('');\n }\n }\n\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n CONFIG = cfg;\n };\n const MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n const HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);\n const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);\n\n /**\n * @param {Element} element a DOM element whose namespace is being checked\n * @returns {boolean} Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n const _checkValidNamespace = function _checkValidNamespace(element) {\n let parent = getParentNode(element);\n\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template'\n };\n }\n const tagName = stringToLowerCase(element.tagName);\n const parentTagName = stringToLowerCase(parent.tagName);\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n\n // The only way to switch from MathML to SVG is via`\n // svg if parent is either or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n }\n\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n\n // The only way to switch from SVG to MathML is via\n // and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n }\n\n // For XHTML and XML documents that support custom namespaces\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n return true;\n }\n\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n return false;\n };\n\n /**\n * _forceRemove\n *\n * @param {Node} node a DOM node\n */\n const _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, {\n element: node\n });\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n getParentNode(node).removeChild(node);\n } catch (_) {\n remove(node);\n }\n };\n\n /**\n * _removeAttribute\n *\n * @param {String} name an Attribute name\n * @param {Node} node a DOM node\n */\n const _removeAttribute = function _removeAttribute(name, node) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: node.getAttributeNode(name),\n from: node\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: node\n });\n }\n node.removeAttribute(name);\n\n // We void attribute values for unremovable \"is\"\" attributes\n if (name === 'is' && !ALLOWED_ATTR[name]) {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(node);\n } catch (_) {}\n } else {\n try {\n node.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n\n /**\n * _initDocument\n *\n * @param {String} dirty a string of dirty markup\n * @return {Document} a DOM, filled with the dirty markup\n */\n const _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n let doc = null;\n let leadingWhitespace = null;\n if (FORCE_BODY) {\n dirty = '' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty = '' + dirty + '';\n }\n const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n const body = doc.body || doc.documentElement;\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n\n /**\n * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n *\n * @param {Node} root The root element or node to start traversing on.\n * @return {NodeIterator} The created NodeIterator\n */\n const _createNodeIterator = function _createNodeIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);\n };\n\n /**\n * _isClobbered\n *\n * @param {Node} elm element to check for clobbering attacks\n * @return {Boolean} true if clobbered, false if safe\n */\n const _isClobbered = function _isClobbered(elm) {\n return elm instanceof HTMLFormElement && (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function' || typeof elm.namespaceURI !== 'string' || typeof elm.insertBefore !== 'function' || typeof elm.hasChildNodes !== 'function');\n };\n\n /**\n * Checks whether the given object is a DOM node.\n *\n * @param {Node} object object to check whether it's a DOM node\n * @return {Boolean} true is object is a DOM node\n */\n const _isNode = function _isNode(object) {\n return typeof Node === 'function' && object instanceof Node;\n };\n\n /**\n * _executeHook\n * Execute user configurable hooks\n *\n * @param {String} entryPoint Name of the hook's entry point\n * @param {Node} currentNode node to work on with the hook\n * @param {Object} data additional hook parameters\n */\n const _executeHook = function _executeHook(entryPoint, currentNode, data) {\n if (!hooks[entryPoint]) {\n return;\n }\n arrayForEach(hooks[entryPoint], hook => {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n };\n\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n *\n * @param {Node} currentNode to check for permission to exist\n * @return {Boolean} true if node was killed, false if left alive\n */\n const _sanitizeElements = function _sanitizeElements(currentNode) {\n let content = null;\n\n /* Execute a hook if present */\n _executeHook('beforeSanitizeElements', currentNode, null);\n\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Now let's check the element's type and name */\n const tagName = transformCaseFunc(currentNode.nodeName);\n\n /* Execute a hook if present */\n _executeHook('uponSanitizeElement', currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS\n });\n\n /* Detect mXSS attempts abusing namespace confusion */\n if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove any occurrence of processing instructions */\n if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove any kind of possibly harmful comments */\n if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\\w]/g, currentNode.data)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove element if anything forbids its presence */\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {\n return false;\n }\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {\n return false;\n }\n }\n\n /* Keep content except for bad-listed elements */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n if (childNodes && parentNode) {\n const childCount = childNodes.length;\n for (let i = childCount - 1; i >= 0; --i) {\n const childClone = cloneNode(childNodes[i], true);\n childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n parentNode.insertBefore(childClone, getNextSibling(currentNode));\n }\n }\n }\n _forceRemove(currentNode);\n return true;\n }\n\n /* Check whether element has a valid namespace */\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Make sure that older browsers don't get fallback-tag mXSS */\n if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n /* Get the element's text content */\n content = currentNode.textContent;\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n content = stringReplace(content, expr, ' ');\n });\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, {\n element: currentNode.cloneNode()\n });\n currentNode.textContent = content;\n }\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeElements', currentNode, null);\n return false;\n };\n\n /**\n * _isValidAttribute\n *\n * @param {string} lcTag Lowercase tag name of containing element.\n * @param {string} lcName Lowercase attribute name.\n * @param {string} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n /* Make sure attribute cannot clobber */\n if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n return false;\n }\n\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if (\n // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) ||\n // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) {\n return false;\n } else ;\n return true;\n };\n\n /**\n * _isBasicCustomElement\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n *\n * @param {string} tagName name of the tag of the node to sanitize\n * @returns {boolean} Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n */\n const _isBasicCustomElement = function _isBasicCustomElement(tagName) {\n return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n };\n\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param {Node} currentNode to sanitize\n */\n const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n /* Execute a hook if present */\n _executeHook('beforeSanitizeAttributes', currentNode, null);\n const {\n attributes\n } = currentNode;\n\n /* Check if we have attributes; if not we might have a text node */\n if (!attributes) {\n return;\n }\n const hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR\n };\n let l = attributes.length;\n\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n const attr = attributes[l];\n const {\n name,\n namespaceURI,\n value: attrValue\n } = attr;\n const lcName = transformCaseFunc(name);\n let value = name === 'value' ? attrValue : stringTrim(attrValue);\n\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n _executeHook('uponSanitizeAttribute', currentNode, hookEvent);\n value = hookEvent.attrValue;\n\n /* Did the hooks approve of the attribute? */\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n\n /* Remove attribute */\n _removeAttribute(name, currentNode);\n\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n continue;\n }\n\n /* Work around a security issue in jQuery 3.0 */\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n value = stringReplace(value, expr, ' ');\n });\n }\n\n /* Is `value` valid for this attribute? */\n const lcTag = transformCaseFunc(currentNode.nodeName);\n if (!_isValidAttribute(lcTag, lcName, value)) {\n continue;\n }\n\n /* Full DOM Clobbering protection via namespace isolation,\n * Prefix id and name attributes with `user-content-`\n */\n if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n // Remove the attribute with this value\n _removeAttribute(name, currentNode);\n\n // Prefix the value and later re-create the attribute with the sanitized value\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n\n /* Work around a security issue with comments inside attributes */\n if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|title)/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Handle attributes that require Trusted Types */\n if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n if (namespaceURI) ; else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case 'TrustedHTML':\n {\n value = trustedTypesPolicy.createHTML(value);\n break;\n }\n case 'TrustedScriptURL':\n {\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n }\n }\n }\n\n /* Handle invalid data-* attribute set by try-catching it */\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n } else {\n arrayPop(DOMPurify.removed);\n }\n } catch (_) {}\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeAttributes', currentNode, null);\n };\n\n /**\n * _sanitizeShadowDOM\n *\n * @param {DocumentFragment} fragment to iterate over recursively\n */\n const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n let shadowNode = null;\n const shadowIterator = _createNodeIterator(fragment);\n\n /* Execute a hook if present */\n _executeHook('beforeSanitizeShadowDOM', fragment, null);\n while (shadowNode = shadowIterator.nextNode()) {\n /* Execute a hook if present */\n _executeHook('uponSanitizeShadowNode', shadowNode, null);\n\n /* Sanitize tags and elements */\n if (_sanitizeElements(shadowNode)) {\n continue;\n }\n\n /* Deep shadow DOM detected */\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n\n /* Check attributes, sanitize if necessary */\n _sanitizeAttributes(shadowNode);\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeShadowDOM', fragment, null);\n };\n\n /**\n * Sanitize\n * Public method providing core sanitation functionality\n *\n * @param {String|Node} dirty string or DOM node\n * @param {Object} cfg object\n */\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty) {\n let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let body = null;\n let importedNode = null;\n let currentNode = null;\n let returnNode = null;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = '';\n }\n\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n if (typeof dirty.toString === 'function') {\n dirty = dirty.toString();\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n } else {\n throw typeErrorCreate('toString is not a function');\n }\n }\n\n /* Return dirty HTML if DOMPurify cannot run */\n if (!DOMPurify.isSupported) {\n return dirty;\n }\n\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n\n /* Clean up removed elements */\n DOMPurify.removed = [];\n\n /* Check if dirty is correctly typed for IN_PLACE */\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n if (IN_PLACE) {\n /* Do some early pre-sanitization to avoid unsafe root nodes */\n if (dirty.nodeName) {\n const tagName = transformCaseFunc(dirty.nodeName);\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n }\n }\n } else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&\n // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n\n /* Get node iterator */\n const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n\n /* Now start iterating over the created document */\n while (currentNode = nodeIterator.nextNode()) {\n /* Sanitize tags and elements */\n if (_sanitizeElements(currentNode)) {\n continue;\n }\n\n /* Shadow DOM detected, sanitize it */\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n\n /* Check attributes, sanitize if necessary */\n _sanitizeAttributes(currentNode);\n }\n\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n return dirty;\n }\n\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n return returnNode;\n }\n let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\n /* Serialize doctype if allowed */\n if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n serializedHTML = '\\n' + serializedHTML;\n }\n\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n serializedHTML = stringReplace(serializedHTML, expr, ' ');\n });\n }\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n\n /**\n * Public method to set the configuration once\n * setConfig\n *\n * @param {Object} cfg configuration object\n */\n DOMPurify.setConfig = function () {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n\n /**\n * Public method to remove the configuration\n * clearConfig\n *\n */\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n\n /**\n * Public method to check if an attribute value is valid.\n * Uses last set config, if any. Otherwise, uses config defaults.\n * isValidAttribute\n *\n * @param {String} tag Tag name of containing element.\n * @param {String} attr Attribute name.\n * @param {String} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid. Otherwise, returns false.\n */\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n const lcTag = transformCaseFunc(tag);\n const lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n\n /**\n * AddHook\n * Public method to add DOMPurify hooks\n *\n * @param {String} entryPoint entry point for the hook to add\n * @param {Function} hookFunction function to execute\n */\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n hooks[entryPoint] = hooks[entryPoint] || [];\n arrayPush(hooks[entryPoint], hookFunction);\n };\n\n /**\n * RemoveHook\n * Public method to remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if more are present)\n *\n * @param {String} entryPoint entry point for the hook to remove\n * @return {Function} removed(popped) hook\n */\n DOMPurify.removeHook = function (entryPoint) {\n if (hooks[entryPoint]) {\n return arrayPop(hooks[entryPoint]);\n }\n };\n\n /**\n * RemoveHooks\n * Public method to remove all DOMPurify hooks at a given entryPoint\n *\n * @param {String} entryPoint entry point for the hooks to remove\n */\n DOMPurify.removeHooks = function (entryPoint) {\n if (hooks[entryPoint]) {\n hooks[entryPoint] = [];\n }\n };\n\n /**\n * RemoveAllHooks\n * Public method to remove all DOMPurify hooks\n */\n DOMPurify.removeAllHooks = function () {\n hooks = {};\n };\n return DOMPurify;\n }\n var purify = createDOMPurify();\n\n return purify;\n\n}));\n//# sourceMappingURL=purify.js.map\n","module.exports = window.DOMPurify || (window.DOMPurify = require('dompurify').default || require('dompurify'));\n","export function getUrlObject(url) {\n if (!url || url.startsWith(\"/\") || url.startsWith(\"?\")) {\n return null;\n }\n\n try {\n const urlObj = new URL(url);\n return urlObj;\n } catch (e) {\n console.warn(`can't convert \"${url}\" to URL object`);\n return null;\n }\n}\n\nconst INTERNAL_ORIGINS = [\"https://www.obama.org\", \"http://www.obama.org\", \"https://obama.org\"];\n\nexport function isExternalUrl(url, currentOrigin) {\n if (!url || url.startsWith(\"/\") || url.startsWith(\"?\")) {\n return false;\n }\n\n const urlObj = getUrlObject(url);\n if (urlObj) {\n const targetOrigin = urlObj.origin;\n if (INTERNAL_ORIGINS.includes(targetOrigin)) {\n return false;\n }\n return targetOrigin !== currentOrigin;\n }\n // Default to the link being external if we can't figure out the origin\n return true;\n}\n\n/*\n correctedUrl \n a) makes internal full links relative (So www.obama.org/about becomes /about, so sveltekit will render page on static build)\n b) adds trailing slash if not \n*/\nexport function correctedUrl(url) {\n let isExternal = isExternalUrl(url);\n if (!isExternal) {\n const urlObj = getUrlObject(url);\n if (urlObj) {\n url = urlObj.pathname;\n }\n }\n return isMissingTrailingSlash(url) ? `${url}/` : url;\n}\n\n/**\n * naïve helper to add the origin to url if internal\n *\n * @param {*} url\n * @param {*} currentOrigin\n * @returns\n */\nexport function getFullUrl(url, currentOrigin) {\n if (!url) {\n return \"\";\n }\n\n if (url.startsWith(\"/\") || url.startsWith(\"?\")) {\n return `${currentOrigin}${url?.startsWith(\"/\") ? \"\" : \"/\"}${url}`;\n }\n\n return url;\n}\n\nexport function isNotStaticFile(url) {\n const types = [\".pdf\", \".mp4\", \".html\", \".jpg\", \".jpeg\", \".png\", \".csv\", \".zip\"];\n return !types.some((type) => url.includes(type));\n}\n\nexport function isRootRelative(url) {\n return url.startsWith(\"/\");\n}\n\nexport function hasNoTrailingSlash(url) {\n return !url.endsWith(\"/\") && !url.match(/(\\/)?#.*$/) && !url.match(/(\\/)?\\?.*$/);\n}\n\nexport function isMissingTrailingSlash(url) {\n return !!url && isNotStaticFile(url) && isRootRelative(url) && hasNoTrailingSlash(url);\n}\n","export const IMAGE_VARIANT_MAP = {\n \"1:1\": \"square\",\n \"3:2\": \"landscape\",\n \"3:4\": \"portrait\"\n};\nexport const ASPECT_RATIO_CLASSES = {\n RATIO_1_1: \"aspect-1/1\",\n RATIO_4_3: \"aspect-4/3\",\n RATIO_3_2: \"aspect-3/2\",\n RATIO_3_4: \"aspect-3/4\",\n RATIO_AUTO: \"aspect-[auto]\"\n};\n\nexport const STORY_CARD_ASPECT_RATIO_CLASSES = {\n RATIO_1_1: \"aspect-1/1\",\n RATIO_3_2: \"aspect-3/2\",\n RATIO_3_4: \"aspect-3/4\"\n};\n\n// A sensible array of widths for srcset.\nexport const SRCSET_WIDTHS = [180, 360, 420, 720, 850, 1250, 1670, 3200];\n","/**\n * marked v10.0.0 - a markdown parser\n * Copyright (c) 2011-2023, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\n/**\n * Gets the original marked default options.\n */\nfunction _getDefaults() {\n return {\n async: false,\n breaks: false,\n extensions: null,\n gfm: true,\n hooks: null,\n pedantic: false,\n renderer: null,\n silent: false,\n tokenizer: null,\n walkTokens: null\n };\n}\nlet _defaults = _getDefaults();\nfunction changeDefaults(newDefaults) {\n _defaults = newDefaults;\n}\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n }\n else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html;\n}\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\nfunction unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon')\n return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\nconst caret = /(^|[^\\[])\\^/g;\nfunction edit(regex, opt) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n val = typeof val === 'object' && 'source' in val ? val.source : val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\nfunction cleanUrl(href) {\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n }\n catch (e) {\n return null;\n }\n return href;\n}\nconst noopTest = { exec: () => null };\nfunction splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\')\n escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n }\n else {\n // add space before unescaped |\n return ' |';\n }\n }), cells = row.split(/ \\|/);\n let i = 0;\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n }\n else {\n while (cells.length < count)\n cells.push('');\n }\n }\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nfunction rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n }\n else if (currChar !== c && invert) {\n suffLen++;\n }\n else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n }\n else if (str[i] === b[0]) {\n level++;\n }\n else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n })\n .join('\\n');\n}\n/**\n * Tokenizer\n */\nclass _Tokenizer {\n options;\n // TODO: Fix this rules type\n rules;\n lexer;\n constructor(options) {\n this.options = options || _defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n }\n else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = rtrim(cap[0].replace(/^ *>[ \\t]?/gm, ''), '\\n');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n let raw = '';\n let itemContents = '';\n let endsWithBlankLine = false;\n // Check if current bullet point can start a new List Item\n while (src) {\n let endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n let line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n let nextLine = src.split('\\n', 1)[0];\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimStart();\n }\n else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n let blankLine = false;\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n // Check if following lines should be included in List Item\n while (src) {\n const rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n }\n else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += '\\n' + nextLine;\n }\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n }\n else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n let istask = null;\n let ischecked;\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents,\n tokens: []\n });\n list.raw += raw;\n }\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimEnd();\n list.items[list.items.length - 1].text = itemContents.trimEnd();\n list.raw = list.raw.trimEnd();\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (let i = 0; i < list.items.length; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n list.loose = hasMultipleLineBreaks;\n }\n }\n // Set all items to loose if list is loose\n if (list.loose) {\n for (let i = 0; i < list.items.length; i++) {\n list.items[i].loose = true;\n }\n }\n return list;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n text: cap[0]\n };\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n if (!/[:|]/.test(cap[2])) {\n // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n return;\n }\n const item = {\n type: 'table',\n raw: cap[0],\n header: splitCells(cap[1]).map(c => {\n return { text: c, tokens: [] };\n }),\n align: cap[2].replace(/^\\||\\| *$/g, '').split('|'),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n if (item.header.length === item.align.length) {\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; i++) {\n const align = item.align[i];\n if (align) {\n if (/^ *-+: *$/.test(align)) {\n item.align[i] = 'right';\n }\n else if (/^ *:-+: *$/.test(align)) {\n item.align[i] = 'center';\n }\n else if (/^ *:-+ *$/.test(align)) {\n item.align[i] = 'left';\n }\n else {\n item.align[i] = null;\n }\n }\n }\n l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i], item.header.length).map(c => {\n return { text: c, tokens: [] };\n });\n }\n // parse child tokens inside headers and cells\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n return item;\n }\n }\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n }\n else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: cap[0]\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n }\n else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n if (link) {\n href = link[1];\n title = link[3];\n }\n }\n else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n }\n else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match)\n return;\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u))\n return;\n const nextChar = match[1] || match[2] || '';\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim)\n continue; // skip single * in __abc*abc__\n rLength = [...rDelim].length;\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n }\n else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0)\n continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n // char length can be >1 for unicode characters;\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n autolink(src) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[1]);\n href = 'mailto:' + text;\n }\n else {\n text = escape(cap[1]);\n href = text;\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n url(src) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[0]);\n href = 'mailto:' + text;\n }\n else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n }\n else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n inlineText(src) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = cap[0];\n }\n else {\n text = escape(cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n\n/**\n * Block-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nconst block = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^(?!bull )((?:.|\\n(?!\\s*?\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\nblock.lheading = edit(block.lheading)\n .replace(/bull/g, block.bullet) // lists can interrupt\n .getRegex();\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n/**\n * Normal Block Grammar\n */\nblock.normal = { ...block };\n/**\n * GFM Block Grammar\n */\nblock.gfm = {\n ...block.normal,\n table: '^ *([^\\\\n ].*)\\\\n' // Header\n + ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\nblock.gfm.table = edit(block.gfm.table)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\nblock.pedantic = {\n ...block.normal,\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest,\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n};\n/**\n * Inline-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nconst inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^',\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // | Skip orphan inside strong | Consume to delim | (1) #*** | (2) a***#, a*** | (3) #***a, ***a | (4) ***# | (5) #***# | (6) a***a\n rDelimAst: /^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\`^|~';\ninline.punctuation = edit(inline.punctuation, 'u').replace(/punctuation/g, inline._punctuation).getRegex();\n// sequences em should skip over [title](link), `code`, \ninline.blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\ninline.anyPunctuation = /\\\\[punct]/g;\ninline._escapes = /\\\\([punct])/g;\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim, 'u')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline.anyPunctuation = edit(inline.anyPunctuation, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline._escapes = edit(inline._escapes, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .replace('ref', block._label)\n .getRegex();\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n/**\n * Normal Inline Grammar\n */\ninline.normal = { ...inline };\n/**\n * Pedantic Inline Grammar\n */\ninline.pedantic = {\n ...inline.normal,\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n};\n/**\n * GFM Inline Grammar\n */\ninline.gfm = {\n ...inline.normal,\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ {\n return leading + ' '.repeat(tabs.length);\n });\n }\n let token;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unnecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n this.state.top = true;\n return tokens;\n }\n inline(src, tokens = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // autolink\n if (token = this.tokenizer.autolink(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n return tokens;\n }\n}\n\n/**\n * Renderer\n */\nclass _Renderer {\n options;\n constructor(options) {\n this.options = options || _defaults;\n }\n code(code, infostring, escaped) {\n const lang = (infostring || '').match(/^\\S*/)?.[0];\n code = code.replace(/\\n$/, '') + '\\n';\n if (!lang) {\n return '
    '\n                + (escaped ? code : escape(code, true))\n                + '
    \\n';\n }\n return '
    '\n            + (escaped ? code : escape(code, true))\n            + '
    \\n';\n }\n blockquote(quote) {\n return `
    \\n${quote}
    \\n`;\n }\n html(html, block) {\n return html;\n }\n heading(text, level, raw) {\n // ignore IDs\n return `${text}\\n`;\n }\n hr() {\n return '
    \\n';\n }\n list(body, ordered, start) {\n const type = ordered ? 'ol' : 'ul';\n const startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n listitem(text, task, checked) {\n return `
  • ${text}
  • \\n`;\n }\n checkbox(checked) {\n return '';\n }\n paragraph(text) {\n return `

    ${text}

    \\n`;\n }\n table(header, body) {\n if (body)\n body = `${body}`;\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n tablerow(content) {\n return `\\n${content}\\n`;\n }\n tablecell(content, flags) {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n /**\n * span level renderer\n */\n strong(text) {\n return `${text}`;\n }\n em(text) {\n return `${text}`;\n }\n codespan(text) {\n return `${text}`;\n }\n br() {\n return '
    ';\n }\n del(text) {\n return `${text}`;\n }\n link(href, title, text) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = '
    ';\n return out;\n }\n image(href, title, text) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = `\"${text}\"`;\n 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n }\n else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox + ' '\n });\n }\n }\n else {\n itemBody += checkbox + ' ';\n }\n }\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n const htmlToken = token;\n out += this.renderer.html(htmlToken.text, htmlToken.block);\n continue;\n }\n case 'paragraph': {\n const paragraphToken = token;\n out += this.renderer.paragraph(this.parseInline(paragraphToken.tokens));\n continue;\n }\n case 'text': {\n let textToken = token;\n let body = textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text;\n while (i + 1 < tokens.length && tokens[i + 1].type === 'text') {\n textToken = tokens[++i];\n body += '\\n' + (textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text);\n }\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n const ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'escape': {\n const escapeToken = token;\n out += renderer.text(escapeToken.text);\n break;\n }\n case 'html': {\n const tagToken = token;\n out += renderer.html(tagToken.text);\n break;\n }\n case 'link': {\n const linkToken = token;\n out += renderer.link(linkToken.href, linkToken.title, this.parseInline(linkToken.tokens, renderer));\n break;\n }\n case 'image': {\n const imageToken = token;\n out += renderer.image(imageToken.href, imageToken.title, imageToken.text);\n break;\n }\n case 'strong': {\n const strongToken = token;\n out += renderer.strong(this.parseInline(strongToken.tokens, renderer));\n break;\n }\n case 'em': {\n const emToken = token;\n out += renderer.em(this.parseInline(emToken.tokens, renderer));\n break;\n }\n case 'codespan': {\n const codespanToken = token;\n out += renderer.codespan(codespanToken.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n const delToken = token;\n out += renderer.del(this.parseInline(delToken.tokens, renderer));\n break;\n }\n case 'text': {\n const textToken = token;\n out += renderer.text(textToken.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n\nclass _Hooks {\n options;\n constructor(options) {\n this.options = options || _defaults;\n }\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess'\n ]);\n /**\n * Process markdown before marked\n */\n preprocess(markdown) {\n return markdown;\n }\n /**\n * Process HTML after marked is finished\n */\n postprocess(html) {\n return html;\n }\n}\n\nclass Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n Parser = _Parser;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n Tokenizer = _Tokenizer;\n Hooks = _Hooks;\n constructor(...args) {\n this.use(...args);\n }\n /**\n * Run callback for every token\n */\n walkTokens(tokens, callback) {\n let values = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n const tableToken = token;\n for (const cell of tableToken.header) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n for (const row of tableToken.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case 'list': {\n const listToken = token;\n values = values.concat(this.walkTokens(listToken.items, callback));\n break;\n }\n default: {\n const genericToken = token;\n if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {\n values = values.concat(this.walkTokens(genericToken[childTokens], callback));\n });\n }\n else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n use(...args) {\n const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack };\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function (...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n }\n else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n }\n else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n }\n else {\n extensions.startBlock = [ext.start];\n }\n }\n else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n }\n else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n const rendererFunc = pack.renderer[prop];\n const rendererKey = prop;\n const prevRenderer = renderer[rendererKey];\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererKey] = (...args) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n const tokenizerFunc = pack.tokenizer[prop];\n const tokenizerKey = prop;\n const prevTokenizer = tokenizer[tokenizerKey];\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[tokenizerKey] = (...args) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n const hooksFunc = pack.hooks[prop];\n const hooksKey = prop;\n const prevHook = hooks[hooksKey];\n if (_Hooks.passThroughHooks.has(prop)) {\n hooks[hooksKey] = (arg) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n }\n else {\n hooks[hooksKey] = (...args) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function (token) {\n let values = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n this.defaults = { ...this.defaults, ...opts };\n });\n return this;\n }\n setOptions(opt) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n lexer(src, options) {\n return _Lexer.lex(src, options ?? this.defaults);\n }\n parser(tokens, options) {\n return _Parser.parse(tokens, options ?? this.defaults);\n }\n #parseMarkdown(lexer, parser) {\n return (src, options) => {\n const origOpt = { ...options };\n const opt = { ...this.defaults, ...origOpt };\n // Show warning if an extension set async to true but the parse was called with async: false\n if (this.defaults.async === true && origOpt.async === false) {\n if (!opt.silent) {\n console.warn('marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored.');\n }\n opt.async = true;\n }\n const throwError = this.#onError(!!opt.silent, !!opt.async);\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n const tokens = lexer(src, opt);\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n }\n catch (e) {\n return throwError(e);\n }\n };\n }\n #onError(silent, async) {\n return (e) => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (silent) {\n const msg = '

    An error occurred:

    '\n                    + escape(e.message + '', true)\n                    + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n}\n\nconst markedInstance = new Marked();\nfunction marked(src, opt) {\n return markedInstance.parse(src, opt);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n marked.setOptions = function (options) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n };\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nconst options = marked.options;\nconst setOptions = marked.setOptions;\nconst use = marked.use;\nconst walkTokens = marked.walkTokens;\nconst parseInline = marked.parseInline;\nconst parse = marked;\nconst parser = _Parser.parse;\nconst lexer = _Lexer.lex;\n\nexport { _Hooks as Hooks, _Lexer as Lexer, Marked, _Parser as Parser, _Renderer as Renderer, _TextRenderer as TextRenderer, _Tokenizer as Tokenizer, _defaults as defaults, _getDefaults as getDefaults, lexer, marked, options, parse, parseInline, parser, setOptions, use, walkTokens };\n//# sourceMappingURL=marked.esm.js.map\n","module.exports = window.DOMPurify || (window.DOMPurify = require('dompurify').default || require('dompurify'));\n","import { IMAGE_VARIANT_MAP, ASPECT_RATIO_CLASSES } from \"../image\";\n\n/**\n * by default, large image assets (greater than 20MB and other asset files greater than 10MB) are served from this url.\n * for reference: https://www.contentful.com/developers/docs/references/content-delivery-api/#/reference/assets\n */\nconst CONTENTFUL_LARGE_ASSET_URL_PREFIX = \"//downloads.ctfassets.net\";\n\nconst CONTENTFUL_IMAGE_CDN_PREFIX = \"//images.ctfassets.net\";\n\n/**\n * only images served from contentful image cdn support resizing params.\n * use this helper to enable resizing for large images.\n *\n * @param {string} url\n * @returns\n */\nfunction swapAssetUrl(url = \"\") {\n return url.replace(CONTENTFUL_LARGE_ASSET_URL_PREFIX, CONTENTFUL_IMAGE_CDN_PREFIX);\n}\n\nconst CONTENTFUL_API_DEFAULTS = {\n q: 75,\n w: 1014\n};\n\nexport function contentfulImageUrlFor(url = \"\", paramOverrides = {}) {\n if (!url) {\n throw new Error(\"Asset is missing a url\");\n }\n\n // default to `webp` except for pngs and svgs\n const fm = url.endsWith(\".png\") || url.endsWith(\".svg\") ? \"\" : \"webp\";\n\n const apiParams = { ...CONTENTFUL_API_DEFAULTS, fm, ...paramOverrides };\n\n const params = new URLSearchParams();\n\n url = swapAssetUrl(url);\n\n if (url?.startsWith(CONTENTFUL_IMAGE_CDN_PREFIX)) {\n for (const key of Object.keys(apiParams)) {\n params.set(key, apiParams[key]);\n }\n }\n\n // this is an unfortunate necessity. For some reason the `size` property\n // is not available on the params object, so we spread it and check the length.\n if ([...params].length) {\n return `${url}?${params.toString()}`;\n } else {\n return url;\n }\n}\n\nexport function buildSrc(asset, resizeParams, ignoreContentfulImgResize) {\n let url = asset?.fields?.file?.url;\n if (!url) {\n return null;\n }\n\n url = swapAssetUrl(url);\n\n if (ignoreContentfulImgResize || !url?.startsWith(CONTENTFUL_IMAGE_CDN_PREFIX)) {\n return url;\n }\n\n return contentfulImageUrlFor(url, resizeParams);\n}\n\n// This function is used to generate the srcset attribute for an image\n// It takes an array integers representing the widths of each image in (real) pixels\n// and generates a srcset for each.\nexport function srcSetFromWidths(url, widths = [], paramOverrides = {}) {\n if (widths.length === 0 || !url) {\n return;\n }\n\n return widths\n .map((width) => `${contentfulImageUrlFor(url, { ...paramOverrides, w: width })} ${width}w`)\n .join(\",\\n\");\n}\n\n// These values are pulled from the design tokens used in the\n// tailwind config for @ObamaFoundation/of-design-system\nconst SCREENS = {\n sm: \"320px\",\n md: \"680px\",\n lg: \"1200px\",\n xl: \"1920px\"\n};\n\nfunction sizeForMinWidth(minWidth, size) {\n return `(min-width: ${minWidth}) ${size}`;\n}\n\n/**\n *\n * @param {Partial>} sizes\n * @param {typeof SCREENS} breakpoints\n * @returns\n */\nexport function sizesForBreakpoints(sizes, breakpoints = SCREENS) {\n // If there are no sizes, or all sizes are 100vw, we don't need to specify\n if (!sizes) {\n return;\n }\n\n if (Object.keys(sizes).length === 0) {\n return;\n }\n if (Object.values(sizes).every((size) => !size || size === \"100vw\")) {\n return;\n }\n\n // We want to control the order here because the sizes are cascading\n // and we want to make sure the smallest size is last.\n const sizeAttr = [\"xl\", \"lg\", \"md\", \"sm\"].flatMap((/** @type {keyof typeof SCREENS} */ size) => {\n const minWidth = breakpoints[size];\n const sizeForWidth = sizes[size];\n\n // Ignore missing values so we can respect the cascade\n // without needing to specify all sizes\n if (!minWidth || !sizeForWidth) {\n return [];\n }\n\n return sizeForMinWidth(minWidth, sizeForWidth);\n });\n\n // Add the default size (all screen sizes < sm)\n sizeAttr.push(\"100vw\");\n\n return sizeAttr.join(\", \");\n}\n\nexport function altTextToDisplay(altText) {\n const placeholderAltValues = [\n \"placeholder\",\n \"none\",\n \"alt text missing\",\n \"gray placeholder image for qa\",\n \"missing\"\n ];\n if (altText && !placeholderAltValues.includes(altText.toLowerCase())) {\n return altText;\n } else {\n return \"\";\n }\n}\n\nexport function getImageOrientation(asset) {\n const { height, width } = asset?.fields?.file?.details?.image || {};\n\n if (!height || !width) {\n return;\n }\n\n // if the difference between height and width is within 5%, treat as square\n return height > width\n ? (height - width) / width > 0.05\n ? \"portrait\"\n : \"square\"\n : (width - height) / height > 0.05\n ? \"landscape\"\n : \"square\";\n}\n\nexport const getImageAspectRatio = (asset, aspectRatio) => {\n const imageDetails = asset?.fields?.file?.details?.image || {};\n const { width, height } = imageDetails;\n\n let mappedVariant = IMAGE_VARIANT_MAP[aspectRatio];\n let calculatedVariant = IMAGE_VARIANT_MAP[\"1:1\"];\n if (width > height) {\n calculatedVariant = IMAGE_VARIANT_MAP[\"3:2\"];\n } else if (width < height) {\n calculatedVariant = IMAGE_VARIANT_MAP[\"3:4\"];\n }\n\n return mappedVariant || calculatedVariant;\n};\n\nexport const getClosestAspectRatioClass = (\n width,\n height,\n validAspectRatios = ASPECT_RATIO_CLASSES\n) => {\n const aspectRatio = width / height;\n\n /* store the closest aspect ratio found in ASPECT_RATIO_CLASSES. */\n let closestAspectRatio = null;\n\n /* store the smallest difference between the calculated aspect ratio and the aspect ratios in ASPECT_RATIO_CLASSES. */\n let minDifference = Infinity;\n\n for (const ratio in validAspectRatios) {\n if (Object.hasOwn(validAspectRatios, ratio)) {\n const ratioValueString = validAspectRatios[ratio];\n if (ratioValueString === \"aspect-[auto]\") {\n continue; // Skip the \"auto\" aspect ratio\n }\n const calcRatios = ratioValueString.split(\"/\");\n const ratioWidth = Number(calcRatios[0].split(\"-\")[1]);\n const ratioHeight = Number(calcRatios[1]);\n const ratioValue = ratioWidth / ratioHeight;\n\n /* calculates the absolute difference between the calculated aspect ratio and the aspect ratio of the given width and height. */\n const difference = Math.abs(aspectRatio - ratioValue);\n\n /* calculates the new smallest difference and the current aspect ratio, respectively. */\n if (difference < minDifference) {\n minDifference = difference;\n closestAspectRatio = validAspectRatios[ratio];\n }\n }\n }\n return closestAspectRatio;\n};\n","import { writable } from \"svelte/store\";\n\n// Used to set the theme of the Global Navigation\nexport const heroThemeStore = writable(\"transparent\");\n\n// Used to store applied filter items\nexport const filterItemsStore = writable([]);\n","export const getTotalNumberOfSelectedFilters = (activeFilters = []) => {\n return activeFilters.reduce((accumulator, currentFilterGroup) => {\n currentFilterGroup.bodyProps.options.forEach((option) => {\n if (option.isChecked === true) {\n accumulator++;\n }\n });\n return accumulator;\n }, 0);\n};\n\nexport const filterOutInactiveFilterGroups = (filterGroups) => {\n return filterGroups.filter((filterGroup) => {\n return filterGroup.bodyProps.options.some((option) => {\n return option.isChecked;\n });\n });\n};\n\n/**\n * transform applied filter groups to active filters\n *\n * @param {*} selectedFilterGroups\n * @returns\n */\nexport const flattenAppliedFilterGroups = (selectedFilterGroups) =>\n selectedFilterGroups.reduce((selectedOptions, currentFilterGroup) => {\n currentFilterGroup.bodyProps.options.forEach((option) => {\n if (option.isChecked) {\n selectedOptions.push(option);\n }\n });\n return selectedOptions;\n }, []);\n","// used in Attr to signal changes\nexport const CHANGED = Symbol('changed');\n\n// used in Element to setup once classList\nexport const CLASS_LIST = Symbol('classList');\n\n// used in Document to attach once customElements\nexport const CUSTOM_ELEMENTS = Symbol('CustomElements');\n\n// used in HTMLTemplateElement\nexport const CONTENT = Symbol('content');\n\n// used in Element for data attributes\nexport const DATASET = Symbol('dataset');\n\n// used in Document to attach the DocType\nexport const DOCTYPE = Symbol('doctype');\n\n// used in parser and Document to attach once a DOMParser\nexport const DOM_PARSER = Symbol('DOMParser');\n\n// used to reference an end node\nexport const END = Symbol('end');\n\n// used in Document to make the globalThis an event target\nexport const EVENT_TARGET = Symbol('EventTarget');\n\n// used to augment a created document defaultView\nexport const GLOBALS = Symbol('globals');\n\n// used in both Canvas and Document to provide images\nexport const IMAGE = Symbol('image');\n\n// used to define Document mime type\nexport const MIME = Symbol('mime');\n\n// used in Document to attach once MutationObserver\nexport const MUTATION_OBSERVER = Symbol('MutationObserver');\n\n// used to define next node reference\nexport const NEXT = Symbol('next');\n\n// used to define Attr owner elements\nexport const OWNER_ELEMENT = Symbol('ownerElement');\n\n// used to define previous node reference\nexport const PREV = Symbol('prev');\n\n// used to define various \"private\" properties\nexport const PRIVATE = Symbol('private');\n\n// used to define the CSSStyleSheet.sheet\nexport const SHEET = Symbol('sheet');\n\n// used to define start node reference\nexport const START = Symbol('start');\n\n// used to define special CSS style attribute\nexport const STYLE = Symbol('style');\n\n// used to upgrade Custom Elements\nexport const UPGRADE = Symbol('upgrade');\n\n// used to define generic values\nexport const VALUE = Symbol('value');\n","// Generated using scripts/write-decode-map.ts\nexport default new Uint16Array(\n// prettier-ignore\n\"\\u1d41<\\xd5\\u0131\\u028a\\u049d\\u057b\\u05d0\\u0675\\u06de\\u07a2\\u07d6\\u080f\\u0a4a\\u0a91\\u0da1\\u0e6d\\u0f09\\u0f26\\u10ca\\u1228\\u12e1\\u1415\\u149d\\u14c3\\u14df\\u1525\\0\\0\\0\\0\\0\\0\\u156b\\u16cd\\u198d\\u1c12\\u1ddd\\u1f7e\\u2060\\u21b0\\u228d\\u23c0\\u23fb\\u2442\\u2824\\u2912\\u2d08\\u2e48\\u2fce\\u3016\\u32ba\\u3639\\u37ac\\u38fe\\u3a28\\u3a71\\u3ae0\\u3b2e\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803b\\xc6\\u40c6P\\u803b&\\u4026cute\\u803b\\xc1\\u40c1reve;\\u4102\\u0100iyx}rc\\u803b\\xc2\\u40c2;\\u4410r;\\uc000\\ud835\\udd04rave\\u803b\\xc0\\u40c0pha;\\u4391acr;\\u4100d;\\u6a53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uc000\\ud835\\udd38plyFunction;\\u6061ing\\u803b\\xc5\\u40c5\\u0100cs\\xbe\\xc3r;\\uc000\\ud835\\udc9cign;\\u6254ilde\\u803b\\xc3\\u40c3ml\\u803b\\xc4\\u40c4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011c\\u0122\\u0127\\u012a\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6ae7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010b\\u0114ause;\\u6235noullis;\\u612ca;\\u4392r;\\uc000\\ud835\\udd05pf;\\uc000\\ud835\\udd39eve;\\u42d8c\\xf2\\u0113mpeq;\\u624e\\u0700HOacdefhilorsu\\u014d\\u0151\\u0156\\u0180\\u019e\\u01a2\\u01b5\\u01b7\\u01ba\\u01dc\\u0215\\u0273\\u0278\\u027ecy;\\u4427PY\\u803b\\xa9\\u40a9\\u0180cpy\\u015d\\u0162\\u017aute;\\u4106\\u0100;i\\u0167\\u0168\\u62d2talDifferentialD;\\u6145leys;\\u612d\\u0200aeio\\u0189\\u018e\\u0194\\u0198ron;\\u410cdil\\u803b\\xc7\\u40c7rc;\\u4108nint;\\u6230ot;\\u410a\\u0100dn\\u01a7\\u01adilla;\\u40b8terDot;\\u40b7\\xf2\\u017fi;\\u43a7rcle\\u0200DMPT\\u01c7\\u01cb\\u01d1\\u01d6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01e2\\u01f8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020foubleQuote;\\u601duote;\\u6019\\u0200lnpu\\u021e\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6a74\\u0180git\\u022f\\u0236\\u023aruent;\\u6261nt;\\u622fourIntegral;\\u622e\\u0100fr\\u024c\\u024e;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6a2fcr;\\uc000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62d3ap;\\u624d\\u0580DJSZacefios\\u02a0\\u02ac\\u02b0\\u02b4\\u02b8\\u02cb\\u02d7\\u02e1\\u02e6\\u0333\\u048d\\u0100;o\\u0179\\u02a5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440f\\u0180grs\\u02bf\\u02c4\\u02c7ger;\\u6021r;\\u61a1hv;\\u6ae4\\u0100ay\\u02d0\\u02d5ron;\\u410e;\\u4414l\\u0100;t\\u02dd\\u02de\\u6207a;\\u4394r;\\uc000\\ud835\\udd07\\u0100af\\u02eb\\u0327\\u0100cm\\u02f0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031ccute;\\u40b4o\\u0174\\u030b\\u030d;\\u42d9bleAcute;\\u42ddrave;\\u4060ilde;\\u42dcond;\\u62c4ferentialD;\\u6146\\u0470\\u033d\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uc000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034d\\u40a8ot;\\u60dcqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03cf\\u03e2\\u03f8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037b\\xbb\\u0349nArrow;\\u61d3\\u0100eo\\u0387\\u03a4ft\\u0180ART\\u0390\\u0396\\u03a1rrow;\\u61d0ightArrow;\\u61d4e\\xe5\\u02cang\\u0100LR\\u03ab\\u03c4eft\\u0100AR\\u03b3\\u03b9rrow;\\u67f8ightArrow;\\u67faightArrow;\\u67f9ight\\u0100AT\\u03d8\\u03derrow;\\u61d2ee;\\u62a8p\\u0241\\u03e9\\0\\0\\u03efrrow;\\u61d1ownArrow;\\u61d5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042a\\u0430\\u045e\\u047f\\u037crrow\\u0180;BU\\u041d\\u041e\\u0422\\u6193ar;\\u6913pArrow;\\u61f5reve;\\u4311eft\\u02d2\\u043a\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695eector\\u0100;B\\u0459\\u045a\\u61bdar;\\u6956ight\\u01d4\\u0467\\0\\u0471eeVector;\\u695fector\\u0100;B\\u047a\\u047b\\u61c1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62a4rrow;\\u61a7\\u0100ct\\u0492\\u0497r;\\uc000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04bd\\u04c0\\u04c4\\u04cb\\u04de\\u04e2\\u04e7\\u04ee\\u04f5\\u0521\\u052f\\u0536\\u0552\\u055d\\u0560\\u0565G;\\u414aH\\u803b\\xd0\\u40d0cute\\u803b\\xc9\\u40c9\\u0180aiy\\u04d2\\u04d7\\u04dcron;\\u411arc\\u803b\\xca\\u40ca;\\u442dot;\\u4116r;\\uc000\\ud835\\udd08rave\\u803b\\xc8\\u40c8ement;\\u6208\\u0100ap\\u04fa\\u04fecr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65fberySmallSquare;\\u65ab\\u0100gp\\u0526\\u052aon;\\u4118f;\\uc000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053c\\u0549l\\u0100;T\\u0542\\u0543\\u6a75ilde;\\u6242librium;\\u61cc\\u0100ci\\u0557\\u055ar;\\u6130m;\\u6a73a;\\u4397ml\\u803b\\xcb\\u40cb\\u0100ip\\u056a\\u056fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058d\\u05b2\\u05ccy;\\u4424r;\\uc000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05a3mallSquare;\\u65fcerySmallSquare;\\u65aa\\u0370\\u05ba\\0\\u05bf\\0\\0\\u05c4f;\\uc000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05cb\\u0600JTabcdfgorst\\u05e8\\u05ec\\u05ef\\u05fa\\u0600\\u0612\\u0616\\u061b\\u061d\\u0623\\u066c\\u0672cy;\\u4403\\u803b>\\u403emma\\u0100;d\\u05f7\\u05f8\\u4393;\\u43dcreve;\\u411e\\u0180eiy\\u0607\\u060c\\u0610dil;\\u4122rc;\\u411c;\\u4413ot;\\u4120r;\\uc000\\ud835\\udd0a;\\u62d9pf;\\uc000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064e\\u0656\\u065b\\u0666qual\\u0100;L\\u063e\\u063f\\u6265ess;\\u62dbullEqual;\\u6267reater;\\u6aa2ess;\\u6277lantEqual;\\u6a7eilde;\\u6273cr;\\uc000\\ud835\\udca2;\\u626b\\u0400Aacfiosu\\u0685\\u068b\\u0696\\u069b\\u069e\\u06aa\\u06be\\u06caRDcy;\\u442a\\u0100ct\\u0690\\u0694ek;\\u42c7;\\u405eirc;\\u4124r;\\u610clbertSpace;\\u610b\\u01f0\\u06af\\0\\u06b2f;\\u610dizontalLine;\\u6500\\u0100ct\\u06c3\\u06c5\\xf2\\u06a9rok;\\u4126mp\\u0144\\u06d0\\u06d8ownHum\\xf0\\u012fqual;\\u624f\\u0700EJOacdfgmnostu\\u06fa\\u06fe\\u0703\\u0707\\u070e\\u071a\\u071e\\u0721\\u0728\\u0744\\u0778\\u078b\\u078f\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803b\\xcd\\u40cd\\u0100iy\\u0713\\u0718rc\\u803b\\xce\\u40ce;\\u4418ot;\\u4130r;\\u6111rave\\u803b\\xcc\\u40cc\\u0180;ap\\u0720\\u072f\\u073f\\u0100cg\\u0734\\u0737r;\\u412ainaryI;\\u6148lie\\xf3\\u03dd\\u01f4\\u0749\\0\\u0762\\u0100;e\\u074d\\u074e\\u622c\\u0100gr\\u0753\\u0758ral;\\u622bsection;\\u62c2isible\\u0100CT\\u076c\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077f\\u0783\\u0788on;\\u412ef;\\uc000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01eb\\u079a\\0\\u079ecy;\\u4406l\\u803b\\xcf\\u40cf\\u0280cfosu\\u07ac\\u07b7\\u07bc\\u07c2\\u07d0\\u0100iy\\u07b1\\u07b5rc;\\u4134;\\u4419r;\\uc000\\ud835\\udd0dpf;\\uc000\\ud835\\udd41\\u01e3\\u07c7\\0\\u07ccr;\\uc000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07e4\\u07e8\\u07ec\\u07f1\\u07fd\\u0802\\u0808cy;\\u4425cy;\\u440cppa;\\u439a\\u0100ey\\u07f6\\u07fbdil;\\u4136;\\u441ar;\\uc000\\ud835\\udd0epf;\\uc000\\ud835\\udd42cr;\\uc000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082c\\u0850\\u0863\\u09b3\\u09b8\\u09c7\\u09cd\\u0a37\\u0a47cy;\\u4409\\u803b<\\u403c\\u0280cmnpr\\u0837\\u083c\\u0841\\u0844\\u084dute;\\u4139bda;\\u439bg;\\u67ealacetrf;\\u6112r;\\u619e\\u0180aey\\u0857\\u085c\\u0861ron;\\u413ddil;\\u413b;\\u441b\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087e\\u08a9\\u08b1\\u08e0\\u08e6\\u08fc\\u092f\\u095b\\u0390\\u096a\\u0100nr\\u0883\\u088fgleBracket;\\u67e8row\\u0180;BR\\u0899\\u089a\\u089e\\u6190ar;\\u61e4ightArrow;\\u61c6eiling;\\u6308o\\u01f5\\u08b7\\0\\u08c3bleBracket;\\u67e6n\\u01d4\\u08c8\\0\\u08d2eeVector;\\u6961ector\\u0100;B\\u08db\\u08dc\\u61c3ar;\\u6959loor;\\u630aight\\u0100AV\\u08ef\\u08f5rrow;\\u6194ector;\\u694e\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090a\\u0910\\u62a3rrow;\\u61a4ector;\\u695aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62b2ar;\\u69cfqual;\\u62b4p\\u0180DTV\\u0937\\u0942\\u094cownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61bfar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61bcar;\\u6952ight\\xe1\\u039cs\\u0300EFGLST\\u097e\\u098b\\u0995\\u099d\\u09a2\\u09adqualGreater;\\u62daullEqual;\\u6266reater;\\u6276ess;\\u6aa1lantEqual;\\u6a7dilde;\\u6272r;\\uc000\\ud835\\udd0f\\u0100;e\\u09bd\\u09be\\u62d8ftarrow;\\u61daidot;\\u413f\\u0180npw\\u09d4\\u0a16\\u0a1bg\\u0200LRlr\\u09de\\u09f7\\u0a02\\u0a10eft\\u0100AR\\u09e6\\u09ecrrow;\\u67f5ightArrow;\\u67f7ightArrow;\\u67f6eft\\u0100ar\\u03b3\\u0a0aight\\xe1\\u03bfight\\xe1\\u03caf;\\uc000\\ud835\\udd43er\\u0100LR\\u0a22\\u0a2ceftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0a3e\\u0a40\\u0a42\\xf2\\u084c;\\u61b0rok;\\u4141;\\u626a\\u0400acefiosu\\u0a5a\\u0a5d\\u0a60\\u0a77\\u0a7c\\u0a85\\u0a8b\\u0a8ep;\\u6905y;\\u441c\\u0100dl\\u0a65\\u0a6fiumSpace;\\u605flintrf;\\u6133r;\\uc000\\ud835\\udd10nusPlus;\\u6213pf;\\uc000\\ud835\\udd44c\\xf2\\u0a76;\\u439c\\u0480Jacefostu\\u0aa3\\u0aa7\\u0aad\\u0ac0\\u0b14\\u0b19\\u0d91\\u0d97\\u0d9ecy;\\u440acute;\\u4143\\u0180aey\\u0ab4\\u0ab9\\u0aberon;\\u4147dil;\\u4145;\\u441d\\u0180gsw\\u0ac7\\u0af0\\u0b0eative\\u0180MTV\\u0ad3\\u0adf\\u0ae8ediumSpace;\\u600bhi\\u0100cn\\u0ae6\\u0ad8\\xeb\\u0ad9eryThi\\xee\\u0ad9ted\\u0100GL\\u0af8\\u0b06reaterGreate\\xf2\\u0673essLes\\xf3\\u0a48Line;\\u400ar;\\uc000\\ud835\\udd11\\u0200Bnpt\\u0b22\\u0b28\\u0b37\\u0b3areak;\\u6060BreakingSpace;\\u40a0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0b55\\u0b56\\u0b6a\\u0b7c\\u0ba1\\u0beb\\u0c04\\u0c5e\\u0c84\\u0ca6\\u0cd8\\u0d61\\u0d85\\u6aec\\u0100ou\\u0b5b\\u0b64ngruent;\\u6262pCap;\\u626doubleVerticalBar;\\u6226\\u0180lqx\\u0b83\\u0b8a\\u0b9bement;\\u6209ual\\u0100;T\\u0b92\\u0b93\\u6260ilde;\\uc000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0bb6\\u0bb7\\u0bbd\\u0bc9\\u0bd3\\u0bd8\\u0be5\\u626fqual;\\u6271ullEqual;\\uc000\\u2267\\u0338reater;\\uc000\\u226b\\u0338ess;\\u6279lantEqual;\\uc000\\u2a7e\\u0338ilde;\\u6275ump\\u0144\\u0bf2\\u0bfdownHump;\\uc000\\u224e\\u0338qual;\\uc000\\u224f\\u0338e\\u0100fs\\u0c0a\\u0c27tTriangle\\u0180;BE\\u0c1a\\u0c1b\\u0c21\\u62eaar;\\uc000\\u29cf\\u0338qual;\\u62ecs\\u0300;EGLST\\u0c35\\u0c36\\u0c3c\\u0c44\\u0c4b\\u0c58\\u626equal;\\u6270reater;\\u6278ess;\\uc000\\u226a\\u0338lantEqual;\\uc000\\u2a7d\\u0338ilde;\\u6274ested\\u0100GL\\u0c68\\u0c79reaterGreater;\\uc000\\u2aa2\\u0338essLess;\\uc000\\u2aa1\\u0338recedes\\u0180;ES\\u0c92\\u0c93\\u0c9b\\u6280qual;\\uc000\\u2aaf\\u0338lantEqual;\\u62e0\\u0100ei\\u0cab\\u0cb9verseElement;\\u620cghtTriangle\\u0180;BE\\u0ccb\\u0ccc\\u0cd2\\u62ebar;\\uc000\\u29d0\\u0338qual;\\u62ed\\u0100qu\\u0cdd\\u0d0cuareSu\\u0100bp\\u0ce8\\u0cf9set\\u0100;E\\u0cf0\\u0cf3\\uc000\\u228f\\u0338qual;\\u62e2erset\\u0100;E\\u0d03\\u0d06\\uc000\\u2290\\u0338qual;\\u62e3\\u0180bcp\\u0d13\\u0d24\\u0d4eset\\u0100;E\\u0d1b\\u0d1e\\uc000\\u2282\\u20d2qual;\\u6288ceeds\\u0200;EST\\u0d32\\u0d33\\u0d3b\\u0d46\\u6281qual;\\uc000\\u2ab0\\u0338lantEqual;\\u62e1ilde;\\uc000\\u227f\\u0338erset\\u0100;E\\u0d58\\u0d5b\\uc000\\u2283\\u20d2qual;\\u6289ilde\\u0200;EFT\\u0d6e\\u0d6f\\u0d75\\u0d7f\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uc000\\ud835\\udca9ilde\\u803b\\xd1\\u40d1;\\u439d\\u0700Eacdfgmoprstuv\\u0dbd\\u0dc2\\u0dc9\\u0dd5\\u0ddb\\u0de0\\u0de7\\u0dfc\\u0e02\\u0e20\\u0e22\\u0e32\\u0e3f\\u0e44lig;\\u4152cute\\u803b\\xd3\\u40d3\\u0100iy\\u0dce\\u0dd3rc\\u803b\\xd4\\u40d4;\\u441eblac;\\u4150r;\\uc000\\ud835\\udd12rave\\u803b\\xd2\\u40d2\\u0180aei\\u0dee\\u0df2\\u0df6cr;\\u414cga;\\u43a9cron;\\u439fpf;\\uc000\\ud835\\udd46enCurly\\u0100DQ\\u0e0e\\u0e1aoubleQuote;\\u601cuote;\\u6018;\\u6a54\\u0100cl\\u0e27\\u0e2cr;\\uc000\\ud835\\udcaaash\\u803b\\xd8\\u40d8i\\u016c\\u0e37\\u0e3cde\\u803b\\xd5\\u40d5es;\\u6a37ml\\u803b\\xd6\\u40d6er\\u0100BP\\u0e4b\\u0e60\\u0100ar\\u0e50\\u0e53r;\\u603eac\\u0100ek\\u0e5a\\u0e5c;\\u63deet;\\u63b4arenthesis;\\u63dc\\u0480acfhilors\\u0e7f\\u0e87\\u0e8a\\u0e8f\\u0e92\\u0e94\\u0e9d\\u0eb0\\u0efcrtialD;\\u6202y;\\u441fr;\\uc000\\ud835\\udd13i;\\u43a6;\\u43a0usMinus;\\u40b1\\u0100ip\\u0ea2\\u0eadncareplan\\xe5\\u069df;\\u6119\\u0200;eio\\u0eb9\\u0eba\\u0ee0\\u0ee4\\u6abbcedes\\u0200;EST\\u0ec8\\u0ec9\\u0ecf\\u0eda\\u627aqual;\\u6aaflantEqual;\\u627cilde;\\u627eme;\\u6033\\u0100dp\\u0ee9\\u0eeeuct;\\u620fortion\\u0100;a\\u0225\\u0ef9l;\\u621d\\u0100ci\\u0f01\\u0f06r;\\uc000\\ud835\\udcab;\\u43a8\\u0200Ufos\\u0f11\\u0f16\\u0f1b\\u0f1fOT\\u803b\\\"\\u4022r;\\uc000\\ud835\\udd14pf;\\u611acr;\\uc000\\ud835\\udcac\\u0600BEacefhiorsu\\u0f3e\\u0f43\\u0f47\\u0f60\\u0f73\\u0fa7\\u0faa\\u0fad\\u1096\\u10a9\\u10b4\\u10bearr;\\u6910G\\u803b\\xae\\u40ae\\u0180cnr\\u0f4e\\u0f53\\u0f56ute;\\u4154g;\\u67ebr\\u0100;t\\u0f5c\\u0f5d\\u61a0l;\\u6916\\u0180aey\\u0f67\\u0f6c\\u0f71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0f78\\u0f79\\u611cerse\\u0100EU\\u0f82\\u0f99\\u0100lq\\u0f87\\u0f8eement;\\u620builibrium;\\u61cbpEquilibrium;\\u696fr\\xbb\\u0f79o;\\u43a1ght\\u0400ACDFTUVa\\u0fc1\\u0feb\\u0ff3\\u1022\\u1028\\u105b\\u1087\\u03d8\\u0100nr\\u0fc6\\u0fd2gleBracket;\\u67e9row\\u0180;BL\\u0fdc\\u0fdd\\u0fe1\\u6192ar;\\u61e5eftArrow;\\u61c4eiling;\\u6309o\\u01f5\\u0ff9\\0\\u1005bleBracket;\\u67e7n\\u01d4\\u100a\\0\\u1014eeVector;\\u695dector\\u0100;B\\u101d\\u101e\\u61c2ar;\\u6955loor;\\u630b\\u0100er\\u102d\\u1043e\\u0180;AV\\u1035\\u1036\\u103c\\u62a2rrow;\\u61a6ector;\\u695biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62b3ar;\\u69d0qual;\\u62b5p\\u0180DTV\\u1063\\u106e\\u1078ownVector;\\u694feeVector;\\u695cector\\u0100;B\\u1082\\u1083\\u61bear;\\u6954ector\\u0100;B\\u1091\\u1092\\u61c0ar;\\u6953\\u0100pu\\u109b\\u109ef;\\u611dndImplies;\\u6970ightarrow;\\u61db\\u0100ch\\u10b9\\u10bcr;\\u611b;\\u61b1leDelayed;\\u69f4\\u0680HOacfhimoqstu\\u10e4\\u10f1\\u10f7\\u10fd\\u1119\\u111e\\u1151\\u1156\\u1161\\u1167\\u11b5\\u11bb\\u11bf\\u0100Cc\\u10e9\\u10eeHcy;\\u4429y;\\u4428FTcy;\\u442ccute;\\u415a\\u0280;aeiy\\u1108\\u1109\\u110e\\u1113\\u1117\\u6abcron;\\u4160dil;\\u415erc;\\u415c;\\u4421r;\\uc000\\ud835\\udd16ort\\u0200DLRU\\u112a\\u1134\\u113e\\u1149ownArrow\\xbb\\u041eeftArrow\\xbb\\u089aightArrow\\xbb\\u0fddpArrow;\\u6191gma;\\u43a3allCircle;\\u6218pf;\\uc000\\ud835\\udd4a\\u0272\\u116d\\0\\0\\u1170t;\\u621aare\\u0200;ISU\\u117b\\u117c\\u1189\\u11af\\u65a1ntersection;\\u6293u\\u0100bp\\u118f\\u119eset\\u0100;E\\u1197\\u1198\\u628fqual;\\u6291erset\\u0100;E\\u11a8\\u11a9\\u6290qual;\\u6292nion;\\u6294cr;\\uc000\\ud835\\udcaear;\\u62c6\\u0200bcmp\\u11c8\\u11db\\u1209\\u120b\\u0100;s\\u11cd\\u11ce\\u62d0et\\u0100;E\\u11cd\\u11d5qual;\\u6286\\u0100ch\\u11e0\\u1205eeds\\u0200;EST\\u11ed\\u11ee\\u11f4\\u11ff\\u627bqual;\\u6ab0lantEqual;\\u627dilde;\\u627fTh\\xe1\\u0f8c;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62d1rset\\u0100;E\\u121c\\u121d\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123e\\u1244\\u1249\\u1255\\u125e\\u1271\\u1276\\u129f\\u12c2\\u12c8\\u12d1ORN\\u803b\\xde\\u40deADE;\\u6122\\u0100Hc\\u124e\\u1252cy;\\u440by;\\u4426\\u0100bu\\u125a\\u125c;\\u4009;\\u43a4\\u0180aey\\u1265\\u126a\\u126fron;\\u4164dil;\\u4162;\\u4422r;\\uc000\\ud835\\udd17\\u0100ei\\u127b\\u1289\\u01f2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128e\\u1298kSpace;\\uc000\\u205f\\u200aSpace;\\u6009lde\\u0200;EFT\\u12ab\\u12ac\\u12b2\\u12bc\\u623cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uc000\\ud835\\udd4bipleDot;\\u60db\\u0100ct\\u12d6\\u12dbr;\\uc000\\ud835\\udcafrok;\\u4166\\u0ae1\\u12f7\\u130e\\u131a\\u1326\\0\\u132c\\u1331\\0\\0\\0\\0\\0\\u1338\\u133d\\u1377\\u1385\\0\\u13ff\\u1404\\u140a\\u1410\\u0100cr\\u12fb\\u1301ute\\u803b\\xda\\u40dar\\u0100;o\\u1307\\u1308\\u619fcir;\\u6949r\\u01e3\\u1313\\0\\u1316y;\\u440eve;\\u416c\\u0100iy\\u131e\\u1323rc\\u803b\\xdb\\u40db;\\u4423blac;\\u4170r;\\uc000\\ud835\\udd18rave\\u803b\\xd9\\u40d9acr;\\u416a\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135d\\u0100ar\\u134d\\u1350r;\\u405fac\\u0100ek\\u1357\\u1359;\\u63dfet;\\u63b5arenthesis;\\u63ddon\\u0100;P\\u1370\\u1371\\u62c3lus;\\u628e\\u0100gp\\u137b\\u137fon;\\u4172f;\\uc000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13ae\\u13b8\\u13c4\\u03e8\\u13d2\\u13d7\\u13f3rrow\\u0180;BD\\u1150\\u13a0\\u13a4ar;\\u6912ownArrow;\\u61c5ownArrow;\\u6195quilibrium;\\u696eee\\u0100;A\\u13cb\\u13cc\\u62a5rrow;\\u61a5own\\xe1\\u03f3er\\u0100LR\\u13de\\u13e8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13f9\\u13fa\\u43d2on;\\u43a5ing;\\u416ecr;\\uc000\\ud835\\udcb0ilde;\\u4168ml\\u803b\\xdc\\u40dc\\u0480Dbcdefosv\\u1427\\u142c\\u1430\\u1433\\u143e\\u1485\\u148a\\u1490\\u1496ash;\\u62abar;\\u6aeby;\\u4412ash\\u0100;l\\u143b\\u143c\\u62a9;\\u6ae6\\u0100er\\u1443\\u1445;\\u62c1\\u0180bty\\u144c\\u1450\\u147aar;\\u6016\\u0100;i\\u144f\\u1455cal\\u0200BLST\\u1461\\u1465\\u146a\\u1474ar;\\u6223ine;\\u407ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600ar;\\uc000\\ud835\\udd19pf;\\uc000\\ud835\\udd4dcr;\\uc000\\ud835\\udcb1dash;\\u62aa\\u0280cefos\\u14a7\\u14ac\\u14b1\\u14b6\\u14bcirc;\\u4174dge;\\u62c0r;\\uc000\\ud835\\udd1apf;\\uc000\\ud835\\udd4ecr;\\uc000\\ud835\\udcb2\\u0200fios\\u14cb\\u14d0\\u14d2\\u14d8r;\\uc000\\ud835\\udd1b;\\u439epf;\\uc000\\ud835\\udd4fcr;\\uc000\\ud835\\udcb3\\u0480AIUacfosu\\u14f1\\u14f5\\u14f9\\u14fd\\u1504\\u150f\\u1514\\u151a\\u1520cy;\\u442fcy;\\u4407cy;\\u442ecute\\u803b\\xdd\\u40dd\\u0100iy\\u1509\\u150drc;\\u4176;\\u442br;\\uc000\\ud835\\udd1cpf;\\uc000\\ud835\\udd50cr;\\uc000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153f\\u154b\\u154f\\u155d\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417d;\\u4417ot;\\u417b\\u01f2\\u1554\\0\\u155boWidt\\xe8\\u0ad9a;\\u4396r;\\u6128pf;\\u6124cr;\\uc000\\ud835\\udcb5\\u0be1\\u1583\\u158a\\u1590\\0\\u15b0\\u15b6\\u15bf\\0\\0\\0\\0\\u15c6\\u15db\\u15eb\\u165f\\u166d\\0\\u1695\\u169b\\u16b2\\u16b9\\0\\u16becute\\u803b\\xe1\\u40e1reve;\\u4103\\u0300;Ediuy\\u159c\\u159d\\u15a1\\u15a3\\u15a8\\u15ad\\u623e;\\uc000\\u223e\\u0333;\\u623frc\\u803b\\xe2\\u40e2te\\u80bb\\xb4\\u0306;\\u4430lig\\u803b\\xe6\\u40e6\\u0100;r\\xb2\\u15ba;\\uc000\\ud835\\udd1erave\\u803b\\xe0\\u40e0\\u0100ep\\u15ca\\u15d6\\u0100fp\\u15cf\\u15d4sym;\\u6135\\xe8\\u15d3ha;\\u43b1\\u0100ap\\u15dfc\\u0100cl\\u15e4\\u15e7r;\\u4101g;\\u6a3f\\u0264\\u15f0\\0\\0\\u160a\\u0280;adsv\\u15fa\\u15fb\\u15ff\\u1601\\u1607\\u6227nd;\\u6a55;\\u6a5clope;\\u6a58;\\u6a5a\\u0380;elmrsz\\u1618\\u1619\\u161b\\u161e\\u163f\\u164f\\u1659\\u6220;\\u69a4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163a\\u163c\\u163e;\\u69a8;\\u69a9;\\u69aa;\\u69ab;\\u69ac;\\u69ad;\\u69ae;\\u69aft\\u0100;v\\u1645\\u1646\\u621fb\\u0100;d\\u164c\\u164d\\u62be;\\u699d\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637c\\u0100gp\\u1663\\u1667on;\\u4105f;\\uc000\\ud835\\udd52\\u0380;Eaeiop\\u12c1\\u167b\\u167d\\u1682\\u1684\\u1687\\u168a;\\u6a70cir;\\u6a6f;\\u624ad;\\u624bs;\\u4027rox\\u0100;e\\u12c1\\u1692\\xf1\\u1683ing\\u803b\\xe5\\u40e5\\u0180cty\\u16a1\\u16a6\\u16a8r;\\uc000\\ud835\\udcb6;\\u402amp\\u0100;e\\u12c1\\u16af\\xf1\\u0288ilde\\u803b\\xe3\\u40e3ml\\u803b\\xe4\\u40e4\\u0100ci\\u16c2\\u16c8onin\\xf4\\u0272nt;\\u6a11\\u0800Nabcdefiklnoprsu\\u16ed\\u16f1\\u1730\\u173c\\u1743\\u1748\\u1778\\u177d\\u17e0\\u17e6\\u1839\\u1850\\u170d\\u193d\\u1948\\u1970ot;\\u6aed\\u0100cr\\u16f6\\u171ek\\u0200ceps\\u1700\\u1705\\u170d\\u1713ong;\\u624cpsilon;\\u43f6rime;\\u6035im\\u0100;e\\u171a\\u171b\\u623dq;\\u62cd\\u0176\\u1722\\u1726ee;\\u62bded\\u0100;g\\u172c\\u172d\\u6305e\\xbb\\u172drk\\u0100;t\\u135c\\u1737brk;\\u63b6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601e\\u0280cmprt\\u1753\\u175b\\u1761\\u1764\\u1768aus\\u0100;e\\u010a\\u0109ptyv;\\u69b0s\\xe9\\u170cno\\xf5\\u0113\\u0180ahw\\u176f\\u1771\\u1773;\\u43b2;\\u6136een;\\u626cr;\\uc000\\ud835\\udd1fg\\u0380costuvw\\u178d\\u179d\\u17b3\\u17c1\\u17d5\\u17db\\u17de\\u0180aiu\\u1794\\u1796\\u179a\\xf0\\u0760rc;\\u65efp\\xbb\\u1371\\u0180dpt\\u17a4\\u17a8\\u17adot;\\u6a00lus;\\u6a01imes;\\u6a02\\u0271\\u17b9\\0\\0\\u17becup;\\u6a06ar;\\u6605riangle\\u0100du\\u17cd\\u17d2own;\\u65bdp;\\u65b3plus;\\u6a04e\\xe5\\u1444\\xe5\\u14adarow;\\u690d\\u0180ako\\u17ed\\u1826\\u1835\\u0100cn\\u17f2\\u1823k\\u0180lst\\u17fa\\u05ab\\u1802ozenge;\\u69ebriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181d\\u65b4own;\\u65beeft;\\u65c2ight;\\u65b8k;\\u6423\\u01b1\\u182b\\0\\u1833\\u01b2\\u182f\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183e\\u184d\\u0100;q\\u1843\\u1846\\uc000=\\u20e5uiv;\\uc000\\u2261\\u20e5t;\\u6310\\u0200ptwx\\u1859\\u185e\\u1867\\u186cf;\\uc000\\ud835\\udd53\\u0100;t\\u13cb\\u1863om\\xbb\\u13cctie;\\u62c8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18aa\\u18bb\\u18d7\\u18db\\u18ec\\u18ff\\u1905\\u190a\\u1910\\u1921\\u0200LRlr\\u188e\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18a1\\u18a2\\u18a4\\u18a6\\u18a8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18b3\\u18b5\\u18b7\\u18b9;\\u655d;\\u655a;\\u655c;\\u6559\\u0380;HLRhlr\\u18ca\\u18cb\\u18cd\\u18cf\\u18d1\\u18d3\\u18d5\\u6551;\\u656c;\\u6563;\\u6560;\\u656b;\\u6562;\\u655fox;\\u69c9\\u0200LRlr\\u18e4\\u18e6\\u18e8\\u18ea;\\u6555;\\u6552;\\u6510;\\u650c\\u0280;DUdu\\u06bd\\u18f7\\u18f9\\u18fb\\u18fd;\\u6565;\\u6568;\\u652c;\\u6534inus;\\u629flus;\\u629eimes;\\u62a0\\u0200LRlr\\u1919\\u191b\\u191d\\u191f;\\u655b;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193b\\u6502;\\u656a;\\u6561;\\u655e;\\u653c;\\u6524;\\u651c\\u0100ev\\u0123\\u1942bar\\u803b\\xa6\\u40a6\\u0200ceio\\u1951\\u1956\\u195a\\u1960r;\\uc000\\ud835\\udcb7mi;\\u604fm\\u0100;e\\u171a\\u171cl\\u0180;bh\\u1968\\u1969\\u196b\\u405c;\\u69c5sub;\\u67c8\\u016c\\u1974\\u197el\\u0100;e\\u1979\\u197a\\u6022t\\xbb\\u197ap\\u0180;Ee\\u012f\\u1985\\u1987;\\u6aae\\u0100;q\\u06dc\\u06db\\u0ce1\\u19a7\\0\\u19e8\\u1a11\\u1a15\\u1a32\\0\\u1a37\\u1a50\\0\\0\\u1ab4\\0\\0\\u1ac1\\0\\0\\u1b21\\u1b2e\\u1b4d\\u1b52\\0\\u1bfd\\0\\u1c0c\\u0180cpr\\u19ad\\u19b2\\u19ddute;\\u4107\\u0300;abcds\\u19bf\\u19c0\\u19c4\\u19ca\\u19d5\\u19d9\\u6229nd;\\u6a44rcup;\\u6a49\\u0100au\\u19cf\\u19d2p;\\u6a4bp;\\u6a47ot;\\u6a40;\\uc000\\u2229\\ufe00\\u0100eo\\u19e2\\u19e5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19f0\\u19fb\\u1a01\\u1a05\\u01f0\\u19f5\\0\\u19f8s;\\u6a4don;\\u410ddil\\u803b\\xe7\\u40e7rc;\\u4109ps\\u0100;s\\u1a0c\\u1a0d\\u6a4cm;\\u6a50ot;\\u410b\\u0180dmn\\u1a1b\\u1a20\\u1a26il\\u80bb\\xb8\\u01adptyv;\\u69b2t\\u8100\\xa2;e\\u1a2d\\u1a2e\\u40a2r\\xe4\\u01b2r;\\uc000\\ud835\\udd20\\u0180cei\\u1a3d\\u1a40\\u1a4dy;\\u4447ck\\u0100;m\\u1a47\\u1a48\\u6713ark\\xbb\\u1a48;\\u43c7r\\u0380;Ecefms\\u1a5f\\u1a60\\u1a62\\u1a6b\\u1aa4\\u1aaa\\u1aae\\u65cb;\\u69c3\\u0180;el\\u1a69\\u1a6a\\u1a6d\\u42c6q;\\u6257e\\u0261\\u1a74\\0\\0\\u1a88rrow\\u0100lr\\u1a7c\\u1a81eft;\\u61baight;\\u61bb\\u0280RSacd\\u1a92\\u1a94\\u1a96\\u1a9a\\u1a9f\\xbb\\u0f47;\\u64c8st;\\u629birc;\\u629aash;\\u629dnint;\\u6a10id;\\u6aefcir;\\u69c2ubs\\u0100;u\\u1abb\\u1abc\\u6663it\\xbb\\u1abc\\u02ec\\u1ac7\\u1ad4\\u1afa\\0\\u1b0aon\\u0100;e\\u1acd\\u1ace\\u403a\\u0100;q\\xc7\\xc6\\u026d\\u1ad9\\0\\0\\u1ae2a\\u0100;t\\u1ade\\u1adf\\u402c;\\u4040\\u0180;fl\\u1ae8\\u1ae9\\u1aeb\\u6201\\xee\\u1160e\\u0100mx\\u1af1\\u1af6ent\\xbb\\u1ae9e\\xf3\\u024d\\u01e7\\u1afe\\0\\u1b07\\u0100;d\\u12bb\\u1b02ot;\\u6a6dn\\xf4\\u0246\\u0180fry\\u1b10\\u1b14\\u1b17;\\uc000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1b1dr;\\u6117\\u0100ao\\u1b25\\u1b29rr;\\u61b5ss;\\u6717\\u0100cu\\u1b32\\u1b37r;\\uc000\\ud835\\udcb8\\u0100bp\\u1b3c\\u1b44\\u0100;e\\u1b41\\u1b42\\u6acf;\\u6ad1\\u0100;e\\u1b49\\u1b4a\\u6ad0;\\u6ad2dot;\\u62ef\\u0380delprvw\\u1b60\\u1b6c\\u1b77\\u1b82\\u1bac\\u1bd4\\u1bf9arr\\u0100lr\\u1b68\\u1b6a;\\u6938;\\u6935\\u0270\\u1b72\\0\\0\\u1b75r;\\u62dec;\\u62dfarr\\u0100;p\\u1b7f\\u1b80\\u61b6;\\u693d\\u0300;bcdos\\u1b8f\\u1b90\\u1b96\\u1ba1\\u1ba5\\u1ba8\\u622arcap;\\u6a48\\u0100au\\u1b9b\\u1b9ep;\\u6a46p;\\u6a4aot;\\u628dr;\\u6a45;\\uc000\\u222a\\ufe00\\u0200alrv\\u1bb5\\u1bbf\\u1bde\\u1be3rr\\u0100;m\\u1bbc\\u1bbd\\u61b7;\\u693cy\\u0180evw\\u1bc7\\u1bd4\\u1bd8q\\u0270\\u1bce\\0\\0\\u1bd2re\\xe3\\u1b73u\\xe3\\u1b75ee;\\u62ceedge;\\u62cfen\\u803b\\xa4\\u40a4earrow\\u0100lr\\u1bee\\u1bf3eft\\xbb\\u1b80ight\\xbb\\u1bbde\\xe4\\u1bdd\\u0100ci\\u1c01\\u1c07onin\\xf4\\u01f7nt;\\u6231lcty;\\u632d\\u0980AHabcdefhijlorstuwz\\u1c38\\u1c3b\\u1c3f\\u1c5d\\u1c69\\u1c75\\u1c8a\\u1c9e\\u1cac\\u1cb7\\u1cfb\\u1cff\\u1d0d\\u1d7b\\u1d91\\u1dab\\u1dbb\\u1dc6\\u1dcdr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1c48\\u1c4d\\u1c52\\u1c54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1c5a\\u1c5b\\u6010\\xbb\\u090a\\u016b\\u1c61\\u1c67arow;\\u690fa\\xe3\\u0315\\u0100ay\\u1c6e\\u1c73ron;\\u410f;\\u4434\\u0180;ao\\u0332\\u1c7c\\u1c84\\u0100gr\\u02bf\\u1c81r;\\u61catseq;\\u6a77\\u0180glm\\u1c91\\u1c94\\u1c98\\u803b\\xb0\\u40b0ta;\\u43b4ptyv;\\u69b1\\u0100ir\\u1ca3\\u1ca8sht;\\u697f;\\uc000\\ud835\\udd21ar\\u0100lr\\u1cb3\\u1cb5\\xbb\\u08dc\\xbb\\u101e\\u0280aegsv\\u1cc2\\u0378\\u1cd6\\u1cdc\\u1ce0m\\u0180;os\\u0326\\u1cca\\u1cd4nd\\u0100;s\\u0326\\u1cd1uit;\\u6666amma;\\u43ddin;\\u62f2\\u0180;io\\u1ce7\\u1ce8\\u1cf8\\u40f7de\\u8100\\xf7;o\\u1ce7\\u1cf0ntimes;\\u62c7n\\xf8\\u1cf7cy;\\u4452c\\u026f\\u1d06\\0\\0\\u1d0arn;\\u631eop;\\u630d\\u0280lptuw\\u1d18\\u1d1d\\u1d22\\u1d49\\u1d55lar;\\u4024f;\\uc000\\ud835\\udd55\\u0280;emps\\u030b\\u1d2d\\u1d37\\u1d3d\\u1d42q\\u0100;d\\u0352\\u1d33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62a1blebarwedg\\xe5\\xfan\\u0180adh\\u112e\\u1d5d\\u1d67ownarrow\\xf3\\u1c83arpoon\\u0100lr\\u1d72\\u1d76ef\\xf4\\u1cb4igh\\xf4\\u1cb6\\u0162\\u1d7f\\u1d85karo\\xf7\\u0f42\\u026f\\u1d8a\\0\\0\\u1d8ern;\\u631fop;\\u630c\\u0180cot\\u1d98\\u1da3\\u1da6\\u0100ry\\u1d9d\\u1da1;\\uc000\\ud835\\udcb9;\\u4455l;\\u69f6rok;\\u4111\\u0100dr\\u1db0\\u1db4ot;\\u62f1i\\u0100;f\\u1dba\\u1816\\u65bf\\u0100ah\\u1dc0\\u1dc3r\\xf2\\u0429a\\xf2\\u0fa6angle;\\u69a6\\u0100ci\\u1dd2\\u1dd5y;\\u445fgrarr;\\u67ff\\u0900Dacdefglmnopqrstux\\u1e01\\u1e09\\u1e19\\u1e38\\u0578\\u1e3c\\u1e49\\u1e61\\u1e7e\\u1ea5\\u1eaf\\u1ebd\\u1ee1\\u1f2a\\u1f37\\u1f44\\u1f4e\\u1f5a\\u0100Do\\u1e06\\u1d34o\\xf4\\u1c89\\u0100cs\\u1e0e\\u1e14ute\\u803b\\xe9\\u40e9ter;\\u6a6e\\u0200aioy\\u1e22\\u1e27\\u1e31\\u1e36ron;\\u411br\\u0100;c\\u1e2d\\u1e2e\\u6256\\u803b\\xea\\u40ealon;\\u6255;\\u444dot;\\u4117\\u0100Dr\\u1e41\\u1e45ot;\\u6252;\\uc000\\ud835\\udd22\\u0180;rs\\u1e50\\u1e51\\u1e57\\u6a9aave\\u803b\\xe8\\u40e8\\u0100;d\\u1e5c\\u1e5d\\u6a96ot;\\u6a98\\u0200;ils\\u1e6a\\u1e6b\\u1e72\\u1e74\\u6a99nters;\\u63e7;\\u6113\\u0100;d\\u1e79\\u1e7a\\u6a95ot;\\u6a97\\u0180aps\\u1e85\\u1e89\\u1e97cr;\\u4113ty\\u0180;sv\\u1e92\\u1e93\\u1e95\\u6205et\\xbb\\u1e93p\\u01001;\\u1e9d\\u1ea4\\u0133\\u1ea1\\u1ea3;\\u6004;\\u6005\\u6003\\u0100gs\\u1eaa\\u1eac;\\u414bp;\\u6002\\u0100gp\\u1eb4\\u1eb8on;\\u4119f;\\uc000\\ud835\\udd56\\u0180als\\u1ec4\\u1ece\\u1ed2r\\u0100;s\\u1eca\\u1ecb\\u62d5l;\\u69e3us;\\u6a71i\\u0180;lv\\u1eda\\u1edb\\u1edf\\u43b5on\\xbb\\u1edb;\\u43f5\\u0200csuv\\u1eea\\u1ef3\\u1f0b\\u1f23\\u0100io\\u1eef\\u1e31rc\\xbb\\u1e2e\\u0269\\u1ef9\\0\\0\\u1efb\\xed\\u0548ant\\u0100gl\\u1f02\\u1f06tr\\xbb\\u1e5dess\\xbb\\u1e7a\\u0180aei\\u1f12\\u1f16\\u1f1als;\\u403dst;\\u625fv\\u0100;D\\u0235\\u1f20D;\\u6a78parsl;\\u69e5\\u0100Da\\u1f2f\\u1f33ot;\\u6253rr;\\u6971\\u0180cdi\\u1f3e\\u1f41\\u1ef8r;\\u612fo\\xf4\\u0352\\u0100ah\\u1f49\\u1f4b;\\u43b7\\u803b\\xf0\\u40f0\\u0100mr\\u1f53\\u1f57l\\u803b\\xeb\\u40ebo;\\u60ac\\u0180cip\\u1f61\\u1f64\\u1f67l;\\u4021s\\xf4\\u056e\\u0100eo\\u1f6c\\u1f74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09e1\\u1f92\\0\\u1f9e\\0\\u1fa1\\u1fa7\\0\\0\\u1fc6\\u1fcc\\0\\u1fd3\\0\\u1fe6\\u1fea\\u2000\\0\\u2008\\u205allingdotse\\xf1\\u1e44y;\\u4444male;\\u6640\\u0180ilr\\u1fad\\u1fb3\\u1fc1lig;\\u8000\\ufb03\\u0269\\u1fb9\\0\\0\\u1fbdg;\\u8000\\ufb00ig;\\u8000\\ufb04;\\uc000\\ud835\\udd23lig;\\u8000\\ufb01lig;\\uc000fj\\u0180alt\\u1fd9\\u1fdc\\u1fe1t;\\u666dig;\\u8000\\ufb02ns;\\u65b1of;\\u4192\\u01f0\\u1fee\\0\\u1ff3f;\\uc000\\ud835\\udd57\\u0100ak\\u05bf\\u1ff7\\u0100;v\\u1ffc\\u1ffd\\u62d4;\\u6ad9artint;\\u6a0d\\u0100ao\\u200c\\u2055\\u0100cs\\u2011\\u2052\\u03b1\\u201a\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03b2\\u2022\\u2025\\u2027\\u202a\\u202c\\0\\u202e\\u803b\\xbd\\u40bd;\\u6153\\u803b\\xbc\\u40bc;\\u6155;\\u6159;\\u615b\\u01b3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02b4\\u203e\\u2041\\0\\0\\u2043\\u803b\\xbe\\u40be;\\u6157;\\u615c5;\\u6158\\u01b6\\u204c\\0\\u204e;\\u615a;\\u615d8;\\u615el;\\u6044wn;\\u6322cr;\\uc000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209f\\u20a5\\u20b0\\u20b4\\u20f0\\u20f5\\u20fa\\u20ff\\u2103\\u2112\\u2138\\u0317\\u213e\\u2152\\u219e\\u0100;l\\u064d\\u2087;\\u6a8c\\u0180cmp\\u2090\\u2095\\u209dute;\\u41f5ma\\u0100;d\\u209c\\u1cda\\u43b3;\\u6a86reve;\\u411f\\u0100iy\\u20aa\\u20aerc;\\u411d;\\u4433ot;\\u4121\\u0200;lqs\\u063e\\u0642\\u20bd\\u20c9\\u0180;qs\\u063e\\u064c\\u20c4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20d2\\u20d5\\u20e5c;\\u6aa9ot\\u0100;o\\u20dc\\u20dd\\u6a80\\u0100;l\\u20e2\\u20e3\\u6a82;\\u6a84\\u0100;e\\u20ea\\u20ed\\uc000\\u22db\\ufe00s;\\u6a94r;\\uc000\\ud835\\udd24\\u0100;g\\u0673\\u061bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065a\\u210c\\u210e\\u2110;\\u6a92;\\u6aa5;\\u6aa4\\u0200Eaes\\u211b\\u211d\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6a8arox\\xbb\\u2124\\u0100;q\\u212e\\u212f\\u6a88\\u0100;q\\u212e\\u211bim;\\u62e7pf;\\uc000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610am\\u0180;el\\u066b\\u214e\\u2150;\\u6a8e;\\u6a90\\u8300>;cdlqr\\u05ee\\u2160\\u216a\\u216e\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6aa7r;\\u6a7aot;\\u62d7Par;\\u6995uest;\\u6a7c\\u0280adels\\u2184\\u216a\\u2190\\u0656\\u219b\\u01f0\\u2189\\0\\u218epro\\xf8\\u209er;\\u6978q\\u0100lq\\u063f\\u2196les\\xf3\\u2088i\\xed\\u066b\\u0100en\\u21a3\\u21adrtneqq;\\uc000\\u2269\\ufe00\\xc5\\u21aa\\u0500Aabcefkosy\\u21c4\\u21c7\\u21f1\\u21f5\\u21fa\\u2218\\u221d\\u222f\\u2268\\u227dr\\xf2\\u03a0\\u0200ilmr\\u21d0\\u21d4\\u21d7\\u21dbrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06a9\\u0100dr\\u21e0\\u21e4cy;\\u444a\\u0180;cw\\u08f4\\u21eb\\u21efir;\\u6948;\\u61adar;\\u610firc;\\u4125\\u0180alr\\u2201\\u220e\\u2213rts\\u0100;u\\u2209\\u220a\\u6665it\\xbb\\u220alip;\\u6026con;\\u62b9r;\\uc000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223a\\u223e\\u2243\\u225e\\u2263rr;\\u61fftht;\\u623bk\\u0100lr\\u2249\\u2253eftarrow;\\u61a9ightarrow;\\u61aaf;\\uc000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226f\\u2274\\u2278r;\\uc000\\ud835\\udcbdas\\xe8\\u21f4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1c5b\\u0ae1\\u22a3\\0\\u22aa\\0\\u22b8\\u22c5\\u22ce\\0\\u22d5\\u22f3\\0\\0\\u22f8\\u2322\\u2367\\u2362\\u237f\\0\\u2386\\u23aa\\u23b4cute\\u803b\\xed\\u40ed\\u0180;iy\\u0771\\u22b0\\u22b5rc\\u803b\\xee\\u40ee;\\u4438\\u0100cx\\u22bc\\u22bfy;\\u4435cl\\u803b\\xa1\\u40a1\\u0100fr\\u039f\\u22c9;\\uc000\\ud835\\udd26rave\\u803b\\xec\\u40ec\\u0200;ino\\u073e\\u22dd\\u22e9\\u22ee\\u0100in\\u22e2\\u22e6nt;\\u6a0ct;\\u622dfin;\\u69dcta;\\u6129lig;\\u4133\\u0180aop\\u22fe\\u231a\\u231d\\u0180cgt\\u2305\\u2308\\u2317r;\\u412b\\u0180elp\\u071f\\u230f\\u2313in\\xe5\\u078ear\\xf4\\u0720h;\\u4131f;\\u62b7ed;\\u41b5\\u0280;cfot\\u04f4\\u232c\\u2331\\u233d\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621eie;\\u69dddo\\xf4\\u2319\\u0280;celp\\u0757\\u234c\\u2350\\u235b\\u2361al;\\u62ba\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234darhk;\\u6a17rod;\\u6a3c\\u0200cgpt\\u236f\\u2372\\u2376\\u237by;\\u4451on;\\u412ff;\\uc000\\ud835\\udd5aa;\\u43b9uest\\u803b\\xbf\\u40bf\\u0100ci\\u238a\\u238fr;\\uc000\\ud835\\udcben\\u0280;Edsv\\u04f4\\u239b\\u239d\\u23a1\\u04f3;\\u62f9ot;\\u62f5\\u0100;v\\u23a6\\u23a7\\u62f4;\\u62f3\\u0100;i\\u0777\\u23aelde;\\u4129\\u01eb\\u23b8\\0\\u23bccy;\\u4456l\\u803b\\xef\\u40ef\\u0300cfmosu\\u23cc\\u23d7\\u23dc\\u23e1\\u23e7\\u23f5\\u0100iy\\u23d1\\u23d5rc;\\u4135;\\u4439r;\\uc000\\ud835\\udd27ath;\\u4237pf;\\uc000\\ud835\\udd5b\\u01e3\\u23ec\\0\\u23f1r;\\uc000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240b\\u2416\\u2422\\u2427\\u242d\\u2431\\u2435\\u243bppa\\u0100;v\\u2413\\u2414\\u43ba;\\u43f0\\u0100ey\\u241b\\u2420dil;\\u4137;\\u443ar;\\uc000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445cpf;\\uc000\\ud835\\udd5ccr;\\uc000\\ud835\\udcc0\\u0b80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248d\\u2491\\u250e\\u253d\\u255a\\u2580\\u264e\\u265e\\u2665\\u2679\\u267d\\u269a\\u26b2\\u26d8\\u275d\\u2768\\u278b\\u27c0\\u2801\\u2812\\u0180art\\u2477\\u247a\\u247cr\\xf2\\u09c6\\xf2\\u0395ail;\\u691barr;\\u690e\\u0100;g\\u0994\\u248b;\\u6a8bar;\\u6962\\u0963\\u24a5\\0\\u24aa\\0\\u24b1\\0\\0\\0\\0\\0\\u24b5\\u24ba\\0\\u24c6\\u24c8\\u24cd\\0\\u24f9ute;\\u413amptyv;\\u69b4ra\\xee\\u084cbda;\\u43bbg\\u0180;dl\\u088e\\u24c1\\u24c3;\\u6991\\xe5\\u088e;\\u6a85uo\\u803b\\xab\\u40abr\\u0400;bfhlpst\\u0899\\u24de\\u24e6\\u24e9\\u24eb\\u24ee\\u24f1\\u24f5\\u0100;f\\u089d\\u24e3s;\\u691fs;\\u691d\\xeb\\u2252p;\\u61abl;\\u6939im;\\u6973l;\\u61a2\\u0180;ae\\u24ff\\u2500\\u2504\\u6aabil;\\u6919\\u0100;s\\u2509\\u250a\\u6aad;\\uc000\\u2aad\\ufe00\\u0180abr\\u2515\\u2519\\u251drr;\\u690crk;\\u6772\\u0100ak\\u2522\\u252cc\\u0100ek\\u2528\\u252a;\\u407b;\\u405b\\u0100es\\u2531\\u2533;\\u698bl\\u0100du\\u2539\\u253b;\\u698f;\\u698d\\u0200aeuy\\u2546\\u254b\\u2556\\u2558ron;\\u413e\\u0100di\\u2550\\u2554il;\\u413c\\xec\\u08b0\\xe2\\u2529;\\u443b\\u0200cqrs\\u2563\\u2566\\u256d\\u257da;\\u6936uo\\u0100;r\\u0e19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694bh;\\u61b2\\u0280;fgqs\\u258b\\u258c\\u0989\\u25f3\\u25ff\\u6264t\\u0280ahlrt\\u2598\\u25a4\\u25b7\\u25c2\\u25e8rrow\\u0100;t\\u0899\\u25a1a\\xe9\\u24f6arpoon\\u0100du\\u25af\\u25b4own\\xbb\\u045ap\\xbb\\u0966eftarrows;\\u61c7ight\\u0180ahs\\u25cd\\u25d6\\u25derrow\\u0100;s\\u08f4\\u08a7arpoon\\xf3\\u0f98quigarro\\xf7\\u21f0hreetimes;\\u62cb\\u0180;qs\\u258b\\u0993\\u25falan\\xf4\\u09ac\\u0280;cdgs\\u09ac\\u260a\\u260d\\u261d\\u2628c;\\u6aa8ot\\u0100;o\\u2614\\u2615\\u6a7f\\u0100;r\\u261a\\u261b\\u6a81;\\u6a83\\u0100;e\\u2622\\u2625\\uc000\\u22da\\ufe00s;\\u6a93\\u0280adegs\\u2633\\u2639\\u263d\\u2649\\u264bppro\\xf8\\u24c6ot;\\u62d6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248c\\xf4\\u099bi\\xed\\u09b2\\u0180ilr\\u2655\\u08e1\\u265asht;\\u697c;\\uc000\\ud835\\udd29\\u0100;E\\u099c\\u2663;\\u6a91\\u0161\\u2669\\u2676r\\u0100du\\u25b2\\u266e\\u0100;l\\u0965\\u2673;\\u696alk;\\u6584cy;\\u4459\\u0280;acht\\u0a48\\u2688\\u268b\\u2691\\u2696r\\xf2\\u25c1orne\\xf2\\u1d08ard;\\u696bri;\\u65fa\\u0100io\\u269f\\u26a4dot;\\u4140ust\\u0100;a\\u26ac\\u26ad\\u63b0che\\xbb\\u26ad\\u0200Eaes\\u26bb\\u26bd\\u26c9\\u26d4;\\u6268p\\u0100;p\\u26c3\\u26c4\\u6a89rox\\xbb\\u26c4\\u0100;q\\u26ce\\u26cf\\u6a87\\u0100;q\\u26ce\\u26bbim;\\u62e6\\u0400abnoptwz\\u26e9\\u26f4\\u26f7\\u271a\\u272f\\u2741\\u2747\\u2750\\u0100nr\\u26ee\\u26f1g;\\u67ecr;\\u61fdr\\xeb\\u08c1g\\u0180lmr\\u26ff\\u270d\\u2714eft\\u0100ar\\u09e6\\u2707ight\\xe1\\u09f2apsto;\\u67fcight\\xe1\\u09fdparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24edight;\\u61ac\\u0180afl\\u2736\\u2739\\u273dr;\\u6985;\\uc000\\ud835\\udd5dus;\\u6a2dimes;\\u6a34\\u0161\\u274b\\u274fst;\\u6217\\xe1\\u134e\\u0180;ef\\u2757\\u2758\\u1800\\u65cange\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277c\\u2785\\u2787r\\xf2\\u08a8orne\\xf2\\u1d8car\\u0100;d\\u0f98\\u2783;\\u696d;\\u600eri;\\u62bf\\u0300achiqt\\u2798\\u279d\\u0a40\\u27a2\\u27ae\\u27bbquo;\\u6039r;\\uc000\\ud835\\udcc1m\\u0180;eg\\u09b2\\u27aa\\u27ac;\\u6a8d;\\u6a8f\\u0100bu\\u252a\\u27b3o\\u0100;r\\u0e1f\\u27b9;\\u601arok;\\u4142\\u8400<;cdhilqr\\u082b\\u27d2\\u2639\\u27dc\\u27e0\\u27e5\\u27ea\\u27f0\\u0100ci\\u27d7\\u27d9;\\u6aa6r;\\u6a79re\\xe5\\u25f2mes;\\u62c9arr;\\u6976uest;\\u6a7b\\u0100Pi\\u27f5\\u27f9ar;\\u6996\\u0180;ef\\u2800\\u092d\\u181b\\u65c3r\\u0100du\\u2807\\u280dshar;\\u694ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uc000\\u2268\\ufe00\\xc5\\u281e\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288e\\u2893\\u28a0\\u28a5\\u28a8\\u28da\\u28e2\\u28e4\\u0a83\\u28f3\\u2902Dot;\\u623a\\u0200clpr\\u284e\\u2852\\u2863\\u287dr\\u803b\\xaf\\u40af\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285e\\u285f\\u6720se\\xbb\\u285f\\u0100;s\\u103b\\u2868to\\u0200;dlu\\u103b\\u2873\\u2877\\u287bow\\xee\\u048cef\\xf4\\u090f\\xf0\\u13d1ker;\\u65ae\\u0100oy\\u2887\\u288cmma;\\u6a29;\\u443cash;\\u6014asuredangle\\xbb\\u1626r;\\uc000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28af\\u28b4\\u28c9ro\\u803b\\xb5\\u40b5\\u0200;acd\\u1464\\u28bd\\u28c0\\u28c4s\\xf4\\u16a7ir;\\u6af0ot\\u80bb\\xb7\\u01b5us\\u0180;bd\\u28d2\\u1903\\u28d3\\u6212\\u0100;u\\u1d3c\\u28d8;\\u6a2a\\u0163\\u28de\\u28e1p;\\u6adb\\xf2\\u2212\\xf0\\u0a81\\u0100dp\\u28e9\\u28eeels;\\u62a7f;\\uc000\\ud835\\udd5e\\u0100ct\\u28f8\\u28fdr;\\uc000\\ud835\\udcc2pos\\xbb\\u159d\\u0180;lm\\u2909\\u290a\\u290d\\u43bctimap;\\u62b8\\u0c00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297e\\u2989\\u2998\\u29da\\u29e9\\u2a15\\u2a1a\\u2a58\\u2a5d\\u2a83\\u2a95\\u2aa4\\u2aa8\\u2b04\\u2b07\\u2b44\\u2b7f\\u2bae\\u2c34\\u2c67\\u2c7c\\u2ce9\\u0100gt\\u2947\\u294b;\\uc000\\u22d9\\u0338\\u0100;v\\u2950\\u0bcf\\uc000\\u226b\\u20d2\\u0180elt\\u295a\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61cdightarrow;\\u61ce;\\uc000\\u22d8\\u0338\\u0100;v\\u297b\\u0c47\\uc000\\u226a\\u20d2ightarrow;\\u61cf\\u0100Dd\\u298e\\u2993ash;\\u62afash;\\u62ae\\u0280bcnpt\\u29a3\\u29a7\\u29ac\\u29b1\\u29ccla\\xbb\\u02deute;\\u4144g;\\uc000\\u2220\\u20d2\\u0280;Eiop\\u0d84\\u29bc\\u29c0\\u29c5\\u29c8;\\uc000\\u2a70\\u0338d;\\uc000\\u224b\\u0338s;\\u4149ro\\xf8\\u0d84ur\\u0100;a\\u29d3\\u29d4\\u666el\\u0100;s\\u29d3\\u0b38\\u01f3\\u29df\\0\\u29e3p\\u80bb\\xa0\\u0b37mp\\u0100;e\\u0bf9\\u0c00\\u0280aeouy\\u29f4\\u29fe\\u2a03\\u2a10\\u2a13\\u01f0\\u29f9\\0\\u29fb;\\u6a43on;\\u4148dil;\\u4146ng\\u0100;d\\u0d7e\\u2a0aot;\\uc000\\u2a6d\\u0338p;\\u6a42;\\u443dash;\\u6013\\u0380;Aadqsx\\u0b92\\u2a29\\u2a2d\\u2a3b\\u2a41\\u2a45\\u2a50rr;\\u61d7r\\u0100hr\\u2a33\\u2a36k;\\u6924\\u0100;o\\u13f2\\u13f0ot;\\uc000\\u2250\\u0338ui\\xf6\\u0b63\\u0100ei\\u2a4a\\u2a4ear;\\u6928\\xed\\u0b98ist\\u0100;s\\u0ba0\\u0b9fr;\\uc000\\ud835\\udd2b\\u0200Eest\\u0bc5\\u2a66\\u2a79\\u2a7c\\u0180;qs\\u0bbc\\u2a6d\\u0be1\\u0180;qs\\u0bbc\\u0bc5\\u2a74lan\\xf4\\u0be2i\\xed\\u0bea\\u0100;r\\u0bb6\\u2a81\\xbb\\u0bb7\\u0180Aap\\u2a8a\\u2a8d\\u2a91r\\xf2\\u2971rr;\\u61aear;\\u6af2\\u0180;sv\\u0f8d\\u2a9c\\u0f8c\\u0100;d\\u2aa1\\u2aa2\\u62fc;\\u62facy;\\u445a\\u0380AEadest\\u2ab7\\u2aba\\u2abe\\u2ac2\\u2ac5\\u2af6\\u2af9r\\xf2\\u2966;\\uc000\\u2266\\u0338rr;\\u619ar;\\u6025\\u0200;fqs\\u0c3b\\u2ace\\u2ae3\\u2aeft\\u0100ar\\u2ad4\\u2ad9rro\\xf7\\u2ac1ightarro\\xf7\\u2a90\\u0180;qs\\u0c3b\\u2aba\\u2aealan\\xf4\\u0c55\\u0100;s\\u0c55\\u2af4\\xbb\\u0c36i\\xed\\u0c5d\\u0100;r\\u0c35\\u2afei\\u0100;e\\u0c1a\\u0c25i\\xe4\\u0d90\\u0100pt\\u2b0c\\u2b11f;\\uc000\\ud835\\udd5f\\u8180\\xac;in\\u2b19\\u2b1a\\u2b36\\u40acn\\u0200;Edv\\u0b89\\u2b24\\u2b28\\u2b2e;\\uc000\\u22f9\\u0338ot;\\uc000\\u22f5\\u0338\\u01e1\\u0b89\\u2b33\\u2b35;\\u62f7;\\u62f6i\\u0100;v\\u0cb8\\u2b3c\\u01e1\\u0cb8\\u2b41\\u2b43;\\u62fe;\\u62fd\\u0180aor\\u2b4b\\u2b63\\u2b69r\\u0200;ast\\u0b7b\\u2b55\\u2b5a\\u2b5flle\\xec\\u0b7bl;\\uc000\\u2afd\\u20e5;\\uc000\\u2202\\u0338lint;\\u6a14\\u0180;ce\\u0c92\\u2b70\\u2b73u\\xe5\\u0ca5\\u0100;c\\u0c98\\u2b78\\u0100;e\\u0c92\\u2b7d\\xf1\\u0c98\\u0200Aait\\u2b88\\u2b8b\\u2b9d\\u2ba7r\\xf2\\u2988rr\\u0180;cw\\u2b94\\u2b95\\u2b99\\u619b;\\uc000\\u2933\\u0338;\\uc000\\u219d\\u0338ghtarrow\\xbb\\u2b95ri\\u0100;e\\u0ccb\\u0cd6\\u0380chimpqu\\u2bbd\\u2bcd\\u2bd9\\u2b04\\u0b78\\u2be4\\u2bef\\u0200;cer\\u0d32\\u2bc6\\u0d37\\u2bc9u\\xe5\\u0d45;\\uc000\\ud835\\udcc3ort\\u026d\\u2b05\\0\\0\\u2bd6ar\\xe1\\u2b56m\\u0100;e\\u0d6e\\u2bdf\\u0100;q\\u0d74\\u0d73su\\u0100bp\\u2beb\\u2bed\\xe5\\u0cf8\\xe5\\u0d0b\\u0180bcp\\u2bf6\\u2c11\\u2c19\\u0200;Ees\\u2bff\\u2c00\\u0d22\\u2c04\\u6284;\\uc000\\u2ac5\\u0338et\\u0100;e\\u0d1b\\u2c0bq\\u0100;q\\u0d23\\u2c00c\\u0100;e\\u0d32\\u2c17\\xf1\\u0d38\\u0200;Ees\\u2c22\\u2c23\\u0d5f\\u2c27\\u6285;\\uc000\\u2ac6\\u0338et\\u0100;e\\u0d58\\u2c2eq\\u0100;q\\u0d60\\u2c23\\u0200gilr\\u2c3d\\u2c3f\\u2c45\\u2c47\\xec\\u0bd7lde\\u803b\\xf1\\u40f1\\xe7\\u0c43iangle\\u0100lr\\u2c52\\u2c5ceft\\u0100;e\\u0c1a\\u2c5a\\xf1\\u0c26ight\\u0100;e\\u0ccb\\u2c65\\xf1\\u0cd7\\u0100;m\\u2c6c\\u2c6d\\u43bd\\u0180;es\\u2c74\\u2c75\\u2c79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2c8f\\u2c94\\u2c99\\u2c9e\\u2ca3\\u2cb0\\u2cb6\\u2cd3\\u2ce3ash;\\u62adarr;\\u6904p;\\uc000\\u224d\\u20d2ash;\\u62ac\\u0100et\\u2ca8\\u2cac;\\uc000\\u2265\\u20d2;\\uc000>\\u20d2nfin;\\u69de\\u0180Aet\\u2cbd\\u2cc1\\u2cc5rr;\\u6902;\\uc000\\u2264\\u20d2\\u0100;r\\u2cca\\u2ccd\\uc000<\\u20d2ie;\\uc000\\u22b4\\u20d2\\u0100At\\u2cd8\\u2cdcrr;\\u6903rie;\\uc000\\u22b5\\u20d2im;\\uc000\\u223c\\u20d2\\u0180Aan\\u2cf0\\u2cf4\\u2d02rr;\\u61d6r\\u0100hr\\u2cfa\\u2cfdk;\\u6923\\u0100;o\\u13e7\\u13e5ear;\\u6927\\u1253\\u1a95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2d2d\\0\\u2d38\\u2d48\\u2d60\\u2d65\\u2d72\\u2d84\\u1b07\\0\\0\\u2d8d\\u2dab\\0\\u2dc8\\u2dce\\0\\u2ddc\\u2e19\\u2e2b\\u2e3e\\u2e43\\u0100cs\\u2d31\\u1a97ute\\u803b\\xf3\\u40f3\\u0100iy\\u2d3c\\u2d45r\\u0100;c\\u1a9e\\u2d42\\u803b\\xf4\\u40f4;\\u443e\\u0280abios\\u1aa0\\u2d52\\u2d57\\u01c8\\u2d5alac;\\u4151v;\\u6a38old;\\u69bclig;\\u4153\\u0100cr\\u2d69\\u2d6dir;\\u69bf;\\uc000\\ud835\\udd2c\\u036f\\u2d79\\0\\0\\u2d7c\\0\\u2d82n;\\u42dbave\\u803b\\xf2\\u40f2;\\u69c1\\u0100bm\\u2d88\\u0df4ar;\\u69b5\\u0200acit\\u2d95\\u2d98\\u2da5\\u2da8r\\xf2\\u1a80\\u0100ir\\u2d9d\\u2da0r;\\u69beoss;\\u69bbn\\xe5\\u0e52;\\u69c0\\u0180aei\\u2db1\\u2db5\\u2db9cr;\\u414dga;\\u43c9\\u0180cdn\\u2dc0\\u2dc5\\u01cdron;\\u43bf;\\u69b6pf;\\uc000\\ud835\\udd60\\u0180ael\\u2dd4\\u2dd7\\u01d2r;\\u69b7rp;\\u69b9\\u0380;adiosv\\u2dea\\u2deb\\u2dee\\u2e08\\u2e0d\\u2e10\\u2e16\\u6228r\\xf2\\u1a86\\u0200;efm\\u2df7\\u2df8\\u2e02\\u2e05\\u6a5dr\\u0100;o\\u2dfe\\u2dff\\u6134f\\xbb\\u2dff\\u803b\\xaa\\u40aa\\u803b\\xba\\u40bagof;\\u62b6r;\\u6a56lope;\\u6a57;\\u6a5b\\u0180clo\\u2e1f\\u2e21\\u2e27\\xf2\\u2e01ash\\u803b\\xf8\\u40f8l;\\u6298i\\u016c\\u2e2f\\u2e34de\\u803b\\xf5\\u40f5es\\u0100;a\\u01db\\u2e3as;\\u6a36ml\\u803b\\xf6\\u40f6bar;\\u633d\\u0ae1\\u2e5e\\0\\u2e7d\\0\\u2e80\\u2e9d\\0\\u2ea2\\u2eb9\\0\\0\\u2ecb\\u0e9c\\0\\u2f13\\0\\0\\u2f2b\\u2fbc\\0\\u2fc8r\\u0200;ast\\u0403\\u2e67\\u2e72\\u0e85\\u8100\\xb6;l\\u2e6d\\u2e6e\\u40b6le\\xec\\u0403\\u0269\\u2e78\\0\\0\\u2e7bm;\\u6af3;\\u6afdy;\\u443fr\\u0280cimpt\\u2e8b\\u2e8f\\u2e93\\u1865\\u2e97nt;\\u4025od;\\u402eil;\\u6030enk;\\u6031r;\\uc000\\ud835\\udd2d\\u0180imo\\u2ea8\\u2eb0\\u2eb4\\u0100;v\\u2ead\\u2eae\\u43c6;\\u43d5ma\\xf4\\u0a76ne;\\u660e\\u0180;tv\\u2ebf\\u2ec0\\u2ec8\\u43c0chfork\\xbb\\u1ffd;\\u43d6\\u0100au\\u2ecf\\u2edfn\\u0100ck\\u2ed5\\u2eddk\\u0100;h\\u21f4\\u2edb;\\u610e\\xf6\\u21f4s\\u0480;abcdemst\\u2ef3\\u2ef4\\u1908\\u2ef9\\u2efd\\u2f04\\u2f06\\u2f0a\\u2f0e\\u402bcir;\\u6a23ir;\\u6a22\\u0100ou\\u1d40\\u2f02;\\u6a25;\\u6a72n\\u80bb\\xb1\\u0e9dim;\\u6a26wo;\\u6a27\\u0180ipu\\u2f19\\u2f20\\u2f25ntint;\\u6a15f;\\uc000\\ud835\\udd61nd\\u803b\\xa3\\u40a3\\u0500;Eaceinosu\\u0ec8\\u2f3f\\u2f41\\u2f44\\u2f47\\u2f81\\u2f89\\u2f92\\u2f7e\\u2fb6;\\u6ab3p;\\u6ab7u\\xe5\\u0ed9\\u0100;c\\u0ece\\u2f4c\\u0300;acens\\u0ec8\\u2f59\\u2f5f\\u2f66\\u2f68\\u2f7eppro\\xf8\\u2f43urlye\\xf1\\u0ed9\\xf1\\u0ece\\u0180aes\\u2f6f\\u2f76\\u2f7approx;\\u6ab9qq;\\u6ab5im;\\u62e8i\\xed\\u0edfme\\u0100;s\\u2f88\\u0eae\\u6032\\u0180Eas\\u2f78\\u2f90\\u2f7a\\xf0\\u2f75\\u0180dfp\\u0eec\\u2f99\\u2faf\\u0180als\\u2fa0\\u2fa5\\u2faalar;\\u632eine;\\u6312urf;\\u6313\\u0100;t\\u0efb\\u2fb4\\xef\\u0efbrel;\\u62b0\\u0100ci\\u2fc0\\u2fc5r;\\uc000\\ud835\\udcc5;\\u43c8ncsp;\\u6008\\u0300fiopsu\\u2fda\\u22e2\\u2fdf\\u2fe5\\u2feb\\u2ff1r;\\uc000\\ud835\\udd2epf;\\uc000\\ud835\\udd62rime;\\u6057cr;\\uc000\\ud835\\udcc6\\u0180aeo\\u2ff8\\u3009\\u3013t\\u0100ei\\u2ffe\\u3005rnion\\xf3\\u06b0nt;\\u6a16st\\u0100;e\\u3010\\u3011\\u403f\\xf1\\u1f19\\xf4\\u0f14\\u0a80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30e0\\u310e\\u312b\\u3147\\u3162\\u3172\\u318e\\u3206\\u3215\\u3224\\u3229\\u3258\\u326e\\u3272\\u3290\\u32b0\\u32b7\\u0180art\\u3047\\u304a\\u304cr\\xf2\\u10b3\\xf2\\u03ddail;\\u691car\\xf2\\u1c65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307f\\u308f\\u3094\\u30cc\\u0100eu\\u306d\\u3071;\\uc000\\u223d\\u0331te;\\u4155i\\xe3\\u116emptyv;\\u69b3g\\u0200;del\\u0fd1\\u3089\\u308b\\u308d;\\u6992;\\u69a5\\xe5\\u0fd1uo\\u803b\\xbb\\u40bbr\\u0580;abcfhlpstw\\u0fdc\\u30ac\\u30af\\u30b7\\u30b9\\u30bc\\u30be\\u30c0\\u30c3\\u30c7\\u30cap;\\u6975\\u0100;f\\u0fe0\\u30b4s;\\u6920;\\u6933s;\\u691e\\xeb\\u225d\\xf0\\u272el;\\u6945im;\\u6974l;\\u61a3;\\u619d\\u0100ai\\u30d1\\u30d5il;\\u691ao\\u0100;n\\u30db\\u30dc\\u6236al\\xf3\\u0f1e\\u0180abr\\u30e7\\u30ea\\u30eer\\xf2\\u17e5rk;\\u6773\\u0100ak\\u30f3\\u30fdc\\u0100ek\\u30f9\\u30fb;\\u407d;\\u405d\\u0100es\\u3102\\u3104;\\u698cl\\u0100du\\u310a\\u310c;\\u698e;\\u6990\\u0200aeuy\\u3117\\u311c\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0ff2\\xe2\\u30fa;\\u4440\\u0200clqs\\u3134\\u3137\\u313d\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020e\\u020dh;\\u61b3\\u0180acg\\u314e\\u315f\\u0f44l\\u0200;ips\\u0f78\\u3158\\u315b\\u109cn\\xe5\\u10bbar\\xf4\\u0fa9t;\\u65ad\\u0180ilr\\u3169\\u1023\\u316esht;\\u697d;\\uc000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317d\\u317f\\xbb\\u047b\\u0100;l\\u1091\\u3184;\\u696c\\u0100;v\\u318b\\u318c\\u43c1;\\u43f1\\u0180gns\\u3195\\u31f9\\u31fcht\\u0300ahlrst\\u31a4\\u31b0\\u31c2\\u31d8\\u31e4\\u31eerrow\\u0100;t\\u0fdc\\u31ada\\xe9\\u30c8arpoon\\u0100du\\u31bb\\u31bfow\\xee\\u317ep\\xbb\\u1092eft\\u0100ah\\u31ca\\u31d0rrow\\xf3\\u0feaarpoon\\xf3\\u0551ightarrows;\\u61c9quigarro\\xf7\\u30cbhreetimes;\\u62ccg;\\u42daingdotse\\xf1\\u1f32\\u0180ahm\\u320d\\u3210\\u3213r\\xf2\\u0feaa\\xf2\\u0551;\\u600foust\\u0100;a\\u321e\\u321f\\u63b1che\\xbb\\u321fmid;\\u6aee\\u0200abpt\\u3232\\u323d\\u3240\\u3252\\u0100nr\\u3237\\u323ag;\\u67edr;\\u61fer\\xeb\\u1003\\u0180afl\\u3247\\u324a\\u324er;\\u6986;\\uc000\\ud835\\udd63us;\\u6a2eimes;\\u6a35\\u0100ap\\u325d\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6a12ar\\xf2\\u31e3\\u0200achq\\u327b\\u3280\\u10bc\\u3285quo;\\u603ar;\\uc000\\ud835\\udcc7\\u0100bu\\u30fb\\u328ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329b\\u32a0re\\xe5\\u31f8mes;\\u62cai\\u0200;efl\\u32aa\\u1059\\u1821\\u32ab\\u65b9tri;\\u69celuhar;\\u6968;\\u611e\\u0d61\\u32d5\\u32db\\u32df\\u332c\\u3338\\u3371\\0\\u337a\\u33a4\\0\\0\\u33ec\\u33f0\\0\\u3428\\u3448\\u345a\\u34ad\\u34b1\\u34ca\\u34f1\\0\\u3616\\0\\0\\u3633cute;\\u415bqu\\xef\\u27ba\\u0500;Eaceinpsy\\u11ed\\u32f3\\u32f5\\u32ff\\u3302\\u330b\\u330f\\u331f\\u3326\\u3329;\\u6ab4\\u01f0\\u32fa\\0\\u32fc;\\u6ab8on;\\u4161u\\xe5\\u11fe\\u0100;d\\u11f3\\u3307il;\\u415frc;\\u415d\\u0180Eas\\u3316\\u3318\\u331b;\\u6ab6p;\\u6abaim;\\u62e9olint;\\u6a13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1d47\\u3335\\u62c5;\\u6a66\\u0380Aacmstx\\u3346\\u334a\\u3357\\u335b\\u335e\\u3363\\u336drr;\\u61d8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0a36\\u0a34t\\u803b\\xa7\\u40a7i;\\u403bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uc000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33a0rp;\\u666f\\u0100hy\\u338b\\u338fcy;\\u4449;\\u4448rt\\u026d\\u3399\\0\\0\\u339ci\\xe4\\u1464ara\\xec\\u2e6f\\u803b\\xad\\u40ad\\u0100gm\\u33a8\\u33b4ma\\u0180;fv\\u33b1\\u33b2\\u33b2\\u43c3;\\u43c2\\u0400;deglnpr\\u12ab\\u33c5\\u33c9\\u33ce\\u33d6\\u33de\\u33e1\\u33e6ot;\\u6a6a\\u0100;q\\u12b1\\u12b0\\u0100;E\\u33d3\\u33d4\\u6a9e;\\u6aa0\\u0100;E\\u33db\\u33dc\\u6a9d;\\u6a9fe;\\u6246lus;\\u6a24arr;\\u6972ar\\xf2\\u113d\\u0200aeit\\u33f8\\u3408\\u340f\\u3417\\u0100ls\\u33fd\\u3404lsetm\\xe9\\u336ahp;\\u6a33parsl;\\u69e4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341c\\u341d\\u6aaa\\u0100;s\\u3422\\u3423\\u6aac;\\uc000\\u2aac\\ufe00\\u0180flp\\u342e\\u3433\\u3442tcy;\\u444c\\u0100;b\\u3438\\u3439\\u402f\\u0100;a\\u343e\\u343f\\u69c4r;\\u633ff;\\uc000\\ud835\\udd64a\\u0100dr\\u344d\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349f\\u0100au\\u3465\\u346fp\\u0100;s\\u1188\\u346b;\\uc000\\u2293\\ufe00p\\u0100;s\\u11b4\\u3475;\\uc000\\u2294\\ufe00u\\u0100bp\\u347f\\u348f\\u0180;es\\u1197\\u119c\\u3486et\\u0100;e\\u1197\\u348d\\xf1\\u119d\\u0180;es\\u11a8\\u11ad\\u3496et\\u0100;e\\u11a8\\u349d\\xf1\\u11ae\\u0180;af\\u117b\\u34a6\\u05b0r\\u0165\\u34ab\\u05b1\\xbb\\u117car\\xf2\\u1148\\u0200cemt\\u34b9\\u34be\\u34c2\\u34c5r;\\uc000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11be\\u0100ar\\u34ce\\u34d5r\\u0100;f\\u34d4\\u17bf\\u6606\\u0100an\\u34da\\u34edight\\u0100ep\\u34e3\\u34eapsilo\\xee\\u1ee0h\\xe9\\u2eafs\\xbb\\u2852\\u0280bcmnp\\u34fb\\u355e\\u1209\\u358b\\u358e\\u0480;Edemnprs\\u350e\\u350f\\u3511\\u3515\\u351e\\u3523\\u352c\\u3531\\u3536\\u6282;\\u6ac5ot;\\u6abd\\u0100;d\\u11da\\u351aot;\\u6ac3ult;\\u6ac1\\u0100Ee\\u3528\\u352a;\\u6acb;\\u628alus;\\u6abfarr;\\u6979\\u0180eiu\\u353d\\u3552\\u3555t\\u0180;en\\u350e\\u3545\\u354bq\\u0100;q\\u11da\\u350feq\\u0100;q\\u352b\\u3528m;\\u6ac7\\u0100bp\\u355a\\u355c;\\u6ad5;\\u6ad3c\\u0300;acens\\u11ed\\u356c\\u3572\\u3579\\u357b\\u3326ppro\\xf8\\u32faurlye\\xf1\\u11fe\\xf1\\u11f3\\u0180aes\\u3582\\u3588\\u331bppro\\xf8\\u331aq\\xf1\\u3317g;\\u666a\\u0680123;Edehlmnps\\u35a9\\u35ac\\u35af\\u121c\\u35b2\\u35b4\\u35c0\\u35c9\\u35d5\\u35da\\u35df\\u35e8\\u35ed\\u803b\\xb9\\u40b9\\u803b\\xb2\\u40b2\\u803b\\xb3\\u40b3;\\u6ac6\\u0100os\\u35b9\\u35bct;\\u6abeub;\\u6ad8\\u0100;d\\u1222\\u35c5ot;\\u6ac4s\\u0100ou\\u35cf\\u35d2l;\\u67c9b;\\u6ad7arr;\\u697bult;\\u6ac2\\u0100Ee\\u35e4\\u35e6;\\u6acc;\\u628blus;\\u6ac0\\u0180eiu\\u35f4\\u3609\\u360ct\\u0180;en\\u121c\\u35fc\\u3602q\\u0100;q\\u1222\\u35b2eq\\u0100;q\\u35e7\\u35e4m;\\u6ac8\\u0100bp\\u3611\\u3613;\\u6ad4;\\u6ad6\\u0180Aan\\u361c\\u3620\\u362drr;\\u61d9r\\u0100hr\\u3626\\u3628\\xeb\\u222e\\u0100;o\\u0a2b\\u0a29war;\\u692alig\\u803b\\xdf\\u40df\\u0be1\\u3651\\u365d\\u3660\\u12ce\\u3673\\u3679\\0\\u367e\\u36c2\\0\\0\\0\\0\\0\\u36db\\u3703\\0\\u3709\\u376c\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365bget;\\u6316;\\u43c4r\\xeb\\u0e5f\\u0180aey\\u3666\\u366b\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uc000\\ud835\\udd31\\u0200eiko\\u3686\\u369d\\u36b5\\u36bc\\u01f2\\u368b\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369b\\u43b8ym;\\u43d1\\u0100cn\\u36a2\\u36b2k\\u0100as\\u36a8\\u36aeppro\\xf8\\u12c1im\\xbb\\u12acs\\xf0\\u129e\\u0100as\\u36ba\\u36ae\\xf0\\u12c1rn\\u803b\\xfe\\u40fe\\u01ec\\u031f\\u36c6\\u22e7es\\u8180\\xd7;bd\\u36cf\\u36d0\\u36d8\\u40d7\\u0100;a\\u190f\\u36d5r;\\u6a31;\\u6a30\\u0180eps\\u36e1\\u36e3\\u3700\\xe1\\u2a4d\\u0200;bcf\\u0486\\u36ec\\u36f0\\u36f4ot;\\u6336ir;\\u6af1\\u0100;o\\u36f9\\u36fc\\uc000\\ud835\\udd65rk;\\u6ada\\xe1\\u3362rime;\\u6034\\u0180aip\\u370f\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374d\\u3740\\u3751\\u3757\\u375c\\u375fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65b5own\\xbb\\u1dbbeft\\u0100;e\\u2800\\u373e\\xf1\\u092e;\\u625cight\\u0100;e\\u32aa\\u374b\\xf1\\u105aot;\\u65ecinus;\\u6a3alus;\\u6a39b;\\u69cdime;\\u6a3bezium;\\u63e2\\u0180cht\\u3772\\u377d\\u3781\\u0100ry\\u3777\\u377b;\\uc000\\ud835\\udcc9;\\u4446cy;\\u445brok;\\u4167\\u0100io\\u378b\\u378ex\\xf4\\u1777head\\u0100lr\\u3797\\u37a0eftarro\\xf7\\u084fightarrow\\xbb\\u0f5d\\u0900AHabcdfghlmoprstuw\\u37d0\\u37d3\\u37d7\\u37e4\\u37f0\\u37fc\\u380e\\u381c\\u3823\\u3834\\u3851\\u385d\\u386b\\u38a9\\u38cc\\u38d2\\u38ea\\u38f6r\\xf2\\u03edar;\\u6963\\u0100cr\\u37dc\\u37e2ute\\u803b\\xfa\\u40fa\\xf2\\u1150r\\u01e3\\u37ea\\0\\u37edy;\\u445eve;\\u416d\\u0100iy\\u37f5\\u37farc\\u803b\\xfb\\u40fb;\\u4443\\u0180abh\\u3803\\u3806\\u380br\\xf2\\u13adlac;\\u4171a\\xf2\\u13c3\\u0100ir\\u3813\\u3818sht;\\u697e;\\uc000\\ud835\\udd32rave\\u803b\\xf9\\u40f9\\u0161\\u3827\\u3831r\\u0100lr\\u382c\\u382e\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384d\\u026f\\u383f\\0\\0\\u384arn\\u0100;e\\u3845\\u3846\\u631cr\\xbb\\u3846op;\\u630fri;\\u65f8\\u0100al\\u3856\\u385acr;\\u416b\\u80bb\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uc000\\ud835\\udd66\\u0300adhlsu\\u114b\\u3878\\u387d\\u1372\\u3891\\u38a0own\\xe1\\u13b3arpoon\\u0100lr\\u3888\\u388cef\\xf4\\u382digh\\xf4\\u382fi\\u0180;hl\\u3899\\u389a\\u389c\\u43c5\\xbb\\u13faon\\xbb\\u389aparrows;\\u61c8\\u0180cit\\u38b0\\u38c4\\u38c8\\u026f\\u38b6\\0\\0\\u38c1rn\\u0100;e\\u38bc\\u38bd\\u631dr\\xbb\\u38bdop;\\u630eng;\\u416fri;\\u65f9cr;\\uc000\\ud835\\udcca\\u0180dir\\u38d9\\u38dd\\u38e2ot;\\u62f0lde;\\u4169i\\u0100;f\\u3730\\u38e8\\xbb\\u1813\\u0100am\\u38ef\\u38f2r\\xf2\\u38a8l\\u803b\\xfc\\u40fcangle;\\u69a7\\u0780ABDacdeflnoprsz\\u391c\\u391f\\u3929\\u392d\\u39b5\\u39b8\\u39bd\\u39df\\u39e4\\u39e8\\u39f3\\u39f9\\u39fd\\u3a01\\u3a20r\\xf2\\u03f7ar\\u0100;v\\u3926\\u3927\\u6ae8;\\u6ae9as\\xe8\\u03e1\\u0100nr\\u3932\\u3937grt;\\u699c\\u0380eknprst\\u34e3\\u3946\\u394b\\u3952\\u395d\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1e96\\u0180hir\\u34eb\\u2ec8\\u3959op\\xf4\\u2fb5\\u0100;h\\u13b7\\u3962\\xef\\u318d\\u0100iu\\u3969\\u396dgm\\xe1\\u33b3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397d\\u3980\\uc000\\u228a\\ufe00;\\uc000\\u2acb\\ufe00setneq\\u0100;q\\u398f\\u3992\\uc000\\u228b\\ufe00;\\uc000\\u2acc\\ufe00\\u0100hr\\u399b\\u399fet\\xe1\\u369ciangle\\u0100lr\\u39aa\\u39afeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39c4\\u39d2\\u39d7\\u0180;be\\u2dea\\u39cb\\u39cfar;\\u62bbq;\\u625alip;\\u62ee\\u0100bt\\u39dc\\u1468a\\xf2\\u1469r;\\uc000\\ud835\\udd33tr\\xe9\\u39aesu\\u0100bp\\u39ef\\u39f1\\xbb\\u0d1c\\xbb\\u0d59pf;\\uc000\\ud835\\udd67ro\\xf0\\u0efbtr\\xe9\\u39b4\\u0100cu\\u3a06\\u3a0br;\\uc000\\ud835\\udccb\\u0100bp\\u3a10\\u3a18n\\u0100Ee\\u3980\\u3a16\\xbb\\u397en\\u0100Ee\\u3992\\u3a1e\\xbb\\u3990igzag;\\u699a\\u0380cefoprs\\u3a36\\u3a3b\\u3a56\\u3a5b\\u3a54\\u3a61\\u3a6airc;\\u4175\\u0100di\\u3a40\\u3a51\\u0100bg\\u3a45\\u3a49ar;\\u6a5fe\\u0100;q\\u15fa\\u3a4f;\\u6259erp;\\u6118r;\\uc000\\ud835\\udd34pf;\\uc000\\ud835\\udd68\\u0100;e\\u1479\\u3a66at\\xe8\\u1479cr;\\uc000\\ud835\\udccc\\u0ae3\\u178e\\u3a87\\0\\u3a8b\\0\\u3a90\\u3a9b\\0\\0\\u3a9d\\u3aa8\\u3aab\\u3aaf\\0\\0\\u3ac3\\u3ace\\0\\u3ad8\\u17dc\\u17dftr\\xe9\\u17d1r;\\uc000\\ud835\\udd35\\u0100Aa\\u3a94\\u3a97r\\xf2\\u03c3r\\xf2\\u09f6;\\u43be\\u0100Aa\\u3aa1\\u3aa4r\\xf2\\u03b8r\\xf2\\u09eba\\xf0\\u2713is;\\u62fb\\u0180dpt\\u17a4\\u3ab5\\u3abe\\u0100fl\\u3aba\\u17a9;\\uc000\\ud835\\udd69im\\xe5\\u17b2\\u0100Aa\\u3ac7\\u3acar\\xf2\\u03cer\\xf2\\u0a01\\u0100cq\\u3ad2\\u17b8r;\\uc000\\ud835\\udccd\\u0100pt\\u17d6\\u3adcr\\xe9\\u17d4\\u0400acefiosu\\u3af0\\u3afd\\u3b08\\u3b0c\\u3b11\\u3b15\\u3b1b\\u3b21c\\u0100uy\\u3af6\\u3afbte\\u803b\\xfd\\u40fd;\\u444f\\u0100iy\\u3b02\\u3b06rc;\\u4177;\\u444bn\\u803b\\xa5\\u40a5r;\\uc000\\ud835\\udd36cy;\\u4457pf;\\uc000\\ud835\\udd6acr;\\uc000\\ud835\\udcce\\u0100cm\\u3b26\\u3b29y;\\u444el\\u803b\\xff\\u40ff\\u0500acdefhiosw\\u3b42\\u3b48\\u3b54\\u3b58\\u3b64\\u3b69\\u3b6d\\u3b74\\u3b7a\\u3b80cute;\\u417a\\u0100ay\\u3b4d\\u3b52ron;\\u417e;\\u4437ot;\\u417c\\u0100et\\u3b5d\\u3b61tr\\xe6\\u155fa;\\u43b6r;\\uc000\\ud835\\udd37cy;\\u4436grarr;\\u61ddpf;\\uc000\\ud835\\udd6bcr;\\uc000\\ud835\\udccf\\u0100jn\\u3b85\\u3b87;\\u600dj;\\u600c\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-html.js.map","// Generated using scripts/write-decode-map.ts\nexport default new Uint16Array(\n// prettier-ignore\n\"\\u0200aglq\\t\\x15\\x18\\x1b\\u026d\\x0f\\0\\0\\x12p;\\u4026os;\\u4027t;\\u403et;\\u403cuot;\\u4022\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-xml.js.map","// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nconst decodeMap = new Map([\n [0, 65533],\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 * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexport const fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n let output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n output += String.fromCharCode(codePoint);\n return output;\n};\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) {\n var _a;\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return 0xfffd;\n }\n return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\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 default function decodeCodePoint(codePoint) {\n return fromCodePoint(replaceCodePoint(codePoint));\n}\n//# sourceMappingURL=decode_codepoint.js.map","import htmlDecodeTree from \"./generated/decode-data-html.js\";\nimport xmlDecodeTree from \"./generated/decode-data-xml.js\";\nimport decodeCodePoint, { replaceCodePoint, fromCodePoint, } from \"./decode_codepoint.js\";\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree, xmlDecodeTree, decodeCodePoint };\nexport { replaceCodePoint, fromCodePoint } from \"./decode_codepoint.js\";\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 0b100000;\nexport var BinTrieFlags;\n(function (BinTrieFlags) {\n BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags || (BinTrieFlags = {}));\nfunction isNumber(code) {\n return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n isNumber(code));\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) {\n return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nexport var DecodingMode;\n(function (DecodingMode) {\n /** Entities in text nodes that can end with any character. */\n DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n /** Only allow entities terminated with a semicolon. */\n DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n /** Entities in attributes have limitations on ending characters. */\n DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n constructor(\n /** The tree used to decode entities. */\n decodeTree, \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 emitCodePoint, \n /** An object that is used to produce errors. */\n errors) {\n this.decodeTree = decodeTree;\n this.emitCodePoint = emitCodePoint;\n this.errors = errors;\n /** The current state of the decoder. */\n this.state = EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */\n this.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 this.result = 0;\n /** The current index in the decode tree. */\n this.treeIndex = 0;\n /** The number of characters that were consumed in excess. */\n this.excess = 1;\n /** The mode in which the decoder is operating. */\n this.decodeMode = DecodingMode.Strict;\n }\n /** Resets the instance to make it reusable. */\n startEntity(decodeMode) {\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 * 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 string 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(str, offset) {\n switch (this.state) {\n case EntityDecoderState.EntityStart: {\n if (str.charCodeAt(offset) === CharCodes.NUM) {\n this.state = EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(str, offset + 1);\n }\n this.state = EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(str, offset);\n }\n case EntityDecoderState.NumericStart: {\n return this.stateNumericStart(str, offset);\n }\n case EntityDecoderState.NumericDecimal: {\n return this.stateNumericDecimal(str, offset);\n }\n case EntityDecoderState.NumericHex: {\n return this.stateNumericHex(str, offset);\n }\n case EntityDecoderState.NamedEntity: {\n return this.stateNamedEntity(str, offset);\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 str 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 stateNumericStart(str, offset) {\n if (offset >= str.length) {\n return -1;\n }\n if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n this.state = EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(str, offset + 1);\n }\n this.state = EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(str, offset);\n }\n addToNumericResult(str, start, end, base) {\n if (start !== end) {\n const digitCount = end - start;\n this.result =\n this.result * Math.pow(base, digitCount) +\n parseInt(str.substr(start, digitCount), base);\n this.consumed += digitCount;\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 str 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 stateNumericHex(str, offset) {\n const startIdx = offset;\n while (offset < str.length) {\n const char = str.charCodeAt(offset);\n if (isNumber(char) || isHexadecimalCharacter(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 16);\n return this.emitNumericEntity(char, 3);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 16);\n return -1;\n }\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML spec.\n *\n * @param str 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 stateNumericDecimal(str, offset) {\n const startIdx = offset;\n while (offset < str.length) {\n const char = str.charCodeAt(offset);\n if (isNumber(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 10);\n return this.emitNumericEntity(char, 2);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 10);\n return -1;\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 emitNumericEntity(lastCp, expectedLength) {\n var _a;\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n // Figure out if this is a legit end of the entity\n if (lastCp === CharCodes.SEMI) {\n this.consumed += 1;\n }\n else if (this.decodeMode === DecodingMode.Strict) {\n return 0;\n }\n this.emitCodePoint(replaceCodePoint(this.result), this.consumed);\n if (this.errors) {\n if (lastCp !== CharCodes.SEMI) {\n this.errors.missingSemicolonAfterCharacterReference();\n }\n this.errors.validateNumericCharacterReference(this.result);\n }\n return this.consumed;\n }\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n *\n * @param str 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 stateNamedEntity(str, offset) {\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 for (; offset < str.length; offset++, this.excess++) {\n const char = str.charCodeAt(offset);\n this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\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 current = decodeTree[this.treeIndex];\n valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\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(this.treeIndex, valueLength, this.consumed + this.excess);\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 return -1;\n }\n /**\n * Emit a named entity that was not terminated with a semicolon.\n *\n * @returns The number of characters consumed.\n */\n emitNotTerminatedNamedEntity() {\n var _a;\n const { result, decodeTree } = this;\n const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n this.emitNamedEntityData(result, valueLength, this.consumed);\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n return this.consumed;\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 emitNamedEntityData(result, valueLength, consumed) {\n const { decodeTree } = this;\n this.emitCodePoint(valueLength === 1\n ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n : decodeTree[result + 1], consumed);\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 return consumed;\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() {\n var _a;\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 (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\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 * 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) {\n let ret = \"\";\n const decoder = new EntityDecoder(decodeTree, (str) => (ret += fromCodePoint(str)));\n return function decodeWithTrie(str, decodeMode) {\n let lastIndex = 0;\n let offset = 0;\n while ((offset = str.indexOf(\"&\", offset)) >= 0) {\n ret += str.slice(lastIndex, offset);\n decoder.startEntity(decodeMode);\n const len = decoder.write(str, \n // Skip the \"&\"\n offset + 1);\n if (len < 0) {\n lastIndex = offset + decoder.end();\n break;\n }\n lastIndex = offset + len;\n // If `len` is 0, skip the current `&` and continue.\n offset = len === 0 ? lastIndex + 1 : lastIndex;\n }\n const result = ret + str.slice(lastIndex);\n // Make sure we don't keep a reference to the final string.\n ret = \"\";\n return result;\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(decodeTree, current, nodeIdx, char) {\n const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) {\n return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;\n }\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n const value = char - jumpOffset;\n return value < 0 || value >= branchCount\n ? -1\n : decodeTree[nodeIdx + value] - 1;\n }\n // Case 3: Multiple branches encoded in dictionary\n // Binary search for the character.\n let lo = nodeIdx;\n let hi = lo + branchCount - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n const midVal = decodeTree[mid];\n if (midVal < char) {\n lo = mid + 1;\n }\n else if (midVal > char) {\n hi = mid - 1;\n }\n else {\n return decodeTree[mid + branchCount];\n }\n }\n return -1;\n}\nconst htmlDecoder = getDecoder(htmlDecodeTree);\nconst xmlDecoder = getDecoder(xmlDecodeTree);\n/**\n * Decodes an HTML string.\n *\n * @param str The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nexport function decodeHTML(str, mode = DecodingMode.Legacy) {\n return htmlDecoder(str, mode);\n}\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(str) {\n return htmlDecoder(str, DecodingMode.Attribute);\n}\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLStrict(str) {\n return htmlDecoder(str, DecodingMode.Strict);\n}\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeXML(str) {\n return xmlDecoder(str, DecodingMode.Strict);\n}\n//# sourceMappingURL=decode.js.map","import { EntityDecoder, DecodingMode, htmlDecodeTree, xmlDecodeTree, } from \"entities/lib/decode.js\";\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"Tab\"] = 9] = \"Tab\";\n CharCodes[CharCodes[\"NewLine\"] = 10] = \"NewLine\";\n CharCodes[CharCodes[\"FormFeed\"] = 12] = \"FormFeed\";\n CharCodes[CharCodes[\"CarriageReturn\"] = 13] = \"CarriageReturn\";\n CharCodes[CharCodes[\"Space\"] = 32] = \"Space\";\n CharCodes[CharCodes[\"ExclamationMark\"] = 33] = \"ExclamationMark\";\n CharCodes[CharCodes[\"Number\"] = 35] = \"Number\";\n CharCodes[CharCodes[\"Amp\"] = 38] = \"Amp\";\n CharCodes[CharCodes[\"SingleQuote\"] = 39] = \"SingleQuote\";\n CharCodes[CharCodes[\"DoubleQuote\"] = 34] = \"DoubleQuote\";\n CharCodes[CharCodes[\"Dash\"] = 45] = \"Dash\";\n CharCodes[CharCodes[\"Slash\"] = 47] = \"Slash\";\n CharCodes[CharCodes[\"Zero\"] = 48] = \"Zero\";\n CharCodes[CharCodes[\"Nine\"] = 57] = \"Nine\";\n CharCodes[CharCodes[\"Semi\"] = 59] = \"Semi\";\n CharCodes[CharCodes[\"Lt\"] = 60] = \"Lt\";\n CharCodes[CharCodes[\"Eq\"] = 61] = \"Eq\";\n CharCodes[CharCodes[\"Gt\"] = 62] = \"Gt\";\n CharCodes[CharCodes[\"Questionmark\"] = 63] = \"Questionmark\";\n CharCodes[CharCodes[\"UpperA\"] = 65] = \"UpperA\";\n CharCodes[CharCodes[\"LowerA\"] = 97] = \"LowerA\";\n CharCodes[CharCodes[\"UpperF\"] = 70] = \"UpperF\";\n CharCodes[CharCodes[\"LowerF\"] = 102] = \"LowerF\";\n CharCodes[CharCodes[\"UpperZ\"] = 90] = \"UpperZ\";\n CharCodes[CharCodes[\"LowerZ\"] = 122] = \"LowerZ\";\n CharCodes[CharCodes[\"LowerX\"] = 120] = \"LowerX\";\n CharCodes[CharCodes[\"OpeningSquareBracket\"] = 91] = \"OpeningSquareBracket\";\n})(CharCodes || (CharCodes = {}));\n/** All the states the tokenizer can be in. */\nvar State;\n(function (State) {\n State[State[\"Text\"] = 1] = \"Text\";\n State[State[\"BeforeTagName\"] = 2] = \"BeforeTagName\";\n State[State[\"InTagName\"] = 3] = \"InTagName\";\n State[State[\"InSelfClosingTag\"] = 4] = \"InSelfClosingTag\";\n State[State[\"BeforeClosingTagName\"] = 5] = \"BeforeClosingTagName\";\n State[State[\"InClosingTagName\"] = 6] = \"InClosingTagName\";\n State[State[\"AfterClosingTagName\"] = 7] = \"AfterClosingTagName\";\n // Attributes\n State[State[\"BeforeAttributeName\"] = 8] = \"BeforeAttributeName\";\n State[State[\"InAttributeName\"] = 9] = \"InAttributeName\";\n State[State[\"AfterAttributeName\"] = 10] = \"AfterAttributeName\";\n State[State[\"BeforeAttributeValue\"] = 11] = \"BeforeAttributeValue\";\n State[State[\"InAttributeValueDq\"] = 12] = \"InAttributeValueDq\";\n State[State[\"InAttributeValueSq\"] = 13] = \"InAttributeValueSq\";\n State[State[\"InAttributeValueNq\"] = 14] = \"InAttributeValueNq\";\n // Declarations\n State[State[\"BeforeDeclaration\"] = 15] = \"BeforeDeclaration\";\n State[State[\"InDeclaration\"] = 16] = \"InDeclaration\";\n // Processing instructions\n State[State[\"InProcessingInstruction\"] = 17] = \"InProcessingInstruction\";\n // Comments & CDATA\n State[State[\"BeforeComment\"] = 18] = \"BeforeComment\";\n State[State[\"CDATASequence\"] = 19] = \"CDATASequence\";\n State[State[\"InSpecialComment\"] = 20] = \"InSpecialComment\";\n State[State[\"InCommentLike\"] = 21] = \"InCommentLike\";\n // Special tags\n State[State[\"BeforeSpecialS\"] = 22] = \"BeforeSpecialS\";\n State[State[\"BeforeSpecialT\"] = 23] = \"BeforeSpecialT\";\n State[State[\"SpecialStartSequence\"] = 24] = \"SpecialStartSequence\";\n State[State[\"InSpecialTag\"] = 25] = \"InSpecialTag\";\n State[State[\"InEntity\"] = 26] = \"InEntity\";\n})(State || (State = {}));\nfunction isWhitespace(c) {\n return (c === CharCodes.Space ||\n c === CharCodes.NewLine ||\n c === CharCodes.Tab ||\n c === CharCodes.FormFeed ||\n c === CharCodes.CarriageReturn);\n}\nfunction isEndOfTagSection(c) {\n return c === CharCodes.Slash || c === CharCodes.Gt || isWhitespace(c);\n}\nfunction isASCIIAlpha(c) {\n return ((c >= CharCodes.LowerA && c <= CharCodes.LowerZ) ||\n (c >= CharCodes.UpperA && c <= CharCodes.UpperZ));\n}\nexport var QuoteType;\n(function (QuoteType) {\n QuoteType[QuoteType[\"NoValue\"] = 0] = \"NoValue\";\n QuoteType[QuoteType[\"Unquoted\"] = 1] = \"Unquoted\";\n QuoteType[QuoteType[\"Single\"] = 2] = \"Single\";\n QuoteType[QuoteType[\"Double\"] = 3] = \"Double\";\n})(QuoteType || (QuoteType = {}));\n/**\n * Sequences used to match longer strings.\n *\n * We don't have `Script`, `Style`, or `Title` here. Instead, we re-use the *End\n * sequences with an increased offset.\n */\nconst Sequences = {\n Cdata: new Uint8Array([0x43, 0x44, 0x41, 0x54, 0x41, 0x5b]), // CDATA[\n CdataEnd: new Uint8Array([0x5d, 0x5d, 0x3e]), // ]]>\n CommentEnd: new Uint8Array([0x2d, 0x2d, 0x3e]), // `-->`\n ScriptEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74]), // ` this.emitCodePoint(cp, consumed));\n }\n reset() {\n this.state = State.Text;\n this.buffer = \"\";\n this.sectionStart = 0;\n this.index = 0;\n this.baseState = State.Text;\n this.currentSequence = undefined;\n this.running = true;\n this.offset = 0;\n }\n write(chunk) {\n this.offset += this.buffer.length;\n this.buffer = chunk;\n this.parse();\n }\n end() {\n if (this.running)\n this.finish();\n }\n pause() {\n this.running = false;\n }\n resume() {\n this.running = true;\n if (this.index < this.buffer.length + this.offset) {\n this.parse();\n }\n }\n stateText(c) {\n if (c === CharCodes.Lt ||\n (!this.decodeEntities && this.fastForwardTo(CharCodes.Lt))) {\n if (this.index > this.sectionStart) {\n this.cbs.ontext(this.sectionStart, this.index);\n }\n this.state = State.BeforeTagName;\n this.sectionStart = this.index;\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n }\n stateSpecialStartSequence(c) {\n const isEnd = this.sequenceIndex === this.currentSequence.length;\n const isMatch = isEnd\n ? // If we are at the end of the sequence, make sure the tag name has ended\n isEndOfTagSection(c)\n : // Otherwise, do a case-insensitive comparison\n (c | 0x20) === this.currentSequence[this.sequenceIndex];\n if (!isMatch) {\n this.isSpecial = false;\n }\n else if (!isEnd) {\n this.sequenceIndex++;\n return;\n }\n this.sequenceIndex = 0;\n this.state = State.InTagName;\n this.stateInTagName(c);\n }\n /** Look for an end tag. For tags, also decode entities. */\n stateInSpecialTag(c) {\n if (this.sequenceIndex === this.currentSequence.length) {\n if (c === CharCodes.Gt || isWhitespace(c)) {\n const endOfText = this.index - this.currentSequence.length;\n if (this.sectionStart < endOfText) {\n // Spoof the index so that reported locations match up.\n const actualIndex = this.index;\n this.index = endOfText;\n this.cbs.ontext(this.sectionStart, endOfText);\n this.index = actualIndex;\n }\n this.isSpecial = false;\n this.sectionStart = endOfText + 2; // Skip over the `</`\n this.stateInClosingTagName(c);\n return; // We are done; skip the rest of the function.\n }\n this.sequenceIndex = 0;\n }\n if ((c | 0x20) === this.currentSequence[this.sequenceIndex]) {\n this.sequenceIndex += 1;\n }\n else if (this.sequenceIndex === 0) {\n if (this.currentSequence === Sequences.TitleEnd) {\n // We have to parse entities in <title> tags.\n if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n }\n else if (this.fastForwardTo(CharCodes.Lt)) {\n // Outside of <title> tags, we can fast-forward.\n this.sequenceIndex = 1;\n }\n }\n else {\n // If we see a `<`, set the sequence index to 1; useful for eg. `<</script>`.\n this.sequenceIndex = Number(c === CharCodes.Lt);\n }\n }\n stateCDATASequence(c) {\n if (c === Sequences.Cdata[this.sequenceIndex]) {\n if (++this.sequenceIndex === Sequences.Cdata.length) {\n this.state = State.InCommentLike;\n this.currentSequence = Sequences.CdataEnd;\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n }\n }\n else {\n this.sequenceIndex = 0;\n this.state = State.InDeclaration;\n this.stateInDeclaration(c); // Reconsume the character\n }\n }\n /**\n * When we wait for one specific character, we can speed things up\n * by skipping through the buffer until we find it.\n *\n * @returns Whether the character was found.\n */\n fastForwardTo(c) {\n while (++this.index < this.buffer.length + this.offset) {\n if (this.buffer.charCodeAt(this.index - this.offset) === c) {\n return true;\n }\n }\n /*\n * We increment the index at the end of the `parse` loop,\n * so set it to `buffer.length - 1` here.\n *\n * TODO: Refactor `parse` to increment index before calling states.\n */\n this.index = this.buffer.length + this.offset - 1;\n return false;\n }\n /**\n * Comments and CDATA end with `-->` and `]]>`.\n *\n * Their common qualities are:\n * - Their end sequences have a distinct character they start with.\n * - That character is then repeated, so we have to check multiple repeats.\n * - All characters but the start character of the sequence can be skipped.\n */\n stateInCommentLike(c) {\n if (c === this.currentSequence[this.sequenceIndex]) {\n if (++this.sequenceIndex === this.currentSequence.length) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(this.sectionStart, this.index, 2);\n }\n else {\n this.cbs.oncomment(this.sectionStart, this.index, 2);\n }\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n this.state = State.Text;\n }\n }\n else if (this.sequenceIndex === 0) {\n // Fast-forward to the first character of the sequence\n if (this.fastForwardTo(this.currentSequence[0])) {\n this.sequenceIndex = 1;\n }\n }\n else if (c !== this.currentSequence[this.sequenceIndex - 1]) {\n // Allow long sequences, eg. --->, ]]]>\n this.sequenceIndex = 0;\n }\n }\n /**\n * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.\n *\n * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).\n * We allow anything that wouldn't end the tag.\n */\n isTagStartChar(c) {\n return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c);\n }\n startSpecial(sequence, offset) {\n this.isSpecial = true;\n this.currentSequence = sequence;\n this.sequenceIndex = offset;\n this.state = State.SpecialStartSequence;\n }\n stateBeforeTagName(c) {\n if (c === CharCodes.ExclamationMark) {\n this.state = State.BeforeDeclaration;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.Questionmark) {\n this.state = State.InProcessingInstruction;\n this.sectionStart = this.index + 1;\n }\n else if (this.isTagStartChar(c)) {\n const lower = c | 0x20;\n this.sectionStart = this.index;\n if (this.xmlMode) {\n this.state = State.InTagName;\n }\n else if (lower === Sequences.ScriptEnd[2]) {\n this.state = State.BeforeSpecialS;\n }\n else if (lower === Sequences.TitleEnd[2]) {\n this.state = State.BeforeSpecialT;\n }\n else {\n this.state = State.InTagName;\n }\n }\n else if (c === CharCodes.Slash) {\n this.state = State.BeforeClosingTagName;\n }\n else {\n this.state = State.Text;\n this.stateText(c);\n }\n }\n stateInTagName(c) {\n if (isEndOfTagSection(c)) {\n this.cbs.onopentagname(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n stateBeforeClosingTagName(c) {\n if (isWhitespace(c)) {\n // Ignore\n }\n else if (c === CharCodes.Gt) {\n this.state = State.Text;\n }\n else {\n this.state = this.isTagStartChar(c)\n ? State.InClosingTagName\n : State.InSpecialComment;\n this.sectionStart = this.index;\n }\n }\n stateInClosingTagName(c) {\n if (c === CharCodes.Gt || isWhitespace(c)) {\n this.cbs.onclosetag(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.AfterClosingTagName;\n this.stateAfterClosingTagName(c);\n }\n }\n stateAfterClosingTagName(c) {\n // Skip everything until \">\"\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeAttributeName(c) {\n if (c === CharCodes.Gt) {\n this.cbs.onopentagend(this.index);\n if (this.isSpecial) {\n this.state = State.InSpecialTag;\n this.sequenceIndex = 0;\n }\n else {\n this.state = State.Text;\n }\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.Slash) {\n this.state = State.InSelfClosingTag;\n }\n else if (!isWhitespace(c)) {\n this.state = State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n stateInSelfClosingTag(c) {\n if (c === CharCodes.Gt) {\n this.cbs.onselfclosingtag(this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n this.isSpecial = false; // Reset special state, in case of self-closing special tags\n }\n else if (!isWhitespace(c)) {\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n stateInAttributeName(c) {\n if (c === CharCodes.Eq || isEndOfTagSection(c)) {\n this.cbs.onattribname(this.sectionStart, this.index);\n this.sectionStart = this.index;\n this.state = State.AfterAttributeName;\n this.stateAfterAttributeName(c);\n }\n }\n stateAfterAttributeName(c) {\n if (c === CharCodes.Eq) {\n this.state = State.BeforeAttributeValue;\n }\n else if (c === CharCodes.Slash || c === CharCodes.Gt) {\n this.cbs.onattribend(QuoteType.NoValue, this.sectionStart);\n this.sectionStart = -1;\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n else if (!isWhitespace(c)) {\n this.cbs.onattribend(QuoteType.NoValue, this.sectionStart);\n this.state = State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n stateBeforeAttributeValue(c) {\n if (c === CharCodes.DoubleQuote) {\n this.state = State.InAttributeValueDq;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.SingleQuote) {\n this.state = State.InAttributeValueSq;\n this.sectionStart = this.index + 1;\n }\n else if (!isWhitespace(c)) {\n this.sectionStart = this.index;\n this.state = State.InAttributeValueNq;\n this.stateInAttributeValueNoQuotes(c); // Reconsume token\n }\n }\n handleInAttributeValue(c, quote) {\n if (c === quote ||\n (!this.decodeEntities && this.fastForwardTo(quote))) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(quote === CharCodes.DoubleQuote\n ? QuoteType.Double\n : QuoteType.Single, this.index + 1);\n this.state = State.BeforeAttributeName;\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n }\n stateInAttributeValueDoubleQuotes(c) {\n this.handleInAttributeValue(c, CharCodes.DoubleQuote);\n }\n stateInAttributeValueSingleQuotes(c) {\n this.handleInAttributeValue(c, CharCodes.SingleQuote);\n }\n stateInAttributeValueNoQuotes(c) {\n if (isWhitespace(c) || c === CharCodes.Gt) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(QuoteType.Unquoted, this.index);\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n }\n stateBeforeDeclaration(c) {\n if (c === CharCodes.OpeningSquareBracket) {\n this.state = State.CDATASequence;\n this.sequenceIndex = 0;\n }\n else {\n this.state =\n c === CharCodes.Dash\n ? State.BeforeComment\n : State.InDeclaration;\n }\n }\n stateInDeclaration(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.ondeclaration(this.sectionStart, this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateInProcessingInstruction(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.onprocessinginstruction(this.sectionStart, this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeComment(c) {\n if (c === CharCodes.Dash) {\n this.state = State.InCommentLike;\n this.currentSequence = Sequences.CommentEnd;\n // Allow short comments (eg. <!-->)\n this.sequenceIndex = 2;\n this.sectionStart = this.index + 1;\n }\n else {\n this.state = State.InDeclaration;\n }\n }\n stateInSpecialComment(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.oncomment(this.sectionStart, this.index, 0);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeSpecialS(c) {\n const lower = c | 0x20;\n if (lower === Sequences.ScriptEnd[3]) {\n this.startSpecial(Sequences.ScriptEnd, 4);\n }\n else if (lower === Sequences.StyleEnd[3]) {\n this.startSpecial(Sequences.StyleEnd, 4);\n }\n else {\n this.state = State.InTagName;\n this.stateInTagName(c); // Consume the token again\n }\n }\n stateBeforeSpecialT(c) {\n const lower = c | 0x20;\n if (lower === Sequences.TitleEnd[3]) {\n this.startSpecial(Sequences.TitleEnd, 4);\n }\n else if (lower === Sequences.TextareaEnd[3]) {\n this.startSpecial(Sequences.TextareaEnd, 4);\n }\n else {\n this.state = State.InTagName;\n this.stateInTagName(c); // Consume the token again\n }\n }\n startEntity() {\n this.baseState = this.state;\n this.state = State.InEntity;\n this.entityStart = this.index;\n this.entityDecoder.startEntity(this.xmlMode\n ? DecodingMode.Strict\n : this.baseState === State.Text ||\n this.baseState === State.InSpecialTag\n ? DecodingMode.Legacy\n : DecodingMode.Attribute);\n }\n stateInEntity() {\n const length = this.entityDecoder.write(this.buffer, this.index - this.offset);\n // If `length` is positive, we are done with the entity.\n if (length >= 0) {\n this.state = this.baseState;\n if (length === 0) {\n this.index = this.entityStart;\n }\n }\n else {\n // Mark buffer as consumed.\n this.index = this.offset + this.buffer.length - 1;\n }\n }\n /**\n * Remove data that has already been consumed from the buffer.\n */\n cleanup() {\n // If we are inside of text or attributes, emit what we already have.\n if (this.running && this.sectionStart !== this.index) {\n if (this.state === State.Text ||\n (this.state === State.InSpecialTag && this.sequenceIndex === 0)) {\n this.cbs.ontext(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n else if (this.state === State.InAttributeValueDq ||\n this.state === State.InAttributeValueSq ||\n this.state === State.InAttributeValueNq) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n }\n }\n shouldContinue() {\n return this.index < this.buffer.length + this.offset && this.running;\n }\n /**\n * Iterates through the buffer, calling the function corresponding to the current state.\n *\n * States that are more likely to be hit are higher up, as a performance improvement.\n */\n parse() {\n while (this.shouldContinue()) {\n const c = this.buffer.charCodeAt(this.index - this.offset);\n switch (this.state) {\n case State.Text: {\n this.stateText(c);\n break;\n }\n case State.SpecialStartSequence: {\n this.stateSpecialStartSequence(c);\n break;\n }\n case State.InSpecialTag: {\n this.stateInSpecialTag(c);\n break;\n }\n case State.CDATASequence: {\n this.stateCDATASequence(c);\n break;\n }\n case State.InAttributeValueDq: {\n this.stateInAttributeValueDoubleQuotes(c);\n break;\n }\n case State.InAttributeName: {\n this.stateInAttributeName(c);\n break;\n }\n case State.InCommentLike: {\n this.stateInCommentLike(c);\n break;\n }\n case State.InSpecialComment: {\n this.stateInSpecialComment(c);\n break;\n }\n case State.BeforeAttributeName: {\n this.stateBeforeAttributeName(c);\n break;\n }\n case State.InTagName: {\n this.stateInTagName(c);\n break;\n }\n case State.InClosingTagName: {\n this.stateInClosingTagName(c);\n break;\n }\n case State.BeforeTagName: {\n this.stateBeforeTagName(c);\n break;\n }\n case State.AfterAttributeName: {\n this.stateAfterAttributeName(c);\n break;\n }\n case State.InAttributeValueSq: {\n this.stateInAttributeValueSingleQuotes(c);\n break;\n }\n case State.BeforeAttributeValue: {\n this.stateBeforeAttributeValue(c);\n break;\n }\n case State.BeforeClosingTagName: {\n this.stateBeforeClosingTagName(c);\n break;\n }\n case State.AfterClosingTagName: {\n this.stateAfterClosingTagName(c);\n break;\n }\n case State.BeforeSpecialS: {\n this.stateBeforeSpecialS(c);\n break;\n }\n case State.BeforeSpecialT: {\n this.stateBeforeSpecialT(c);\n break;\n }\n case State.InAttributeValueNq: {\n this.stateInAttributeValueNoQuotes(c);\n break;\n }\n case State.InSelfClosingTag: {\n this.stateInSelfClosingTag(c);\n break;\n }\n case State.InDeclaration: {\n this.stateInDeclaration(c);\n break;\n }\n case State.BeforeDeclaration: {\n this.stateBeforeDeclaration(c);\n break;\n }\n case State.BeforeComment: {\n this.stateBeforeComment(c);\n break;\n }\n case State.InProcessingInstruction: {\n this.stateInProcessingInstruction(c);\n break;\n }\n case State.InEntity: {\n this.stateInEntity();\n break;\n }\n }\n this.index++;\n }\n this.cleanup();\n }\n finish() {\n if (this.state === State.InEntity) {\n this.entityDecoder.end();\n this.state = this.baseState;\n }\n this.handleTrailingData();\n this.cbs.onend();\n }\n /** Handle any trailing data. */\n handleTrailingData() {\n const endIndex = this.buffer.length + this.offset;\n // If there is no remaining data, we are done.\n if (this.sectionStart >= endIndex) {\n return;\n }\n if (this.state === State.InCommentLike) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(this.sectionStart, endIndex, 0);\n }\n else {\n this.cbs.oncomment(this.sectionStart, endIndex, 0);\n }\n }\n else if (this.state === State.InTagName ||\n this.state === State.BeforeAttributeName ||\n this.state === State.BeforeAttributeValue ||\n this.state === State.AfterAttributeName ||\n this.state === State.InAttributeName ||\n this.state === State.InAttributeValueSq ||\n this.state === State.InAttributeValueDq ||\n this.state === State.InAttributeValueNq ||\n this.state === State.InClosingTagName) {\n /*\n * If we are currently in an opening or closing tag, us not calling the\n * respective callback signals that the tag should be ignored.\n */\n }\n else {\n this.cbs.ontext(this.sectionStart, endIndex);\n }\n }\n emitCodePoint(cp, consumed) {\n if (this.baseState !== State.Text &&\n this.baseState !== State.InSpecialTag) {\n if (this.sectionStart < this.entityStart) {\n this.cbs.onattribdata(this.sectionStart, this.entityStart);\n }\n this.sectionStart = this.entityStart + consumed;\n this.index = this.sectionStart - 1;\n this.cbs.onattribentity(cp);\n }\n else {\n if (this.sectionStart < this.entityStart) {\n this.cbs.ontext(this.sectionStart, this.entityStart);\n }\n this.sectionStart = this.entityStart + consumed;\n this.index = this.sectionStart - 1;\n this.cbs.ontextentity(cp, this.sectionStart);\n }\n }\n}\n//# sourceMappingURL=Tokenizer.js.map","import Tokenizer, { QuoteType } from \"./Tokenizer.js\";\nimport { fromCodePoint } from \"entities/lib/decode.js\";\nconst formTags = new Set([\n \"input\",\n \"option\",\n \"optgroup\",\n \"select\",\n \"button\",\n \"datalist\",\n \"textarea\",\n]);\nconst pTag = new Set([\"p\"]);\nconst tableSectionTags = new Set([\"thead\", \"tbody\"]);\nconst ddtTags = new Set([\"dd\", \"dt\"]);\nconst rtpTags = new Set([\"rt\", \"rp\"]);\nconst openImpliesClose = new Map([\n [\"tr\", new Set([\"tr\", \"th\", \"td\"])],\n [\"th\", new Set([\"th\"])],\n [\"td\", new Set([\"thead\", \"th\", \"td\"])],\n [\"body\", new Set([\"head\", \"link\", \"script\"])],\n [\"li\", new Set([\"li\"])],\n [\"p\", pTag],\n [\"h1\", pTag],\n [\"h2\", pTag],\n [\"h3\", pTag],\n [\"h4\", pTag],\n [\"h5\", pTag],\n [\"h6\", pTag],\n [\"select\", formTags],\n [\"input\", formTags],\n [\"output\", formTags],\n [\"button\", formTags],\n [\"datalist\", formTags],\n [\"textarea\", formTags],\n [\"option\", new Set([\"option\"])],\n [\"optgroup\", new Set([\"optgroup\", \"option\"])],\n [\"dd\", ddtTags],\n [\"dt\", ddtTags],\n [\"address\", pTag],\n [\"article\", pTag],\n [\"aside\", pTag],\n [\"blockquote\", pTag],\n [\"details\", pTag],\n [\"div\", pTag],\n [\"dl\", pTag],\n [\"fieldset\", pTag],\n [\"figcaption\", pTag],\n [\"figure\", pTag],\n [\"footer\", pTag],\n [\"form\", pTag],\n [\"header\", pTag],\n [\"hr\", pTag],\n [\"main\", pTag],\n [\"nav\", pTag],\n [\"ol\", pTag],\n [\"pre\", pTag],\n [\"section\", pTag],\n [\"table\", pTag],\n [\"ul\", pTag],\n [\"rt\", rtpTags],\n [\"rp\", rtpTags],\n [\"tbody\", tableSectionTags],\n [\"tfoot\", tableSectionTags],\n]);\nconst voidElements = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\nconst foreignContextElements = new Set([\"math\", \"svg\"]);\nconst htmlIntegrationElements = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignobject\",\n \"desc\",\n \"title\",\n]);\nconst reNameEnd = /\\s|\\//;\nexport class Parser {\n constructor(cbs, options = {}) {\n var _a, _b, _c, _d, _e, _f;\n this.options = options;\n /** The start index of the last event. */\n this.startIndex = 0;\n /** The end index of the last event. */\n this.endIndex = 0;\n /**\n * Store the start index of the current open tag,\n * so we can update the start index for attributes.\n */\n this.openTagStart = 0;\n this.tagname = \"\";\n this.attribname = \"\";\n this.attribvalue = \"\";\n this.attribs = null;\n this.stack = [];\n this.buffers = [];\n this.bufferOffset = 0;\n /** The index of the last written buffer. Used when resuming after a `pause()`. */\n this.writeIndex = 0;\n /** Indicates whether the parser has finished running / `.end` has been called. */\n this.ended = false;\n this.cbs = cbs !== null && cbs !== void 0 ? cbs : {};\n this.htmlMode = !this.options.xmlMode;\n this.lowerCaseTagNames = (_a = options.lowerCaseTags) !== null && _a !== void 0 ? _a : this.htmlMode;\n this.lowerCaseAttributeNames =\n (_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : this.htmlMode;\n this.recognizeSelfClosing =\n (_c = options.recognizeSelfClosing) !== null && _c !== void 0 ? _c : !this.htmlMode;\n this.tokenizer = new ((_d = options.Tokenizer) !== null && _d !== void 0 ? _d : Tokenizer)(this.options, this);\n this.foreignContext = [!this.htmlMode];\n (_f = (_e = this.cbs).onparserinit) === null || _f === void 0 ? void 0 : _f.call(_e, this);\n }\n // Tokenizer event handlers\n /** @internal */\n ontext(start, endIndex) {\n var _a, _b;\n const data = this.getSlice(start, endIndex);\n this.endIndex = endIndex - 1;\n (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, data);\n this.startIndex = endIndex;\n }\n /** @internal */\n ontextentity(cp, endIndex) {\n var _a, _b;\n this.endIndex = endIndex - 1;\n (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, fromCodePoint(cp));\n this.startIndex = endIndex;\n }\n /**\n * Checks if the current tag is a void element. Override this if you want\n * to specify your own additional void elements.\n */\n isVoidElement(name) {\n return this.htmlMode && voidElements.has(name);\n }\n /** @internal */\n onopentagname(start, endIndex) {\n this.endIndex = endIndex;\n let name = this.getSlice(start, endIndex);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n this.emitOpenTag(name);\n }\n emitOpenTag(name) {\n var _a, _b, _c, _d;\n this.openTagStart = this.startIndex;\n this.tagname = name;\n const impliesClose = this.htmlMode && openImpliesClose.get(name);\n if (impliesClose) {\n while (this.stack.length > 0 && impliesClose.has(this.stack[0])) {\n const element = this.stack.shift();\n (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, element, true);\n }\n }\n if (!this.isVoidElement(name)) {\n this.stack.unshift(name);\n if (this.htmlMode) {\n if (foreignContextElements.has(name)) {\n this.foreignContext.unshift(true);\n }\n else if (htmlIntegrationElements.has(name)) {\n this.foreignContext.unshift(false);\n }\n }\n }\n (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, name);\n if (this.cbs.onopentag)\n this.attribs = {};\n }\n endOpenTag(isImplied) {\n var _a, _b;\n this.startIndex = this.openTagStart;\n if (this.attribs) {\n (_b = (_a = this.cbs).onopentag) === null || _b === void 0 ? void 0 : _b.call(_a, this.tagname, this.attribs, isImplied);\n this.attribs = null;\n }\n if (this.cbs.onclosetag && this.isVoidElement(this.tagname)) {\n this.cbs.onclosetag(this.tagname, true);\n }\n this.tagname = \"\";\n }\n /** @internal */\n onopentagend(endIndex) {\n this.endIndex = endIndex;\n this.endOpenTag(false);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onclosetag(start, endIndex) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n this.endIndex = endIndex;\n let name = this.getSlice(start, endIndex);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n if (this.htmlMode &&\n (foreignContextElements.has(name) ||\n htmlIntegrationElements.has(name))) {\n this.foreignContext.shift();\n }\n if (!this.isVoidElement(name)) {\n const pos = this.stack.indexOf(name);\n if (pos !== -1) {\n for (let index = 0; index <= pos; index++) {\n const element = this.stack.shift();\n // We know the stack has sufficient elements.\n (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, element, index !== pos);\n }\n }\n else if (this.htmlMode && name === \"p\") {\n // Implicit open before close\n this.emitOpenTag(\"p\");\n this.closeCurrentTag(true);\n }\n }\n else if (this.htmlMode && name === \"br\") {\n // We can't use `emitOpenTag` for implicit open, as `br` would be implicitly closed.\n (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, \"br\");\n (_f = (_e = this.cbs).onopentag) === null || _f === void 0 ? void 0 : _f.call(_e, \"br\", {}, true);\n (_h = (_g = this.cbs).onclosetag) === null || _h === void 0 ? void 0 : _h.call(_g, \"br\", false);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onselfclosingtag(endIndex) {\n this.endIndex = endIndex;\n if (this.recognizeSelfClosing || this.foreignContext[0]) {\n this.closeCurrentTag(false);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n else {\n // Ignore the fact that the tag is self-closing.\n this.onopentagend(endIndex);\n }\n }\n closeCurrentTag(isOpenImplied) {\n var _a, _b;\n const name = this.tagname;\n this.endOpenTag(isOpenImplied);\n // Self-closing tags will be on the top of the stack\n if (this.stack[0] === name) {\n // If the opening tag isn't implied, the closing tag has to be implied.\n (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, name, !isOpenImplied);\n this.stack.shift();\n }\n }\n /** @internal */\n onattribname(start, endIndex) {\n this.startIndex = start;\n const name = this.getSlice(start, endIndex);\n this.attribname = this.lowerCaseAttributeNames\n ? name.toLowerCase()\n : name;\n }\n /** @internal */\n onattribdata(start, endIndex) {\n this.attribvalue += this.getSlice(start, endIndex);\n }\n /** @internal */\n onattribentity(cp) {\n this.attribvalue += fromCodePoint(cp);\n }\n /** @internal */\n onattribend(quote, endIndex) {\n var _a, _b;\n this.endIndex = endIndex;\n (_b = (_a = this.cbs).onattribute) === null || _b === void 0 ? void 0 : _b.call(_a, this.attribname, this.attribvalue, quote === QuoteType.Double\n ? '\"'\n : quote === QuoteType.Single\n ? \"'\"\n : quote === QuoteType.NoValue\n ? undefined\n : null);\n if (this.attribs &&\n !Object.prototype.hasOwnProperty.call(this.attribs, this.attribname)) {\n this.attribs[this.attribname] = this.attribvalue;\n }\n this.attribvalue = \"\";\n }\n getInstructionName(value) {\n const index = value.search(reNameEnd);\n let name = index < 0 ? value : value.substr(0, index);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n return name;\n }\n /** @internal */\n ondeclaration(start, endIndex) {\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex);\n if (this.cbs.onprocessinginstruction) {\n const name = this.getInstructionName(value);\n this.cbs.onprocessinginstruction(`!${name}`, `!${value}`);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onprocessinginstruction(start, endIndex) {\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex);\n if (this.cbs.onprocessinginstruction) {\n const name = this.getInstructionName(value);\n this.cbs.onprocessinginstruction(`?${name}`, `?${value}`);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n oncomment(start, endIndex, offset) {\n var _a, _b, _c, _d;\n this.endIndex = endIndex;\n (_b = (_a = this.cbs).oncomment) === null || _b === void 0 ? void 0 : _b.call(_a, this.getSlice(start, endIndex - offset));\n (_d = (_c = this.cbs).oncommentend) === null || _d === void 0 ? void 0 : _d.call(_c);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n oncdata(start, endIndex, offset) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex - offset);\n if (!this.htmlMode || this.options.recognizeCDATA) {\n (_b = (_a = this.cbs).oncdatastart) === null || _b === void 0 ? void 0 : _b.call(_a);\n (_d = (_c = this.cbs).ontext) === null || _d === void 0 ? void 0 : _d.call(_c, value);\n (_f = (_e = this.cbs).oncdataend) === null || _f === void 0 ? void 0 : _f.call(_e);\n }\n else {\n (_h = (_g = this.cbs).oncomment) === null || _h === void 0 ? void 0 : _h.call(_g, `[CDATA[${value}]]`);\n (_k = (_j = this.cbs).oncommentend) === null || _k === void 0 ? void 0 : _k.call(_j);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onend() {\n var _a, _b;\n if (this.cbs.onclosetag) {\n // Set the end index for all remaining tags\n this.endIndex = this.startIndex;\n for (let index = 0; index < this.stack.length; index++) {\n this.cbs.onclosetag(this.stack[index], true);\n }\n }\n (_b = (_a = this.cbs).onend) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n /**\n * Resets the parser to a blank state, ready to parse a new HTML document\n */\n reset() {\n var _a, _b, _c, _d;\n (_b = (_a = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.tokenizer.reset();\n this.tagname = \"\";\n this.attribname = \"\";\n this.attribs = null;\n this.stack.length = 0;\n this.startIndex = 0;\n this.endIndex = 0;\n (_d = (_c = this.cbs).onparserinit) === null || _d === void 0 ? void 0 : _d.call(_c, this);\n this.buffers.length = 0;\n this.foreignContext.length = 0;\n this.foreignContext.unshift(!this.htmlMode);\n this.bufferOffset = 0;\n this.writeIndex = 0;\n this.ended = false;\n }\n /**\n * Resets the parser, then parses a complete document and\n * pushes it to the handler.\n *\n * @param data Document to parse.\n */\n parseComplete(data) {\n this.reset();\n this.end(data);\n }\n getSlice(start, end) {\n while (start - this.bufferOffset >= this.buffers[0].length) {\n this.shiftBuffer();\n }\n let slice = this.buffers[0].slice(start - this.bufferOffset, end - this.bufferOffset);\n while (end - this.bufferOffset > this.buffers[0].length) {\n this.shiftBuffer();\n slice += this.buffers[0].slice(0, end - this.bufferOffset);\n }\n return slice;\n }\n shiftBuffer() {\n this.bufferOffset += this.buffers[0].length;\n this.writeIndex--;\n this.buffers.shift();\n }\n /**\n * Parses a chunk of data and calls the corresponding callbacks.\n *\n * @param chunk Chunk to parse.\n */\n write(chunk) {\n var _a, _b;\n if (this.ended) {\n (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(\".write() after done!\"));\n return;\n }\n this.buffers.push(chunk);\n if (this.tokenizer.running) {\n this.tokenizer.write(chunk);\n this.writeIndex++;\n }\n }\n /**\n * Parses the end of the buffer and clears the stack, calls onend.\n *\n * @param chunk Optional final chunk to parse.\n */\n end(chunk) {\n var _a, _b;\n if (this.ended) {\n (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(\".end() after done!\"));\n return;\n }\n if (chunk)\n this.write(chunk);\n this.ended = true;\n this.tokenizer.end();\n }\n /**\n * Pauses parsing. The parser won't emit events until `resume` is called.\n */\n pause() {\n this.tokenizer.pause();\n }\n /**\n * Resumes parsing after `pause` was called.\n */\n resume() {\n this.tokenizer.resume();\n while (this.tokenizer.running &&\n this.writeIndex < this.buffers.length) {\n this.tokenizer.write(this.buffers[this.writeIndex++]);\n }\n if (this.ended)\n this.tokenizer.end();\n }\n /**\n * Alias of `write`, for backwards compatibility.\n *\n * @param chunk Chunk to parse.\n * @deprecated\n */\n parseChunk(chunk) {\n this.write(chunk);\n }\n /**\n * Alias of `end`, for backwards compatibility.\n *\n * @param chunk Optional final chunk to parse.\n * @deprecated\n */\n done(chunk) {\n this.end(chunk);\n }\n}\n//# sourceMappingURL=Parser.js.map","/** Types of elements found in htmlparser2's DOM */\nexport var ElementType;\n(function (ElementType) {\n /** Type for the root element of a document */\n ElementType[\"Root\"] = \"root\";\n /** Type for Text */\n ElementType[\"Text\"] = \"text\";\n /** Type for <? ... ?> */\n ElementType[\"Directive\"] = \"directive\";\n /** Type for <!-- ... --> */\n ElementType[\"Comment\"] = \"comment\";\n /** Type for <script> tags */\n ElementType[\"Script\"] = \"script\";\n /** Type for <style> tags */\n ElementType[\"Style\"] = \"style\";\n /** Type for Any tag */\n ElementType[\"Tag\"] = \"tag\";\n /** Type for <![CDATA[ ... ]]> */\n ElementType[\"CDATA\"] = \"cdata\";\n /** Type for <!doctype ...> */\n ElementType[\"Doctype\"] = \"doctype\";\n})(ElementType || (ElementType = {}));\n/**\n * Tests whether an element is a tag or not.\n *\n * @param elem Element to test\n */\nexport function isTag(elem) {\n return (elem.type === ElementType.Tag ||\n elem.type === ElementType.Script ||\n elem.type === ElementType.Style);\n}\n// Exports for backwards compatibility\n/** Type for the root element of a document */\nexport const Root = ElementType.Root;\n/** Type for Text */\nexport const Text = ElementType.Text;\n/** Type for <? ... ?> */\nexport const Directive = ElementType.Directive;\n/** Type for <!-- ... --> */\nexport const Comment = ElementType.Comment;\n/** Type for <script> tags */\nexport const Script = ElementType.Script;\n/** Type for <style> tags */\nexport const Style = ElementType.Style;\n/** Type for Any tag */\nexport const Tag = ElementType.Tag;\n/** Type for <![CDATA[ ... ]]> */\nexport const CDATA = ElementType.CDATA;\n/** Type for <!doctype ...> */\nexport const Doctype = ElementType.Doctype;\n","import { ElementType, isTag as isTagRaw } from \"domelementtype\";\n/**\n * This object will be used as the prototype for Nodes when creating a\n * DOM-Level-1-compliant structure.\n */\nexport class Node {\n constructor() {\n /** Parent of the node */\n this.parent = null;\n /** Previous sibling */\n this.prev = null;\n /** Next sibling */\n this.next = null;\n /** The start index of the node. Requires `withStartIndices` on the handler to be `true. */\n this.startIndex = null;\n /** The end index of the node. Requires `withEndIndices` on the handler to be `true. */\n this.endIndex = null;\n }\n // Read-write aliases for properties\n /**\n * Same as {@link parent}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get parentNode() {\n return this.parent;\n }\n set parentNode(parent) {\n this.parent = parent;\n }\n /**\n * Same as {@link prev}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get previousSibling() {\n return this.prev;\n }\n set previousSibling(prev) {\n this.prev = prev;\n }\n /**\n * Same as {@link next}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get nextSibling() {\n return this.next;\n }\n set nextSibling(next) {\n this.next = next;\n }\n /**\n * Clone this node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\n cloneNode(recursive = false) {\n return cloneNode(this, recursive);\n }\n}\n/**\n * A node that contains some data.\n */\nexport class DataNode extends Node {\n /**\n * @param data The content of the data node\n */\n constructor(data) {\n super();\n this.data = data;\n }\n /**\n * Same as {@link data}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get nodeValue() {\n return this.data;\n }\n set nodeValue(data) {\n this.data = data;\n }\n}\n/**\n * Text within the document.\n */\nexport class Text extends DataNode {\n constructor() {\n super(...arguments);\n this.type = ElementType.Text;\n }\n get nodeType() {\n return 3;\n }\n}\n/**\n * Comments within the document.\n */\nexport class Comment extends DataNode {\n constructor() {\n super(...arguments);\n this.type = ElementType.Comment;\n }\n get nodeType() {\n return 8;\n }\n}\n/**\n * Processing instructions, including doc types.\n */\nexport class ProcessingInstruction extends DataNode {\n constructor(name, data) {\n super(data);\n this.name = name;\n this.type = ElementType.Directive;\n }\n get nodeType() {\n return 1;\n }\n}\n/**\n * A `Node` that can have children.\n */\nexport class NodeWithChildren extends Node {\n /**\n * @param children Children of the node. Only certain node types can have children.\n */\n constructor(children) {\n super();\n this.children = children;\n }\n // Aliases\n /** First child of the node. */\n get firstChild() {\n var _a;\n return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null;\n }\n /** Last child of the node. */\n get lastChild() {\n return this.children.length > 0\n ? this.children[this.children.length - 1]\n : null;\n }\n /**\n * Same as {@link children}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get childNodes() {\n return this.children;\n }\n set childNodes(children) {\n this.children = children;\n }\n}\nexport class CDATA extends NodeWithChildren {\n constructor() {\n super(...arguments);\n this.type = ElementType.CDATA;\n }\n get nodeType() {\n return 4;\n }\n}\n/**\n * The root node of the document.\n */\nexport class Document extends NodeWithChildren {\n constructor() {\n super(...arguments);\n this.type = ElementType.Root;\n }\n get nodeType() {\n return 9;\n }\n}\n/**\n * An element within the DOM.\n */\nexport class Element extends NodeWithChildren {\n /**\n * @param name Name of the tag, eg. `div`, `span`.\n * @param attribs Object mapping attribute names to attribute values.\n * @param children Children of the node.\n */\n constructor(name, attribs, children = [], type = name === \"script\"\n ? ElementType.Script\n : name === \"style\"\n ? ElementType.Style\n : ElementType.Tag) {\n super(children);\n this.name = name;\n this.attribs = attribs;\n this.type = type;\n }\n get nodeType() {\n return 1;\n }\n // DOM Level 1 aliases\n /**\n * Same as {@link name}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get tagName() {\n return this.name;\n }\n set tagName(name) {\n this.name = name;\n }\n get attributes() {\n return Object.keys(this.attribs).map((name) => {\n var _a, _b;\n return ({\n name,\n value: this.attribs[name],\n namespace: (_a = this[\"x-attribsNamespace\"]) === null || _a === void 0 ? void 0 : _a[name],\n prefix: (_b = this[\"x-attribsPrefix\"]) === null || _b === void 0 ? void 0 : _b[name],\n });\n });\n }\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node is a `Element`, `false` otherwise.\n */\nexport function isTag(node) {\n return isTagRaw(node);\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `CDATA`, `false` otherwise.\n */\nexport function isCDATA(node) {\n return node.type === ElementType.CDATA;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Text`, `false` otherwise.\n */\nexport function isText(node) {\n return node.type === ElementType.Text;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Comment`, `false` otherwise.\n */\nexport function isComment(node) {\n return node.type === ElementType.Comment;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nexport function isDirective(node) {\n return node.type === ElementType.Directive;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nexport function isDocument(node) {\n return node.type === ElementType.Root;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has children, `false` otherwise.\n */\nexport function hasChildren(node) {\n return Object.prototype.hasOwnProperty.call(node, \"children\");\n}\n/**\n * Clone a node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\nexport function cloneNode(node, recursive = false) {\n let result;\n if (isText(node)) {\n result = new Text(node.data);\n }\n else if (isComment(node)) {\n result = new Comment(node.data);\n }\n else if (isTag(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new Element(node.name, { ...node.attribs }, children);\n children.forEach((child) => (child.parent = clone));\n if (node.namespace != null) {\n clone.namespace = node.namespace;\n }\n if (node[\"x-attribsNamespace\"]) {\n clone[\"x-attribsNamespace\"] = { ...node[\"x-attribsNamespace\"] };\n }\n if (node[\"x-attribsPrefix\"]) {\n clone[\"x-attribsPrefix\"] = { ...node[\"x-attribsPrefix\"] };\n }\n result = clone;\n }\n else if (isCDATA(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new CDATA(children);\n children.forEach((child) => (child.parent = clone));\n result = clone;\n }\n else if (isDocument(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new Document(children);\n children.forEach((child) => (child.parent = clone));\n if (node[\"x-mode\"]) {\n clone[\"x-mode\"] = node[\"x-mode\"];\n }\n result = clone;\n }\n else if (isDirective(node)) {\n const instruction = new ProcessingInstruction(node.name, node.data);\n if (node[\"x-name\"] != null) {\n instruction[\"x-name\"] = node[\"x-name\"];\n instruction[\"x-publicId\"] = node[\"x-publicId\"];\n instruction[\"x-systemId\"] = node[\"x-systemId\"];\n }\n result = instruction;\n }\n else {\n throw new Error(`Not implemented yet: ${node.type}`);\n }\n result.startIndex = node.startIndex;\n result.endIndex = node.endIndex;\n if (node.sourceCodeLocation != null) {\n result.sourceCodeLocation = node.sourceCodeLocation;\n }\n return result;\n}\nfunction cloneChildren(childs) {\n const children = childs.map((child) => cloneNode(child, true));\n for (let i = 1; i < children.length; i++) {\n children[i].prev = children[i - 1];\n children[i - 1].next = children[i];\n }\n return children;\n}\n","import { ElementType } from \"domelementtype\";\nimport { Element, Text, Comment, CDATA, Document, ProcessingInstruction, } from \"./node.js\";\nexport * from \"./node.js\";\n// Default options\nconst defaultOpts = {\n withStartIndices: false,\n withEndIndices: false,\n xmlMode: false,\n};\nexport class DomHandler {\n /**\n * @param callback Called once parsing has completed.\n * @param options Settings for the handler.\n * @param elementCB Callback whenever a tag is closed.\n */\n constructor(callback, options, elementCB) {\n /** The elements of the DOM */\n this.dom = [];\n /** The root element for the DOM */\n this.root = new Document(this.dom);\n /** Indicated whether parsing has been completed. */\n this.done = false;\n /** Stack of open tags. */\n this.tagStack = [this.root];\n /** A data node that is still being written to. */\n this.lastNode = null;\n /** Reference to the parser instance. Used for location information. */\n this.parser = null;\n // Make it possible to skip arguments, for backwards-compatibility\n if (typeof options === \"function\") {\n elementCB = options;\n options = defaultOpts;\n }\n if (typeof callback === \"object\") {\n options = callback;\n callback = undefined;\n }\n this.callback = callback !== null && callback !== void 0 ? callback : null;\n this.options = options !== null && options !== void 0 ? options : defaultOpts;\n this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;\n }\n onparserinit(parser) {\n this.parser = parser;\n }\n // Resets the handler back to starting state\n onreset() {\n this.dom = [];\n this.root = new Document(this.dom);\n this.done = false;\n this.tagStack = [this.root];\n this.lastNode = null;\n this.parser = null;\n }\n // Signals the handler that parsing is done\n onend() {\n if (this.done)\n return;\n this.done = true;\n this.parser = null;\n this.handleCallback(null);\n }\n onerror(error) {\n this.handleCallback(error);\n }\n onclosetag() {\n this.lastNode = null;\n const elem = this.tagStack.pop();\n if (this.options.withEndIndices) {\n elem.endIndex = this.parser.endIndex;\n }\n if (this.elementCB)\n this.elementCB(elem);\n }\n onopentag(name, attribs) {\n const type = this.options.xmlMode ? ElementType.Tag : undefined;\n const element = new Element(name, attribs, undefined, type);\n this.addNode(element);\n this.tagStack.push(element);\n }\n ontext(data) {\n const { lastNode } = this;\n if (lastNode && lastNode.type === ElementType.Text) {\n lastNode.data += data;\n if (this.options.withEndIndices) {\n lastNode.endIndex = this.parser.endIndex;\n }\n }\n else {\n const node = new Text(data);\n this.addNode(node);\n this.lastNode = node;\n }\n }\n oncomment(data) {\n if (this.lastNode && this.lastNode.type === ElementType.Comment) {\n this.lastNode.data += data;\n return;\n }\n const node = new Comment(data);\n this.addNode(node);\n this.lastNode = node;\n }\n oncommentend() {\n this.lastNode = null;\n }\n oncdatastart() {\n const text = new Text(\"\");\n const node = new CDATA([text]);\n this.addNode(node);\n text.parent = node;\n this.lastNode = text;\n }\n oncdataend() {\n this.lastNode = null;\n }\n onprocessinginstruction(name, data) {\n const node = new ProcessingInstruction(name, data);\n this.addNode(node);\n }\n handleCallback(error) {\n if (typeof this.callback === \"function\") {\n this.callback(error, this.dom);\n }\n else if (error) {\n throw error;\n }\n }\n addNode(node) {\n const parent = this.tagStack[this.tagStack.length - 1];\n const previousSibling = parent.children[parent.children.length - 1];\n if (this.options.withStartIndices) {\n node.startIndex = this.parser.startIndex;\n }\n if (this.options.withEndIndices) {\n node.endIndex = this.parser.endIndex;\n }\n parent.children.push(node);\n if (previousSibling) {\n node.prev = previousSibling;\n previousSibling.next = node;\n }\n node.parent = parent;\n this.lastNode = null;\n }\n}\nexport default DomHandler;\n","export const xmlReplacer = /[\"&'<>$\\x80-\\uFFFF]/g;\nconst xmlCodeMap = new Map([\n [34, \""\"],\n [38, \"&\"],\n [39, \"'\"],\n [60, \"<\"],\n [62, \">\"],\n]);\n// For compatibility with node < 4, we wrap `codePointAt`\nexport const getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt != null\n ? (str, index) => str.codePointAt(index)\n : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n (c, index) => (c.charCodeAt(index) & 0xfc00) === 0xd800\n ? (c.charCodeAt(index) - 0xd800) * 0x400 +\n c.charCodeAt(index + 1) -\n 0xdc00 +\n 0x10000\n : c.charCodeAt(index);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexport function encodeXML(str) {\n let ret = \"\";\n let lastIdx = 0;\n let match;\n while ((match = xmlReplacer.exec(str)) !== null) {\n const i = match.index;\n const char = str.charCodeAt(i);\n const next = xmlCodeMap.get(char);\n if (next !== undefined) {\n ret += str.substring(lastIdx, i) + next;\n lastIdx = i + 1;\n }\n else {\n ret += `${str.substring(lastIdx, i)}&#x${getCodePoint(str, i).toString(16)};`;\n // Increase by 1 if we have a surrogate pair\n lastIdx = xmlReplacer.lastIndex += Number((char & 0xfc00) === 0xd800);\n }\n }\n return ret + str.substr(lastIdx);\n}\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `ü`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nexport const escape = encodeXML;\n/**\n * Creates a function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n *\n * @param regex Regular expression to match characters to escape.\n * @param map Map of characters to escape to their entities.\n *\n * @returns Function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n */\nfunction getEscaper(regex, map) {\n return function escape(data) {\n let match;\n let lastIdx = 0;\n let result = \"\";\n while ((match = regex.exec(data))) {\n if (lastIdx !== match.index) {\n result += data.substring(lastIdx, match.index);\n }\n // We know that this character will be in the map.\n result += map.get(match[0].charCodeAt(0));\n // Every match will be of length 1\n lastIdx = match.index + 1;\n }\n return result + data.substring(lastIdx);\n };\n}\n/**\n * Encodes all characters not valid in XML documents using XML entities.\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nexport const escapeUTF8 = getEscaper(/[&<>'\"]/g, xmlCodeMap);\n/**\n * Encodes all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeAttribute = getEscaper(/[\"&\\u00A0]/g, new Map([\n [34, \""\"],\n [38, \"&\"],\n [160, \" \"],\n]));\n/**\n * Encodes all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeText = getEscaper(/[&<>\\u00A0]/g, new Map([\n [38, \"&\"],\n [60, \"<\"],\n [62, \">\"],\n [160, \" \"],\n]));\n//# sourceMappingURL=escape.js.map","export const elementNames = new Map([\n \"altGlyph\",\n \"altGlyphDef\",\n \"altGlyphItem\",\n \"animateColor\",\n \"animateMotion\",\n \"animateTransform\",\n \"clipPath\",\n \"feBlend\",\n \"feColorMatrix\",\n \"feComponentTransfer\",\n \"feComposite\",\n \"feConvolveMatrix\",\n \"feDiffuseLighting\",\n \"feDisplacementMap\",\n \"feDistantLight\",\n \"feDropShadow\",\n \"feFlood\",\n \"feFuncA\",\n \"feFuncB\",\n \"feFuncG\",\n \"feFuncR\",\n \"feGaussianBlur\",\n \"feImage\",\n \"feMerge\",\n \"feMergeNode\",\n \"feMorphology\",\n \"feOffset\",\n \"fePointLight\",\n \"feSpecularLighting\",\n \"feSpotLight\",\n \"feTile\",\n \"feTurbulence\",\n \"foreignObject\",\n \"glyphRef\",\n \"linearGradient\",\n \"radialGradient\",\n \"textPath\",\n].map((val) => [val.toLowerCase(), val]));\nexport const attributeNames = new Map([\n \"definitionURL\",\n \"attributeName\",\n \"attributeType\",\n \"baseFrequency\",\n \"baseProfile\",\n \"calcMode\",\n \"clipPathUnits\",\n \"diffuseConstant\",\n \"edgeMode\",\n \"filterUnits\",\n \"glyphRef\",\n \"gradientTransform\",\n \"gradientUnits\",\n \"kernelMatrix\",\n \"kernelUnitLength\",\n \"keyPoints\",\n \"keySplines\",\n \"keyTimes\",\n \"lengthAdjust\",\n \"limitingConeAngle\",\n \"markerHeight\",\n \"markerUnits\",\n \"markerWidth\",\n \"maskContentUnits\",\n \"maskUnits\",\n \"numOctaves\",\n \"pathLength\",\n \"patternContentUnits\",\n \"patternTransform\",\n \"patternUnits\",\n \"pointsAtX\",\n \"pointsAtY\",\n \"pointsAtZ\",\n \"preserveAlpha\",\n \"preserveAspectRatio\",\n \"primitiveUnits\",\n \"refX\",\n \"refY\",\n \"repeatCount\",\n \"repeatDur\",\n \"requiredExtensions\",\n \"requiredFeatures\",\n \"specularConstant\",\n \"specularExponent\",\n \"spreadMethod\",\n \"startOffset\",\n \"stdDeviation\",\n \"stitchTiles\",\n \"surfaceScale\",\n \"systemLanguage\",\n \"tableValues\",\n \"targetX\",\n \"targetY\",\n \"textLength\",\n \"viewBox\",\n \"viewTarget\",\n \"xChannelSelector\",\n \"yChannelSelector\",\n \"zoomAndPan\",\n].map((val) => [val.toLowerCase(), val]));\n","/*\n * Module dependencies\n */\nimport * as ElementType from \"domelementtype\";\nimport { encodeXML, escapeAttribute, escapeText } from \"entities\";\n/**\n * Mixed-case SVG and MathML tags & attributes\n * recognized by the HTML parser.\n *\n * @see https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inforeign\n */\nimport { elementNames, attributeNames } from \"./foreignNames.js\";\nconst unencodedElements = new Set([\n \"style\",\n \"script\",\n \"xmp\",\n \"iframe\",\n \"noembed\",\n \"noframes\",\n \"plaintext\",\n \"noscript\",\n]);\nfunction replaceQuotes(value) {\n return value.replace(/\"/g, \""\");\n}\n/**\n * Format attributes\n */\nfunction formatAttributes(attributes, opts) {\n var _a;\n if (!attributes)\n return;\n const encode = ((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) === false\n ? replaceQuotes\n : opts.xmlMode || opts.encodeEntities !== \"utf8\"\n ? encodeXML\n : escapeAttribute;\n return Object.keys(attributes)\n .map((key) => {\n var _a, _b;\n const value = (_a = attributes[key]) !== null && _a !== void 0 ? _a : \"\";\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case attribute names */\n key = (_b = attributeNames.get(key)) !== null && _b !== void 0 ? _b : key;\n }\n if (!opts.emptyAttrs && !opts.xmlMode && value === \"\") {\n return key;\n }\n return `${key}=\"${encode(value)}\"`;\n })\n .join(\" \");\n}\n/**\n * Self-enclosing tags\n */\nconst singleTag = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\n/**\n * Renders a DOM node or an array of DOM nodes to a string.\n *\n * Can be thought of as the equivalent of the `outerHTML` of the passed node(s).\n *\n * @param node Node to be rendered.\n * @param options Changes serialization behavior\n */\nexport function render(node, options = {}) {\n const nodes = \"length\" in node ? node : [node];\n let output = \"\";\n for (let i = 0; i < nodes.length; i++) {\n output += renderNode(nodes[i], options);\n }\n return output;\n}\nexport default render;\nfunction renderNode(node, options) {\n switch (node.type) {\n case ElementType.Root:\n return render(node.children, options);\n // @ts-expect-error We don't use `Doctype` yet\n case ElementType.Doctype:\n case ElementType.Directive:\n return renderDirective(node);\n case ElementType.Comment:\n return renderComment(node);\n case ElementType.CDATA:\n return renderCdata(node);\n case ElementType.Script:\n case ElementType.Style:\n case ElementType.Tag:\n return renderTag(node, options);\n case ElementType.Text:\n return renderText(node, options);\n }\n}\nconst foreignModeIntegrationPoints = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignObject\",\n \"desc\",\n \"title\",\n]);\nconst foreignElements = new Set([\"svg\", \"math\"]);\nfunction renderTag(elem, opts) {\n var _a;\n // Handle SVG / MathML in HTML\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case element names */\n elem.name = (_a = elementNames.get(elem.name)) !== null && _a !== void 0 ? _a : elem.name;\n /* Exit foreign mode at integration points */\n if (elem.parent &&\n foreignModeIntegrationPoints.has(elem.parent.name)) {\n opts = { ...opts, xmlMode: false };\n }\n }\n if (!opts.xmlMode && foreignElements.has(elem.name)) {\n opts = { ...opts, xmlMode: \"foreign\" };\n }\n let tag = `<${elem.name}`;\n const attribs = formatAttributes(elem.attribs, opts);\n if (attribs) {\n tag += ` ${attribs}`;\n }\n if (elem.children.length === 0 &&\n (opts.xmlMode\n ? // In XML mode or foreign mode, and user hasn't explicitly turned off self-closing tags\n opts.selfClosingTags !== false\n : // User explicitly asked for self-closing tags, even in HTML mode\n opts.selfClosingTags && singleTag.has(elem.name))) {\n if (!opts.xmlMode)\n tag += \" \";\n tag += \"/>\";\n }\n else {\n tag += \">\";\n if (elem.children.length > 0) {\n tag += render(elem.children, opts);\n }\n if (opts.xmlMode || !singleTag.has(elem.name)) {\n tag += `</${elem.name}>`;\n }\n }\n return tag;\n}\nfunction renderDirective(elem) {\n return `<${elem.data}>`;\n}\nfunction renderText(elem, opts) {\n var _a;\n let data = elem.data || \"\";\n // If entities weren't decoded, no need to encode them back\n if (((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) !== false &&\n !(!opts.xmlMode &&\n elem.parent &&\n unencodedElements.has(elem.parent.name))) {\n data =\n opts.xmlMode || opts.encodeEntities !== \"utf8\"\n ? encodeXML(data)\n : escapeText(data);\n }\n return data;\n}\nfunction renderCdata(elem) {\n return `<![CDATA[${elem.children[0].data}]]>`;\n}\nfunction renderComment(elem) {\n return `<!--${elem.data}-->`;\n}\n","import { isTag, isCDATA, isText, hasChildren, isComment, } from \"domhandler\";\nimport renderHTML from \"dom-serializer\";\nimport { ElementType } from \"domelementtype\";\n/**\n * @category Stringify\n * @deprecated Use the `dom-serializer` module directly.\n * @param node Node to get the outer HTML of.\n * @param options Options for serialization.\n * @returns `node`'s outer HTML.\n */\nexport function getOuterHTML(node, options) {\n return renderHTML(node, options);\n}\n/**\n * @category Stringify\n * @deprecated Use the `dom-serializer` module directly.\n * @param node Node to get the inner HTML of.\n * @param options Options for serialization.\n * @returns `node`'s inner HTML.\n */\nexport function getInnerHTML(node, options) {\n return hasChildren(node)\n ? node.children.map((node) => getOuterHTML(node, options)).join(\"\")\n : \"\";\n}\n/**\n * Get a node's inner text. Same as `textContent`, but inserts newlines for `<br>` tags. Ignores comments.\n *\n * @category Stringify\n * @deprecated Use `textContent` instead.\n * @param node Node to get the inner text of.\n * @returns `node`'s inner text.\n */\nexport function getText(node) {\n if (Array.isArray(node))\n return node.map(getText).join(\"\");\n if (isTag(node))\n return node.name === \"br\" ? \"\\n\" : getText(node.children);\n if (isCDATA(node))\n return getText(node.children);\n if (isText(node))\n return node.data;\n return \"\";\n}\n/**\n * Get a node's text content. Ignores comments.\n *\n * @category Stringify\n * @param node Node to get the text content of.\n * @returns `node`'s text content.\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent}\n */\nexport function textContent(node) {\n if (Array.isArray(node))\n return node.map(textContent).join(\"\");\n if (hasChildren(node) && !isComment(node)) {\n return textContent(node.children);\n }\n if (isText(node))\n return node.data;\n return \"\";\n}\n/**\n * Get a node's inner text, ignoring `<script>` and `<style>` tags. Ignores comments.\n *\n * @category Stringify\n * @param node Node to get the inner text of.\n * @returns `node`'s inner text.\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Node/innerText}\n */\nexport function innerText(node) {\n if (Array.isArray(node))\n return node.map(innerText).join(\"\");\n if (hasChildren(node) && (node.type === ElementType.Tag || isCDATA(node))) {\n return innerText(node.children);\n }\n if (isText(node))\n return node.data;\n return \"\";\n}\n//# sourceMappingURL=stringify.js.map","import { isTag, hasChildren, } from \"domhandler\";\n/**\n * Get a node's children.\n *\n * @category Traversal\n * @param elem Node to get the children of.\n * @returns `elem`'s children, or an empty array.\n */\nexport function getChildren(elem) {\n return hasChildren(elem) ? elem.children : [];\n}\n/**\n * Get a node's parent.\n *\n * @category Traversal\n * @param elem Node to get the parent of.\n * @returns `elem`'s parent node, or `null` if `elem` is a root node.\n */\nexport function getParent(elem) {\n return elem.parent || null;\n}\n/**\n * Gets an elements siblings, including the element itself.\n *\n * Attempts to get the children through the element's parent first. If we don't\n * have a parent (the element is a root node), we walk the element's `prev` &\n * `next` to get all remaining nodes.\n *\n * @category Traversal\n * @param elem Element to get the siblings of.\n * @returns `elem`'s siblings, including `elem`.\n */\nexport function getSiblings(elem) {\n const parent = getParent(elem);\n if (parent != null)\n return getChildren(parent);\n const siblings = [elem];\n let { prev, next } = elem;\n while (prev != null) {\n siblings.unshift(prev);\n ({ prev } = prev);\n }\n while (next != null) {\n siblings.push(next);\n ({ next } = next);\n }\n return siblings;\n}\n/**\n * Gets an attribute from an element.\n *\n * @category Traversal\n * @param elem Element to check.\n * @param name Attribute name to retrieve.\n * @returns The element's attribute value, or `undefined`.\n */\nexport function getAttributeValue(elem, name) {\n var _a;\n return (_a = elem.attribs) === null || _a === void 0 ? void 0 : _a[name];\n}\n/**\n * Checks whether an element has an attribute.\n *\n * @category Traversal\n * @param elem Element to check.\n * @param name Attribute name to look for.\n * @returns Returns whether `elem` has the attribute `name`.\n */\nexport function hasAttrib(elem, name) {\n return (elem.attribs != null &&\n Object.prototype.hasOwnProperty.call(elem.attribs, name) &&\n elem.attribs[name] != null);\n}\n/**\n * Get the tag name of an element.\n *\n * @category Traversal\n * @param elem The element to get the name for.\n * @returns The tag name of `elem`.\n */\nexport function getName(elem) {\n return elem.name;\n}\n/**\n * Returns the next element sibling of a node.\n *\n * @category Traversal\n * @param elem The element to get the next sibling of.\n * @returns `elem`'s next sibling that is a tag, or `null` if there is no next\n * sibling.\n */\nexport function nextElementSibling(elem) {\n let { next } = elem;\n while (next !== null && !isTag(next))\n ({ next } = next);\n return next;\n}\n/**\n * Returns the previous element sibling of a node.\n *\n * @category Traversal\n * @param elem The element to get the previous sibling of.\n * @returns `elem`'s previous sibling that is a tag, or `null` if there is no\n * previous sibling.\n */\nexport function prevElementSibling(elem) {\n let { prev } = elem;\n while (prev !== null && !isTag(prev))\n ({ prev } = prev);\n return prev;\n}\n//# sourceMappingURL=traversal.js.map","/**\n * Remove an element from the dom\n *\n * @category Manipulation\n * @param elem The element to be removed\n */\nexport function removeElement(elem) {\n if (elem.prev)\n elem.prev.next = elem.next;\n if (elem.next)\n elem.next.prev = elem.prev;\n if (elem.parent) {\n const childs = elem.parent.children;\n const childsIndex = childs.lastIndexOf(elem);\n if (childsIndex >= 0) {\n childs.splice(childsIndex, 1);\n }\n }\n elem.next = null;\n elem.prev = null;\n elem.parent = null;\n}\n/**\n * Replace an element in the dom\n *\n * @category Manipulation\n * @param elem The element to be replaced\n * @param replacement The element to be added\n */\nexport function replaceElement(elem, replacement) {\n const prev = (replacement.prev = elem.prev);\n if (prev) {\n prev.next = replacement;\n }\n const next = (replacement.next = elem.next);\n if (next) {\n next.prev = replacement;\n }\n const parent = (replacement.parent = elem.parent);\n if (parent) {\n const childs = parent.children;\n childs[childs.lastIndexOf(elem)] = replacement;\n elem.parent = null;\n }\n}\n/**\n * Append a child to an element.\n *\n * @category Manipulation\n * @param parent The element to append to.\n * @param child The element to be added as a child.\n */\nexport function appendChild(parent, child) {\n removeElement(child);\n child.next = null;\n child.parent = parent;\n if (parent.children.push(child) > 1) {\n const sibling = parent.children[parent.children.length - 2];\n sibling.next = child;\n child.prev = sibling;\n }\n else {\n child.prev = null;\n }\n}\n/**\n * Append an element after another.\n *\n * @category Manipulation\n * @param elem The element to append after.\n * @param next The element be added.\n */\nexport function append(elem, next) {\n removeElement(next);\n const { parent } = elem;\n const currNext = elem.next;\n next.next = currNext;\n next.prev = elem;\n elem.next = next;\n next.parent = parent;\n if (currNext) {\n currNext.prev = next;\n if (parent) {\n const childs = parent.children;\n childs.splice(childs.lastIndexOf(currNext), 0, next);\n }\n }\n else if (parent) {\n parent.children.push(next);\n }\n}\n/**\n * Prepend a child to an element.\n *\n * @category Manipulation\n * @param parent The element to prepend before.\n * @param child The element to be added as a child.\n */\nexport function prependChild(parent, child) {\n removeElement(child);\n child.parent = parent;\n child.prev = null;\n if (parent.children.unshift(child) !== 1) {\n const sibling = parent.children[1];\n sibling.prev = child;\n child.next = sibling;\n }\n else {\n child.next = null;\n }\n}\n/**\n * Prepend an element before another.\n *\n * @category Manipulation\n * @param elem The element to prepend before.\n * @param prev The element be added.\n */\nexport function prepend(elem, prev) {\n removeElement(prev);\n const { parent } = elem;\n if (parent) {\n const childs = parent.children;\n childs.splice(childs.indexOf(elem), 0, prev);\n }\n if (elem.prev) {\n elem.prev.next = prev;\n }\n prev.parent = parent;\n prev.prev = elem.prev;\n prev.next = elem;\n elem.prev = prev;\n}\n//# sourceMappingURL=manipulation.js.map","import { isTag, hasChildren } from \"domhandler\";\n/**\n * Search a node and its children for nodes passing a test function. If `node` is not an array, it will be wrapped in one.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param node Node to search. Will be included in the result set if it matches.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes passing `test`.\n */\nexport function filter(test, node, recurse = true, limit = Infinity) {\n return find(test, Array.isArray(node) ? node : [node], recurse, limit);\n}\n/**\n * Search an array of nodes and their children for nodes passing a test function.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes passing `test`.\n */\nexport function find(test, nodes, recurse, limit) {\n const result = [];\n /** Stack of the arrays we are looking at. */\n const nodeStack = [nodes];\n /** Stack of the indices within the arrays. */\n const indexStack = [0];\n for (;;) {\n // First, check if the current array has any more elements to look at.\n if (indexStack[0] >= nodeStack[0].length) {\n // If we have no more arrays to look at, we are done.\n if (indexStack.length === 1) {\n return result;\n }\n // Otherwise, remove the current array from the stack.\n nodeStack.shift();\n indexStack.shift();\n // Loop back to the start to continue with the next array.\n continue;\n }\n const elem = nodeStack[0][indexStack[0]++];\n if (test(elem)) {\n result.push(elem);\n if (--limit <= 0)\n return result;\n }\n if (recurse && hasChildren(elem) && elem.children.length > 0) {\n /*\n * Add the children to the stack. We are depth-first, so this is\n * the next array we look at.\n */\n indexStack.unshift(0);\n nodeStack.unshift(elem.children);\n }\n }\n}\n/**\n * Finds the first element inside of an array that matches a test function. This is an alias for `Array.prototype.find`.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @returns The first node in the array that passes `test`.\n * @deprecated Use `Array.prototype.find` directly.\n */\nexport function findOneChild(test, nodes) {\n return nodes.find(test);\n}\n/**\n * Finds one element in a tree that passes a test.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Node or array of nodes to search.\n * @param recurse Also consider child nodes.\n * @returns The first node that passes `test`.\n */\nexport function findOne(test, nodes, recurse = true) {\n let elem = null;\n for (let i = 0; i < nodes.length && !elem; i++) {\n const node = nodes[i];\n if (!isTag(node)) {\n continue;\n }\n else if (test(node)) {\n elem = node;\n }\n else if (recurse && node.children.length > 0) {\n elem = findOne(test, node.children, true);\n }\n }\n return elem;\n}\n/**\n * Checks if a tree of nodes contains at least one node passing a test.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @returns Whether a tree of nodes contains at least one node passing the test.\n */\nexport function existsOne(test, nodes) {\n return nodes.some((checked) => isTag(checked) &&\n (test(checked) || existsOne(test, checked.children)));\n}\n/**\n * Search an array of nodes and their children for elements passing a test function.\n *\n * Same as `find`, but limited to elements and with less options, leading to reduced complexity.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @returns All nodes passing `test`.\n */\nexport function findAll(test, nodes) {\n const result = [];\n const nodeStack = [nodes];\n const indexStack = [0];\n for (;;) {\n if (indexStack[0] >= nodeStack[0].length) {\n if (nodeStack.length === 1) {\n return result;\n }\n // Otherwise, remove the current array from the stack.\n nodeStack.shift();\n indexStack.shift();\n // Loop back to the start to continue with the next array.\n continue;\n }\n const elem = nodeStack[0][indexStack[0]++];\n if (!isTag(elem))\n continue;\n if (test(elem))\n result.push(elem);\n if (elem.children.length > 0) {\n indexStack.unshift(0);\n nodeStack.unshift(elem.children);\n }\n }\n}\n//# sourceMappingURL=querying.js.map","import { isTag, isText } from \"domhandler\";\nimport { filter, findOne } from \"./querying.js\";\n/**\n * A map of functions to check nodes against.\n */\nconst Checks = {\n tag_name(name) {\n if (typeof name === \"function\") {\n return (elem) => isTag(elem) && name(elem.name);\n }\n else if (name === \"*\") {\n return isTag;\n }\n return (elem) => isTag(elem) && elem.name === name;\n },\n tag_type(type) {\n if (typeof type === \"function\") {\n return (elem) => type(elem.type);\n }\n return (elem) => elem.type === type;\n },\n tag_contains(data) {\n if (typeof data === \"function\") {\n return (elem) => isText(elem) && data(elem.data);\n }\n return (elem) => isText(elem) && elem.data === data;\n },\n};\n/**\n * Returns a function to check whether a node has an attribute with a particular\n * value.\n *\n * @param attrib Attribute to check.\n * @param value Attribute value to look for.\n * @returns A function to check whether the a node has an attribute with a\n * particular value.\n */\nfunction getAttribCheck(attrib, value) {\n if (typeof value === \"function\") {\n return (elem) => isTag(elem) && value(elem.attribs[attrib]);\n }\n return (elem) => isTag(elem) && elem.attribs[attrib] === value;\n}\n/**\n * Returns a function that returns `true` if either of the input functions\n * returns `true` for a node.\n *\n * @param a First function to combine.\n * @param b Second function to combine.\n * @returns A function taking a node and returning `true` if either of the input\n * functions returns `true` for the node.\n */\nfunction combineFuncs(a, b) {\n return (elem) => a(elem) || b(elem);\n}\n/**\n * Returns a function that executes all checks in `options` and returns `true`\n * if any of them match a node.\n *\n * @param options An object describing nodes to look for.\n * @returns A function that executes all checks in `options` and returns `true`\n * if any of them match a node.\n */\nfunction compileTest(options) {\n const funcs = Object.keys(options).map((key) => {\n const value = options[key];\n return Object.prototype.hasOwnProperty.call(Checks, key)\n ? Checks[key](value)\n : getAttribCheck(key, value);\n });\n return funcs.length === 0 ? null : funcs.reduce(combineFuncs);\n}\n/**\n * Checks whether a node matches the description in `options`.\n *\n * @category Legacy Query Functions\n * @param options An object describing nodes to look for.\n * @param node The element to test.\n * @returns Whether the element matches the description in `options`.\n */\nexport function testElement(options, node) {\n const test = compileTest(options);\n return test ? test(node) : true;\n}\n/**\n * Returns all nodes that match `options`.\n *\n * @category Legacy Query Functions\n * @param options An object describing nodes to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes that match `options`.\n */\nexport function getElements(options, nodes, recurse, limit = Infinity) {\n const test = compileTest(options);\n return test ? filter(test, nodes, recurse, limit) : [];\n}\n/**\n * Returns the node with the supplied ID.\n *\n * @category Legacy Query Functions\n * @param id The unique ID attribute value to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @returns The node with the supplied ID.\n */\nexport function getElementById(id, nodes, recurse = true) {\n if (!Array.isArray(nodes))\n nodes = [nodes];\n return findOne(getAttribCheck(\"id\", id), nodes, recurse);\n}\n/**\n * Returns all nodes with the supplied `tagName`.\n *\n * @category Legacy Query Functions\n * @param tagName Tag name to search for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes with the supplied `tagName`.\n */\nexport function getElementsByTagName(tagName, nodes, recurse = true, limit = Infinity) {\n return filter(Checks[\"tag_name\"](tagName), nodes, recurse, limit);\n}\n/**\n * Returns all nodes with the supplied `type`.\n *\n * @category Legacy Query Functions\n * @param type Element type to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes with the supplied `type`.\n */\nexport function getElementsByTagType(type, nodes, recurse = true, limit = Infinity) {\n return filter(Checks[\"tag_type\"](type), nodes, recurse, limit);\n}\n//# sourceMappingURL=legacy.js.map","import { hasChildren } from \"domhandler\";\n/**\n * Given an array of nodes, remove any member that is contained by another\n * member.\n *\n * @category Helpers\n * @param nodes Nodes to filter.\n * @returns Remaining nodes that aren't contained by other nodes.\n */\nexport function removeSubsets(nodes) {\n let idx = nodes.length;\n /*\n * Check if each node (or one of its ancestors) is already contained in the\n * array.\n */\n while (--idx >= 0) {\n const node = nodes[idx];\n /*\n * Remove the node if it is not unique.\n * We are going through the array from the end, so we only\n * have to check nodes that preceed the node under consideration in the array.\n */\n if (idx > 0 && nodes.lastIndexOf(node, idx - 1) >= 0) {\n nodes.splice(idx, 1);\n continue;\n }\n for (let ancestor = node.parent; ancestor; ancestor = ancestor.parent) {\n if (nodes.includes(ancestor)) {\n nodes.splice(idx, 1);\n break;\n }\n }\n }\n return nodes;\n}\n/**\n * @category Helpers\n * @see {@link http://dom.spec.whatwg.org/#dom-node-comparedocumentposition}\n */\nexport var DocumentPosition;\n(function (DocumentPosition) {\n DocumentPosition[DocumentPosition[\"DISCONNECTED\"] = 1] = \"DISCONNECTED\";\n DocumentPosition[DocumentPosition[\"PRECEDING\"] = 2] = \"PRECEDING\";\n DocumentPosition[DocumentPosition[\"FOLLOWING\"] = 4] = \"FOLLOWING\";\n DocumentPosition[DocumentPosition[\"CONTAINS\"] = 8] = \"CONTAINS\";\n DocumentPosition[DocumentPosition[\"CONTAINED_BY\"] = 16] = \"CONTAINED_BY\";\n})(DocumentPosition || (DocumentPosition = {}));\n/**\n * Compare the position of one node against another node in any other document,\n * returning a bitmask with the values from {@link DocumentPosition}.\n *\n * Document order:\n * > There is an ordering, document order, defined on all the nodes in the\n * > document corresponding to the order in which the first character of the\n * > XML representation of each node occurs in the XML representation of the\n * > document after expansion of general entities. Thus, the document element\n * > node will be the first node. Element nodes occur before their children.\n * > Thus, document order orders element nodes in order of the occurrence of\n * > their start-tag in the XML (after expansion of entities). The attribute\n * > nodes of an element occur after the element and before its children. The\n * > relative order of attribute nodes is implementation-dependent.\n *\n * Source:\n * http://www.w3.org/TR/DOM-Level-3-Core/glossary.html#dt-document-order\n *\n * @category Helpers\n * @param nodeA The first node to use in the comparison\n * @param nodeB The second node to use in the comparison\n * @returns A bitmask describing the input nodes' relative position.\n *\n * See http://dom.spec.whatwg.org/#dom-node-comparedocumentposition for\n * a description of these values.\n */\nexport function compareDocumentPosition(nodeA, nodeB) {\n const aParents = [];\n const bParents = [];\n if (nodeA === nodeB) {\n return 0;\n }\n let current = hasChildren(nodeA) ? nodeA : nodeA.parent;\n while (current) {\n aParents.unshift(current);\n current = current.parent;\n }\n current = hasChildren(nodeB) ? nodeB : nodeB.parent;\n while (current) {\n bParents.unshift(current);\n current = current.parent;\n }\n const maxIdx = Math.min(aParents.length, bParents.length);\n let idx = 0;\n while (idx < maxIdx && aParents[idx] === bParents[idx]) {\n idx++;\n }\n if (idx === 0) {\n return DocumentPosition.DISCONNECTED;\n }\n const sharedParent = aParents[idx - 1];\n const siblings = sharedParent.children;\n const aSibling = aParents[idx];\n const bSibling = bParents[idx];\n if (siblings.indexOf(aSibling) > siblings.indexOf(bSibling)) {\n if (sharedParent === nodeB) {\n return DocumentPosition.FOLLOWING | DocumentPosition.CONTAINED_BY;\n }\n return DocumentPosition.FOLLOWING;\n }\n if (sharedParent === nodeA) {\n return DocumentPosition.PRECEDING | DocumentPosition.CONTAINS;\n }\n return DocumentPosition.PRECEDING;\n}\n/**\n * Sort an array of nodes based on their relative position in the document,\n * removing any duplicate nodes. If the array contains nodes that do not belong\n * to the same document, sort order is unspecified.\n *\n * @category Helpers\n * @param nodes Array of DOM nodes.\n * @returns Collection of unique nodes, sorted in document order.\n */\nexport function uniqueSort(nodes) {\n nodes = nodes.filter((node, i, arr) => !arr.includes(node, i + 1));\n nodes.sort((a, b) => {\n const relative = compareDocumentPosition(a, b);\n if (relative & DocumentPosition.PRECEDING) {\n return -1;\n }\n else if (relative & DocumentPosition.FOLLOWING) {\n return 1;\n }\n return 0;\n });\n return nodes;\n}\n//# sourceMappingURL=helpers.js.map","import { textContent } from \"./stringify.js\";\nimport { getElementsByTagName } from \"./legacy.js\";\n/**\n * Get the feed object from the root of a DOM tree.\n *\n * @category Feeds\n * @param doc - The DOM to to extract the feed from.\n * @returns The feed.\n */\nexport function getFeed(doc) {\n const feedRoot = getOneElement(isValidFeed, doc);\n return !feedRoot\n ? null\n : feedRoot.name === \"feed\"\n ? getAtomFeed(feedRoot)\n : getRssFeed(feedRoot);\n}\n/**\n * Parse an Atom feed.\n *\n * @param feedRoot The root of the feed.\n * @returns The parsed feed.\n */\nfunction getAtomFeed(feedRoot) {\n var _a;\n const childs = feedRoot.children;\n const feed = {\n type: \"atom\",\n items: getElementsByTagName(\"entry\", childs).map((item) => {\n var _a;\n const { children } = item;\n const entry = { media: getMediaElements(children) };\n addConditionally(entry, \"id\", \"id\", children);\n addConditionally(entry, \"title\", \"title\", children);\n const href = (_a = getOneElement(\"link\", children)) === null || _a === void 0 ? void 0 : _a.attribs[\"href\"];\n if (href) {\n entry.link = href;\n }\n const description = fetch(\"summary\", children) || fetch(\"content\", children);\n if (description) {\n entry.description = description;\n }\n const pubDate = fetch(\"updated\", children);\n if (pubDate) {\n entry.pubDate = new Date(pubDate);\n }\n return entry;\n }),\n };\n addConditionally(feed, \"id\", \"id\", childs);\n addConditionally(feed, \"title\", \"title\", childs);\n const href = (_a = getOneElement(\"link\", childs)) === null || _a === void 0 ? void 0 : _a.attribs[\"href\"];\n if (href) {\n feed.link = href;\n }\n addConditionally(feed, \"description\", \"subtitle\", childs);\n const updated = fetch(\"updated\", childs);\n if (updated) {\n feed.updated = new Date(updated);\n }\n addConditionally(feed, \"author\", \"email\", childs, true);\n return feed;\n}\n/**\n * Parse a RSS feed.\n *\n * @param feedRoot The root of the feed.\n * @returns The parsed feed.\n */\nfunction getRssFeed(feedRoot) {\n var _a, _b;\n const childs = (_b = (_a = getOneElement(\"channel\", feedRoot.children)) === null || _a === void 0 ? void 0 : _a.children) !== null && _b !== void 0 ? _b : [];\n const feed = {\n type: feedRoot.name.substr(0, 3),\n id: \"\",\n items: getElementsByTagName(\"item\", feedRoot.children).map((item) => {\n const { children } = item;\n const entry = { media: getMediaElements(children) };\n addConditionally(entry, \"id\", \"guid\", children);\n addConditionally(entry, \"title\", \"title\", children);\n addConditionally(entry, \"link\", \"link\", children);\n addConditionally(entry, \"description\", \"description\", children);\n const pubDate = fetch(\"pubDate\", children) || fetch(\"dc:date\", children);\n if (pubDate)\n entry.pubDate = new Date(pubDate);\n return entry;\n }),\n };\n addConditionally(feed, \"title\", \"title\", childs);\n addConditionally(feed, \"link\", \"link\", childs);\n addConditionally(feed, \"description\", \"description\", childs);\n const updated = fetch(\"lastBuildDate\", childs);\n if (updated) {\n feed.updated = new Date(updated);\n }\n addConditionally(feed, \"author\", \"managingEditor\", childs, true);\n return feed;\n}\nconst MEDIA_KEYS_STRING = [\"url\", \"type\", \"lang\"];\nconst MEDIA_KEYS_INT = [\n \"fileSize\",\n \"bitrate\",\n \"framerate\",\n \"samplingrate\",\n \"channels\",\n \"duration\",\n \"height\",\n \"width\",\n];\n/**\n * Get all media elements of a feed item.\n *\n * @param where Nodes to search in.\n * @returns Media elements.\n */\nfunction getMediaElements(where) {\n return getElementsByTagName(\"media:content\", where).map((elem) => {\n const { attribs } = elem;\n const media = {\n medium: attribs[\"medium\"],\n isDefault: !!attribs[\"isDefault\"],\n };\n for (const attrib of MEDIA_KEYS_STRING) {\n if (attribs[attrib]) {\n media[attrib] = attribs[attrib];\n }\n }\n for (const attrib of MEDIA_KEYS_INT) {\n if (attribs[attrib]) {\n media[attrib] = parseInt(attribs[attrib], 10);\n }\n }\n if (attribs[\"expression\"]) {\n media.expression = attribs[\"expression\"];\n }\n return media;\n });\n}\n/**\n * Get one element by tag name.\n *\n * @param tagName Tag name to look for\n * @param node Node to search in\n * @returns The element or null\n */\nfunction getOneElement(tagName, node) {\n return getElementsByTagName(tagName, node, true, 1)[0];\n}\n/**\n * Get the text content of an element with a certain tag name.\n *\n * @param tagName Tag name to look for.\n * @param where Node to search in.\n * @param recurse Whether to recurse into child nodes.\n * @returns The text content of the element.\n */\nfunction fetch(tagName, where, recurse = false) {\n return textContent(getElementsByTagName(tagName, where, recurse, 1)).trim();\n}\n/**\n * Adds a property to an object if it has a value.\n *\n * @param obj Object to be extended\n * @param prop Property name\n * @param tagName Tag name that contains the conditionally added property\n * @param where Element to search for the property\n * @param recurse Whether to recurse into child nodes.\n */\nfunction addConditionally(obj, prop, tagName, where, recurse = false) {\n const val = fetch(tagName, where, recurse);\n if (val)\n obj[prop] = val;\n}\n/**\n * Checks if an element is a feed root node.\n *\n * @param value The name of the element to check.\n * @returns Whether an element is a feed root node.\n */\nfunction isValidFeed(value) {\n return value === \"rss\" || value === \"feed\" || value === \"rdf:RDF\";\n}\n//# sourceMappingURL=feeds.js.map","import { Parser } from \"./Parser.js\";\nexport { Parser } from \"./Parser.js\";\nimport { DomHandler, } from \"domhandler\";\nexport { DomHandler, \n// Old name for DomHandler\nDomHandler as DefaultHandler, } from \"domhandler\";\n// Helper methods\n/**\n * Parses the data, returns the resulting document.\n *\n * @param data The data that should be parsed.\n * @param options Optional options for the parser and DOM handler.\n */\nexport function parseDocument(data, options) {\n const handler = new DomHandler(undefined, options);\n new Parser(handler, options).end(data);\n return handler.root;\n}\n/**\n * Parses data, returns an array of the root nodes.\n *\n * Note that the root nodes still have a `Document` node as their parent.\n * Use `parseDocument` to get the `Document` node instead.\n *\n * @param data The data that should be parsed.\n * @param options Optional options for the parser and DOM handler.\n * @deprecated Use `parseDocument` instead.\n */\nexport function parseDOM(data, options) {\n return parseDocument(data, options).children;\n}\n/**\n * Creates a parser instance, with an attached DOM handler.\n *\n * @param callback A callback that will be called once parsing has been completed, with the resulting document.\n * @param options Optional options for the parser and DOM handler.\n * @param elementCallback An optional callback that will be called every time a tag has been completed inside of the DOM.\n */\nexport function createDocumentStream(callback, options, elementCallback) {\n const handler = new DomHandler((error) => callback(error, handler.root), options, elementCallback);\n return new Parser(handler, options);\n}\n/**\n * Creates a parser instance, with an attached DOM handler.\n *\n * @param callback A callback that will be called once parsing has been completed, with an array of root nodes.\n * @param options Optional options for the parser and DOM handler.\n * @param elementCallback An optional callback that will be called every time a tag has been completed inside of the DOM.\n * @deprecated Use `createDocumentStream` instead.\n */\nexport function createDomStream(callback, options, elementCallback) {\n const handler = new DomHandler(callback, options, elementCallback);\n return new Parser(handler, options);\n}\nexport { default as Tokenizer, QuoteType, } from \"./Tokenizer.js\";\n/*\n * All of the following exports exist for backwards-compatibility.\n * They should probably be removed eventually.\n */\nexport * as ElementType from \"domelementtype\";\nimport { getFeed } from \"domutils\";\nexport { getFeed } from \"domutils\";\nconst parseFeedDefaultOptions = { xmlMode: true };\n/**\n * Parse a feed.\n *\n * @param feed The feed that should be parsed, as a string.\n * @param options Optionally, options for parsing. When using this, you should set `xmlMode` to `true`.\n */\nexport function parseFeed(feed, options = parseFeedDefaultOptions) {\n return getFeed(parseDOM(feed, options));\n}\nexport * as DomUtils from \"domutils\";\n//# sourceMappingURL=index.js.map","// Internal\nexport const NODE_END = -1;\n\n// Node\nexport const ELEMENT_NODE = 1;\nexport const ATTRIBUTE_NODE = 2;\nexport const TEXT_NODE = 3;\nexport const CDATA_SECTION_NODE = 4;\nexport const COMMENT_NODE = 8;\nexport const DOCUMENT_NODE = 9;\nexport const DOCUMENT_TYPE_NODE = 10;\nexport const DOCUMENT_FRAGMENT_NODE = 11;\n\n// Elements\nexport const BLOCK_ELEMENTS = new Set(['ARTICLE', 'ASIDE', 'BLOCKQUOTE', 'BODY', 'BR', 'BUTTON', 'CANVAS', 'CAPTION', 'COL', 'COLGROUP', 'DD', 'DIV', 'DL', 'DT', 'EMBED', 'FIELDSET', 'FIGCAPTION', 'FIGURE', 'FOOTER', 'FORM', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'LI', 'UL', 'OL', 'P']);\n\n// TreeWalker\nexport const SHOW_ALL = -1;\nexport const SHOW_ELEMENT = 1;\nexport const SHOW_TEXT = 4;\nexport const SHOW_CDATA_SECTION = 8;\nexport const SHOW_COMMENT = 128;\n\n// Document position\nexport const DOCUMENT_POSITION_DISCONNECTED = 0x01;\nexport const DOCUMENT_POSITION_PRECEDING = 0x02;\nexport const DOCUMENT_POSITION_FOLLOWING = 0x04;\nexport const DOCUMENT_POSITION_CONTAINS = 0x08;\nexport const DOCUMENT_POSITION_CONTAINED_BY = 0x10;\nexport const DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20;\n\n// SVG\nexport const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n","const {\n assign,\n create,\n defineProperties,\n entries,\n getOwnPropertyDescriptors,\n keys,\n setPrototypeOf\n} = Object;\n\nexport {\n assign,\n create,\n defineProperties,\n entries,\n getOwnPropertyDescriptors,\n keys,\n setPrototypeOf\n};\n","import {ELEMENT_NODE} from './constants.js';\nimport {END, MIME, NEXT, PREV} from './symbols.js';\n\nconst $String = String;\nexport {$String as String};\n\nexport const getEnd = node => node.nodeType === ELEMENT_NODE ? node[END] : node;\n\nexport const ignoreCase = ({ownerDocument}) => ownerDocument[MIME].ignoreCase;\n\nexport const knownAdjacent = (prev, next) => {\n prev[NEXT] = next;\n next[PREV] = prev;\n};\n\nexport const knownBoundaries = (prev, current, next) => {\n knownAdjacent(prev, current);\n knownAdjacent(getEnd(current), next);\n};\n\nexport const knownSegment = (prev, start, end, next) => {\n knownAdjacent(prev, start);\n knownAdjacent(getEnd(end), next);\n};\n\nexport const knownSiblings = (prev, current, next) => {\n knownAdjacent(prev, current);\n knownAdjacent(current, next);\n};\n\nexport const localCase = ({localName, ownerDocument}) => {\n return ownerDocument[MIME].ignoreCase ? localName.toUpperCase() : localName;\n};\n\nexport const setAdjacent = (prev, next) => {\n if (prev)\n prev[NEXT] = next;\n if (next)\n next[PREV] = prev;\n};\n","export const shadowRoots = new WeakMap;\n","import {ELEMENT_NODE} from '../shared/constants.js';\nimport {END, NEXT, UPGRADE} from '../shared/symbols.js';\nimport {entries, setPrototypeOf} from '../shared/object.js';\nimport {shadowRoots} from '../shared/shadow-roots.js';\n\nlet reactive = false;\n\nexport const Classes = new WeakMap;\n\nexport const customElements = new WeakMap;\n\nexport const attributeChangedCallback = (element, attributeName, oldValue, newValue) => {\n if (\n reactive &&\n customElements.has(element) &&\n element.attributeChangedCallback &&\n element.constructor.observedAttributes.includes(attributeName)\n ) {\n element.attributeChangedCallback(attributeName, oldValue, newValue);\n }\n};\n\nconst createTrigger = (method, isConnected) => element => {\n if (customElements.has(element)) {\n const info = customElements.get(element);\n if (info.connected !== isConnected && element.isConnected === isConnected) {\n info.connected = isConnected;\n if (method in element)\n element[method]();\n }\n }\n};\n\nconst triggerConnected = createTrigger('connectedCallback', true);\nexport const connectedCallback = element => {\n if (reactive) {\n triggerConnected(element);\n if (shadowRoots.has(element))\n element = shadowRoots.get(element).shadowRoot;\n let {[NEXT]: next, [END]: end} = element;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE)\n triggerConnected(next);\n next = next[NEXT];\n }\n }\n};\n\nconst triggerDisconnected = createTrigger('disconnectedCallback', false);\nexport const disconnectedCallback = element => {\n if (reactive) {\n triggerDisconnected(element);\n if (shadowRoots.has(element))\n element = shadowRoots.get(element).shadowRoot;\n let {[NEXT]: next, [END]: end} = element;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE)\n triggerDisconnected(next);\n next = next[NEXT];\n }\n }\n};\n\n/**\n * @implements globalThis.CustomElementRegistry\n */\nexport class CustomElementRegistry {\n\n /**\n * @param {Document} ownerDocument\n */\n constructor(ownerDocument) {\n /**\n * @private\n */\n this.ownerDocument = ownerDocument;\n\n /**\n * @private\n */\n this.registry = new Map;\n\n /**\n * @private\n */\n this.waiting = new Map;\n\n /**\n * @private\n */\n this.active = false;\n }\n\n /**\n * @param {string} localName the custom element definition name\n * @param {Function} Class the custom element **Class** definition\n * @param {object?} options the optional object with an `extends` property\n */\n define(localName, Class, options = {}) {\n const {ownerDocument, registry, waiting} = this;\n\n if (registry.has(localName))\n throw new Error('unable to redefine ' + localName);\n\n if (Classes.has(Class))\n throw new Error('unable to redefine the same class: ' + Class);\n\n this.active = (reactive = true);\n\n const {extends: extend} = options;\n\n Classes.set(Class, {\n ownerDocument,\n options: {is: extend ? localName : ''},\n localName: extend || localName\n });\n\n const check = extend ?\n element => {\n return element.localName === extend &&\n element.getAttribute('is') === localName;\n } :\n element => element.localName === localName;\n registry.set(localName, {Class, check});\n if (waiting.has(localName)) {\n for (const resolve of waiting.get(localName))\n resolve(Class);\n waiting.delete(localName);\n }\n ownerDocument.querySelectorAll(\n extend ? `${extend}[is=\"${localName}\"]` : localName\n ).forEach(this.upgrade, this);\n }\n\n /**\n * @param {Element} element\n */\n upgrade(element) {\n if (customElements.has(element))\n return;\n const {ownerDocument, registry} = this;\n const ce = element.getAttribute('is') || element.localName;\n if (registry.has(ce)) {\n const {Class, check} = registry.get(ce);\n if (check(element)) {\n const {attributes, isConnected} = element;\n for (const attr of attributes)\n element.removeAttributeNode(attr);\n\n const values = entries(element);\n for (const [key] of values)\n delete element[key];\n\n setPrototypeOf(element, Class.prototype);\n ownerDocument[UPGRADE] = {element, values};\n new Class(ownerDocument, ce);\n\n customElements.set(element, {connected: isConnected});\n\n for (const attr of attributes)\n element.setAttributeNode(attr);\n\n if (isConnected && element.connectedCallback)\n element.connectedCallback();\n }\n }\n }\n\n /**\n * @param {string} localName the custom element definition name\n */\n whenDefined(localName) {\n const {registry, waiting} = this;\n return new Promise(resolve => {\n if (registry.has(localName))\n resolve(registry.get(localName).Class);\n else {\n if (!waiting.has(localName))\n waiting.set(localName, []);\n waiting.get(localName).push(resolve);\n }\n });\n }\n\n /**\n * @param {string} localName the custom element definition name\n * @returns {Function?} the custom element **Class**, if any\n */\n get(localName) {\n const info = this.registry.get(localName);\n return info && info.Class;\n }\n\n /**\n * @param {Function} Class **Class** of custom element\n * @returns {string?} found tag name or null\n */\n getName(Class) {\n if (Classes.has(Class)) {\n const { localName } = Classes.get(Class);\n return localName;\n }\n return null;\n }\n}\n","import * as HTMLParser2 from 'htmlparser2';\n\nimport {ELEMENT_NODE, SVG_NAMESPACE} from './constants.js';\nimport {CUSTOM_ELEMENTS, PREV, END, VALUE} from './symbols.js';\nimport {keys} from './object.js';\n\nimport {knownBoundaries, knownSiblings} from './utils.js';\nimport {attributeChangedCallback, connectedCallback} from '../interface/custom-element-registry.js';\n\nconst {Parser} = HTMLParser2;\n\n// import {Mime} from './mime.js';\n// const VOID_SOURCE = Mime['text/html'].voidElements.source.slice(4, -2);\n// const VOID_ELEMENTS = new RegExp(`<(${VOID_SOURCE})([^>]*?)>`, 'gi');\n// const VOID_SANITIZER = (_, $1, $2) => `<${$1}${$2}${/\\/$/.test($2) ? '' : ' /'}>`;\n// const voidSanitizer = html => html.replace(VOID_ELEMENTS, VOID_SANITIZER);\n\nlet notParsing = true;\n\nconst append = (self, node, active) => {\n const end = self[END];\n node.parentNode = self;\n knownBoundaries(end[PREV], node, end);\n if (active && node.nodeType === ELEMENT_NODE)\n connectedCallback(node);\n return node;\n};\n\nconst attribute = (element, end, attribute, value, active) => {\n attribute[VALUE] = value;\n attribute.ownerElement = element;\n knownSiblings(end[PREV], attribute, end);\n if (attribute.name === 'class')\n element.className = value;\n if (active)\n attributeChangedCallback(element, attribute.name, null, value);\n};\n\nexport const isNotParsing = () => notParsing;\n\nexport const parseFromString = (document, isHTML, markupLanguage) => {\n const {active, registry} = document[CUSTOM_ELEMENTS];\n\n let node = document;\n let ownerSVGElement = null;\n let parsingCData = false;\n\n notParsing = false;\n\n const content = new Parser({\n // <!DOCTYPE ...>\n onprocessinginstruction(name, data) {\n if (name.toLowerCase() === '!doctype')\n document.doctype = data.slice(name.length).trim();\n },\n\n // <tagName>\n onopentag(name, attributes) {\n let create = true;\n if (isHTML) {\n if (ownerSVGElement) {\n node = append(node, document.createElementNS(SVG_NAMESPACE, name), active);\n node.ownerSVGElement = ownerSVGElement;\n create = false;\n }\n else if (name === 'svg' || name === 'SVG') {\n ownerSVGElement = document.createElementNS(SVG_NAMESPACE, name);\n node = append(node, ownerSVGElement, active);\n create = false;\n }\n else if (active) {\n const ce = name.includes('-') ? name : (attributes.is || '');\n if (ce && registry.has(ce)) {\n const {Class} = registry.get(ce);\n node = append(node, new Class, active);\n delete attributes.is;\n create = false;\n }\n }\n }\n\n if (create)\n node = append(node, document.createElement(name), false);\n\n let end = node[END];\n for (const name of keys(attributes))\n attribute(node, end, document.createAttribute(name), attributes[name], active);\n },\n\n // #text, #comment\n oncomment(data) { append(node, document.createComment(data), active); },\n ontext(text) {\n if (parsingCData) {\n append(node, document.createCDATASection(text), active);\n } else {\n append(node, document.createTextNode(text), active);\n }\n },\n\n // #cdata\n oncdatastart() { parsingCData = true; },\n oncdataend() { parsingCData = false; },\n\n // </tagName>\n onclosetag() {\n if (isHTML && node === ownerSVGElement)\n ownerSVGElement = null;\n node = node.parentNode;\n }\n }, {\n lowerCaseAttributeNames: false,\n decodeEntities: true,\n xmlMode: !isHTML\n });\n\n content.write(markupLanguage);\n content.end();\n\n notParsing = true;\n\n return document;\n};\n","export const htmlClasses = new Map;\n\nexport const registerHTMLClass = (names, Class) => {\n for (const name of [].concat(names)) {\n htmlClasses.set(name, Class);\n htmlClasses.set(name.toUpperCase(), Class);\n }\n};\n","export default {}","/* c8 ignore start */\ntry {\n const {performance} = require('perf_hooks');\n exports.performance = performance;\n}\ncatch (fallback) {\n exports.performance = {now() { return +new Date; }};\n}\n/* c8 ignore stop */\n","import {\n NODE_END,\n ATTRIBUTE_NODE,\n CDATA_SECTION_NODE,\n COMMENT_NODE,\n DOCUMENT_TYPE_NODE,\n ELEMENT_NODE,\n TEXT_NODE\n} from './constants.js';\n\nimport {END, NEXT, VALUE} from './symbols.js';\n\nimport {getEnd} from './utils.js';\n\nconst loopSegment = ({[NEXT]: next, [END]: end}, json) => {\n while (next !== end) {\n switch (next.nodeType) {\n case ATTRIBUTE_NODE:\n attrAsJSON(next, json);\n break;\n case TEXT_NODE:\n case COMMENT_NODE:\n case CDATA_SECTION_NODE:\n characterDataAsJSON(next, json);\n break;\n case ELEMENT_NODE:\n elementAsJSON(next, json);\n next = getEnd(next);\n break;\n case DOCUMENT_TYPE_NODE:\n documentTypeAsJSON(next, json);\n break;\n }\n next = next[NEXT];\n }\n const last = json.length - 1;\n const value = json[last];\n if (typeof value === 'number' && value < 0)\n json[last] += NODE_END;\n else\n json.push(NODE_END);\n};\n\nexport const attrAsJSON = (attr, json) => {\n json.push(ATTRIBUTE_NODE, attr.name);\n const value = attr[VALUE].trim();\n if (value)\n json.push(value);\n};\n\nexport const characterDataAsJSON = (node, json) => {\n const value = node[VALUE];\n if (value.trim())\n json.push(node.nodeType, value);\n};\n\nexport const nonElementAsJSON = (node, json) => {\n json.push(node.nodeType);\n loopSegment(node, json);\n};\n\nexport const documentTypeAsJSON = ({name, publicId, systemId}, json) => {\n json.push(DOCUMENT_TYPE_NODE, name);\n if (publicId)\n json.push(publicId);\n if (systemId)\n json.push(systemId);\n};\n\nexport const elementAsJSON = (element, json) => {\n json.push(ELEMENT_NODE, element.localName);\n loopSegment(element, json);\n};\n","import {MUTATION_OBSERVER} from '../shared/symbols.js';\n\nconst createRecord =\n (type, target, addedNodes, removedNodes, attributeName, oldValue) =>\n ({type, target, addedNodes, removedNodes, attributeName, oldValue});\n\nconst queueAttribute = (\n observer, target, attributeName, attributeFilter, attributeOldValue, oldValue\n) => {\n if ((!attributeFilter || attributeFilter.includes(attributeName))) {\n const {callback, records, scheduled} = observer;\n records.push(createRecord(\n 'attributes', target,\n [], [],\n attributeName, attributeOldValue ? oldValue : void 0\n ));\n if (!scheduled) {\n observer.scheduled = true;\n Promise.resolve().then(() => {\n observer.scheduled = false;\n callback(records.splice(0), observer);\n });\n }\n }\n};\n\nexport const attributeChangedCallback = (element, attributeName, oldValue) => {\n const {ownerDocument} = element;\n const {active, observers} = ownerDocument[MUTATION_OBSERVER];\n if (active) {\n for (const observer of observers) {\n for (const [\n target,\n {\n childList,\n subtree,\n attributes,\n attributeFilter,\n attributeOldValue\n }\n ] of observer.nodes) {\n if (childList) {\n if (\n (subtree && (target === ownerDocument || target.contains(element))) ||\n (!subtree && target.children.includes(element))\n ) {\n queueAttribute(\n observer, element,\n attributeName, attributeFilter, attributeOldValue, oldValue\n );\n break;\n }\n }\n else if (\n attributes &&\n target === element\n ) {\n queueAttribute(\n observer, element,\n attributeName, attributeFilter, attributeOldValue, oldValue\n );\n break;\n }\n }\n }\n }\n};\n\nexport const moCallback = (element, parentNode) => {\n const {ownerDocument} = element;\n const {active, observers} = ownerDocument[MUTATION_OBSERVER];\n if (active) {\n for (const observer of observers) {\n for (const [target, {subtree, childList, characterData}] of observer.nodes) {\n if (childList) {\n if (\n (parentNode && (target === parentNode || /* c8 ignore next */(subtree && target.contains(parentNode)))) ||\n (!parentNode && ((subtree && (target === ownerDocument || /* c8 ignore next */target.contains(element))) ||\n (!subtree && target[characterData ? 'childNodes' : 'children'].includes(element))))\n ) {\n const {callback, records, scheduled} = observer;\n records.push(createRecord(\n 'childList', target,\n parentNode ? [] : [element], parentNode ? [element] : []\n ));\n if (!scheduled) {\n observer.scheduled = true;\n Promise.resolve().then(() => {\n observer.scheduled = false;\n callback(records.splice(0), observer);\n });\n }\n break;\n }\n }\n }\n }\n }\n};\n\nexport class MutationObserverClass {\n constructor(ownerDocument) {\n const observers = new Set;\n this.observers = observers;\n this.active = false;\n\n /**\n * @implements globalThis.MutationObserver\n */\n this.class = class MutationObserver {\n\n constructor(callback) {\n /**\n * @private\n */\n this.callback = callback;\n\n /**\n * @private\n */\n this.nodes = new Map;\n\n /**\n * @private\n */\n this.records = [];\n\n /**\n * @private\n */\n this.scheduled = false;\n }\n\n disconnect() {\n this.records.splice(0);\n this.nodes.clear();\n observers.delete(this);\n ownerDocument[MUTATION_OBSERVER].active = !!observers.size;\n }\n\n /**\n * @param {Element} target\n * @param {MutationObserverInit} options\n */\n observe(target, options = {\n subtree: false,\n childList: false,\n attributes: false,\n attributeFilter: null,\n attributeOldValue: false,\n characterData: false,\n // TODO: not implemented yet\n // characterDataOldValue: false\n }) {\n if (('attributeOldValue' in options) || ('attributeFilter' in options))\n options.attributes = true;\n // if ('characterDataOldValue' in options)\n // options.characterData = true;\n options.childList = !!options.childList;\n options.subtree = !!options.subtree;\n this.nodes.set(target, options);\n observers.add(this);\n ownerDocument[MUTATION_OBSERVER].active = true;\n }\n\n /**\n * @returns {MutationRecord[]}\n */\n takeRecords() { return this.records.splice(0); }\n }\n }\n}\n","import {CLASS_LIST, NEXT, PREV, VALUE} from './symbols.js';\n\nimport {knownAdjacent, knownSiblings} from './utils.js';\n\nimport {attributeChangedCallback as ceAttributes} from '../interface/custom-element-registry.js';\nimport {attributeChangedCallback as moAttributes} from '../interface/mutation-observer.js';\n\nexport const emptyAttributes = new Set([\n 'allowfullscreen',\n 'allowpaymentrequest',\n 'async',\n 'autofocus',\n 'autoplay',\n 'checked',\n 'class',\n 'contenteditable',\n 'controls',\n 'default',\n 'defer',\n 'disabled',\n 'draggable',\n 'formnovalidate',\n 'hidden',\n 'id',\n 'ismap',\n 'itemscope',\n 'loop',\n 'multiple',\n 'muted',\n 'nomodule',\n 'novalidate',\n 'open',\n 'playsinline',\n 'readonly',\n 'required',\n 'reversed',\n 'selected',\n 'style',\n 'truespeed'\n]);\n\nexport const setAttribute = (element, attribute) => {\n const {[VALUE]: value, name} = attribute;\n attribute.ownerElement = element;\n knownSiblings(element, attribute, element[NEXT]);\n if (name === 'class')\n element.className = value;\n moAttributes(element, name, null);\n ceAttributes(element, name, null, value);\n};\n\nexport const removeAttribute = (element, attribute) => {\n const {[VALUE]: value, name} = attribute;\n knownAdjacent(attribute[PREV], attribute[NEXT]);\n attribute.ownerElement = attribute[PREV] = attribute[NEXT] = null;\n if (name === 'class')\n element[CLASS_LIST] = null;\n moAttributes(element, name, value);\n ceAttributes(element, name, value, null);\n};\n\nexport const booleanAttribute = {\n get(element, name) {\n return element.hasAttribute(name);\n },\n set(element, name, value) {\n if (value)\n element.setAttribute(name, '');\n else\n element.removeAttribute(name);\n }\n};\n\nexport const numericAttribute = {\n get(element, name) {\n return parseFloat(element.getAttribute(name) || 0);\n },\n set(element, name, value) {\n element.setAttribute(name, value);\n }\n};\n\nexport const stringAttribute = {\n get(element, name) {\n return element.getAttribute(name) || '';\n },\n set(element, name, value) {\n element.setAttribute(name, value);\n }\n};\n\n/* oddly enough, this apparently is not a thing\nexport const nullableAttribute = {\n get(element, name) {\n return element.getAttribute(name);\n },\n set(element, name, value) {\n if (value === null)\n element.removeAttribute(name);\n else\n element.setAttribute(name, value);\n }\n};\n*/\n","// https://dom.spec.whatwg.org/#interface-eventtarget\n\nconst wm = new WeakMap();\n\nfunction dispatch(event, listener) {\n if (typeof listener === 'function')\n listener.call(event.target, event);\n else\n listener.handleEvent(event);\n return event._stopImmediatePropagationFlag;\n}\n\nfunction invokeListeners({currentTarget, target}) {\n const map = wm.get(currentTarget);\n if (map && map.has(this.type)) {\n const listeners = map.get(this.type);\n if (currentTarget === target) {\n this.eventPhase = this.AT_TARGET;\n } else {\n this.eventPhase = this.BUBBLING_PHASE;\n }\n\n this.currentTarget = currentTarget;\n this.target = target;\n for (const [listener, options] of listeners) {\n if (options && options.once)\n listeners.delete(listener);\n if (dispatch(this, listener))\n break;\n }\n delete this.currentTarget;\n delete this.target;\n return this.cancelBubble;\n }\n}\n\n\n/**\n * @implements globalThis.EventTarget\n */\nclass DOMEventTarget {\n\n constructor() {\n wm.set(this, new Map);\n }\n\n /**\n * @protected\n */\n _getParent() {\n return null;\n }\n\n addEventListener(type, listener, options) {\n const map = wm.get(this);\n if (!map.has(type)) \n map.set(type, new Map);\n map.get(type).set(listener, options);\n }\n\n removeEventListener(type, listener) {\n const map = wm.get(this);\n if (map.has(type)) {\n const listeners = map.get(type);\n if (listeners.delete(listener) && !listeners.size)\n map.delete(type);\n }\n }\n\n dispatchEvent(event) {\n let node = this;\n event.eventPhase = event.CAPTURING_PHASE;\n\n // intentionally simplified, specs imply way more code: https://dom.spec.whatwg.org/#event-path\n while (node) {\n if (node.dispatchEvent)\n event._path.push({currentTarget: node, target: this});\n node = event.bubbles && node._getParent && node._getParent();\n }\n event._path.some(invokeListeners, event);\n event._path = [];\n event.eventPhase = event.NONE;\n return !event.defaultPrevented;\n }\n\n}\n\nexport {DOMEventTarget as EventTarget};\n","// https://dom.spec.whatwg.org/#interface-nodelist\n\n/**\n * @implements globalThis.NodeList\n */\nexport class NodeList extends Array {\n item(i) { return i < this.length ? this[i] : null; }\n}\n","// https://dom.spec.whatwg.org/#node\n\nimport {\n ELEMENT_NODE,\n ATTRIBUTE_NODE,\n TEXT_NODE,\n CDATA_SECTION_NODE,\n COMMENT_NODE,\n DOCUMENT_NODE,\n DOCUMENT_FRAGMENT_NODE,\n DOCUMENT_TYPE_NODE,\n DOCUMENT_POSITION_DISCONNECTED,\n DOCUMENT_POSITION_PRECEDING,\n DOCUMENT_POSITION_FOLLOWING,\n DOCUMENT_POSITION_CONTAINS,\n DOCUMENT_POSITION_CONTAINED_BY,\n DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC\n} from '../shared/constants.js';\n\nimport {NEXT, PREV} from '../shared/symbols.js';\n\nimport {EventTarget} from './event-target.js';\n\nimport {NodeList} from './node-list.js';\n\nconst getParentNodeCount = ({parentNode}) => {\n let count = 0;\n while (parentNode) {\n count++;\n parentNode = parentNode.parentNode;\n }\n return count;\n};\n\n/**\n * @implements globalThis.Node\n */\nexport class Node extends EventTarget {\n\n static get ELEMENT_NODE() { return ELEMENT_NODE; }\n static get ATTRIBUTE_NODE() { return ATTRIBUTE_NODE; }\n static get TEXT_NODE() { return TEXT_NODE; }\n static get CDATA_SECTION_NODE() { return CDATA_SECTION_NODE; }\n static get COMMENT_NODE() { return COMMENT_NODE; }\n static get DOCUMENT_NODE() { return DOCUMENT_NODE; }\n static get DOCUMENT_FRAGMENT_NODE() { return DOCUMENT_FRAGMENT_NODE; }\n static get DOCUMENT_TYPE_NODE() { return DOCUMENT_TYPE_NODE; }\n\n constructor(ownerDocument, localName, nodeType) {\n super();\n this.ownerDocument = ownerDocument;\n this.localName = localName;\n this.nodeType = nodeType;\n this.parentNode = null;\n this[NEXT] = null;\n this[PREV] = null;\n }\n\n get ELEMENT_NODE() { return ELEMENT_NODE; }\n get ATTRIBUTE_NODE() { return ATTRIBUTE_NODE; }\n get TEXT_NODE() { return TEXT_NODE; }\n get CDATA_SECTION_NODE() { return CDATA_SECTION_NODE; }\n get COMMENT_NODE() { return COMMENT_NODE; }\n get DOCUMENT_NODE() { return DOCUMENT_NODE; }\n get DOCUMENT_FRAGMENT_NODE() { return DOCUMENT_FRAGMENT_NODE; }\n get DOCUMENT_TYPE_NODE() { return DOCUMENT_TYPE_NODE; }\n\n get baseURI() {\n const ownerDocument = this.nodeType === DOCUMENT_NODE ?\n this : this.ownerDocument;\n if (ownerDocument) {\n const base = ownerDocument.querySelector('base');\n if (base)\n return base.getAttribute('href');\n\n const {location} = ownerDocument.defaultView;\n if (location)\n return location.href;\n }\n\n return null;\n }\n\n /* c8 ignore start */\n // mixin: node\n get isConnected() { return false; }\n get nodeName() { return this.localName; }\n get parentElement() { return null; }\n get previousSibling() { return null; }\n get previousElementSibling() { return null; }\n get nextSibling() { return null; }\n get nextElementSibling() { return null; }\n get childNodes() { return new NodeList; }\n get firstChild() { return null; }\n get lastChild() { return null; }\n\n // default values\n get nodeValue() { return null; }\n set nodeValue(value) {}\n get textContent() { return null; }\n set textContent(value) {}\n normalize() {}\n cloneNode() { return null; }\n contains() { return false; }\n /**\n * Inserts a node before a reference node as a child of this parent node.\n * @param {Node} newNode The node to be inserted.\n * @param {Node} referenceNode The node before which newNode is inserted. If this is null, then newNode is inserted at the end of node's child nodes.\n * @returns The added child\n */\n // eslint-disable-next-line no-unused-vars\n insertBefore(newNode, referenceNode) { return newNode }\n /**\n * Adds a node to the end of the list of children of this node.\n * @param {Node} child The node to append to the given parent node.\n * @returns The appended child.\n */\n appendChild(child) { return child }\n /**\n * Replaces a child node within this node\n * @param {Node} newChild The new node to replace oldChild.\n * @param {Node} oldChild The child to be replaced.\n * @returns The replaced Node. This is the same node as oldChild.\n */\n replaceChild(newChild, oldChild) { return oldChild }\n /**\n * Removes a child node from the DOM.\n * @param {Node} child A Node that is the child node to be removed from the DOM.\n * @returns The removed node.\n */\n removeChild(child) { return child }\n toString() { return ''; }\n /* c8 ignore stop */\n\n hasChildNodes() { return !!this.lastChild; }\n isSameNode(node) { return this === node; }\n\n // TODO: attributes?\n compareDocumentPosition(target) {\n let result = 0;\n if (this !== target) {\n let self = getParentNodeCount(this);\n let other = getParentNodeCount(target);\n if (self < other) {\n result += DOCUMENT_POSITION_FOLLOWING;\n if (this.contains(target))\n result += DOCUMENT_POSITION_CONTAINED_BY;\n }\n else if (other < self) {\n result += DOCUMENT_POSITION_PRECEDING;\n if (target.contains(this))\n result += DOCUMENT_POSITION_CONTAINS;\n }\n else if (self && other) {\n const {childNodes} = this.parentNode;\n if (childNodes.indexOf(this) < childNodes.indexOf(target))\n result += DOCUMENT_POSITION_FOLLOWING;\n else\n result += DOCUMENT_POSITION_PRECEDING;\n }\n if (!self || !other) {\n result += DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC;\n result += DOCUMENT_POSITION_DISCONNECTED;\n }\n }\n return result;\n }\n\n isEqualNode(node) {\n if (this === node)\n return true;\n if (this.nodeType === node.nodeType) {\n switch (this.nodeType) {\n case DOCUMENT_NODE:\n case DOCUMENT_FRAGMENT_NODE: {\n const aNodes = this.childNodes;\n const bNodes = node.childNodes;\n return aNodes.length === bNodes.length && aNodes.every((node, i) => node.isEqualNode(bNodes[i]));\n }\n }\n return this.toString() === node.toString();\n }\n return false;\n }\n\n /**\n * @protected\n */\n _getParent() {\n return this.parentNode;\n }\n\n /**\n * Calling it on an element inside a standard web page will return an HTMLDocument object representing the entire page (or <iframe>).\n * Calling it on an element inside a shadow DOM will return the associated ShadowRoot.\n * @return {ShadowRoot | HTMLDocument}\n */\n getRootNode() {\n let root = this;\n while (root.parentNode)\n root = root.parentNode;\n return root;\n }\n}\n","const {replace} = '';\n\n// escape\nconst ca = /[<>&\\xA0]/g;\n\nconst esca = {\n '\\xA0': ' ',\n '&': '&',\n '<': '<',\n '>': '>'\n};\n\nconst pe = m => esca[m];\n\n/**\n * Safely escape HTML entities such as `&`, `<`, `>` only.\n * @param {string} es the input to safely escape\n * @returns {string} the escaped input, and it **throws** an error if\n * the input type is unexpected, except for boolean and numbers,\n * converted as string.\n */\nexport const escape = es => replace.call(es, ca, pe);\n","import {ATTRIBUTE_NODE} from '../shared/constants.js';\nimport {CHANGED, VALUE} from '../shared/symbols.js';\nimport {String, ignoreCase} from '../shared/utils.js';\nimport {attrAsJSON} from '../shared/jsdon.js';\nimport {emptyAttributes} from '../shared/attributes.js';\n\nimport {attributeChangedCallback as moAttributes} from './mutation-observer.js';\nimport {attributeChangedCallback as ceAttributes} from './custom-element-registry.js';\n\nimport {Node} from './node.js';\nimport {escape} from '../shared/text-escaper.js';\n\nconst QUOTE = /\"/g;\n\n/**\n * @implements globalThis.Attr\n */\nexport class Attr extends Node {\n constructor(ownerDocument, name, value = '') {\n super(ownerDocument, name, ATTRIBUTE_NODE);\n this.ownerElement = null;\n this.name = String(name);\n this[VALUE] = String(value);\n this[CHANGED] = false;\n }\n\n get value() { return this[VALUE]; }\n set value(newValue) {\n const {[VALUE]: oldValue, name, ownerElement} = this;\n this[VALUE] = String(newValue);\n this[CHANGED] = true;\n if (ownerElement) {\n moAttributes(ownerElement, name, oldValue);\n ceAttributes(ownerElement, name, oldValue, this[VALUE]);\n }\n }\n\n cloneNode() {\n const {ownerDocument, name, [VALUE]: value} = this;\n return new Attr(ownerDocument, name, value);\n }\n\n toString() {\n const {name, [VALUE]: value} = this;\n if (emptyAttributes.has(name) && !value) {\n return ignoreCase(this) ? name : `${name}=\"\"`;\n }\n const escapedValue = ignoreCase(this) ? value.replace(QUOTE, '"') : escape(value);\n return `${name}=\"${escapedValue}\"`;\n }\n\n toJSON() {\n const json = [];\n attrAsJSON(this, json);\n return json;\n }\n}\n","import {\n CDATA_SECTION_NODE,\n COMMENT_NODE,\n DOCUMENT_NODE,\n DOCUMENT_FRAGMENT_NODE,\n TEXT_NODE,\n NODE_END\n} from './constants.js';\n\nimport {START, NEXT, PREV} from './symbols.js';\nimport {getEnd} from './utils.js';\n\nexport const isConnected = ({ownerDocument, parentNode}) => {\n while (parentNode) {\n if (parentNode === ownerDocument)\n return true;\n parentNode = parentNode.parentNode || parentNode.host;\n }\n return false;\n};\n\nexport const parentElement = ({parentNode}) => {\n if (parentNode) {\n switch (parentNode.nodeType) {\n case DOCUMENT_NODE:\n case DOCUMENT_FRAGMENT_NODE:\n return null;\n }\n }\n return parentNode;\n};\n\nexport const previousSibling = ({[PREV]: prev}) => {\n switch (prev ? prev.nodeType : 0) {\n case NODE_END:\n return prev[START];\n case TEXT_NODE:\n case COMMENT_NODE:\n case CDATA_SECTION_NODE:\n return prev;\n }\n return null;\n};\n\nexport const nextSibling = node => {\n const next = getEnd(node)[NEXT];\n return next && (next.nodeType === NODE_END ? null : next);\n};\n","// https://dom.spec.whatwg.org/#nondocumenttypechildnode\n// CharacterData, Element\n\nimport {ELEMENT_NODE} from '../shared/constants.js';\n\nimport {nextSibling, previousSibling} from '../shared/node.js';\n\nexport const nextElementSibling = node => {\n let next = nextSibling(node);\n while (next && next.nodeType !== ELEMENT_NODE)\n next = nextSibling(next);\n return next;\n};\n\nexport const previousElementSibling = node => {\n let prev = previousSibling(node);\n while (prev && prev.nodeType !== ELEMENT_NODE)\n prev = previousSibling(prev);\n return prev;\n};\n","// https://dom.spec.whatwg.org/#childnode\n// CharacterData, DocumentType, Element\n\nimport {ELEMENT_NODE} from '../shared/constants.js';\nimport {NEXT, PREV} from '../shared/symbols.js';\n\nimport {getEnd, setAdjacent} from '../shared/utils.js';\n\nimport {moCallback} from '../interface/mutation-observer.js';\nimport {disconnectedCallback} from '../interface/custom-element-registry.js';\n\nconst asFragment = (ownerDocument, nodes) => {\n const fragment = ownerDocument.createDocumentFragment();\n fragment.append(...nodes);\n return fragment;\n};\n\nexport const before = (node, nodes) => {\n const {ownerDocument, parentNode} = node;\n if (parentNode)\n parentNode.insertBefore(\n asFragment(ownerDocument, nodes),\n node\n );\n};\n\nexport const after = (node, nodes) => {\n const {ownerDocument, parentNode} = node;\n if (parentNode)\n parentNode.insertBefore(\n asFragment(ownerDocument, nodes),\n getEnd(node)[NEXT]\n );\n};\n\nexport const replaceWith = (node, nodes) => {\n const {ownerDocument, parentNode} = node;\n if (parentNode) {\n if (nodes.includes(node))\n replaceWith(node, [node = node.cloneNode()]);\n parentNode.insertBefore(\n asFragment(ownerDocument, nodes),\n node\n );\n node.remove();\n }\n};\n\nexport const remove = (prev, current, next) => {\n const {parentNode, nodeType} = current;\n if (prev || next) {\n setAdjacent(prev, next);\n current[PREV] = null;\n getEnd(current)[NEXT] = null;\n }\n if (parentNode) {\n current.parentNode = null;\n moCallback(current, parentNode);\n if (nodeType === ELEMENT_NODE)\n disconnectedCallback(current);\n }\n};\n","// https://dom.spec.whatwg.org/#interface-characterdata\n\nimport {NEXT, PREV, VALUE} from '../shared/symbols.js';\nimport {String} from '../shared/utils.js';\nimport {isConnected, parentElement, previousSibling, nextSibling} from '../shared/node.js';\nimport {characterDataAsJSON} from '../shared/jsdon.js';\n\nimport {previousElementSibling, nextElementSibling} from '../mixin/non-document-type-child-node.js';\nimport {before, after, replaceWith, remove} from '../mixin/child-node.js';\n\nimport {Node} from './node.js';\nimport {moCallback} from './mutation-observer.js';\n\n/**\n * @implements globalThis.CharacterData\n */\nexport class CharacterData extends Node {\n\n constructor(ownerDocument, localName, nodeType, data) {\n super(ownerDocument, localName, nodeType);\n this[VALUE] = String(data);\n }\n\n // <Mixins>\n get isConnected() { return isConnected(this); }\n get parentElement() { return parentElement(this); }\n get previousSibling() { return previousSibling(this); }\n get nextSibling() { return nextSibling(this); }\n\n get previousElementSibling() { return previousElementSibling(this); }\n get nextElementSibling() { return nextElementSibling(this); }\n\n before(...nodes) { before(this, nodes); }\n after(...nodes) { after(this, nodes); }\n replaceWith(...nodes) { replaceWith(this, nodes); }\n remove() { remove(this[PREV], this, this[NEXT]); }\n // </Mixins>\n\n // CharacterData only\n /* c8 ignore start */\n get data() { return this[VALUE]; }\n set data(value) {\n this[VALUE] = String(value);\n moCallback(this, this.parentNode);\n }\n\n get nodeValue() { return this.data; }\n set nodeValue(value) { this.data = value; }\n\n get textContent() { return this.data; }\n set textContent(value) { this.data = value; }\n\n get length() { return this.data.length; }\n\n substringData(offset, count) {\n return this.data.substr(offset, count);\n }\n\n appendData(data) {\n this.data += data;\n }\n\n insertData(offset, data) {\n const {data: t} = this;\n this.data = t.slice(0, offset) + data + t.slice(offset);\n }\n\n deleteData(offset, count) {\n const {data: t} = this;\n this.data = t.slice(0, offset) + t.slice(offset + count);\n }\n\n replaceData(offset, count, data) {\n const {data: t} = this;\n this.data = t.slice(0, offset) + data + t.slice(offset + count);\n }\n /* c8 ignore stop */\n\n toJSON() {\n const json = [];\n characterDataAsJSON(this, json);\n return json;\n }\n}\n","import {CDATA_SECTION_NODE} from '../shared/constants.js';\nimport {VALUE} from '../shared/symbols.js';\n\nimport {CharacterData} from './character-data.js';\n\n/**\n * @implements globalThis.CDATASection\n */\nexport class CDATASection extends CharacterData {\n constructor(ownerDocument, data = '') {\n super(ownerDocument, '#cdatasection', CDATA_SECTION_NODE, data);\n }\n\n cloneNode() {\n const {ownerDocument, [VALUE]: data} = this;\n return new CDATASection(ownerDocument, data);\n }\n\n toString() { return `<![CDATA[${this[VALUE]}]]>`; }\n}\n","import {COMMENT_NODE} from '../shared/constants.js';\nimport {VALUE} from '../shared/symbols.js';\n\nimport {CharacterData} from './character-data.js';\n\n/**\n * @implements globalThis.Comment\n */\nexport class Comment extends CharacterData {\n constructor(ownerDocument, data = '') {\n super(ownerDocument, '#comment', COMMENT_NODE, data);\n }\n\n cloneNode() {\n const {ownerDocument, [VALUE]: data} = this;\n return new Comment(ownerDocument, data);\n }\n\n toString() { return `<!--${this[VALUE]}-->`; }\n}\n","module.exports = {\n\ttrueFunc: function trueFunc(){\n\t\treturn true;\n\t},\n\tfalseFunc: function falseFunc(){\n\t\treturn false;\n\t}\n};","export var SelectorType;\n(function (SelectorType) {\n SelectorType[\"Attribute\"] = \"attribute\";\n SelectorType[\"Pseudo\"] = \"pseudo\";\n SelectorType[\"PseudoElement\"] = \"pseudo-element\";\n SelectorType[\"Tag\"] = \"tag\";\n SelectorType[\"Universal\"] = \"universal\";\n // Traversals\n SelectorType[\"Adjacent\"] = \"adjacent\";\n SelectorType[\"Child\"] = \"child\";\n SelectorType[\"Descendant\"] = \"descendant\";\n SelectorType[\"Parent\"] = \"parent\";\n SelectorType[\"Sibling\"] = \"sibling\";\n SelectorType[\"ColumnCombinator\"] = \"column-combinator\";\n})(SelectorType || (SelectorType = {}));\n/**\n * Modes for ignore case.\n *\n * This could be updated to an enum, and the object is\n * the current stand-in that will allow code to be updated\n * without big changes.\n */\nexport const IgnoreCaseMode = {\n Unknown: null,\n QuirksMode: \"quirks\",\n IgnoreCase: true,\n CaseSensitive: false,\n};\nexport var AttributeAction;\n(function (AttributeAction) {\n AttributeAction[\"Any\"] = \"any\";\n AttributeAction[\"Element\"] = \"element\";\n AttributeAction[\"End\"] = \"end\";\n AttributeAction[\"Equals\"] = \"equals\";\n AttributeAction[\"Exists\"] = \"exists\";\n AttributeAction[\"Hyphen\"] = \"hyphen\";\n AttributeAction[\"Not\"] = \"not\";\n AttributeAction[\"Start\"] = \"start\";\n})(AttributeAction || (AttributeAction = {}));\n","import { SelectorType, AttributeAction, } from \"./types\";\nconst reName = /^[^\\\\#]?(?:\\\\(?:[\\da-f]{1,6}\\s?|.)|[\\w\\-\\u00b0-\\uFFFF])+/;\nconst reEscape = /\\\\([\\da-f]{1,6}\\s?|(\\s)|.)/gi;\nconst actionTypes = new Map([\n [126 /* Tilde */, AttributeAction.Element],\n [94 /* Circumflex */, AttributeAction.Start],\n [36 /* Dollar */, AttributeAction.End],\n [42 /* Asterisk */, AttributeAction.Any],\n [33 /* ExclamationMark */, AttributeAction.Not],\n [124 /* Pipe */, AttributeAction.Hyphen],\n]);\n// Pseudos, whose data property is parsed as well.\nconst unpackPseudos = new Set([\n \"has\",\n \"not\",\n \"matches\",\n \"is\",\n \"where\",\n \"host\",\n \"host-context\",\n]);\n/**\n * Checks whether a specific selector is a traversal.\n * This is useful eg. in swapping the order of elements that\n * are not traversals.\n *\n * @param selector Selector to check.\n */\nexport function isTraversal(selector) {\n switch (selector.type) {\n case SelectorType.Adjacent:\n case SelectorType.Child:\n case SelectorType.Descendant:\n case SelectorType.Parent:\n case SelectorType.Sibling:\n case SelectorType.ColumnCombinator:\n return true;\n default:\n return false;\n }\n}\nconst stripQuotesFromPseudos = new Set([\"contains\", \"icontains\"]);\n// Unescape function taken from https://github.com/jquery/sizzle/blob/master/src/sizzle.js#L152\nfunction funescape(_, escaped, escapedWhitespace) {\n const high = parseInt(escaped, 16) - 0x10000;\n // NaN means non-codepoint\n return high !== high || escapedWhitespace\n ? escaped\n : high < 0\n ? // BMP codepoint\n String.fromCharCode(high + 0x10000)\n : // Supplemental Plane codepoint (surrogate pair)\n String.fromCharCode((high >> 10) | 0xd800, (high & 0x3ff) | 0xdc00);\n}\nfunction unescapeCSS(str) {\n return str.replace(reEscape, funescape);\n}\nfunction isQuote(c) {\n return c === 39 /* SingleQuote */ || c === 34 /* DoubleQuote */;\n}\nfunction isWhitespace(c) {\n return (c === 32 /* Space */ ||\n c === 9 /* Tab */ ||\n c === 10 /* NewLine */ ||\n c === 12 /* FormFeed */ ||\n c === 13 /* CarriageReturn */);\n}\n/**\n * Parses `selector`, optionally with the passed `options`.\n *\n * @param selector Selector to parse.\n * @param options Options for parsing.\n * @returns Returns a two-dimensional array.\n * The first dimension represents selectors separated by commas (eg. `sub1, sub2`),\n * the second contains the relevant tokens for that selector.\n */\nexport function parse(selector) {\n const subselects = [];\n const endIndex = parseSelector(subselects, `${selector}`, 0);\n if (endIndex < selector.length) {\n throw new Error(`Unmatched selector: ${selector.slice(endIndex)}`);\n }\n return subselects;\n}\nfunction parseSelector(subselects, selector, selectorIndex) {\n let tokens = [];\n function getName(offset) {\n const match = selector.slice(selectorIndex + offset).match(reName);\n if (!match) {\n throw new Error(`Expected name, found ${selector.slice(selectorIndex)}`);\n }\n const [name] = match;\n selectorIndex += offset + name.length;\n return unescapeCSS(name);\n }\n function stripWhitespace(offset) {\n selectorIndex += offset;\n while (selectorIndex < selector.length &&\n isWhitespace(selector.charCodeAt(selectorIndex))) {\n selectorIndex++;\n }\n }\n function readValueWithParenthesis() {\n selectorIndex += 1;\n const start = selectorIndex;\n let counter = 1;\n for (; counter > 0 && selectorIndex < selector.length; selectorIndex++) {\n if (selector.charCodeAt(selectorIndex) ===\n 40 /* LeftParenthesis */ &&\n !isEscaped(selectorIndex)) {\n counter++;\n }\n else if (selector.charCodeAt(selectorIndex) ===\n 41 /* RightParenthesis */ &&\n !isEscaped(selectorIndex)) {\n counter--;\n }\n }\n if (counter) {\n throw new Error(\"Parenthesis not matched\");\n }\n return unescapeCSS(selector.slice(start, selectorIndex - 1));\n }\n function isEscaped(pos) {\n let slashCount = 0;\n while (selector.charCodeAt(--pos) === 92 /* BackSlash */)\n slashCount++;\n return (slashCount & 1) === 1;\n }\n function ensureNotTraversal() {\n if (tokens.length > 0 && isTraversal(tokens[tokens.length - 1])) {\n throw new Error(\"Did not expect successive traversals.\");\n }\n }\n function addTraversal(type) {\n if (tokens.length > 0 &&\n tokens[tokens.length - 1].type === SelectorType.Descendant) {\n tokens[tokens.length - 1].type = type;\n return;\n }\n ensureNotTraversal();\n tokens.push({ type });\n }\n function addSpecialAttribute(name, action) {\n tokens.push({\n type: SelectorType.Attribute,\n name,\n action,\n value: getName(1),\n namespace: null,\n ignoreCase: \"quirks\",\n });\n }\n /**\n * We have finished parsing the current part of the selector.\n *\n * Remove descendant tokens at the end if they exist,\n * and return the last index, so that parsing can be\n * picked up from here.\n */\n function finalizeSubselector() {\n if (tokens.length &&\n tokens[tokens.length - 1].type === SelectorType.Descendant) {\n tokens.pop();\n }\n if (tokens.length === 0) {\n throw new Error(\"Empty sub-selector\");\n }\n subselects.push(tokens);\n }\n stripWhitespace(0);\n if (selector.length === selectorIndex) {\n return selectorIndex;\n }\n loop: while (selectorIndex < selector.length) {\n const firstChar = selector.charCodeAt(selectorIndex);\n switch (firstChar) {\n // Whitespace\n case 32 /* Space */:\n case 9 /* Tab */:\n case 10 /* NewLine */:\n case 12 /* FormFeed */:\n case 13 /* CarriageReturn */: {\n if (tokens.length === 0 ||\n tokens[0].type !== SelectorType.Descendant) {\n ensureNotTraversal();\n tokens.push({ type: SelectorType.Descendant });\n }\n stripWhitespace(1);\n break;\n }\n // Traversals\n case 62 /* GreaterThan */: {\n addTraversal(SelectorType.Child);\n stripWhitespace(1);\n break;\n }\n case 60 /* LessThan */: {\n addTraversal(SelectorType.Parent);\n stripWhitespace(1);\n break;\n }\n case 126 /* Tilde */: {\n addTraversal(SelectorType.Sibling);\n stripWhitespace(1);\n break;\n }\n case 43 /* Plus */: {\n addTraversal(SelectorType.Adjacent);\n stripWhitespace(1);\n break;\n }\n // Special attribute selectors: .class, #id\n case 46 /* Period */: {\n addSpecialAttribute(\"class\", AttributeAction.Element);\n break;\n }\n case 35 /* Hash */: {\n addSpecialAttribute(\"id\", AttributeAction.Equals);\n break;\n }\n case 91 /* LeftSquareBracket */: {\n stripWhitespace(1);\n // Determine attribute name and namespace\n let name;\n let namespace = null;\n if (selector.charCodeAt(selectorIndex) === 124 /* Pipe */) {\n // Equivalent to no namespace\n name = getName(1);\n }\n else if (selector.startsWith(\"*|\", selectorIndex)) {\n namespace = \"*\";\n name = getName(2);\n }\n else {\n name = getName(0);\n if (selector.charCodeAt(selectorIndex) === 124 /* Pipe */ &&\n selector.charCodeAt(selectorIndex + 1) !==\n 61 /* Equal */) {\n namespace = name;\n name = getName(1);\n }\n }\n stripWhitespace(0);\n // Determine comparison operation\n let action = AttributeAction.Exists;\n const possibleAction = actionTypes.get(selector.charCodeAt(selectorIndex));\n if (possibleAction) {\n action = possibleAction;\n if (selector.charCodeAt(selectorIndex + 1) !==\n 61 /* Equal */) {\n throw new Error(\"Expected `=`\");\n }\n stripWhitespace(2);\n }\n else if (selector.charCodeAt(selectorIndex) === 61 /* Equal */) {\n action = AttributeAction.Equals;\n stripWhitespace(1);\n }\n // Determine value\n let value = \"\";\n let ignoreCase = null;\n if (action !== \"exists\") {\n if (isQuote(selector.charCodeAt(selectorIndex))) {\n const quote = selector.charCodeAt(selectorIndex);\n let sectionEnd = selectorIndex + 1;\n while (sectionEnd < selector.length &&\n (selector.charCodeAt(sectionEnd) !== quote ||\n isEscaped(sectionEnd))) {\n sectionEnd += 1;\n }\n if (selector.charCodeAt(sectionEnd) !== quote) {\n throw new Error(\"Attribute value didn't end\");\n }\n value = unescapeCSS(selector.slice(selectorIndex + 1, sectionEnd));\n selectorIndex = sectionEnd + 1;\n }\n else {\n const valueStart = selectorIndex;\n while (selectorIndex < selector.length &&\n ((!isWhitespace(selector.charCodeAt(selectorIndex)) &&\n selector.charCodeAt(selectorIndex) !==\n 93 /* RightSquareBracket */) ||\n isEscaped(selectorIndex))) {\n selectorIndex += 1;\n }\n value = unescapeCSS(selector.slice(valueStart, selectorIndex));\n }\n stripWhitespace(0);\n // See if we have a force ignore flag\n const forceIgnore = selector.charCodeAt(selectorIndex) | 0x20;\n // If the forceIgnore flag is set (either `i` or `s`), use that value\n if (forceIgnore === 115 /* LowerS */) {\n ignoreCase = false;\n stripWhitespace(1);\n }\n else if (forceIgnore === 105 /* LowerI */) {\n ignoreCase = true;\n stripWhitespace(1);\n }\n }\n if (selector.charCodeAt(selectorIndex) !==\n 93 /* RightSquareBracket */) {\n throw new Error(\"Attribute selector didn't terminate\");\n }\n selectorIndex += 1;\n const attributeSelector = {\n type: SelectorType.Attribute,\n name,\n action,\n value,\n namespace,\n ignoreCase,\n };\n tokens.push(attributeSelector);\n break;\n }\n case 58 /* Colon */: {\n if (selector.charCodeAt(selectorIndex + 1) === 58 /* Colon */) {\n tokens.push({\n type: SelectorType.PseudoElement,\n name: getName(2).toLowerCase(),\n data: selector.charCodeAt(selectorIndex) ===\n 40 /* LeftParenthesis */\n ? readValueWithParenthesis()\n : null,\n });\n continue;\n }\n const name = getName(1).toLowerCase();\n let data = null;\n if (selector.charCodeAt(selectorIndex) ===\n 40 /* LeftParenthesis */) {\n if (unpackPseudos.has(name)) {\n if (isQuote(selector.charCodeAt(selectorIndex + 1))) {\n throw new Error(`Pseudo-selector ${name} cannot be quoted`);\n }\n data = [];\n selectorIndex = parseSelector(data, selector, selectorIndex + 1);\n if (selector.charCodeAt(selectorIndex) !==\n 41 /* RightParenthesis */) {\n throw new Error(`Missing closing parenthesis in :${name} (${selector})`);\n }\n selectorIndex += 1;\n }\n else {\n data = readValueWithParenthesis();\n if (stripQuotesFromPseudos.has(name)) {\n const quot = data.charCodeAt(0);\n if (quot === data.charCodeAt(data.length - 1) &&\n isQuote(quot)) {\n data = data.slice(1, -1);\n }\n }\n data = unescapeCSS(data);\n }\n }\n tokens.push({ type: SelectorType.Pseudo, name, data });\n break;\n }\n case 44 /* Comma */: {\n finalizeSubselector();\n tokens = [];\n stripWhitespace(1);\n break;\n }\n default: {\n if (selector.startsWith(\"/*\", selectorIndex)) {\n const endIndex = selector.indexOf(\"*/\", selectorIndex + 2);\n if (endIndex < 0) {\n throw new Error(\"Comment was not terminated\");\n }\n selectorIndex = endIndex + 2;\n // Remove leading whitespace\n if (tokens.length === 0) {\n stripWhitespace(0);\n }\n break;\n }\n let namespace = null;\n let name;\n if (firstChar === 42 /* Asterisk */) {\n selectorIndex += 1;\n name = \"*\";\n }\n else if (firstChar === 124 /* Pipe */) {\n name = \"\";\n if (selector.charCodeAt(selectorIndex + 1) === 124 /* Pipe */) {\n addTraversal(SelectorType.ColumnCombinator);\n stripWhitespace(2);\n break;\n }\n }\n else if (reName.test(selector.slice(selectorIndex))) {\n name = getName(0);\n }\n else {\n break loop;\n }\n if (selector.charCodeAt(selectorIndex) === 124 /* Pipe */ &&\n selector.charCodeAt(selectorIndex + 1) !== 124 /* Pipe */) {\n namespace = name;\n if (selector.charCodeAt(selectorIndex + 1) ===\n 42 /* Asterisk */) {\n name = \"*\";\n selectorIndex += 2;\n }\n else {\n name = getName(1);\n }\n }\n tokens.push(name === \"*\"\n ? { type: SelectorType.Universal, namespace }\n : { type: SelectorType.Tag, name, namespace });\n }\n }\n }\n finalizeSubselector();\n return selectorIndex;\n}\n","import { AttributeAction, SelectorType } from \"css-what\";\nconst procedure = new Map([\n [SelectorType.Universal, 50],\n [SelectorType.Tag, 30],\n [SelectorType.Attribute, 1],\n [SelectorType.Pseudo, 0],\n]);\nexport function isTraversal(token) {\n return !procedure.has(token.type);\n}\nconst attributes = new Map([\n [AttributeAction.Exists, 10],\n [AttributeAction.Equals, 8],\n [AttributeAction.Not, 7],\n [AttributeAction.Start, 6],\n [AttributeAction.End, 6],\n [AttributeAction.Any, 5],\n]);\n/**\n * Sort the parts of the passed selector,\n * as there is potential for optimization\n * (some types of selectors are faster than others)\n *\n * @param arr Selector to sort\n */\nexport default function sortByProcedure(arr) {\n const procs = arr.map(getProcedure);\n for (let i = 1; i < arr.length; i++) {\n const procNew = procs[i];\n if (procNew < 0)\n continue;\n for (let j = i - 1; j >= 0 && procNew < procs[j]; j--) {\n const token = arr[j + 1];\n arr[j + 1] = arr[j];\n arr[j] = token;\n procs[j + 1] = procs[j];\n procs[j] = procNew;\n }\n }\n}\nfunction getProcedure(token) {\n var _a, _b;\n let proc = (_a = procedure.get(token.type)) !== null && _a !== void 0 ? _a : -1;\n if (token.type === SelectorType.Attribute) {\n proc = (_b = attributes.get(token.action)) !== null && _b !== void 0 ? _b : 4;\n if (token.action === AttributeAction.Equals && token.name === \"id\") {\n // Prefer ID selectors (eg. #ID)\n proc = 9;\n }\n if (token.ignoreCase) {\n /*\n * IgnoreCase adds some overhead, prefer \"normal\" token\n * this is a binary operation, to ensure it's still an int\n */\n proc >>= 1;\n }\n }\n else if (token.type === SelectorType.Pseudo) {\n if (!token.data) {\n proc = 3;\n }\n else if (token.name === \"has\" || token.name === \"contains\") {\n proc = 0; // Expensive in any case\n }\n else if (Array.isArray(token.data)) {\n // Eg. :matches, :not\n proc = Math.min(...token.data.map((d) => Math.min(...d.map(getProcedure))));\n // If we have traversals, try to avoid executing this selector\n if (proc < 0) {\n proc = 0;\n }\n }\n else {\n proc = 2;\n }\n }\n return proc;\n}\n//# sourceMappingURL=sort.js.map","import boolbase from \"boolbase\";\n/**\n * All reserved characters in a regex, used for escaping.\n *\n * Taken from XRegExp, (c) 2007-2020 Steven Levithan under the MIT license\n * https://github.com/slevithan/xregexp/blob/95eeebeb8fac8754d54eafe2b4743661ac1cf028/src/xregexp.js#L794\n */\nconst reChars = /[-[\\]{}()*+?.,\\\\^$|#\\s]/g;\nfunction escapeRegex(value) {\n return value.replace(reChars, \"\\\\$&\");\n}\n/**\n * Attributes that are case-insensitive in HTML.\n *\n * @private\n * @see https://html.spec.whatwg.org/multipage/semantics-other.html#case-sensitivity-of-selectors\n */\nconst caseInsensitiveAttributes = new Set([\n \"accept\",\n \"accept-charset\",\n \"align\",\n \"alink\",\n \"axis\",\n \"bgcolor\",\n \"charset\",\n \"checked\",\n \"clear\",\n \"codetype\",\n \"color\",\n \"compact\",\n \"declare\",\n \"defer\",\n \"dir\",\n \"direction\",\n \"disabled\",\n \"enctype\",\n \"face\",\n \"frame\",\n \"hreflang\",\n \"http-equiv\",\n \"lang\",\n \"language\",\n \"link\",\n \"media\",\n \"method\",\n \"multiple\",\n \"nohref\",\n \"noresize\",\n \"noshade\",\n \"nowrap\",\n \"readonly\",\n \"rel\",\n \"rev\",\n \"rules\",\n \"scope\",\n \"scrolling\",\n \"selected\",\n \"shape\",\n \"target\",\n \"text\",\n \"type\",\n \"valign\",\n \"valuetype\",\n \"vlink\",\n]);\nfunction shouldIgnoreCase(selector, options) {\n return typeof selector.ignoreCase === \"boolean\"\n ? selector.ignoreCase\n : selector.ignoreCase === \"quirks\"\n ? !!options.quirksMode\n : !options.xmlMode && caseInsensitiveAttributes.has(selector.name);\n}\n/**\n * Attribute selectors\n */\nexport const attributeRules = {\n equals(next, data, options) {\n const { adapter } = options;\n const { name } = data;\n let { value } = data;\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return (elem) => {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n attr.length === value.length &&\n attr.toLowerCase() === value &&\n next(elem));\n };\n }\n return (elem) => adapter.getAttributeValue(elem, name) === value && next(elem);\n },\n hyphen(next, data, options) {\n const { adapter } = options;\n const { name } = data;\n let { value } = data;\n const len = value.length;\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return function hyphenIC(elem) {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n (attr.length === len || attr.charAt(len) === \"-\") &&\n attr.substr(0, len).toLowerCase() === value &&\n next(elem));\n };\n }\n return function hyphen(elem) {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n (attr.length === len || attr.charAt(len) === \"-\") &&\n attr.substr(0, len) === value &&\n next(elem));\n };\n },\n element(next, data, options) {\n const { adapter } = options;\n const { name, value } = data;\n if (/\\s/.test(value)) {\n return boolbase.falseFunc;\n }\n const regex = new RegExp(`(?:^|\\\\s)${escapeRegex(value)}(?:$|\\\\s)`, shouldIgnoreCase(data, options) ? \"i\" : \"\");\n return function element(elem) {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n attr.length >= value.length &&\n regex.test(attr) &&\n next(elem));\n };\n },\n exists(next, { name }, { adapter }) {\n return (elem) => adapter.hasAttrib(elem, name) && next(elem);\n },\n start(next, data, options) {\n const { adapter } = options;\n const { name } = data;\n let { value } = data;\n const len = value.length;\n if (len === 0) {\n return boolbase.falseFunc;\n }\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return (elem) => {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n attr.length >= len &&\n attr.substr(0, len).toLowerCase() === value &&\n next(elem));\n };\n }\n return (elem) => {\n var _a;\n return !!((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.startsWith(value)) &&\n next(elem);\n };\n },\n end(next, data, options) {\n const { adapter } = options;\n const { name } = data;\n let { value } = data;\n const len = -value.length;\n if (len === 0) {\n return boolbase.falseFunc;\n }\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return (elem) => {\n var _a;\n return ((_a = adapter\n .getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.substr(len).toLowerCase()) === value && next(elem);\n };\n }\n return (elem) => {\n var _a;\n return !!((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.endsWith(value)) &&\n next(elem);\n };\n },\n any(next, data, options) {\n const { adapter } = options;\n const { name, value } = data;\n if (value === \"\") {\n return boolbase.falseFunc;\n }\n if (shouldIgnoreCase(data, options)) {\n const regex = new RegExp(escapeRegex(value), \"i\");\n return function anyIC(elem) {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n attr.length >= value.length &&\n regex.test(attr) &&\n next(elem));\n };\n }\n return (elem) => {\n var _a;\n return !!((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.includes(value)) &&\n next(elem);\n };\n },\n not(next, data, options) {\n const { adapter } = options;\n const { name } = data;\n let { value } = data;\n if (value === \"\") {\n return (elem) => !!adapter.getAttributeValue(elem, name) && next(elem);\n }\n else if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return (elem) => {\n const attr = adapter.getAttributeValue(elem, name);\n return ((attr == null ||\n attr.length !== value.length ||\n attr.toLowerCase() !== value) &&\n next(elem));\n };\n }\n return (elem) => adapter.getAttributeValue(elem, name) !== value && next(elem);\n },\n};\n//# sourceMappingURL=attributes.js.map","// Following http://www.w3.org/TR/css3-selectors/#nth-child-pseudo\n// Whitespace as per https://www.w3.org/TR/selectors-3/#lex is \" \\t\\r\\n\\f\"\nconst whitespace = new Set([9, 10, 12, 13, 32]);\nconst ZERO = \"0\".charCodeAt(0);\nconst NINE = \"9\".charCodeAt(0);\n/**\n * Parses an expression.\n *\n * @throws An `Error` if parsing fails.\n * @returns An array containing the integer step size and the integer offset of the nth rule.\n * @example nthCheck.parse(\"2n+3\"); // returns [2, 3]\n */\nexport function parse(formula) {\n formula = formula.trim().toLowerCase();\n if (formula === \"even\") {\n return [2, 0];\n }\n else if (formula === \"odd\") {\n return [2, 1];\n }\n // Parse [ ['-'|'+']? INTEGER? {N} [ S* ['-'|'+'] S* INTEGER ]?\n let idx = 0;\n let a = 0;\n let sign = readSign();\n let number = readNumber();\n if (idx < formula.length && formula.charAt(idx) === \"n\") {\n idx++;\n a = sign * (number !== null && number !== void 0 ? number : 1);\n skipWhitespace();\n if (idx < formula.length) {\n sign = readSign();\n skipWhitespace();\n number = readNumber();\n }\n else {\n sign = number = 0;\n }\n }\n // Throw if there is anything else\n if (number === null || idx < formula.length) {\n throw new Error(`n-th rule couldn't be parsed ('${formula}')`);\n }\n return [a, sign * number];\n function readSign() {\n if (formula.charAt(idx) === \"-\") {\n idx++;\n return -1;\n }\n if (formula.charAt(idx) === \"+\") {\n idx++;\n }\n return 1;\n }\n function readNumber() {\n const start = idx;\n let value = 0;\n while (idx < formula.length &&\n formula.charCodeAt(idx) >= ZERO &&\n formula.charCodeAt(idx) <= NINE) {\n value = value * 10 + (formula.charCodeAt(idx) - ZERO);\n idx++;\n }\n // Return `null` if we didn't read anything.\n return idx === start ? null : value;\n }\n function skipWhitespace() {\n while (idx < formula.length &&\n whitespace.has(formula.charCodeAt(idx))) {\n idx++;\n }\n }\n}\n//# sourceMappingURL=parse.js.map","import boolbase from \"boolbase\";\n/**\n * Returns a function that checks if an elements index matches the given rule\n * highly optimized to return the fastest solution.\n *\n * @param parsed A tuple [a, b], as returned by `parse`.\n * @returns A highly optimized function that returns whether an index matches the nth-check.\n * @example\n *\n * ```js\n * const check = nthCheck.compile([2, 3]);\n *\n * check(0); // `false`\n * check(1); // `false`\n * check(2); // `true`\n * check(3); // `false`\n * check(4); // `true`\n * check(5); // `false`\n * check(6); // `true`\n * ```\n */\nexport function compile(parsed) {\n const a = parsed[0];\n // Subtract 1 from `b`, to convert from one- to zero-indexed.\n const b = parsed[1] - 1;\n /*\n * When `b <= 0`, `a * n` won't be lead to any matches for `a < 0`.\n * Besides, the specification states that no elements are\n * matched when `a` and `b` are 0.\n *\n * `b < 0` here as we subtracted 1 from `b` above.\n */\n if (b < 0 && a <= 0)\n return boolbase.falseFunc;\n // When `a` is in the range -1..1, it matches any element (so only `b` is checked).\n if (a === -1)\n return (index) => index <= b;\n if (a === 0)\n return (index) => index === b;\n // When `b <= 0` and `a === 1`, they match any element.\n if (a === 1)\n return b < 0 ? boolbase.trueFunc : (index) => index >= b;\n /*\n * Otherwise, modulo can be used to check if there is a match.\n *\n * Modulo doesn't care about the sign, so let's use `a`s absolute value.\n */\n const absA = Math.abs(a);\n // Get `b mod a`, + a if this is negative.\n const bMod = ((b % absA) + absA) % absA;\n return a > 1\n ? (index) => index >= b && index % absA === bMod\n : (index) => index <= b && index % absA === bMod;\n}\n/**\n * Returns a function that produces a monotonously increasing sequence of indices.\n *\n * If the sequence has an end, the returned function will return `null` after\n * the last index in the sequence.\n *\n * @param parsed A tuple [a, b], as returned by `parse`.\n * @returns A function that produces a sequence of indices.\n * @example <caption>Always increasing (2n+3)</caption>\n *\n * ```js\n * const gen = nthCheck.generate([2, 3])\n *\n * gen() // `1`\n * gen() // `3`\n * gen() // `5`\n * gen() // `8`\n * gen() // `11`\n * ```\n *\n * @example <caption>With end value (-2n+10)</caption>\n *\n * ```js\n *\n * const gen = nthCheck.generate([-2, 5]);\n *\n * gen() // 0\n * gen() // 2\n * gen() // 4\n * gen() // null\n * ```\n */\nexport function generate(parsed) {\n const a = parsed[0];\n // Subtract 1 from `b`, to convert from one- to zero-indexed.\n let b = parsed[1] - 1;\n let n = 0;\n // Make sure to always return an increasing sequence\n if (a < 0) {\n const aPos = -a;\n // Get `b mod a`\n const minValue = ((b % aPos) + aPos) % aPos;\n return () => {\n const val = minValue + aPos * n++;\n return val > b ? null : val;\n };\n }\n if (a === 0)\n return b < 0\n ? // There are no result — always return `null`\n () => null\n : // Return `b` exactly once\n () => (n++ === 0 ? b : null);\n if (b < 0) {\n b += a * Math.ceil(-b / a);\n }\n return () => a * n++ + b;\n}\n//# sourceMappingURL=compile.js.map","import { parse } from \"./parse.js\";\nimport { compile, generate } from \"./compile.js\";\nexport { parse, compile, generate };\n/**\n * Parses and compiles a formula to a highly optimized function.\n * Combination of {@link parse} and {@link compile}.\n *\n * If the formula doesn't match any elements,\n * it returns [`boolbase`](https://github.com/fb55/boolbase)'s `falseFunc`.\n * Otherwise, a function accepting an _index_ is returned, which returns\n * whether or not the passed _index_ matches the formula.\n *\n * Note: The nth-rule starts counting at `1`, the returned function at `0`.\n *\n * @param formula The formula to compile.\n * @example\n * const check = nthCheck(\"2n+3\");\n *\n * check(0); // `false`\n * check(1); // `false`\n * check(2); // `true`\n * check(3); // `false`\n * check(4); // `true`\n * check(5); // `false`\n * check(6); // `true`\n */\nexport default function nthCheck(formula) {\n return compile(parse(formula));\n}\n/**\n * Parses and compiles a formula to a generator that produces a sequence of indices.\n * Combination of {@link parse} and {@link generate}.\n *\n * @param formula The formula to compile.\n * @returns A function that produces a sequence of indices.\n * @example <caption>Always increasing</caption>\n *\n * ```js\n * const gen = nthCheck.sequence('2n+3')\n *\n * gen() // `1`\n * gen() // `3`\n * gen() // `5`\n * gen() // `8`\n * gen() // `11`\n * ```\n *\n * @example <caption>With end value</caption>\n *\n * ```js\n *\n * const gen = nthCheck.sequence('-2n+5');\n *\n * gen() // 0\n * gen() // 2\n * gen() // 4\n * gen() // null\n * ```\n */\nexport function sequence(formula) {\n return generate(parse(formula));\n}\n//# sourceMappingURL=index.js.map","import getNCheck from \"nth-check\";\nimport boolbase from \"boolbase\";\nfunction getChildFunc(next, adapter) {\n return (elem) => {\n const parent = adapter.getParent(elem);\n return parent != null && adapter.isTag(parent) && next(elem);\n };\n}\nexport const filters = {\n contains(next, text, { adapter }) {\n return function contains(elem) {\n return next(elem) && adapter.getText(elem).includes(text);\n };\n },\n icontains(next, text, { adapter }) {\n const itext = text.toLowerCase();\n return function icontains(elem) {\n return (next(elem) &&\n adapter.getText(elem).toLowerCase().includes(itext));\n };\n },\n // Location specific methods\n \"nth-child\"(next, rule, { adapter, equals }) {\n const func = getNCheck(rule);\n if (func === boolbase.falseFunc)\n return boolbase.falseFunc;\n if (func === boolbase.trueFunc)\n return getChildFunc(next, adapter);\n return function nthChild(elem) {\n const siblings = adapter.getSiblings(elem);\n let pos = 0;\n for (let i = 0; i < siblings.length; i++) {\n if (equals(elem, siblings[i]))\n break;\n if (adapter.isTag(siblings[i])) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n \"nth-last-child\"(next, rule, { adapter, equals }) {\n const func = getNCheck(rule);\n if (func === boolbase.falseFunc)\n return boolbase.falseFunc;\n if (func === boolbase.trueFunc)\n return getChildFunc(next, adapter);\n return function nthLastChild(elem) {\n const siblings = adapter.getSiblings(elem);\n let pos = 0;\n for (let i = siblings.length - 1; i >= 0; i--) {\n if (equals(elem, siblings[i]))\n break;\n if (adapter.isTag(siblings[i])) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n \"nth-of-type\"(next, rule, { adapter, equals }) {\n const func = getNCheck(rule);\n if (func === boolbase.falseFunc)\n return boolbase.falseFunc;\n if (func === boolbase.trueFunc)\n return getChildFunc(next, adapter);\n return function nthOfType(elem) {\n const siblings = adapter.getSiblings(elem);\n let pos = 0;\n for (let i = 0; i < siblings.length; i++) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling) &&\n adapter.getName(currentSibling) === adapter.getName(elem)) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n \"nth-last-of-type\"(next, rule, { adapter, equals }) {\n const func = getNCheck(rule);\n if (func === boolbase.falseFunc)\n return boolbase.falseFunc;\n if (func === boolbase.trueFunc)\n return getChildFunc(next, adapter);\n return function nthLastOfType(elem) {\n const siblings = adapter.getSiblings(elem);\n let pos = 0;\n for (let i = siblings.length - 1; i >= 0; i--) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling) &&\n adapter.getName(currentSibling) === adapter.getName(elem)) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n // TODO determine the actual root element\n root(next, _rule, { adapter }) {\n return (elem) => {\n const parent = adapter.getParent(elem);\n return (parent == null || !adapter.isTag(parent)) && next(elem);\n };\n },\n scope(next, rule, options, context) {\n const { equals } = options;\n if (!context || context.length === 0) {\n // Equivalent to :root\n return filters[\"root\"](next, rule, options);\n }\n if (context.length === 1) {\n // NOTE: can't be unpacked, as :has uses this for side-effects\n return (elem) => equals(context[0], elem) && next(elem);\n }\n return (elem) => context.includes(elem) && next(elem);\n },\n hover: dynamicStatePseudo(\"isHovered\"),\n visited: dynamicStatePseudo(\"isVisited\"),\n active: dynamicStatePseudo(\"isActive\"),\n};\n/**\n * Dynamic state pseudos. These depend on optional Adapter methods.\n *\n * @param name The name of the adapter method to call.\n * @returns Pseudo for the `filters` object.\n */\nfunction dynamicStatePseudo(name) {\n return function dynamicPseudo(next, _rule, { adapter }) {\n const func = adapter[name];\n if (typeof func !== \"function\") {\n return boolbase.falseFunc;\n }\n return function active(elem) {\n return func(elem) && next(elem);\n };\n };\n}\n//# sourceMappingURL=filters.js.map","// While filters are precompiled, pseudos get called when they are needed\nexport const pseudos = {\n empty(elem, { adapter }) {\n return !adapter.getChildren(elem).some((elem) => \n // FIXME: `getText` call is potentially expensive.\n adapter.isTag(elem) || adapter.getText(elem) !== \"\");\n },\n \"first-child\"(elem, { adapter, equals }) {\n if (adapter.prevElementSibling) {\n return adapter.prevElementSibling(elem) == null;\n }\n const firstChild = adapter\n .getSiblings(elem)\n .find((elem) => adapter.isTag(elem));\n return firstChild != null && equals(elem, firstChild);\n },\n \"last-child\"(elem, { adapter, equals }) {\n const siblings = adapter.getSiblings(elem);\n for (let i = siblings.length - 1; i >= 0; i--) {\n if (equals(elem, siblings[i]))\n return true;\n if (adapter.isTag(siblings[i]))\n break;\n }\n return false;\n },\n \"first-of-type\"(elem, { adapter, equals }) {\n const siblings = adapter.getSiblings(elem);\n const elemName = adapter.getName(elem);\n for (let i = 0; i < siblings.length; i++) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n return true;\n if (adapter.isTag(currentSibling) &&\n adapter.getName(currentSibling) === elemName) {\n break;\n }\n }\n return false;\n },\n \"last-of-type\"(elem, { adapter, equals }) {\n const siblings = adapter.getSiblings(elem);\n const elemName = adapter.getName(elem);\n for (let i = siblings.length - 1; i >= 0; i--) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n return true;\n if (adapter.isTag(currentSibling) &&\n adapter.getName(currentSibling) === elemName) {\n break;\n }\n }\n return false;\n },\n \"only-of-type\"(elem, { adapter, equals }) {\n const elemName = adapter.getName(elem);\n return adapter\n .getSiblings(elem)\n .every((sibling) => equals(elem, sibling) ||\n !adapter.isTag(sibling) ||\n adapter.getName(sibling) !== elemName);\n },\n \"only-child\"(elem, { adapter, equals }) {\n return adapter\n .getSiblings(elem)\n .every((sibling) => equals(elem, sibling) || !adapter.isTag(sibling));\n },\n};\nexport function verifyPseudoArgs(func, name, subselect, argIndex) {\n if (subselect === null) {\n if (func.length > argIndex) {\n throw new Error(`Pseudo-class :${name} requires an argument`);\n }\n }\n else if (func.length === argIndex) {\n throw new Error(`Pseudo-class :${name} doesn't have any arguments`);\n }\n}\n//# sourceMappingURL=pseudos.js.map","/**\n * Aliases are pseudos that are expressed as selectors.\n */\nexport const aliases = {\n // Links\n \"any-link\": \":is(a, area, link)[href]\",\n link: \":any-link:not(:visited)\",\n // Forms\n // https://html.spec.whatwg.org/multipage/scripting.html#disabled-elements\n disabled: `:is(\n :is(button, input, select, textarea, optgroup, option)[disabled],\n optgroup[disabled] > option,\n fieldset[disabled]:not(fieldset[disabled] legend:first-of-type *)\n )`,\n enabled: \":not(:disabled)\",\n checked: \":is(:is(input[type=radio], input[type=checkbox])[checked], option:selected)\",\n required: \":is(input, select, textarea)[required]\",\n optional: \":is(input, select, textarea):not([required])\",\n // JQuery extensions\n // https://html.spec.whatwg.org/multipage/form-elements.html#concept-option-selectedness\n selected: \"option:is([selected], select:not([multiple]):not(:has(> option[selected])) > :first-of-type)\",\n checkbox: \"[type=checkbox]\",\n file: \"[type=file]\",\n password: \"[type=password]\",\n radio: \"[type=radio]\",\n reset: \"[type=reset]\",\n image: \"[type=image]\",\n submit: \"[type=submit]\",\n parent: \":not(:empty)\",\n header: \":is(h1, h2, h3, h4, h5, h6)\",\n button: \":is(button, input[type=button])\",\n input: \":is(input, textarea, select, button)\",\n text: \"input:is(:not([type!='']), [type=text])\",\n};\n//# sourceMappingURL=aliases.js.map","import boolbase from \"boolbase\";\nimport { isTraversal } from \"../sort.js\";\n/** Used as a placeholder for :has. Will be replaced with the actual element. */\nexport const PLACEHOLDER_ELEMENT = {};\nexport function ensureIsTag(next, adapter) {\n if (next === boolbase.falseFunc)\n return boolbase.falseFunc;\n return (elem) => adapter.isTag(elem) && next(elem);\n}\nexport function getNextSiblings(elem, adapter) {\n const siblings = adapter.getSiblings(elem);\n if (siblings.length <= 1)\n return [];\n const elemIndex = siblings.indexOf(elem);\n if (elemIndex < 0 || elemIndex === siblings.length - 1)\n return [];\n return siblings.slice(elemIndex + 1).filter(adapter.isTag);\n}\nfunction copyOptions(options) {\n // Not copied: context, rootFunc\n return {\n xmlMode: !!options.xmlMode,\n lowerCaseAttributeNames: !!options.lowerCaseAttributeNames,\n lowerCaseTags: !!options.lowerCaseTags,\n quirksMode: !!options.quirksMode,\n cacheResults: !!options.cacheResults,\n pseudos: options.pseudos,\n adapter: options.adapter,\n equals: options.equals,\n };\n}\nconst is = (next, token, options, context, compileToken) => {\n const func = compileToken(token, copyOptions(options), context);\n return func === boolbase.trueFunc\n ? next\n : func === boolbase.falseFunc\n ? boolbase.falseFunc\n : (elem) => func(elem) && next(elem);\n};\n/*\n * :not, :has, :is, :matches and :where have to compile selectors\n * doing this in src/pseudos.ts would lead to circular dependencies,\n * so we add them here\n */\nexport const subselects = {\n is,\n /**\n * `:matches` and `:where` are aliases for `:is`.\n */\n matches: is,\n where: is,\n not(next, token, options, context, compileToken) {\n const func = compileToken(token, copyOptions(options), context);\n return func === boolbase.falseFunc\n ? next\n : func === boolbase.trueFunc\n ? boolbase.falseFunc\n : (elem) => !func(elem) && next(elem);\n },\n has(next, subselect, options, _context, compileToken) {\n const { adapter } = options;\n const opts = copyOptions(options);\n opts.relativeSelector = true;\n const context = subselect.some((s) => s.some(isTraversal))\n ? // Used as a placeholder. Will be replaced with the actual element.\n [PLACEHOLDER_ELEMENT]\n : undefined;\n const compiled = compileToken(subselect, opts, context);\n if (compiled === boolbase.falseFunc)\n return boolbase.falseFunc;\n const hasElement = ensureIsTag(compiled, adapter);\n // If `compiled` is `trueFunc`, we can skip this.\n if (context && compiled !== boolbase.trueFunc) {\n /*\n * `shouldTestNextSiblings` will only be true if the query starts with\n * a traversal (sibling or adjacent). That means we will always have a context.\n */\n const { shouldTestNextSiblings = false } = compiled;\n return (elem) => {\n if (!next(elem))\n return false;\n context[0] = elem;\n const childs = adapter.getChildren(elem);\n const nextElements = shouldTestNextSiblings\n ? [...childs, ...getNextSiblings(elem, adapter)]\n : childs;\n return adapter.existsOne(hasElement, nextElements);\n };\n }\n return (elem) => next(elem) &&\n adapter.existsOne(hasElement, adapter.getChildren(elem));\n },\n};\n//# sourceMappingURL=subselects.js.map","import { parse } from \"css-what\";\nimport { filters } from \"./filters.js\";\nimport { pseudos, verifyPseudoArgs } from \"./pseudos.js\";\nimport { aliases } from \"./aliases.js\";\nimport { subselects } from \"./subselects.js\";\nexport { filters, pseudos, aliases };\nexport function compilePseudoSelector(next, selector, options, context, compileToken) {\n var _a;\n const { name, data } = selector;\n if (Array.isArray(data)) {\n if (!(name in subselects)) {\n throw new Error(`Unknown pseudo-class :${name}(${data})`);\n }\n return subselects[name](next, data, options, context, compileToken);\n }\n const userPseudo = (_a = options.pseudos) === null || _a === void 0 ? void 0 : _a[name];\n const stringPseudo = typeof userPseudo === \"string\" ? userPseudo : aliases[name];\n if (typeof stringPseudo === \"string\") {\n if (data != null) {\n throw new Error(`Pseudo ${name} doesn't have any arguments`);\n }\n // The alias has to be parsed here, to make sure options are respected.\n const alias = parse(stringPseudo);\n return subselects[\"is\"](next, alias, options, context, compileToken);\n }\n if (typeof userPseudo === \"function\") {\n verifyPseudoArgs(userPseudo, name, data, 1);\n return (elem) => userPseudo(elem, data) && next(elem);\n }\n if (name in filters) {\n return filters[name](next, data, options, context);\n }\n if (name in pseudos) {\n const pseudo = pseudos[name];\n verifyPseudoArgs(pseudo, name, data, 2);\n return (elem) => pseudo(elem, options, data) && next(elem);\n }\n throw new Error(`Unknown pseudo-class :${name}`);\n}\n//# sourceMappingURL=index.js.map","import { attributeRules } from \"./attributes.js\";\nimport { compilePseudoSelector } from \"./pseudo-selectors/index.js\";\nimport { SelectorType } from \"css-what\";\nfunction getElementParent(node, adapter) {\n const parent = adapter.getParent(node);\n if (parent && adapter.isTag(parent)) {\n return parent;\n }\n return null;\n}\n/*\n * All available rules\n */\nexport function compileGeneralSelector(next, selector, options, context, compileToken) {\n const { adapter, equals } = options;\n switch (selector.type) {\n case SelectorType.PseudoElement: {\n throw new Error(\"Pseudo-elements are not supported by css-select\");\n }\n case SelectorType.ColumnCombinator: {\n throw new Error(\"Column combinators are not yet supported by css-select\");\n }\n case SelectorType.Attribute: {\n if (selector.namespace != null) {\n throw new Error(\"Namespaced attributes are not yet supported by css-select\");\n }\n if (!options.xmlMode || options.lowerCaseAttributeNames) {\n selector.name = selector.name.toLowerCase();\n }\n return attributeRules[selector.action](next, selector, options);\n }\n case SelectorType.Pseudo: {\n return compilePseudoSelector(next, selector, options, context, compileToken);\n }\n // Tags\n case SelectorType.Tag: {\n if (selector.namespace != null) {\n throw new Error(\"Namespaced tag names are not yet supported by css-select\");\n }\n let { name } = selector;\n if (!options.xmlMode || options.lowerCaseTags) {\n name = name.toLowerCase();\n }\n return function tag(elem) {\n return adapter.getName(elem) === name && next(elem);\n };\n }\n // Traversal\n case SelectorType.Descendant: {\n if (options.cacheResults === false ||\n typeof WeakSet === \"undefined\") {\n return function descendant(elem) {\n let current = elem;\n while ((current = getElementParent(current, adapter))) {\n if (next(current)) {\n return true;\n }\n }\n return false;\n };\n }\n // @ts-expect-error `ElementNode` is not extending object\n const isFalseCache = new WeakSet();\n return function cachedDescendant(elem) {\n let current = elem;\n while ((current = getElementParent(current, adapter))) {\n if (!isFalseCache.has(current)) {\n if (adapter.isTag(current) && next(current)) {\n return true;\n }\n isFalseCache.add(current);\n }\n }\n return false;\n };\n }\n case \"_flexibleDescendant\": {\n // Include element itself, only used while querying an array\n return function flexibleDescendant(elem) {\n let current = elem;\n do {\n if (next(current))\n return true;\n } while ((current = getElementParent(current, adapter)));\n return false;\n };\n }\n case SelectorType.Parent: {\n return function parent(elem) {\n return adapter\n .getChildren(elem)\n .some((elem) => adapter.isTag(elem) && next(elem));\n };\n }\n case SelectorType.Child: {\n return function child(elem) {\n const parent = adapter.getParent(elem);\n return parent != null && adapter.isTag(parent) && next(parent);\n };\n }\n case SelectorType.Sibling: {\n return function sibling(elem) {\n const siblings = adapter.getSiblings(elem);\n for (let i = 0; i < siblings.length; i++) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling) && next(currentSibling)) {\n return true;\n }\n }\n return false;\n };\n }\n case SelectorType.Adjacent: {\n if (adapter.prevElementSibling) {\n return function adjacent(elem) {\n const previous = adapter.prevElementSibling(elem);\n return previous != null && next(previous);\n };\n }\n return function adjacent(elem) {\n const siblings = adapter.getSiblings(elem);\n let lastElement;\n for (let i = 0; i < siblings.length; i++) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling)) {\n lastElement = currentSibling;\n }\n }\n return !!lastElement && next(lastElement);\n };\n }\n case SelectorType.Universal: {\n if (selector.namespace != null && selector.namespace !== \"*\") {\n throw new Error(\"Namespaced universal selectors are not yet supported by css-select\");\n }\n return next;\n }\n }\n}\n//# sourceMappingURL=general.js.map","import { parse, SelectorType } from \"css-what\";\nimport boolbase from \"boolbase\";\nimport sortRules, { isTraversal } from \"./sort.js\";\nimport { compileGeneralSelector } from \"./general.js\";\nimport { ensureIsTag, PLACEHOLDER_ELEMENT, } from \"./pseudo-selectors/subselects.js\";\n/**\n * Compiles a selector to an executable function.\n *\n * @param selector Selector to compile.\n * @param options Compilation options.\n * @param context Optional context for the selector.\n */\nexport function compile(selector, options, context) {\n const next = compileUnsafe(selector, options, context);\n return ensureIsTag(next, options.adapter);\n}\nexport function compileUnsafe(selector, options, context) {\n const token = typeof selector === \"string\" ? parse(selector) : selector;\n return compileToken(token, options, context);\n}\nfunction includesScopePseudo(t) {\n return (t.type === SelectorType.Pseudo &&\n (t.name === \"scope\" ||\n (Array.isArray(t.data) &&\n t.data.some((data) => data.some(includesScopePseudo)))));\n}\nconst DESCENDANT_TOKEN = { type: SelectorType.Descendant };\nconst FLEXIBLE_DESCENDANT_TOKEN = {\n type: \"_flexibleDescendant\",\n};\nconst SCOPE_TOKEN = {\n type: SelectorType.Pseudo,\n name: \"scope\",\n data: null,\n};\n/*\n * CSS 4 Spec (Draft): 3.4.1. Absolutizing a Relative Selector\n * http://www.w3.org/TR/selectors4/#absolutizing\n */\nfunction absolutize(token, { adapter }, context) {\n // TODO Use better check if the context is a document\n const hasContext = !!(context === null || context === void 0 ? void 0 : context.every((e) => {\n const parent = adapter.isTag(e) && adapter.getParent(e);\n return e === PLACEHOLDER_ELEMENT || (parent && adapter.isTag(parent));\n }));\n for (const t of token) {\n if (t.length > 0 &&\n isTraversal(t[0]) &&\n t[0].type !== SelectorType.Descendant) {\n // Don't continue in else branch\n }\n else if (hasContext && !t.some(includesScopePseudo)) {\n t.unshift(DESCENDANT_TOKEN);\n }\n else {\n continue;\n }\n t.unshift(SCOPE_TOKEN);\n }\n}\nexport function compileToken(token, options, context) {\n var _a;\n token.forEach(sortRules);\n context = (_a = options.context) !== null && _a !== void 0 ? _a : context;\n const isArrayContext = Array.isArray(context);\n const finalContext = context && (Array.isArray(context) ? context : [context]);\n // Check if the selector is relative\n if (options.relativeSelector !== false) {\n absolutize(token, options, finalContext);\n }\n else if (token.some((t) => t.length > 0 && isTraversal(t[0]))) {\n throw new Error(\"Relative selectors are not allowed when the `relativeSelector` option is disabled\");\n }\n let shouldTestNextSiblings = false;\n const query = token\n .map((rules) => {\n if (rules.length >= 2) {\n const [first, second] = rules;\n if (first.type !== SelectorType.Pseudo ||\n first.name !== \"scope\") {\n // Ignore\n }\n else if (isArrayContext &&\n second.type === SelectorType.Descendant) {\n rules[1] = FLEXIBLE_DESCENDANT_TOKEN;\n }\n else if (second.type === SelectorType.Adjacent ||\n second.type === SelectorType.Sibling) {\n shouldTestNextSiblings = true;\n }\n }\n return compileRules(rules, options, finalContext);\n })\n .reduce(reduceRules, boolbase.falseFunc);\n query.shouldTestNextSiblings = shouldTestNextSiblings;\n return query;\n}\nfunction compileRules(rules, options, context) {\n var _a;\n return rules.reduce((previous, rule) => previous === boolbase.falseFunc\n ? boolbase.falseFunc\n : compileGeneralSelector(previous, rule, options, context, compileToken), (_a = options.rootFunc) !== null && _a !== void 0 ? _a : boolbase.trueFunc);\n}\nfunction reduceRules(a, b) {\n if (b === boolbase.falseFunc || a === boolbase.trueFunc) {\n return a;\n }\n if (a === boolbase.falseFunc || b === boolbase.trueFunc) {\n return b;\n }\n return function combine(elem) {\n return a(elem) || b(elem);\n };\n}\n//# sourceMappingURL=compile.js.map","import * as DomUtils from \"domutils\";\nimport boolbase from \"boolbase\";\nimport { compile as compileRaw, compileUnsafe, compileToken, } from \"./compile.js\";\nimport { getNextSiblings } from \"./pseudo-selectors/subselects.js\";\nconst defaultEquals = (a, b) => a === b;\nconst defaultOptions = {\n adapter: DomUtils,\n equals: defaultEquals,\n};\nfunction convertOptionFormats(options) {\n var _a, _b, _c, _d;\n /*\n * We force one format of options to the other one.\n */\n // @ts-expect-error Default options may have incompatible `Node` / `ElementNode`.\n const opts = options !== null && options !== void 0 ? options : defaultOptions;\n // @ts-expect-error Same as above.\n (_a = opts.adapter) !== null && _a !== void 0 ? _a : (opts.adapter = DomUtils);\n // @ts-expect-error `equals` does not exist on `Options`\n (_b = opts.equals) !== null && _b !== void 0 ? _b : (opts.equals = (_d = (_c = opts.adapter) === null || _c === void 0 ? void 0 : _c.equals) !== null && _d !== void 0 ? _d : defaultEquals);\n return opts;\n}\nfunction wrapCompile(func) {\n return function addAdapter(selector, options, context) {\n const opts = convertOptionFormats(options);\n return func(selector, opts, context);\n };\n}\n/**\n * Compiles the query, returns a function.\n */\nexport const compile = wrapCompile(compileRaw);\nexport const _compileUnsafe = wrapCompile(compileUnsafe);\nexport const _compileToken = wrapCompile(compileToken);\nfunction getSelectorFunc(searchFunc) {\n return function select(query, elements, options) {\n const opts = convertOptionFormats(options);\n if (typeof query !== \"function\") {\n query = compileUnsafe(query, opts, elements);\n }\n const filteredElements = prepareContext(elements, opts.adapter, query.shouldTestNextSiblings);\n return searchFunc(query, filteredElements, opts);\n };\n}\nexport function prepareContext(elems, adapter, shouldTestNextSiblings = false) {\n /*\n * Add siblings if the query requires them.\n * See https://github.com/fb55/css-select/pull/43#issuecomment-225414692\n */\n if (shouldTestNextSiblings) {\n elems = appendNextSiblings(elems, adapter);\n }\n return Array.isArray(elems)\n ? adapter.removeSubsets(elems)\n : adapter.getChildren(elems);\n}\nfunction appendNextSiblings(elem, adapter) {\n // Order matters because jQuery seems to check the children before the siblings\n const elems = Array.isArray(elem) ? elem.slice(0) : [elem];\n const elemsLength = elems.length;\n for (let i = 0; i < elemsLength; i++) {\n const nextSiblings = getNextSiblings(elems[i], adapter);\n elems.push(...nextSiblings);\n }\n return elems;\n}\n/**\n * @template Node The generic Node type for the DOM adapter being used.\n * @template ElementNode The Node type for elements for the DOM adapter being used.\n * @param elems Elements to query. If it is an element, its children will be queried..\n * @param query can be either a CSS selector string or a compiled query function.\n * @param [options] options for querying the document.\n * @see compile for supported selector queries.\n * @returns All matching elements.\n *\n */\nexport const selectAll = getSelectorFunc((query, elems, options) => query === boolbase.falseFunc || !elems || elems.length === 0\n ? []\n : options.adapter.findAll(query, elems));\n/**\n * @template Node The generic Node type for the DOM adapter being used.\n * @template ElementNode The Node type for elements for the DOM adapter being used.\n * @param elems Elements to query. If it is an element, its children will be queried..\n * @param query can be either a CSS selector string or a compiled query function.\n * @param [options] options for querying the document.\n * @see compile for supported selector queries.\n * @returns the first match, or null if there was no match.\n */\nexport const selectOne = getSelectorFunc((query, elems, options) => query === boolbase.falseFunc || !elems || elems.length === 0\n ? null\n : options.adapter.findOne(query, elems));\n/**\n * Tests whether or not an element is matched by query.\n *\n * @template Node The generic Node type for the DOM adapter being used.\n * @template ElementNode The Node type for elements for the DOM adapter being used.\n * @param elem The element to test if it matches the query.\n * @param query can be either a CSS selector string or a compiled query function.\n * @param [options] options for querying the document.\n * @see compile for supported selector queries.\n * @returns\n */\nexport function is(elem, query, options) {\n const opts = convertOptionFormats(options);\n return (typeof query === \"function\" ? query : compileRaw(query, opts))(elem);\n}\n/**\n * Alias for selectAll(query, elems, options).\n * @see [compile] for supported selector queries.\n */\nexport default selectAll;\n// Export filters, pseudos and aliases to allow users to supply their own.\n/** @deprecated Use the `pseudos` option instead. */\nexport { filters, pseudos, aliases } from \"./pseudo-selectors/index.js\";\n//# sourceMappingURL=index.js.map","import * as CSSselect from 'css-select';\n\nimport {ELEMENT_NODE, TEXT_NODE} from './constants.js';\nimport {ignoreCase} from './utils.js';\n\nconst {isArray} = Array;\n\n/* c8 ignore start */\nconst isTag = ({nodeType}) => nodeType === ELEMENT_NODE;\n\nconst existsOne = (test, elements) => elements.some(\n element => isTag(element) && (\n test(element) ||\n existsOne(test, getChildren(element))\n )\n);\n\nconst getAttributeValue = (element, name) => name === 'class' ?\n element.classList.value : element.getAttribute(name);\n\nconst getChildren = ({childNodes}) => childNodes;\n\nconst getName = (element) => {\n const {localName} = element;\n return ignoreCase(element) ? localName.toLowerCase() : localName;\n};\n\nconst getParent = ({parentNode}) => parentNode;\n\nconst getSiblings = element => {\n const {parentNode} = element;\n return parentNode ? getChildren(parentNode) : element;\n};\n\nconst getText = node => {\n if (isArray(node))\n return node.map(getText).join('');\n if (isTag(node))\n return getText(getChildren(node));\n if (node.nodeType === TEXT_NODE)\n return node.data;\n return '';\n};\n\nconst hasAttrib = (element, name) => element.hasAttribute(name);\n\nconst removeSubsets = nodes => {\n let {length} = nodes;\n while (length--) {\n const node = nodes[length];\n if (length && -1 < nodes.lastIndexOf(node, length - 1)) {\n nodes.splice(length, 1);\n continue;\n }\n for (let {parentNode} = node; parentNode; parentNode = parentNode.parentNode) {\n if (nodes.includes(parentNode)) {\n nodes.splice(length, 1);\n break;\n }\n }\n }\n return nodes;\n};\n\nconst findAll = (test, nodes) => {\n const matches = [];\n for (const node of nodes) {\n if (isTag(node)) {\n if (test(node))\n matches.push(node);\n matches.push(...findAll(test, getChildren(node)));\n }\n }\n return matches;\n};\n\nconst findOne = (test, nodes) => {\n for (let node of nodes)\n if (test(node) || (node = findOne(test, getChildren(node))))\n return node;\n return null;\n};\n/* c8 ignore stop */\n\nconst adapter = {\n isTag,\n existsOne,\n getAttributeValue,\n getChildren,\n getName,\n getParent,\n getSiblings,\n getText,\n hasAttrib,\n removeSubsets,\n findAll,\n findOne\n};\n\nexport const prepareMatch = (element, selectors) => CSSselect.compile(\n selectors,\n {\n context: selectors.includes(':scope') ? element : void 0,\n xmlMode: !ignoreCase(element),\n adapter\n }\n);\n\nexport const matches = (element, selectors) => CSSselect.is(\n element,\n selectors,\n {\n strict: true,\n context: selectors.includes(':scope') ? element : void 0,\n xmlMode: !ignoreCase(element),\n adapter\n }\n);\n","import {TEXT_NODE} from '../shared/constants.js';\nimport {VALUE} from '../shared/symbols.js';\nimport {escape} from '../shared/text-escaper.js';\n\nimport {CharacterData} from './character-data.js';\n\n/**\n * @implements globalThis.Text\n */\nexport class Text extends CharacterData {\n constructor(ownerDocument, data = '') {\n super(ownerDocument, '#text', TEXT_NODE, data);\n }\n\n get wholeText() {\n const text = [];\n let {previousSibling, nextSibling} = this;\n while (previousSibling) {\n if (previousSibling.nodeType === TEXT_NODE)\n text.unshift(previousSibling[VALUE]);\n else\n break;\n previousSibling = previousSibling.previousSibling;\n }\n text.push(this[VALUE]);\n while (nextSibling) {\n if (nextSibling.nodeType === TEXT_NODE)\n text.push(nextSibling[VALUE]);\n else\n break;\n nextSibling = nextSibling.nextSibling;\n }\n return text.join('');\n }\n\n cloneNode() {\n const {ownerDocument, [VALUE]: data} = this;\n return new Text(ownerDocument, data);\n }\n\n toString() { return escape(this[VALUE]); }\n}\n","// https://dom.spec.whatwg.org/#interface-parentnode\n// Document, DocumentFragment, Element\n\nimport {\n ATTRIBUTE_NODE,\n DOCUMENT_FRAGMENT_NODE,\n ELEMENT_NODE,\n TEXT_NODE,\n NODE_END,\n CDATA_SECTION_NODE,\n COMMENT_NODE\n} from '../shared/constants.js';\n\nimport {PRIVATE, END, NEXT, PREV, START, VALUE} from '../shared/symbols.js';\n\nimport {prepareMatch} from '../shared/matches.js';\nimport {previousSibling, nextSibling} from '../shared/node.js';\nimport {getEnd, knownAdjacent, knownBoundaries, knownSegment, knownSiblings, localCase} from '../shared/utils.js';\n\nimport {Node} from '../interface/node.js';\nimport {Text} from '../interface/text.js';\nimport {NodeList} from '../interface/node-list.js';\n\nimport {moCallback} from '../interface/mutation-observer.js';\nimport {connectedCallback} from '../interface/custom-element-registry.js';\n\nimport {nextElementSibling} from './non-document-type-child-node.js';\n\nconst isNode = node => node instanceof Node;\n\nconst insert = (parentNode, child, nodes) => {\n const {ownerDocument} = parentNode;\n for (const node of nodes)\n parentNode.insertBefore(\n isNode(node) ? node : new Text(ownerDocument, node),\n child\n );\n};\n\n/** @typedef { import('../interface/element.js').Element & {\n [typeof NEXT]: NodeStruct,\n [typeof PREV]: NodeStruct,\n [typeof START]: NodeStruct,\n nodeType: typeof ATTRIBUTE_NODE | typeof DOCUMENT_FRAGMENT_NODE | typeof ELEMENT_NODE | typeof TEXT_NODE | typeof NODE_END | typeof COMMENT_NODE | typeof CDATA_SECTION_NODE,\n ownerDocument: Document,\n parentNode: ParentNode,\n}} NodeStruct */\n\nexport class ParentNode extends Node {\n constructor(ownerDocument, localName, nodeType) {\n super(ownerDocument, localName, nodeType);\n this[PRIVATE] = null;\n /** @type {NodeStruct} */\n this[NEXT] = this[END] = {\n [NEXT]: null,\n [PREV]: this,\n [START]: this,\n nodeType: NODE_END,\n ownerDocument: this.ownerDocument,\n parentNode: null\n };\n }\n\n get childNodes() {\n const childNodes = new NodeList;\n let {firstChild} = this;\n while (firstChild) {\n childNodes.push(firstChild);\n firstChild = nextSibling(firstChild);\n }\n return childNodes;\n }\n\n get children() {\n const children = new NodeList;\n let {firstElementChild} = this;\n while (firstElementChild) {\n children.push(firstElementChild);\n firstElementChild = nextElementSibling(firstElementChild);\n }\n return children;\n }\n\n /**\n * @returns {NodeStruct | null}\n */\n get firstChild() {\n let {[NEXT]: next, [END]: end} = this;\n while (next.nodeType === ATTRIBUTE_NODE)\n next = next[NEXT];\n return next === end ? null : next;\n }\n\n /**\n * @returns {NodeStruct | null}\n */\n get firstElementChild() {\n let {firstChild} = this;\n while (firstChild) {\n if (firstChild.nodeType === ELEMENT_NODE)\n return firstChild;\n firstChild = nextSibling(firstChild);\n }\n return null;\n }\n\n get lastChild() {\n const prev = this[END][PREV];\n switch (prev.nodeType) {\n case NODE_END:\n return prev[START];\n case ATTRIBUTE_NODE:\n return null;\n }\n return prev === this ? null : prev;\n }\n\n get lastElementChild() {\n let {lastChild} = this;\n while (lastChild) {\n if (lastChild.nodeType === ELEMENT_NODE)\n return lastChild;\n lastChild = previousSibling(lastChild);\n }\n return null;\n }\n\n get childElementCount() {\n return this.children.length;\n }\n\n prepend(...nodes) {\n insert(this, this.firstChild, nodes);\n }\n\n append(...nodes) {\n insert(this, this[END], nodes);\n }\n\n replaceChildren(...nodes) {\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end && next.nodeType === ATTRIBUTE_NODE)\n next = next[NEXT];\n while (next !== end) {\n const after = getEnd(next)[NEXT];\n next.remove();\n next = after;\n }\n if (nodes.length)\n insert(this, end, nodes);\n }\n\n getElementsByClassName(className) {\n const elements = new NodeList;\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (\n next.nodeType === ELEMENT_NODE &&\n next.hasAttribute('class') &&\n next.classList.has(className)\n )\n elements.push(next);\n next = next[NEXT];\n }\n return elements;\n }\n\n getElementsByTagName(tagName) {\n const elements = new NodeList;\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE && (\n next.localName === tagName ||\n localCase(next) === tagName\n ))\n elements.push(next);\n next = next[NEXT];\n }\n return elements;\n }\n\n querySelector(selectors) {\n const matches = prepareMatch(this, selectors);\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE && matches(next))\n return next;\n next = next.nodeType === ELEMENT_NODE && next.localName === 'template' ? next[END] : next[NEXT];\n }\n return null;\n }\n\n querySelectorAll(selectors) {\n const matches = prepareMatch(this, selectors);\n const elements = new NodeList;\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE && matches(next))\n elements.push(next);\n next = next.nodeType === ELEMENT_NODE && next.localName === 'template' ? next[END] : next[NEXT];\n }\n return elements;\n }\n\n appendChild(node) {\n return this.insertBefore(node, this[END]);\n }\n\n contains(node) {\n let parentNode = node;\n while (parentNode && parentNode !== this)\n parentNode = parentNode.parentNode;\n return parentNode === this;\n }\n\n insertBefore(node, before = null) {\n if (node === before)\n return node;\n if (node === this)\n throw new Error('unable to append a node to itself');\n const next = before || this[END];\n switch (node.nodeType) {\n case ELEMENT_NODE:\n node.remove();\n node.parentNode = this;\n knownBoundaries(next[PREV], node, next);\n moCallback(node, null);\n connectedCallback(node);\n break;\n case DOCUMENT_FRAGMENT_NODE: {\n let {[PRIVATE]: parentNode, firstChild, lastChild} = node;\n if (firstChild) {\n knownSegment(next[PREV], firstChild, lastChild, next);\n knownAdjacent(node, node[END]);\n if (parentNode)\n parentNode.replaceChildren();\n do {\n firstChild.parentNode = this;\n moCallback(firstChild, null);\n if (firstChild.nodeType === ELEMENT_NODE)\n connectedCallback(firstChild);\n } while (\n firstChild !== lastChild &&\n (firstChild = nextSibling(firstChild))\n );\n }\n break;\n }\n case TEXT_NODE:\n case COMMENT_NODE:\n case CDATA_SECTION_NODE:\n node.remove();\n /* eslint no-fallthrough:0 */\n // this covers DOCUMENT_TYPE_NODE too\n default:\n node.parentNode = this;\n knownSiblings(next[PREV], node, next);\n moCallback(node, null);\n break;\n }\n return node;\n }\n\n normalize() {\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n const {[NEXT]: $next, [PREV]: $prev, nodeType} = next;\n if (nodeType === TEXT_NODE) {\n if (!next[VALUE])\n next.remove();\n else if ($prev && $prev.nodeType === TEXT_NODE) {\n $prev.textContent += next.textContent;\n next.remove();\n }\n }\n next = $next;\n }\n }\n\n removeChild(node) {\n if (node.parentNode !== this)\n throw new Error('node is not a child');\n node.remove();\n return node;\n }\n\n replaceChild(node, replaced) {\n const next = getEnd(replaced)[NEXT];\n replaced.remove();\n this.insertBefore(node, next);\n return replaced;\n }\n}\n","// https://dom.spec.whatwg.org/#interface-nonelementparentnode\n// Document, DocumentFragment\n\nimport {ELEMENT_NODE} from '../shared/constants.js';\nimport {END, NEXT} from '../shared/symbols.js';\nimport {nonElementAsJSON} from '../shared/jsdon.js';\n\nimport {ParentNode} from './parent-node.js';\n\nexport class NonElementParentNode extends ParentNode {\n getElementById(id) {\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE && next.id === id)\n return next;\n next = next[NEXT];\n }\n return null;\n }\n\n cloneNode(deep) {\n const {ownerDocument, constructor} = this;\n const nonEPN = new constructor(ownerDocument);\n if (deep) {\n const {[END]: end} = nonEPN;\n for (const node of this.childNodes)\n nonEPN.insertBefore(node.cloneNode(deep), end);\n }\n return nonEPN; \n }\n\n toString() {\n const {childNodes, localName} = this;\n return `<${localName}>${childNodes.join('')}</${localName}>`;\n }\n\n toJSON() {\n const json = [];\n nonElementAsJSON(this, json);\n return json;\n }\n}\n","import {DOCUMENT_FRAGMENT_NODE} from '../shared/constants.js';\nimport {NonElementParentNode} from '../mixin/non-element-parent-node.js';\n\n/**\n * @implements globalThis.DocumentFragment\n */\nexport class DocumentFragment extends NonElementParentNode {\n constructor(ownerDocument) {\n super(ownerDocument, '#document-fragment', DOCUMENT_FRAGMENT_NODE);\n }\n}\n","import {DOCUMENT_TYPE_NODE} from '../shared/constants.js';\nimport {documentTypeAsJSON} from '../shared/jsdon.js';\n\nimport {Node} from './node.js';\n\n/**\n * @implements globalThis.DocumentType\n */\nexport class DocumentType extends Node {\n constructor(ownerDocument, name, publicId = '', systemId = '') {\n super(ownerDocument, '#document-type', DOCUMENT_TYPE_NODE);\n this.name = name;\n this.publicId = publicId;\n this.systemId = systemId;\n }\n\n cloneNode() {\n const {ownerDocument, name, publicId, systemId} = this;\n return new DocumentType(ownerDocument, name, publicId, systemId);\n }\n\n toString() {\n const {name, publicId, systemId} = this;\n const hasPublic = 0 < publicId.length;\n const str = [name];\n if (hasPublic)\n str.push('PUBLIC', `\"${publicId}\"`);\n if (systemId.length) {\n if (!hasPublic)\n str.push('SYSTEM');\n str.push(`\"${systemId}\"`);\n }\n return `<!DOCTYPE ${str.join(' ')}>`;\n }\n\n toJSON() {\n const json = [];\n documentTypeAsJSON(this, json);\n return json;\n }\n}\n","import {ELEMENT_NODE, DOCUMENT_FRAGMENT_NODE} from '../shared/constants.js';\nimport {CUSTOM_ELEMENTS} from '../shared/symbols.js';\nimport {parseFromString} from '../shared/parse-from-string.js';\nimport {ignoreCase} from '../shared/utils.js';\n\n\n/**\n * @param {Node} node\n * @returns {String}\n */\nexport const getInnerHtml = node => node.childNodes.join('');\n\n/**\n * @param {Node} node\n * @param {String} html\n */\nexport const setInnerHtml = (node, html) => {\n const {ownerDocument} = node;\n const {constructor} = ownerDocument;\n const document = new constructor;\n document[CUSTOM_ELEMENTS] = ownerDocument[CUSTOM_ELEMENTS];\n const {childNodes} = parseFromString(document, ignoreCase(node), html);\n\n node.replaceChildren(...childNodes.map(setOwnerDocument, ownerDocument));\n};\n\nfunction setOwnerDocument(node) {\n node.ownerDocument = this;\n switch (node.nodeType) {\n case ELEMENT_NODE:\n case DOCUMENT_FRAGMENT_NODE:\n node.childNodes.forEach(setOwnerDocument, this);\n break;\n }\n return node;\n}\n","export default camel => camel.replace(/(([A-Z0-9])([A-Z0-9][a-z]))|(([a-z0-9]+)([A-Z]))/g, '$2$5-$3$6')\n .toLowerCase();\n","import uhyphen from 'uhyphen';\nimport {setPrototypeOf} from '../shared/object.js';\n\nconst refs = new WeakMap;\n\nconst key = name => `data-${uhyphen(name)}`;\nconst prop = name => name.slice(5).replace(/-([a-z])/g, (_, $1) => $1.toUpperCase());\n\nconst handler = {\n get(dataset, name) {\n if (name in dataset)\n return refs.get(dataset).getAttribute(key(name));\n },\n\n set(dataset, name, value) {\n dataset[name] = value;\n refs.get(dataset).setAttribute(key(name), value);\n return true;\n },\n\n deleteProperty(dataset, name) {\n if (name in dataset)\n refs.get(dataset).removeAttribute(key(name));\n return delete dataset[name];\n }\n};\n\n/**\n * @implements globalThis.DOMStringMap\n */\nexport class DOMStringMap {\n /**\n * @param {Element} ref\n */\n constructor(ref) {\n for (const {name, value} of ref.attributes) {\n if (/^data-/.test(name))\n this[prop(name)] = value;\n }\n refs.set(this, ref);\n return new Proxy(this, handler);\n }\n}\n\nsetPrototypeOf(DOMStringMap.prototype, null);\n","import {OWNER_ELEMENT} from '../shared/symbols.js';\nimport {setAttribute} from '../shared/attributes.js';\n\nimport {Attr} from '../interface/attr.js';\n\nconst {add} = Set.prototype;\nconst addTokens = (self, tokens) => {\n for (const token of tokens) {\n if (token)\n add.call(self, token);\n }\n};\n\nconst update = ({[OWNER_ELEMENT]: ownerElement, value}) => {\n const attribute = ownerElement.getAttributeNode('class');\n if (attribute)\n attribute.value = value;\n else\n setAttribute(\n ownerElement,\n new Attr(ownerElement.ownerDocument, 'class', value)\n );\n};\n\n/**\n * @implements globalThis.DOMTokenList\n */\nexport class DOMTokenList extends Set {\n\n constructor(ownerElement) {\n super();\n this[OWNER_ELEMENT] = ownerElement;\n const attribute = ownerElement.getAttributeNode('class');\n if (attribute)\n addTokens(this, attribute.value.split(/\\s+/));\n }\n\n get length() { return this.size; }\n\n get value() { return [...this].join(' '); }\n\n /**\n * @param {...string} tokens\n */\n add(...tokens) {\n addTokens(this, tokens);\n update(this);\n }\n\n /**\n * @param {string} token\n */\n contains(token) { return this.has(token); }\n\n /**\n * @param {...string} tokens\n */\n remove(...tokens) {\n for (const token of tokens)\n this.delete(token);\n update(this);\n }\n\n /**\n * @param {string} token\n * @param {boolean?} force\n */\n toggle(token, force) {\n if (this.has(token)) {\n if (force)\n return true;\n this.delete(token);\n update(this);\n }\n else if (force || arguments.length === 1) {\n super.add(token);\n update(this);\n return true;\n }\n return false;\n }\n\n /**\n * @param {string} token\n * @param {string} newToken\n */\n replace(token, newToken) {\n if (this.has(token)) {\n this.delete(token);\n super.add(newToken);\n update(this);\n return true;\n }\n return false;\n }\n\n /**\n * @param {string} token\n */\n supports() { return true; }\n}\n","import uhyphen from 'uhyphen';\n\nimport {CHANGED, PRIVATE, VALUE} from '../shared/symbols.js';\n\nconst refs = new WeakMap;\n\nconst getKeys = style => [...style.keys()].filter(key => key !== PRIVATE);\n\nconst updateKeys = style => {\n const attr = refs.get(style).getAttributeNode('style');\n if (!attr || attr[CHANGED] || style.get(PRIVATE) !== attr) {\n style.clear();\n if (attr) {\n style.set(PRIVATE, attr);\n for (const rule of attr[VALUE].split(/\\s*;\\s*/)) {\n let [key, ...rest] = rule.split(':');\n if (rest.length > 0) {\n key = key.trim();\n const value = rest.join(':').trim();\n if (key && value)\n style.set(key, value);\n }\n }\n }\n }\n return attr;\n};\n\nconst handler = {\n get(style, name) {\n if (name in prototype)\n return style[name];\n updateKeys(style);\n if (name === 'length')\n return getKeys(style).length;\n if (/^\\d+$/.test(name))\n return getKeys(style)[name];\n return style.get(uhyphen(name));\n },\n\n set(style, name, value) {\n if (name === 'cssText')\n style[name] = value;\n else {\n let attr = updateKeys(style);\n if (value == null)\n style.delete(uhyphen(name));\n else\n style.set(uhyphen(name), value);\n if (!attr) {\n const element = refs.get(style);\n attr = element.ownerDocument.createAttribute('style');\n element.setAttributeNode(attr);\n style.set(PRIVATE, attr);\n }\n attr[CHANGED] = false;\n attr[VALUE] = style.toString();\n }\n return true;\n }\n};\n\n/**\n * @implements globalThis.CSSStyleDeclaration\n */\nexport class CSSStyleDeclaration extends Map {\n constructor(element) {\n super();\n refs.set(this, element);\n /* c8 ignore start */\n return new Proxy(this, handler);\n /* c8 ignore stop */\n }\n\n get cssText() {\n return this.toString();\n }\n\n set cssText(value) {\n refs.get(this).setAttribute('style', value);\n }\n\n getPropertyValue(name) {\n const self = this[PRIVATE];\n return handler.get(self, name);\n }\n\n setProperty(name, value) {\n const self = this[PRIVATE];\n handler.set(self, name, value);\n }\n\n removeProperty(name) {\n const self = this[PRIVATE];\n handler.set(self, name, null);\n }\n\n [Symbol.iterator]() {\n const self = this[PRIVATE];\n updateKeys(self);\n const keys = getKeys(self);\n const {length} = keys;\n let i = 0;\n return {\n next() {\n const done = i === length;\n return {done, value: done ? null : keys[i++]};\n }\n };\n }\n\n get[PRIVATE]() { return this; }\n\n toString() {\n const self = this[PRIVATE];\n updateKeys(self);\n const cssText = [];\n self.forEach(push, cssText);\n return cssText.join(';');\n }\n}\n\nconst {prototype} = CSSStyleDeclaration;\n\nfunction push(value, key) {\n if (key !== PRIVATE)\n this.push(`${key}:${value}`);\n}\n","// https://dom.spec.whatwg.org/#interface-event\n\n/* c8 ignore start */\n\n// Node 15 has Event but 14 and 12 don't\nconst BUBBLING_PHASE = 3;\nconst AT_TARGET = 2;\nconst CAPTURING_PHASE = 1;\nconst NONE = 0;\n\nfunction getCurrentTarget(ev) {\n return ev.currentTarget;\n}\n\n/**\n * @implements globalThis.Event\n */\nclass GlobalEvent {\n static get BUBBLING_PHASE() { return BUBBLING_PHASE; }\n static get AT_TARGET() { return AT_TARGET; }\n static get CAPTURING_PHASE() { return CAPTURING_PHASE; }\n static get NONE() { return NONE; }\n\n constructor(type, eventInitDict = {}) {\n this.type = type;\n this.bubbles = !!eventInitDict.bubbles;\n this.cancelBubble = false;\n this._stopImmediatePropagationFlag = false;\n this.cancelable = !!eventInitDict.cancelable;\n this.eventPhase = this.NONE;\n this.timeStamp = Date.now();\n this.defaultPrevented = false;\n this.originalTarget = null;\n this.returnValue = null;\n this.srcElement = null;\n this.target = null;\n this._path = [];\n }\n\n get BUBBLING_PHASE() { return BUBBLING_PHASE; }\n get AT_TARGET() { return AT_TARGET; }\n get CAPTURING_PHASE() { return CAPTURING_PHASE; }\n get NONE() { return NONE; }\n\n preventDefault() { this.defaultPrevented = true; }\n\n // simplified implementation, should be https://dom.spec.whatwg.org/#dom-event-composedpath\n composedPath() {\n return this._path.map(getCurrentTarget);\n }\n\n stopPropagation() {\n this.cancelBubble = true;\n }\n \n stopImmediatePropagation() {\n this.stopPropagation();\n this._stopImmediatePropagationFlag = true;\n }\n }\n\nexport {GlobalEvent as Event};\n\n/* c8 ignore stop */\n","/**\n * @implements globalThis.NamedNodeMap\n */\nexport class NamedNodeMap extends Array {\n constructor(ownerElement) {\n super();\n this.ownerElement = ownerElement;\n }\n\n getNamedItem(name) {\n return this.ownerElement.getAttributeNode(name);\n }\n\n setNamedItem(attr) {\n this.ownerElement.setAttributeNode(attr);\n this.unshift(attr);\n }\n\n removeNamedItem(name) {\n const item = this.getNamedItem(name);\n this.ownerElement.removeAttribute(name);\n this.splice(this.indexOf(item), 1);\n }\n\n item(index) {\n return index < this.length ? this[index] : null;\n }\n\n /* c8 ignore start */\n getNamedItemNS(_, name) {\n return this.getNamedItem(name);\n }\n\n setNamedItemNS(_, attr) {\n return this.setNamedItem(attr);\n }\n\n removeNamedItemNS(_, name) {\n return this.removeNamedItem(name);\n }\n /* c8 ignore stop */\n}\n","import {DOCUMENT_FRAGMENT_NODE} from '../shared/constants.js';\nimport {getInnerHtml, setInnerHtml} from '../mixin/inner-html.js';\nimport {NonElementParentNode} from '../mixin/non-element-parent-node.js';\n\n/**\n * @implements globalThis.ShadowRoot\n */\nexport class ShadowRoot extends NonElementParentNode {\n constructor(host) {\n super(host.ownerDocument, '#shadow-root', DOCUMENT_FRAGMENT_NODE);\n this.host = host;\n }\n\n get innerHTML() {\n return getInnerHtml(this);\n }\n set innerHTML(html) {\n setInnerHtml(this, html);\n }\n}\n","// https://dom.spec.whatwg.org/#interface-element\n\nimport {\n ATTRIBUTE_NODE,\n BLOCK_ELEMENTS,\n CDATA_SECTION_NODE,\n COMMENT_NODE,\n ELEMENT_NODE,\n NODE_END,\n TEXT_NODE,\n SVG_NAMESPACE\n} from '../shared/constants.js';\n\nimport {\n setAttribute, removeAttribute,\n numericAttribute, stringAttribute\n} from '../shared/attributes.js';\n\nimport {\n CLASS_LIST, DATASET, STYLE,\n END, NEXT, PREV, START,\n MIME\n} from '../shared/symbols.js';\n\nimport {\n ignoreCase,\n knownAdjacent,\n localCase,\n String\n} from '../shared/utils.js';\n\nimport {elementAsJSON} from '../shared/jsdon.js';\nimport {matches, prepareMatch} from '../shared/matches.js';\nimport {shadowRoots} from '../shared/shadow-roots.js';\n\nimport {isConnected, parentElement, previousSibling, nextSibling} from '../shared/node.js';\nimport {previousElementSibling, nextElementSibling} from '../mixin/non-document-type-child-node.js';\n\nimport {before, after, replaceWith, remove} from '../mixin/child-node.js';\nimport {getInnerHtml, setInnerHtml} from '../mixin/inner-html.js';\nimport {ParentNode} from '../mixin/parent-node.js';\n\nimport {DOMStringMap} from '../dom/string-map.js';\nimport {DOMTokenList} from '../dom/token-list.js';\n\nimport {CSSStyleDeclaration} from './css-style-declaration.js';\nimport {Event} from './event.js';\nimport {NamedNodeMap} from './named-node-map.js';\nimport {ShadowRoot} from './shadow-root.js';\nimport {NodeList} from './node-list.js';\nimport {Attr} from './attr.js';\nimport {Text} from './text.js';\nimport {escape} from '../shared/text-escaper.js';\n\n// <utils>\nconst attributesHandler = {\n get(target, key) {\n return key in target ? target[key] : target.find(({name}) => name === key);\n }\n};\n\nconst create = (ownerDocument, element, localName) => {\n if ('ownerSVGElement' in element) {\n const svg = ownerDocument.createElementNS(SVG_NAMESPACE, localName);\n svg.ownerSVGElement = element.ownerSVGElement;\n return svg;\n }\n return ownerDocument.createElement(localName);\n};\n\nconst isVoid = ({localName, ownerDocument}) => {\n return ownerDocument[MIME].voidElements.test(localName);\n};\n\n// </utils>\n\n/**\n * @implements globalThis.Element\n */\nexport class Element extends ParentNode {\n constructor(ownerDocument, localName) {\n super(ownerDocument, localName, ELEMENT_NODE);\n this[CLASS_LIST] = null;\n this[DATASET] = null;\n this[STYLE] = null;\n }\n\n // <Mixins>\n get isConnected() { return isConnected(this); }\n get parentElement() { return parentElement(this); }\n get previousSibling() { return previousSibling(this); }\n get nextSibling() { return nextSibling(this); }\n get namespaceURI() {\n return 'http://www.w3.org/1999/xhtml';\n }\n\n get previousElementSibling() { return previousElementSibling(this); }\n get nextElementSibling() { return nextElementSibling(this); }\n\n before(...nodes) { before(this, nodes); }\n after(...nodes) { after(this, nodes); }\n replaceWith(...nodes) { replaceWith(this, nodes); }\n remove() { remove(this[PREV], this, this[END][NEXT]); }\n // </Mixins>\n\n // <specialGetters>\n get id() { return stringAttribute.get(this, 'id'); }\n set id(value) { stringAttribute.set(this, 'id', value); }\n\n get className() { return this.classList.value; }\n set className(value) {\n const {classList} = this;\n classList.clear();\n classList.add(...(String(value).split(/\\s+/)));\n }\n\n get nodeName() { return localCase(this); }\n get tagName() { return localCase(this); }\n\n get classList() {\n return this[CLASS_LIST] || (\n this[CLASS_LIST] = new DOMTokenList(this)\n );\n }\n\n get dataset() {\n return this[DATASET] || (\n this[DATASET] = new DOMStringMap(this)\n );\n }\n\n getBoundingClientRect() {\n return {\n x: 0,\n y: 0,\n bottom: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n width: 0\n };\n }\n\n get nonce() { return stringAttribute.get(this, 'nonce'); }\n set nonce(value) { stringAttribute.set(this, 'nonce', value); }\n\n get style() {\n return this[STYLE] || (\n this[STYLE] = new CSSStyleDeclaration(this)\n );\n }\n\n get tabIndex() { return numericAttribute.get(this, 'tabindex') || -1; }\n set tabIndex(value) { numericAttribute.set(this, 'tabindex', value); }\n\n get slot() { return stringAttribute.get(this, 'slot'); }\n set slot(value) { stringAttribute.set(this, 'slot', value); }\n // </specialGetters>\n\n\n // <contentRelated>\n get innerText() {\n const text = [];\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === TEXT_NODE) {\n text.push(next.textContent.replace(/\\s+/g, ' '));\n } else if(\n text.length && next[NEXT] != end &&\n BLOCK_ELEMENTS.has(next.tagName)\n ) {\n text.push('\\n');\n }\n next = next[NEXT];\n }\n return text.join('');\n }\n\n /**\n * @returns {String}\n */\n get textContent() {\n const text = [];\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === TEXT_NODE)\n text.push(next.textContent);\n next = next[NEXT];\n }\n return text.join('');\n }\n\n set textContent(text) {\n this.replaceChildren();\n if (text != null && text !== '')\n this.appendChild(new Text(this.ownerDocument, text));\n }\n\n get innerHTML() {\n return getInnerHtml(this);\n }\n set innerHTML(html) {\n setInnerHtml(this, html);\n }\n\n get outerHTML() { return this.toString(); }\n set outerHTML(html) {\n const template = this.ownerDocument.createElement('');\n template.innerHTML = html;\n this.replaceWith(...template.childNodes);\n }\n // </contentRelated>\n\n // <attributes>\n get attributes() {\n const attributes = new NamedNodeMap(this);\n let next = this[NEXT];\n while (next.nodeType === ATTRIBUTE_NODE) {\n attributes.push(next);\n next = next[NEXT];\n }\n return new Proxy(attributes, attributesHandler);\n }\n\n focus() { this.dispatchEvent(new Event('focus')); }\n\n getAttribute(name) {\n if (name === 'class')\n return this.className;\n const attribute = this.getAttributeNode(name);\n return attribute && (ignoreCase(this) ? attribute.value : escape(attribute.value));\n }\n\n getAttributeNode(name) {\n let next = this[NEXT];\n while (next.nodeType === ATTRIBUTE_NODE) {\n if (next.name === name)\n return next;\n next = next[NEXT];\n }\n return null;\n }\n\n getAttributeNames() {\n const attributes = new NodeList;\n let next = this[NEXT];\n while (next.nodeType === ATTRIBUTE_NODE) {\n attributes.push(next.name);\n next = next[NEXT];\n }\n return attributes;\n }\n\n hasAttribute(name) { return !!this.getAttributeNode(name); }\n hasAttributes() { return this[NEXT].nodeType === ATTRIBUTE_NODE; }\n\n removeAttribute(name) {\n if (name === 'class' && this[CLASS_LIST])\n this[CLASS_LIST].clear();\n let next = this[NEXT];\n while (next.nodeType === ATTRIBUTE_NODE) {\n if (next.name === name) {\n removeAttribute(this, next);\n return;\n }\n next = next[NEXT];\n }\n }\n\n removeAttributeNode(attribute) {\n let next = this[NEXT];\n while (next.nodeType === ATTRIBUTE_NODE) {\n if (next === attribute) {\n removeAttribute(this, next);\n return;\n }\n next = next[NEXT];\n }\n }\n\n setAttribute(name, value) {\n if (name === 'class')\n this.className = value;\n else {\n const attribute = this.getAttributeNode(name);\n if (attribute)\n attribute.value = value;\n else\n setAttribute(this, new Attr(this.ownerDocument, name, value));\n }\n }\n\n setAttributeNode(attribute) {\n const {name} = attribute;\n const previously = this.getAttributeNode(name);\n if (previously !== attribute) {\n if (previously)\n this.removeAttributeNode(previously);\n const {ownerElement} = attribute;\n if (ownerElement)\n ownerElement.removeAttributeNode(attribute);\n setAttribute(this, attribute);\n }\n return previously;\n }\n\n toggleAttribute(name, force) {\n if (this.hasAttribute(name)) {\n if (!force) {\n this.removeAttribute(name);\n return false;\n }\n return true;\n }\n else if (force || arguments.length === 1) {\n this.setAttribute(name, '');\n return true;\n }\n return false;\n }\n // </attributes>\n\n // <ShadowDOM>\n get shadowRoot() {\n if (shadowRoots.has(this)) {\n const {mode, shadowRoot} = shadowRoots.get(this);\n if (mode === 'open')\n return shadowRoot;\n }\n return null;\n }\n\n attachShadow(init) {\n if (shadowRoots.has(this))\n throw new Error('operation not supported');\n // TODO: shadowRoot should be likely a specialized class that extends DocumentFragment\n // but until DSD is out, I am not sure I should spend time on this.\n const shadowRoot = new ShadowRoot(this);\n shadowRoots.set(this, {\n mode: init.mode,\n shadowRoot\n });\n return shadowRoot;\n }\n // </ShadowDOM>\n\n // <selectors>\n matches(selectors) { return matches(this, selectors); }\n closest(selectors) {\n let parentElement = this;\n const matches = prepareMatch(parentElement, selectors);\n while (parentElement && !matches(parentElement))\n parentElement = parentElement.parentElement;\n return parentElement;\n }\n // </selectors>\n\n // <insertAdjacent>\n insertAdjacentElement(position, element) {\n const {parentElement} = this;\n switch (position) {\n case 'beforebegin':\n if (parentElement) {\n parentElement.insertBefore(element, this);\n break;\n }\n return null;\n case 'afterbegin':\n this.insertBefore(element, this.firstChild);\n break;\n case 'beforeend':\n this.insertBefore(element, null);\n break;\n case 'afterend':\n if (parentElement) {\n parentElement.insertBefore(element, this.nextSibling);\n break;\n }\n return null;\n }\n return element;\n }\n\n insertAdjacentHTML(position, html) {\n const template = this.ownerDocument.createElement('template');\n template.innerHTML = html;\n this.insertAdjacentElement(position, template.content);\n }\n\n insertAdjacentText(position, text) {\n const node = this.ownerDocument.createTextNode(text);\n this.insertAdjacentElement(position, node);\n }\n // </insertAdjacent>\n\n cloneNode(deep = false) {\n const {ownerDocument, localName} = this;\n const addNext = next => {\n next.parentNode = parentNode;\n knownAdjacent($next, next);\n $next = next;\n };\n const clone = create(ownerDocument, this, localName);\n let parentNode = clone, $next = clone;\n let {[NEXT]: next, [END]: prev} = this;\n while (next !== prev && (deep || next.nodeType === ATTRIBUTE_NODE)) {\n switch (next.nodeType) {\n case NODE_END:\n knownAdjacent($next, parentNode[END]);\n $next = parentNode[END];\n parentNode = parentNode.parentNode;\n break;\n case ELEMENT_NODE: {\n const node = create(ownerDocument, next, next.localName);\n addNext(node);\n parentNode = node;\n break;\n }\n case ATTRIBUTE_NODE: {\n const attr = next.cloneNode(deep);\n attr.ownerElement = parentNode;\n addNext(attr);\n break;\n }\n case TEXT_NODE:\n case COMMENT_NODE:\n case CDATA_SECTION_NODE:\n addNext(next.cloneNode(deep));\n break;\n }\n next = next[NEXT];\n }\n knownAdjacent($next, clone[END]);\n return clone;\n }\n\n // <custom>\n toString() {\n const out = [];\n const {[END]: end} = this;\n let next = {[NEXT]: this};\n let isOpened = false;\n do {\n next = next[NEXT];\n switch (next.nodeType) {\n case ATTRIBUTE_NODE: {\n const attr = ' ' + next;\n switch (attr) {\n case ' id':\n case ' class':\n case ' style':\n break;\n default:\n out.push(attr);\n }\n break;\n }\n case NODE_END: {\n const start = next[START];\n if (isOpened) {\n if ('ownerSVGElement' in start)\n out.push(' />');\n else if (isVoid(start))\n out.push(ignoreCase(start) ? '>' : ' />');\n else\n out.push(`></${start.localName}>`);\n isOpened = false;\n }\n else\n out.push(`</${start.localName}>`);\n break;\n }\n case ELEMENT_NODE:\n if (isOpened)\n out.push('>');\n if (next.toString !== this.toString) {\n out.push(next.toString());\n next = next[END];\n isOpened = false;\n }\n else {\n out.push(`<${next.localName}`);\n isOpened = true;\n }\n break;\n case TEXT_NODE:\n case COMMENT_NODE:\n case CDATA_SECTION_NODE:\n out.push((isOpened ? '>' : '') + next);\n isOpened = false;\n break;\n }\n } while (next !== end);\n return out.join('');\n }\n\n toJSON() {\n const json = [];\n elementAsJSON(this, json);\n return json;\n }\n // </custom>\n\n\n /* c8 ignore start */\n getAttributeNS(_, name) { return this.getAttribute(name); }\n getElementsByTagNameNS(_, name) { return this.getElementsByTagName(name); }\n hasAttributeNS(_, name) { return this.hasAttribute(name); }\n removeAttributeNS(_, name) { this.removeAttribute(name); }\n setAttributeNS(_, name, value) { this.setAttribute(name, value); }\n setAttributeNodeNS(attr) { return this.setAttributeNode(attr); }\n /* c8 ignore stop */\n}\n","import {Element} from '../interface/element.js';\nimport {String} from '../shared/utils.js';\n\nconst classNames = new WeakMap;\n\nconst handler = {\n get(target, name) {\n return target[name];\n },\n set(target, name, value) {\n target[name] = value;\n return true;\n }\n};\n\n/**\n * @implements globalThis.SVGElement\n */\nexport class SVGElement extends Element {\n constructor(ownerDocument, localName, ownerSVGElement = null) {\n super(ownerDocument, localName);\n this.ownerSVGElement = ownerSVGElement;\n }\n\n get className() {\n if (!classNames.has(this))\n classNames.set(this, new Proxy({baseVal: '', animVal: ''}, handler));\n return classNames.get(this);\n }\n\n /* c8 ignore start */\n set className(value) {\n const {classList} = this;\n classList.clear();\n classList.add(...(String(value).split(/\\s+/)));\n }\n /* c8 ignore stop */\n\n get namespaceURI() {\n return 'http://www.w3.org/2000/svg';\n }\n\n getAttribute(name) {\n return name === 'class' ?\n [...this.classList].join(' ') :\n super.getAttribute(name);\n }\n\n setAttribute(name, value) {\n if (name === 'class')\n this.className = value;\n else if (name === 'style') {\n const {className} = this;\n className.baseVal = className.animVal = value;\n }\n super.setAttribute(name, value);\n }\n}\n","import {Attr as _Attr} from '../interface/attr.js';\nimport {CharacterData as _CharacterData} from '../interface/character-data.js';\nimport {CDATASection as _CDATASection} from '../interface/cdata-section.js';\nimport {Comment as _Comment} from '../interface/comment.js';\nimport {DocumentFragment as _DocumentFragment} from '../interface/document-fragment.js';\nimport {DocumentType as _DocumentType} from '../interface/document-type.js';\nimport {Element as _Element} from '../interface/element.js';\nimport {Node as _Node} from '../interface/node.js';\nimport {ShadowRoot as _ShadowRoot} from '../interface/shadow-root.js';\nimport {Text as _Text} from '../interface/text.js';\nimport {SVGElement as _SVGElement} from '../svg/element.js';\n\nimport {setPrototypeOf} from './object.js';\n\n/* c8 ignore start */\nexport const illegalConstructor = () => {\n throw new TypeError('Illegal constructor');\n};\n\nexport function Attr() { illegalConstructor(); }\nsetPrototypeOf(Attr, _Attr);\nAttr.prototype = _Attr.prototype;\n\nexport function CDATASection() { illegalConstructor(); }\nsetPrototypeOf(CDATASection, _CDATASection);\nCDATASection.prototype = _CDATASection.prototype;\n\nexport function CharacterData() { illegalConstructor(); }\nsetPrototypeOf(CharacterData, _CharacterData);\nCharacterData.prototype = _CharacterData.prototype;\n\nexport function Comment() { illegalConstructor(); }\nsetPrototypeOf(Comment, _Comment);\nComment.prototype = _Comment.prototype;\n\nexport function DocumentFragment() { illegalConstructor(); }\nsetPrototypeOf(DocumentFragment, _DocumentFragment);\nDocumentFragment.prototype = _DocumentFragment.prototype;\n\nexport function DocumentType() { illegalConstructor(); }\nsetPrototypeOf(DocumentType, _DocumentType);\nDocumentType.prototype = _DocumentType.prototype;\n\nexport function Element() { illegalConstructor(); }\nsetPrototypeOf(Element, _Element);\nElement.prototype = _Element.prototype;\n\nexport function Node() { illegalConstructor(); }\nsetPrototypeOf(Node, _Node);\nNode.prototype = _Node.prototype;\n\nexport function ShadowRoot() { illegalConstructor(); }\nsetPrototypeOf(ShadowRoot, _ShadowRoot);\nShadowRoot.prototype = _ShadowRoot.prototype;\n\nexport function Text() { illegalConstructor(); }\nsetPrototypeOf(Text, _Text);\nText.prototype = _Text.prototype;\n\nexport function SVGElement() { illegalConstructor(); }\nsetPrototypeOf(SVGElement, _SVGElement);\nSVGElement.prototype = _SVGElement.prototype;\n/* c8 ignore stop */\n\nexport const Facades = {\n Attr,\n CDATASection,\n CharacterData,\n Comment,\n DocumentFragment,\n DocumentType,\n Element,\n Node,\n ShadowRoot,\n Text,\n SVGElement\n};\n","import {END, UPGRADE} from '../shared/symbols.js';\nimport {booleanAttribute, stringAttribute} from '../shared/attributes.js';\n\nimport {Event} from '../interface/event.js';\nimport {Element} from '../interface/element.js';\nimport {Classes, customElements} from '../interface/custom-element-registry.js';\n\nconst Level0 = new WeakMap;\nconst level0 = {\n get(element, name) {\n return Level0.has(element) && Level0.get(element)[name] || null;\n },\n set(element, name, value) {\n if (!Level0.has(element))\n Level0.set(element, {});\n const handlers = Level0.get(element);\n const type = name.slice(2);\n if (handlers[name])\n element.removeEventListener(type, handlers[name], false);\n if ((handlers[name] = value))\n element.addEventListener(type, value, false);\n }\n};\n\n/**\n * @implements globalThis.HTMLElement\n */\nexport class HTMLElement extends Element {\n\n static get observedAttributes() { return []; }\n\n constructor(ownerDocument = null, localName = '') {\n super(ownerDocument, localName);\n\n const ownerLess = !ownerDocument;\n let options;\n\n if (ownerLess) {\n const {constructor: Class} = this;\n if (!Classes.has(Class))\n throw new Error('unable to initialize this Custom Element');\n ({ownerDocument, localName, options} = Classes.get(Class));\n }\n\n if (ownerDocument[UPGRADE]) {\n const {element, values} = ownerDocument[UPGRADE];\n ownerDocument[UPGRADE] = null;\n for (const [key, value] of values)\n element[key] = value;\n return element;\n }\n\n if (ownerLess) {\n this.ownerDocument = this[END].ownerDocument = ownerDocument;\n this.localName = localName;\n customElements.set(this, {connected: false});\n if (options.is)\n this.setAttribute('is', options.is);\n }\n }\n\n /* c8 ignore start */\n\n /* TODO: what about these?\n offsetHeight\n offsetLeft\n offsetParent\n offsetTop\n offsetWidth\n */\n\n blur() { this.dispatchEvent(new Event('blur')); }\n click() {\n const clickEvent = new Event('click', {bubbles: true, cancelable: true});\n clickEvent.button = 0;\n\n this.dispatchEvent(clickEvent);\n }\n\n // Boolean getters\n get accessKeyLabel() {\n const {accessKey} = this;\n return accessKey && `Alt+Shift+${accessKey}`;\n }\n get isContentEditable() { return this.hasAttribute('contenteditable'); }\n\n // Boolean Accessors\n get contentEditable() { return booleanAttribute.get(this, 'contenteditable'); }\n set contentEditable(value) { booleanAttribute.set(this, 'contenteditable', value); }\n get draggable() { return booleanAttribute.get(this, 'draggable'); }\n set draggable(value) { booleanAttribute.set(this, 'draggable', value); }\n get hidden() { return booleanAttribute.get(this, 'hidden'); }\n set hidden(value) { booleanAttribute.set(this, 'hidden', value); }\n get spellcheck() { return booleanAttribute.get(this, 'spellcheck'); }\n set spellcheck(value) { booleanAttribute.set(this, 'spellcheck', value); }\n\n // String Accessors\n get accessKey() { return stringAttribute.get(this, 'accesskey'); }\n set accessKey(value) { stringAttribute.set(this, 'accesskey', value); }\n get dir() { return stringAttribute.get(this, 'dir'); }\n set dir(value) { stringAttribute.set(this, 'dir', value); }\n get lang() { return stringAttribute.get(this, 'lang'); }\n set lang(value) { stringAttribute.set(this, 'lang', value); }\n get title() { return stringAttribute.get(this, 'title'); }\n set title(value) { stringAttribute.set(this, 'title', value); }\n\n // DOM Level 0\n get onabort() { return level0.get(this, 'onabort'); }\n set onabort(value) { level0.set(this, 'onabort', value); }\n\n get onblur() { return level0.get(this, 'onblur'); }\n set onblur(value) { level0.set(this, 'onblur', value); }\n\n get oncancel() { return level0.get(this, 'oncancel'); }\n set oncancel(value) { level0.set(this, 'oncancel', value); }\n\n get oncanplay() { return level0.get(this, 'oncanplay'); }\n set oncanplay(value) { level0.set(this, 'oncanplay', value); }\n\n get oncanplaythrough() { return level0.get(this, 'oncanplaythrough'); }\n set oncanplaythrough(value) { level0.set(this, 'oncanplaythrough', value); }\n\n get onchange() { return level0.get(this, 'onchange'); }\n set onchange(value) { level0.set(this, 'onchange', value); }\n\n get onclick() { return level0.get(this, 'onclick'); }\n set onclick(value) { level0.set(this, 'onclick', value); }\n\n get onclose() { return level0.get(this, 'onclose'); }\n set onclose(value) { level0.set(this, 'onclose', value); }\n\n get oncontextmenu() { return level0.get(this, 'oncontextmenu'); }\n set oncontextmenu(value) { level0.set(this, 'oncontextmenu', value); }\n\n get oncuechange() { return level0.get(this, 'oncuechange'); }\n set oncuechange(value) { level0.set(this, 'oncuechange', value); }\n\n get ondblclick() { return level0.get(this, 'ondblclick'); }\n set ondblclick(value) { level0.set(this, 'ondblclick', value); }\n\n get ondrag() { return level0.get(this, 'ondrag'); }\n set ondrag(value) { level0.set(this, 'ondrag', value); }\n\n get ondragend() { return level0.get(this, 'ondragend'); }\n set ondragend(value) { level0.set(this, 'ondragend', value); }\n\n get ondragenter() { return level0.get(this, 'ondragenter'); }\n set ondragenter(value) { level0.set(this, 'ondragenter', value); }\n\n get ondragleave() { return level0.get(this, 'ondragleave'); }\n set ondragleave(value) { level0.set(this, 'ondragleave', value); }\n\n get ondragover() { return level0.get(this, 'ondragover'); }\n set ondragover(value) { level0.set(this, 'ondragover', value); }\n\n get ondragstart() { return level0.get(this, 'ondragstart'); }\n set ondragstart(value) { level0.set(this, 'ondragstart', value); }\n\n get ondrop() { return level0.get(this, 'ondrop'); }\n set ondrop(value) { level0.set(this, 'ondrop', value); }\n\n get ondurationchange() { return level0.get(this, 'ondurationchange'); }\n set ondurationchange(value) { level0.set(this, 'ondurationchange', value); }\n\n get onemptied() { return level0.get(this, 'onemptied'); }\n set onemptied(value) { level0.set(this, 'onemptied', value); }\n\n get onended() { return level0.get(this, 'onended'); }\n set onended(value) { level0.set(this, 'onended', value); }\n\n get onerror() { return level0.get(this, 'onerror'); }\n set onerror(value) { level0.set(this, 'onerror', value); }\n\n get onfocus() { return level0.get(this, 'onfocus'); }\n set onfocus(value) { level0.set(this, 'onfocus', value); }\n\n get oninput() { return level0.get(this, 'oninput'); }\n set oninput(value) { level0.set(this, 'oninput', value); }\n\n get oninvalid() { return level0.get(this, 'oninvalid'); }\n set oninvalid(value) { level0.set(this, 'oninvalid', value); }\n\n get onkeydown() { return level0.get(this, 'onkeydown'); }\n set onkeydown(value) { level0.set(this, 'onkeydown', value); }\n\n get onkeypress() { return level0.get(this, 'onkeypress'); }\n set onkeypress(value) { level0.set(this, 'onkeypress', value); }\n\n get onkeyup() { return level0.get(this, 'onkeyup'); }\n set onkeyup(value) { level0.set(this, 'onkeyup', value); }\n\n get onload() { return level0.get(this, 'onload'); }\n set onload(value) { level0.set(this, 'onload', value); }\n\n get onloadeddata() { return level0.get(this, 'onloadeddata'); }\n set onloadeddata(value) { level0.set(this, 'onloadeddata', value); }\n\n get onloadedmetadata() { return level0.get(this, 'onloadedmetadata'); }\n set onloadedmetadata(value) { level0.set(this, 'onloadedmetadata', value); }\n\n get onloadstart() { return level0.get(this, 'onloadstart'); }\n set onloadstart(value) { level0.set(this, 'onloadstart', value); }\n\n get onmousedown() { return level0.get(this, 'onmousedown'); }\n set onmousedown(value) { level0.set(this, 'onmousedown', value); }\n\n get onmouseenter() { return level0.get(this, 'onmouseenter'); }\n set onmouseenter(value) { level0.set(this, 'onmouseenter', value); }\n\n get onmouseleave() { return level0.get(this, 'onmouseleave'); }\n set onmouseleave(value) { level0.set(this, 'onmouseleave', value); }\n\n get onmousemove() { return level0.get(this, 'onmousemove'); }\n set onmousemove(value) { level0.set(this, 'onmousemove', value); }\n\n get onmouseout() { return level0.get(this, 'onmouseout'); }\n set onmouseout(value) { level0.set(this, 'onmouseout', value); }\n\n get onmouseover() { return level0.get(this, 'onmouseover'); }\n set onmouseover(value) { level0.set(this, 'onmouseover', value); }\n\n get onmouseup() { return level0.get(this, 'onmouseup'); }\n set onmouseup(value) { level0.set(this, 'onmouseup', value); }\n\n get onmousewheel() { return level0.get(this, 'onmousewheel'); }\n set onmousewheel(value) { level0.set(this, 'onmousewheel', value); }\n\n get onpause() { return level0.get(this, 'onpause'); }\n set onpause(value) { level0.set(this, 'onpause', value); }\n\n get onplay() { return level0.get(this, 'onplay'); }\n set onplay(value) { level0.set(this, 'onplay', value); }\n\n get onplaying() { return level0.get(this, 'onplaying'); }\n set onplaying(value) { level0.set(this, 'onplaying', value); }\n\n get onprogress() { return level0.get(this, 'onprogress'); }\n set onprogress(value) { level0.set(this, 'onprogress', value); }\n\n get onratechange() { return level0.get(this, 'onratechange'); }\n set onratechange(value) { level0.set(this, 'onratechange', value); }\n\n get onreset() { return level0.get(this, 'onreset'); }\n set onreset(value) { level0.set(this, 'onreset', value); }\n\n get onresize() { return level0.get(this, 'onresize'); }\n set onresize(value) { level0.set(this, 'onresize', value); }\n\n get onscroll() { return level0.get(this, 'onscroll'); }\n set onscroll(value) { level0.set(this, 'onscroll', value); }\n\n get onseeked() { return level0.get(this, 'onseeked'); }\n set onseeked(value) { level0.set(this, 'onseeked', value); }\n\n get onseeking() { return level0.get(this, 'onseeking'); }\n set onseeking(value) { level0.set(this, 'onseeking', value); }\n\n get onselect() { return level0.get(this, 'onselect'); }\n set onselect(value) { level0.set(this, 'onselect', value); }\n\n get onshow() { return level0.get(this, 'onshow'); }\n set onshow(value) { level0.set(this, 'onshow', value); }\n\n get onstalled() { return level0.get(this, 'onstalled'); }\n set onstalled(value) { level0.set(this, 'onstalled', value); }\n\n get onsubmit() { return level0.get(this, 'onsubmit'); }\n set onsubmit(value) { level0.set(this, 'onsubmit', value); }\n\n get onsuspend() { return level0.get(this, 'onsuspend'); }\n set onsuspend(value) { level0.set(this, 'onsuspend', value); }\n\n get ontimeupdate() { return level0.get(this, 'ontimeupdate'); }\n set ontimeupdate(value) { level0.set(this, 'ontimeupdate', value); }\n\n get ontoggle() { return level0.get(this, 'ontoggle'); }\n set ontoggle(value) { level0.set(this, 'ontoggle', value); }\n\n get onvolumechange() { return level0.get(this, 'onvolumechange'); }\n set onvolumechange(value) { level0.set(this, 'onvolumechange', value); }\n\n get onwaiting() { return level0.get(this, 'onwaiting'); }\n set onwaiting(value) { level0.set(this, 'onwaiting', value); }\n\n get onauxclick() { return level0.get(this, 'onauxclick'); }\n set onauxclick(value) { level0.set(this, 'onauxclick', value); }\n\n get ongotpointercapture() { return level0.get(this, 'ongotpointercapture'); }\n set ongotpointercapture(value) { level0.set(this, 'ongotpointercapture', value); }\n\n get onlostpointercapture() { return level0.get(this, 'onlostpointercapture'); }\n set onlostpointercapture(value) { level0.set(this, 'onlostpointercapture', value); }\n\n get onpointercancel() { return level0.get(this, 'onpointercancel'); }\n set onpointercancel(value) { level0.set(this, 'onpointercancel', value); }\n\n get onpointerdown() { return level0.get(this, 'onpointerdown'); }\n set onpointerdown(value) { level0.set(this, 'onpointerdown', value); }\n\n get onpointerenter() { return level0.get(this, 'onpointerenter'); }\n set onpointerenter(value) { level0.set(this, 'onpointerenter', value); }\n\n get onpointerleave() { return level0.get(this, 'onpointerleave'); }\n set onpointerleave(value) { level0.set(this, 'onpointerleave', value); }\n\n get onpointermove() { return level0.get(this, 'onpointermove'); }\n set onpointermove(value) { level0.set(this, 'onpointermove', value); }\n\n get onpointerout() { return level0.get(this, 'onpointerout'); }\n set onpointerout(value) { level0.set(this, 'onpointerout', value); }\n\n get onpointerover() { return level0.get(this, 'onpointerover'); }\n set onpointerover(value) { level0.set(this, 'onpointerover', value); }\n\n get onpointerup() { return level0.get(this, 'onpointerup'); }\n set onpointerup(value) { level0.set(this, 'onpointerup', value); }\n /* c8 ignore stop */\n\n}\n","import {CONTENT, PRIVATE} from '../shared/symbols.js';\n\nimport {registerHTMLClass} from '../shared/register-html-class.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'template';\n\n/**\n * @implements globalThis.HTMLTemplateElement\n */\nclass HTMLTemplateElement extends HTMLElement {\n constructor(ownerDocument) {\n super(ownerDocument, tagName);\n const content = this.ownerDocument.createDocumentFragment();\n (this[CONTENT] = content)[PRIVATE] = this;\n }\n\n get content() {\n if (this.hasChildNodes() && !this[CONTENT].hasChildNodes()) {\n for (const node of this.childNodes)\n this[CONTENT].appendChild(node.cloneNode(true));\n }\n return this[CONTENT];\n }\n}\n\nregisterHTMLClass(tagName, HTMLTemplateElement);\n\nexport {HTMLTemplateElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLHtmlElement\n */\nexport class HTMLHtmlElement extends HTMLElement {\n constructor(ownerDocument, localName = 'html') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\nconst {toString} = HTMLElement.prototype;\n\nexport class TextElement extends HTMLElement {\n\n get innerHTML() { return this.textContent; }\n set innerHTML(html) { this.textContent = html; }\n\n toString() {\n const outerHTML = toString.call(this.cloneNode());\n return outerHTML.replace(/></, `>${this.textContent}<`);\n }\n}\n","import { booleanAttribute, stringAttribute } from '../shared/attributes.js';\nimport { registerHTMLClass } from '../shared/register-html-class.js';\n\nimport { TextElement } from './text-element.js';\n\nconst tagName = 'script';\n\n/**\n * @implements globalThis.HTMLScriptElement\n */\nclass HTMLScriptElement extends TextElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n get type() {\n return stringAttribute.get(this, 'type');\n }\n set type(value) {\n stringAttribute.set(this, 'type', value);\n }\n\n get src() {\n return stringAttribute.get(this, 'src');\n }\n set src(value) {\n stringAttribute.set(this, 'src', value);\n }\n\n get defer() {\n return booleanAttribute.get(this, 'defer');\n }\n\n set defer(value) {\n booleanAttribute.set(this, 'defer', value);\n }\n\n get crossOrigin() {\n return stringAttribute.get(this, 'crossorigin');\n }\n set crossOrigin(value) {\n stringAttribute.set(this, 'crossorigin', value);\n }\n\n get nomodule() {\n return booleanAttribute.get(this, 'nomodule');\n }\n set nomodule(value) {\n booleanAttribute.set(this, 'nomodule', value);\n }\n\n get referrerPolicy() {\n return stringAttribute.get(this, 'referrerpolicy');\n }\n set referrerPolicy(value) {\n stringAttribute.set(this, 'referrerpolicy', value);\n }\n\n get nonce() {\n return stringAttribute.get(this, 'nonce');\n }\n set nonce(value) {\n stringAttribute.set(this, 'nonce', value);\n }\n\n get async() {\n return booleanAttribute.get(this, 'async');\n }\n set async(value) {\n booleanAttribute.set(this, 'async', value);\n }\n\n get text() { return this.textContent; }\n set text(content) { this.textContent = content; }\n}\n\nregisterHTMLClass(tagName, HTMLScriptElement);\n\nexport { HTMLScriptElement };\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLFrameElement\n */\nexport class HTMLFrameElement extends HTMLElement {\n constructor(ownerDocument, localName = 'frame') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute, stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'iframe';\n\n/**\n * @implements globalThis.HTMLIFrameElement\n */\nclass HTMLIFrameElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get src() { return stringAttribute.get(this, 'src'); }\n set src(value) { stringAttribute.set(this, 'src', value); }\n\n get srcdoc() { return stringAttribute.get(this, \"srcdoc\"); }\n set srcdoc(value) { stringAttribute.set(this, \"srcdoc\", value); }\n\n get name() { return stringAttribute.get(this, \"name\"); }\n set name(value) { stringAttribute.set(this, \"name\", value); }\n\n get allow() { return stringAttribute.get(this, \"allow\"); }\n set allow(value) { stringAttribute.set(this, \"allow\", value); }\n\n get allowFullscreen() { return booleanAttribute.get(this, \"allowfullscreen\"); }\n set allowFullscreen(value) { booleanAttribute.set(this, \"allowfullscreen\", value); }\n \n get referrerPolicy() { return stringAttribute.get(this, \"referrerpolicy\"); }\n set referrerPolicy(value) { stringAttribute.set(this, \"referrerpolicy\", value); }\n \n get loading() { return stringAttribute.get(this, \"loading\"); }\n set loading(value) { stringAttribute.set(this, \"loading\", value); }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLIFrameElement);\n\nexport {HTMLIFrameElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLObjectElement\n */\nexport class HTMLObjectElement extends HTMLElement {\n constructor(ownerDocument, localName = 'object') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLHeadElement\n */\nexport class HTMLHeadElement extends HTMLElement {\n constructor(ownerDocument, localName = 'head') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLBodyElement\n */\nexport class HTMLBodyElement extends HTMLElement {\n constructor(ownerDocument, localName = 'body') {\n super(ownerDocument, localName);\n }\n}\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#the-stylesheet-interface\n */\nCSSOM.StyleSheet = function StyleSheet() {\n\tthis.parentStyleSheet = null;\n};\n\n\n//.CommonJS\nexports.StyleSheet = CSSOM.StyleSheet;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#the-cssrule-interface\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSRule\n */\nCSSOM.CSSRule = function CSSRule() {\n\tthis.parentRule = null;\n\tthis.parentStyleSheet = null;\n};\n\nCSSOM.CSSRule.UNKNOWN_RULE = 0; // obsolete\nCSSOM.CSSRule.STYLE_RULE = 1;\nCSSOM.CSSRule.CHARSET_RULE = 2; // obsolete\nCSSOM.CSSRule.IMPORT_RULE = 3;\nCSSOM.CSSRule.MEDIA_RULE = 4;\nCSSOM.CSSRule.FONT_FACE_RULE = 5;\nCSSOM.CSSRule.PAGE_RULE = 6;\nCSSOM.CSSRule.KEYFRAMES_RULE = 7;\nCSSOM.CSSRule.KEYFRAME_RULE = 8;\nCSSOM.CSSRule.MARGIN_RULE = 9;\nCSSOM.CSSRule.NAMESPACE_RULE = 10;\nCSSOM.CSSRule.COUNTER_STYLE_RULE = 11;\nCSSOM.CSSRule.SUPPORTS_RULE = 12;\nCSSOM.CSSRule.DOCUMENT_RULE = 13;\nCSSOM.CSSRule.FONT_FEATURE_VALUES_RULE = 14;\nCSSOM.CSSRule.VIEWPORT_RULE = 15;\nCSSOM.CSSRule.REGION_STYLE_RULE = 16;\n\n\nCSSOM.CSSRule.prototype = {\n\tconstructor: CSSOM.CSSRule\n\t//FIXME\n};\n\n\n//.CommonJS\nexports.CSSRule = CSSOM.CSSRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSStyleDeclaration: require(\"./CSSStyleDeclaration\").CSSStyleDeclaration,\n\tCSSRule: require(\"./CSSRule\").CSSRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#cssstylerule\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleRule\n */\nCSSOM.CSSStyleRule = function CSSStyleRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.selectorText = \"\";\n\tthis.style = new CSSOM.CSSStyleDeclaration();\n\tthis.style.parentRule = this;\n};\n\nCSSOM.CSSStyleRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSStyleRule.prototype.constructor = CSSOM.CSSStyleRule;\nCSSOM.CSSStyleRule.prototype.type = 1;\n\nObject.defineProperty(CSSOM.CSSStyleRule.prototype, \"cssText\", {\n\tget: function() {\n\t\tvar text;\n\t\tif (this.selectorText) {\n\t\t\ttext = this.selectorText + \" {\" + this.style.cssText + \"}\";\n\t\t} else {\n\t\t\ttext = \"\";\n\t\t}\n\t\treturn text;\n\t},\n\tset: function(cssText) {\n\t\tvar rule = CSSOM.CSSStyleRule.parse(cssText);\n\t\tthis.style = rule.style;\n\t\tthis.selectorText = rule.selectorText;\n\t}\n});\n\n\n/**\n * NON-STANDARD\n * lightweight version of parse.js.\n * @param {string} ruleText\n * @return CSSStyleRule\n */\nCSSOM.CSSStyleRule.parse = function(ruleText) {\n\tvar i = 0;\n\tvar state = \"selector\";\n\tvar index;\n\tvar j = i;\n\tvar buffer = \"\";\n\n\tvar SIGNIFICANT_WHITESPACE = {\n\t\t\"selector\": true,\n\t\t\"value\": true\n\t};\n\n\tvar styleRule = new CSSOM.CSSStyleRule();\n\tvar name, priority=\"\";\n\n\tfor (var character; (character = ruleText.charAt(i)); i++) {\n\n\t\tswitch (character) {\n\n\t\tcase \" \":\n\t\tcase \"\\t\":\n\t\tcase \"\\r\":\n\t\tcase \"\\n\":\n\t\tcase \"\\f\":\n\t\t\tif (SIGNIFICANT_WHITESPACE[state]) {\n\t\t\t\t// Squash 2 or more white-spaces in the row into 1\n\t\t\t\tswitch (ruleText.charAt(i - 1)) {\n\t\t\t\t\tcase \" \":\n\t\t\t\t\tcase \"\\t\":\n\t\t\t\t\tcase \"\\r\":\n\t\t\t\t\tcase \"\\n\":\n\t\t\t\t\tcase \"\\f\":\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tbuffer += \" \";\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\n\t\t// String\n\t\tcase '\"':\n\t\t\tj = i + 1;\n\t\t\tindex = ruleText.indexOf('\"', j) + 1;\n\t\t\tif (!index) {\n\t\t\t\tthrow '\" is missing';\n\t\t\t}\n\t\t\tbuffer += ruleText.slice(i, index);\n\t\t\ti = index - 1;\n\t\t\tbreak;\n\n\t\tcase \"'\":\n\t\t\tj = i + 1;\n\t\t\tindex = ruleText.indexOf(\"'\", j) + 1;\n\t\t\tif (!index) {\n\t\t\t\tthrow \"' is missing\";\n\t\t\t}\n\t\t\tbuffer += ruleText.slice(i, index);\n\t\t\ti = index - 1;\n\t\t\tbreak;\n\n\t\t// Comment\n\t\tcase \"/\":\n\t\t\tif (ruleText.charAt(i + 1) === \"*\") {\n\t\t\t\ti += 2;\n\t\t\t\tindex = ruleText.indexOf(\"*/\", i);\n\t\t\t\tif (index === -1) {\n\t\t\t\t\tthrow new SyntaxError(\"Missing */\");\n\t\t\t\t} else {\n\t\t\t\t\ti = index + 1;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"{\":\n\t\t\tif (state === \"selector\") {\n\t\t\t\tstyleRule.selectorText = buffer.trim();\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"name\";\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \":\":\n\t\t\tif (state === \"name\") {\n\t\t\t\tname = buffer.trim();\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"value\";\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"!\":\n\t\t\tif (state === \"value\" && ruleText.indexOf(\"!important\", i) === i) {\n\t\t\t\tpriority = \"important\";\n\t\t\t\ti += \"important\".length;\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \";\":\n\t\t\tif (state === \"value\") {\n\t\t\t\tstyleRule.style.setProperty(name, buffer.trim(), priority);\n\t\t\t\tpriority = \"\";\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"name\";\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"}\":\n\t\t\tif (state === \"value\") {\n\t\t\t\tstyleRule.style.setProperty(name, buffer.trim(), priority);\n\t\t\t\tpriority = \"\";\n\t\t\t\tbuffer = \"\";\n\t\t\t} else if (state === \"name\") {\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tstate = \"selector\";\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tbuffer += character;\n\t\t\tbreak;\n\n\t\t}\n\t}\n\n\treturn styleRule;\n\n};\n\n\n//.CommonJS\nexports.CSSStyleRule = CSSOM.CSSStyleRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tStyleSheet: require(\"./StyleSheet\").StyleSheet,\n\tCSSStyleRule: require(\"./CSSStyleRule\").CSSStyleRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleSheet\n */\nCSSOM.CSSStyleSheet = function CSSStyleSheet() {\n\tCSSOM.StyleSheet.call(this);\n\tthis.cssRules = [];\n};\n\n\nCSSOM.CSSStyleSheet.prototype = new CSSOM.StyleSheet();\nCSSOM.CSSStyleSheet.prototype.constructor = CSSOM.CSSStyleSheet;\n\n\n/**\n * Used to insert a new rule into the style sheet. The new rule now becomes part of the cascade.\n *\n * sheet = new Sheet(\"body {margin: 0}\")\n * sheet.toString()\n * -> \"body{margin:0;}\"\n * sheet.insertRule(\"img {border: none}\", 0)\n * -> 0\n * sheet.toString()\n * -> \"img{border:none;}body{margin:0;}\"\n *\n * @param {string} rule\n * @param {number} index\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleSheet-insertRule\n * @return {number} The index within the style sheet's rule collection of the newly inserted rule.\n */\nCSSOM.CSSStyleSheet.prototype.insertRule = function(rule, index) {\n\tif (index < 0 || index > this.cssRules.length) {\n\t\tthrow new RangeError(\"INDEX_SIZE_ERR\");\n\t}\n\tvar cssRule = CSSOM.parse(rule).cssRules[0];\n\tcssRule.parentStyleSheet = this;\n\tthis.cssRules.splice(index, 0, cssRule);\n\treturn index;\n};\n\n\n/**\n * Used to delete a rule from the style sheet.\n *\n * sheet = new Sheet(\"img{border:none} body{margin:0}\")\n * sheet.toString()\n * -> \"img{border:none;}body{margin:0;}\"\n * sheet.deleteRule(0)\n * sheet.toString()\n * -> \"body{margin:0;}\"\n *\n * @param {number} index within the style sheet's rule list of the rule to remove.\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleSheet-deleteRule\n */\nCSSOM.CSSStyleSheet.prototype.deleteRule = function(index) {\n\tif (index < 0 || index >= this.cssRules.length) {\n\t\tthrow new RangeError(\"INDEX_SIZE_ERR\");\n\t}\n\tthis.cssRules.splice(index, 1);\n};\n\n\n/**\n * NON-STANDARD\n * @return {string} serialize stylesheet\n */\nCSSOM.CSSStyleSheet.prototype.toString = function() {\n\tvar result = \"\";\n\tvar rules = this.cssRules;\n\tfor (var i=0; i<rules.length; i++) {\n\t\tresult += rules[i].cssText + \"\\n\";\n\t}\n\treturn result;\n};\n\n\n//.CommonJS\nexports.CSSStyleSheet = CSSOM.CSSStyleSheet;\nCSSOM.parse = require('./parse').parse; // Cannot be included sooner due to the mutual dependency between parse.js and CSSStyleSheet.js\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#the-medialist-interface\n */\nCSSOM.MediaList = function MediaList(){\n\tthis.length = 0;\n};\n\nCSSOM.MediaList.prototype = {\n\n\tconstructor: CSSOM.MediaList,\n\n\t/**\n\t * @return {string}\n\t */\n\tget mediaText() {\n\t\treturn Array.prototype.join.call(this, \", \");\n\t},\n\n\t/**\n\t * @param {string} value\n\t */\n\tset mediaText(value) {\n\t\tvar values = value.split(\",\");\n\t\tvar length = this.length = values.length;\n\t\tfor (var i=0; i<length; i++) {\n\t\t\tthis[i] = values[i].trim();\n\t\t}\n\t},\n\n\t/**\n\t * @param {string} medium\n\t */\n\tappendMedium: function(medium) {\n\t\tif (Array.prototype.indexOf.call(this, medium) === -1) {\n\t\t\tthis[this.length] = medium;\n\t\t\tthis.length++;\n\t\t}\n\t},\n\n\t/**\n\t * @param {string} medium\n\t */\n\tdeleteMedium: function(medium) {\n\t\tvar index = Array.prototype.indexOf.call(this, medium);\n\t\tif (index !== -1) {\n\t\t\tArray.prototype.splice.call(this, index, 1);\n\t\t}\n\t}\n\n};\n\n\n//.CommonJS\nexports.MediaList = CSSOM.MediaList;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n\tCSSStyleSheet: require(\"./CSSStyleSheet\").CSSStyleSheet,\n\tMediaList: require(\"./MediaList\").MediaList\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#cssimportrule\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSImportRule\n */\nCSSOM.CSSImportRule = function CSSImportRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.href = \"\";\n\tthis.media = new CSSOM.MediaList();\n\tthis.styleSheet = new CSSOM.CSSStyleSheet();\n};\n\nCSSOM.CSSImportRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSImportRule.prototype.constructor = CSSOM.CSSImportRule;\nCSSOM.CSSImportRule.prototype.type = 3;\n\nObject.defineProperty(CSSOM.CSSImportRule.prototype, \"cssText\", {\n get: function() {\n var mediaText = this.media.mediaText;\n return \"@import url(\" + this.href + \")\" + (mediaText ? \" \" + mediaText : \"\") + \";\";\n },\n set: function(cssText) {\n var i = 0;\n\n /**\n * @import url(partial.css) screen, handheld;\n * || |\n * after-import media\n * |\n * url\n */\n var state = '';\n\n var buffer = '';\n var index;\n for (var character; (character = cssText.charAt(i)); i++) {\n\n switch (character) {\n case ' ':\n case '\\t':\n case '\\r':\n case '\\n':\n case '\\f':\n if (state === 'after-import') {\n state = 'url';\n } else {\n buffer += character;\n }\n break;\n\n case '@':\n if (!state && cssText.indexOf('@import', i) === i) {\n state = 'after-import';\n i += 'import'.length;\n buffer = '';\n }\n break;\n\n case 'u':\n if (state === 'url' && cssText.indexOf('url(', i) === i) {\n index = cssText.indexOf(')', i + 1);\n if (index === -1) {\n throw i + ': \")\" not found';\n }\n i += 'url('.length;\n var url = cssText.slice(i, index);\n if (url[0] === url[url.length - 1]) {\n if (url[0] === '\"' || url[0] === \"'\") {\n url = url.slice(1, -1);\n }\n }\n this.href = url;\n i = index;\n state = 'media';\n }\n break;\n\n case '\"':\n if (state === 'url') {\n index = cssText.indexOf('\"', i + 1);\n if (!index) {\n throw i + \": '\\\"' not found\";\n }\n this.href = cssText.slice(i + 1, index);\n i = index;\n state = 'media';\n }\n break;\n\n case \"'\":\n if (state === 'url') {\n index = cssText.indexOf(\"'\", i + 1);\n if (!index) {\n throw i + ': \"\\'\" not found';\n }\n this.href = cssText.slice(i + 1, index);\n i = index;\n state = 'media';\n }\n break;\n\n case ';':\n if (state === 'media') {\n if (buffer) {\n this.media.mediaText = buffer.trim();\n }\n }\n break;\n\n default:\n if (state === 'media') {\n buffer += character;\n }\n break;\n }\n }\n }\n});\n\n\n//.CommonJS\nexports.CSSImportRule = CSSOM.CSSImportRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://drafts.csswg.org/cssom/#the-cssgroupingrule-interface\n */\nCSSOM.CSSGroupingRule = function CSSGroupingRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.cssRules = [];\n};\n\nCSSOM.CSSGroupingRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSGroupingRule.prototype.constructor = CSSOM.CSSGroupingRule;\n\n\n/**\n * Used to insert a new CSS rule to a list of CSS rules.\n *\n * @example\n * cssGroupingRule.cssText\n * -> \"body{margin:0;}\"\n * cssGroupingRule.insertRule(\"img{border:none;}\", 1)\n * -> 1\n * cssGroupingRule.cssText\n * -> \"body{margin:0;}img{border:none;}\"\n *\n * @param {string} rule\n * @param {number} [index]\n * @see https://www.w3.org/TR/cssom-1/#dom-cssgroupingrule-insertrule\n * @return {number} The index within the grouping rule's collection of the newly inserted rule.\n */\n CSSOM.CSSGroupingRule.prototype.insertRule = function insertRule(rule, index) {\n\tif (index < 0 || index > this.cssRules.length) {\n\t\tthrow new RangeError(\"INDEX_SIZE_ERR\");\n\t}\n\tvar cssRule = CSSOM.parse(rule).cssRules[0];\n\tcssRule.parentRule = this;\n\tthis.cssRules.splice(index, 0, cssRule);\n\treturn index;\n};\n\n/**\n * Used to delete a rule from the grouping rule.\n *\n * cssGroupingRule.cssText\n * -> \"img{border:none;}body{margin:0;}\"\n * cssGroupingRule.deleteRule(0)\n * cssGroupingRule.cssText\n * -> \"body{margin:0;}\"\n *\n * @param {number} index within the grouping rule's rule list of the rule to remove.\n * @see https://www.w3.org/TR/cssom-1/#dom-cssgroupingrule-deleterule\n */\n CSSOM.CSSGroupingRule.prototype.deleteRule = function deleteRule(index) {\n\tif (index < 0 || index >= this.cssRules.length) {\n\t\tthrow new RangeError(\"INDEX_SIZE_ERR\");\n\t}\n\tthis.cssRules.splice(index, 1)[0].parentRule = null;\n};\n\n//.CommonJS\nexports.CSSGroupingRule = CSSOM.CSSGroupingRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n CSSRule: require(\"./CSSRule\").CSSRule,\n CSSGroupingRule: require(\"./CSSGroupingRule\").CSSGroupingRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://www.w3.org/TR/css-conditional-3/#the-cssconditionrule-interface\n */\nCSSOM.CSSConditionRule = function CSSConditionRule() {\n CSSOM.CSSGroupingRule.call(this);\n this.cssRules = [];\n};\n\nCSSOM.CSSConditionRule.prototype = new CSSOM.CSSGroupingRule();\nCSSOM.CSSConditionRule.prototype.constructor = CSSOM.CSSConditionRule;\nCSSOM.CSSConditionRule.prototype.conditionText = ''\nCSSOM.CSSConditionRule.prototype.cssText = ''\n\n//.CommonJS\nexports.CSSConditionRule = CSSOM.CSSConditionRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n\tCSSGroupingRule: require(\"./CSSGroupingRule\").CSSGroupingRule,\n\tCSSConditionRule: require(\"./CSSConditionRule\").CSSConditionRule,\n\tMediaList: require(\"./MediaList\").MediaList\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#cssmediarule\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSMediaRule\n */\nCSSOM.CSSMediaRule = function CSSMediaRule() {\n\tCSSOM.CSSConditionRule.call(this);\n\tthis.media = new CSSOM.MediaList();\n};\n\nCSSOM.CSSMediaRule.prototype = new CSSOM.CSSConditionRule();\nCSSOM.CSSMediaRule.prototype.constructor = CSSOM.CSSMediaRule;\nCSSOM.CSSMediaRule.prototype.type = 4;\n\n// https://opensource.apple.com/source/WebCore/WebCore-7611.1.21.161.3/css/CSSMediaRule.cpp\nObject.defineProperties(CSSOM.CSSMediaRule.prototype, {\n \"conditionText\": {\n get: function() {\n return this.media.mediaText;\n },\n set: function(value) {\n this.media.mediaText = value;\n },\n configurable: true,\n enumerable: true\n },\n \"cssText\": {\n get: function() {\n var cssTexts = [];\n for (var i=0, length=this.cssRules.length; i < length; i++) {\n cssTexts.push(this.cssRules[i].cssText);\n }\n return \"@media \" + this.media.mediaText + \" {\" + cssTexts.join(\"\") + \"}\";\n },\n configurable: true,\n enumerable: true\n }\n});\n\n\n//.CommonJS\nexports.CSSMediaRule = CSSOM.CSSMediaRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n CSSRule: require(\"./CSSRule\").CSSRule,\n CSSGroupingRule: require(\"./CSSGroupingRule\").CSSGroupingRule,\n CSSConditionRule: require(\"./CSSConditionRule\").CSSConditionRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://drafts.csswg.org/css-conditional-3/#the-csssupportsrule-interface\n */\nCSSOM.CSSSupportsRule = function CSSSupportsRule() {\n CSSOM.CSSConditionRule.call(this);\n};\n\nCSSOM.CSSSupportsRule.prototype = new CSSOM.CSSConditionRule();\nCSSOM.CSSSupportsRule.prototype.constructor = CSSOM.CSSSupportsRule;\nCSSOM.CSSSupportsRule.prototype.type = 12;\n\nObject.defineProperty(CSSOM.CSSSupportsRule.prototype, \"cssText\", {\n get: function() {\n var cssTexts = [];\n\n for (var i = 0, length = this.cssRules.length; i < length; i++) {\n cssTexts.push(this.cssRules[i].cssText);\n }\n\n return \"@supports \" + this.conditionText + \" {\" + cssTexts.join(\"\") + \"}\";\n }\n});\n\n//.CommonJS\nexports.CSSSupportsRule = CSSOM.CSSSupportsRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSStyleDeclaration: require(\"./CSSStyleDeclaration\").CSSStyleDeclaration,\n\tCSSRule: require(\"./CSSRule\").CSSRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#css-font-face-rule\n */\nCSSOM.CSSFontFaceRule = function CSSFontFaceRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.style = new CSSOM.CSSStyleDeclaration();\n\tthis.style.parentRule = this;\n};\n\nCSSOM.CSSFontFaceRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSFontFaceRule.prototype.constructor = CSSOM.CSSFontFaceRule;\nCSSOM.CSSFontFaceRule.prototype.type = 5;\n//FIXME\n//CSSOM.CSSFontFaceRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSFontFaceRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\n// http://www.opensource.apple.com/source/WebCore/WebCore-955.66.1/css/WebKitCSSFontFaceRule.cpp\nObject.defineProperty(CSSOM.CSSFontFaceRule.prototype, \"cssText\", {\n get: function() {\n return \"@font-face {\" + this.style.cssText + \"}\";\n }\n});\n\n\n//.CommonJS\nexports.CSSFontFaceRule = CSSOM.CSSFontFaceRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/shadow-dom/#host-at-rule\n */\nCSSOM.CSSHostRule = function CSSHostRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.cssRules = [];\n};\n\nCSSOM.CSSHostRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSHostRule.prototype.constructor = CSSOM.CSSHostRule;\nCSSOM.CSSHostRule.prototype.type = 1001;\n//FIXME\n//CSSOM.CSSHostRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSHostRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\nObject.defineProperty(CSSOM.CSSHostRule.prototype, \"cssText\", {\n\tget: function() {\n\t\tvar cssTexts = [];\n\t\tfor (var i=0, length=this.cssRules.length; i < length; i++) {\n\t\t\tcssTexts.push(this.cssRules[i].cssText);\n\t\t}\n\t\treturn \"@host {\" + cssTexts.join(\"\") + \"}\";\n\t}\n});\n\n\n//.CommonJS\nexports.CSSHostRule = CSSOM.CSSHostRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n\tCSSStyleDeclaration: require('./CSSStyleDeclaration').CSSStyleDeclaration\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/css3-animations/#DOM-CSSKeyframeRule\n */\nCSSOM.CSSKeyframeRule = function CSSKeyframeRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.keyText = '';\n\tthis.style = new CSSOM.CSSStyleDeclaration();\n\tthis.style.parentRule = this;\n};\n\nCSSOM.CSSKeyframeRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSKeyframeRule.prototype.constructor = CSSOM.CSSKeyframeRule;\nCSSOM.CSSKeyframeRule.prototype.type = 8;\n//FIXME\n//CSSOM.CSSKeyframeRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSKeyframeRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\n// http://www.opensource.apple.com/source/WebCore/WebCore-955.66.1/css/WebKitCSSKeyframeRule.cpp\nObject.defineProperty(CSSOM.CSSKeyframeRule.prototype, \"cssText\", {\n get: function() {\n return this.keyText + \" {\" + this.style.cssText + \"} \";\n }\n});\n\n\n//.CommonJS\nexports.CSSKeyframeRule = CSSOM.CSSKeyframeRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/css3-animations/#DOM-CSSKeyframesRule\n */\nCSSOM.CSSKeyframesRule = function CSSKeyframesRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.name = '';\n\tthis.cssRules = [];\n};\n\nCSSOM.CSSKeyframesRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSKeyframesRule.prototype.constructor = CSSOM.CSSKeyframesRule;\nCSSOM.CSSKeyframesRule.prototype.type = 7;\n//FIXME\n//CSSOM.CSSKeyframesRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSKeyframesRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\n// http://www.opensource.apple.com/source/WebCore/WebCore-955.66.1/css/WebKitCSSKeyframesRule.cpp\nObject.defineProperty(CSSOM.CSSKeyframesRule.prototype, \"cssText\", {\n get: function() {\n var cssTexts = [];\n for (var i=0, length=this.cssRules.length; i < length; i++) {\n cssTexts.push(\" \" + this.cssRules[i].cssText);\n }\n return \"@\" + (this._vendorPrefix || '') + \"keyframes \" + this.name + \" { \\n\" + cssTexts.join(\"\\n\") + \"\\n}\";\n }\n});\n\n\n//.CommonJS\nexports.CSSKeyframesRule = CSSOM.CSSKeyframesRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSValue\n *\n * TODO: add if needed\n */\nCSSOM.CSSValue = function CSSValue() {\n};\n\nCSSOM.CSSValue.prototype = {\n\tconstructor: CSSOM.CSSValue,\n\n\t// @see: http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSValue\n\tset cssText(text) {\n\t\tvar name = this._getConstructorName();\n\n\t\tthrow new Error('DOMException: property \"cssText\" of \"' + name + '\" is readonly and can not be replaced with \"' + text + '\"!');\n\t},\n\n\tget cssText() {\n\t\tvar name = this._getConstructorName();\n\n\t\tthrow new Error('getter \"cssText\" of \"' + name + '\" is not implemented!');\n\t},\n\n\t_getConstructorName: function() {\n\t\tvar s = this.constructor.toString(),\n\t\t\t\tc = s.match(/function\\s([^\\(]+)/),\n\t\t\t\tname = c[1];\n\n\t\treturn name;\n\t}\n};\n\n\n//.CommonJS\nexports.CSSValue = CSSOM.CSSValue;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSValue: require('./CSSValue').CSSValue\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://msdn.microsoft.com/en-us/library/ms537634(v=vs.85).aspx\n *\n */\nCSSOM.CSSValueExpression = function CSSValueExpression(token, idx) {\n\tthis._token = token;\n\tthis._idx = idx;\n};\n\nCSSOM.CSSValueExpression.prototype = new CSSOM.CSSValue();\nCSSOM.CSSValueExpression.prototype.constructor = CSSOM.CSSValueExpression;\n\n/**\n * parse css expression() value\n *\n * @return {Object}\n * - error:\n * or\n * - idx:\n * - expression:\n *\n * Example:\n *\n * .selector {\n *\t\tzoom: expression(documentElement.clientWidth > 1000 ? '1000px' : 'auto');\n * }\n */\nCSSOM.CSSValueExpression.prototype.parse = function() {\n\tvar token = this._token,\n\t\t\tidx = this._idx;\n\n\tvar character = '',\n\t\t\texpression = '',\n\t\t\terror = '',\n\t\t\tinfo,\n\t\t\tparen = [];\n\n\n\tfor (; ; ++idx) {\n\t\tcharacter = token.charAt(idx);\n\n\t\t// end of token\n\t\tif (character === '') {\n\t\t\terror = 'css expression error: unfinished expression!';\n\t\t\tbreak;\n\t\t}\n\n\t\tswitch(character) {\n\t\t\tcase '(':\n\t\t\t\tparen.push(character);\n\t\t\t\texpression += character;\n\t\t\t\tbreak;\n\n\t\t\tcase ')':\n\t\t\t\tparen.pop(character);\n\t\t\t\texpression += character;\n\t\t\t\tbreak;\n\n\t\t\tcase '/':\n\t\t\t\tif ((info = this._parseJSComment(token, idx))) { // comment?\n\t\t\t\t\tif (info.error) {\n\t\t\t\t\t\terror = 'css expression error: unfinished comment in expression!';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tidx = info.idx;\n\t\t\t\t\t\t// ignore the comment\n\t\t\t\t\t}\n\t\t\t\t} else if ((info = this._parseJSRexExp(token, idx))) { // regexp\n\t\t\t\t\tidx = info.idx;\n\t\t\t\t\texpression += info.text;\n\t\t\t\t} else { // other\n\t\t\t\t\texpression += character;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"'\":\n\t\t\tcase '\"':\n\t\t\t\tinfo = this._parseJSString(token, idx, character);\n\t\t\t\tif (info) { // string\n\t\t\t\t\tidx = info.idx;\n\t\t\t\t\texpression += info.text;\n\t\t\t\t} else {\n\t\t\t\t\texpression += character;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\texpression += character;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (error) {\n\t\t\tbreak;\n\t\t}\n\n\t\t// end of expression\n\t\tif (paren.length === 0) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tvar ret;\n\tif (error) {\n\t\tret = {\n\t\t\terror: error\n\t\t};\n\t} else {\n\t\tret = {\n\t\t\tidx: idx,\n\t\t\texpression: expression\n\t\t};\n\t}\n\n\treturn ret;\n};\n\n\n/**\n *\n * @return {Object|false}\n * - idx:\n * - text:\n * or\n * - error:\n * or\n * false\n *\n */\nCSSOM.CSSValueExpression.prototype._parseJSComment = function(token, idx) {\n\tvar nextChar = token.charAt(idx + 1),\n\t\t\ttext;\n\n\tif (nextChar === '/' || nextChar === '*') {\n\t\tvar startIdx = idx,\n\t\t\t\tendIdx,\n\t\t\t\tcommentEndChar;\n\n\t\tif (nextChar === '/') { // line comment\n\t\t\tcommentEndChar = '\\n';\n\t\t} else if (nextChar === '*') { // block comment\n\t\t\tcommentEndChar = '*/';\n\t\t}\n\n\t\tendIdx = token.indexOf(commentEndChar, startIdx + 1 + 1);\n\t\tif (endIdx !== -1) {\n\t\t\tendIdx = endIdx + commentEndChar.length - 1;\n\t\t\ttext = token.substring(idx, endIdx + 1);\n\t\t\treturn {\n\t\t\t\tidx: endIdx,\n\t\t\t\ttext: text\n\t\t\t};\n\t\t} else {\n\t\t\tvar error = 'css expression error: unfinished comment in expression!';\n\t\t\treturn {\n\t\t\t\terror: error\n\t\t\t};\n\t\t}\n\t} else {\n\t\treturn false;\n\t}\n};\n\n\n/**\n *\n * @return {Object|false}\n *\t\t\t\t\t- idx:\n *\t\t\t\t\t- text:\n *\t\t\t\t\tor \n *\t\t\t\t\tfalse\n *\n */\nCSSOM.CSSValueExpression.prototype._parseJSString = function(token, idx, sep) {\n\tvar endIdx = this._findMatchedIdx(token, idx, sep),\n\t\t\ttext;\n\n\tif (endIdx === -1) {\n\t\treturn false;\n\t} else {\n\t\ttext = token.substring(idx, endIdx + sep.length);\n\n\t\treturn {\n\t\t\tidx: endIdx,\n\t\t\ttext: text\n\t\t};\n\t}\n};\n\n\n/**\n * parse regexp in css expression\n *\n * @return {Object|false}\n *\t\t\t\t- idx:\n *\t\t\t\t- regExp:\n *\t\t\t\tor \n *\t\t\t\tfalse\n */\n\n/*\n\nall legal RegExp\n \n/a/\n(/a/)\n[/a/]\n[12, /a/]\n\n!/a/\n\n+/a/\n-/a/\n* /a/\n/ /a/\n%/a/\n\n===/a/\n!==/a/\n==/a/\n!=/a/\n>/a/\n>=/a/\n</a/\n<=/a/\n\n&/a/\n|/a/\n^/a/\n~/a/\n<</a/\n>>/a/\n>>>/a/\n\n&&/a/\n||/a/\n?/a/\n=/a/\n,/a/\n\n\t\tdelete /a/\n\t\t\t\tin /a/\ninstanceof /a/\n\t\t\t\tnew /a/\n\t\ttypeof /a/\n\t\t\tvoid /a/\n\n*/\nCSSOM.CSSValueExpression.prototype._parseJSRexExp = function(token, idx) {\n\tvar before = token.substring(0, idx).replace(/\\s+$/, \"\"),\n\t\t\tlegalRegx = [\n\t\t\t\t/^$/,\n\t\t\t\t/\\($/,\n\t\t\t\t/\\[$/,\n\t\t\t\t/\\!$/,\n\t\t\t\t/\\+$/,\n\t\t\t\t/\\-$/,\n\t\t\t\t/\\*$/,\n\t\t\t\t/\\/\\s+/,\n\t\t\t\t/\\%$/,\n\t\t\t\t/\\=$/,\n\t\t\t\t/\\>$/,\n\t\t\t\t/<$/,\n\t\t\t\t/\\&$/,\n\t\t\t\t/\\|$/,\n\t\t\t\t/\\^$/,\n\t\t\t\t/\\~$/,\n\t\t\t\t/\\?$/,\n\t\t\t\t/\\,$/,\n\t\t\t\t/delete$/,\n\t\t\t\t/in$/,\n\t\t\t\t/instanceof$/,\n\t\t\t\t/new$/,\n\t\t\t\t/typeof$/,\n\t\t\t\t/void$/\n\t\t\t];\n\n\tvar isLegal = legalRegx.some(function(reg) {\n\t\treturn reg.test(before);\n\t});\n\n\tif (!isLegal) {\n\t\treturn false;\n\t} else {\n\t\tvar sep = '/';\n\n\t\t// same logic as string\n\t\treturn this._parseJSString(token, idx, sep);\n\t}\n};\n\n\n/**\n *\n * find next sep(same line) index in `token`\n *\n * @return {Number}\n *\n */\nCSSOM.CSSValueExpression.prototype._findMatchedIdx = function(token, idx, sep) {\n\tvar startIdx = idx,\n\t\t\tendIdx;\n\n\tvar NOT_FOUND = -1;\n\n\twhile(true) {\n\t\tendIdx = token.indexOf(sep, startIdx + 1);\n\n\t\tif (endIdx === -1) { // not found\n\t\t\tendIdx = NOT_FOUND;\n\t\t\tbreak;\n\t\t} else {\n\t\t\tvar text = token.substring(idx + 1, endIdx),\n\t\t\t\t\tmatched = text.match(/\\\\+$/);\n\t\t\tif (!matched || matched[0] % 2 === 0) { // not escaped\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tstartIdx = endIdx;\n\t\t\t}\n\t\t}\n\t}\n\n\t// boundary must be in the same line(js sting or regexp)\n\tvar nextNewLineIdx = token.indexOf('\\n', idx + 1);\n\tif (nextNewLineIdx < endIdx) {\n\t\tendIdx = NOT_FOUND;\n\t}\n\n\n\treturn endIdx;\n};\n\n\n\n\n//.CommonJS\nexports.CSSValueExpression = CSSOM.CSSValueExpression;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://developer.mozilla.org/en/CSS/@-moz-document\n */\nCSSOM.MatcherList = function MatcherList(){\n this.length = 0;\n};\n\nCSSOM.MatcherList.prototype = {\n\n constructor: CSSOM.MatcherList,\n\n /**\n * @return {string}\n */\n get matcherText() {\n return Array.prototype.join.call(this, \", \");\n },\n\n /**\n * @param {string} value\n */\n set matcherText(value) {\n // just a temporary solution, actually it may be wrong by just split the value with ',', because a url can include ','.\n var values = value.split(\",\");\n var length = this.length = values.length;\n for (var i=0; i<length; i++) {\n this[i] = values[i].trim();\n }\n },\n\n /**\n * @param {string} matcher\n */\n appendMatcher: function(matcher) {\n if (Array.prototype.indexOf.call(this, matcher) === -1) {\n this[this.length] = matcher;\n this.length++;\n }\n },\n\n /**\n * @param {string} matcher\n */\n deleteMatcher: function(matcher) {\n var index = Array.prototype.indexOf.call(this, matcher);\n if (index !== -1) {\n Array.prototype.splice.call(this, index, 1);\n }\n }\n\n};\n\n\n//.CommonJS\nexports.MatcherList = CSSOM.MatcherList;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n CSSRule: require(\"./CSSRule\").CSSRule,\n MatcherList: require(\"./MatcherList\").MatcherList\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://developer.mozilla.org/en/CSS/@-moz-document\n */\nCSSOM.CSSDocumentRule = function CSSDocumentRule() {\n CSSOM.CSSRule.call(this);\n this.matcher = new CSSOM.MatcherList();\n this.cssRules = [];\n};\n\nCSSOM.CSSDocumentRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSDocumentRule.prototype.constructor = CSSOM.CSSDocumentRule;\nCSSOM.CSSDocumentRule.prototype.type = 10;\n//FIXME\n//CSSOM.CSSDocumentRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSDocumentRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\nObject.defineProperty(CSSOM.CSSDocumentRule.prototype, \"cssText\", {\n get: function() {\n var cssTexts = [];\n for (var i=0, length=this.cssRules.length; i < length; i++) {\n cssTexts.push(this.cssRules[i].cssText);\n }\n return \"@-moz-document \" + this.matcher.matcherText + \" {\" + cssTexts.join(\"\") + \"}\";\n }\n});\n\n\n//.CommonJS\nexports.CSSDocumentRule = CSSOM.CSSDocumentRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @param {string} token\n */\nCSSOM.parse = function parse(token) {\n\n\tvar i = 0;\n\n\t/**\n\t\t\"before-selector\" or\n\t\t\"selector\" or\n\t\t\"atRule\" or\n\t\t\"atBlock\" or\n\t\t\"conditionBlock\" or\n\t\t\"before-name\" or\n\t\t\"name\" or\n\t\t\"before-value\" or\n\t\t\"value\"\n\t*/\n\tvar state = \"before-selector\";\n\n\tvar index;\n\tvar buffer = \"\";\n\tvar valueParenthesisDepth = 0;\n\n\tvar SIGNIFICANT_WHITESPACE = {\n\t\t\"selector\": true,\n\t\t\"value\": true,\n\t\t\"value-parenthesis\": true,\n\t\t\"atRule\": true,\n\t\t\"importRule-begin\": true,\n\t\t\"importRule\": true,\n\t\t\"atBlock\": true,\n\t\t\"conditionBlock\": true,\n\t\t'documentRule-begin': true\n\t};\n\n\tvar styleSheet = new CSSOM.CSSStyleSheet();\n\n\t// @type CSSStyleSheet|CSSMediaRule|CSSSupportsRule|CSSFontFaceRule|CSSKeyframesRule|CSSDocumentRule\n\tvar currentScope = styleSheet;\n\n\t// @type CSSMediaRule|CSSSupportsRule|CSSKeyframesRule|CSSDocumentRule\n\tvar parentRule;\n\n\tvar ancestorRules = [];\n\tvar hasAncestors = false;\n\tvar prevScope;\n\n\tvar name, priority=\"\", styleRule, mediaRule, supportsRule, importRule, fontFaceRule, keyframesRule, documentRule, hostRule;\n\n\tvar atKeyframesRegExp = /@(-(?:\\w+-)+)?keyframes/g;\n\n\tvar parseError = function(message) {\n\t\tvar lines = token.substring(0, i).split('\\n');\n\t\tvar lineCount = lines.length;\n\t\tvar charCount = lines.pop().length + 1;\n\t\tvar error = new Error(message + ' (line ' + lineCount + ', char ' + charCount + ')');\n\t\terror.line = lineCount;\n\t\t/* jshint sub : true */\n\t\terror['char'] = charCount;\n\t\terror.styleSheet = styleSheet;\n\t\tthrow error;\n\t};\n\n\tfor (var character; (character = token.charAt(i)); i++) {\n\n\t\tswitch (character) {\n\n\t\tcase \" \":\n\t\tcase \"\\t\":\n\t\tcase \"\\r\":\n\t\tcase \"\\n\":\n\t\tcase \"\\f\":\n\t\t\tif (SIGNIFICANT_WHITESPACE[state]) {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\t// String\n\t\tcase '\"':\n\t\t\tindex = i + 1;\n\t\t\tdo {\n\t\t\t\tindex = token.indexOf('\"', index) + 1;\n\t\t\t\tif (!index) {\n\t\t\t\t\tparseError('Unmatched \"');\n\t\t\t\t}\n\t\t\t} while (token[index - 2] === '\\\\');\n\t\t\tbuffer += token.slice(i, index);\n\t\t\ti = index - 1;\n\t\t\tswitch (state) {\n\t\t\t\tcase 'before-value':\n\t\t\t\t\tstate = 'value';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'importRule-begin':\n\t\t\t\t\tstate = 'importRule';\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"'\":\n\t\t\tindex = i + 1;\n\t\t\tdo {\n\t\t\t\tindex = token.indexOf(\"'\", index) + 1;\n\t\t\t\tif (!index) {\n\t\t\t\t\tparseError(\"Unmatched '\");\n\t\t\t\t}\n\t\t\t} while (token[index - 2] === '\\\\');\n\t\t\tbuffer += token.slice(i, index);\n\t\t\ti = index - 1;\n\t\t\tswitch (state) {\n\t\t\t\tcase 'before-value':\n\t\t\t\t\tstate = 'value';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'importRule-begin':\n\t\t\t\t\tstate = 'importRule';\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\n\t\t// Comment\n\t\tcase \"/\":\n\t\t\tif (token.charAt(i + 1) === \"*\") {\n\t\t\t\ti += 2;\n\t\t\t\tindex = token.indexOf(\"*/\", i);\n\t\t\t\tif (index === -1) {\n\t\t\t\t\tparseError(\"Missing */\");\n\t\t\t\t} else {\n\t\t\t\t\ti = index + 1;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tif (state === \"importRule-begin\") {\n\t\t\t\tbuffer += \" \";\n\t\t\t\tstate = \"importRule\";\n\t\t\t}\n\t\t\tbreak;\n\n\t\t// At-rule\n\t\tcase \"@\":\n\t\t\tif (token.indexOf(\"@-moz-document\", i) === i) {\n\t\t\t\tstate = \"documentRule-begin\";\n\t\t\t\tdocumentRule = new CSSOM.CSSDocumentRule();\n\t\t\t\tdocumentRule.__starts = i;\n\t\t\t\ti += \"-moz-document\".length;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tbreak;\n\t\t\t} else if (token.indexOf(\"@media\", i) === i) {\n\t\t\t\tstate = \"atBlock\";\n\t\t\t\tmediaRule = new CSSOM.CSSMediaRule();\n\t\t\t\tmediaRule.__starts = i;\n\t\t\t\ti += \"media\".length;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tbreak;\n\t\t\t} else if (token.indexOf(\"@supports\", i) === i) {\n\t\t\t\tstate = \"conditionBlock\";\n\t\t\t\tsupportsRule = new CSSOM.CSSSupportsRule();\n\t\t\t\tsupportsRule.__starts = i;\n\t\t\t\ti += \"supports\".length;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tbreak;\n\t\t\t} else if (token.indexOf(\"@host\", i) === i) {\n\t\t\t\tstate = \"hostRule-begin\";\n\t\t\t\ti += \"host\".length;\n\t\t\t\thostRule = new CSSOM.CSSHostRule();\n\t\t\t\thostRule.__starts = i;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tbreak;\n\t\t\t} else if (token.indexOf(\"@import\", i) === i) {\n\t\t\t\tstate = \"importRule-begin\";\n\t\t\t\ti += \"import\".length;\n\t\t\t\tbuffer += \"@import\";\n\t\t\t\tbreak;\n\t\t\t} else if (token.indexOf(\"@font-face\", i) === i) {\n\t\t\t\tstate = \"fontFaceRule-begin\";\n\t\t\t\ti += \"font-face\".length;\n\t\t\t\tfontFaceRule = new CSSOM.CSSFontFaceRule();\n\t\t\t\tfontFaceRule.__starts = i;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tatKeyframesRegExp.lastIndex = i;\n\t\t\t\tvar matchKeyframes = atKeyframesRegExp.exec(token);\n\t\t\t\tif (matchKeyframes && matchKeyframes.index === i) {\n\t\t\t\t\tstate = \"keyframesRule-begin\";\n\t\t\t\t\tkeyframesRule = new CSSOM.CSSKeyframesRule();\n\t\t\t\t\tkeyframesRule.__starts = i;\n\t\t\t\t\tkeyframesRule._vendorPrefix = matchKeyframes[1]; // Will come out as undefined if no prefix was found\n\t\t\t\t\ti += matchKeyframes[0].length - 1;\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\t} else if (state === \"selector\") {\n\t\t\t\t\tstate = \"atRule\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tbuffer += character;\n\t\t\tbreak;\n\n\t\tcase \"{\":\n\t\t\tif (state === \"selector\" || state === \"atRule\") {\n\t\t\t\tstyleRule.selectorText = buffer.trim();\n\t\t\t\tstyleRule.style.__starts = i;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-name\";\n\t\t\t} else if (state === \"atBlock\") {\n\t\t\t\tmediaRule.media.mediaText = buffer.trim();\n\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tancestorRules.push(parentRule);\n\t\t\t\t}\n\n\t\t\t\tcurrentScope = parentRule = mediaRule;\n\t\t\t\tmediaRule.parentStyleSheet = styleSheet;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-selector\";\n\t\t\t} else if (state === \"conditionBlock\") {\n\t\t\t\tsupportsRule.conditionText = buffer.trim();\n\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tancestorRules.push(parentRule);\n\t\t\t\t}\n\n\t\t\t\tcurrentScope = parentRule = supportsRule;\n\t\t\t\tsupportsRule.parentStyleSheet = styleSheet;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-selector\";\n\t\t\t} else if (state === \"hostRule-begin\") {\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tancestorRules.push(parentRule);\n\t\t\t\t}\n\n\t\t\t\tcurrentScope = parentRule = hostRule;\n\t\t\t\thostRule.parentStyleSheet = styleSheet;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-selector\";\n\t\t\t} else if (state === \"fontFaceRule-begin\") {\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tfontFaceRule.parentRule = parentRule;\n\t\t\t\t}\n\t\t\t\tfontFaceRule.parentStyleSheet = styleSheet;\n\t\t\t\tstyleRule = fontFaceRule;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-name\";\n\t\t\t} else if (state === \"keyframesRule-begin\") {\n\t\t\t\tkeyframesRule.name = buffer.trim();\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tancestorRules.push(parentRule);\n\t\t\t\t\tkeyframesRule.parentRule = parentRule;\n\t\t\t\t}\n\t\t\t\tkeyframesRule.parentStyleSheet = styleSheet;\n\t\t\t\tcurrentScope = parentRule = keyframesRule;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"keyframeRule-begin\";\n\t\t\t} else if (state === \"keyframeRule-begin\") {\n\t\t\t\tstyleRule = new CSSOM.CSSKeyframeRule();\n\t\t\t\tstyleRule.keyText = buffer.trim();\n\t\t\t\tstyleRule.__starts = i;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-name\";\n\t\t\t} else if (state === \"documentRule-begin\") {\n\t\t\t\t// FIXME: what if this '{' is in the url text of the match function?\n\t\t\t\tdocumentRule.matcher.matcherText = buffer.trim();\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tancestorRules.push(parentRule);\n\t\t\t\t\tdocumentRule.parentRule = parentRule;\n\t\t\t\t}\n\t\t\t\tcurrentScope = parentRule = documentRule;\n\t\t\t\tdocumentRule.parentStyleSheet = styleSheet;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-selector\";\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \":\":\n\t\t\tif (state === \"name\") {\n\t\t\t\tname = buffer.trim();\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-value\";\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"(\":\n\t\t\tif (state === 'value') {\n\t\t\t\t// ie css expression mode\n\t\t\t\tif (buffer.trim() === 'expression') {\n\t\t\t\t\tvar info = (new CSSOM.CSSValueExpression(token, i)).parse();\n\n\t\t\t\t\tif (info.error) {\n\t\t\t\t\t\tparseError(info.error);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbuffer += info.expression;\n\t\t\t\t\t\ti = info.idx;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tstate = 'value-parenthesis';\n\t\t\t\t\t//always ensure this is reset to 1 on transition\n\t\t\t\t\t//from value to value-parenthesis\n\t\t\t\t\tvalueParenthesisDepth = 1;\n\t\t\t\t\tbuffer += character;\n\t\t\t\t}\n\t\t\t} else if (state === 'value-parenthesis') {\n\t\t\t\tvalueParenthesisDepth++;\n\t\t\t\tbuffer += character;\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \")\":\n\t\t\tif (state === 'value-parenthesis') {\n\t\t\t\tvalueParenthesisDepth--;\n\t\t\t\tif (valueParenthesisDepth === 0) state = 'value';\n\t\t\t}\n\t\t\tbuffer += character;\n\t\t\tbreak;\n\n\t\tcase \"!\":\n\t\t\tif (state === \"value\" && token.indexOf(\"!important\", i) === i) {\n\t\t\t\tpriority = \"important\";\n\t\t\t\ti += \"important\".length;\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \";\":\n\t\t\tswitch (state) {\n\t\t\t\tcase \"value\":\n\t\t\t\t\tstyleRule.style.setProperty(name, buffer.trim(), priority);\n\t\t\t\t\tpriority = \"\";\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-name\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"atRule\":\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"importRule\":\n\t\t\t\t\timportRule = new CSSOM.CSSImportRule();\n\t\t\t\t\timportRule.parentStyleSheet = importRule.styleSheet.parentStyleSheet = styleSheet;\n\t\t\t\t\timportRule.cssText = buffer + character;\n\t\t\t\t\tstyleSheet.cssRules.push(importRule);\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbuffer += character;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"}\":\n\t\t\tswitch (state) {\n\t\t\t\tcase \"value\":\n\t\t\t\t\tstyleRule.style.setProperty(name, buffer.trim(), priority);\n\t\t\t\t\tpriority = \"\";\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase \"before-name\":\n\t\t\t\tcase \"name\":\n\t\t\t\t\tstyleRule.__ends = i + 1;\n\t\t\t\t\tif (parentRule) {\n\t\t\t\t\t\tstyleRule.parentRule = parentRule;\n\t\t\t\t\t}\n\t\t\t\t\tstyleRule.parentStyleSheet = styleSheet;\n\t\t\t\t\tcurrentScope.cssRules.push(styleRule);\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tif (currentScope.constructor === CSSOM.CSSKeyframesRule) {\n\t\t\t\t\t\tstate = \"keyframeRule-begin\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"keyframeRule-begin\":\n\t\t\t\tcase \"before-selector\":\n\t\t\t\tcase \"selector\":\n\t\t\t\t\t// End of media/supports/document rule.\n\t\t\t\t\tif (!parentRule) {\n\t\t\t\t\t\tparseError(\"Unexpected }\");\n\t\t\t\t\t}\n\n\t\t\t\t\t// Handle rules nested in @media or @supports\n\t\t\t\t\thasAncestors = ancestorRules.length > 0;\n\n\t\t\t\t\twhile (ancestorRules.length > 0) {\n\t\t\t\t\t\tparentRule = ancestorRules.pop();\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tparentRule.constructor.name === \"CSSMediaRule\"\n\t\t\t\t\t\t\t|| parentRule.constructor.name === \"CSSSupportsRule\"\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tprevScope = currentScope;\n\t\t\t\t\t\t\tcurrentScope = parentRule;\n\t\t\t\t\t\t\tcurrentScope.cssRules.push(prevScope);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (ancestorRules.length === 0) {\n\t\t\t\t\t\t\thasAncestors = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (!hasAncestors) {\n\t\t\t\t\t\tcurrentScope.__ends = i + 1;\n\t\t\t\t\t\tstyleSheet.cssRules.push(currentScope);\n\t\t\t\t\t\tcurrentScope = styleSheet;\n\t\t\t\t\t\tparentRule = null;\n\t\t\t\t\t}\n\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tswitch (state) {\n\t\t\t\tcase \"before-selector\":\n\t\t\t\t\tstate = \"selector\";\n\t\t\t\t\tstyleRule = new CSSOM.CSSStyleRule();\n\t\t\t\t\tstyleRule.__starts = i;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"before-name\":\n\t\t\t\t\tstate = \"name\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"before-value\":\n\t\t\t\t\tstate = \"value\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"importRule-begin\":\n\t\t\t\t\tstate = \"importRule\";\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbuffer += character;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn styleSheet;\n};\n\n\n//.CommonJS\nexports.parse = CSSOM.parse;\n// The following modules cannot be included sooner due to the mutual dependency with parse.js\nCSSOM.CSSStyleSheet = require(\"./CSSStyleSheet\").CSSStyleSheet;\nCSSOM.CSSStyleRule = require(\"./CSSStyleRule\").CSSStyleRule;\nCSSOM.CSSImportRule = require(\"./CSSImportRule\").CSSImportRule;\nCSSOM.CSSGroupingRule = require(\"./CSSGroupingRule\").CSSGroupingRule;\nCSSOM.CSSMediaRule = require(\"./CSSMediaRule\").CSSMediaRule;\nCSSOM.CSSConditionRule = require(\"./CSSConditionRule\").CSSConditionRule;\nCSSOM.CSSSupportsRule = require(\"./CSSSupportsRule\").CSSSupportsRule;\nCSSOM.CSSFontFaceRule = require(\"./CSSFontFaceRule\").CSSFontFaceRule;\nCSSOM.CSSHostRule = require(\"./CSSHostRule\").CSSHostRule;\nCSSOM.CSSStyleDeclaration = require('./CSSStyleDeclaration').CSSStyleDeclaration;\nCSSOM.CSSKeyframeRule = require('./CSSKeyframeRule').CSSKeyframeRule;\nCSSOM.CSSKeyframesRule = require('./CSSKeyframesRule').CSSKeyframesRule;\nCSSOM.CSSValueExpression = require('./CSSValueExpression').CSSValueExpression;\nCSSOM.CSSDocumentRule = require('./CSSDocumentRule').CSSDocumentRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration\n */\nCSSOM.CSSStyleDeclaration = function CSSStyleDeclaration(){\n\tthis.length = 0;\n\tthis.parentRule = null;\n\n\t// NON-STANDARD\n\tthis._importants = {};\n};\n\n\nCSSOM.CSSStyleDeclaration.prototype = {\n\n\tconstructor: CSSOM.CSSStyleDeclaration,\n\n\t/**\n\t *\n\t * @param {string} name\n\t * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration-getPropertyValue\n\t * @return {string} the value of the property if it has been explicitly set for this declaration block.\n\t * Returns the empty string if the property has not been set.\n\t */\n\tgetPropertyValue: function(name) {\n\t\treturn this[name] || \"\";\n\t},\n\n\t/**\n\t *\n\t * @param {string} name\n\t * @param {string} value\n\t * @param {string} [priority=null] \"important\" or null\n\t * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration-setProperty\n\t */\n\tsetProperty: function(name, value, priority) {\n\t\tif (this[name]) {\n\t\t\t// Property already exist. Overwrite it.\n\t\t\tvar index = Array.prototype.indexOf.call(this, name);\n\t\t\tif (index < 0) {\n\t\t\t\tthis[this.length] = name;\n\t\t\t\tthis.length++;\n\t\t\t}\n\t\t} else {\n\t\t\t// New property.\n\t\t\tthis[this.length] = name;\n\t\t\tthis.length++;\n\t\t}\n\t\tthis[name] = value + \"\";\n\t\tthis._importants[name] = priority;\n\t},\n\n\t/**\n\t *\n\t * @param {string} name\n\t * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration-removeProperty\n\t * @return {string} the value of the property if it has been explicitly set for this declaration block.\n\t * Returns the empty string if the property has not been set or the property name does not correspond to a known CSS property.\n\t */\n\tremoveProperty: function(name) {\n\t\tif (!(name in this)) {\n\t\t\treturn \"\";\n\t\t}\n\t\tvar index = Array.prototype.indexOf.call(this, name);\n\t\tif (index < 0) {\n\t\t\treturn \"\";\n\t\t}\n\t\tvar prevValue = this[name];\n\t\tthis[name] = \"\";\n\n\t\t// That's what WebKit and Opera do\n\t\tArray.prototype.splice.call(this, index, 1);\n\n\t\t// That's what Firefox does\n\t\t//this[index] = \"\"\n\n\t\treturn prevValue;\n\t},\n\n\tgetPropertyCSSValue: function() {\n\t\t//FIXME\n\t},\n\n\t/**\n\t *\n\t * @param {String} name\n\t */\n\tgetPropertyPriority: function(name) {\n\t\treturn this._importants[name] || \"\";\n\t},\n\n\n\t/**\n\t * element.style.overflow = \"auto\"\n\t * element.style.getPropertyShorthand(\"overflow-x\")\n\t * -> \"overflow\"\n\t */\n\tgetPropertyShorthand: function() {\n\t\t//FIXME\n\t},\n\n\tisPropertyImplicit: function() {\n\t\t//FIXME\n\t},\n\n\t// Doesn't work in IE < 9\n\tget cssText(){\n\t\tvar properties = [];\n\t\tfor (var i=0, length=this.length; i < length; ++i) {\n\t\t\tvar name = this[i];\n\t\t\tvar value = this.getPropertyValue(name);\n\t\t\tvar priority = this.getPropertyPriority(name);\n\t\t\tif (priority) {\n\t\t\t\tpriority = \" !\" + priority;\n\t\t\t}\n\t\t\tproperties[i] = name + \": \" + value + priority + \";\";\n\t\t}\n\t\treturn properties.join(\" \");\n\t},\n\n\tset cssText(text){\n\t\tvar i, name;\n\t\tfor (i = this.length; i--;) {\n\t\t\tname = this[i];\n\t\t\tthis[name] = \"\";\n\t\t}\n\t\tArray.prototype.splice.call(this, 0, this.length);\n\t\tthis._importants = {};\n\n\t\tvar dummyRule = CSSOM.parse('#bogus{' + text + '}').cssRules[0].style;\n\t\tvar length = dummyRule.length;\n\t\tfor (i = 0; i < length; ++i) {\n\t\t\tname = dummyRule[i];\n\t\t\tthis.setProperty(dummyRule[i], dummyRule.getPropertyValue(name), dummyRule.getPropertyPriority(name));\n\t\t}\n\t}\n};\n\n\n//.CommonJS\nexports.CSSStyleDeclaration = CSSOM.CSSStyleDeclaration;\nCSSOM.parse = require('./parse').parse; // Cannot be included sooner due to the mutual dependency between parse.js and CSSStyleDeclaration.js\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSStyleSheet: require(\"./CSSStyleSheet\").CSSStyleSheet,\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n\tCSSStyleRule: require(\"./CSSStyleRule\").CSSStyleRule,\n\tCSSGroupingRule: require(\"./CSSGroupingRule\").CSSGroupingRule,\n\tCSSConditionRule: require(\"./CSSConditionRule\").CSSConditionRule,\n\tCSSMediaRule: require(\"./CSSMediaRule\").CSSMediaRule,\n\tCSSSupportsRule: require(\"./CSSSupportsRule\").CSSSupportsRule,\n\tCSSStyleDeclaration: require(\"./CSSStyleDeclaration\").CSSStyleDeclaration,\n\tCSSKeyframeRule: require('./CSSKeyframeRule').CSSKeyframeRule,\n\tCSSKeyframesRule: require('./CSSKeyframesRule').CSSKeyframesRule\n};\n///CommonJS\n\n\n/**\n * Produces a deep copy of stylesheet — the instance variables of stylesheet are copied recursively.\n * @param {CSSStyleSheet|CSSOM.CSSStyleSheet} stylesheet\n * @nosideeffects\n * @return {CSSOM.CSSStyleSheet}\n */\nCSSOM.clone = function clone(stylesheet) {\n\n\tvar cloned = new CSSOM.CSSStyleSheet();\n\n\tvar rules = stylesheet.cssRules;\n\tif (!rules) {\n\t\treturn cloned;\n\t}\n\n\tfor (var i = 0, rulesLength = rules.length; i < rulesLength; i++) {\n\t\tvar rule = rules[i];\n\t\tvar ruleClone = cloned.cssRules[i] = new rule.constructor();\n\n\t\tvar style = rule.style;\n\t\tif (style) {\n\t\t\tvar styleClone = ruleClone.style = new CSSOM.CSSStyleDeclaration();\n\t\t\tfor (var j = 0, styleLength = style.length; j < styleLength; j++) {\n\t\t\t\tvar name = styleClone[j] = style[j];\n\t\t\t\tstyleClone[name] = style[name];\n\t\t\t\tstyleClone._importants[name] = style.getPropertyPriority(name);\n\t\t\t}\n\t\t\tstyleClone.length = style.length;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('keyText')) {\n\t\t\truleClone.keyText = rule.keyText;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('selectorText')) {\n\t\t\truleClone.selectorText = rule.selectorText;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('mediaText')) {\n\t\t\truleClone.mediaText = rule.mediaText;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('conditionText')) {\n\t\t\truleClone.conditionText = rule.conditionText;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('cssRules')) {\n\t\t\truleClone.cssRules = clone(rule).cssRules;\n\t\t}\n\t}\n\n\treturn cloned;\n\n};\n\n//.CommonJS\nexports.clone = CSSOM.clone;\n///CommonJS\n","'use strict';\n\nexports.CSSStyleDeclaration = require('./CSSStyleDeclaration').CSSStyleDeclaration;\nexports.CSSRule = require('./CSSRule').CSSRule;\nexports.CSSGroupingRule = require('./CSSGroupingRule').CSSGroupingRule;\nexports.CSSConditionRule = require('./CSSConditionRule').CSSConditionRule;\nexports.CSSStyleRule = require('./CSSStyleRule').CSSStyleRule;\nexports.MediaList = require('./MediaList').MediaList;\nexports.CSSMediaRule = require('./CSSMediaRule').CSSMediaRule;\nexports.CSSSupportsRule = require('./CSSSupportsRule').CSSSupportsRule;\nexports.CSSImportRule = require('./CSSImportRule').CSSImportRule;\nexports.CSSFontFaceRule = require('./CSSFontFaceRule').CSSFontFaceRule;\nexports.CSSHostRule = require('./CSSHostRule').CSSHostRule;\nexports.StyleSheet = require('./StyleSheet').StyleSheet;\nexports.CSSStyleSheet = require('./CSSStyleSheet').CSSStyleSheet;\nexports.CSSKeyframesRule = require('./CSSKeyframesRule').CSSKeyframesRule;\nexports.CSSKeyframeRule = require('./CSSKeyframeRule').CSSKeyframeRule;\nexports.MatcherList = require('./MatcherList').MatcherList;\nexports.CSSDocumentRule = require('./CSSDocumentRule').CSSDocumentRule;\nexports.CSSValue = require('./CSSValue').CSSValue;\nexports.CSSValueExpression = require('./CSSValueExpression').CSSValueExpression;\nexports.parse = require('./parse').parse;\nexports.clone = require('./clone').clone;\n","import {parse} from 'cssom';\n\nimport {registerHTMLClass} from '../shared/register-html-class.js';\nimport {SHEET} from '../shared/symbols.js';\n\nimport {TextElement} from './text-element.js';\n\nconst tagName = 'style';\n\n/**\n * @implements globalThis.HTMLStyleElement\n */\nclass HTMLStyleElement extends TextElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n this[SHEET] = null;\n }\n\n get sheet() {\n const sheet = this[SHEET];\n if (sheet !== null) {\n return sheet;\n }\n return this[SHEET] = parse(this.textContent);\n }\n\n get innerHTML() {\n return super.innerHTML || '';\n }\n set innerHTML(value) {\n super.textContent = value;\n this[SHEET] = null;\n }\n get innerText() {\n return super.innerText || '';\n }\n set innerText(value) {\n super.textContent = value;\n this[SHEET] = null;\n }\n get textContent() {\n return super.textContent || '';\n }\n set textContent(value) {\n super.textContent = value;\n this[SHEET] = null;\n }\n}\n\nregisterHTMLClass(tagName, HTMLStyleElement);\n\nexport {HTMLStyleElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTimeElement\n */\nexport class HTMLTimeElement extends HTMLElement {\n constructor(ownerDocument, localName = 'time') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLFieldSetElement\n */\nexport class HTMLFieldSetElement extends HTMLElement {\n constructor(ownerDocument, localName = 'fieldset') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLEmbedElement\n */\nexport class HTMLEmbedElement extends HTMLElement {\n constructor(ownerDocument, localName = 'embed') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLHRElement\n */\nexport class HTMLHRElement extends HTMLElement {\n constructor(ownerDocument, localName = 'hr') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLProgressElement\n */\nexport class HTMLProgressElement extends HTMLElement {\n constructor(ownerDocument, localName = 'progress') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLParagraphElement\n */\nexport class HTMLParagraphElement extends HTMLElement {\n constructor(ownerDocument, localName = 'p') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTableElement\n */\nexport class HTMLTableElement extends HTMLElement {\n constructor(ownerDocument, localName = 'table') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLFrameSetElement\n */\nexport class HTMLFrameSetElement extends HTMLElement {\n constructor(ownerDocument, localName = 'frameset') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLLIElement\n */\nexport class HTMLLIElement extends HTMLElement {\n constructor(ownerDocument, localName = 'li') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLBaseElement\n */\nexport class HTMLBaseElement extends HTMLElement {\n constructor(ownerDocument, localName = 'base') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDataListElement\n */\nexport class HTMLDataListElement extends HTMLElement {\n constructor(ownerDocument, localName = 'datalist') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute, stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'input';\n\n/**\n * @implements globalThis.HTMLInputElement\n */\nclass HTMLInputElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get autofocus() { return booleanAttribute.get(this, 'autofocus') || -1; }\n set autofocus(value) { booleanAttribute.set(this, 'autofocus', value); }\n\n get disabled() { return booleanAttribute.get(this, 'disabled'); }\n set disabled(value) { booleanAttribute.set(this, 'disabled', value); }\n\n get name() { return this.getAttribute('name'); }\n set name(value) { this.setAttribute('name', value); }\n\n get placeholder() { return this.getAttribute('placeholder'); }\n set placeholder(value) { this.setAttribute('placeholder', value); }\n\n get type() { return this.getAttribute('type'); }\n set type(value) { this.setAttribute('type', value); }\n\n get value() { return stringAttribute.get(this, 'value'); }\n set value(value) { stringAttribute.set(this, 'value', value); }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLInputElement);\n\nexport {HTMLInputElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLParamElement\n */\nexport class HTMLParamElement extends HTMLElement {\n constructor(ownerDocument, localName = 'param') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLMediaElement\n */\nexport class HTMLMediaElement extends HTMLElement {\n constructor(ownerDocument, localName = 'media') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLAudioElement\n */\nexport class HTMLAudioElement extends HTMLElement {\n constructor(ownerDocument, localName = 'audio') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'h1';\n\n/**\n * @implements globalThis.HTMLHeadingElement\n */\nclass HTMLHeadingElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n}\n\nregisterHTMLClass([tagName, 'h2', 'h3', 'h4', 'h5', 'h6'], HTMLHeadingElement);\n\nexport {HTMLHeadingElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDirectoryElement\n */\nexport class HTMLDirectoryElement extends HTMLElement {\n constructor(ownerDocument, localName = 'dir') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLQuoteElement\n */\nexport class HTMLQuoteElement extends HTMLElement {\n constructor(ownerDocument, localName = 'quote') {\n super(ownerDocument, localName);\n }\n}\n","class Canvas {\n constructor(width, height) {\n this.width = width;\n this.height = height;\n }\n getContext() {\n return null;\n }\n toDataURL() {\n return '';\n }\n}\n\nmodule.exports = {\n createCanvas: (width, height) => new Canvas(width, height),\n};\n","/* c8 ignore start */\ntry {\n module.exports = require('canvas');\n} catch (fallback) {\n module.exports = require('./canvas-shim.cjs');\n}\n/* c8 ignore stop */\n","import {IMAGE} from '../shared/symbols.js';\n\nimport {registerHTMLClass} from '../shared/register-html-class.js';\nimport {numericAttribute} from '../shared/attributes.js';\n\nimport Canvas from '../../commonjs/canvas.cjs';\n\nimport {HTMLElement} from './element.js';\n\nconst {createCanvas} = Canvas;\n\nconst tagName = 'canvas';\n\n/**\n * @implements globalThis.HTMLCanvasElement\n */\nclass HTMLCanvasElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n this[IMAGE] = createCanvas(300, 150);\n }\n\n get width() {\n return this[IMAGE].width;\n }\n\n set width(value) {\n numericAttribute.set(this, 'width', value);\n this[IMAGE].width = value;\n }\n\n get height() {\n return this[IMAGE].height;\n }\n\n set height(value) {\n numericAttribute.set(this, 'height', value);\n this[IMAGE].height = value;\n }\n\n getContext(type) {\n return this[IMAGE].getContext(type);\n }\n\n toDataURL(...args) {\n return this[IMAGE].toDataURL(...args);\n }\n}\n\nregisterHTMLClass(tagName, HTMLCanvasElement);\n\nexport {HTMLCanvasElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLLegendElement\n */\nexport class HTMLLegendElement extends HTMLElement {\n constructor(ownerDocument, localName = 'legend') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\nimport {booleanAttribute, stringAttribute} from '../shared/attributes.js';\nimport {registerHTMLClass} from '../shared/register-html-class.js';\n\nconst tagName = 'option';\n\n/**\n * @implements globalThis.HTMLOptionElement\n */\nclass HTMLOptionElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get value() { return stringAttribute.get(this, 'value'); }\n set value(value) { stringAttribute.set(this, 'value', value); }\n /* c8 ignore stop */\n\n get selected() { return booleanAttribute.get(this, 'selected'); }\n set selected(value) {\n const option = this.parentElement?.querySelector('option[selected]');\n if (option && option !== this)\n option.selected = false;\n booleanAttribute.set(this, 'selected', value);\n }\n}\n\nregisterHTMLClass(tagName, HTMLOptionElement);\n\nexport {HTMLOptionElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLSpanElement\n */\nexport class HTMLSpanElement extends HTMLElement {\n constructor(ownerDocument, localName = 'span') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLMeterElement\n */\nexport class HTMLMeterElement extends HTMLElement {\n constructor(ownerDocument, localName = 'meter') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLVideoElement\n */\nexport class HTMLVideoElement extends HTMLElement {\n constructor(ownerDocument, localName = 'video') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTableCellElement\n */\nexport class HTMLTableCellElement extends HTMLElement {\n constructor(ownerDocument, localName = 'td') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\n\nimport {TextElement} from './text-element.js';\n\nconst tagName = 'title';\n\n/**\n * @implements globalThis.HTMLTitleElement\n */\nclass HTMLTitleElement extends TextElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n}\n\nregisterHTMLClass(tagName, HTMLTitleElement);\n\nexport {HTMLTitleElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLOutputElement\n */\nexport class HTMLOutputElement extends HTMLElement {\n constructor(ownerDocument, localName = 'output') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTableRowElement\n */\nexport class HTMLTableRowElement extends HTMLElement {\n constructor(ownerDocument, localName = 'tr') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDataElement\n */\nexport class HTMLDataElement extends HTMLElement {\n constructor(ownerDocument, localName = 'data') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLMenuElement\n */\nexport class HTMLMenuElement extends HTMLElement {\n constructor(ownerDocument, localName = 'menu') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\nimport {NodeList} from '../interface/node-list.js';\n\nconst tagName = 'select';\n\n/**\n * @implements globalThis.HTMLSelectElement\n */\nclass HTMLSelectElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n get options() {\n let children = new NodeList;\n let {firstElementChild} = this;\n while (firstElementChild) {\n if (firstElementChild.tagName === 'OPTGROUP')\n children.push(...firstElementChild.children);\n else\n children.push(firstElementChild);\n firstElementChild = firstElementChild.nextElementSibling;\n }\n return children;\n }\n\n /* c8 ignore start */\n get disabled() { return booleanAttribute.get(this, 'disabled'); }\n set disabled(value) { booleanAttribute.set(this, 'disabled', value); }\n\n get name() { return this.getAttribute('name'); }\n set name(value) { this.setAttribute('name', value); }\n /* c8 ignore stop */\n\n get value() { return this.querySelector('option[selected]')?.value; }\n}\n\nregisterHTMLClass(tagName, HTMLSelectElement);\n\nexport {HTMLSelectElement};\n\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLBRElement\n */\nexport class HTMLBRElement extends HTMLElement {\n constructor(ownerDocument, localName = 'br') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'button';\n\n/**\n * @implements globalThis.HTMLButtonElement\n */\nclass HTMLButtonElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get disabled() { return booleanAttribute.get(this, 'disabled'); }\n set disabled(value) { booleanAttribute.set(this, 'disabled', value); }\n\n get name() { return this.getAttribute('name'); }\n set name(value) { this.setAttribute('name', value); }\n\n get type() { return this.getAttribute('type'); }\n set type(value) { this.setAttribute('type', value); }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLButtonElement);\n\nexport {HTMLButtonElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLMapElement\n */\nexport class HTMLMapElement extends HTMLElement {\n constructor(ownerDocument, localName = 'map') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLOptGroupElement\n */\nexport class HTMLOptGroupElement extends HTMLElement {\n constructor(ownerDocument, localName = 'optgroup') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDListElement\n */\nexport class HTMLDListElement extends HTMLElement {\n constructor(ownerDocument, localName = 'dl') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute} from '../shared/attributes.js';\n\nimport {TextElement} from './text-element.js';\n\nconst tagName = 'textarea';\n\n/**\n * @implements globalThis.HTMLTextAreaElement\n */\nclass HTMLTextAreaElement extends TextElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get disabled() { return booleanAttribute.get(this, 'disabled'); }\n set disabled(value) { booleanAttribute.set(this, 'disabled', value); }\n\n get name() { return this.getAttribute('name'); }\n set name(value) { this.setAttribute('name', value); }\n\n get placeholder() { return this.getAttribute('placeholder'); }\n set placeholder(value) { this.setAttribute('placeholder', value); }\n\n get type() { return this.getAttribute('type'); }\n set type(value) { this.setAttribute('type', value); }\n\n get value() { return this.textContent; }\n set value(content) { this.textContent = content; }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLTextAreaElement);\n\nexport {HTMLTextAreaElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLFontElement\n */\nexport class HTMLFontElement extends HTMLElement {\n constructor(ownerDocument, localName = 'font') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDivElement\n */\nexport class HTMLDivElement extends HTMLElement {\n constructor(ownerDocument, localName = 'div') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute, stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'link';\n\n/**\n * @implements globalThis.HTMLLinkElement\n */\nclass HTMLLinkElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */ // copy paste from img.src, already covered\n get disabled() { return booleanAttribute.get(this, 'disabled'); }\n set disabled(value) { booleanAttribute.set(this, 'disabled', value); }\n\n get href() { return stringAttribute.get(this, 'href'); }\n set href(value) { stringAttribute.set(this, 'href', value); }\n\n get hreflang() { return stringAttribute.get(this, 'hreflang'); }\n set hreflang(value) { stringAttribute.set(this, 'hreflang', value); }\n\n get media() { return stringAttribute.get(this, 'media'); }\n set media(value) { stringAttribute.set(this, 'media', value); }\n\n get rel() { return stringAttribute.get(this, 'rel'); }\n set rel(value) { stringAttribute.set(this, 'rel', value); }\n\n get type() { return stringAttribute.get(this, 'type'); }\n set type(value) { stringAttribute.set(this, 'type', value); }\n /* c8 ignore stop */\n\n}\n\nregisterHTMLClass(tagName, HTMLLinkElement);\n\nexport {HTMLLinkElement};\n","import {HTMLElement} from './element.js';\nimport {registerHTMLClass} from '../shared/register-html-class.js';\n\nconst tagName = 'slot';\n\n/**\n * @implements globalThis.HTMLSlotElement\n */\nclass HTMLSlotElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get name() { return this.getAttribute('name'); }\n set name(value) { this.setAttribute('name', value); }\n\n assign() {}\n\n assignedNodes(options) {\n const isNamedSlot = !!this.name;\n const hostChildNodes = this.getRootNode().host?.childNodes ?? [];\n let slottables;\n\n if (isNamedSlot) {\n slottables = [...hostChildNodes].filter(node => node.slot === this.name);\n } else {\n slottables = [...hostChildNodes].filter(node => !node.slot);\n }\n\n if (options?.flatten) {\n const result = [];\n\n // Element and Text nodes are slottables. A slot can be a slottable.\n for (let slottable of slottables) {\n if (slottable.localName === 'slot') {\n result.push(...slottable.assignedNodes({ flatten: true }));\n } else {\n result.push(slottable);\n }\n }\n\n slottables = result;\n }\n\n // If no assigned nodes are found, it returns the slot's fallback content.\n return slottables.length ? slottables : [...this.childNodes];\n }\n\n assignedElements(options) {\n const slottables = this.assignedNodes(options).filter(n => n.nodeType === 1);\n\n // If no assigned elements are found, it returns the slot's fallback content.\n return slottables.length ? slottables : [...this.children];\n }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLSlotElement);\n\nexport {HTMLSlotElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLFormElement\n */\nexport class HTMLFormElement extends HTMLElement {\n constructor(ownerDocument, localName = 'form') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {numericAttribute, stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'img';\n\n/**\n * @implements globalThis.HTMLImageElement\n */\nclass HTMLImageElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get alt() { return stringAttribute.get(this, 'alt'); }\n set alt(value) { stringAttribute.set(this, 'alt', value); }\n\n get sizes() { return stringAttribute.get(this, 'sizes'); }\n set sizes(value) { stringAttribute.set(this, 'sizes', value); }\n\n get src() { return stringAttribute.get(this, 'src'); }\n set src(value) { stringAttribute.set(this, 'src', value); }\n\n get srcset() { return stringAttribute.get(this, 'srcset'); }\n set srcset(value) { stringAttribute.set(this, 'srcset', value); }\n\n get title() { return stringAttribute.get(this, 'title'); }\n set title(value) { stringAttribute.set(this, 'title', value); }\n\n get width() { return numericAttribute.get(this, 'width'); }\n set width(value) { numericAttribute.set(this, 'width', value); }\n\n get height() { return numericAttribute.get(this, 'height'); }\n set height(value) { numericAttribute.set(this, 'height', value); }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLImageElement);\n\nexport {HTMLImageElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLPreElement\n */\nexport class HTMLPreElement extends HTMLElement {\n constructor(ownerDocument, localName = 'pre') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLUListElement\n */\nexport class HTMLUListElement extends HTMLElement {\n constructor(ownerDocument, localName = 'ul') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\nimport {registerHTMLClass} from '../shared/register-html-class.js';\nimport { stringAttribute } from '../shared/attributes.js';\n\nconst tagName = 'meta'\n/**\n * @implements globalThis.HTMLMetaElement\n */\nexport class HTMLMetaElement extends HTMLElement {\n constructor(ownerDocument, localName =tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get name() { return stringAttribute.get(this, 'name'); }\n set name(value) { stringAttribute.set(this, 'name', value); }\n\n get httpEquiv() { return stringAttribute.get(this, 'http-equiv'); }\n set httpEquiv(value) { stringAttribute.set(this, 'http-equiv', value); }\n\n get content() { return stringAttribute.get(this, 'content'); }\n set content(value) { stringAttribute.set(this, 'content', value); }\n\n get charset() { return stringAttribute.get(this, 'charset'); }\n set charset(value) { stringAttribute.set(this, 'charset', value); }\n\n get media() { return stringAttribute.get(this, 'media'); }\n set media(value) { stringAttribute.set(this, 'media', value); }\n /* c8 ignore stop */\n\n}\n\nregisterHTMLClass(tagName, HTMLMetaElement);\n\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLPictureElement\n */\nexport class HTMLPictureElement extends HTMLElement {\n constructor(ownerDocument, localName = 'picture') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLAreaElement\n */\nexport class HTMLAreaElement extends HTMLElement {\n constructor(ownerDocument, localName = 'area') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLOListElement\n */\nexport class HTMLOListElement extends HTMLElement {\n constructor(ownerDocument, localName = 'ol') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTableCaptionElement\n */\nexport class HTMLTableCaptionElement extends HTMLElement {\n constructor(ownerDocument, localName = 'caption') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'a';\n\n/**\n * @implements globalThis.HTMLAnchorElement\n */\nclass HTMLAnchorElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */ // copy paste from img.src, already covered\n get href() { return encodeURI(decodeURI(stringAttribute.get(this, 'href'))); }\n set href(value) { stringAttribute.set(this, 'href', decodeURI(value)); }\n\n get download() { return encodeURI(decodeURI(stringAttribute.get(this, 'download'))); }\n set download(value) { stringAttribute.set(this, 'download', decodeURI(value)); }\n\n get target() { return stringAttribute.get(this, 'target'); }\n set target(value) { stringAttribute.set(this, 'target', value); }\n\n get type() { return stringAttribute.get(this, 'type'); }\n set type(value) { stringAttribute.set(this, 'type', value); }\n /* c8 ignore stop */\n\n}\n\nregisterHTMLClass(tagName, HTMLAnchorElement);\n\nexport {HTMLAnchorElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLLabelElement\n */\nexport class HTMLLabelElement extends HTMLElement {\n constructor(ownerDocument, localName = 'label') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLUnknownElement\n */\nexport class HTMLUnknownElement extends HTMLElement {\n constructor(ownerDocument, localName = 'unknown') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLModElement\n */\nexport class HTMLModElement extends HTMLElement {\n constructor(ownerDocument, localName = 'mod') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDetailsElement\n */\nexport class HTMLDetailsElement extends HTMLElement {\n constructor(ownerDocument, localName = 'details') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'source';\n\n/**\n * @implements globalThis.HTMLSourceElement\n */\nclass HTMLSourceElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get src() { return stringAttribute.get(this, 'src'); }\n set src(value) { stringAttribute.set(this, 'src', value); }\n\n get srcset() { return stringAttribute.get(this, 'srcset'); }\n set srcset(value) { stringAttribute.set(this, 'srcset', value); }\n\n get sizes() { return stringAttribute.get(this, 'sizes'); }\n set sizes(value) { stringAttribute.set(this, 'sizes', value); }\n\n get type() { return stringAttribute.get(this, 'type'); }\n set type(value) { stringAttribute.set(this, 'type', value); }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLSourceElement);\n\nexport {HTMLSourceElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTrackElement\n */\nexport class HTMLTrackElement extends HTMLElement {\n constructor(ownerDocument, localName = 'track') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLMarqueeElement\n */\nexport class HTMLMarqueeElement extends HTMLElement {\n constructor(ownerDocument, localName = 'marquee') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from '../html/element.js';\nimport {HTMLTemplateElement} from '../html/template-element.js';\nimport {HTMLHtmlElement} from '../html/html-element.js';\nimport {HTMLScriptElement} from '../html/script-element.js';\nimport {HTMLFrameElement} from '../html/frame-element.js';\nimport {HTMLIFrameElement} from '../html/i-frame-element.js';\nimport {HTMLObjectElement} from '../html/object-element.js';\nimport {HTMLHeadElement} from '../html/head-element.js';\nimport {HTMLBodyElement} from '../html/body-element.js';\nimport {HTMLStyleElement} from '../html/style-element.js';\nimport {HTMLTimeElement} from '../html/time-element.js';\nimport {HTMLFieldSetElement} from '../html/field-set-element.js';\nimport {HTMLEmbedElement} from '../html/embed-element.js';\nimport {HTMLHRElement} from '../html/hr-element.js';\nimport {HTMLProgressElement} from '../html/progress-element.js';\nimport {HTMLParagraphElement} from '../html/paragraph-element.js';\nimport {HTMLTableElement} from '../html/table-element.js';\nimport {HTMLFrameSetElement} from '../html/frame-set-element.js';\nimport {HTMLLIElement} from '../html/li-element.js';\nimport {HTMLBaseElement} from '../html/base-element.js';\nimport {HTMLDataListElement} from '../html/data-list-element.js';\nimport {HTMLInputElement} from '../html/input-element.js';\nimport {HTMLParamElement} from '../html/param-element.js';\nimport {HTMLMediaElement} from '../html/media-element.js';\nimport {HTMLAudioElement} from '../html/audio-element.js';\nimport {HTMLHeadingElement} from '../html/heading-element.js';\nimport {HTMLDirectoryElement} from '../html/directory-element.js';\nimport {HTMLQuoteElement} from '../html/quote-element.js';\nimport {HTMLCanvasElement} from '../html/canvas-element.js';\nimport {HTMLLegendElement} from '../html/legend-element.js';\nimport {HTMLOptionElement} from '../html/option-element.js';\nimport {HTMLSpanElement} from '../html/span-element.js';\nimport {HTMLMeterElement} from '../html/meter-element.js';\nimport {HTMLVideoElement} from '../html/video-element.js';\nimport {HTMLTableCellElement} from '../html/table-cell-element.js';\nimport {HTMLTitleElement} from '../html/title-element.js';\nimport {HTMLOutputElement} from '../html/output-element.js';\nimport {HTMLTableRowElement} from '../html/table-row-element.js';\nimport {HTMLDataElement} from '../html/data-element.js';\nimport {HTMLMenuElement} from '../html/menu-element.js';\nimport {HTMLSelectElement} from '../html/select-element.js';\nimport {HTMLBRElement} from '../html/br-element.js';\nimport {HTMLButtonElement} from '../html/button-element.js';\nimport {HTMLMapElement} from '../html/map-element.js';\nimport {HTMLOptGroupElement} from '../html/opt-group-element.js';\nimport {HTMLDListElement} from '../html/d-list-element.js';\nimport {HTMLTextAreaElement} from '../html/text-area-element.js';\nimport {HTMLFontElement} from '../html/font-element.js';\nimport {HTMLDivElement} from '../html/div-element.js';\nimport {HTMLLinkElement} from '../html/link-element.js';\nimport {HTMLSlotElement} from '../html/slot-element.js';\nimport {HTMLFormElement} from '../html/form-element.js';\nimport {HTMLImageElement} from '../html/image-element.js';\nimport {HTMLPreElement} from '../html/pre-element.js';\nimport {HTMLUListElement} from '../html/u-list-element.js';\nimport {HTMLMetaElement} from '../html/meta-element.js';\nimport {HTMLPictureElement} from '../html/picture-element.js';\nimport {HTMLAreaElement} from '../html/area-element.js';\nimport {HTMLOListElement} from '../html/o-list-element.js';\nimport {HTMLTableCaptionElement} from '../html/table-caption-element.js';\nimport {HTMLAnchorElement} from '../html/anchor-element.js';\nimport {HTMLLabelElement} from '../html/label-element.js';\nimport {HTMLUnknownElement} from '../html/unknown-element.js';\nimport {HTMLModElement} from '../html/mod-element.js';\nimport {HTMLDetailsElement} from '../html/details-element.js';\nimport {HTMLSourceElement} from '../html/source-element.js';\nimport {HTMLTrackElement} from '../html/track-element.js';\nimport {HTMLMarqueeElement} from '../html/marquee-element.js';\n\nexport {\n HTMLElement,\n HTMLTemplateElement,\n HTMLHtmlElement,\n HTMLScriptElement,\n HTMLFrameElement,\n HTMLIFrameElement,\n HTMLObjectElement,\n HTMLHeadElement,\n HTMLBodyElement,\n HTMLStyleElement,\n HTMLTimeElement,\n HTMLFieldSetElement,\n HTMLEmbedElement,\n HTMLHRElement,\n HTMLProgressElement,\n HTMLParagraphElement,\n HTMLTableElement,\n HTMLFrameSetElement,\n HTMLLIElement,\n HTMLBaseElement,\n HTMLDataListElement,\n HTMLInputElement,\n HTMLParamElement,\n HTMLMediaElement,\n HTMLAudioElement,\n HTMLHeadingElement,\n HTMLDirectoryElement,\n HTMLQuoteElement,\n HTMLCanvasElement,\n HTMLLegendElement,\n HTMLOptionElement,\n HTMLSpanElement,\n HTMLMeterElement,\n HTMLVideoElement,\n HTMLTableCellElement,\n HTMLTitleElement,\n HTMLOutputElement,\n HTMLTableRowElement,\n HTMLDataElement,\n HTMLMenuElement,\n HTMLSelectElement,\n HTMLBRElement,\n HTMLButtonElement,\n HTMLMapElement,\n HTMLOptGroupElement,\n HTMLDListElement,\n HTMLTextAreaElement,\n HTMLFontElement,\n HTMLDivElement,\n HTMLLinkElement,\n HTMLSlotElement,\n HTMLFormElement,\n HTMLImageElement,\n HTMLPreElement,\n HTMLUListElement,\n HTMLMetaElement,\n HTMLPictureElement,\n HTMLAreaElement,\n HTMLOListElement,\n HTMLTableCaptionElement,\n HTMLAnchorElement,\n HTMLLabelElement,\n HTMLUnknownElement,\n HTMLModElement,\n HTMLDetailsElement,\n HTMLSourceElement,\n HTMLTrackElement,\n HTMLMarqueeElement\n};\n\nexport const HTMLClasses = {\n HTMLElement,\n HTMLTemplateElement,\n HTMLHtmlElement,\n HTMLScriptElement,\n HTMLFrameElement,\n HTMLIFrameElement,\n HTMLObjectElement,\n HTMLHeadElement,\n HTMLBodyElement,\n HTMLStyleElement,\n HTMLTimeElement,\n HTMLFieldSetElement,\n HTMLEmbedElement,\n HTMLHRElement,\n HTMLProgressElement,\n HTMLParagraphElement,\n HTMLTableElement,\n HTMLFrameSetElement,\n HTMLLIElement,\n HTMLBaseElement,\n HTMLDataListElement,\n HTMLInputElement,\n HTMLParamElement,\n HTMLMediaElement,\n HTMLAudioElement,\n HTMLHeadingElement,\n HTMLDirectoryElement,\n HTMLQuoteElement,\n HTMLCanvasElement,\n HTMLLegendElement,\n HTMLOptionElement,\n HTMLSpanElement,\n HTMLMeterElement,\n HTMLVideoElement,\n HTMLTableCellElement,\n HTMLTitleElement,\n HTMLOutputElement,\n HTMLTableRowElement,\n HTMLDataElement,\n HTMLMenuElement,\n HTMLSelectElement,\n HTMLBRElement,\n HTMLButtonElement,\n HTMLMapElement,\n HTMLOptGroupElement,\n HTMLDListElement,\n HTMLTextAreaElement,\n HTMLFontElement,\n HTMLDivElement,\n HTMLLinkElement,\n HTMLSlotElement,\n HTMLFormElement,\n HTMLImageElement,\n HTMLPreElement,\n HTMLUListElement,\n HTMLMetaElement,\n HTMLPictureElement,\n HTMLAreaElement,\n HTMLOListElement,\n HTMLTableCaptionElement,\n HTMLAnchorElement,\n HTMLLabelElement,\n HTMLUnknownElement,\n HTMLModElement,\n HTMLDetailsElement,\n HTMLSourceElement,\n HTMLTrackElement,\n HTMLMarqueeElement\n};\n","// TODO: ensure all these are text only\n// /^(?:plaintext|script|style|textarea|title|xmp)$/i\n\nconst voidElements = {test: () => true};\nexport const Mime = {\n 'text/html': {\n docType: '<!DOCTYPE html>',\n ignoreCase: true,\n voidElements: /^(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)$/i\n },\n 'image/svg+xml': {\n docType: '<?xml version=\"1.0\" encoding=\"utf-8\"?>',\n ignoreCase: false,\n voidElements\n },\n 'text/xml': {\n docType: '<?xml version=\"1.0\" encoding=\"utf-8\"?>',\n ignoreCase: false,\n voidElements\n },\n 'application/xml': {\n docType: '<?xml version=\"1.0\" encoding=\"utf-8\"?>',\n ignoreCase: false,\n voidElements\n },\n 'application/xhtml+xml': {\n docType: '<?xml version=\"1.0\" encoding=\"utf-8\"?>',\n ignoreCase: false,\n voidElements\n }\n};\n","// https://dom.spec.whatwg.org/#interface-customevent\n\n/* c8 ignore start */\n\n// One day Node might have CustomEvent too\n\nimport {Event} from './event.js';\n\n/**\n * @implements globalThis.CustomEvent\n */\nexport class CustomEvent extends Event {\n constructor(type, eventInitDict = {}) {\n super(type, eventInitDict);\n this.detail = eventInitDict.detail;\n }\n}\n\n/* c8 ignore stop */\n","// https://dom.spec.whatwg.org/#interface-customevent\n\n/* c8 ignore start */\n\n// One day Node might have CustomEvent too\n\nimport {Event} from './event.js';\n\n/**\n * @implements globalThis.InputEvent\n */\nexport class InputEvent extends Event {\n constructor(type, inputEventInit = {}) {\n super(type, inputEventInit);\n this.inputType = inputEventInit.inputType;\n this.data = inputEventInit.data;\n this.dataTransfer = inputEventInit.dataTransfer;\n this.isComposing = inputEventInit.isComposing || false;\n this.ranges = inputEventInit.ranges;\n }\n}\n/* c8 ignore stop */\n","import {HTMLImageElement} from '../html/image-element.js';\n\nexport const ImageClass = ownerDocument =>\n/**\n * @implements globalThis.Image\n */\nclass Image extends HTMLImageElement {\n constructor(width, height) {\n super(ownerDocument);\n switch (arguments.length) {\n case 1:\n this.height = width;\n this.width = width;\n break;\n case 2:\n this.height = height;\n this.width = width;\n break;\n }\n }\n};\n","// https://dom.spec.whatwg.org/#concept-live-range\n\nimport {END, NEXT, PREV, START} from '../shared/symbols.js';\n\nimport {SVGElement} from '../svg/element.js';\n\nimport {getEnd, setAdjacent} from '../shared/utils.js';\n\nconst deleteContents = ({[START]: start, [END]: end}, fragment = null) => {\n setAdjacent(start[PREV], end[NEXT]);\n do {\n const after = getEnd(start);\n const next = after === end ? after : after[NEXT];\n if (fragment)\n fragment.insertBefore(start, fragment[END]);\n else\n start.remove();\n start = next;\n } while (start !== end);\n};\n\n/**\n * @implements globalThis.Range\n */\nexport class Range {\n constructor() {\n this[START] = null;\n this[END] = null;\n this.commonAncestorContainer = null;\n }\n\n /* TODO: this is more complicated than it looks\n setStart(node, offset) {\n this[START] = node.childNodes[offset];\n }\n\n setEnd(node, offset) {\n this[END] = getEnd(node.childNodes[offset]);\n }\n //*/\n\n insertNode(newNode) {\n this[END].parentNode.insertBefore(newNode, this[START]);\n }\n\n selectNode(node) {\n this[START] = node;\n this[END] = getEnd(node);\n }\n\n // TODO: SVG elements should then create contextual fragments\n // that return SVG nodes\n selectNodeContents(node) {\n this.selectNode(node);\n this.commonAncestorContainer = node;\n }\n\n surroundContents(parentNode) {\n parentNode.replaceChildren(this.extractContents());\n }\n\n setStartBefore(node) {\n this[START] = node;\n }\n\n setStartAfter(node) {\n this[START] = node.nextSibling;\n }\n\n setEndBefore(node) {\n this[END] = getEnd(node.previousSibling);\n }\n\n setEndAfter(node) {\n this[END] = getEnd(node);\n }\n\n cloneContents() {\n let {[START]: start, [END]: end} = this;\n const fragment = start.ownerDocument.createDocumentFragment();\n while (start !== end) {\n fragment.insertBefore(start.cloneNode(true), fragment[END]);\n start = getEnd(start);\n if (start !== end)\n start = start[NEXT];\n }\n return fragment;\n }\n\n deleteContents() {\n deleteContents(this);\n }\n\n extractContents() {\n const fragment = this[START].ownerDocument.createDocumentFragment();\n deleteContents(this, fragment);\n return fragment;\n }\n\n createContextualFragment(html) {\n const { commonAncestorContainer: doc } = this;\n const isSVG = 'ownerSVGElement' in doc;\n const document = isSVG ? doc.ownerDocument : doc;\n const template = document.createElement('template');\n template.innerHTML = html;\n let {content} = template;\n if (isSVG) {\n const childNodes = [...content.childNodes];\n content = document.createDocumentFragment();\n Object.setPrototypeOf(content, SVGElement.prototype);\n content.ownerSVGElement = document;\n for (const child of childNodes) {\n Object.setPrototypeOf(child, SVGElement.prototype);\n child.ownerSVGElement = document;\n content.appendChild(child);\n }\n }\n else\n this.selectNode(content);\n return content;\n }\n\n cloneRange() {\n const range = new Range;\n range[START] = this[START];\n range[END] = this[END];\n return range;\n }\n}\n","import {\n DOCUMENT_NODE,\n ELEMENT_NODE,\n TEXT_NODE,\n CDATA_SECTION_NODE,\n COMMENT_NODE,\n SHOW_ALL,\n SHOW_ELEMENT,\n SHOW_CDATA_SECTION,\n SHOW_COMMENT,\n SHOW_TEXT\n} from '../shared/constants.js';\n\nimport {PRIVATE, END, NEXT} from '../shared/symbols.js';\n\nconst isOK = ({nodeType}, mask) => {\n switch (nodeType) {\n case ELEMENT_NODE:\n return mask & SHOW_ELEMENT;\n case TEXT_NODE:\n return mask & SHOW_TEXT;\n case COMMENT_NODE:\n return mask & SHOW_COMMENT;\n case CDATA_SECTION_NODE:\n return mask & SHOW_CDATA_SECTION;\n }\n return 0;\n};\n\n/**\n * @implements globalThis.TreeWalker\n */\nexport class TreeWalker {\n constructor(root, whatToShow = SHOW_ALL) {\n this.root = root;\n this.currentNode = root;\n this.whatToShow = whatToShow;\n let {[NEXT]: next, [END]: end} = root;\n if (root.nodeType === DOCUMENT_NODE) {\n const {documentElement} = root;\n next = documentElement;\n end = documentElement[END];\n }\n const nodes = [];\n while (next !== end) {\n if (isOK(next, whatToShow))\n nodes.push(next);\n next = next[NEXT];\n }\n this[PRIVATE] = {i: 0, nodes};\n }\n\n nextNode() {\n const $ = this[PRIVATE];\n this.currentNode = $.i < $.nodes.length ? $.nodes[$.i++] : null;\n return this.currentNode;\n }\n}\n","import {performance} from '../../commonjs/perf_hooks.cjs';\n\nimport {DOCUMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, SVG_NAMESPACE} from '../shared/constants.js';\n\nimport {\n CUSTOM_ELEMENTS, DOM_PARSER, GLOBALS, IMAGE, MUTATION_OBSERVER,\n DOCTYPE, END, NEXT, MIME, EVENT_TARGET, UPGRADE\n} from '../shared/symbols.js';\n\nimport {Facades, illegalConstructor} from '../shared/facades.js';\nimport {HTMLClasses} from '../shared/html-classes.js';\nimport {Mime} from '../shared/mime.js';\nimport {knownSiblings} from '../shared/utils.js';\nimport {assign, create, defineProperties, setPrototypeOf} from '../shared/object.js';\n\nimport {NonElementParentNode} from '../mixin/non-element-parent-node.js';\n\nimport {SVGElement} from '../svg/element.js';\n\nimport {Attr} from './attr.js';\nimport {CDATASection} from './cdata-section.js'\nimport {Comment} from './comment.js';\nimport {CustomElementRegistry} from './custom-element-registry.js';\nimport {CustomEvent} from './custom-event.js';\nimport {DocumentFragment} from './document-fragment.js';\nimport {DocumentType} from './document-type.js';\nimport {Element} from './element.js';\nimport {Event} from './event.js';\nimport {EventTarget} from './event-target.js';\nimport {InputEvent} from './input-event.js';\nimport {ImageClass} from './image.js';\nimport {MutationObserverClass} from './mutation-observer.js';\nimport {NamedNodeMap} from './named-node-map.js';\nimport {NodeList} from './node-list.js';\nimport {Range} from './range.js';\nimport {Text} from './text.js';\nimport {TreeWalker} from './tree-walker.js';\n\nconst query = (method, ownerDocument, selectors) => {\n let {[NEXT]: next, [END]: end} = ownerDocument;\n return method.call({ownerDocument, [NEXT]: next, [END]: end}, selectors);\n};\n\nconst globalExports = assign(\n {},\n Facades,\n HTMLClasses,\n {\n CustomEvent,\n Event,\n EventTarget,\n InputEvent,\n NamedNodeMap,\n NodeList\n }\n);\n\nconst window = new WeakMap;\n\n/**\n * @implements globalThis.Document\n */\nexport class Document extends NonElementParentNode {\n constructor(type) {\n super(null, '#document', DOCUMENT_NODE);\n this[CUSTOM_ELEMENTS] = {active: false, registry: null};\n this[MUTATION_OBSERVER] = {active: false, class: null};\n this[MIME] = Mime[type];\n /** @type {DocumentType} */\n this[DOCTYPE] = null;\n this[DOM_PARSER] = null;\n this[GLOBALS] = null;\n this[IMAGE] = null;\n this[UPGRADE] = null;\n }\n\n /**\n * @type {globalThis.Document['defaultView']}\n */\n get defaultView() {\n if (!window.has(this))\n window.set(this, new Proxy(globalThis, {\n set: (target, name, value) => {\n switch (name) {\n case 'addEventListener':\n case 'removeEventListener':\n case 'dispatchEvent':\n this[EVENT_TARGET][name] = value;\n break;\n default:\n target[name] = value;\n break;\n }\n return true;\n },\n get: (globalThis, name) => {\n switch (name) {\n case 'addEventListener':\n case 'removeEventListener':\n case 'dispatchEvent':\n if (!this[EVENT_TARGET]) {\n const et = this[EVENT_TARGET] = new EventTarget;\n et.dispatchEvent = et.dispatchEvent.bind(et);\n et.addEventListener = et.addEventListener.bind(et);\n et.removeEventListener = et.removeEventListener.bind(et);\n }\n return this[EVENT_TARGET][name];\n case 'document':\n return this;\n /* c8 ignore start */\n case 'navigator':\n return {\n userAgent: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36'\n };\n /* c8 ignore stop */\n case 'window':\n return window.get(this);\n case 'customElements':\n if (!this[CUSTOM_ELEMENTS].registry)\n this[CUSTOM_ELEMENTS] = new CustomElementRegistry(this);\n return this[CUSTOM_ELEMENTS];\n case 'performance':\n return performance;\n case 'DOMParser':\n return this[DOM_PARSER];\n case 'Image':\n if (!this[IMAGE])\n this[IMAGE] = ImageClass(this);\n return this[IMAGE];\n case 'MutationObserver':\n if (!this[MUTATION_OBSERVER].class)\n this[MUTATION_OBSERVER] = new MutationObserverClass(this);\n return this[MUTATION_OBSERVER].class;\n }\n return (this[GLOBALS] && this[GLOBALS][name]) ||\n globalExports[name] ||\n globalThis[name];\n }\n }));\n return window.get(this);\n }\n\n get doctype() {\n const docType = this[DOCTYPE];\n if (docType)\n return docType;\n const {firstChild} = this;\n if (firstChild && firstChild.nodeType === DOCUMENT_TYPE_NODE)\n return (this[DOCTYPE] = firstChild);\n return null;\n }\n\n set doctype(value) {\n if (/^([a-z:]+)(\\s+system|\\s+public(\\s+\"([^\"]+)\")?)?(\\s+\"([^\"]+)\")?/i.test(value)) {\n const {$1: name, $4: publicId, $6: systemId} = RegExp;\n this[DOCTYPE] = new DocumentType(this, name, publicId, systemId);\n knownSiblings(this, this[DOCTYPE], this[NEXT]);\n }\n }\n\n get documentElement() {\n return this.firstElementChild;\n }\n\n get isConnected() { return true; }\n\n /**\n * @protected\n */\n _getParent() {\n return this[EVENT_TARGET];\n }\n\n createAttribute(name) { return new Attr(this, name); }\n createCDATASection(data) { return new CDATASection(this, data); }\n createComment(textContent) { return new Comment(this, textContent); }\n createDocumentFragment() { return new DocumentFragment(this); }\n createDocumentType(name, publicId, systemId) { return new DocumentType(this, name, publicId, systemId); }\n createElement(localName) { return new Element(this, localName); }\n createRange() {\n const range = new Range;\n range.commonAncestorContainer = this;\n return range;\n }\n createTextNode(textContent) { return new Text(this, textContent); }\n createTreeWalker(root, whatToShow = -1) { return new TreeWalker(root, whatToShow); }\n createNodeIterator(root, whatToShow = -1) { return this.createTreeWalker(root, whatToShow); }\n\n createEvent(name) {\n const event = create(name === 'Event' ? new Event('') : new CustomEvent(''));\n event.initEvent = event.initCustomEvent = (\n type,\n canBubble = false,\n cancelable = false,\n detail\n ) => {\n event.bubbles = !!canBubble;\n\n defineProperties(event, {\n type: {value: type},\n canBubble: {value: canBubble},\n cancelable: {value: cancelable},\n detail: {value: detail}\n });\n };\n return event;\n }\n\n cloneNode(deep = false) {\n const {\n constructor,\n [CUSTOM_ELEMENTS]: customElements,\n [DOCTYPE]: doctype\n } = this;\n const document = new constructor();\n document[CUSTOM_ELEMENTS] = customElements;\n if (deep) {\n const end = document[END];\n const {childNodes} = this;\n for (let {length} = childNodes, i = 0; i < length; i++)\n document.insertBefore(childNodes[i].cloneNode(true), end);\n if (doctype)\n document[DOCTYPE] = childNodes[0];\n }\n return document;\n }\n\n importNode(externalNode) {\n // important: keep the signature length as *one*\n // or it would behave like old IE or Edge with polyfills\n const deep = 1 < arguments.length && !!arguments[1];\n const node = externalNode.cloneNode(deep);\n const {[CUSTOM_ELEMENTS]: customElements} = this;\n const {active} = customElements;\n const upgrade = element => {\n const {ownerDocument, nodeType} = element;\n element.ownerDocument = this;\n if (active && ownerDocument !== this && nodeType === ELEMENT_NODE)\n customElements.upgrade(element);\n };\n upgrade(node);\n if (deep) {\n switch (node.nodeType) {\n case ELEMENT_NODE:\n case DOCUMENT_FRAGMENT_NODE: {\n let {[NEXT]: next, [END]: end} = node;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE)\n upgrade(next);\n next = next[NEXT];\n }\n break;\n }\n }\n }\n return node;\n }\n\n toString() { return this.childNodes.join(''); }\n\n querySelector(selectors) {\n return query(super.querySelector, this, selectors);\n }\n\n querySelectorAll(selectors) {\n return query(super.querySelectorAll, this, selectors);\n }\n\n /* c8 ignore start */\n getElementsByTagNameNS(_, name) {\n return this.getElementsByTagName(name);\n }\n createAttributeNS(_, name) {\n return this.createAttribute(name);\n }\n createElementNS(nsp, localName, options) {\n return nsp === SVG_NAMESPACE ?\n new SVGElement(this, localName, null) :\n this.createElement(localName, options);\n }\n /* c8 ignore stop */\n}\n\nsetPrototypeOf(\n globalExports.Document = function Document() {\n illegalConstructor();\n },\n Document\n).prototype = Document.prototype;\n","import {DOMParser} from './dom/parser.js';\nimport {Document as _Document} from './interface/document.js';\n\nimport {illegalConstructor} from './shared/facades.js';\nimport {setPrototypeOf} from './shared/object.js';\nexport {parseJSON, toJSON} from './shared/parse-json.js';\n\nexport * from './shared/facades.js';\nexport * from './shared/html-classes.js';\n\nexport {DOMParser};\n\nexport {CustomEvent} from './interface/custom-event.js';\nexport {Event} from './interface/event.js';\nexport {EventTarget} from './interface/event-target.js';\nexport {InputEvent} from './interface/input-event.js';\nexport {NodeList} from './interface/node-list.js';\nexport {NodeFilter} from './interface/node-filter.js';\n\nexport const parseHTML = (html, globals = null) => (new DOMParser).parseFromString(\n html, 'text/html', globals\n).defaultView;\n\nexport function Document() {\n illegalConstructor();\n}\n\nsetPrototypeOf(Document, _Document).prototype = _Document.prototype;\n","import { parseHTML } from \"linkedom\";\n\n/**\n * @param { String } string\n * @return HTMLDocument\n */\nexport function createDocumentFromString(string) {\n const parser = parseHTML(string);\n return parser.document;\n}\n\n/**\n * creates an array of parent elements sorted from closest parent of node to furthest parent of node.\n * inclusive of the element matching `condition`\n *\n * @param { HTMLElement } node\n * @param { Function } condition\n * @returns { HTMLElement[] } array of parent elements\n */\n\nexport function parentsThrough(node, condition) {\n const breakOnCondition = condition && typeof condition == \"function\";\n\n let parent = node.parentNode;\n // Escape hatch for development mode\n\n const parents = [];\n while (parent && parent.tagName !== \"BODY\") {\n parents.push(parent);\n\n if (breakOnCondition && condition(parent)) {\n return parents;\n }\n if (parent.parentNode?.id === \"svelte\") {\n parent = parent.parentNode.parentNode;\n }\n parent = parent.parentNode;\n }\n return parents;\n}\n\n/**\n * receives a string and strips its non alphanumeric characters\n *\n * @param { String } text\n * @param { String } id\n * @return a lowercase alphanumeric string\n */\nexport function textToId(text) {\n const spaces = new RegExp(/\\s/g);\n const anythingButSpacesAndLetters = /[^\\sA-Za-z0-9]/g;\n const punctuationToStrip = new RegExp(anythingButSpacesAndLetters);\n const id = text?.toLowerCase().replace(punctuationToStrip, \"\").replace(spaces, \"-\");\n return id;\n}\n\nexport function hasData(onNode, key) {\n if (!onNode) {\n return false;\n }\n if (!onNode.dataset) {\n return false;\n }\n return onNode.dataset[key] !== undefined;\n}\n\nexport function copyElement({ element, elementType, textContent, id, rootNode = document }) {\n if (!elementType) {\n console.error(\"no elementType provided to copyElement\");\n return;\n }\n const newElement = rootNode.createElement(elementType);\n [...element.attributes].forEach(({ name, value }) => {\n newElement.setAttribute(name, value);\n });\n newElement.textContent = textContent;\n newElement.id = id;\n\n return newElement;\n}\n\nexport function clickOutside(element, callbackFunction) {\n function onClick(event) {\n if (!element.contains(event.target)) {\n callbackFunction(event);\n }\n }\n\n document.body.addEventListener(\"click\", onClick);\n\n return {\n update(newCallbackFunction) {\n callbackFunction = newCallbackFunction;\n },\n destroy() {\n document.body.removeEventListener(\"click\", onClick);\n }\n };\n}\n\nexport function elementIsFullyInViewport(element) {\n const elementRect = element.getBoundingClientRect();\n const headerOffset =\n document.documentElement.style.getPropertyValue(\"--scroll-header-padding\") ?? 0;\n return (\n elementRect.top >= parseInt(headerOffset) &&\n elementRect.left >= 0 &&\n elementRect.bottom <= window.innerHeight &&\n elementRect.right <= window.innerWidth\n );\n}\n"],"names":["get_spread_update","levels","updates","update","to_null_out","accounted_for","i","o","n","key","get_spread_object","spread_props","getStores","stores","browser_stores","page","fn","navigating","IDX","HEX","BUFFER","v4","num","out","ctx","insert_hydration","target","svg","anchor","append_hydration","path","g","defs","clipPath","rect","path0","path1","path2","validatePropValue","componentName","propName","propValue","validPropValues","validatePropObjectWithSchema","schema","ICON_NAMES","alert","arrowLeft","arrowRight","arrowUpRight","caretDown","caretUp","check","close","facebook","filter","instagram","linkedIn","menu","pause","play","playOffset","search","threads","youtube","x","id","$$props","name","inheritSize","iconClass","$$invalidate","component","Constants","dynamicHeading","getContext","setContext","svelte_element","svelte_element_data","svelte_element_levels","create_dynamic_element","calculateResultingHeadingLevel","suggestedHeadingLevel","currentDynamicHeadingLevel","levelSum","resultingHeadingLevel","className","ref","currentElement","$$value","cubicInOut","t","cubicOut","f","fade","node","delay","duration","easing","linear","fly","y","opacity","style","target_opacity","transform","od","xValue","xUnit","split_css_unit","yValue","yUnit","u","slide","axis","primary_property","primary_property_value","secondary_properties","capitalized_secondary_properties","e","padding_start_value","padding_end_value","margin_start_value","margin_end_value","border_width_start_value","border_width_end_value","IMAGE_ASPECT_RATIOS","ASPECT_RATIO_CLASSES","validateAspectRatioClasses","aspectRatioClasses","listOfClasses","validClasses","aspectRatioClass","validClass","trapFocus","options","abortController","currentOptions","firstElement","secondElement","lastElement","focusableElements","onFirstElementKeydown","onSecondElementKeydown","onLastElementKeydown","manageFocus","signal","focusableListList","focusableList","triggerElement","cleanUp","observationChange","observer","newOptions","Breakpoints","breakpointValues","mediaQueries","getBreakpoint","width","breakpointWeights","maxFontSizeMapForFullWidthText","isSmallOrMediumBreakpoint","screenWidth","currentBreakpoint","STANDARD_THEMES","COLORS","PATTERN_THEMES","DEM_FORUM_THEMES","THEMES","THEME_NAMES","getTheme","themeName","svelte_element_class_value","attr","img","img_class_value","img_aria_hidden_value","dirty","VALID_CONTAINER_ELEMENTS","src","srcset","sizes","alt","theme","containerClass","containerElement","elementClass","eagerLoad","frameClasses","_a","create_dynamic_element_1","baseClasses","span2","span1","span0","svelte_element_disabled_value","current","icon_changes","span","create_if_block_2","create_if_block_1","svelte_element_target_value","svelte_element_rel_value","VALID_VARIANTS","variant","href","label","disabled","ariaHidden","isExternal","isLinkHovered","hideInternalLinkArrow","showLinkArrowOnHover","linkClass","themeClasses","variantClasses","hoverClasses","disabledClasses","iconClasses","arrowClasses","getElementType","element","componentColorTheme","animationTriggerClass","shouldShowArrow","animatedUnderlineClasses","innerSpanClasses","accessibilityLabel","currentTheme","dotColorValue","backgroundColorValue","create_if_block","if_block2","svelte_element_type_value","svelte_element_href_value","svelte_element_role_value","VALID_THEMES","VALID_ICON_ALIGNMENTS","VALID_TYPES","buttonClass","type","url","ariaLabel","submittingText","iconName","isLoading","iconAlignment","buttonThemeClasses","hoverThemeClasses","disabledThemeClasses","hasValidLabel","spacingClasses","$$slots","iconSpacingClasses","iconAlignmentClasses","mobileClasses","mediumClasses","svelte_element_style_value","gridElement","gridClass","subGridColumns","gridSpanMobile","gridSpanTablet","gridSpanDesktop","div","div_class_value","gridInnerClasses","outsideSpacingClasses","span_class_value","themeClass","isServer","detectOS","ua","ipad","iphone","android","ios","getEventListenerOptions","isSupportOptions","listenerOptions","noop","testEvent","capture","getPreventEventDefault","event","toArray","initialLockState","getLockState","lockState","handleScroll","targetElement","initialClientPos","scrollTop","scrollLeft","scrollWidth","scrollHeight","clientWidth","clientHeight","clientX","clientY","isVertical","isOnTop","isOnLeft","isOnRight","isOnBottom","setOverflowHiddenPc","$html","htmlStyle","scrollBarWidth","previousPaddingRight","setOverflowHiddenMobile","$body","bodyStyle","supportsNativeSmoothScroll","lock","detectRes","_event$targetTouches$","addTouchMoveListener","unlock","unlockByCallback","index","removeTouchMoveListener","clearBodyLocks","ul","t_value","set_data","a","a_label_value","a_href_value","li","li_class_value","defaultBulletClasses","tags","componentClass","bulletClass","linkThemeName","linkTheme","root","factory","module","global","defaultSettings","els","settings","elType","processItem","el","isElement","innerSpan","originalHeight","originalHTML","originalWidth","low","mid","high","innerWidth","innerHeight","hasClass","multiLine","size","addStyleSheet","height","cls","css","_getDefaults","_defaults","changeDefaults","newDefaults","escapeTest","escapeReplace","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","getEscapeReplacement","ch","escape$1","html","encode","caret","edit","regex","opt","source","obj","val","valSource","cleanUrl","noopTest","splitCells","tableRow","count","row","match","offset","str","escaped","curr","cells","rtrim","c","invert","l","suffLen","currChar","findClosingBracket","b","level","outputLink","cap","link","raw","lexer","title","text","token","indentCodeCompensation","matchIndentToCode","indentToCode","matchIndentInNode","indentInNode","_Tokenizer$1","__publicField","trimmed","lines","tokens","inBlockquote","currentLines","currentRaw","currentText","top","lastToken","oldToken","newText","newToken","bull","isordered","list","itemRegex","endsWithBlankLine","endEarly","itemContents","line","nextLine","blankLine","indent","nextBulletRegex","hrRegex","fencesBeginRegex","headingBeginRegex","htmlBeginRegex","rawLine","nextLineWithoutTabs","istask","ischecked","spacers","hasMultipleLineBreaks","tag","headers","aligns","rows","item","align","cell","trimmedUrl","rtrimSlash","lastParenIndex","linkLen","links","linkString","maskedSrc","prevChar","lLength","rDelim","rLength","delimTotal","midDelimTotal","endReg","lastCharLength","hasNonSpaceChars","hasSpaceCharsOnBothEnds","prevCapZero","newline","blockCode","fences","hr","heading","bullet","lheading","_paragraph","blockText","_blockLabel","def","_tag","_comment","paragraph","blockquote","blockNormal","gfmTable","blockGfm","blockPedantic","escape","inlineCode","br","inlineText","_punctuation","punctuation","blockSkip","emStrongLDelim","emStrongRDelimAst","emStrongRDelimUnd","anyPunctuation","autolink","_inlineComment","_inlineLabel","reflink","nolink","reflinkSearch","inlineNormal","inlinePedantic","inlineGfm","inlineBreaks","block","inline","_Lexer$1","_Lexer","_Tokenizer","rules","next","lastParagraphClipped","cutSrc","extTokenizer","startIndex","tempSrc","tempStart","getStartIndex","errMsg","keepPrevChar","_Renderer$1","lang","langString","code","depth","ordered","start","body","j","startAttr","itemBody","checkbox","checked","header","k","content","cleanHref","_TextRenderer$1","_Parser$1","_Parser","_Renderer","_TextRenderer","anyToken","genericToken","ret","textToken","renderer","_Hooks$1","markdown","Marked$1","args","_Hooks","callback","values","tableToken","listToken","_b","childTokens","extensions","pack","opts","ext","prevRenderer","extLevel","prop","rendererProp","rendererFunc","tokenizer","tokenizerProp","tokenizerFunc","prevTokenizer","hooks","hooksProp","hooksFunc","prevHook","arg","walkTokens","packWalktokens","blockType","origOpt","throwError","parser","silent","async","msg","markedInstance","Marked","marked","parseInline","this","entries","setPrototypeOf","isFrozen","getPrototypeOf","getOwnPropertyDescriptor","freeze","seal","create","apply","construct","fun","thisValue","Func","arrayForEach","unapply","arrayPop","arrayPush","stringToLowerCase","stringToString","stringMatch","stringReplace","stringIndexOf","stringTrim","objectHasOwnProperty","regExpTest","typeErrorCreate","unconstruct","func","thisArg","_len","_key","_len2","_key2","addToSet","set","array","transformCaseFunc","lcElement","cleanArray","clone","object","newObject","property","value","lookupGetter","desc","fallbackValue","html$1","svg$1","svgFilters","svgDisallowed","mathMl$1","mathMlDisallowed","mathMl","xml","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","CUSTOM_ELEMENT","EXPRESSIONS","NODE_TYPE","getGlobal","_createTrustedTypesPolicy","trustedTypes","purifyHostElement","suffix","ATTR_NAME","policyName","scriptUrl","createDOMPurify","window","DOMPurify","document","originalDocument","currentScript","DocumentFragment","HTMLTemplateElement","Node","Element","NodeFilter","NamedNodeMap","HTMLFormElement","DOMParser","ElementPrototype","cloneNode","remove","getNextSibling","getChildNodes","getParentNode","template","trustedTypesPolicy","emptyHTML","implementation","createNodeIterator","createDocumentFragment","getElementsByTagName","importNode","IS_ALLOWED_URI$1","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","CUSTOM_ELEMENT_HANDLING","FORBID_TAGS","FORBID_ATTR","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","ALLOW_SELF_CLOSE_IN_ATTR","SAFE_FOR_TEMPLATES","SAFE_FOR_XML","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","SANITIZE_NAMED_PROPS","SANITIZE_NAMED_PROPS_PREFIX","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","ALLOWED_NAMESPACES","DEFAULT_ALLOWED_NAMESPACES","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","DEFAULT_PARSER_MEDIA_TYPE","CONFIG","formElement","isRegexOrFunction","testValue","_parseConfig","cfg","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","ALL_SVG_TAGS","ALL_MATHML_TAGS","_checkValidNamespace","parent","tagName","parentTagName","_forceRemove","_removeAttribute","_initDocument","doc","leadingWhitespace","matches","dirtyPayload","_createNodeIterator","_isClobbered","elm","_isNode","_executeHook","entryPoint","currentNode","data","hook","_sanitizeElements","_isBasicCustomElement","parentNode","childNodes","childCount","childClone","expr","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","attributes","hookEvent","namespaceURI","attrValue","_sanitizeShadowDOM","fragment","shadowNode","shadowIterator","importedNode","returnNode","nodeIterator","serializedHTML","hookFunction","purify","browser","require$$0","getUrlObject","INTERNAL_ORIGINS","isExternalUrl","currentOrigin","urlObj","targetOrigin","correctedUrl","isMissingTrailingSlash","getFullUrl","isNotStaticFile","isRootRelative","hasNoTrailingSlash","IMAGE_VARIANT_MAP","STORY_CARD_ASPECT_RATIO_CLASSES","SRCSET_WIDTHS","unescapeTest","unescape","_","leading","tabs","infostring","quote","startatt","task","flags","headingToken","codeToken","blockquoteToken","loose","htmlToken","paragraphToken","escapeToken","tagToken","linkToken","imageToken","strongToken","emToken","codespanToken","delToken","__privateAdd","_parseMarkdown","_onError","__privateMethod","parseMarkdown_fn","rendererKey","tokenizerKey","hooksKey","onError_fn","parse","CONTENTFUL_LARGE_ASSET_URL_PREFIX","CONTENTFUL_IMAGE_CDN_PREFIX","swapAssetUrl","CONTENTFUL_API_DEFAULTS","contentfulImageUrlFor","paramOverrides","fm","apiParams","params","buildSrc","asset","resizeParams","ignoreContentfulImgResize","srcSetFromWidths","widths","SCREENS","sizeForMinWidth","minWidth","sizesForBreakpoints","breakpoints","sizeAttr","sizeForWidth","altTextToDisplay","altText","getImageAspectRatio","aspectRatio","imageDetails","_c","mappedVariant","calculatedVariant","getClosestAspectRatioClass","validAspectRatios","closestAspectRatio","minDifference","ratio","ratioValueString","calcRatios","ratioWidth","ratioHeight","ratioValue","difference","heroThemeStore","writable","filterItemsStore","getTotalNumberOfSelectedFilters","activeFilters","accumulator","currentFilterGroup","option","filterOutInactiveFilterGroups","filterGroups","filterGroup","flattenAppliedFilterGroups","selectedFilterGroups","selectedOptions","CHANGED","CLASS_LIST","CUSTOM_ELEMENTS","CONTENT","DATASET","DOCTYPE","DOM_PARSER","END","EVENT_TARGET","GLOBALS","IMAGE","MIME","MUTATION_OBSERVER","NEXT","OWNER_ELEMENT","PREV","PRIVATE","SHEET","START","STYLE","UPGRADE","VALUE","htmlDecodeTree","xmlDecodeTree","decodeMap","fromCodePoint","codePoint","output","replaceCodePoint","CharCodes","TO_LOWER_BIT","BinTrieFlags","isNumber","isHexadecimalCharacter","isAsciiAlphaNumeric","isEntityInAttributeInvalidEnd","EntityDecoderState","DecodingMode","EntityDecoder","decodeTree","emitCodePoint","errors","decodeMode","end","base","digitCount","startIdx","char","lastCp","expectedLength","valueLength","determineBranch","result","consumed","getDecoder","decoder","lastIndex","len","nodeIdx","branchCount","jumpOffset","lo","hi","midVal","State","isWhitespace","isEndOfTagSection","isASCIIAlpha","QuoteType","Sequences","Tokenizer","xmlMode","decodeEntities","cbs","cp","chunk","isEnd","endOfText","actualIndex","sequence","lower","length","endIndex","formTags","pTag","tableSectionTags","ddtTags","rtpTags","openImpliesClose","voidElements","foreignContextElements","htmlIntegrationElements","reNameEnd","Parser$1","_d","_e","_f","impliesClose","isImplied","_g","_h","pos","isOpenImplied","_j","_k","slice","ElementType","isTag","elem","Root","Text","Directive","Comment","Script","Style","Tag","CDATA","Doctype","Node$2","prev","recursive","DataNode","ProcessingInstruction","NodeWithChildren","children","attribs","isTagRaw","isCDATA","isText","isComment","isDirective","isDocument","hasChildren","cloneChildren","child","Document","instruction","childs","defaultOpts","DomHandler","elementCB","error","lastNode","previousSibling","xmlReplacer","xmlCodeMap","getCodePoint","encodeXML","lastIdx","getEscaper","map","escapeAttribute","escapeText","elementNames","attributeNames","unencodedElements","replaceQuotes","formatAttributes","singleTag","render","nodes","renderNode","ElementType.Root","ElementType.Doctype","ElementType.Directive","renderDirective","ElementType.Comment","renderComment","ElementType.CDATA","renderCdata","ElementType.Script","ElementType.Style","ElementType.Tag","renderTag","ElementType.Text","renderText","foreignModeIntegrationPoints","foreignElements","getOuterHTML","renderHTML","getInnerHTML","getText","textContent","innerText","getChildren","getParent","getSiblings","siblings","getAttributeValue","hasAttrib","getName","nextElementSibling","prevElementSibling","removeElement","childsIndex","replaceElement","replacement","appendChild","sibling","append","currNext","prependChild","prepend","test","recurse","limit","find","nodeStack","indexStack","findOneChild","findOne","existsOne","findAll","Checks","getAttribCheck","attrib","combineFuncs","compileTest","funcs","testElement","getElements","getElementById","getElementsByTagType","removeSubsets","idx","ancestor","DocumentPosition","compareDocumentPosition","nodeA","nodeB","aParents","bParents","maxIdx","sharedParent","aSibling","bSibling","uniqueSort","arr","relative","getFeed","feedRoot","getOneElement","isValidFeed","getAtomFeed","getRssFeed","feed","entry","getMediaElements","addConditionally","description","fetch","pubDate","updated","MEDIA_KEYS_STRING","MEDIA_KEYS_INT","where","media","parseDocument","handler","Parser","parseDOM","createDocumentStream","elementCallback","createDomStream","parseFeedDefaultOptions","parseFeed","NODE_END","ELEMENT_NODE","ATTRIBUTE_NODE","TEXT_NODE","CDATA_SECTION_NODE","COMMENT_NODE","DOCUMENT_NODE","DOCUMENT_TYPE_NODE","DOCUMENT_FRAGMENT_NODE","BLOCK_ELEMENTS","SHOW_ALL","SHOW_ELEMENT","SHOW_TEXT","SHOW_CDATA_SECTION","SHOW_COMMENT","DOCUMENT_POSITION_DISCONNECTED","DOCUMENT_POSITION_PRECEDING","DOCUMENT_POSITION_FOLLOWING","DOCUMENT_POSITION_CONTAINS","DOCUMENT_POSITION_CONTAINED_BY","DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC","assign","defineProperties","getOwnPropertyDescriptors","keys","$String","getEnd","ignoreCase","ownerDocument","knownAdjacent","knownBoundaries","knownSegment","knownSiblings","localCase","localName","setAdjacent","shadowRoots","reactive","Classes","customElements","attributeChangedCallback","attributeName","oldValue","newValue","createTrigger","method","isConnected","info","triggerConnected","connectedCallback","triggerDisconnected","disconnectedCallback","CustomElementRegistry","Class","registry","waiting","extend","resolve","ce","HTMLParser2","self","active","attribute","parseFromString","isHTML","markupLanguage","ownerSVGElement","parsingCData","htmlClasses","registerHTMLClass","names","__viteBrowserExternal","performance","performance_1","perf_hooks","loopSegment","json","attrAsJSON","characterDataAsJSON","elementAsJSON","documentTypeAsJSON","last","nonElementAsJSON","publicId","systemId","createRecord","addedNodes","removedNodes","queueAttribute","attributeFilter","attributeOldValue","records","scheduled","observers","childList","subtree","moCallback","characterData","MutationObserverClass","emptyAttributes","setAttribute","moAttributes","ceAttributes","removeAttribute","booleanAttribute","numericAttribute","stringAttribute","wm","dispatch","listener","invokeListeners","currentTarget","listeners","DOMEventTarget","NodeList","getParentNodeCount","EventTarget","nodeType","location","newNode","referenceNode","newChild","oldChild","other","aNodes","bNodes","replace","ca","esca","pe","m","es","QUOTE","Attr","String","ownerElement","escapedValue","parentElement","nextSibling","previousElementSibling","asFragment","before","after","replaceWith","CDATASection","CharacterData","boolbase","SelectorType","AttributeAction","reName","reEscape","actionTypes","unpackPseudos","isTraversal","selector","stripQuotesFromPseudos","funescape","escapedWhitespace","unescapeCSS","isQuote","subselects","parseSelector","selectorIndex","stripWhitespace","readValueWithParenthesis","counter","isEscaped","slashCount","ensureNotTraversal","addTraversal","addSpecialAttribute","action","finalizeSubselector","loop","firstChar","namespace","possibleAction","sectionEnd","valueStart","forceIgnore","attributeSelector","quot","procedure","sortByProcedure","procs","getProcedure","procNew","proc","d","reChars","escapeRegex","caseInsensitiveAttributes","shouldIgnoreCase","attributeRules","adapter","whitespace","ZERO","NINE","formula","sign","readSign","number","readNumber","skipWhitespace","compile","parsed","absA","bMod","nthCheck","getChildFunc","filters","itext","rule","equals","getNCheck","currentSibling","_rule","context","dynamicStatePseudo","pseudos","firstChild","elemName","verifyPseudoArgs","subselect","argIndex","aliases","PLACEHOLDER_ELEMENT","ensureIsTag","getNextSiblings","elemIndex","copyOptions","is","compileToken","_context","s","compiled","hasElement","shouldTestNextSiblings","nextElements","compilePseudoSelector","userPseudo","stringPseudo","alias","pseudo","getElementParent","compileGeneralSelector","isFalseCache","previous","compileUnsafe","includesScopePseudo","DESCENDANT_TOKEN","FLEXIBLE_DESCENDANT_TOKEN","SCOPE_TOKEN","absolutize","hasContext","sortRules","isArrayContext","finalContext","query","first","second","compileRules","reduceRules","defaultEquals","defaultOptions","DomUtils","convertOptionFormats","wrapCompile","compileRaw","isArray","elements","prepareMatch","selectors","CSSselect.compile","CSSselect.is","isNode","insert","ParentNode","firstElementChild","lastChild","$next","$prev","replaced","NonElementParentNode","deep","constructor","nonEPN","DocumentType","hasPublic","getInnerHtml","setInnerHtml","setOwnerDocument","uhyphen","camel","refs","$1","dataset","DOMStringMap","add","addTokens","DOMTokenList","force","getKeys","updateKeys","rest","prototype","done","cssText","push","CSSStyleDeclaration","BUBBLING_PHASE","AT_TARGET","CAPTURING_PHASE","NONE","getCurrentTarget","ev","GlobalEvent","eventInitDict","host","attributesHandler","isVoid","classList","Event","previously","mode","shadowRoot","init","ShadowRoot","position","addNext","isOpened","classNames","illegalConstructor","_Attr","_CDATASection","_CharacterData","_Comment","_DocumentFragment","_DocumentType","_Element","_Node","_ShadowRoot","_Text","SVGElement","_SVGElement","Facades","Level0","level0","handlers","ownerLess","clickEvent","accessKey","HTMLElement","HTMLHtmlElement","toString","TextElement","HTMLScriptElement","HTMLFrameElement","HTMLIFrameElement","HTMLObjectElement","HTMLHeadElement","HTMLBodyElement","CSSOM","StyleSheet","CSSRule","require$$1","ruleText","state","buffer","SIGNIFICANT_WHITESPACE","styleRule","priority","character","CSSStyleRule","cssRule","CSSStyleSheet","require$$2","medium","MediaList","mediaText","CSSImportRule","CSSGroupingRule","CSSConditionRule","require$$3","cssTexts","CSSMediaRule","CSSSupportsRule","CSSFontFaceRule","CSSHostRule","CSSKeyframeRule","CSSKeyframesRule","CSSValue","expression","paren","nextChar","endIdx","commentEndChar","sep","legalRegx","isLegal","reg","NOT_FOUND","matched","nextNewLineIdx","CSSValueExpression","matcher","MatcherList","CSSDocumentRule","valueParenthesisDepth","styleSheet","currentScope","parentRule","ancestorRules","hasAncestors","prevScope","mediaRule","supportsRule","importRule","fontFaceRule","keyframesRule","documentRule","hostRule","atKeyframesRegExp","parseError","message","lineCount","charCount","matchKeyframes","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","prevValue","properties","dummyRule","require$$14","require$$19","HTMLStyleElement","sheet","HTMLTimeElement","HTMLFieldSetElement","HTMLEmbedElement","HTMLHRElement","HTMLProgressElement","HTMLParagraphElement","HTMLTableElement","HTMLFrameSetElement","HTMLLIElement","HTMLBaseElement","HTMLDataListElement","HTMLInputElement","HTMLParamElement","HTMLMediaElement","HTMLAudioElement","HTMLHeadingElement","HTMLDirectoryElement","HTMLQuoteElement","Canvas","canvasShim","canvasModule","createCanvas","HTMLCanvasElement","HTMLLegendElement","HTMLOptionElement","HTMLSpanElement","HTMLMeterElement","HTMLVideoElement","HTMLTableCellElement","HTMLTitleElement","HTMLOutputElement","HTMLTableRowElement","HTMLDataElement","HTMLMenuElement","HTMLSelectElement","HTMLBRElement","HTMLButtonElement","HTMLMapElement","HTMLOptGroupElement","HTMLDListElement","HTMLTextAreaElement","HTMLFontElement","HTMLDivElement","HTMLLinkElement","HTMLSlotElement","isNamedSlot","hostChildNodes","slottables","slottable","HTMLImageElement","HTMLPreElement","HTMLUListElement","HTMLMetaElement","HTMLPictureElement","HTMLAreaElement","HTMLOListElement","HTMLTableCaptionElement","HTMLAnchorElement","HTMLLabelElement","HTMLUnknownElement","HTMLModElement","HTMLDetailsElement","HTMLSourceElement","HTMLTrackElement","HTMLMarqueeElement","HTMLClasses","Mime","CustomEvent","InputEvent","inputEventInit","ImageClass","deleteContents","Range","isSVG","range","isOK","mask","TreeWalker","whatToShow","documentElement","$","globalExports","globalThis","et","docType","canBubble","cancelable","detail","doctype","externalNode","upgrade","nsp","_Document","textToId","spaces","anythingButSpacesAndLetters","punctuationToStrip"],"mappings":"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b,CAAC,GAAI,OAAO,EACZ,CAAC,IAAK,QAAQ,CAClB,CAAC,CAAC,EAOWG,GAAaH,GAAW,eAAgB,IAAI,IAAI,CACzD,CAAC,GAAI,OAAO,EACZ,CAAC,GAAI,MAAM,EACX,CAAC,GAAI,MAAM,EACX,CAAC,IAAK,QAAQ,CAClB,CAAC,CAAC,EClHWI,GAAe,IAAI,IAAI,CAChC,WACA,cACA,eACA,eACA,gBACA,mBACA,WACA,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,eACA,gBACA,WACA,iBACA,iBACA,UACJ,EAAE,IAAK3qB,GAAQ,CAACA,EAAI,cAAeA,CAAG,CAAC,CAAC,EAC3B4qB,GAAiB,IAAI,IAAI,CAClC,gBACA,gBACA,gBACA,gBACA,cACA,WACA,gBACA,kBACA,WACA,cACA,WACA,oBACA,gBACA,eACA,mBACA,YACA,aACA,WACA,eACA,oBACA,eACA,cACA,cACA,mBACA,YACA,aACA,aACA,sBACA,mBACA,eACA,YACA,YACA,YACA,gBACA,sBACA,iBACA,OACA,OACA,cACA,YACA,qBACA,mBACA,mBACA,mBACA,eACA,cACA,eACA,cACA,eACA,iBACA,cACA,UACA,UACA,aACA,UACA,aACA,mBACA,mBACA,YACJ,EAAE,IAAK5qB,GAAQ,CAACA,EAAI,YAAa,EAAEA,CAAG,CAAC,CAAC,ECvFlC6qB,GAAoB,IAAI,IAAI,CAC9B,QACA,SACA,MACA,SACA,UACA,WACA,YACA,UACJ,CAAC,EACD,SAASC,GAAcpa,EAAO,CAC1B,OAAOA,EAAM,QAAQ,KAAM,QAAQ,CACvC,CAIA,SAASqa,GAAiBrR,EAAYzN,EAAM,CACxC,IAAIpY,EACJ,GAAI,CAAC6lB,EACD,OACJ,MAAMja,IAAW5L,EAAKoY,EAAK,kBAAoB,MAAQpY,IAAO,OAASA,EAAKoY,EAAK,kBAAoB,GAC/F6e,GACA7e,EAAK,SAAWA,EAAK,iBAAmB,OACpCoe,GACAI,GACV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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,48,49,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231]}