{"version":3,"file":"HeroComponent.0c2c86dc.js","sources":["../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/molecules/Accordion/AccordionItem.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/molecules/Accordion/Accordion.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/utilities/helpers.js","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/utilities/performance.js","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/molecules/FormFields/Checkbox.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/molecules/FormFields/CheckboxGroup.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/molecules/FormFields/Radio.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/organisms/Filters.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/organisms/HeroArticle.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/molecules/ActiveFiltersBar.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/organisms/HeroGeneric.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/organisms/HeroHome.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/organisms/HeroPrimary.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/organisms/HeroSecondary.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/utilities/pagination.js","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/molecules/Pagination/PageSelector.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/molecules/Pagination/PageSelectorDropdown.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/molecules/Pagination/Pagination.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/organisms/Section.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/atoms/Portal.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/organisms/Drawer.svelte","../../../../../../src/lib/assets/logo.png","../../../../../../src/lib/components/SEO.svelte","../../../../../../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","../../../../../../src/lib/utilities/contentTypes/hero.js","../../../../../../src/lib/utilities/careers.js","../../../../../../src/lib/components/FilterList.svelte","../../../../../../src/lib/components/Hero.svelte","../../../../../../src/lib/contentTypes/HeroComponent.svelte"],"sourcesContent":["\n\n\n \n \n
\n \n {label}\n \n \n
\n {#if subtitle}\n

{subtitle}

\n {/if}\n \n\n \n \n
\n \n
\n \n \n \n
\n","\n\n
\n {#each items as item}\n \n {#if typeof item.body === \"string\"}\n
{item.body}
\n {:else if item.bodyProps}\n onCheckBoxSelectionGroup(e)}\n />\n {/if}\n \n {/each}\n
\n","export 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","/**\n * Creates a debounced function that delays invoking `func` until after `wait` milliseconds have elapsed\n * since the last time the debounced function was invoked.\n *\n * @param {Function} func - The function to debounce.\n * @param {number} wait - The number of milliseconds to delay.\n * @param {boolean=} immediate - Specify invoking on the leading edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n */\nexport const debounce = (func, wait, immediate) => {\n let timeout;\n return function (...args) {\n let context = this;\n clearTimeout(timeout);\n if (immediate && !timeout) {\n func.apply(context, args);\n }\n timeout = setTimeout(function () {\n timeout = null;\n if (!immediate) {\n func.apply(context, args);\n }\n }, wait);\n };\n};\n","\n\n
\n \n {#if isInvalid && errorMessage}\n
{errorMessage}
\n {/if}\n
\n","\n\n
\n {#each options as option}\n \n {/each}\n
\n","\n\n
\n {#each options as { value, label }, _ (`${name}-${label}-${value}`)}\n \n
\n \n {label}\n
\n \n {/each}\n
\n","\n\n {\n dispatch(\"checkBoxSelectionGroup\", {\n items: e.detail.items\n });\n }}\n/>\n","\n\n\n \n
\n
\n \n
\n \n {title}\n {#if subtitle}\n

\n {subtitle}\n

\n {/if}\n
\n
\n {#if tags}\n \n {/if}\n
\n {#if featuredImage}\n
\n \n
\n {/if}\n
\n\n","\n\n\n\n
\n \n \n \n {#each filterItems as filterItem}\n \n \n \n {/each}\n
\n","\n\n\n \n
\n
\n \n {title}\n {#if subtitle}\n

{subtitle}

\n {/if}\n
\n {#if secondaryText}\n

{secondaryText}

\n {:else if cta}\n
\n \n
\n {/if}\n
\n {#if featuredImage}\n
\n \n
\n {/if}\n
\n {#if filterItems}\n \n {/if}\n\n","\n\n\n \n \n {title}\n \n \n {#if hasVariableSizeText}\n \n {#each splitTitle as title, index (`${title}-${uuid()}`)}\n
\n {title}\n
\n {/each}\n \n {:else}\n {title}\n {/if}\n
\n\n {#if hasVariableSizeText && subtitle}\n \n {subtitle}\n {#if cta}\n \n {/if}\n \n {:else if cta}\n \n {/if}\n \n
\n \n\n","\n\n\n \n \n
\n {#each splitTitle as title (`${title}-${uuid()}`)}\n
\n \n {title}\n \n
\n {/each}\n
\n {#if animatedTitle}\n
\n \n {animatedTitle}\n \n
\n {/if}\n
\n {#if featuredImage}\n
\n \n \n
\n {/if}\n {#if subtitle}\n

\n {subtitle}\n

\n {/if}\n
\n \n {#if filterItems}\n \n {/if}\n\n","\n\n\n
\n \n
\n \n {title}\n {#if subtitle}\n

{subtitle}

\n {/if}\n {#if cta}\n \n {/if}\n {#if featuredImage && !featuredStory}\n \n {/if}\n
\n {#if featuredStory}\n \n
\n \n {featuredStory.title}\n

{featuredStory.subtitle}

\n \n
\n
\n {/if}\n
\n {#if filterItems}\n \n {/if}\n
\n\n","/**\n * Determines the pages to be displayed in the pagination component.\n *\n * @param {number} totalPages - The total number of totalPages.\n * @param {number} maxVisiblePages - The maximum number of pages that can be navigated directly.\n * @param {number} currentPage - The current page number.\n * @returns {Object} An object containing the start page, previous pages, visible pages, next pages, and end page.\n */\n\nexport const pagination = (totalPages = 0, maxVisiblePages = 5, currentPage = 1) => {\n /**\n *\n * @param {boolean} hasPagesOtherThanFirstAndLast - Indicates if there are pages other than the first and last page.\n * @param {boolean} shouldEllipse - Indicates if the pagination should display ellipses for hidden pages.\n * @param {boolean} shouldEllipsePrevious - Indicates if the pagination should display an ellipse before the current page.\n * @param {boolean} shouldEllipseNext - Indicates if the pagination should display an ellipse after the current page.\n */\n\n const shouldEllipse = totalPages > maxVisiblePages - 2 && totalPages !== maxVisiblePages;\n const shouldEllipsePrevious = shouldEllipse && currentPage > maxVisiblePages - 2;\n const shouldEllipseNext = shouldEllipse && totalPages - currentPage > maxVisiblePages - 2;\n const hasPagesOtherThanFirstAndLast = totalPages > 2;\n const startPage = 2; // 1 is fixed\n\n /**\n * Generates an array of page numbers from start to end.\n *\n * @param {number} start - The first page number.\n * @param {number} end - The last page number.\n * @returns {number[]} An array of page numbers.\n */\n const generatePages = (start, end) =>\n Array(end - start)\n .fill()\n .map((_, i) => i + start);\n\n let previousPages = [];\n let visiblePages = [];\n let nextPages = [];\n\n if (hasPagesOtherThanFirstAndLast) {\n if (!shouldEllipse) {\n visiblePages = generatePages(startPage, totalPages);\n } else if (!shouldEllipsePrevious) {\n // Generate all pages from 2 to maxVisiblePages\n visiblePages = generatePages(startPage, maxVisiblePages);\n\n // Generate nextPages dropdown from last item in visiblePages to totalPages\n const generatedNextPages = generatePages(visiblePages.slice(-1)[0] + 1, totalPages);\n\n // Only show nextPages dropdown if there is more than one item\n if (generatedNextPages.length > 1) {\n nextPages = generatedNextPages;\n } else {\n // Empty dropdown\n nextPages = [];\n\n const toPage = maxVisiblePages + 1; // need to add 1 because we need to include the item we removed from nextPages\n\n // Generate visiblePages\n visiblePages = generatePages(startPage, toPage);\n }\n } else if (shouldEllipseNext) {\n // Generate previousPages pages from 2 to the current page\n previousPages = generatePages(startPage, currentPage);\n\n // Only show previousPages dropdown if there is more than one item\n if (previousPages.length > 1) {\n const fromPage = currentPage;\n\n // Generate visiblePages\n const generatedVisiblePages = generatePages(\n fromPage,\n // discounting the first and the last page from maxVisiblePages, which are fixed values.\n currentPage + (maxVisiblePages - 2)\n );\n\n let toPage;\n\n // Check if the last item in generatedVisiblePages is equal to the totalPages - 2.\n if (generatedVisiblePages.slice(-1)[0] === totalPages - 2) {\n // Need to add + 1 to calculate the visiblePages, since we don't show ellipse with 1 item. So instead of removing 2 (fixed first and last), we remove only 1, so toPages gets an extra page.\n toPage = currentPage + (maxVisiblePages - 1);\n\n // Generate visiblePages\n visiblePages = generatePages(fromPage, toPage);\n } else {\n // Generate visiblePages\n visiblePages = generatedVisiblePages;\n }\n } else {\n // Empty dropdown\n previousPages = [];\n\n const fromPage = currentPage - 1;\n const toPage = currentPage + (maxVisiblePages - 3); // besides discounting the first and the last page from maxVisiblePages, we also discount the item we removed from previousPages.\n\n // Generate visiblePages\n visiblePages = generatePages(fromPage, toPage);\n }\n\n // Generate nextPages dropdown from last item in visiblePages to totalPages\n const generatedNextPages = generatePages(visiblePages.slice(-1)[0] + 1, totalPages);\n\n // Only show nextPages dropdown if there is more than one item\n if (generatedNextPages.length > 1) {\n nextPages = generatedNextPages;\n }\n } else {\n /* Only shows previousPages dropdown */\n\n // adding the first page and the last page, that are already visible to totalPages\n const fromPage = totalPages - maxVisiblePages + 2;\n const toPage = totalPages;\n\n // Generate visiblePages\n visiblePages = generatePages(fromPage, toPage);\n\n // Generate previousPages\n previousPages = generatePages(startPage, fromPage);\n }\n }\n\n return {\n start: totalPages >= 1 ? 1 : null,\n previousPages,\n visiblePages,\n nextPages,\n end: totalPages >= 1 ? totalPages : null\n };\n};\n","\n\n
\n \n {pageNumber}\n \n \n
\n","\n\n {\n isOpen = false;\n }}\n>\n \n\n {#if isOpen}\n \n {#each pageNumbers as pageNumber}\n {\n toggle();\n onSelect(pageNumber);\n }}\n aria-label=\"Page {pageNumber}\"\n >\n {pageNumber}\n \n {/each}\n \n {/if}\n\n","\n\n\n\n\n\n{#if totalPages > 1}\n \n
\n {ariaLiveRegionText}\n
\n{/if}\n","\n\n\n \n \n \n\n {#if title}\n
\n \n {title}\n \n {#if cta}\n \n {cta?.text}\n \n {/if}\n
\n {/if}\n
\n\n \n \n\n {#if cta}\n \n
\n \n \n {cta?.text}\n \n
\n
\n {/if}\n \n
\n","\n\n{#if shouldRender}\n
\n \n
\n{/if}\n","\n\n\n\n \n
\n \n closeButtonRef?.focus()}\n on:outroend={animationEnd}\n >\n
\n
\n \n \n \n \n
\n \n
\n \n
\n
\n \n
\n
\n
\n \n \n
\n","export default \"__VITE_ASSET__ab211233__\"","\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 {data.headline} | The Obama Foundation\n \n \n \n \n \n\n {#if !errorPage}\n \n \n {/if}\n\n \n\n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \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","import { buildSrc, srcSetFromWidths, sizesForBreakpoints, SRCSET_WIDTHS } from \"$lib/utilities\";\nimport {\n HeroHome,\n HeroPrimary,\n HeroSecondary,\n HeroGeneric,\n HeroArticle\n} from \"@ObamaFoundation/of-design-system\";\nimport { getImageAspectRatio } from \"../components/image-helpers\";\nimport { isExternalUrl } from \"../url-helpers\";\n\nexport const HERO_VARIANTS = {\n HOME_UPPER: \"Homepage - Upper case\",\n HOME_LOWER: \"Homepage - Lower case\",\n PRIMARY: \"Primary\",\n SECONDARY: \"Secondary\",\n DETAIL: \"Detail\",\n FEATURED_STORY: \"Featured Story\"\n};\n\nexport const HERO_COMPONENT_MAP = {\n [HERO_VARIANTS.HOME_UPPER]: HeroHome,\n [HERO_VARIANTS.HOME_LOWER]: HeroHome,\n [HERO_VARIANTS.PRIMARY]: HeroPrimary,\n [HERO_VARIANTS.SECONDARY]: HeroSecondary,\n [HERO_VARIANTS.DETAIL]: HeroGeneric,\n [HERO_VARIANTS.FEATURED_STORY]: HeroArticle\n};\n\nexport const HERO_VARIANTS_WITH_THEME = [\n HERO_VARIANTS.HOME_UPPER,\n HERO_VARIANTS.HOME_LOWER,\n HERO_VARIANTS.FEATURED_STORY\n];\n\nconst HERO_IMAGE_SIZES = {\n [HERO_VARIANTS.DETAIL]: { sm: \"100vw\", md: \"50vw\" },\n [HERO_VARIANTS.FEATURED_STORY]: { sm: \"100vw\", md: \"50vw\" }\n};\n\nexport const getHeroBaseProps = (fields, pageData) => {\n const widthsAt = HERO_IMAGE_SIZES[fields.formFactor];\n const sizes = sizesForBreakpoints(widthsAt);\n\n return {\n title: fields?.title,\n subtitle: fields?.subheadline,\n theme: pageData?.fields?.theme || fields?.theme,\n featuredImage: fields?.featuredImage\n ? {\n src: buildSrc(fields.featuredImage.fields?.imageAsset, { w: 3000 }),\n alt: fields.featuredImage.fields?.altText,\n srcset: srcSetFromWidths(\n fields.featuredImage.fields?.imageAsset?.fields?.file?.url,\n SRCSET_WIDTHS\n ),\n sizes,\n eagerLoad: true,\n theme: fields.featuredImage.fields.theme // TODO: might need to override in cases where the hero itself is themed\n }\n : null,\n cta: fields?.callToAction\n ? {\n text: fields.callToAction.fields?.text,\n url: fields.callToAction.fields?.destination?.fields?.url,\n isExternal: isExternalUrl(fields.callToAction.fields?.destination?.fields?.url)\n }\n : null\n };\n};\n\nexport const getHeroVariantProps = (fields, pageData) => {\n const formFactorProps = {\n [HERO_VARIANTS.HOME_UPPER]: {\n ...getHeroBaseProps(fields, pageData),\n hasVariableSizeText: true\n },\n [HERO_VARIANTS.HOME_LOWER]: {\n ...getHeroBaseProps(fields, pageData)\n },\n [HERO_VARIANTS.PRIMARY]: {\n ...getHeroBaseProps(fields, pageData),\n animatedTitle: fields.animatedHeadline\n },\n [HERO_VARIANTS.SECONDARY]: {\n ...getHeroBaseProps(fields, pageData),\n featuredStory: fields.featuredStory\n ? {\n title: fields.featuredStory.fields.text,\n subtitle: fields.featuredStory.fields.description,\n cta: {\n text: \"Learn more\",\n url: fields.featuredStory.fields.url\n },\n image: {\n src: buildSrc(fields.featuredStory.fields.image, { w: 1500 }),\n alt: fields.featuredStory.fields.image.fields.description,\n srcset: srcSetFromWidths(\n fields.featuredStory.fields.image.fields.file.url,\n SRCSET_WIDTHS\n ),\n sizes: sizesForBreakpoints({ sm: \"100vw\", md: \"50vw\" })\n }\n }\n : null\n },\n [HERO_VARIANTS.DETAIL]: {\n ...getHeroBaseProps(fields, pageData),\n secondaryText: fields.secondaryText\n },\n [HERO_VARIANTS.FEATURED_STORY]: {\n ...getHeroBaseProps(fields, pageData),\n imageVariant:\n fields.featuredImage &&\n getImageAspectRatio(fields.featuredImage, fields.featuredImage.fields.aspectRatio),\n tags: pageData?.fields.contentTags?.slice(0, 3).map((tag) => {\n return {\n name: tag.fields.name,\n href: `/stories/${tag.fields.name.toLowerCase().trim().replaceAll(/\\s+/g, \"-\")}`\n };\n })\n }\n };\n\n // filter is the props passed into FilterList ContentType\n const filters = fields.filters;\n\n return { ...formFactorProps[fields.formFactor], filters } || {};\n};\n","export function generateFilterOptions(headline, body, bodyProps, active) {\n return {\n headline,\n active: active ?? false,\n body,\n bodyProps\n };\n}\n\nexport function paginateJobs(jobs, jobsPerPage, upperBound) {\n let index = -1;\n\n return jobs.map((department) => {\n const jobs = department.jobs.filter(() => {\n index++;\n return index >= upperBound - jobsPerPage && index < upperBound;\n });\n\n return {\n ...department,\n jobs\n };\n });\n}\n","<script>\n import { onDestroy, onMount } from \"svelte\";\n\n import { Filters, Button, Drawer, Checkbox } from \"@ObamaFoundation/of-design-system\";\n\n import { getTotalNumberOfSelectedFilters } from \"$lib/utilities/filters\";\n import { generateFilterOptions } from \"$lib/utilities/careers.js\";\n import { textToId } from \"$lib/utilities/dom-helpers\";\n import { filterItemsStore } from \"$lib/stores\";\n\n /**\n * The filter options as received from Contentful. They are used to generate the filter props\n * we pass to the design system components on mount and reset filter state to its initial state.\n * @type {Object}\n */\n export let rawFilters = undefined;\n\n /**\n * The transformed filter options that will appear in the filter list.\n * @type {Object[]}\n */\n export let filterListIsOpen = false;\n\n /**\n * Filters that have been selected but not yet submitted.\n * @type {Object[]}\n */\n let stagedFilters = [];\n\n /**\n * updates as selections are changed here\n * or if store is otherwise modified (e.g., when an active filter is removed from Hero)\n *\n * @type {number}\n */\n $: numberOfSelectedOptions = getTotalNumberOfSelectedFilters(stagedFilters);\n const unsubscribe = filterItemsStore.subscribe((store) => {\n numberOfSelectedOptions = getTotalNumberOfSelectedFilters(store);\n });\n\n const toggleFilterList = (e) => {\n filterListIsOpen = e.detail.drawerIsOpen;\n };\n\n const transformRawFiltersToFilterOptions = () =>\n rawFilters?.fields.items?.map((filterItem) =>\n generateFilterOptions(filterItem.fields.name, Checkbox, {\n options: filterItem.fields.tags.map((tag) => {\n return {\n label: tag.fields.name,\n id: `filter-${textToId(tag.fields.name.trim())}`,\n isChecked: false\n };\n }),\n name: filterItem.fields.name,\n componentClass: \"lg:pt-[4px] lg:pb-4\"\n })\n ) || [];\n\n const resetFilters = () => {\n stagedFilters = transformRawFiltersToFilterOptions();\n };\n\n const handleClear = () => {\n resetFilters();\n };\n\n const handleCheckBoxSelectionGroup = (e) => {\n stagedFilters = e.detail.items;\n };\n\n const handleApply = () => {\n filterItemsStore.set(stagedFilters);\n filterListIsOpen = false;\n };\n\n onMount(() => {\n resetFilters();\n });\n\n onDestroy(unsubscribe);\n</script>\n\n<Drawer on:drawerIsOpen={toggleFilterList} open={filterListIsOpen}>\n <div slot=\"header\" class=\"text-black\" aria-live=\"polite\">\n <p class=\"inline label\">Filter</p>\n {#if numberOfSelectedOptions > 0}\n <p class=\"inline label\">\n <span>\n {`(${numberOfSelectedOptions} selected): `}\n </span>\n <Button\n id=\"clear-filters\"\n class=\"underline\"\n ariaLabel=\"Clear All Selected Filters\"\n on:click={handleClear}>Clear All</Button\n >\n </p>\n {/if}\n </div>\n <Filters\n itemContainerClass=\"text-black\"\n slot=\"filters\"\n on:checkBoxSelectionGroup={handleCheckBoxSelectionGroup}\n componentName=\"checkbox\"\n filters={stagedFilters}\n />\n <Button\n slot=\"button\"\n on:click={handleApply}\n id=\"apply-filters\"\n disabled={numberOfSelectedOptions < 1}\n variant=\"filled\"\n label=\"Apply\"\n buttonClass=\"w-full justify-center\"\n />\n</Drawer>\n","<script>\n import { onDestroy, setContext } from \"svelte\";\n\n import { HeroGeneric, HeroSecondary, HeroPrimary } from \"@ObamaFoundation/of-design-system\";\n\n import FilterList from \"$lib/components/FilterList.svelte\";\n import { filterItemsStore } from \"$lib/stores\";\n import { flattenAppliedFilterGroups } from \"$lib/utilities/filters\";\n\n export let data;\n export let component = HeroGeneric;\n\n let filterListIsOpen = false;\n\n setContext(\"containerized\", true);\n\n const { featuredImage, featuredStory, cta } = data;\n const isTextOnly = !featuredImage && !featuredStory && !cta;\n\n /**\n * To avoid regressions we remove the margin on demand for components and cases with extra margins\n *\n * TODO: add tests for this once https://github.com/ObamaFoundation/obamaorg-swa/pull/2427 is merged in\n * */\n const getMargin = () => {\n if (component === HeroSecondary && (isTextOnly || featuredImage)) {\n return \"mb-0\";\n } else if ((component === HeroGeneric || component === HeroPrimary) && isTextOnly) {\n return \"mb-0\";\n }\n return \"mb-15 md:mb-20 lg:mb-25\";\n };\n\n function toggleFilterList() {\n filterListIsOpen = true;\n }\n\n let activeFilters;\n const unsubscribe = filterItemsStore.subscribe((store) => {\n if (data.filters) {\n activeFilters = flattenAppliedFilterGroups(store);\n }\n });\n\n const handleDeselectFilterItem = (e) => {\n filterItemsStore.update((store) =>\n store.map((currentFilterGroup) => {\n currentFilterGroup.bodyProps.options.forEach((option) => {\n if (option.id === e.detail.filterItemId) {\n option.isChecked = false;\n }\n });\n return currentFilterGroup;\n })\n );\n };\n\n onDestroy(unsubscribe);\n</script>\n\n<!-- TODO: Remove margins from this component.\nIf this is wrapping a single component the margins should be handled on the component itself -->\n<div class=\"-mt-[var(--nav-height)] {getMargin()}\">\n <svelte:component\n this={component}\n {...data}\n filterItems={activeFilters}\n class=\"pt-[var(--nav-height)]\"\n on:toggleFilterList={toggleFilterList}\n on:deselectFilterItem={handleDeselectFilterItem}\n />\n</div>\n\n{#if data.filters}\n <FilterList rawFilters={data.filters} bind:filterListIsOpen />\n{/if}\n","<script>\n import { getContext } from \"svelte\";\n import {\n HERO_COMPONENT_MAP,\n getHeroVariantProps,\n HERO_VARIANTS_WITH_THEME\n } from \"$lib/utilities/contentTypes/hero\";\n import Hero from \"$lib/components/Hero.svelte\";\n import { heroThemeStore } from \"$lib/stores\";\n import { BREAK_POINTS } from \"$lib/utilities/constants\";\n import { afterUpdate } from \"svelte\";\n\n export let data;\n\n let formFactor = data.fields?.formFactor;\n\n const component = HERO_COMPONENT_MAP[formFactor];\n\n const pageDataContext = getContext(\"pageData\");\n\n let screenWidth = 0;\n\n // The image displayed on the hero can depend on the current breakpoint.\n $: breakpointAdjustedFields =\n screenWidth < BREAK_POINTS.md && data.fields.mobileFeaturedImage\n ? { ...data.fields, featuredImage: data.fields.mobileFeaturedImage }\n : data.fields;\n\n $: heroProps = getHeroVariantProps(breakpointAdjustedFields, pageDataContext);\n\n let hasThemedBackground = HERO_VARIANTS_WITH_THEME.includes(formFactor);\n\n afterUpdate(() => {\n if (hasThemedBackground) {\n // Used to update the the Global Navigation background color based on current Home Hero background color\n heroThemeStore.set(heroProps?.theme ?? \"white\");\n } else {\n heroThemeStore.set(\"white\");\n }\n });\n</script>\n\n<svelte:window bind:innerWidth={screenWidth} />\n\n<Hero data={heroProps} {component} />\n"],"names":["ctx","insert_hydration","target","p","anchor","create_if_block","attr","div2","div2_class_value","div3","div3_class_value","div4","append_hydration","button","div0","div1","current","dirty","visibleClass","hiddenClass","id","$$props","label","subtitle","itemContainerClass","itemHeadingClass","itemBodySlotClass","active","key","uuid","overflowClass","handleToggle","$$invalidate","isOpen","onMount","collapseTransitionEnd","tick","iconAnimationClass","contentAnimationClass","contentOpacityClass","contentItemAnimationClass","switch_instance_spread_levels","switch_value","switch_instance_props","assign","get_spread_update","get_spread_object","t_value","div","set_data","t","accordionitem_changes","i","each_blocks","className","items","dispatch","createEventDispatcher","onCheckBoxSelectionGroup","e","item","clickOutside","element","callbackFunction","onClick","event","newCallbackFunction","debounce","func","wait","immediate","timeout","args","context","if_block1","input","input_class_value","inputBeforeClass","label_1","label_1_class_value","span","errorMessage","isChecked","disabled","required","componentClass","toggleCheck","checked","isInvalid","labelFocusClass","focusin_handler","focusout_handler","options","name","handleChange","checkbox","detail","option","input_checked_value","is_function","t1","t1_value","selection","onChange","componentName","component","CheckboxGroup","Radio","filters","tags_1_changes","create_if_block_2","create_if_block_1","gridcontainer_changes","title","tags","featuredImage","theme","imageVariant","hasHalfWidthImage","contentClass","imageClass","imageAspectRatios","currentTheme","getTheme","button_changes","filterItems","handleFilterButtonClick","handleOptionButtonClick","filterItemId","image_spread_levels","create_if_block_4","pseudoElementClass","secondaryText","cta","get_key","span_style_value","create_if_block_3","transitionContainerClass","link_changes","div_class_value","_a","_b","hasVariableSizeText","titleEl","animate","titleFontSize","titleWidth","initTextFit","triggerTextFit","breakpoint","getBreakpoint","multiLine","Breakpoints","maxFontSize","maxFontSizeMapForFullWidthText","textFit","debouncedTriggerTextFit","recalculateTextFit","mutationObserver","mutations","mutation","mutationConfig","splitTitle","titleClass","$$value","animateContainer","animateTitleClass","animateOpacity","titleFontSizeClass","titleWidthClass","animationClass","animatedTitle","animation","isAnimationReady","onDestroy","titleSpanClass","containerAnimationClass","imageContainerClass","t2_value","t2","if_block2","featuredStory","columnClass","subtitleClass","isTextOnly","isFeatureImageLast","getContainerPaddingBottom","pagination","totalPages","maxVisiblePages","currentPage","shouldEllipse","shouldEllipsePrevious","shouldEllipseNext","hasPagesOtherThanFirstAndLast","startPage","generatePages","start","end","_","previousPages","visiblePages","nextPages","fromPage","generatedVisiblePages","toPage","generatedNextPages","button_class_value","pageNumber","arialLabel","hasPopup","expanded","classFocus","classUnderline","classButtonActive","ul","t0","t0_value","pageNumbers","onSelect","toggle","button0","button0_disabled_value","button1","button1_disabled_value","nav","li0","li1","li2","pageselector_changes","li","if_block","maxVisiblePagesDesktop","maxVisiblePagesMobile","initialActivePage","classArrowFocus","ariaLiveRegionText","updateAriaLive","watchCurrentPage","ariaLabelContext","defaultLabel","pageIdentifier","navigateTo","page","screenWidth","visiblePagesOnDevice","setMaxVisiblePages","section","DynamicHeadingContext","Fragment","themedSectionClass","shouldRender","ref","div7","div6","div5","div0_transition","create_bidirectional_transition","fade","div5_transition","fly","open","closeDrawer","handleWindowKeyDown","animationEnd","closeButtonRef","containerRef","afterUpdate","lock","clearBodyLocks","introend_handler","logo","link","title_value","meta6","meta6_content_value","meta7","meta7_content_value","meta9","meta9_content_value","meta10","meta10_content_value","meta11","meta11_content_value","meta15","meta15_content_value","meta18","meta18_content_value","_g","_f","_e","_d","_c","meta19","meta19_content_value","_i","_h","meta22","meta22_content_value","meta0","meta1","meta2","link0","link1","link2","link3","link4","link5","link6","link7","link8","link9","link10","link11","link12","link13","meta3","meta4","meta5","link14","meta8","meta12","meta13","meta14","meta16","meta17","meta20","meta21","meta23","meta24","data","errorPage","normalizeContentfulAssetUrl","url","createCanonicalUrl","relativePath","$page","isRootRelative","correctedUrl","baseUrl","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","c","xmlDecodeTree","decodeMap","fromCodePoint","codePoint","output","replaceCodePoint","CharCodes","TO_LOWER_BIT","BinTrieFlags","isNumber","code","isHexadecimalCharacter","isAsciiAlphaNumeric","isEntityInAttributeInvalidEnd","EntityDecoderState","DecodingMode","EntityDecoder","decodeTree","emitCodePoint","errors","decodeMode","str","offset","base","digitCount","startIdx","char","lastCp","expectedLength","valueLength","determineBranch","result","consumed","getDecoder","ret","decoder","lastIndex","len","nodeIdx","branchCount","jumpOffset","value","lo","hi","mid","midVal","State","isWhitespace","isEndOfTagSection","isASCIIAlpha","QuoteType","Sequences","Tokenizer","xmlMode","decodeEntities","cbs","cp","chunk","isEnd","endOfText","actualIndex","sequence","lower","quote","length","endIndex","formTags","pTag","tableSectionTags","ddtTags","rtpTags","openImpliesClose","voidElements","foreignContextElements","htmlIntegrationElements","reNameEnd","Parser$1","impliesClose","isImplied","pos","index","isOpenImplied","_j","_k","slice","ElementType","isTag","elem","Root","Text","Directive","Comment","Script","Style","Tag","CDATA","Doctype","Node$2","parent","prev","next","recursive","cloneNode","DataNode","Node","ProcessingInstruction","NodeWithChildren","children","attribs","type","node","isTagRaw","isCDATA","isText","isComment","isDirective","isDocument","hasChildren","cloneChildren","clone","Element","child","Document","instruction","childs","defaultOpts","DomHandler","callback","elementCB","parser","error","lastNode","text","previousSibling","xmlReplacer","xmlCodeMap","getCodePoint","encodeXML","lastIdx","match","getEscaper","regex","map","escapeAttribute","escapeText","elementNames","val","attributeNames","unencodedElements","replaceQuotes","formatAttributes","attributes","opts","encode","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","tag","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","filter","test","recurse","limit","find","nodeStack","indexStack","findOneChild","findOne","existsOne","findAll","Checks","getAttribCheck","attrib","combineFuncs","a","b","compileTest","funcs","testElement","getElements","getElementById","getElementsByTagName","tagName","getElementsByTagType","removeSubsets","idx","ancestor","DocumentPosition","compareDocumentPosition","nodeA","nodeB","aParents","bParents","maxIdx","sharedParent","aSibling","bSibling","uniqueSort","arr","relative","getFeed","doc","feedRoot","getOneElement","isValidFeed","getAtomFeed","getRssFeed","feed","entry","getMediaElements","addConditionally","href","description","fetch","pubDate","updated","MEDIA_KEYS_STRING","MEDIA_KEYS_INT","where","media","obj","prop","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","SVG_NAMESPACE","create","defineProperties","entries","getOwnPropertyDescriptors","keys","setPrototypeOf","$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","check","resolve","ce","values","HTMLParser2","self","attribute","parseFromString","document","isHTML","markupLanguage","ownerSVGElement","parsingCData","content","htmlClasses","registerHTMLClass","names","__viteBrowserExternal","performance","require$$0","performance_1","perf_hooks","loopSegment","json","attrAsJSON","characterDataAsJSON","elementAsJSON","documentTypeAsJSON","last","nonElementAsJSON","publicId","systemId","createRecord","addedNodes","removedNodes","queueAttribute","observer","attributeFilter","attributeOldValue","records","scheduled","observers","childList","subtree","moCallback","parentNode","characterData","MutationObserverClass","emptyAttributes","setAttribute","moAttributes","ceAttributes","removeAttribute","booleanAttribute","numericAttribute","stringAttribute","wm","listener","invokeListeners","currentTarget","listeners","DOMEventTarget","NodeList","getParentNodeCount","count","EventTarget","nodeType","location","newNode","referenceNode","newChild","oldChild","other","childNodes","aNodes","bNodes","root","replace","ca","esca","pe","m","escape","es","QUOTE","Attr","String","ownerElement","escapedValue","parentElement","nextSibling","previousElementSibling","asFragment","fragment","before","after","replaceWith","remove","CDATASection","CharacterData","boolbase","SelectorType","AttributeAction","reName","reEscape","actionTypes","unpackPseudos","isTraversal","selector","stripQuotesFromPseudos","funescape","escaped","escapedWhitespace","high","unescapeCSS","isQuote","parse","subselects","parseSelector","selectorIndex","tokens","stripWhitespace","readValueWithParenthesis","counter","isEscaped","slashCount","ensureNotTraversal","addTraversal","addSpecialAttribute","action","finalizeSubselector","loop","firstChar","namespace","possibleAction","sectionEnd","valueStart","forceIgnore","attributeSelector","quot","procedure","token","sortByProcedure","procs","getProcedure","procNew","j","proc","d","reChars","escapeRegex","caseInsensitiveAttributes","shouldIgnoreCase","attributeRules","adapter","whitespace","ZERO","NINE","formula","sign","readSign","number","readNumber","skipWhitespace","compile","parsed","absA","bMod","nthCheck","getChildFunc","itext","rule","equals","getNCheck","currentSibling","_rule","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","lastElement","compileUnsafe","includesScopePseudo","DESCENDANT_TOKEN","FLEXIBLE_DESCENDANT_TOKEN","SCOPE_TOKEN","absolutize","hasContext","sortRules","isArrayContext","finalContext","query","rules","first","second","compileRules","reduceRules","defaultEquals","defaultOptions","DomUtils","convertOptionFormats","wrapCompile","compileRaw","isArray","elements","matches","prepareMatch","selectors","CSSselect.compile","CSSselect.is","isNode","insert","ParentNode","firstElementChild","lastChild","$next","$prev","replaced","NonElementParentNode","deep","constructor","nonEPN","DocumentType","hasPublic","getInnerHtml","setInnerHtml","html","setOwnerDocument","uhyphen","camel","refs","$1","dataset","DOMStringMap","add","addTokens","update","DOMTokenList","force","newToken","getKeys","style","updateKeys","rest","prototype","done","cssText","push","CSSStyleDeclaration","BUBBLING_PHASE","AT_TARGET","CAPTURING_PHASE","NONE","getCurrentTarget","ev","GlobalEvent","eventInitDict","NamedNodeMap","host","attributesHandler","svg","isVoid","classList","template","Event","previously","mode","shadowRoot","init","ShadowRoot","position","addNext","out","isOpened","classNames","illegalConstructor","_Attr","_CDATASection","_CharacterData","_Comment","DocumentFragment","_DocumentFragment","_DocumentType","_Element","_Node","_ShadowRoot","_Text","SVGElement","_SVGElement","Facades","Level0","level0","handlers","HTMLElement","ownerLess","clickEvent","accessKey","HTMLTemplateElement","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","lines","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","width","height","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","HTMLFormElement","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","window","globalThis","et","docType","canBubble","cancelable","doctype","externalNode","upgrade","nsp","_Document","textToId","spaces","anythingButSpacesAndLetters","punctuationToStrip","HERO_VARIANTS","HERO_COMPONENT_MAP","HeroHome","HeroPrimary","HeroSecondary","HeroGeneric","HeroArticle","HERO_VARIANTS_WITH_THEME","HERO_IMAGE_SIZES","getHeroBaseProps","fields","pageData","widthsAt","sizes","sizesForBreakpoints","buildSrc","srcSetFromWidths","SRCSET_WIDTHS","isExternalUrl","_n","_m","_l","getHeroVariantProps","formFactorProps","getImageAspectRatio","generateFilterOptions","headline","body","bodyProps","paginateJobs","jobs","jobsPerPage","upperBound","department","rawFilters","filterListIsOpen","stagedFilters","unsubscribe","filterItemsStore","store","numberOfSelectedOptions","getTotalNumberOfSelectedFilters","toggleFilterList","transformRawFiltersToFilterOptions","filterItem","Checkbox","resetFilters","handleClear","handleCheckBoxSelectionGroup","handleApply","filterlist_props","filterlist_changes","setContext","getMargin","activeFilters","flattenAppliedFilterGroups","handleDeselectFilterItem","currentFilterGroup","formFactor","pageDataContext","getContext","hasThemedBackground","heroThemeStore","heroProps","breakpointAdjustedFields","BREAK_POINTS"],"mappings":"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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,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,52,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,81,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]}