UNPKG

teddy

Version:

🧸 Teddy is the most readable and easy to learn templating language there is!

4,710 lines 417 kB
/******/var __webpack_modules__={
/***/"./node_modules/boolbase/index.js":
/*!****************************************!*\
  !*** ./node_modules/boolbase/index.js ***!
  \****************************************/
/***/module=>{module.exports={trueFunc:function(){return true},falseFunc:function(){return false}};
/***/},
/***/"./node_modules/cheerio-select/lib/esm/helpers.js":
/*!********************************************************!*\
  !*** ./node_modules/cheerio-select/lib/esm/helpers.js ***!
  \********************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */getDocumentRoot:()=>/* binding */getDocumentRoot
/* harmony export */,groupSelectors:()=>/* binding */groupSelectors
/* harmony export */});
/* harmony import */var _positionals_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ./positionals.js */"./node_modules/cheerio-select/lib/esm/positionals.js");function getDocumentRoot(node){while(node.parent)node=node.parent;return node}function groupSelectors(selectors){const filteredSelectors=[];const plainSelectors=[];for(const selector of selectors)if(selector.some(_positionals_js__WEBPACK_IMPORTED_MODULE_0__.isFilter))filteredSelectors.push(selector);else plainSelectors.push(selector);return[plainSelectors,filteredSelectors]}
//# sourceMappingURL=helpers.js.map
/***/},
/***/"./node_modules/cheerio-select/lib/esm/index.js":
/*!******************************************************!*\
  !*** ./node_modules/cheerio-select/lib/esm/index.js ***!
  \******************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */aliases:()=>/* reexport safe */css_select__WEBPACK_IMPORTED_MODULE_0__.aliases
/* harmony export */,filter:()=>/* binding */filter
/* harmony export */,filters:()=>/* reexport safe */css_select__WEBPACK_IMPORTED_MODULE_0__.filters
/* harmony export */,is:()=>/* binding */is
/* harmony export */,pseudos:()=>/* reexport safe */css_select__WEBPACK_IMPORTED_MODULE_0__.pseudos
/* harmony export */,select:()=>/* binding */select
/* harmony export */,some:()=>/* binding */some
/* harmony export */});
/* harmony import */var css_what__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(/*! css-what */"./node_modules/css-what/lib/es/types.js");
/* harmony import */var css_what__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(/*! css-what */"./node_modules/css-what/lib/es/parse.js");
/* harmony import */var css_select__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! css-select */"./node_modules/css-select/lib/esm/index.js");
/* harmony import */var domutils__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! domutils */"./node_modules/domutils/lib/esm/index.js");
/* harmony import */var boolbase__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! boolbase */"./node_modules/boolbase/index.js");
/* harmony import */var _helpers_js__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(/*! ./helpers.js */"./node_modules/cheerio-select/lib/esm/helpers.js");
/* harmony import */var _positionals_js__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(/*! ./positionals.js */"./node_modules/cheerio-select/lib/esm/positionals.js");
// Re-export pseudo extension points
const UNIVERSAL_SELECTOR={type:css_what__WEBPACK_IMPORTED_MODULE_5__.SelectorType.Universal,namespace:null};const SCOPE_PSEUDO={type:css_what__WEBPACK_IMPORTED_MODULE_5__.SelectorType.Pseudo,name:"scope",data:null};function is(element,selector,options={}){return some([element],selector,options)}function some(elements,selector,options={}){if(typeof selector==="function")return elements.some(selector);const[plain,filtered]=(0,_helpers_js__WEBPACK_IMPORTED_MODULE_3__.groupSelectors)((0,css_what__WEBPACK_IMPORTED_MODULE_6__.parse)(selector));return plain.length>0&&elements.some((0,css_select__WEBPACK_IMPORTED_MODULE_0__._compileToken)(plain,options))||filtered.some((sel=>filterBySelector(sel,elements,options).length>0))}function filterByPosition(filter,elems,data,options){const num=typeof data==="string"?parseInt(data,10):NaN;switch(filter){case"first":case"lt":
// Already done in `getLimit`
return elems;case"last":return elems.length>0?[elems[elems.length-1]]:elems;case"nth":case"eq":return isFinite(num)&&Math.abs(num)<elems.length?[num<0?elems[elems.length+num]:elems[num]]:[];case"gt":return isFinite(num)?elems.slice(num+1):[];case"even":return elems.filter(((_,i)=>i%2===0));case"odd":return elems.filter(((_,i)=>i%2===1));case"not":{const filtered=new Set(filterParsed(data,elems,options));return elems.filter((e=>!filtered.has(e)))}}}function filter(selector,elements,options={}){return filterParsed((0,css_what__WEBPACK_IMPORTED_MODULE_6__.parse)(selector),elements,options)}
/**
 * Filter a set of elements by a selector.
 *
 * Will return elements in the original order.
 *
 * @param selector Selector to filter by.
 * @param elements Elements to filter.
 * @param options Options for selector.
 */function filterParsed(selector,elements,options){if(elements.length===0)return[];const[plainSelectors,filteredSelectors]=(0,_helpers_js__WEBPACK_IMPORTED_MODULE_3__.groupSelectors)(selector);let found;if(plainSelectors.length){const filtered=filterElements(elements,plainSelectors,options);
// If there are no filters, just return
if(filteredSelectors.length===0)return filtered;
// Otherwise, we have to do some filtering
if(filtered.length)found=new Set(filtered)}for(let i=0;i<filteredSelectors.length&&(found===null||found===void 0?void 0:found.size)!==elements.length;i++){const filteredSelector=filteredSelectors[i];const missing=found?elements.filter((e=>domutils__WEBPACK_IMPORTED_MODULE_1__.isTag(e)&&!found.has(e))):elements;if(missing.length===0)break;const filtered=filterBySelector(filteredSelector,elements,options);if(filtered.length)if(!found){
/*
                 * If we haven't found anything before the last selector,
                 * just return what we found now.
                 */
if(i===filteredSelectors.length-1)return filtered;found=new Set(filtered)}else filtered.forEach((el=>found.add(el)))}return typeof found!=="undefined"?found.size===elements.length?elements:// Filter elements to preserve order
elements.filter((el=>found.has(el))):[]}function filterBySelector(selector,elements,options){var _a;if(selector.some(css_what__WEBPACK_IMPORTED_MODULE_6__.isTraversal)){
/*
         * Get root node, run selector with the scope
         * set to all of our nodes.
         */
const root=(_a=options.root)!==null&&_a!==void 0?_a:(0,_helpers_js__WEBPACK_IMPORTED_MODULE_3__.getDocumentRoot)(elements[0]);const opts={...options,context:elements,relativeSelector:false};selector.push(SCOPE_PSEUDO);return findFilterElements(root,selector,opts,true,elements.length)}
// Performance optimization: If we don't have to traverse, just filter set.
return findFilterElements(elements,selector,options,false,elements.length)}function select(selector,root,options={},limit=1/0){if(typeof selector==="function")return find(root,selector);const[plain,filtered]=(0,_helpers_js__WEBPACK_IMPORTED_MODULE_3__.groupSelectors)((0,css_what__WEBPACK_IMPORTED_MODULE_6__.parse)(selector));const results=filtered.map((sel=>findFilterElements(root,sel,options,true,limit)));
// Plain selectors can be queried in a single go
if(plain.length)results.push(findElements(root,plain,options,limit));if(results.length===0)return[];
// If there was only a single selector, just return the result
if(results.length===1)return results[0];
// Sort results, filtering for duplicates
return domutils__WEBPACK_IMPORTED_MODULE_1__.uniqueSort(results.reduce(((a,b)=>[...a,...b])))}
/**
 *
 * @param root Element(s) to search from.
 * @param selector Selector to look for.
 * @param options Options for querying.
 * @param queryForSelector Query multiple levels deep for the initial selector, even if it doesn't contain a traversal.
 */function findFilterElements(root,selector,options,queryForSelector,totalLimit){const filterIndex=selector.findIndex(_positionals_js__WEBPACK_IMPORTED_MODULE_4__.isFilter);const sub=selector.slice(0,filterIndex);const filter=selector[filterIndex];
// If we are at the end of the selector, we can limit the number of elements to retrieve.
const partLimit=selector.length-1===filterIndex?totalLimit:1/0;
/*
     * Set the number of elements to retrieve.
     * Eg. for :first, we only have to get a single element.
     */const limit=(0,_positionals_js__WEBPACK_IMPORTED_MODULE_4__.getLimit)(filter.name,filter.data,partLimit);if(limit===0)return[];
/*
     * Skip `findElements` call if our selector starts with a positional
     * pseudo.
     */const elemsNoLimit=sub.length===0&&!Array.isArray(root)?domutils__WEBPACK_IMPORTED_MODULE_1__.getChildren(root).filter(domutils__WEBPACK_IMPORTED_MODULE_1__.isTag):sub.length===0?(Array.isArray(root)?root:[root]).filter(domutils__WEBPACK_IMPORTED_MODULE_1__.isTag):queryForSelector||sub.some(css_what__WEBPACK_IMPORTED_MODULE_6__.isTraversal)?findElements(root,[sub],options,limit):filterElements(root,[sub],options);const elems=elemsNoLimit.slice(0,limit);let result=filterByPosition(filter.name,elems,filter.data,options);if(result.length===0||selector.length===filterIndex+1)return result;const remainingSelector=selector.slice(filterIndex+1);const remainingHasTraversal=remainingSelector.some(css_what__WEBPACK_IMPORTED_MODULE_6__.isTraversal);if(remainingHasTraversal){if((0,css_what__WEBPACK_IMPORTED_MODULE_6__.isTraversal)(remainingSelector[0])){const{type}=remainingSelector[0];if(type===css_what__WEBPACK_IMPORTED_MODULE_5__.SelectorType.Sibling||type===css_what__WEBPACK_IMPORTED_MODULE_5__.SelectorType.Adjacent)
// If we have a sibling traversal, we need to also look at the siblings.
result=(0,css_select__WEBPACK_IMPORTED_MODULE_0__.prepareContext)(result,domutils__WEBPACK_IMPORTED_MODULE_1__,true);
// Avoid a traversal-first selector error.
remainingSelector.unshift(UNIVERSAL_SELECTOR)}options={...options,
// Avoid absolutizing the selector
relativeSelector:false,
/*
             * Add a custom root func, to make sure traversals don't match elements
             * that aren't a part of the considered tree.
             */
rootFunc:el=>result.includes(el)}}else if(options.rootFunc&&options.rootFunc!==boolbase__WEBPACK_IMPORTED_MODULE_2__.trueFunc)options={...options,rootFunc:boolbase__WEBPACK_IMPORTED_MODULE_2__.trueFunc};
/*
     * If we have another filter, recursively call `findFilterElements`,
     * with the `recursive` flag disabled. We only have to look for more
     * elements when we see a traversal.
     *
     * Otherwise,
     */return remainingSelector.some(_positionals_js__WEBPACK_IMPORTED_MODULE_4__.isFilter)?findFilterElements(result,remainingSelector,options,false,totalLimit):remainingHasTraversal?// Query existing elements to resolve traversal.
findElements(result,[remainingSelector],options,totalLimit):// If we don't have any more traversals, simply filter elements.
filterElements(result,[remainingSelector],options)}function findElements(root,sel,options,limit){const query=(0,css_select__WEBPACK_IMPORTED_MODULE_0__._compileToken)(sel,options,root);return find(root,query,limit)}function find(root,query,limit=1/0){const elems=(0,css_select__WEBPACK_IMPORTED_MODULE_0__.prepareContext)(root,domutils__WEBPACK_IMPORTED_MODULE_1__,query.shouldTestNextSiblings);return domutils__WEBPACK_IMPORTED_MODULE_1__.find((node=>domutils__WEBPACK_IMPORTED_MODULE_1__.isTag(node)&&query(node)),elems,true,limit)}function filterElements(elements,sel,options){const els=(Array.isArray(elements)?elements:[elements]).filter(domutils__WEBPACK_IMPORTED_MODULE_1__.isTag);if(els.length===0)return els;const query=(0,css_select__WEBPACK_IMPORTED_MODULE_0__._compileToken)(sel,options);return query===boolbase__WEBPACK_IMPORTED_MODULE_2__.trueFunc?els:els.filter(query)}
//# sourceMappingURL=index.js.map
/***/},
/***/"./node_modules/cheerio-select/lib/esm/positionals.js":
/*!************************************************************!*\
  !*** ./node_modules/cheerio-select/lib/esm/positionals.js ***!
  \************************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */filterNames:()=>/* binding */filterNames
/* harmony export */,getLimit:()=>/* binding */getLimit
/* harmony export */,isFilter:()=>/* binding */isFilter
/* harmony export */});const filterNames=new Set(["first","last","eq","gt","nth","lt","even","odd"]);function isFilter(s){if(s.type!=="pseudo")return false;if(filterNames.has(s.name))return true;if(s.name==="not"&&Array.isArray(s.data))
// Only consider `:not` with embedded filters
return s.data.some((s=>s.some(isFilter)));return false}function getLimit(filter,data,partLimit){const num=data!=null?parseInt(data,10):NaN;switch(filter){case"first":return 1;case"nth":case"eq":return isFinite(num)?num>=0?num+1:1/0:0;case"lt":return isFinite(num)?num>=0?Math.min(num,partLimit):1/0:0;case"gt":return isFinite(num)?1/0:0;case"odd":return 2*partLimit;case"even":return 2*partLimit-1;case"last":case"not":return 1/0}}
//# sourceMappingURL=positionals.js.map
/***/},
/***/"./node_modules/cheerio/dist/browser/api/attributes.js":
/*!*************************************************************!*\
  !*** ./node_modules/cheerio/dist/browser/api/attributes.js ***!
  \*************************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */addClass:()=>/* binding */addClass
/* harmony export */,attr:()=>/* binding */attr
/* harmony export */,data:()=>/* binding */data
/* harmony export */,hasClass:()=>/* binding */hasClass
/* harmony export */,prop:()=>/* binding */prop
/* harmony export */,removeAttr:()=>/* binding */removeAttr
/* harmony export */,removeClass:()=>/* binding */removeClass
/* harmony export */,toggleClass:()=>/* binding */toggleClass
/* harmony export */,val:()=>/* binding */val
/* harmony export */});
/* harmony import */var _static_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ../static.js */"./node_modules/cheerio/dist/browser/static.js");
/* harmony import */var _utils_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ../utils.js */"./node_modules/cheerio/dist/browser/utils.js");
/* harmony import */var domhandler__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! domhandler */"./node_modules/domhandler/lib/esm/index.js");
/* harmony import */var domutils__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(/*! domutils */"./node_modules/domutils/lib/esm/index.js");
/**
 * Methods for getting and modifying attributes.
 *
 * @module cheerio/attributes
 */const hasOwn=Object.prototype.hasOwnProperty;const rspace=/\s+/;const dataAttrPrefix="data-";
// Attributes that are booleans
const rboolean=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i;
// Matches strings that look like JSON objects or arrays
const rbrace=/^{[^]*}$|^\[[^]*]$/;function getAttr(elem,name,xmlMode){var _a;if(!elem||!(0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(elem))return;(_a=elem.attribs)!==null&&_a!==void 0?_a:elem.attribs={};
// Return the entire attribs object if no attribute specified
if(!name)return elem.attribs;if(hasOwn.call(elem.attribs,name))
// Get the (decoded) attribute
return!xmlMode&&rboolean.test(name)?name:elem.attribs[name];
// Mimic the DOM and return text content as value for `option's`
if(elem.name==="option"&&name==="value")return(0,_static_js__WEBPACK_IMPORTED_MODULE_0__.text)(elem.children);
// Mimic DOM with default value for radios/checkboxes
if(elem.name==="input"&&(elem.attribs["type"]==="radio"||elem.attribs["type"]==="checkbox")&&name==="value")return"on";return}
/**
 * Sets the value of an attribute. The attribute will be deleted if the value is
 * `null`.
 *
 * @private
 * @param el - The element to set the attribute on.
 * @param name - The attribute's name.
 * @param value - The attribute's value.
 */function setAttr(el,name,value){if(value===null)removeAttribute(el,name);else el.attribs[name]=`${value}`}function attr(name,value){
// Set the value (with attr map support)
if(typeof name==="object"||value!==void 0){if(typeof value==="function"){if(typeof name!=="string")throw new Error("Bad combination of arguments.");return(0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.domEach)(this,((el,i)=>{if((0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(el))setAttr(el,name,value.call(el,i,el.attribs[name]))}))}return(0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.domEach)(this,(el=>{if(!(0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(el))return;if(typeof name==="object")for(const objName of Object.keys(name)){const objValue=name[objName];setAttr(el,objName,objValue)}else setAttr(el,name,value)}))}return arguments.length>1?this:getAttr(this[0],name,this.options.xmlMode)}
/**
 * Gets a node's prop.
 *
 * @private
 * @category Attributes
 * @param el - Element to get the prop of.
 * @param name - Name of the prop.
 * @param xmlMode - Disable handling of special HTML attributes.
 * @returns The prop's value.
 */function getProp(el,name,xmlMode){return name in el?// @ts-expect-error TS doesn't like us accessing the value directly here.
el[name]:!xmlMode&&rboolean.test(name)?getAttr(el,name,false)!==void 0:getAttr(el,name,xmlMode)}
/**
 * Sets the value of a prop.
 *
 * @private
 * @param el - The element to set the prop on.
 * @param name - The prop's name.
 * @param value - The prop's value.
 * @param xmlMode - Disable handling of special HTML attributes.
 */function setProp(el,name,value,xmlMode){if(name in el)
// @ts-expect-error Overriding value
el[name]=value;else setAttr(el,name,!xmlMode&&rboolean.test(name)?value?"":null:`${value}`)}function prop(name,value){var _a;if(typeof name==="string"&&value===void 0){const el=this[0];if(!el||!(0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(el))return;switch(name){case"style":{const property=this.css();const keys=Object.keys(property);for(let i=0;i<keys.length;i++)property[i]=keys[i];property.length=keys.length;return property}case"tagName":case"nodeName":return el.name.toUpperCase();case"href":case"src":{const prop=(_a=el.attribs)===null||_a===void 0?void 0:_a[name];if(typeof URL!=="undefined"&&(name==="href"&&(el.tagName==="a"||el.tagName==="link")||name==="src"&&(el.tagName==="img"||el.tagName==="iframe"||el.tagName==="audio"||el.tagName==="video"||el.tagName==="source"))&&prop!==void 0&&this.options.baseURI)return new URL(prop,this.options.baseURI).href;return prop}case"innerText":return(0,domutils__WEBPACK_IMPORTED_MODULE_3__.innerText)(el);case"textContent":return(0,domutils__WEBPACK_IMPORTED_MODULE_3__.textContent)(el);case"outerHTML":return this.clone().wrap("<container />").parent().html();case"innerHTML":return this.html();default:return getProp(el,name,this.options.xmlMode)}}if(typeof name==="object"||value!==void 0){if(typeof value==="function"){if(typeof name==="object")throw new TypeError("Bad combination of arguments.");return(0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.domEach)(this,((el,i)=>{if((0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(el))setProp(el,name,value.call(el,i,getProp(el,name,this.options.xmlMode)),this.options.xmlMode)}))}return(0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.domEach)(this,(el=>{if(!(0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(el))return;if(typeof name==="object")for(const key of Object.keys(name)){const val=name[key];setProp(el,key,val,this.options.xmlMode)}else setProp(el,name,value,this.options.xmlMode)}))}return}
/**
 * Sets the value of a data attribute.
 *
 * @private
 * @param elem - The element to set the data attribute on.
 * @param name - The data attribute's name.
 * @param value - The data attribute's value.
 */function setData(elem,name,value){var _a;(_a=elem.data)!==null&&_a!==void 0?_a:elem.data={};if(typeof name==="object")Object.assign(elem.data,name);else if(typeof name==="string"&&value!==void 0)elem.data[name]=value}
/**
 * Read _all_ HTML5 `data-*` attributes from the equivalent HTML5 `data-*`
 * attribute, and cache the value in the node's internal data store.
 *
 * @private
 * @category Attributes
 * @param el - Element to get the data attribute of.
 * @returns A map with all of the data attributes.
 */function readAllData(el){for(const domName of Object.keys(el.attribs)){if(!domName.startsWith(dataAttrPrefix))continue;const jsName=(0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.camelCase)(domName.slice(dataAttrPrefix.length));if(!hasOwn.call(el.data,jsName))el.data[jsName]=parseDataValue(el.attribs[domName])}return el.data}
/**
 * Read the specified attribute from the equivalent HTML5 `data-*` attribute,
 * and (if present) cache the value in the node's internal data store.
 *
 * @private
 * @category Attributes
 * @param el - Element to get the data attribute of.
 * @param name - Name of the data attribute.
 * @returns The data attribute's value.
 */function readData(el,name){const domName=dataAttrPrefix+(0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.cssCase)(name);const data=el.data;if(hasOwn.call(data,name))return data[name];if(hasOwn.call(el.attribs,domName))return data[name]=parseDataValue(el.attribs[domName]);return}
/**
 * Coerce string data-* attributes to their corresponding JavaScript primitives.
 *
 * @private
 * @category Attributes
 * @param value - The value to parse.
 * @returns The parsed value.
 */function parseDataValue(value){if(value==="null")return null;if(value==="true")return true;if(value==="false")return false;const num=Number(value);if(value===String(num))return num;if(rbrace.test(value))try{return JSON.parse(value)}catch{
/* Ignore */}return value}function data(name,value){var _a;const elem=this[0];if(!elem||!(0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(elem))return;const dataEl=elem;(_a=dataEl.data)!==null&&_a!==void 0?_a:dataEl.data={};
// Return the entire data object if no data specified
if(name==null)return readAllData(dataEl);
// Set the value (with attr map support)
if(typeof name==="object"||value!==void 0){(0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.domEach)(this,(el=>{if((0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(el))if(typeof name==="object")setData(el,name);else setData(el,name,value)}));return this}return readData(dataEl,name)}function val(value){const querying=arguments.length===0;const element=this[0];if(!element||!(0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(element))return querying?void 0:this;switch(element.name){case"textarea":return this.text(value);case"select":{const option=this.find("option:selected");if(!querying){if(this.attr("multiple")==null&&typeof value==="object")return this;this.find("option").removeAttr("selected");const values=typeof value==="object"?value:[value];for(const val of values)this.find(`option[value="${val}"]`).attr("selected","");return this}return this.attr("multiple")?option.toArray().map((el=>(0,_static_js__WEBPACK_IMPORTED_MODULE_0__.text)(el.children))):option.attr("value")}case"input":case"option":return querying?this.attr("value"):this.attr("value",value)}return}
/**
 * Remove an attribute.
 *
 * @private
 * @param elem - Node to remove attribute from.
 * @param name - Name of the attribute to remove.
 */function removeAttribute(elem,name){if(!elem.attribs||!hasOwn.call(elem.attribs,name))return;delete elem.attribs[name]}
/**
 * Splits a space-separated list of names to individual names.
 *
 * @category Attributes
 * @param names - Names to split.
 * @returns - Split names.
 */function splitNames(names){return names?names.trim().split(rspace):[]}
/**
 * Method for removing attributes by `name`.
 *
 * @category Attributes
 * @example
 *
 * ```js
 * $('.pear').removeAttr('class').html();
 * //=> <li>Pear</li>
 *
 * $('.apple').attr('id', 'favorite');
 * $('.apple').removeAttr('id class').html();
 * //=> <li>Apple</li>
 * ```
 *
 * @param name - Name of the attribute.
 * @returns The instance itself.
 * @see {@link https://api.jquery.com/removeAttr/}
 */function removeAttr(name){const attrNames=splitNames(name);for(const attrName of attrNames)(0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.domEach)(this,(elem=>{if((0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(elem))removeAttribute(elem,attrName)}));return this}
/**
 * Check to see if _any_ of the matched elements have the given `className`.
 *
 * @category Attributes
 * @example
 *
 * ```js
 * $('.pear').hasClass('pear');
 * //=> true
 *
 * $('apple').hasClass('fruit');
 * //=> false
 *
 * $('li').hasClass('pear');
 * //=> true
 * ```
 *
 * @param className - Name of the class.
 * @returns Indicates if an element has the given `className`.
 * @see {@link https://api.jquery.com/hasClass/}
 */function hasClass(className){return this.toArray().some((elem=>{const clazz=(0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(elem)&&elem.attribs["class"];let idx=-1;if(clazz&&className.length>0)while((idx=clazz.indexOf(className,idx+1))>-1){const end=idx+className.length;if((idx===0||rspace.test(clazz[idx-1]))&&(end===clazz.length||rspace.test(clazz[end])))return true}return false}))}
/**
 * Adds class(es) to all of the matched elements. Also accepts a `function`.
 *
 * @category Attributes
 * @example
 *
 * ```js
 * $('.pear').addClass('fruit').html();
 * //=> <li class="pear fruit">Pear</li>
 *
 * $('.apple').addClass('fruit red').html();
 * //=> <li class="apple fruit red">Apple</li>
 * ```
 *
 * @param value - Name of new class.
 * @returns The instance itself.
 * @see {@link https://api.jquery.com/addClass/}
 */function addClass(value){
// Support functions
if(typeof value==="function")return(0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.domEach)(this,((el,i)=>{if((0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(el)){const className=el.attribs["class"]||"";addClass.call([el],value.call(el,i,className))}}));
// Return if no value or not a string or function
if(!value||typeof value!=="string")return this;const classNames=value.split(rspace);const numElements=this.length;for(let i=0;i<numElements;i++){const el=this[i];
// If selected element isn't a tag, move on
if(!(0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(el))continue;
// If we don't already have classes — always set xmlMode to false here, as it doesn't matter for classes
const className=getAttr(el,"class",false);if(className){let setClass=` ${className} `;
// Check if class already exists
for(const cn of classNames){const appendClass=`${cn} `;if(!setClass.includes(` ${appendClass}`))setClass+=appendClass}setAttr(el,"class",setClass.trim())}else setAttr(el,"class",classNames.join(" ").trim())}return this}
/**
 * Removes one or more space-separated classes from the selected elements. If no
 * `className` is defined, all classes will be removed. Also accepts a
 * `function`.
 *
 * @category Attributes
 * @example
 *
 * ```js
 * $('.pear').removeClass('pear').html();
 * //=> <li class="">Pear</li>
 *
 * $('.apple').addClass('red').removeClass().html();
 * //=> <li class="">Apple</li>
 * ```
 *
 * @param name - Name of the class. If not specified, removes all elements.
 * @returns The instance itself.
 * @see {@link https://api.jquery.com/removeClass/}
 */function removeClass(name){
// Handle if value is a function
if(typeof name==="function")return(0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.domEach)(this,((el,i)=>{if((0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(el))removeClass.call([el],name.call(el,i,el.attribs["class"]||""))}));const classes=splitNames(name);const numClasses=classes.length;const removeAll=arguments.length===0;return(0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.domEach)(this,(el=>{if(!(0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(el))return;if(removeAll)
// Short circuit the remove all case as this is the nice one
el.attribs["class"]="";else{const elClasses=splitNames(el.attribs["class"]);let changed=false;for(let j=0;j<numClasses;j++){const index=elClasses.indexOf(classes[j]);if(index>=0){elClasses.splice(index,1);changed=true;
/*
                     * We have to do another pass to ensure that there are not duplicate
                     * classes listed
                     */j--}}if(changed)el.attribs["class"]=elClasses.join(" ")}}))}
/**
 * Add or remove class(es) from the matched elements, depending on either the
 * class's presence or the value of the switch argument. Also accepts a
 * `function`.
 *
 * @category Attributes
 * @example
 *
 * ```js
 * $('.apple.green').toggleClass('fruit green red').html();
 * //=> <li class="apple fruit red">Apple</li>
 *
 * $('.apple.green').toggleClass('fruit green red', true).html();
 * //=> <li class="apple green fruit red">Apple</li>
 * ```
 *
 * @param value - Name of the class. Can also be a function.
 * @param stateVal - If specified the state of the class.
 * @returns The instance itself.
 * @see {@link https://api.jquery.com/toggleClass/}
 */function toggleClass(value,stateVal){
// Support functions
if(typeof value==="function")return(0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.domEach)(this,((el,i)=>{if((0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(el))toggleClass.call([el],value.call(el,i,el.attribs["class"]||"",stateVal),stateVal)}));
// Return if no value or not a string or function
if(!value||typeof value!=="string")return this;const classNames=value.split(rspace);const numClasses=classNames.length;const state=typeof stateVal==="boolean"?stateVal?1:-1:0;const numElements=this.length;for(let i=0;i<numElements;i++){const el=this[i];
// If selected element isn't a tag, move on
if(!(0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(el))continue;const elementClasses=splitNames(el.attribs["class"]);
// Check if class already exists
for(let j=0;j<numClasses;j++){
// Check if the class name is currently defined
const index=elementClasses.indexOf(classNames[j]);
// Add if stateValue === true or we are toggling and there is no value
if(state>=0&&index<0)elementClasses.push(classNames[j]);else if(state<=0&&index>=0)
// Otherwise remove but only if the item exists
elementClasses.splice(index,1)}el.attribs["class"]=elementClasses.join(" ")}return this}
//# sourceMappingURL=attributes.js.map
/***/},
/***/"./node_modules/cheerio/dist/browser/api/css.js":
/*!******************************************************!*\
  !*** ./node_modules/cheerio/dist/browser/api/css.js ***!
  \******************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */css:()=>/* binding */css
/* harmony export */});
/* harmony import */var _utils_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ../utils.js */"./node_modules/cheerio/dist/browser/utils.js");
/* harmony import */var domhandler__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! domhandler */"./node_modules/domhandler/lib/esm/index.js");
/**
 * Set multiple CSS properties for every matched element.
 *
 * @category CSS
 * @param prop - The names of the properties.
 * @param val - The new values.
 * @returns The instance itself.
 * @see {@link https://api.jquery.com/css/}
 */function css(prop,val){if(prop!=null&&val!=null||
// When `prop` is a "plain" object
typeof prop==="object"&&!Array.isArray(prop))return(0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.domEach)(this,((el,i)=>{if((0,domhandler__WEBPACK_IMPORTED_MODULE_1__.isTag)(el))
// `prop` can't be an array here anymore.
setCss(el,prop,val,i)}));if(this.length===0)return;return getCss(this[0],prop)}
/**
 * Set styles of all elements.
 *
 * @private
 * @param el - Element to set style of.
 * @param prop - Name of property.
 * @param value - Value to set property to.
 * @param idx - Optional index within the selection.
 */function setCss(el,prop,value,idx){if(typeof prop==="string"){const styles=getCss(el);const val=typeof value==="function"?value.call(el,idx,styles[prop]):value;if(val==="")delete styles[prop];else if(val!=null)styles[prop]=val;el.attribs["style"]=stringify(styles)}else if(typeof prop==="object"){const keys=Object.keys(prop);for(let i=0;i<keys.length;i++){const k=keys[i];setCss(el,k,prop[k],i)}}}function getCss(el,prop){if(!el||!(0,domhandler__WEBPACK_IMPORTED_MODULE_1__.isTag)(el))return;const styles=parse(el.attribs["style"]);if(typeof prop==="string")return styles[prop];if(Array.isArray(prop)){const newStyles={};for(const item of prop)if(styles[item]!=null)newStyles[item]=styles[item];return newStyles}return styles}
/**
 * Stringify `obj` to styles.
 *
 * @private
 * @category CSS
 * @param obj - Object to stringify.
 * @returns The serialized styles.
 */function stringify(obj){return Object.keys(obj).reduce(((str,prop)=>`${str}${str?" ":""}${prop}: ${obj[prop]};`),"")}
/**
 * Parse `styles`.
 *
 * @private
 * @category CSS
 * @param styles - Styles to be parsed.
 * @returns The parsed styles.
 */function parse(styles){styles=(styles||"").trim();if(!styles)return{};const obj={};let key;for(const str of styles.split(";")){const n=str.indexOf(":");
// If there is no :, or if it is the first/last character, add to the previous item's value
if(n<1||n===str.length-1){const trimmed=str.trimEnd();if(trimmed.length>0&&key!==void 0)obj[key]+=`;${trimmed}`}else{key=str.slice(0,n).trim();obj[key]=str.slice(n+1).trim()}}return obj}
//# sourceMappingURL=css.js.map
/***/},
/***/"./node_modules/cheerio/dist/browser/api/extract.js":
/*!**********************************************************!*\
  !*** ./node_modules/cheerio/dist/browser/api/extract.js ***!
  \**********************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */extract:()=>/* binding */extract
/* harmony export */});function getExtractDescr(descr){var _a;if(typeof descr==="string")return{selector:descr,value:"textContent"};return{selector:descr.selector,value:(_a=descr.value)!==null&&_a!==void 0?_a:"textContent"}}
/**
 * Extract multiple values from a document, and store them in an object.
 *
 * @param map - An object containing key-value pairs. The keys are the names of
 *   the properties to be created on the object, and the values are the
 *   selectors to be used to extract the values.
 * @returns An object containing the extracted values.
 */function extract(map){const ret={};for(const key in map){const descr=map[key];const isArray=Array.isArray(descr);const{selector,value}=getExtractDescr(isArray?descr[0]:descr);const fn=typeof value==="function"?value:typeof value==="string"?el=>this._make(el).prop(value):el=>this._make(el).extract(value);if(isArray)ret[key]=this._findBySelector(selector,Number.POSITIVE_INFINITY).map(((_,el)=>fn(el,key,ret))).get();else{const $=this._findBySelector(selector,1);ret[key]=$.length>0?fn($[0],key,ret):void 0}}return ret}
//# sourceMappingURL=extract.js.map
/***/},
/***/"./node_modules/cheerio/dist/browser/api/forms.js":
/*!********************************************************!*\
  !*** ./node_modules/cheerio/dist/browser/api/forms.js ***!
  \********************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */serialize:()=>/* binding */serialize
/* harmony export */,serializeArray:()=>/* binding */serializeArray
/* harmony export */});
/* harmony import */var domhandler__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! domhandler */"./node_modules/domhandler/lib/esm/index.js");
/*
 * https://github.com/jquery/jquery/blob/2.1.3/src/manipulation/var/rcheckableType.js
 * https://github.com/jquery/jquery/blob/2.1.3/src/serialize.js
 */const submittableSelector="input,select,textarea,keygen";const r20=/%20/g;const rCRLF=/\r?\n/g;
/**
 * Encode a set of form elements as a string for submission.
 *
 * @category Forms
 * @example
 *
 * ```js
 * $('<form><input name="foo" value="bar" /></form>').serialize();
 * //=> 'foo=bar'
 * ```
 *
 * @returns The serialized form.
 * @see {@link https://api.jquery.com/serialize/}
 */function serialize(){
// Convert form elements into name/value objects
const arr=this.serializeArray();
// Serialize each element into a key/value string
const retArr=arr.map((data=>`${encodeURIComponent(data.name)}=${encodeURIComponent(data.value)}`));
// Return the resulting serialization
return retArr.join("&").replace(r20,"+")}
/**
 * Encode a set of form elements as an array of names and values.
 *
 * @category Forms
 * @example
 *
 * ```js
 * $('<form><input name="foo" value="bar" /></form>').serializeArray();
 * //=> [ { name: 'foo', value: 'bar' } ]
 * ```
 *
 * @returns The serialized form.
 * @see {@link https://api.jquery.com/serializeArray/}
 */function serializeArray(){
// Resolve all form elements from either forms or collections of form elements
return this.map(((_,elem)=>{const $elem=this._make(elem);if((0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag)(elem)&&elem.name==="form")return $elem.find(submittableSelector).toArray();return $elem.filter(submittableSelector).toArray()})).filter(
// Verify elements have a name (`attr.name`) and are not disabled (`:enabled`)
'[name!=""]:enabled'+
// And cannot be clicked (`[type=submit]`) or are used in `x-www-form-urlencoded` (`[type=file]`)
":not(:submit, :button, :image, :reset, :file)"+
// And are either checked/don't have a checkable state
":matches([checked], :not(:checkbox, :radio))").map(((_,elem)=>{var _a;const $elem=this._make(elem);const name=$elem.attr("name");// We have filtered for elements with a name before.
// If there is no value set (e.g. `undefined`, `null`), then default value to empty
const value=(_a=$elem.val())!==null&&_a!==void 0?_a:"";
// If we have an array of values (e.g. `<select multiple>`), return an array of key/value pairs
if(Array.isArray(value))return value.map((val=>(
/*
             * We trim replace any line endings (e.g. `\r` or `\r\n` with `\r\n`) to guarantee consistency across platforms
             * These can occur inside of `<textarea>'s`
             */
{name,value:val.replace(rCRLF,"\r\n")})));
// Otherwise (e.g. `<input type="text">`, return only one key/value pair
return{name,value:value.replace(rCRLF,"\r\n")}})).toArray()}
//# sourceMappingURL=forms.js.map
/***/},
/***/"./node_modules/cheerio/dist/browser/api/manipulation.js":
/*!***************************************************************!*\
  !*** ./node_modules/cheerio/dist/browser/api/manipulation.js ***!
  \***************************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */_makeDomArray:()=>/* binding */_makeDomArray
/* harmony export */,after:()=>/* binding */after
/* harmony export */,append:()=>/* binding */append
/* harmony export */,appendTo:()=>/* binding */appendTo
/* harmony export */,before:()=>/* binding */before
/* harmony export */,clone:()=>/* binding */clone
/* harmony export */,empty:()=>/* binding */empty
/* harmony export */,html:()=>/* binding */html
/* harmony export */,insertAfter:()=>/* binding */insertAfter
/* harmony export */,insertBefore:()=>/* binding */insertBefore
/* harmony export */,prepend:()=>/* binding */prepend
/* harmony export */,prependTo:()=>/* binding */prependTo
/* harmony export */,remove:()=>/* binding */remove
/* harmony export */,replaceWith:()=>/* binding */replaceWith
/* harmony export */,text:()=>/* binding */text
/* harmony export */,toString:()=>/* binding */toString
/* harmony export */,unwrap:()=>/* binding */unwrap
/* harmony export */,wrap:()=>/* binding */wrap
/* harmony export */,wrapAll:()=>/* binding */wrapAll
/* harmony export */,wrapInner:()=>/* binding */wrapInner
/* harmony export */});
/* harmony import */var domhandler__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! domhandler */"./node_modules/domhandler/lib/esm/index.js");
/* harmony import */var _parse_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ../parse.js */"./node_modules/cheerio/dist/browser/parse.js");
/* harmony import */var _static_js__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! ../static.js */"./node_modules/cheerio/dist/browser/static.js");
/* harmony import */var _utils_js__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(/*! ../utils.js */"./node_modules/cheerio/dist/browser/utils.js");
/* harmony import */var domutils__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(/*! domutils */"./node_modules/domutils/lib/esm/index.js");
/**
 * Methods for modifying the DOM structure.
 *
 * @module cheerio/manipulation
 */
/**
 * Create an array of nodes, recursing into arrays and parsing strings if
 * necessary.
 *
 * @private
 * @category Manipulation
 * @param elem - Elements to make an array of.
 * @param clone - Optionally clone nodes.
 * @returns The array of nodes.
 */function _makeDomArray(elem,clone){if(elem==null)return[];if(typeof elem==="string")return this._parse(elem,this.options,false,null).children.slice(0);if("length"in elem){if(elem.length===1)return this._makeDomArray(elem[0],clone);const result=[];for(let i=0;i<elem.length;i++){const el=elem[i];if(typeof el==="object"){if(el==null)continue;if(!("length"in el)){result.push(clone?(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.cloneNode)(el,true):el);continue}}result.push(...this._makeDomArray(el,clone))}return result}return[clone?(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.cloneNode)(elem,true):elem]}function _insert(concatenator){return function(...elems){const lastIdx=this.length-1;return(0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.domEach)(this,((el,i)=>{if(!(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(el))return;const domSrc=typeof elems[0]==="function"?elems[0].call(el,i,this._render(el.children)):elems;const dom=this._makeDomArray(domSrc,i<lastIdx);concatenator(dom,el.children,el)}))}}
/**
 * Modify an array in-place, removing some number of elements and adding new
 * elements directly following them.
 *
 * @private
 * @category Manipulation
 * @param array - Target array to splice.
 * @param spliceIdx - Index at which to begin changing the array.
 * @param spliceCount - Number of elements to remove from the array.
 * @param newElems - Elements to insert into the array.
 * @param parent - The parent of the node.
 * @returns The spliced array.
 */function uniqueSplice(array,spliceIdx,spliceCount,newElems,parent){var _a,_b;const spliceArgs=[spliceIdx,spliceCount,...newElems];const prev=spliceIdx===0?null:array[spliceIdx-1];const next=spliceIdx+spliceCount>=array.length?null:array[spliceIdx+spliceCount];
/*
     * Before splicing in new elements, ensure they do not already appear in the
     * current array.
     */for(let idx=0;idx<newElems.length;++idx){const node=newElems[idx];const oldParent=node.parent;if(oldParent){const oldSiblings=oldParent.children;const prevIdx=oldSiblings.indexOf(node);if(prevIdx>-1){oldParent.children.splice(prevIdx,1);if(parent===oldParent&&spliceIdx>prevIdx)spliceArgs[0]--}}node.parent=parent;if(node.prev)node.prev.next=(_a=node.next)!==null&&_a!==void 0?_a:null;if(node.next)node.next.prev=(_b=node.prev)!==null&&_b!==void 0?_b:null;node.prev=idx===0?prev:newElems[idx-1];node.next=idx===newElems.length-1?next:newElems[idx+1]}if(prev)prev.next=newElems[0];if(next)next.prev=newElems[newElems.length-1];return array.splice(...spliceArgs)}
/**
 * Insert every element in the set of matched elements to the end of the target.
 *
 * @category Manipulation
 * @example
 *
 * ```js
 * $('<li class="plum">Plum</li>').appendTo('#fruits');
 * $.html();
 * //=>  <ul id="fruits">
 * //      <li class="apple">Apple</li>
 * //      <li class="orange">Orange</li>
 * //      <li class="pear">Pear</li>
 * //      <li class="plum">Plum</li>
 * //    </ul>
 * ```
 *
 * @param target - Element to append elements to.
 * @returns The instance itself.
 * @see {@link https://api.jquery.com/appendTo/}
 */function appendTo(target){const appendTarget=(0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.isCheerio)(target)?target:this._make(target);appendTarget.append(this);return this}
/**
 * Insert every element in the set of matched elements to the beginning of the
 * target.
 *
 * @category Manipulation
 * @example
 *
 * ```js
 * $('<li class="plum">Plum</li>').prependTo('#fruits');
 * $.html();
 * //=>  <ul id="fruits">
 * //      <li class="plum">Plum</li>
 * //      <li class="apple">Apple</li>
 * //      <li class="orange">Orange</li>
 * //      <li class="pear">Pear</li>
 * //    </ul>
 * ```
 *
 * @param target - Element to prepend elements to.
 * @returns The instance itself.
 * @see {@link https://api.jquery.com/prependTo/}
 */function prependTo(target){const prependTarget=(0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.isCheerio)(target)?target:this._make(target);prependTarget.prepend(this);return this}
/**
 * Inserts content as the _last_ child of each of the selected elements.
 *
 * @category Manipulation
 * @example
 *
 * ```js
 * $('ul').append('<li class="plum">Plum</li>');
 * $.html();
 * //=>  <ul id="fruits">
 * //      <li class="apple">Apple</li>
 * //      <li class="orange">Orange</li>
 * //      <li class="pear">Pear</li>
 * //      <li class="plum">Plum</li>
 * //    </ul>
 * ```
 *
 * @see {@link https://api.jquery.com/append/}
 */const append=_insert(((dom,children,parent)=>{uniqueSplice(children,children.length,0,dom,parent)}));
/**
 * Inserts content as the _first_ child of each of the selected elements.
 *
 * @category Manipulation
 * @example
 *
 * ```js
 * $('ul').prepend('<li class="plum">Plum</li>');
 * $.html();
 * //=>  <ul id="fruits">
 * //      <li class="plum">Plum</li>
 * //      <li class="apple">Apple</li>
 * //      <li class="orange">Orange</li>
 * //      <li class="pear">Pear</li>
 * //    </ul>
 * ```
 *
 * @see {@link https://api.jquery.com/prepend/}
 */const prepend=_insert(((dom,children,parent)=>{uniqueSplice(children,0,0,dom,parent)}));function _wrap(insert){return function(wrapper){const lastIdx=this.length-1;const lastParent=this.parents().last();for(let i=0;i<this.length;i++){const el=this[i];const wrap=typeof wrapper==="function"?wrapper.call(el,i,el):typeof wrapper==="string"&&!(0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.isHtml)(wrapper)?lastParent.find(wrapper).clone():wrapper;const[wrapperDom]=this._makeDomArray(wrap,i<lastIdx);if(!wrapperDom||!(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(wrapperDom))continue;let elInsertLocation=wrapperDom;
/*
             * Find the deepest child. Only consider the first tag child of each node
             * (ignore text); stop if no children are found.
             */let j=0;while(j<elInsertLocation.children.length){const child=elInsertLocation.children[j];if((0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag)(child)){elInsertLocation=child;j=0}else j++}insert(el,elInsertLocation,[wrapperDom])}return this}}
/**
 * The .wrap() function can take any string or object that could be passed to
 * the $() factory function to specify a DOM structure. This structure may be
 * nested several levels deep, but should contain only one inmost element. A
 * copy of this structure will be wrapped around each of the elements in the set
 * of matched elements. This method returns the original set of elements for
 * chaining purposes.
 *
 * @category Manipulation
 * @example
 *
 * ```js
 * const redFruit = $('<div class="red-fruit"></div>');
 * $('.apple').wrap(redFruit);
 *
 * //=> <ul id="fruits">
 * //     <div class="red-fruit">
 * //      <li class="apple">Apple</li>
 * //     </div>
 * //     <li class="orange">Orange</li>
 * //     <li class="plum">Plum</li>
 * //   </ul>
 *
 * const healthy = $('<div class="healthy"></div>');
 * $('li').wrap(healthy);
 *
 * //=> <ul id="fruits">
 * //     <div class="healthy">
 * //       <li class="apple">Apple</li>
 * //     </div>
 * //     <div class="healthy">
 * //       <li class="orange">Orange</li>
 * //     </div>
 * //     <div class="healthy">
 * //        <li class="plum">Plum</li>
 * //     </div>
 * //   </ul>
 * ```
 *
 * @param wrapper - The DOM structure to wrap around each element in the
 *   selection.
 * @see {@link https://api.jquery.com/wrap/}
 */const wrap=_wrap(((el,elInsertLocation,wrapperDom)=>{const{parent}=el;if(!parent)return;const siblings=parent.children;const index=siblings.indexOf(el);(0,_parse_js__WEBPACK_IMPORTED_MODULE_1__.update)([el],elInsertLocation);
/*
     * The previous operation removed the current element from the `siblings`
     * array, so the `dom` array can be inserted without removing any
     * additional elements.
     */uniqueSplice(siblings,index,0,wrapperDom,parent)}));
/**
 * The .wrapInner() function can take any string or object that could be passed
 * to the $() factory function to specify a DOM structure. This structure may be
 * nested several levels deep, but should contain only one inmost element. The
 * structure will be wrapped around the content of each of the elements in the
 * set of matched elements.
 *
 * @category Manipulation
 * @example
 *
 * ```js
 * const redFruit = $('<div class="red-fruit"></div>');
 * $('.apple').wrapInner(redFruit);
 *
 * //=> <ul id="fruits">
 * //     <li class="apple">
 * //       <div class="red-fruit">Apple</div>
 * //     </li>
 * //     <li class="orange">Orange</li>
 * //     <li class="pear">Pear</li>
 * //   </ul>
 *
 * const healthy = $('<div class="healthy"></div>');
 * $('li').wrapInner(healthy);
 *
 * //=> <ul id="fruits">
 * //     <li class="apple">
 * //       <div class="healthy">Apple</div>
 * //     </li>
 * //     <li class="orange">
 * //       <div class="healthy">Orange</div>
 * //     </li>
 * //     <li class="pear">
 * //       <div class="healthy">Pear</div>
 * //     </li>
 * //   </ul>
 * ```
 *
 * @param wrapper - The DOM structure to wrap around the content of each element
 *   in the selection.
 * @returns The instance itself, for chaining.
 * @see {@link https://api.jquery.com/wrapInner/}
 */const wrapInner=_wrap(((el,elInsertLocation,wrapperDom)=>{if(!(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(el))return;(0,_parse_js__WEBPACK_IMPORTED_MODULE_1__.update)(el.children,elInsertLocation);(0,_parse_js__WEBPACK_IMPORTED_MODULE_1__.update)(wrapperDom,el)}));
/**
 * The .unwrap() function, removes the parents of the set of matched elements
 * from the DOM, leaving the matched elements in their place.
 *
 * @category Manipulation
 * @example <caption>without selector</caption>
 *
 * ```js
 * const $ = cheerio.load(
 *   '<div id=test>\n  <div><p>Hello</p></div>\n  <div><p>World</p></div>\n</div>',
 * );
 * $('#test p').unwrap();
 *
 * //=> <div id=test>
 * //     <p>Hello</p>
 * //     <p>World</p>
 * //   </div>
 * ```
 *
 * @example <caption>with selector</caption>
 *
 * ```js
 * const $ = cheerio.load(
 *   '<div id=test>\n  <p>Hello</p>\n  <b><p>World</p></b>\n</div>',
 * );
 * $('#test p').unwrap('b');
 *
 * //=> <div id=test>
 * //     <p>Hello</p>
 * //     <p>World</p>
 * //   </div>
 * ```
 *
 * @param selector - A selector to check the parent element against. If an
 *   element's parent does not match the selector, the element won't be
 *   unwrapped.
 * @returns The instance itself, for chaining.
 * @see {@link https://api.jquery.com/unwrap/}
 */function unwrap(selector){this.parent(selector).not("body").each(((_,el)=>{this._make(el).replaceWith(el.children)}));return this}
/**
 * The .wrapAll() function can take any string or object that could be passed to
 * the $() function to specify a DOM structure. This structure may be nested
 * several levels deep, but should contain only one inmost element. The
 * structure will be wrapped around all of the elements in the set of matched
 * elements, as a single group.
 *
 * @category Manipulation
 * @example <caption>With markup passed to `wrapAll`</caption>
 *
 * ```js
 * const $ = cheerio.load(
 *   '<div class="container"><div class="inner">First</div><div class="inner">Second</div></div>',
 * );
 * $('.inner').wrapAll("<div class='new'></div>");
 *
 * //=> <div class="container">
 * //     <div class='new'>
 * //       <div class="inner">First</div>
 * //       <div class="inner">Second</div>
 * //     </div>
 * //   </div>
 * ```
 *
 * @example <caption>With an existing cheerio instance</caption>
 *
 * ```js
 * const $ = cheerio.load(
 *   '<span>Span 1</span><strong>Strong</strong><span>Span 2</span>',
 * );
 * const wrap = $('<div><p><em><b></b></em></p></div>');
 * $('span').wrapAll(wrap);
 *
 * //=> <div>
 * //     <p>
 * //       <em>
 * //         <b>
 * //           <span>Span 1</span>
 * //           <span>Span 2</span>
 * //         </b>
 * //       </em>
 * //     </p>
 * //   </div>
 * //   <strong>Strong</strong>
 * ```
 *
 * @param wrapper - The DOM structure to wrap around all matched elements in the
 *   selection.
 * @returns The instance itself.
 * @see {@link https://api.jquery.com/wrapAll/}
 */function wrapAll(wrapper){const el=this[0];if(el){const wrap=this._make(typeof wrapper==="function"?wrapper.call(el,0,el):wrapper).insertBefore(el);
// If html is given as wrapper, wrap may contain text elements
let elInsertLocation;for(let i=0;i<wrap.length;i++)if(wrap[i].type==="tag")elInsertLocation=wrap[i];let j=0;
/*
         * Find the deepest child. Only consider the first tag child of each node
         * (ignore text); stop if no children are found.
         */while(elInsertLocation&&j<elInsertLocation.children.length){const child=elInsertLocation.children[j];if(child.type==="tag"){elInsertLocation=child;j=0}else j++}if(elInsertLocation)this._make(elInsertLocation).append(this)}return this}
/**
 * Insert content next to each element in the set of matched elements.
 *
 * @category Manipulation
 * @example
 *
 * ```js
 * $('.apple').after('<li class="plum">Plum</li>');
 * $.html();
 * //=>  <ul id="fruits">
 * //      <li class="apple">Apple</li>
 * //      <li class="plum">Plum</li>
 * //      <li class="orange">Orange</li>
 * //      <li class="pear">Pear</li>
 * //    </ul>
 * ```
 *
 * @param elems - HTML string, DOM element, array of DOM elements or Cheerio to
 *   insert after each element in the set of matched elements.
 * @returns The instance itself.
 * @see {@link https://api.jquery.com/after/}
 */function after(...elems){const lastIdx=this.length-1;return(0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.domEach)(this,((el,i)=>{if(!(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(el)||!el.parent)return;const siblings=el.parent.children;const index=siblings.indexOf(el);
// If not found, move on
/* istanbul ignore next */if(index<0)return;const domSrc=typeof elems[0]==="function"?elems[0].call(el,i,this._render(el.children)):elems;const dom=this._makeDomArray(domSrc,i<lastIdx);
// Add element after `this` element
uniqueSplice(siblings,index+1,0,dom,el.parent)}))}
/**
 * Insert every element in the set of matched elements after the target.
 *
 * @category Manipulation
 * @example
 *
 * ```js
 * $('<li class="plum">Plum</li>').insertAfter('.apple');
 * $.html();
 * //=>  <ul id="fruits">
 * //      <li class="apple">Apple</li>
 * //      <li class="plum">Plum</li>
 * //      <li class="orange">Orange</li>
 * //      <li class="pear">Pear</li>
 * //    </ul>
 * ```
 *
 * @param target - Element to insert elements after.
 * @returns The set of newly inserted elements.
 * @see {@link https://api.jquery.com/insertAfter/}
 */function insertAfter(target){if(typeof target==="string")target=this._make(target);this.remove();const clones=[];for(const el of this._makeDomArray(target)){const clonedSelf=this.clone().toArray();const{parent}=el;if(!parent)continue;const siblings=parent.children;const index=siblings.indexOf(el);
// If not found, move on
/* istanbul ignore next */if(index<0)continue;
// Add cloned `this` element(s) after target element
uniqueSplice(siblings,index+1,0,clonedSelf,parent);clones.push(...clonedSelf)}return this._make(clones)}
/**
 * Insert content previous to each element in the set of matched elements.
 *
 * @category Manipulation
 * @example
 *
 * ```js
 * $('.apple').before('<li class="plum">Plum</li>');
 * $.html();
 * //=>  <ul id="fruits">
 * //      <li class="plum">Plum</li>
 * //      <li class="apple">Apple</li>
 * //      <li class="orange">Orange</li>
 * //      <li class="pear">Pear</li>
 * //    </ul>
 * ```
 *
 * @param elems - HTML string, DOM element, array of DOM elements or Cheerio to
 *   insert before each element in the set of matched elements.
 * @returns The instance itself.
 * @see {@link https://api.jquery.com/before/}
 */function before(...elems){const lastIdx=this.length-1;return(0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.domEach)(this,((el,i)=>{if(!(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(el)||!el.parent)return;const siblings=el.parent.children;const index=siblings.indexOf(el);
// If not found, move on
/* istanbul ignore next */if(index<0)return;const domSrc=typeof elems[0]==="function"?elems[0].call(el,i,this._render(el.children)):elems;const dom=this._makeDomArray(domSrc,i<lastIdx);
// Add element before `el` element
uniqueSplice(siblings,index,0,dom,el.parent)}))}
/**
 * Insert every element in the set of matched elements before the target.
 *
 * @category Manipulation
 * @example
 *
 * ```js
 * $('<li class="plum">Plum</li>').insertBefore('.apple');
 * $.html();
 * //=>  <ul id="fruits">
 * //      <li class="plum">Plum</li>
 * //      <li class="apple">Apple</li>
 * //      <li class="orange">Orange</li>
 * //      <li class="pear">Pear</li>
 * //    </ul>
 * ```
 *
 * @param target - Element to insert elements before.
 * @returns The set of newly inserted elements.
 * @see {@link https://api.jquery.com/insertBefore/}
 */function insertBefore(target){const targetArr=this._make(target);this.remove();const clones=[];(0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.domEach)(targetArr,(el=>{const clonedSelf=this.clone().toArray();const{parent}=el;if(!parent)return;const siblings=parent.children;const index=siblings.indexOf(el);
// If not found, move on
/* istanbul ignore next */if(index<0)return;
// Add cloned `this` element(s) after target element
uniqueSplice(siblings,index,0,clonedSelf,parent);clones.push(...clonedSelf)}));return this._make(clones)}
/**
 * Removes the set of matched elements from the DOM and all their children.
 * `selector` filters the set of matched elements to be removed.
 *
 * @category Manipulation
 * @example
 *
 * ```js
 * $('.pear').remove();
 * $.html();
 * //=>  <ul id="fruits">
 * //      <li class="apple">Apple</li>
 * //      <li class="orange">Orange</li>
 * //    </ul>
 * ```
 *
 * @param selector - Optional selector for elements to remove.
 * @returns The instance itself.
 * @see {@link https://api.jquery.com/remove/}
 */function remove(selector){
// Filter if we have selector
const elems=selector?this.filter(selector):this;(0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.domEach)(elems,(el=>{(0,domutils__WEBPACK_IMPORTED_MODULE_4__.removeElement)(el);el.prev=el.next=el.parent=null}));return this}
/**
 * Replaces matched elements with `content`.
 *
 * @category Manipulation
 * @example
 *
 * ```js
 * const plum = $('<li class="plum">Plum</li>');
 * $('.pear').replaceWith(plum);
 * $.html();
 * //=> <ul id="fruits">
 * //     <li class="apple">Apple</li>
 * //     <li class="orange">Orange</li>
 * //     <li class="plum">Plum</li>
 * //   </ul>
 * ```
 *
 * @param content - Replacement for matched elements.
 * @returns The instance itself.
 * @see {@link https://api.jquery.com/replaceWith/}
 */function replaceWith(content){return(0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.domEach)(this,((el,i)=>{const{parent}=el;if(!parent)return;const siblings=parent.children;const cont=typeof content==="function"?content.call(el,i,el):content;const dom=this._makeDomArray(cont);
/*
         * In the case that `dom` contains nodes that already exist in other
         * structures, ensure those nodes are properly removed.
         */(0,_parse_js__WEBPACK_IMPORTED_MODULE_1__.update)(dom,null);const index=siblings.indexOf(el);
// Completely remove old element
uniqueSplice(siblings,index,1,dom,parent);if(!dom.includes(el))el.parent=el.prev=el.next=null}))}
/**
 * Removes all children from each item in the selection. Text nodes and comment
 * nodes are left as is.
 *
 * @category Manipulation
 * @example
 *
 * ```js
 * $('ul').empty();
 * $.html();
 * //=>  <ul id="fruits"></ul>
 * ```
 *
 * @returns The instance itself.
 * @see {@link https://api.jquery.com/empty/}
 */function empty(){return(0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.domEach)(this,(el=>{if(!(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(el))return;for(const child of el.children)child.next=child.prev=child.parent=null;el.children.length=0}))}function html(str){if(str===void 0){const el=this[0];if(!el||!(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(el))return null;return this._render(el.children)}return(0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.domEach)(this,(el=>{if(!(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(el))return;for(const child of el.children)child.next=child.prev=child.parent=null;const content=(0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.isCheerio)(str)?str.toArray():this._parse(`${str}`,this.options,false,el).children;(0,_parse_js__WEBPACK_IMPORTED_MODULE_1__.update)(content,el)}))}
/**
 * Turns the collection to a string. Alias for `.html()`.
 *
 * @category Manipulation
 * @returns The rendered document.
 */function toString(){return this._render(this)}function text(str){
// If `str` is undefined, act as a "getter"
if(str===void 0)return(0,_static_js__WEBPACK_IMPORTED_MODULE_2__.text)(this);if(typeof str==="function")
// Function support
return(0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.domEach)(this,((el,i)=>this._make(el).text(str.call(el,i,(0,_static_js__WEBPACK_IMPORTED_MODULE_2__.text)([el])))));
// Append text node to each selected elements
return(0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.domEach)(this,(el=>{if(!(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(el))return;for(const child of el.children)child.next=child.prev=child.parent=null;const textNode=new domhandler__WEBPACK_IMPORTED_MODULE_0__.Text(`${str}`);(0,_parse_js__WEBPACK_IMPORTED_MODULE_1__.update)(textNode,el)}))}
/**
 * Clone the cheerio object.
 *
 * @category Manipulation
 * @example
 *
 * ```js
 * const moreFruit = $('#fruits').clone();
 * ```
 *
 * @returns The cloned object.
 * @see {@link https://api.jquery.com/clone/}
 */function clone(){const clone=Array.prototype.map.call(this.get(),(el=>(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.cloneNode)(el,true)));
// Add a root node around the cloned nodes
const root=new domhandler__WEBPACK_IMPORTED_MODULE_0__.Document(clone);for(const node of clone)node.parent=root;return this._make(clone)}
//# sourceMappingURL=manipulation.js.map
/***/},
/***/"./node_modules/cheerio/dist/browser/api/traversing.js":
/*!*************************************************************!*\
  !*** ./node_modules/cheerio/dist/browser/api/traversing.js ***!
  \*************************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */_findBySelector:()=>/* binding */_findBySelector
/* harmony export */,add:()=>/* binding */add
/* harmony export */,addBack:()=>/* binding */addBack
/* harmony export */,children:()=>/* binding */children
/* harmony export */,closest:()=>/* binding */closest
/* harmony export */,contents:()=>/* binding */contents
/* harmony export */,each:()=>/* binding */each
/* harmony export */,end:()=>/* binding */end
/* harmony export */,eq:()=>/* binding */eq
/* harmony export */,filter:()=>/* binding */filter
/* harmony export */,filterArray:()=>/* binding */filterArray
/* harmony export */,find:()=>/* binding */find
/* harmony export */,first:()=>/* binding */first
/* harmony export */,get:()=>/* binding */get
/* harmony export */,has:()=>/* binding */has
/* harmony export */,index:()=>/* binding */index
/* harmony export */,is:()=>/* binding */is
/* harmony export */,last:()=>/* binding */last
/* harmony export */,map:()=>/* binding */map
/* harmony export */,next:()=>/* binding */next
/* harmony export */,nextAll:()=>/* binding */nextAll
/* harmony export */,nextUntil:()=>/* binding */nextUntil
/* harmony export */,not:()=>/* binding */not
/* harmony export */,parent:()=>/* binding */parent
/* harmony export */,parents:()=>/* binding */parents
/* harmony export */,parentsUntil:()=>/* binding */parentsUntil
/* harmony export */,prev:()=>/* binding */prev
/* harmony export */,prevAll:()=>/* binding */prevAll
/* harmony export */,prevUntil:()=>/* binding */prevUntil
/* harmony export */,siblings:()=>/* binding */siblings
/* harmony export */,slice:()=>/* binding */slice
/* harmony export */,toArray:()=>/* binding */toArray
/* harmony export */});
/* harmony import */var domhandler__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! domhandler */"./node_modules/domhandler/lib/esm/index.js");
/* harmony import */var cheerio_select__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! cheerio-select */"./node_modules/cheerio-select/lib/esm/index.js");
/* harmony import */var _utils_js__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! ../utils.js */"./node_modules/cheerio/dist/browser/utils.js");
/* harmony import */var _static_js__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(/*! ../static.js */"./node_modules/cheerio/dist/browser/static.js");
/* harmony import */var domutils__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(/*! domutils */"./node_modules/domutils/lib/esm/index.js");
/**
 * Methods for traversing the DOM structure.
 *
 * @module cheerio/traversing
 */const reSiblingSelector=/^\s*[+~]/;
/**
 * Get the descendants of each element in the current set of matched elements,
 * filtered by a selector, jQuery object, or element.
 *
 * @category Traversing
 * @example
 *
 * ```js
 * $('#fruits').find('li').length;
 * //=> 3
 * $('#fruits').find($('.apple')).length;
 * //=> 1
 * ```
 *
 * @param selectorOrHaystack - Element to look for.
 * @returns The found elements.
 * @see {@link https://api.jquery.com/find/}
 */function find(selectorOrHaystack){if(!selectorOrHaystack)return this._make([]);if(typeof selectorOrHaystack!=="string"){const haystack=(0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.isCheerio)(selectorOrHaystack)?selectorOrHaystack.toArray():[selectorOrHaystack];const context=this.toArray();return this._make(haystack.filter((elem=>context.some((node=>(0,_static_js__WEBPACK_IMPORTED_MODULE_3__.contains)(node,elem))))))}return this._findBySelector(selectorOrHaystack,Number.POSITIVE_INFINITY)}
/**
 * Find elements by a specific selector.
 *
 * @private
 * @category Traversing
 * @param selector - Selector to filter by.
 * @param limit - Maximum number of elements to match.
 * @returns The found elements.
 */function _findBySelector(selector,limit){var _a;const context=this.toArray();const elems=reSiblingSelector.test(selector)?context:this.children().toArray();const options={context,root:(_a=this._root)===null||_a===void 0?void 0:_a[0],
// Pass options that are recognized by `cheerio-select`
xmlMode:this.options.xmlMode,lowerCaseTags:this.options.lowerCaseTags,lowerCaseAttributeNames:this.options.lowerCaseAttributeNames,pseudos:this.options.pseudos,quirksMode:this.options.quirksMode};return this._make(cheerio_select__WEBPACK_IMPORTED_MODULE_1__.select(selector,elems,options,limit))}
/**
 * Creates a matcher, using a particular mapping function. Matchers provide a
 * function that finds elements using a generating function, supporting
 * filtering.
 *
 * @private
 * @param matchMap - Mapping function.
 * @returns - Function for wrapping generating functions.
 */function _getMatcher(matchMap){return function(fn,...postFns){return function(selector){var _a;let matched=matchMap(fn,this);if(selector)matched=filterArray(matched,selector,this.options.xmlMode,(_a=this._root)===null||_a===void 0?void 0:_a[0]);return this._make(
// Post processing is only necessary if there is more than one element.
this.length>1&&matched.length>1?postFns.reduce(((elems,fn)=>fn(elems)),matched):matched)}}}
/** Matcher that adds multiple elements for each entry in the input. */const _matcher=_getMatcher(((fn,elems)=>{let ret=[];for(let i=0;i<elems.length;i++){const value=fn(elems[i]);if(value.length>0)ret=ret.concat(value)}return ret}));
/** Matcher that adds at most one element for each entry in the input. */const _singleMatcher=_getMatcher(((fn,elems)=>{const ret=[];for(let i=0;i<elems.length;i++){const value=fn(elems[i]);if(value!==null)ret.push(value)}return ret}));
/**
 * Matcher that supports traversing until a condition is met.
 *
 * @param nextElem - Function that returns the next element.
 * @param postFns - Post processing functions.
 * @returns A function usable for `*Until` methods.
 */function _matchUntil(nextElem,...postFns){
// We use a variable here that is used from within the matcher.
let matches=null;const innerMatcher=_getMatcher(((nextElem,elems)=>{const matched=[];(0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.domEach)(elems,(elem=>{for(let next;next=nextElem(elem);elem=next){
// FIXME: `matched` might contain duplicates here and the index is too large.
if(matches===null||matches===void 0?void 0:matches(next,matched.length))break;matched.push(next)}}));return matched}))(nextElem,...postFns);return function(selector,filterSelector){
// Override `matches` variable with the new target.
matches=typeof selector==="string"?elem=>cheerio_select__WEBPACK_IMPORTED_MODULE_1__.is(elem,selector,this.options):selector?getFilterFn(selector):null;const ret=innerMatcher.call(this,filterSelector);
// Set `matches` to `null`, so we don't waste memory.
matches=null;return ret}}function _removeDuplicates(elems){return elems.length>1?Array.from(new Set(elems)):elems}
/**
 * Get the parent of each element in the current set of matched elements,
 * optionally filtered by a selector.
 *
 * @category Traversing
 * @example
 *
 * ```js
 * $('.pear').parent().attr('id');
 * //=> fruits
 * ```
 *
 * @param selector - If specified filter for parent.
 * @returns The parents.
 * @see {@link https://api.jquery.com/parent/}
 */const parent=_singleMatcher((({parent})=>parent&&!(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isDocument)(parent)?parent:null),_removeDuplicates);
/**
 * Get a set of parents filtered by `selector` of each element in the current
 * set of match elements.
 *
 * @category Traversing
 * @example
 *
 * ```js
 * $('.orange').parents().length;
 * //=> 2
 * $('.orange').parents('#fruits').length;
 * //=> 1
 * ```
 *
 * @param selector - If specified filter for parents.
 * @returns The parents.
 * @see {@link https://api.jquery.com/parents/}
 */const parents=_matcher((elem=>{const matched=[];while(elem.parent&&!(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isDocument)(elem.parent)){matched.push(elem.parent);elem=elem.parent}return matched}),domutils__WEBPACK_IMPORTED_MODULE_4__.uniqueSort,(elems=>elems.reverse()));
/**
 * Get the ancestors of each element in the current set of matched elements, up
 * to but not including the element matched by the selector, DOM node, or
 * cheerio object.
 *
 * @category Traversing
 * @example
 *
 * ```js
 * $('.orange').parentsUntil('#food').length;
 * //=> 1
 * ```
 *
 * @param selector - Selector for element to stop at.
 * @param filterSelector - Optional filter for parents.
 * @returns The parents.
 * @see {@link https://api.jquery.com/parentsUntil/}
 */const parentsUntil=_matchUntil((({parent})=>parent&&!(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isDocument)(parent)?parent:null),domutils__WEBPACK_IMPORTED_MODULE_4__.uniqueSort,(elems=>elems.reverse()));
/**
 * For each element in the set, get the first element that matches the selector
 * by testing the element itself and traversing up through its ancestors in the
 * DOM tree.
 *
 * @category Traversing
 * @example
 *
 * ```js
 * $('.orange').closest();
 * //=> []
 *
 * $('.orange').closest('.apple');
 * // => []
 *
 * $('.orange').closest('li');
 * //=> [<li class="orange">Orange</li>]
 *
 * $('.orange').closest('#fruits');
 * //=> [<ul id="fruits"> ... </ul>]
 * ```
 *
 * @param selector - Selector for the element to find.
 * @returns The closest nodes.
 * @see {@link https://api.jquery.com/closest/}
 */function closest(selector){var _a;const set=[];if(!selector)return this._make(set);const selectOpts={xmlMode:this.options.xmlMode,root:(_a=this._root)===null||_a===void 0?void 0:_a[0]};const selectFn=typeof selector==="string"?elem=>cheerio_select__WEBPACK_IMPORTED_MODULE_1__.is(elem,selector,selectOpts):getFilterFn(selector);(0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.domEach)(this,(elem=>{if(elem&&!(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isDocument)(elem)&&!(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag)(elem))elem=elem.parent;while(elem&&(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag)(elem)){if(selectFn(elem,0)){
// Do not add duplicate elements to the set
if(!set.includes(elem))set.push(elem);break}elem=elem.parent}}));return this._make(set)}
/**
 * Gets the next sibling of each selected element, optionally filtered by a
 * selector.
 *
 * @category Traversing
 * @example
 *
 * ```js
 * $('.apple').next().hasClass('orange');
 * //=> true
 * ```
 *
 * @param selector - If specified filter for sibling.
 * @returns The next nodes.
 * @see {@link https://api.jquery.com/next/}
 */const next=_singleMatcher((elem=>(0,domutils__WEBPACK_IMPORTED_MODULE_4__.nextElementSibling)(elem)));
/**
 * Gets all the following siblings of the each selected element, optionally
 * filtered by a selector.
 *
 * @category Traversing
 * @example
 *
 * ```js
 * $('.apple').nextAll();
 * //=> [<li class="orange">Orange</li>, <li class="pear">Pear</li>]
 * $('.apple').nextAll('.orange');
 * //=> [<li class="orange">Orange</li>]
 * ```
 *
 * @param selector - If specified filter for siblings.
 * @returns The next nodes.
 * @see {@link https://api.jquery.com/nextAll/}
 */const nextAll=_matcher((elem=>{const matched=[];while(elem.next){elem=elem.next;if((0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag)(elem))matched.push(elem)}return matched}),_removeDuplicates);
/**
 * Gets all the following siblings up to but not including the element matched
 * by the selector, optionally filtered by another selector.
 *
 * @category Traversing
 * @example
 *
 * ```js
 * $('.apple').nextUntil('.pear');
 * //=> [<li class="orange">Orange</li>]
 * ```
 *
 * @param selector - Selector for element to stop at.
 * @param filterSelector - If specified filter for siblings.
 * @returns The next nodes.
 * @see {@link https://api.jquery.com/nextUntil/}
 */const nextUntil=_matchUntil((el=>(0,domutils__WEBPACK_IMPORTED_MODULE_4__.nextElementSibling)(el)),_removeDuplicates);
/**
 * Gets the previous sibling of each selected element optionally filtered by a
 * selector.
 *
 * @category Traversing
 * @example
 *
 * ```js
 * $('.orange').prev().hasClass('apple');
 * //=> true
 * ```
 *
 * @param selector - If specified filter for siblings.
 * @returns The previous nodes.
 * @see {@link https://api.jquery.com/prev/}
 */const prev=_singleMatcher((elem=>(0,domutils__WEBPACK_IMPORTED_MODULE_4__.prevElementSibling)(elem)));
/**
 * Gets all the preceding siblings of each selected element, optionally filtered
 * by a selector.
 *
 * @category Traversing
 * @example
 *
 * ```js
 * $('.pear').prevAll();
 * //=> [<li class="orange">Orange</li>, <li class="apple">Apple</li>]
 *
 * $('.pear').prevAll('.orange');
 * //=> [<li class="orange">Orange</li>]
 * ```
 *
 * @param selector - If specified filter for siblings.
 * @returns The previous nodes.
 * @see {@link https://api.jquery.com/prevAll/}
 */const prevAll=_matcher((elem=>{const matched=[];while(elem.prev){elem=elem.prev;if((0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag)(elem))matched.push(elem)}return matched}),_removeDuplicates);
/**
 * Gets all the preceding siblings up to but not including the element matched
 * by the selector, optionally filtered by another selector.
 *
 * @category Traversing
 * @example
 *
 * ```js
 * $('.pear').prevUntil('.apple');
 * //=> [<li class="orange">Orange</li>]
 * ```
 *
 * @param selector - Selector for element to stop at.
 * @param filterSelector - If specified filter for siblings.
 * @returns The previous nodes.
 * @see {@link https://api.jquery.com/prevUntil/}
 */const prevUntil=_matchUntil((el=>(0,domutils__WEBPACK_IMPORTED_MODULE_4__.prevElementSibling)(el)),_removeDuplicates);
/**
 * Get the siblings of each element (excluding the element) in the set of
 * matched elements, optionally filtered by a selector.
 *
 * @category Traversing
 * @example
 *
 * ```js
 * $('.pear').siblings().length;
 * //=> 2
 *
 * $('.pear').siblings('.orange').length;
 * //=> 1
 * ```
 *
 * @param selector - If specified filter for siblings.
 * @returns The siblings.
 * @see {@link https://api.jquery.com/siblings/}
 */const siblings=_matcher((elem=>(0,domutils__WEBPACK_IMPORTED_MODULE_4__.getSiblings)(elem).filter((el=>(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag)(el)&&el!==elem))),domutils__WEBPACK_IMPORTED_MODULE_4__.uniqueSort);
/**
 * Gets the element children of each element in the set of matched elements.
 *
 * @category Traversing
 * @example
 *
 * ```js
 * $('#fruits').children().length;
 * //=> 3
 *
 * $('#fruits').children('.pear').text();
 * //=> Pear
 * ```
 *
 * @param selector - If specified filter for children.
 * @returns The children.
 * @see {@link https://api.jquery.com/children/}
 */const children=_matcher((elem=>(0,domutils__WEBPACK_IMPORTED_MODULE_4__.getChildren)(elem).filter(domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag)),_removeDuplicates);
/**
 * Gets the children of each element in the set of matched elements, including
 * text and comment nodes.
 *
 * @category Traversing
 * @example
 *
 * ```js
 * $('#fruits').contents().length;
 * //=> 3
 * ```
 *
 * @returns The children.
 * @see {@link https://api.jquery.com/contents/}
 */function contents(){const elems=this.toArray().reduce(((newElems,elem)=>(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(elem)?newElems.concat(elem.children):newElems),[]);return this._make(elems)}
/**
 * Iterates over a cheerio object, executing a function for each matched
 * element. When the callback is fired, the function is fired in the context of
 * the DOM element, so `this` refers to the current element, which is equivalent
 * to the function parameter `element`. To break out of the `each` loop early,
 * return with `false`.
 *
 * @category Traversing
 * @example
 *
 * ```js
 * const fruits = [];
 *
 * $('li').each(function (i, elem) {
 *   fruits[i] = $(this).text();
 * });
 *
 * fruits.join(', ');
 * //=> Apple, Orange, Pear
 * ```
 *
 * @param fn - Function to execute.
 * @returns The instance itself, useful for chaining.
 * @see {@link https://api.jquery.com/each/}
 */function each(fn){let i=0;const len=this.length;while(i<len&&fn.call(this[i],i,this[i])!==false)++i;return this}
/**
 * Pass each element in the current matched set through a function, producing a
 * new Cheerio object containing the return values. The function can return an
 * individual data item or an array of data items to be inserted into the
 * resulting set. If an array is returned, the elements inside the array are
 * inserted into the set. If the function returns null or undefined, no element
 * will be inserted.
 *
 * @category Traversing
 * @example
 *
 * ```js
 * $('li')
 *   .map(function (i, el) {
 *     // this === el
 *     return $(this).text();
 *   })
 *   .toArray()
 *   .join(' ');
 * //=> "apple orange pear"
 * ```
 *
 * @param fn - Function to execute.
 * @returns The mapped elements, wrapped in a Cheerio collection.
 * @see {@link https://api.jquery.com/map/}
 */function map(fn){let elems=[];for(let i=0;i<this.length;i++){const el=this[i];const val=fn.call(el,i,el);if(val!=null)elems=elems.concat(val)}return this._make(elems)}
/**
 * Creates a function to test if a filter is matched.
 *
 * @param match - A filter.
 * @returns A function that determines if a filter has been matched.
 */function getFilterFn(match){if(typeof match==="function")return(el,i)=>match.call(el,i,el);if((0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.isCheerio)(match))return el=>Array.prototype.includes.call(match,el);return function(el){return match===el}}function filter(match){var _a;return this._make(filterArray(this.toArray(),match,this.options.xmlMode,(_a=this._root)===null||_a===void 0?void 0:_a[0]))}function filterArray(nodes,match,xmlMode,root){return typeof match==="string"?cheerio_select__WEBPACK_IMPORTED_MODULE_1__.filter(match,nodes,{xmlMode,root}):nodes.filter(getFilterFn(match))}
/**
 * Checks the current list of elements and returns `true` if _any_ of the
 * elements match the selector. If using an element or Cheerio selection,
 * returns `true` if _any_ of the elements match. If using a predicate function,
 * the function is executed in the context of the selected element, so `this`
 * refers to the current element.
 *
 * @category Traversing
 * @param selector - Selector for the selection.
 * @returns Whether or not the selector matches an element of the instance.
 * @see {@link https://api.jquery.com/is/}
 */function is(selector){const nodes=this.toArray();return typeof selector==="string"?cheerio_select__WEBPACK_IMPORTED_MODULE_1__.some(nodes.filter(domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag),selector,this.options):selector?nodes.some(getFilterFn(selector)):false}
/**
 * Remove elements from the set of matched elements. Given a Cheerio object that
 * represents a set of DOM elements, the `.not()` method constructs a new
 * Cheerio object from a subset of the matching elements. The supplied selector
 * is tested against each element; the elements that don't match the selector
 * will be included in the result.
 *
 * The `.not()` method can take a function as its argument in the same way that
 * `.filter()` does. Elements for which the function returns `true` are excluded
 * from the filtered set; all other elements are included.
 *
 * @category Traversing
 * @example <caption>Selector</caption>
 *
 * ```js
 * $('li').not('.apple').length;
 * //=> 2
 * ```
 *
 * @example <caption>Function</caption>
 *
 * ```js
 * $('li').not(function (i, el) {
 *   // this === el
 *   return $(this).attr('class') === 'orange';
 * }).length; //=> 2
 * ```
 *
 * @param match - Value to look for, following the rules above.
 * @returns The filtered collection.
 * @see {@link https://api.jquery.com/not/}
 */function not(match){let nodes=this.toArray();if(typeof match==="string"){const matches=new Set(cheerio_select__WEBPACK_IMPORTED_MODULE_1__.filter(match,nodes,this.options));nodes=nodes.filter((el=>!matches.has(el)))}else{const filterFn=getFilterFn(match);nodes=nodes.filter(((el,i)=>!filterFn(el,i)))}return this._make(nodes)}
/**
 * Filters the set of matched elements to only those which have the given DOM
 * element as a descendant or which have a descendant that matches the given
 * selector. Equivalent to `.filter(':has(selector)')`.
 *
 * @category Traversing
 * @example <caption>Selector</caption>
 *
 * ```js
 * $('ul').has('.pear').attr('id');
 * //=> fruits
 * ```
 *
 * @example <caption>Element</caption>
 *
 * ```js
 * $('ul').has($('.pear')[0]).attr('id');
 * //=> fruits
 * ```
 *
 * @param selectorOrHaystack - Element to look for.
 * @returns The filtered collection.
 * @see {@link https://api.jquery.com/has/}
 */function has(selectorOrHaystack){return this.filter(typeof selectorOrHaystack==="string"?// Using the `:has` selector here short-circuits searches.
`:has(${selectorOrHaystack})`:(_,el)=>this._make(el).find(selectorOrHaystack).length>0)}
/**
 * Will select the first element of a cheerio object.
 *
 * @category Traversing
 * @example
 *
 * ```js
 * $('#fruits').children().first().text();
 * //=> Apple
 * ```
 *
 * @returns The first element.
 * @see {@link https://api.jquery.com/first/}
 */function first(){return this.length>1?this._make(this[0]):this}
/**
 * Will select the last element of a cheerio object.
 *
 * @category Traversing
 * @example
 *
 * ```js
 * $('#fruits').children().last().text();
 * //=> Pear
 * ```
 *
 * @returns The last element.
 * @see {@link https://api.jquery.com/last/}
 */function last(){return this.length>0?this._make(this[this.length-1]):this}
/**
 * Reduce the set of matched elements to the one at the specified index. Use
 * `.eq(-i)` to count backwards from the last selected element.
 *
 * @category Traversing
 * @example
 *
 * ```js
 * $('li').eq(0).text();
 * //=> Apple
 *
 * $('li').eq(-1).text();
 * //=> Pear
 * ```
 *
 * @param i - Index of the element to select.
 * @returns The element at the `i`th position.
 * @see {@link https://api.jquery.com/eq/}
 */function eq(i){var _a;i=+i;
// Use the first identity optimization if possible
if(i===0&&this.length<=1)return this;if(i<0)i=this.length+i;return this._make((_a=this[i])!==null&&_a!==void 0?_a:[])}function get(i){if(i==null)return this.toArray();return this[i<0?this.length+i:i]}
/**
 * Retrieve all the DOM elements contained in the jQuery set as an array.
 *
 * @example
 *
 * ```js
 * $('li').toArray();
 * //=> [ {...}, {...}, {...} ]
 * ```
 *
 * @returns The contained items.
 */function toArray(){return Array.prototype.slice.call(this)}
/**
 * Search for a given element from among the matched elements.
 *
 * @category Traversing
 * @example
 *
 * ```js
 * $('.pear').index();
 * //=> 2 $('.orange').index('li');
 * //=> 1
 * $('.apple').index($('#fruit, li'));
 * //=> 1
 * ```
 *
 * @param selectorOrNeedle - Element to look for.
 * @returns The index of the element.
 * @see {@link https://api.jquery.com/index/}
 */function index(selectorOrNeedle){let $haystack;let needle;if(selectorOrNeedle==null){$haystack=this.parent().children();needle=this[0]}else if(typeof selectorOrNeedle==="string"){$haystack=this._make(selectorOrNeedle);needle=this[0]}else{
// eslint-disable-next-line @typescript-eslint/no-this-alias, unicorn/no-this-assignment
$haystack=this;needle=(0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.isCheerio)(selectorOrNeedle)?selectorOrNeedle[0]:selectorOrNeedle}return Array.prototype.indexOf.call($haystack,needle)}
/**
 * Gets the elements matching the specified range (0-based position).
 *
 * @category Traversing
 * @example
 *
 * ```js
 * $('li').slice(1).eq(0).text();
 * //=> 'Orange'
 *
 * $('li').slice(1, 2).length;
 * //=> 1
 * ```
 *
 * @param start - A position at which the elements begin to be selected. If
 *   negative, it indicates an offset from the end of the set.
 * @param end - A position at which the elements stop being selected. If
 *   negative, it indicates an offset from the end of the set. If omitted, the
 *   range continues until the end of the set.
 * @returns The elements matching the specified range.
 * @see {@link https://api.jquery.com/slice/}
 */function slice(start,end){return this._make(Array.prototype.slice.call(this,start,end))}
/**
 * End the most recent filtering operation in the current chain and return the
 * set of matched elements to its previous state.
 *
 * @category Traversing
 * @example
 *
 * ```js
 * $('li').eq(0).end().length;
 * //=> 3
 * ```
 *
 * @returns The previous state of the set of matched elements.
 * @see {@link https://api.jquery.com/end/}
 */function end(){var _a;return(_a=this.prevObject)!==null&&_a!==void 0?_a:this._make([])}
/**
 * Add elements to the set of matched elements.
 *
 * @category Traversing
 * @example
 *
 * ```js
 * $('.apple').add('.orange').length;
 * //=> 2
 * ```
 *
 * @param other - Elements to add.
 * @param context - Optionally the context of the new selection.
 * @returns The combined set.
 * @see {@link https://api.jquery.com/add/}
 */function add(other,context){const selection=this._make(other,context);const contents=(0,domutils__WEBPACK_IMPORTED_MODULE_4__.uniqueSort)([...this.get(),...selection.get()]);return this._make(contents)}
/**
 * Add the previous set of elements on the stack to the current set, optionally
 * filtered by a selector.
 *
 * @category Traversing
 * @example
 *
 * ```js
 * $('li').eq(0).addBack('.orange').length;
 * //=> 2
 * ```
 *
 * @param selector - Selector for the elements to add.
 * @returns The combined set.
 * @see {@link https://api.jquery.com/addBack/}
 */function addBack(selector){return this.prevObject?this.add(selector?this.prevObject.filter(selector):this.prevObject):this}
//# sourceMappingURL=traversing.js.map
/***/},
/***/"./node_modules/cheerio/dist/browser/cheerio.js":
/*!******************************************************!*\
  !*** ./node_modules/cheerio/dist/browser/cheerio.js ***!
  \******************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */Cheerio:()=>/* binding */Cheerio
/* harmony export */});
/* harmony import */var _api_attributes_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ./api/attributes.js */"./node_modules/cheerio/dist/browser/api/attributes.js");
/* harmony import */var _api_traversing_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./api/traversing.js */"./node_modules/cheerio/dist/browser/api/traversing.js");
/* harmony import */var _api_manipulation_js__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! ./api/manipulation.js */"./node_modules/cheerio/dist/browser/api/manipulation.js");
/* harmony import */var _api_css_js__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(/*! ./api/css.js */"./node_modules/cheerio/dist/browser/api/css.js");
/* harmony import */var _api_forms_js__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(/*! ./api/forms.js */"./node_modules/cheerio/dist/browser/api/forms.js");
/* harmony import */var _api_extract_js__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(/*! ./api/extract.js */"./node_modules/cheerio/dist/browser/api/extract.js");
/**
 * The cheerio class is the central class of the library. It wraps a set of
 * elements and provides an API for traversing, modifying, and interacting with
 * the set.
 *
 * Loading a document will return the Cheerio class bound to the root element of
 * the document. The class will be instantiated when querying the document (when
 * calling `$('selector')`).
 *
 * @example This is the HTML markup we will be using in all of the API examples:
 *
 * ```html
 * <ul id="fruits">
 *   <li class="apple">Apple</li>
 *   <li class="orange">Orange</li>
 *   <li class="pear">Pear</li>
 * </ul>
 * ```
 */class Cheerio{
/**
     * Instance of cheerio. Methods are specified in the modules. Usage of this
     * constructor is not recommended. Please use `$.load` instead.
     *
     * @private
     * @param elements - The new selection.
     * @param root - Sets the root node.
     * @param options - Options for the instance.
     */
constructor(elements,root,options){this.length=0;this.options=options;this._root=root;if(elements){for(let idx=0;idx<elements.length;idx++)this[idx]=elements[idx];this.length=elements.length}}}
/** Set a signature of the object. */Cheerio.prototype.cheerio="[cheerio object]";
/*
 * Make cheerio an array-like object
 */Cheerio.prototype.splice=Array.prototype.splice;
// Support for (const element of $(...)) iteration:
Cheerio.prototype[Symbol.iterator]=Array.prototype[Symbol.iterator];
// Plug in the API
Object.assign(Cheerio.prototype,_api_attributes_js__WEBPACK_IMPORTED_MODULE_0__,_api_traversing_js__WEBPACK_IMPORTED_MODULE_1__,_api_manipulation_js__WEBPACK_IMPORTED_MODULE_2__,_api_css_js__WEBPACK_IMPORTED_MODULE_3__,_api_forms_js__WEBPACK_IMPORTED_MODULE_4__,_api_extract_js__WEBPACK_IMPORTED_MODULE_5__);
//# sourceMappingURL=cheerio.js.map
/***/},
/***/"./node_modules/cheerio/dist/browser/load.js":
/*!***************************************************!*\
  !*** ./node_modules/cheerio/dist/browser/load.js ***!
  \***************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */getLoad:()=>/* binding */getLoad
/* harmony export */});
/* harmony import */var _options_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ./options.js */"./node_modules/cheerio/dist/browser/options.js");
/* harmony import */var _static_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./static.js */"./node_modules/cheerio/dist/browser/static.js");
/* harmony import */var _cheerio_js__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! ./cheerio.js */"./node_modules/cheerio/dist/browser/cheerio.js");
/* harmony import */var _utils_js__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(/*! ./utils.js */"./node_modules/cheerio/dist/browser/utils.js");function getLoad(parse,render){
/**
     * Create a querying function, bound to a document created from the provided
     * markup.
     *
     * Note that similar to web browser contexts, this operation may introduce
     * `<html>`, `<head>`, and `<body>` elements; set `isDocument` to `false` to
     * switch to fragment mode and disable this.
     *
     * @param content - Markup to be loaded.
     * @param options - Options for the created instance.
     * @param isDocument - Allows parser to be switched to fragment mode.
     * @returns The loaded document.
     * @see {@link https://cheerio.js.org#loading} for additional usage information.
     */
return function load(content,options,isDocument=true){if(content==null)throw new Error("cheerio.load() expects a string");const internalOpts=(0,_options_js__WEBPACK_IMPORTED_MODULE_0__.flattenOptions)(options);const initialRoot=parse(content,internalOpts,isDocument,null);
/**
         * Create an extended class here, so that extensions only live on one
         * instance.
         */class LoadedCheerio extends _cheerio_js__WEBPACK_IMPORTED_MODULE_2__.Cheerio{_make(selector,context){const cheerio=initialize(selector,context);cheerio.prevObject=this;return cheerio}_parse(content,options,isDocument,context){return parse(content,options,isDocument,context)}_render(dom){return render(dom,this.options)}}function initialize(selector,context,root=initialRoot,opts){
// $($)
if(selector&&(0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.isCheerio)(selector))return selector;const options=(0,_options_js__WEBPACK_IMPORTED_MODULE_0__.flattenOptions)(opts,internalOpts);const r=typeof root==="string"?[parse(root,options,false,null)]:"length"in root?root:[root];const rootInstance=(0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.isCheerio)(r)?r:new LoadedCheerio(r,null,options);
// Add a cyclic reference, so that calling methods on `_root` never fails.
rootInstance._root=rootInstance;
// $(), $(null), $(undefined), $(false)
if(!selector)return new LoadedCheerio(void 0,rootInstance,options);const elements=typeof selector==="string"&&(0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.isHtml)(selector)?// $(<html>)
parse(selector,options,false,null).children:isNode(selector)?// $(dom)
[selector]:Array.isArray(selector)?// $([dom])
selector:void 0;const instance=new LoadedCheerio(elements,rootInstance,options);if(elements)return instance;if(typeof selector!=="string")throw new TypeError("Unexpected type of selector");
// We know that our selector is a string now.
let search=selector;const searchContext=context?// If we don't have a context, maybe we have a root, from loading
typeof context==="string"?(0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.isHtml)(context)?// $('li', '<ul>...</ul>')
new LoadedCheerio([parse(context,options,false,null)],rootInstance,options):(// $('li', 'ul')
// $('li', 'ul')
search=`${context} ${search}`,rootInstance):(0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.isCheerio)(context)?// $('li', $)
context:// $('li', node), $('li', [nodes])
new LoadedCheerio(Array.isArray(context)?context:[context],rootInstance,options):rootInstance;
// If we still don't have a context, return
if(!searchContext)return instance;
/*
             * #id, .class, tag
             */return searchContext.find(search)}
// Add in static methods & properties
Object.assign(initialize,_static_js__WEBPACK_IMPORTED_MODULE_1__,{load,
// `_root` and `_options` are used in static methods.
_root:initialRoot,_options:internalOpts,
// Add `fn` for plugins
fn:LoadedCheerio.prototype,
// Add the prototype here to maintain `instanceof` behavior.
prototype:LoadedCheerio.prototype});return initialize}}function isNode(obj){return!!obj.name||obj.type==="root"||obj.type==="text"||obj.type==="comment"}
//# sourceMappingURL=load.js.map
/***/},
/***/"./node_modules/cheerio/dist/browser/options.js":
/*!******************************************************!*\
  !*** ./node_modules/cheerio/dist/browser/options.js ***!
  \******************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */flattenOptions:()=>/* binding */flattenOptions
/* harmony export */});const defaultOpts={_useHtmlParser2:false};
/**
 * Flatten the options for Cheerio.
 *
 * This will set `_useHtmlParser2` to true if `xml` is set to true.
 *
 * @param options - The options to flatten.
 * @param baseOptions - The base options to use.
 * @returns The flattened options.
 */function flattenOptions(options,baseOptions){if(!options)return baseOptions!==null&&baseOptions!==void 0?baseOptions:defaultOpts;const opts={_useHtmlParser2:!!options.xmlMode,...baseOptions,...options};if(options.xml){opts._useHtmlParser2=true;opts.xmlMode=true;if(options.xml!==true)Object.assign(opts,options.xml)}else if(options.xmlMode)opts._useHtmlParser2=true;return opts}
//# sourceMappingURL=options.js.map
/***/},
/***/"./node_modules/cheerio/dist/browser/parse.js":
/*!****************************************************!*\
  !*** ./node_modules/cheerio/dist/browser/parse.js ***!
  \****************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */getParse:()=>/* binding */getParse
/* harmony export */,update:()=>/* binding */update
/* harmony export */});
/* harmony import */var domutils__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! domutils */"./node_modules/domutils/lib/esm/index.js");
/* harmony import */var domhandler__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! domhandler */"./node_modules/domhandler/lib/esm/index.js");
/**
 * Get the parse function with options.
 *
 * @param parser - The parser function.
 * @returns The parse function with options.
 */function getParse(parser){
/**
     * Parse a HTML string or a node.
     *
     * @param content - The HTML string or node.
     * @param options - The parser options.
     * @param isDocument - If `content` is a document.
     * @param context - The context node in the DOM tree.
     * @returns The parsed document node.
     */
return function(content,options,isDocument,context){if(typeof Buffer!=="undefined"&&Buffer.isBuffer(content))content=content.toString();if(typeof content==="string")return parser(content,options,isDocument,context);const doc=content;if(!Array.isArray(doc)&&(0,domhandler__WEBPACK_IMPORTED_MODULE_1__.isDocument)(doc))
// If `doc` is already a root, just return it
return doc;
// Add conent to new root element
const root=new domhandler__WEBPACK_IMPORTED_MODULE_1__.Document([]);
// Update the DOM using the root
update(doc,root);return root}}
/**
 * Update the dom structure, for one changed layer.
 *
 * @param newChilds - The new children.
 * @param parent - The new parent.
 * @returns The parent node.
 */function update(newChilds,parent){
// Normalize
const arr=Array.isArray(newChilds)?newChilds:[newChilds];
// Update parent
if(parent)parent.children=arr;else parent=null;
// Update neighbors
for(let i=0;i<arr.length;i++){const node=arr[i];
// Cleanly remove existing nodes from their previous structures.
if(node.parent&&node.parent.children!==arr)(0,domutils__WEBPACK_IMPORTED_MODULE_0__.removeElement)(node);if(parent){node.prev=arr[i-1]||null;node.next=arr[i+1]||null}else node.prev=node.next=null;node.parent=parent}return parent}
//# sourceMappingURL=parse.js.map
/***/},
/***/"./node_modules/cheerio/dist/browser/slim.js":
/*!***************************************************!*\
  !*** ./node_modules/cheerio/dist/browser/slim.js ***!
  \***************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */contains:()=>/* reexport safe */_static_js__WEBPACK_IMPORTED_MODULE_4__.contains
/* harmony export */,load:()=>/* binding */load
/* harmony export */,merge:()=>/* reexport safe */_static_js__WEBPACK_IMPORTED_MODULE_4__.merge
/* harmony export */});
/* harmony import */var _load_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ./load.js */"./node_modules/cheerio/dist/browser/load.js");
/* harmony import */var _parse_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./parse.js */"./node_modules/cheerio/dist/browser/parse.js");
/* harmony import */var dom_serializer__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! dom-serializer */"./node_modules/dom-serializer/lib/esm/index.js");
/* harmony import */var htmlparser2__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(/*! htmlparser2 */"./node_modules/htmlparser2/lib/esm/index.js");
/* harmony import */var _static_js__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(/*! ./static.js */"./node_modules/cheerio/dist/browser/static.js");
/**
 * @file Alternative entry point for Cheerio that always uses htmlparser2. This
 *   way, parse5 won't be loaded, saving some memory.
 */
/**
 * Create a querying function, bound to a document created from the provided
 * markup.
 *
 * @param content - Markup to be loaded.
 * @param options - Options for the created instance.
 * @param isDocument - Always `false` here, as we are always using
 *   `htmlparser2`.
 * @returns The loaded document.
 * @see {@link https://cheerio.js.org#loading} for additional usage information.
 */const load=(0,_load_js__WEBPACK_IMPORTED_MODULE_0__.getLoad)((0,_parse_js__WEBPACK_IMPORTED_MODULE_1__.getParse)(htmlparser2__WEBPACK_IMPORTED_MODULE_3__.parseDocument),dom_serializer__WEBPACK_IMPORTED_MODULE_2__["default"]);
//# sourceMappingURL=slim.js.map
/***/},
/***/"./node_modules/cheerio/dist/browser/static.js":
/*!*****************************************************!*\
  !*** ./node_modules/cheerio/dist/browser/static.js ***!
  \*****************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */contains:()=>/* binding */contains
/* harmony export */,extract:()=>/* binding */extract
/* harmony export */,html:()=>/* binding */html
/* harmony export */,merge:()=>/* binding */merge
/* harmony export */,parseHTML:()=>/* binding */parseHTML
/* harmony export */,root:()=>/* binding */root
/* harmony export */,text:()=>/* binding */text
/* harmony export */,xml:()=>/* binding */xml
/* harmony export */});
/* harmony import */var domutils__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! domutils */"./node_modules/domutils/lib/esm/index.js");
/* harmony import */var _options_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./options.js */"./node_modules/cheerio/dist/browser/options.js");
/**
 * Helper function to render a DOM.
 *
 * @param that - Cheerio instance to render.
 * @param dom - The DOM to render. Defaults to `that`'s root.
 * @param options - Options for rendering.
 * @returns The rendered document.
 */function render(that,dom,options){if(!that)return"";return that(dom!==null&&dom!==void 0?dom:that._root.children,null,void 0,options).toString()}
/**
 * Checks if a passed object is an options object.
 *
 * @param dom - Object to check if it is an options object.
 * @param options - Options object.
 * @returns Whether the object is an options object.
 */function isOptions(dom,options){return!options&&typeof dom==="object"&&dom!=null&&!("length"in dom)&&!("type"in dom)}function html(dom,options){
/*
     * Be flexible about parameters, sometimes we call html(),
     * with options as only parameter
     * check dom argument for dom element specific properties
     * assume there is no 'length' or 'type' properties in the options object
     */
const toRender=isOptions(dom)?(options=dom,void 0):dom;
/*
     * Sometimes `$.html()` is used without preloading html,
     * so fallback non-existing options to the default ones.
     */const opts={...this===null||this===void 0?void 0:this._options,...(0,_options_js__WEBPACK_IMPORTED_MODULE_1__.flattenOptions)(options)};return render(this,toRender,opts)}
/**
 * Render the document as XML.
 *
 * @category Static
 * @param dom - Element to render.
 * @returns THe rendered document.
 */function xml(dom){const options={...this._options,xmlMode:true};return render(this,dom,options)}
/**
 * Render the document as text.
 *
 * This returns the `textContent` of the passed elements. The result will
 * include the contents of `<script>` and `<style>` elements. To avoid this, use
 * `.prop('innerText')` instead.
 *
 * @category Static
 * @param elements - Elements to render.
 * @returns The rendered document.
 */function text(elements){const elems=elements!==null&&elements!==void 0?elements:this?this.root():[];let ret="";for(let i=0;i<elems.length;i++)ret+=(0,domutils__WEBPACK_IMPORTED_MODULE_0__.textContent)(elems[i]);return ret}function parseHTML(data,context,keepScripts=(typeof context==="boolean"?context:false)){if(!data||typeof data!=="string")return null;if(typeof context==="boolean")keepScripts=context;const parsed=this.load(data,this._options,false);if(!keepScripts)parsed("script").remove();
/*
     * The `children` array is used by Cheerio internally to group elements that
     * share the same parents. When nodes created through `parseHTML` are
     * inserted into previously-existing DOM structures, they will be removed
     * from the `children` array. The results of `parseHTML` should remain
     * constant across these operations, so a shallow copy should be returned.
     */return[...parsed.root()[0].children]}
/**
 * Sometimes you need to work with the top-level root element. To query it, you
 * can use `$.root()`.
 *
 * @category Static
 * @example
 *
 * ```js
 * $.root().append('<ul id="vegetables"></ul>').html();
 * //=> <ul id="fruits">...</ul><ul id="vegetables"></ul>
 * ```
 *
 * @returns Cheerio instance wrapping the root node.
 * @alias Cheerio.root
 */function root(){return this(this._root)}
/**
 * Checks to see if the `contained` DOM element is a descendant of the
 * `container` DOM element.
 *
 * @category Static
 * @param container - Potential parent node.
 * @param contained - Potential child node.
 * @returns Indicates if the nodes contain one another.
 * @alias Cheerio.contains
 * @see {@link https://api.jquery.com/jQuery.contains/}
 */function contains(container,contained){
// According to the jQuery API, an element does not "contain" itself
if(contained===container)return false;
/*
     * Step up the descendants, stopping when the root element is reached
     * (signaled by `.parent` returning a reference to the same object)
     */let next=contained;while(next&&next!==next.parent){next=next.parent;if(next===container)return true}return false}
/**
 * Extract multiple values from a document, and store them in an object.
 *
 * @category Static
 * @param map - An object containing key-value pairs. The keys are the names of
 *   the properties to be created on the object, and the values are the
 *   selectors to be used to extract the values.
 * @returns An object containing the extracted values.
 */function extract(map){return this.root().extract(map)}
/**
 * $.merge().
 *
 * @category Static
 * @param arr1 - First array.
 * @param arr2 - Second array.
 * @returns `arr1`, with elements of `arr2` inserted.
 * @alias Cheerio.merge
 * @see {@link https://api.jquery.com/jQuery.merge/}
 */function merge(arr1,arr2){if(!isArrayLike(arr1)||!isArrayLike(arr2))return;let newLength=arr1.length;const len=+arr2.length;for(let i=0;i<len;i++)arr1[newLength++]=arr2[i];arr1.length=newLength;return arr1}
/**
 * Checks if an object is array-like.
 *
 * @category Static
 * @param item - Item to check.
 * @returns Indicates if the item is array-like.
 */function isArrayLike(item){if(Array.isArray(item))return true;if(typeof item!=="object"||item===null||!("length"in item)||typeof item.length!=="number"||item.length<0)return false;for(let i=0;i<item.length;i++)if(!(i in item))return false;return true}
//# sourceMappingURL=static.js.map
/***/},
/***/"./node_modules/cheerio/dist/browser/utils.js":
/*!****************************************************!*\
  !*** ./node_modules/cheerio/dist/browser/utils.js ***!
  \****************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */camelCase:()=>/* binding */camelCase
/* harmony export */,cssCase:()=>/* binding */cssCase
/* harmony export */,domEach:()=>/* binding */domEach
/* harmony export */,isCheerio:()=>/* binding */isCheerio
/* harmony export */,isHtml:()=>/* binding */isHtml
/* harmony export */});
/**
 * Checks if an object is a Cheerio instance.
 *
 * @category Utils
 * @param maybeCheerio - The object to check.
 * @returns Whether the object is a Cheerio instance.
 */function isCheerio(maybeCheerio){return maybeCheerio.cheerio!=null}
/**
 * Convert a string to camel case notation.
 *
 * @private
 * @category Utils
 * @param str - The string to be converted.
 * @returns String in camel case notation.
 */function camelCase(str){return str.replace(/[._-](\w|$)/g,((_,x)=>x.toUpperCase()))}
/**
 * Convert a string from camel case to "CSS case", where word boundaries are
 * described by hyphens ("-") and all characters are lower-case.
 *
 * @private
 * @category Utils
 * @param str - The string to be converted.
 * @returns String in "CSS case".
 */function cssCase(str){return str.replace(/[A-Z]/g,"-$&").toLowerCase()}
/**
 * Iterate over each DOM element without creating intermediary Cheerio
 * instances.
 *
 * This is indented for use internally to avoid otherwise unnecessary memory
 * pressure introduced by _make.
 *
 * @category Utils
 * @param array - The array to iterate over.
 * @param fn - Function to call.
 * @returns The original instance.
 */function domEach(array,fn){const len=array.length;for(let i=0;i<len;i++)fn(array[i],i);return array}var CharacterCodes;(function(CharacterCodes){CharacterCodes[CharacterCodes["LowerA"]=97]="LowerA";CharacterCodes[CharacterCodes["LowerZ"]=122]="LowerZ";CharacterCodes[CharacterCodes["UpperA"]=65]="UpperA";CharacterCodes[CharacterCodes["UpperZ"]=90]="UpperZ";CharacterCodes[CharacterCodes["Exclamation"]=33]="Exclamation"})(CharacterCodes||(CharacterCodes={}));
/**
 * Check if string is HTML.
 *
 * Tests for a `<` within a string, immediate followed by a letter and
 * eventually followed by a `>`.
 *
 * @private
 * @category Utils
 * @param str - The string to check.
 * @returns Indicates if `str` is HTML.
 */function isHtml(str){const tagStart=str.indexOf("<");if(tagStart<0||tagStart>str.length-3)return false;const tagChar=str.charCodeAt(tagStart+1);return(tagChar>=CharacterCodes.LowerA&&tagChar<=CharacterCodes.LowerZ||tagChar>=CharacterCodes.UpperA&&tagChar<=CharacterCodes.UpperZ||tagChar===CharacterCodes.Exclamation)&&str.includes(">",tagStart+2)}
//# sourceMappingURL=utils.js.map
/***/},
/***/"./node_modules/css-select/lib/esm/attributes.js":
/*!*******************************************************!*\
  !*** ./node_modules/css-select/lib/esm/attributes.js ***!
  \*******************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */attributeRules:()=>/* binding */attributeRules
/* harmony export */});
/* harmony import */var boolbase__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! boolbase */"./node_modules/boolbase/index.js");
/**
 * All reserved characters in a regex, used for escaping.
 *
 * Taken from XRegExp, (c) 2007-2020 Steven Levithan under the MIT license
 * https://github.com/slevithan/xregexp/blob/95eeebeb8fac8754d54eafe2b4743661ac1cf028/src/xregexp.js#L794
 */const reChars=/[-[\]{}()*+?.,\\^$|#\s]/g;function escapeRegex(value){return value.replace(reChars,"\\$&")}
/**
 * Attributes that are case-insensitive in HTML.
 *
 * @private
 * @see https://html.spec.whatwg.org/multipage/semantics-other.html#case-sensitivity-of-selectors
 */const caseInsensitiveAttributes=new Set(["accept","accept-charset","align","alink","axis","bgcolor","charset","checked","clear","codetype","color","compact","declare","defer","dir","direction","disabled","enctype","face","frame","hreflang","http-equiv","lang","language","link","media","method","multiple","nohref","noresize","noshade","nowrap","readonly","rel","rev","rules","scope","scrolling","selected","shape","target","text","type","valign","valuetype","vlink"]);function shouldIgnoreCase(selector,options){return typeof selector.ignoreCase==="boolean"?selector.ignoreCase:selector.ignoreCase==="quirks"?!!options.quirksMode:!options.xmlMode&&caseInsensitiveAttributes.has(selector.name)}
/**
 * Attribute selectors
 */const attributeRules={equals(next,data,options){const{adapter}=options;const{name}=data;let{value}=data;if(shouldIgnoreCase(data,options)){value=value.toLowerCase();return elem=>{const attr=adapter.getAttributeValue(elem,name);return attr!=null&&attr.length===value.length&&attr.toLowerCase()===value&&next(elem)}}return elem=>adapter.getAttributeValue(elem,name)===value&&next(elem)},hyphen(next,data,options){const{adapter}=options;const{name}=data;let{value}=data;const len=value.length;if(shouldIgnoreCase(data,options)){value=value.toLowerCase();return function(elem){const attr=adapter.getAttributeValue(elem,name);return attr!=null&&(attr.length===len||attr.charAt(len)==="-")&&attr.substr(0,len).toLowerCase()===value&&next(elem)}}return function(elem){const attr=adapter.getAttributeValue(elem,name);return attr!=null&&(attr.length===len||attr.charAt(len)==="-")&&attr.substr(0,len)===value&&next(elem)}},element(next,data,options){const{adapter}=options;const{name,value}=data;if(/\s/.test(value))return boolbase__WEBPACK_IMPORTED_MODULE_0__.falseFunc;const regex=new RegExp(`(?:^|\\s)${escapeRegex(value)}(?:$|\\s)`,shouldIgnoreCase(data,options)?"i":"");return function(elem){const attr=adapter.getAttributeValue(elem,name);return attr!=null&&attr.length>=value.length&&regex.test(attr)&&next(elem)}},exists(next,{name},{adapter}){return elem=>adapter.hasAttrib(elem,name)&&next(elem)},start(next,data,options){const{adapter}=options;const{name}=data;let{value}=data;const len=value.length;if(len===0)return boolbase__WEBPACK_IMPORTED_MODULE_0__.falseFunc;if(shouldIgnoreCase(data,options)){value=value.toLowerCase();return elem=>{const attr=adapter.getAttributeValue(elem,name);return attr!=null&&attr.length>=len&&attr.substr(0,len).toLowerCase()===value&&next(elem)}}return elem=>{var _a;return!!((_a=adapter.getAttributeValue(elem,name))===null||_a===void 0?void 0:_a.startsWith(value))&&next(elem)}},end(next,data,options){const{adapter}=options;const{name}=data;let{value}=data;const len=-value.length;if(len===0)return boolbase__WEBPACK_IMPORTED_MODULE_0__.falseFunc;if(shouldIgnoreCase(data,options)){value=value.toLowerCase();return elem=>{var _a;return((_a=adapter.getAttributeValue(elem,name))===null||_a===void 0?void 0:_a.substr(len).toLowerCase())===value&&next(elem)}}return elem=>{var _a;return!!((_a=adapter.getAttributeValue(elem,name))===null||_a===void 0?void 0:_a.endsWith(value))&&next(elem)}},any(next,data,options){const{adapter}=options;const{name,value}=data;if(value==="")return boolbase__WEBPACK_IMPORTED_MODULE_0__.falseFunc;if(shouldIgnoreCase(data,options)){const regex=new RegExp(escapeRegex(value),"i");return function(elem){const attr=adapter.getAttributeValue(elem,name);return attr!=null&&attr.length>=value.length&&regex.test(attr)&&next(elem)}}return elem=>{var _a;return!!((_a=adapter.getAttributeValue(elem,name))===null||_a===void 0?void 0:_a.includes(value))&&next(elem)}},not(next,data,options){const{adapter}=options;const{name}=data;let{value}=data;if(value==="")return elem=>!!adapter.getAttributeValue(elem,name)&&next(elem);else if(shouldIgnoreCase(data,options)){value=value.toLowerCase();return elem=>{const attr=adapter.getAttributeValue(elem,name);return(attr==null||attr.length!==value.length||attr.toLowerCase()!==value)&&next(elem)}}return elem=>adapter.getAttributeValue(elem,name)!==value&&next(elem)}};
//# sourceMappingURL=attributes.js.map
/***/},
/***/"./node_modules/css-select/lib/esm/compile.js":
/*!****************************************************!*\
  !*** ./node_modules/css-select/lib/esm/compile.js ***!
  \****************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */compile:()=>/* binding */compile
/* harmony export */,compileToken:()=>/* binding */compileToken
/* harmony export */,compileUnsafe:()=>/* binding */compileUnsafe
/* harmony export */});
/* harmony import */var css_what__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(/*! css-what */"./node_modules/css-what/lib/es/parse.js");
/* harmony import */var css_what__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(/*! css-what */"./node_modules/css-what/lib/es/types.js");
/* harmony import */var boolbase__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! boolbase */"./node_modules/boolbase/index.js");
/* harmony import */var _sort_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./sort.js */"./node_modules/css-select/lib/esm/sort.js");
/* harmony import */var _general_js__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! ./general.js */"./node_modules/css-select/lib/esm/general.js");
/* harmony import */var _pseudo_selectors_subselects_js__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(/*! ./pseudo-selectors/subselects.js */"./node_modules/css-select/lib/esm/pseudo-selectors/subselects.js");
/**
 * Compiles a selector to an executable function.
 *
 * @param selector Selector to compile.
 * @param options Compilation options.
 * @param context Optional context for the selector.
 */function compile(selector,options,context){const next=compileUnsafe(selector,options,context);return(0,_pseudo_selectors_subselects_js__WEBPACK_IMPORTED_MODULE_3__.ensureIsTag)(next,options.adapter)}function compileUnsafe(selector,options,context){const token=typeof selector==="string"?(0,css_what__WEBPACK_IMPORTED_MODULE_4__.parse)(selector):selector;return compileToken(token,options,context)}function includesScopePseudo(t){return t.type===css_what__WEBPACK_IMPORTED_MODULE_5__.SelectorType.Pseudo&&(t.name==="scope"||Array.isArray(t.data)&&t.data.some((data=>data.some(includesScopePseudo))))}const DESCENDANT_TOKEN={type:css_what__WEBPACK_IMPORTED_MODULE_5__.SelectorType.Descendant};const FLEXIBLE_DESCENDANT_TOKEN={type:"_flexibleDescendant"};const SCOPE_TOKEN={type:css_what__WEBPACK_IMPORTED_MODULE_5__.SelectorType.Pseudo,name:"scope",data:null};
/*
 * CSS 4 Spec (Draft): 3.4.1. Absolutizing a Relative Selector
 * http://www.w3.org/TR/selectors4/#absolutizing
 */function absolutize(token,{adapter},context){
// TODO Use better check if the context is a document
const hasContext=!!(context===null||context===void 0?void 0:context.every((e=>{const parent=adapter.isTag(e)&&adapter.getParent(e);return e===_pseudo_selectors_subselects_js__WEBPACK_IMPORTED_MODULE_3__.PLACEHOLDER_ELEMENT||parent&&adapter.isTag(parent)})));for(const t of token){if(t.length>0&&(0,_sort_js__WEBPACK_IMPORTED_MODULE_1__.isTraversal)(t[0])&&t[0].type!==css_what__WEBPACK_IMPORTED_MODULE_5__.SelectorType.Descendant);else if(hasContext&&!t.some(includesScopePseudo))t.unshift(DESCENDANT_TOKEN);else continue;t.unshift(SCOPE_TOKEN)}}function compileToken(token,options,context){var _a;token.forEach(_sort_js__WEBPACK_IMPORTED_MODULE_1__["default"]);context=(_a=options.context)!==null&&_a!==void 0?_a:context;const isArrayContext=Array.isArray(context);const finalContext=context&&(Array.isArray(context)?context:[context]);
// Check if the selector is relative
if(options.relativeSelector!==false)absolutize(token,options,finalContext);else if(token.some((t=>t.length>0&&(0,_sort_js__WEBPACK_IMPORTED_MODULE_1__.isTraversal)(t[0]))))throw new Error("Relative selectors are not allowed when the `relativeSelector` option is disabled");let shouldTestNextSiblings=false;const query=token.map((rules=>{if(rules.length>=2){const[first,second]=rules;if(first.type!==css_what__WEBPACK_IMPORTED_MODULE_5__.SelectorType.Pseudo||first.name!=="scope");else if(isArrayContext&&second.type===css_what__WEBPACK_IMPORTED_MODULE_5__.SelectorType.Descendant)rules[1]=FLEXIBLE_DESCENDANT_TOKEN;else if(second.type===css_what__WEBPACK_IMPORTED_MODULE_5__.SelectorType.Adjacent||second.type===css_what__WEBPACK_IMPORTED_MODULE_5__.SelectorType.Sibling)shouldTestNextSiblings=true}return compileRules(rules,options,finalContext)})).reduce(reduceRules,boolbase__WEBPACK_IMPORTED_MODULE_0__.falseFunc);query.shouldTestNextSiblings=shouldTestNextSiblings;return query}function compileRules(rules,options,context){var _a;return rules.reduce(((previous,rule)=>previous===boolbase__WEBPACK_IMPORTED_MODULE_0__.falseFunc?boolbase__WEBPACK_IMPORTED_MODULE_0__.falseFunc:(0,_general_js__WEBPACK_IMPORTED_MODULE_2__.compileGeneralSelector)(previous,rule,options,context,compileToken)),(_a=options.rootFunc)!==null&&_a!==void 0?_a:boolbase__WEBPACK_IMPORTED_MODULE_0__.trueFunc)}function reduceRules(a,b){if(b===boolbase__WEBPACK_IMPORTED_MODULE_0__.falseFunc||a===boolbase__WEBPACK_IMPORTED_MODULE_0__.trueFunc)return a;if(a===boolbase__WEBPACK_IMPORTED_MODULE_0__.falseFunc||b===boolbase__WEBPACK_IMPORTED_MODULE_0__.trueFunc)return b;return function(elem){return a(elem)||b(elem)}}
//# sourceMappingURL=compile.js.map
/***/},
/***/"./node_modules/css-select/lib/esm/general.js":
/*!****************************************************!*\
  !*** ./node_modules/css-select/lib/esm/general.js ***!
  \****************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */compileGeneralSelector:()=>/* binding */compileGeneralSelector
/* harmony export */});
/* harmony import */var _attributes_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ./attributes.js */"./node_modules/css-select/lib/esm/attributes.js");
/* harmony import */var _pseudo_selectors_index_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./pseudo-selectors/index.js */"./node_modules/css-select/lib/esm/pseudo-selectors/index.js");
/* harmony import */var css_what__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! css-what */"./node_modules/css-what/lib/es/types.js");function getElementParent(node,adapter){const parent=adapter.getParent(node);if(parent&&adapter.isTag(parent))return parent;return null}
/*
 * All available rules
 */function compileGeneralSelector(next,selector,options,context,compileToken){const{adapter,equals}=options;switch(selector.type){case css_what__WEBPACK_IMPORTED_MODULE_2__.SelectorType.PseudoElement:throw new Error("Pseudo-elements are not supported by css-select");case css_what__WEBPACK_IMPORTED_MODULE_2__.SelectorType.ColumnCombinator:throw new Error("Column combinators are not yet supported by css-select");case css_what__WEBPACK_IMPORTED_MODULE_2__.SelectorType.Attribute:if(selector.namespace!=null)throw new Error("Namespaced attributes are not yet supported by css-select");if(!options.xmlMode||options.lowerCaseAttributeNames)selector.name=selector.name.toLowerCase();return _attributes_js__WEBPACK_IMPORTED_MODULE_0__.attributeRules[selector.action](next,selector,options);case css_what__WEBPACK_IMPORTED_MODULE_2__.SelectorType.Pseudo:return(0,_pseudo_selectors_index_js__WEBPACK_IMPORTED_MODULE_1__.compilePseudoSelector)(next,selector,options,context,compileToken);
// Tags
case css_what__WEBPACK_IMPORTED_MODULE_2__.SelectorType.Tag:{if(selector.namespace!=null)throw new Error("Namespaced tag names are not yet supported by css-select");let{name}=selector;if(!options.xmlMode||options.lowerCaseTags)name=name.toLowerCase();return function(elem){return adapter.getName(elem)===name&&next(elem)}}
// Traversal
case css_what__WEBPACK_IMPORTED_MODULE_2__.SelectorType.Descendant:{if(options.cacheResults===false||typeof WeakSet==="undefined")return function(elem){let current=elem;while(current=getElementParent(current,adapter))if(next(current))return true;return false};
// @ts-expect-error `ElementNode` is not extending object
const isFalseCache=new WeakSet;return function(elem){let current=elem;while(current=getElementParent(current,adapter))if(!isFalseCache.has(current)){if(adapter.isTag(current)&&next(current))return true;isFalseCache.add(current)}return false}}case"_flexibleDescendant":
// Include element itself, only used while querying an array
return function(elem){let current=elem;do{if(next(current))return true}while(current=getElementParent(current,adapter));return false};case css_what__WEBPACK_IMPORTED_MODULE_2__.SelectorType.Parent:return function(elem){return adapter.getChildren(elem).some((elem=>adapter.isTag(elem)&&next(elem)))};case css_what__WEBPACK_IMPORTED_MODULE_2__.SelectorType.Child:return function(elem){const parent=adapter.getParent(elem);return parent!=null&&adapter.isTag(parent)&&next(parent)};case css_what__WEBPACK_IMPORTED_MODULE_2__.SelectorType.Sibling:return function(elem){const siblings=adapter.getSiblings(elem);for(let i=0;i<siblings.length;i++){const currentSibling=siblings[i];if(equals(elem,currentSibling))break;if(adapter.isTag(currentSibling)&&next(currentSibling))return true}return false};case css_what__WEBPACK_IMPORTED_MODULE_2__.SelectorType.Adjacent:if(adapter.prevElementSibling)return function(elem){const previous=adapter.prevElementSibling(elem);return previous!=null&&next(previous)};return function(elem){const siblings=adapter.getSiblings(elem);let lastElement;for(let i=0;i<siblings.length;i++){const currentSibling=siblings[i];if(equals(elem,currentSibling))break;if(adapter.isTag(currentSibling))lastElement=currentSibling}return!!lastElement&&next(lastElement)};case css_what__WEBPACK_IMPORTED_MODULE_2__.SelectorType.Universal:if(selector.namespace!=null&&selector.namespace!=="*")throw new Error("Namespaced universal selectors are not yet supported by css-select");return next}}
//# sourceMappingURL=general.js.map
/***/},
/***/"./node_modules/css-select/lib/esm/index.js":
/*!**************************************************!*\
  !*** ./node_modules/css-select/lib/esm/index.js ***!
  \**************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */_compileToken:()=>/* binding */_compileToken
/* harmony export */,_compileUnsafe:()=>/* binding */_compileUnsafe
/* harmony export */,aliases:()=>/* reexport safe */_pseudo_selectors_index_js__WEBPACK_IMPORTED_MODULE_4__.aliases
/* harmony export */,compile:()=>/* binding */compile
/* harmony export */,default:()=>__WEBPACK_DEFAULT_EXPORT__
/* harmony export */,filters:()=>/* reexport safe */_pseudo_selectors_index_js__WEBPACK_IMPORTED_MODULE_4__.filters
/* harmony export */,is:()=>/* binding */is
/* harmony export */,prepareContext:()=>/* binding */prepareContext
/* harmony export */,pseudos:()=>/* reexport safe */_pseudo_selectors_index_js__WEBPACK_IMPORTED_MODULE_4__.pseudos
/* harmony export */,selectAll:()=>/* binding */selectAll
/* harmony export */,selectOne:()=>/* binding */selectOne
/* harmony export */});
/* harmony import */var domutils__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! domutils */"./node_modules/domutils/lib/esm/index.js");
/* harmony import */var boolbase__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! boolbase */"./node_modules/boolbase/index.js");
/* harmony import */var _compile_js__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! ./compile.js */"./node_modules/css-select/lib/esm/compile.js");
/* harmony import */var _pseudo_selectors_subselects_js__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(/*! ./pseudo-selectors/subselects.js */"./node_modules/css-select/lib/esm/pseudo-selectors/subselects.js");
/* harmony import */var _pseudo_selectors_index_js__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(/*! ./pseudo-selectors/index.js */"./node_modules/css-select/lib/esm/pseudo-selectors/index.js");const defaultEquals=(a,b)=>a===b;const defaultOptions={adapter:domutils__WEBPACK_IMPORTED_MODULE_0__,equals:defaultEquals};function convertOptionFormats(options){var _a,_b,_c,_d;
/*
     * We force one format of options to the other one.
     */
// @ts-expect-error Default options may have incompatible `Node` / `ElementNode`.
const opts=options!==null&&options!==void 0?options:defaultOptions;
// @ts-expect-error Same as above.
(_a=opts.adapter)!==null&&_a!==void 0?_a:opts.adapter=domutils__WEBPACK_IMPORTED_MODULE_0__;
// @ts-expect-error `equals` does not exist on `Options`
(_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;return opts}function wrapCompile(func){return function(selector,options,context){const opts=convertOptionFormats(options);return func(selector,opts,context)}}
/**
 * Compiles the query, returns a function.
 */const compile=wrapCompile(_compile_js__WEBPACK_IMPORTED_MODULE_2__.compile);const _compileUnsafe=wrapCompile(_compile_js__WEBPACK_IMPORTED_MODULE_2__.compileUnsafe);const _compileToken=wrapCompile(_compile_js__WEBPACK_IMPORTED_MODULE_2__.compileToken);function getSelectorFunc(searchFunc){return function(query,elements,options){const opts=convertOptionFormats(options);if(typeof query!=="function")query=(0,_compile_js__WEBPACK_IMPORTED_MODULE_2__.compileUnsafe)(query,opts,elements);const filteredElements=prepareContext(elements,opts.adapter,query.shouldTestNextSiblings);return searchFunc(query,filteredElements,opts)}}function prepareContext(elems,adapter,shouldTestNextSiblings=false){
/*
     * Add siblings if the query requires them.
     * See https://github.com/fb55/css-select/pull/43#issuecomment-225414692
     */
if(shouldTestNextSiblings)elems=appendNextSiblings(elems,adapter);return Array.isArray(elems)?adapter.removeSubsets(elems):adapter.getChildren(elems)}function appendNextSiblings(elem,adapter){
// Order matters because jQuery seems to check the children before the siblings
const elems=Array.isArray(elem)?elem.slice(0):[elem];const elemsLength=elems.length;for(let i=0;i<elemsLength;i++){const nextSiblings=(0,_pseudo_selectors_subselects_js__WEBPACK_IMPORTED_MODULE_3__.getNextSiblings)(elems[i],adapter);elems.push(...nextSiblings)}return elems}
/**
 * @template Node The generic Node type for the DOM adapter being used.
 * @template ElementNode The Node type for elements for the DOM adapter being used.
 * @param elems Elements to query. If it is an element, its children will be queried..
 * @param query can be either a CSS selector string or a compiled query function.
 * @param [options] options for querying the document.
 * @see compile for supported selector queries.
 * @returns All matching elements.
 *
 */const selectAll=getSelectorFunc(((query,elems,options)=>query===boolbase__WEBPACK_IMPORTED_MODULE_1__.falseFunc||!elems||elems.length===0?[]:options.adapter.findAll(query,elems)));
/**
 * @template Node The generic Node type for the DOM adapter being used.
 * @template ElementNode The Node type for elements for the DOM adapter being used.
 * @param elems Elements to query. If it is an element, its children will be queried..
 * @param query can be either a CSS selector string or a compiled query function.
 * @param [options] options for querying the document.
 * @see compile for supported selector queries.
 * @returns the first match, or null if there was no match.
 */const selectOne=getSelectorFunc(((query,elems,options)=>query===boolbase__WEBPACK_IMPORTED_MODULE_1__.falseFunc||!elems||elems.length===0?null:options.adapter.findOne(query,elems)));
/**
 * Tests whether or not an element is matched by query.
 *
 * @template Node The generic Node type for the DOM adapter being used.
 * @template ElementNode The Node type for elements for the DOM adapter being used.
 * @param elem The element to test if it matches the query.
 * @param query can be either a CSS selector string or a compiled query function.
 * @param [options] options for querying the document.
 * @see compile for supported selector queries.
 * @returns
 */function is(elem,query,options){const opts=convertOptionFormats(options);return(typeof query==="function"?query:(0,_compile_js__WEBPACK_IMPORTED_MODULE_2__.compile)(query,opts))(elem)}
/**
 * Alias for selectAll(query, elems, options).
 * @see [compile] for supported selector queries.
 */
/* harmony default export */const __WEBPACK_DEFAULT_EXPORT__=selectAll;
// Export filters, pseudos and aliases to allow users to supply their own.
/** @deprecated Use the `pseudos` option instead. */
//# sourceMappingURL=index.js.map
/***/},
/***/"./node_modules/css-select/lib/esm/pseudo-selectors/aliases.js":
/*!*********************************************************************!*\
  !*** ./node_modules/css-select/lib/esm/pseudo-selectors/aliases.js ***!
  \*********************************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */aliases:()=>/* binding */aliases
/* harmony export */});
/**
 * Aliases are pseudos that are expressed as selectors.
 */const aliases={
// Links
"any-link":":is(a, area, link)[href]",link:":any-link:not(:visited)",
// Forms
// https://html.spec.whatwg.org/multipage/scripting.html#disabled-elements
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    )`,enabled:":not(:disabled)",checked:":is(:is(input[type=radio], input[type=checkbox])[checked], option:selected)",required:":is(input, select, textarea)[required]",optional:":is(input, select, textarea):not([required])",
// JQuery extensions
// https://html.spec.whatwg.org/multipage/form-elements.html#concept-option-selectedness
selected:"option:is([selected], select:not([multiple]):not(:has(> option[selected])) > :first-of-type)",checkbox:"[type=checkbox]",file:"[type=file]",password:"[type=password]",radio:"[type=radio]",reset:"[type=reset]",image:"[type=image]",submit:"[type=submit]",parent:":not(:empty)",header:":is(h1, h2, h3, h4, h5, h6)",button:":is(button, input[type=button])",input:":is(input, textarea, select, button)",text:"input:is(:not([type!='']), [type=text])"};
//# sourceMappingURL=aliases.js.map
/***/},
/***/"./node_modules/css-select/lib/esm/pseudo-selectors/filters.js":
/*!*********************************************************************!*\
  !*** ./node_modules/css-select/lib/esm/pseudo-selectors/filters.js ***!
  \*********************************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */filters:()=>/* binding */filters
/* harmony export */});
/* harmony import */var nth_check__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! nth-check */"./node_modules/nth-check/lib/esm/index.js");
/* harmony import */var boolbase__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! boolbase */"./node_modules/boolbase/index.js");function getChildFunc(next,adapter){return elem=>{const parent=adapter.getParent(elem);return parent!=null&&adapter.isTag(parent)&&next(elem)}}const filters={contains(next,text,{adapter}){return function(elem){return next(elem)&&adapter.getText(elem).includes(text)}},icontains(next,text,{adapter}){const itext=text.toLowerCase();return function(elem){return next(elem)&&adapter.getText(elem).toLowerCase().includes(itext)}},
// Location specific methods
"nth-child"(next,rule,{adapter,equals}){const func=(0,nth_check__WEBPACK_IMPORTED_MODULE_0__["default"])(rule);if(func===boolbase__WEBPACK_IMPORTED_MODULE_1__.falseFunc)return boolbase__WEBPACK_IMPORTED_MODULE_1__.falseFunc;if(func===boolbase__WEBPACK_IMPORTED_MODULE_1__.trueFunc)return getChildFunc(next,adapter);return function(elem){const siblings=adapter.getSiblings(elem);let pos=0;for(let i=0;i<siblings.length;i++){if(equals(elem,siblings[i]))break;if(adapter.isTag(siblings[i]))pos++}return func(pos)&&next(elem)}},"nth-last-child"(next,rule,{adapter,equals}){const func=(0,nth_check__WEBPACK_IMPORTED_MODULE_0__["default"])(rule);if(func===boolbase__WEBPACK_IMPORTED_MODULE_1__.falseFunc)return boolbase__WEBPACK_IMPORTED_MODULE_1__.falseFunc;if(func===boolbase__WEBPACK_IMPORTED_MODULE_1__.trueFunc)return getChildFunc(next,adapter);return function(elem){const siblings=adapter.getSiblings(elem);let pos=0;for(let i=siblings.length-1;i>=0;i--){if(equals(elem,siblings[i]))break;if(adapter.isTag(siblings[i]))pos++}return func(pos)&&next(elem)}},"nth-of-type"(next,rule,{adapter,equals}){const func=(0,nth_check__WEBPACK_IMPORTED_MODULE_0__["default"])(rule);if(func===boolbase__WEBPACK_IMPORTED_MODULE_1__.falseFunc)return boolbase__WEBPACK_IMPORTED_MODULE_1__.falseFunc;if(func===boolbase__WEBPACK_IMPORTED_MODULE_1__.trueFunc)return getChildFunc(next,adapter);return function(elem){const siblings=adapter.getSiblings(elem);let pos=0;for(let i=0;i<siblings.length;i++){const currentSibling=siblings[i];if(equals(elem,currentSibling))break;if(adapter.isTag(currentSibling)&&adapter.getName(currentSibling)===adapter.getName(elem))pos++}return func(pos)&&next(elem)}},"nth-last-of-type"(next,rule,{adapter,equals}){const func=(0,nth_check__WEBPACK_IMPORTED_MODULE_0__["default"])(rule);if(func===boolbase__WEBPACK_IMPORTED_MODULE_1__.falseFunc)return boolbase__WEBPACK_IMPORTED_MODULE_1__.falseFunc;if(func===boolbase__WEBPACK_IMPORTED_MODULE_1__.trueFunc)return getChildFunc(next,adapter);return function(elem){const siblings=adapter.getSiblings(elem);let pos=0;for(let i=siblings.length-1;i>=0;i--){const currentSibling=siblings[i];if(equals(elem,currentSibling))break;if(adapter.isTag(currentSibling)&&adapter.getName(currentSibling)===adapter.getName(elem))pos++}return func(pos)&&next(elem)}},
// TODO determine the actual root element
root(next,_rule,{adapter}){return elem=>{const parent=adapter.getParent(elem);return(parent==null||!adapter.isTag(parent))&&next(elem)}},scope(next,rule,options,context){const{equals}=options;if(!context||context.length===0)
// Equivalent to :root
return filters["root"](next,rule,options);if(context.length===1)
// NOTE: can't be unpacked, as :has uses this for side-effects
return elem=>equals(context[0],elem)&&next(elem);return elem=>context.includes(elem)&&next(elem)},hover:dynamicStatePseudo("isHovered"),visited:dynamicStatePseudo("isVisited"),active:dynamicStatePseudo("isActive")};
/**
 * Dynamic state pseudos. These depend on optional Adapter methods.
 *
 * @param name The name of the adapter method to call.
 * @returns Pseudo for the `filters` object.
 */function dynamicStatePseudo(name){return function(next,_rule,{adapter}){const func=adapter[name];if(typeof func!=="function")return boolbase__WEBPACK_IMPORTED_MODULE_1__.falseFunc;return function(elem){return func(elem)&&next(elem)}}}
//# sourceMappingURL=filters.js.map
/***/},
/***/"./node_modules/css-select/lib/esm/pseudo-selectors/index.js":
/*!*******************************************************************!*\
  !*** ./node_modules/css-select/lib/esm/pseudo-selectors/index.js ***!
  \*******************************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */aliases:()=>/* reexport safe */_aliases_js__WEBPACK_IMPORTED_MODULE_2__.aliases
/* harmony export */,compilePseudoSelector:()=>/* binding */compilePseudoSelector
/* harmony export */,filters:()=>/* reexport safe */_filters_js__WEBPACK_IMPORTED_MODULE_0__.filters
/* harmony export */,pseudos:()=>/* reexport safe */_pseudos_js__WEBPACK_IMPORTED_MODULE_1__.pseudos
/* harmony export */});
/* harmony import */var css_what__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(/*! css-what */"./node_modules/css-what/lib/es/parse.js");
/* harmony import */var _filters_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ./filters.js */"./node_modules/css-select/lib/esm/pseudo-selectors/filters.js");
/* harmony import */var _pseudos_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./pseudos.js */"./node_modules/css-select/lib/esm/pseudo-selectors/pseudos.js");
/* harmony import */var _aliases_js__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! ./aliases.js */"./node_modules/css-select/lib/esm/pseudo-selectors/aliases.js");
/* harmony import */var _subselects_js__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(/*! ./subselects.js */"./node_modules/css-select/lib/esm/pseudo-selectors/subselects.js");function compilePseudoSelector(next,selector,options,context,compileToken){var _a;const{name,data}=selector;if(Array.isArray(data)){if(!(name in _subselects_js__WEBPACK_IMPORTED_MODULE_3__.subselects))throw new Error(`Unknown pseudo-class :${name}(${data})`);return _subselects_js__WEBPACK_IMPORTED_MODULE_3__.subselects[name](next,data,options,context,compileToken)}const userPseudo=(_a=options.pseudos)===null||_a===void 0?void 0:_a[name];const stringPseudo=typeof userPseudo==="string"?userPseudo:_aliases_js__WEBPACK_IMPORTED_MODULE_2__.aliases[name];if(typeof stringPseudo==="string"){if(data!=null)throw new Error(`Pseudo ${name} doesn't have any arguments`);
// The alias has to be parsed here, to make sure options are respected.
const alias=(0,css_what__WEBPACK_IMPORTED_MODULE_4__.parse)(stringPseudo);return _subselects_js__WEBPACK_IMPORTED_MODULE_3__.subselects["is"](next,alias,options,context,compileToken)}if(typeof userPseudo==="function"){(0,_pseudos_js__WEBPACK_IMPORTED_MODULE_1__.verifyPseudoArgs)(userPseudo,name,data,1);return elem=>userPseudo(elem,data)&&next(elem)}if(name in _filters_js__WEBPACK_IMPORTED_MODULE_0__.filters)return _filters_js__WEBPACK_IMPORTED_MODULE_0__.filters[name](next,data,options,context);if(name in _pseudos_js__WEBPACK_IMPORTED_MODULE_1__.pseudos){const pseudo=_pseudos_js__WEBPACK_IMPORTED_MODULE_1__.pseudos[name];(0,_pseudos_js__WEBPACK_IMPORTED_MODULE_1__.verifyPseudoArgs)(pseudo,name,data,2);return elem=>pseudo(elem,options,data)&&next(elem)}throw new Error(`Unknown pseudo-class :${name}`)}
//# sourceMappingURL=index.js.map
/***/},
/***/"./node_modules/css-select/lib/esm/pseudo-selectors/pseudos.js":
/*!*********************************************************************!*\
  !*** ./node_modules/css-select/lib/esm/pseudo-selectors/pseudos.js ***!
  \*********************************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */pseudos:()=>/* binding */pseudos
/* harmony export */,verifyPseudoArgs:()=>/* binding */verifyPseudoArgs
/* harmony export */});
// While filters are precompiled, pseudos get called when they are needed
const pseudos={empty(elem,{adapter}){return!adapter.getChildren(elem).some((elem=>
// FIXME: `getText` call is potentially expensive.
adapter.isTag(elem)||adapter.getText(elem)!==""))},"first-child"(elem,{adapter,equals}){if(adapter.prevElementSibling)return adapter.prevElementSibling(elem)==null;const firstChild=adapter.getSiblings(elem).find((elem=>adapter.isTag(elem)));return firstChild!=null&&equals(elem,firstChild)},"last-child"(elem,{adapter,equals}){const siblings=adapter.getSiblings(elem);for(let i=siblings.length-1;i>=0;i--){if(equals(elem,siblings[i]))return true;if(adapter.isTag(siblings[i]))break}return false},"first-of-type"(elem,{adapter,equals}){const siblings=adapter.getSiblings(elem);const elemName=adapter.getName(elem);for(let i=0;i<siblings.length;i++){const currentSibling=siblings[i];if(equals(elem,currentSibling))return true;if(adapter.isTag(currentSibling)&&adapter.getName(currentSibling)===elemName)break}return false},"last-of-type"(elem,{adapter,equals}){const siblings=adapter.getSiblings(elem);const elemName=adapter.getName(elem);for(let i=siblings.length-1;i>=0;i--){const currentSibling=siblings[i];if(equals(elem,currentSibling))return true;if(adapter.isTag(currentSibling)&&adapter.getName(currentSibling)===elemName)break}return false},"only-of-type"(elem,{adapter,equals}){const elemName=adapter.getName(elem);return adapter.getSiblings(elem).every((sibling=>equals(elem,sibling)||!adapter.isTag(sibling)||adapter.getName(sibling)!==elemName))},"only-child"(elem,{adapter,equals}){return adapter.getSiblings(elem).every((sibling=>equals(elem,sibling)||!adapter.isTag(sibling)))}};function verifyPseudoArgs(func,name,subselect,argIndex){if(subselect===null){if(func.length>argIndex)throw new Error(`Pseudo-class :${name} requires an argument`)}else if(func.length===argIndex)throw new Error(`Pseudo-class :${name} doesn't have any arguments`)}
//# sourceMappingURL=pseudos.js.map
/***/},
/***/"./node_modules/css-select/lib/esm/pseudo-selectors/subselects.js":
/*!************************************************************************!*\
  !*** ./node_modules/css-select/lib/esm/pseudo-selectors/subselects.js ***!
  \************************************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */PLACEHOLDER_ELEMENT:()=>/* binding */PLACEHOLDER_ELEMENT
/* harmony export */,ensureIsTag:()=>/* binding */ensureIsTag
/* harmony export */,getNextSiblings:()=>/* binding */getNextSiblings
/* harmony export */,subselects:()=>/* binding */subselects
/* harmony export */});
/* harmony import */var boolbase__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! boolbase */"./node_modules/boolbase/index.js");
/* harmony import */var _sort_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ../sort.js */"./node_modules/css-select/lib/esm/sort.js");
/** Used as a placeholder for :has. Will be replaced with the actual element. */const PLACEHOLDER_ELEMENT={};function ensureIsTag(next,adapter){if(next===boolbase__WEBPACK_IMPORTED_MODULE_0__.falseFunc)return boolbase__WEBPACK_IMPORTED_MODULE_0__.falseFunc;return elem=>adapter.isTag(elem)&&next(elem)}function getNextSiblings(elem,adapter){const siblings=adapter.getSiblings(elem);if(siblings.length<=1)return[];const elemIndex=siblings.indexOf(elem);if(elemIndex<0||elemIndex===siblings.length-1)return[];return siblings.slice(elemIndex+1).filter(adapter.isTag)}function copyOptions(options){
// Not copied: context, rootFunc
return{xmlMode:!!options.xmlMode,lowerCaseAttributeNames:!!options.lowerCaseAttributeNames,lowerCaseTags:!!options.lowerCaseTags,quirksMode:!!options.quirksMode,cacheResults:!!options.cacheResults,pseudos:options.pseudos,adapter:options.adapter,equals:options.equals}}const is=(next,token,options,context,compileToken)=>{const func=compileToken(token,copyOptions(options),context);return func===boolbase__WEBPACK_IMPORTED_MODULE_0__.trueFunc?next:func===boolbase__WEBPACK_IMPORTED_MODULE_0__.falseFunc?boolbase__WEBPACK_IMPORTED_MODULE_0__.falseFunc:elem=>func(elem)&&next(elem)};
/*
 * :not, :has, :is, :matches and :where have to compile selectors
 * doing this in src/pseudos.ts would lead to circular dependencies,
 * so we add them here
 */const subselects={is,
/**
     * `:matches` and `:where` are aliases for `:is`.
     */
matches:is,where:is,not(next,token,options,context,compileToken){const func=compileToken(token,copyOptions(options),context);return func===boolbase__WEBPACK_IMPORTED_MODULE_0__.falseFunc?next:func===boolbase__WEBPACK_IMPORTED_MODULE_0__.trueFunc?boolbase__WEBPACK_IMPORTED_MODULE_0__.falseFunc:elem=>!func(elem)&&next(elem)},has(next,subselect,options,_context,compileToken){const{adapter}=options;const opts=copyOptions(options);opts.relativeSelector=true;const context=subselect.some((s=>s.some(_sort_js__WEBPACK_IMPORTED_MODULE_1__.isTraversal)))?// Used as a placeholder. Will be replaced with the actual element.
[PLACEHOLDER_ELEMENT]:void 0;const compiled=compileToken(subselect,opts,context);if(compiled===boolbase__WEBPACK_IMPORTED_MODULE_0__.falseFunc)return boolbase__WEBPACK_IMPORTED_MODULE_0__.falseFunc;const hasElement=ensureIsTag(compiled,adapter);
// If `compiled` is `trueFunc`, we can skip this.
if(context&&compiled!==boolbase__WEBPACK_IMPORTED_MODULE_0__.trueFunc){
/*
             * `shouldTestNextSiblings` will only be true if the query starts with
             * a traversal (sibling or adjacent). That means we will always have a context.
             */
const{shouldTestNextSiblings=false}=compiled;return elem=>{if(!next(elem))return false;context[0]=elem;const childs=adapter.getChildren(elem);const nextElements=shouldTestNextSiblings?[...childs,...getNextSiblings(elem,adapter)]:childs;return adapter.existsOne(hasElement,nextElements)}}return elem=>next(elem)&&adapter.existsOne(hasElement,adapter.getChildren(elem))}};
//# sourceMappingURL=subselects.js.map
/***/},
/***/"./node_modules/css-select/lib/esm/sort.js":
/*!*************************************************!*\
  !*** ./node_modules/css-select/lib/esm/sort.js ***!
  \*************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */default:()=>/* binding */sortByProcedure
/* harmony export */,isTraversal:()=>/* binding */isTraversal
/* harmony export */});
/* harmony import */var css_what__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! css-what */"./node_modules/css-what/lib/es/types.js");const procedure=new Map([[css_what__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Universal,50],[css_what__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Tag,30],[css_what__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Attribute,1],[css_what__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Pseudo,0]]);function isTraversal(token){return!procedure.has(token.type)}const attributes=new Map([[css_what__WEBPACK_IMPORTED_MODULE_0__.AttributeAction.Exists,10],[css_what__WEBPACK_IMPORTED_MODULE_0__.AttributeAction.Equals,8],[css_what__WEBPACK_IMPORTED_MODULE_0__.AttributeAction.Not,7],[css_what__WEBPACK_IMPORTED_MODULE_0__.AttributeAction.Start,6],[css_what__WEBPACK_IMPORTED_MODULE_0__.AttributeAction.End,6],[css_what__WEBPACK_IMPORTED_MODULE_0__.AttributeAction.Any,5]]);
/**
 * Sort the parts of the passed selector,
 * as there is potential for optimization
 * (some types of selectors are faster than others)
 *
 * @param arr Selector to sort
 */function sortByProcedure(arr){const procs=arr.map(getProcedure);for(let i=1;i<arr.length;i++){const procNew=procs[i];if(procNew<0)continue;for(let j=i-1;j>=0&&procNew<procs[j];j--){const token=arr[j+1];arr[j+1]=arr[j];arr[j]=token;procs[j+1]=procs[j];procs[j]=procNew}}}function getProcedure(token){var _a,_b;let proc=(_a=procedure.get(token.type))!==null&&_a!==void 0?_a:-1;if(token.type===css_what__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Attribute){proc=(_b=attributes.get(token.action))!==null&&_b!==void 0?_b:4;if(token.action===css_what__WEBPACK_IMPORTED_MODULE_0__.AttributeAction.Equals&&token.name==="id")
// Prefer ID selectors (eg. #ID)
proc=9;if(token.ignoreCase)
/*
             * IgnoreCase adds some overhead, prefer "normal" token
             * this is a binary operation, to ensure it's still an int
             */
proc>>=1}else if(token.type===css_what__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Pseudo)if(!token.data)proc=3;else if(token.name==="has"||token.name==="contains")proc=0;// Expensive in any case
else if(Array.isArray(token.data)){
// Eg. :matches, :not
proc=Math.min(...token.data.map((d=>Math.min(...d.map(getProcedure)))));
// If we have traversals, try to avoid executing this selector
if(proc<0)proc=0}else proc=2;return proc}
//# sourceMappingURL=sort.js.map
/***/},
/***/"./node_modules/css-what/lib/es/parse.js":
/*!***********************************************!*\
  !*** ./node_modules/css-what/lib/es/parse.js ***!
  \***********************************************/
/***/(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */isTraversal:()=>/* binding */isTraversal
/* harmony export */,parse:()=>/* binding */parse
/* harmony export */});
/* harmony import */var _types__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ./types */"./node_modules/css-what/lib/es/types.js");const reName=/^[^\\#]?(?:\\(?:[\da-f]{1,6}\s?|.)|[\w\-\u00b0-\uFFFF])+/;const reEscape=/\\([\da-f]{1,6}\s?|(\s)|.)/gi;const actionTypes=new Map([[126/* Tilde */,_types__WEBPACK_IMPORTED_MODULE_0__.AttributeAction.Element],[94/* Circumflex */,_types__WEBPACK_IMPORTED_MODULE_0__.AttributeAction.Start],[36/* Dollar */,_types__WEBPACK_IMPORTED_MODULE_0__.AttributeAction.End],[42/* Asterisk */,_types__WEBPACK_IMPORTED_MODULE_0__.AttributeAction.Any],[33/* ExclamationMark */,_types__WEBPACK_IMPORTED_MODULE_0__.AttributeAction.Not],[124/* Pipe */,_types__WEBPACK_IMPORTED_MODULE_0__.AttributeAction.Hyphen]]);
// Pseudos, whose data property is parsed as well.
const unpackPseudos=new Set(["has","not","matches","is","where","host","host-context"]);
/**
 * Checks whether a specific selector is a traversal.
 * This is useful eg. in swapping the order of elements that
 * are not traversals.
 *
 * @param selector Selector to check.
 */function isTraversal(selector){switch(selector.type){case _types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Adjacent:case _types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Child:case _types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Descendant:case _types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Parent:case _types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Sibling:case _types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.ColumnCombinator:return true;default:return false}}const stripQuotesFromPseudos=new Set(["contains","icontains"]);
// Unescape function taken from https://github.com/jquery/sizzle/blob/master/src/sizzle.js#L152
function funescape(_,escaped,escapedWhitespace){const high=parseInt(escaped,16)-65536;
// NaN means non-codepoint
return high!==high||escapedWhitespace?escaped:high<0?// BMP codepoint
String.fromCharCode(high+65536):// Supplemental Plane codepoint (surrogate pair)
String.fromCharCode(high>>10|55296,high&1023|56320)}function unescapeCSS(str){return str.replace(reEscape,funescape)}function isQuote(c){return c===39/* SingleQuote */||c===34/* DoubleQuote */}function isWhitespace(c){return c===32/* Space */||c===9/* Tab */||c===10/* NewLine */||c===12/* FormFeed */||c===13/* CarriageReturn */}
/**
 * Parses `selector`, optionally with the passed `options`.
 *
 * @param selector Selector to parse.
 * @param options Options for parsing.
 * @returns Returns a two-dimensional array.
 * The first dimension represents selectors separated by commas (eg. `sub1, sub2`),
 * the second contains the relevant tokens for that selector.
 */function parse(selector){const subselects=[];const endIndex=parseSelector(subselects,`${selector}`,0);if(endIndex<selector.length)throw new Error(`Unmatched selector: ${selector.slice(endIndex)}`);return subselects}function parseSelector(subselects,selector,selectorIndex){let tokens=[];function getName(offset){const match=selector.slice(selectorIndex+offset).match(reName);if(!match)throw new Error(`Expected name, found ${selector.slice(selectorIndex)}`);const[name]=match;selectorIndex+=offset+name.length;return unescapeCSS(name)}function stripWhitespace(offset){selectorIndex+=offset;while(selectorIndex<selector.length&&isWhitespace(selector.charCodeAt(selectorIndex)))selectorIndex++}function readValueWithParenthesis(){selectorIndex+=1;const start=selectorIndex;let counter=1;for(;counter>0&&selectorIndex<selector.length;selectorIndex++)if(selector.charCodeAt(selectorIndex)===40/* LeftParenthesis */&&!isEscaped(selectorIndex))counter++;else if(selector.charCodeAt(selectorIndex)===41/* RightParenthesis */&&!isEscaped(selectorIndex))counter--;if(counter)throw new Error("Parenthesis not matched");return unescapeCSS(selector.slice(start,selectorIndex-1))}function isEscaped(pos){let slashCount=0;while(selector.charCodeAt(--pos)===92/* BackSlash */)slashCount++;return(slashCount&1)===1}function ensureNotTraversal(){if(tokens.length>0&&isTraversal(tokens[tokens.length-1]))throw new Error("Did not expect successive traversals.")}function addTraversal(type){if(tokens.length>0&&tokens[tokens.length-1].type===_types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Descendant){tokens[tokens.length-1].type=type;return}ensureNotTraversal();tokens.push({type})}function addSpecialAttribute(name,action){tokens.push({type:_types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Attribute,name,action,value:getName(1),namespace:null,ignoreCase:"quirks"})}
/**
     * We have finished parsing the current part of the selector.
     *
     * Remove descendant tokens at the end if they exist,
     * and return the last index, so that parsing can be
     * picked up from here.
     */function finalizeSubselector(){if(tokens.length&&tokens[tokens.length-1].type===_types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Descendant)tokens.pop();if(tokens.length===0)throw new Error("Empty sub-selector");subselects.push(tokens)}stripWhitespace(0);if(selector.length===selectorIndex)return selectorIndex;loop:while(selectorIndex<selector.length){const firstChar=selector.charCodeAt(selectorIndex);switch(firstChar){
// Whitespace
case 32/* Space */:case 9/* Tab */:case 10/* NewLine */:case 12/* FormFeed */:case 13/* CarriageReturn */:if(tokens.length===0||tokens[0].type!==_types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Descendant){ensureNotTraversal();tokens.push({type:_types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Descendant})}stripWhitespace(1);break;
// Traversals
case 62/* GreaterThan */:addTraversal(_types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Child);stripWhitespace(1);break;case 60/* LessThan */:addTraversal(_types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Parent);stripWhitespace(1);break;case 126/* Tilde */:addTraversal(_types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Sibling);stripWhitespace(1);break;case 43/* Plus */:addTraversal(_types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Adjacent);stripWhitespace(1);break;
// Special attribute selectors: .class, #id
case 46/* Period */:addSpecialAttribute("class",_types__WEBPACK_IMPORTED_MODULE_0__.AttributeAction.Element);break;case 35/* Hash */:addSpecialAttribute("id",_types__WEBPACK_IMPORTED_MODULE_0__.AttributeAction.Equals);break;case 91/* LeftSquareBracket */:{stripWhitespace(1);
// Determine attribute name and namespace
let name;let namespace=null;if(selector.charCodeAt(selectorIndex)===124/* Pipe */)
// Equivalent to no namespace
name=getName(1);else if(selector.startsWith("*|",selectorIndex)){namespace="*";name=getName(2)}else{name=getName(0);if(selector.charCodeAt(selectorIndex)===124/* Pipe */&&selector.charCodeAt(selectorIndex+1)!==61/* Equal */){namespace=name;name=getName(1)}}stripWhitespace(0);
// Determine comparison operation
let action=_types__WEBPACK_IMPORTED_MODULE_0__.AttributeAction.Exists;const possibleAction=actionTypes.get(selector.charCodeAt(selectorIndex));if(possibleAction){action=possibleAction;if(selector.charCodeAt(selectorIndex+1)!==61/* Equal */)throw new Error("Expected `=`");stripWhitespace(2)}else if(selector.charCodeAt(selectorIndex)===61/* Equal */){action=_types__WEBPACK_IMPORTED_MODULE_0__.AttributeAction.Equals;stripWhitespace(1)}
// Determine value
let value="";let ignoreCase=null;if(action!=="exists"){if(isQuote(selector.charCodeAt(selectorIndex))){const quote=selector.charCodeAt(selectorIndex);let sectionEnd=selectorIndex+1;while(sectionEnd<selector.length&&(selector.charCodeAt(sectionEnd)!==quote||isEscaped(sectionEnd)))sectionEnd+=1;if(selector.charCodeAt(sectionEnd)!==quote)throw new Error("Attribute value didn't end");value=unescapeCSS(selector.slice(selectorIndex+1,sectionEnd));selectorIndex=sectionEnd+1}else{const valueStart=selectorIndex;while(selectorIndex<selector.length&&(!isWhitespace(selector.charCodeAt(selectorIndex))&&selector.charCodeAt(selectorIndex)!==93/* RightSquareBracket */||isEscaped(selectorIndex)))selectorIndex+=1;value=unescapeCSS(selector.slice(valueStart,selectorIndex))}stripWhitespace(0);
// See if we have a force ignore flag
const forceIgnore=selector.charCodeAt(selectorIndex)|32;
// If the forceIgnore flag is set (either `i` or `s`), use that value
if(forceIgnore===115/* LowerS */){ignoreCase=false;stripWhitespace(1)}else if(forceIgnore===105/* LowerI */){ignoreCase=true;stripWhitespace(1)}}if(selector.charCodeAt(selectorIndex)!==93/* RightSquareBracket */)throw new Error("Attribute selector didn't terminate");selectorIndex+=1;const attributeSelector={type:_types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Attribute,name,action,value,namespace,ignoreCase};tokens.push(attributeSelector);break}case 58/* Colon */:{if(selector.charCodeAt(selectorIndex+1)===58/* Colon */){tokens.push({type:_types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.PseudoElement,name:getName(2).toLowerCase(),data:selector.charCodeAt(selectorIndex)===40/* LeftParenthesis */?readValueWithParenthesis():null});continue}const name=getName(1).toLowerCase();let data=null;if(selector.charCodeAt(selectorIndex)===40/* LeftParenthesis */)if(unpackPseudos.has(name)){if(isQuote(selector.charCodeAt(selectorIndex+1)))throw new Error(`Pseudo-selector ${name} cannot be quoted`);data=[];selectorIndex=parseSelector(data,selector,selectorIndex+1);if(selector.charCodeAt(selectorIndex)!==41/* RightParenthesis */)throw new Error(`Missing closing parenthesis in :${name} (${selector})`);selectorIndex+=1}else{data=readValueWithParenthesis();if(stripQuotesFromPseudos.has(name)){const quot=data.charCodeAt(0);if(quot===data.charCodeAt(data.length-1)&&isQuote(quot))data=data.slice(1,-1)}data=unescapeCSS(data)}tokens.push({type:_types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Pseudo,name,data});break}case 44/* Comma */:finalizeSubselector();tokens=[];stripWhitespace(1);break;default:{if(selector.startsWith("/*",selectorIndex)){const endIndex=selector.indexOf("*/",selectorIndex+2);if(endIndex<0)throw new Error("Comment was not terminated");selectorIndex=endIndex+2;
// Remove leading whitespace
if(tokens.length===0)stripWhitespace(0);break}let namespace=null;let name;if(firstChar===42/* Asterisk */){selectorIndex+=1;name="*"}else if(firstChar===124/* Pipe */){name="";if(selector.charCodeAt(selectorIndex+1)===124/* Pipe */){addTraversal(_types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.ColumnCombinator);stripWhitespace(2);break}}else if(reName.test(selector.slice(selectorIndex)))name=getName(0);else break loop;if(selector.charCodeAt(selectorIndex)===124/* Pipe */&&selector.charCodeAt(selectorIndex+1)!==124/* Pipe */){namespace=name;if(selector.charCodeAt(selectorIndex+1)===42/* Asterisk */){name="*";selectorIndex+=2}else name=getName(1)}tokens.push(name==="*"?{type:_types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Universal,namespace}:{type:_types__WEBPACK_IMPORTED_MODULE_0__.SelectorType.Tag,name,namespace})}}}finalizeSubselector();return selectorIndex}
/***/},
/***/"./node_modules/css-what/lib/es/types.js":
/*!***********************************************!*\
  !*** ./node_modules/css-what/lib/es/types.js ***!
  \***********************************************/
/***/(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */AttributeAction:()=>/* binding */AttributeAction
/* harmony export */,IgnoreCaseMode:()=>/* binding */IgnoreCaseMode
/* harmony export */,SelectorType:()=>/* binding */SelectorType
/* harmony export */});var SelectorType;(function(SelectorType){SelectorType["Attribute"]="attribute";SelectorType["Pseudo"]="pseudo";SelectorType["PseudoElement"]="pseudo-element";SelectorType["Tag"]="tag";SelectorType["Universal"]="universal";
// Traversals
SelectorType["Adjacent"]="adjacent";SelectorType["Child"]="child";SelectorType["Descendant"]="descendant";SelectorType["Parent"]="parent";SelectorType["Sibling"]="sibling";SelectorType["ColumnCombinator"]="column-combinator"})(SelectorType||(SelectorType={}));
/**
 * Modes for ignore case.
 *
 * This could be updated to an enum, and the object is
 * the current stand-in that will allow code to be updated
 * without big changes.
 */const IgnoreCaseMode={Unknown:null,QuirksMode:"quirks",IgnoreCase:true,CaseSensitive:false};var AttributeAction;(function(AttributeAction){AttributeAction["Any"]="any";AttributeAction["Element"]="element";AttributeAction["End"]="end";AttributeAction["Equals"]="equals";AttributeAction["Exists"]="exists";AttributeAction["Hyphen"]="hyphen";AttributeAction["Not"]="not";AttributeAction["Start"]="start"})(AttributeAction||(AttributeAction={}));
/***/},
/***/"./node_modules/dom-serializer/lib/esm/foreignNames.js":
/*!*************************************************************!*\
  !*** ./node_modules/dom-serializer/lib/esm/foreignNames.js ***!
  \*************************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */attributeNames:()=>/* binding */attributeNames
/* harmony export */,elementNames:()=>/* binding */elementNames
/* harmony export */});const elementNames=new Map(["altGlyph","altGlyphDef","altGlyphItem","animateColor","animateMotion","animateTransform","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","glyphRef","linearGradient","radialGradient","textPath"].map((val=>[val.toLowerCase(),val])));const attributeNames=new Map(["definitionURL","attributeName","attributeType","baseFrequency","baseProfile","calcMode","clipPathUnits","diffuseConstant","edgeMode","filterUnits","glyphRef","gradientTransform","gradientUnits","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","numOctaves","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stitchTiles","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","viewBox","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan"].map((val=>[val.toLowerCase(),val])));
/***/},
/***/"./node_modules/dom-serializer/lib/esm/index.js":
/*!******************************************************!*\
  !*** ./node_modules/dom-serializer/lib/esm/index.js ***!
  \******************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */default:()=>__WEBPACK_DEFAULT_EXPORT__
/* harmony export */,render:()=>/* binding */render
/* harmony export */});
/* harmony import */var domelementtype__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! domelementtype */"./node_modules/domelementtype/lib/esm/index.js");
/* harmony import */var entities__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! entities */"./node_modules/entities/lib/esm/index.js");
/* harmony import */var _foreignNames_js__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! ./foreignNames.js */"./node_modules/dom-serializer/lib/esm/foreignNames.js");
/*
 * Module dependencies
 */
/**
 * Mixed-case SVG and MathML tags & attributes
 * recognized by the HTML parser.
 *
 * @see https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inforeign
 */const unencodedElements=new Set(["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"]);function replaceQuotes(value){return value.replace(/"/g,"&quot;")}
/**
 * Format attributes
 */function formatAttributes(attributes,opts){var _a;if(!attributes)return;const encode=((_a=opts.encodeEntities)!==null&&_a!==void 0?_a:opts.decodeEntities)===false?replaceQuotes:opts.xmlMode||opts.encodeEntities!=="utf8"?entities__WEBPACK_IMPORTED_MODULE_1__.encodeXML:entities__WEBPACK_IMPORTED_MODULE_1__.escapeAttribute;return Object.keys(attributes).map((key=>{var _a,_b;const value=(_a=attributes[key])!==null&&_a!==void 0?_a:"";if(opts.xmlMode==="foreign")
/* Fix up mixed-case attribute names */
key=(_b=_foreignNames_js__WEBPACK_IMPORTED_MODULE_2__.attributeNames.get(key))!==null&&_b!==void 0?_b:key;if(!opts.emptyAttrs&&!opts.xmlMode&&value==="")return key;return`${key}="${encode(value)}"`})).join(" ")}
/**
 * Self-enclosing tags
 */const singleTag=new Set(["area","base","basefont","br","col","command","embed","frame","hr","img","input","isindex","keygen","link","meta","param","source","track","wbr"]);
/**
 * Renders a DOM node or an array of DOM nodes to a string.
 *
 * Can be thought of as the equivalent of the `outerHTML` of the passed node(s).
 *
 * @param node Node to be rendered.
 * @param options Changes serialization behavior
 */function render(node,options={}){const nodes="length"in node?node:[node];let output="";for(let i=0;i<nodes.length;i++)output+=renderNode(nodes[i],options);return output}
/* harmony default export */const __WEBPACK_DEFAULT_EXPORT__=render;function renderNode(node,options){switch(node.type){case domelementtype__WEBPACK_IMPORTED_MODULE_0__.Root:return render(node.children,options);
// @ts-expect-error We don't use `Doctype` yet
case domelementtype__WEBPACK_IMPORTED_MODULE_0__.Doctype:case domelementtype__WEBPACK_IMPORTED_MODULE_0__.Directive:return renderDirective(node);case domelementtype__WEBPACK_IMPORTED_MODULE_0__.Comment:return renderComment(node);case domelementtype__WEBPACK_IMPORTED_MODULE_0__.CDATA:return renderCdata(node);case domelementtype__WEBPACK_IMPORTED_MODULE_0__.Script:case domelementtype__WEBPACK_IMPORTED_MODULE_0__.Style:case domelementtype__WEBPACK_IMPORTED_MODULE_0__.Tag:return renderTag(node,options);case domelementtype__WEBPACK_IMPORTED_MODULE_0__.Text:return renderText(node,options)}}const foreignModeIntegrationPoints=new Set(["mi","mo","mn","ms","mtext","annotation-xml","foreignObject","desc","title"]);const foreignElements=new Set(["svg","math"]);function renderTag(elem,opts){var _a;
// Handle SVG / MathML in HTML
if(opts.xmlMode==="foreign"){
/* Fix up mixed-case element names */
elem.name=(_a=_foreignNames_js__WEBPACK_IMPORTED_MODULE_2__.elementNames.get(elem.name))!==null&&_a!==void 0?_a:elem.name;
/* Exit foreign mode at integration points */if(elem.parent&&foreignModeIntegrationPoints.has(elem.parent.name))opts={...opts,xmlMode:false}}if(!opts.xmlMode&&foreignElements.has(elem.name))opts={...opts,xmlMode:"foreign"};let tag=`<${elem.name}`;const attribs=formatAttributes(elem.attribs,opts);if(attribs)tag+=` ${attribs}`;if(elem.children.length===0&&(opts.xmlMode?// In XML mode or foreign mode, and user hasn't explicitly turned off self-closing tags
opts.selfClosingTags!==false:// User explicitly asked for self-closing tags, even in HTML mode
opts.selfClosingTags&&singleTag.has(elem.name))){if(!opts.xmlMode)tag+=" ";tag+="/>"}else{tag+=">";if(elem.children.length>0)tag+=render(elem.children,opts);if(opts.xmlMode||!singleTag.has(elem.name))tag+=`</${elem.name}>`}return tag}function renderDirective(elem){return`<${elem.data}>`}function renderText(elem,opts){var _a;let data=elem.data||"";
// If entities weren't decoded, no need to encode them back
if(((_a=opts.encodeEntities)!==null&&_a!==void 0?_a:opts.decodeEntities)!==false&&!(!opts.xmlMode&&elem.parent&&unencodedElements.has(elem.parent.name)))data=opts.xmlMode||opts.encodeEntities!=="utf8"?(0,entities__WEBPACK_IMPORTED_MODULE_1__.encodeXML)(data):(0,entities__WEBPACK_IMPORTED_MODULE_1__.escapeText)(data);return data}function renderCdata(elem){return`<![CDATA[${elem.children[0].data}]]>`}function renderComment(elem){return`\x3c!--${elem.data}--\x3e`}
/***/},
/***/"./node_modules/domelementtype/lib/esm/index.js":
/*!******************************************************!*\
  !*** ./node_modules/domelementtype/lib/esm/index.js ***!
  \******************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */CDATA:()=>/* binding */CDATA
/* harmony export */,Comment:()=>/* binding */Comment
/* harmony export */,Directive:()=>/* binding */Directive
/* harmony export */,Doctype:()=>/* binding */Doctype
/* harmony export */,ElementType:()=>/* binding */ElementType
/* harmony export */,Root:()=>/* binding */Root
/* harmony export */,Script:()=>/* binding */Script
/* harmony export */,Style:()=>/* binding */Style
/* harmony export */,Tag:()=>/* binding */Tag
/* harmony export */,Text:()=>/* binding */Text
/* harmony export */,isTag:()=>/* binding */isTag
/* harmony export */});
/** Types of elements found in htmlparser2's DOM */var ElementType;(function(ElementType){
/** Type for the root element of a document */
ElementType["Root"]="root";
/** Type for Text */ElementType["Text"]="text";
/** Type for <? ... ?> */ElementType["Directive"]="directive";
/** Type for <!-- ... --> */ElementType["Comment"]="comment";
/** Type for <script> tags */ElementType["Script"]="script";
/** Type for <style> tags */ElementType["Style"]="style";
/** Type for Any tag */ElementType["Tag"]="tag";
/** Type for <![CDATA[ ... ]]> */ElementType["CDATA"]="cdata";
/** Type for <!doctype ...> */ElementType["Doctype"]="doctype"})(ElementType||(ElementType={}));
/**
 * Tests whether an element is a tag or not.
 *
 * @param elem Element to test
 */function isTag(elem){return elem.type===ElementType.Tag||elem.type===ElementType.Script||elem.type===ElementType.Style}
// Exports for backwards compatibility
/** Type for the root element of a document */const Root=ElementType.Root;
/** Type for Text */const Text=ElementType.Text;
/** Type for <? ... ?> */const Directive=ElementType.Directive;
/** Type for <!-- ... --> */const Comment=ElementType.Comment;
/** Type for <script> tags */const Script=ElementType.Script;
/** Type for <style> tags */const Style=ElementType.Style;
/** Type for Any tag */const Tag=ElementType.Tag;
/** Type for <![CDATA[ ... ]]> */const CDATA=ElementType.CDATA;
/** Type for <!doctype ...> */const Doctype=ElementType.Doctype;
/***/},
/***/"./node_modules/domhandler/lib/esm/index.js":
/*!**************************************************!*\
  !*** ./node_modules/domhandler/lib/esm/index.js ***!
  \**************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */CDATA:()=>/* reexport safe */_node_js__WEBPACK_IMPORTED_MODULE_1__.CDATA
/* harmony export */,Comment:()=>/* reexport safe */_node_js__WEBPACK_IMPORTED_MODULE_1__.Comment
/* harmony export */,DataNode:()=>/* reexport safe */_node_js__WEBPACK_IMPORTED_MODULE_1__.DataNode
/* harmony export */,Document:()=>/* reexport safe */_node_js__WEBPACK_IMPORTED_MODULE_1__.Document
/* harmony export */,DomHandler:()=>/* binding */DomHandler
/* harmony export */,Element:()=>/* reexport safe */_node_js__WEBPACK_IMPORTED_MODULE_1__.Element
/* harmony export */,Node:()=>/* reexport safe */_node_js__WEBPACK_IMPORTED_MODULE_1__.Node
/* harmony export */,NodeWithChildren:()=>/* reexport safe */_node_js__WEBPACK_IMPORTED_MODULE_1__.NodeWithChildren
/* harmony export */,ProcessingInstruction:()=>/* reexport safe */_node_js__WEBPACK_IMPORTED_MODULE_1__.ProcessingInstruction
/* harmony export */,Text:()=>/* reexport safe */_node_js__WEBPACK_IMPORTED_MODULE_1__.Text
/* harmony export */,cloneNode:()=>/* reexport safe */_node_js__WEBPACK_IMPORTED_MODULE_1__.cloneNode
/* harmony export */,default:()=>__WEBPACK_DEFAULT_EXPORT__
/* harmony export */,hasChildren:()=>/* reexport safe */_node_js__WEBPACK_IMPORTED_MODULE_1__.hasChildren
/* harmony export */,isCDATA:()=>/* reexport safe */_node_js__WEBPACK_IMPORTED_MODULE_1__.isCDATA
/* harmony export */,isComment:()=>/* reexport safe */_node_js__WEBPACK_IMPORTED_MODULE_1__.isComment
/* harmony export */,isDirective:()=>/* reexport safe */_node_js__WEBPACK_IMPORTED_MODULE_1__.isDirective
/* harmony export */,isDocument:()=>/* reexport safe */_node_js__WEBPACK_IMPORTED_MODULE_1__.isDocument
/* harmony export */,isTag:()=>/* reexport safe */_node_js__WEBPACK_IMPORTED_MODULE_1__.isTag
/* harmony export */,isText:()=>/* reexport safe */_node_js__WEBPACK_IMPORTED_MODULE_1__.isText
/* harmony export */});
/* harmony import */var domelementtype__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! domelementtype */"./node_modules/domelementtype/lib/esm/index.js");
/* harmony import */var _node_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./node.js */"./node_modules/domhandler/lib/esm/node.js");
// Default options
const defaultOpts={withStartIndices:false,withEndIndices:false,xmlMode:false};class DomHandler{
/**
     * @param callback Called once parsing has completed.
     * @param options Settings for the handler.
     * @param elementCB Callback whenever a tag is closed.
     */
constructor(callback,options,elementCB){
/** The elements of the DOM */
this.dom=[];
/** The root element for the DOM */this.root=new _node_js__WEBPACK_IMPORTED_MODULE_1__.Document(this.dom);
/** Indicated whether parsing has been completed. */this.done=false;
/** Stack of open tags. */this.tagStack=[this.root];
/** A data node that is still being written to. */this.lastNode=null;
/** Reference to the parser instance. Used for location information. */this.parser=null;
// Make it possible to skip arguments, for backwards-compatibility
if(typeof options==="function"){elementCB=options;options=defaultOpts}if(typeof callback==="object"){options=callback;callback=void 0}this.callback=callback!==null&&callback!==void 0?callback:null;this.options=options!==null&&options!==void 0?options:defaultOpts;this.elementCB=elementCB!==null&&elementCB!==void 0?elementCB:null}onparserinit(parser){this.parser=parser}
// Resets the handler back to starting state
onreset(){this.dom=[];this.root=new _node_js__WEBPACK_IMPORTED_MODULE_1__.Document(this.dom);this.done=false;this.tagStack=[this.root];this.lastNode=null;this.parser=null}
// Signals the handler that parsing is done
onend(){if(this.done)return;this.done=true;this.parser=null;this.handleCallback(null)}onerror(error){this.handleCallback(error)}onclosetag(){this.lastNode=null;const elem=this.tagStack.pop();if(this.options.withEndIndices)elem.endIndex=this.parser.endIndex;if(this.elementCB)this.elementCB(elem)}onopentag(name,attribs){const type=this.options.xmlMode?domelementtype__WEBPACK_IMPORTED_MODULE_0__.ElementType.Tag:void 0;const element=new _node_js__WEBPACK_IMPORTED_MODULE_1__.Element(name,attribs,void 0,type);this.addNode(element);this.tagStack.push(element)}ontext(data){const{lastNode}=this;if(lastNode&&lastNode.type===domelementtype__WEBPACK_IMPORTED_MODULE_0__.ElementType.Text){lastNode.data+=data;if(this.options.withEndIndices)lastNode.endIndex=this.parser.endIndex}else{const node=new _node_js__WEBPACK_IMPORTED_MODULE_1__.Text(data);this.addNode(node);this.lastNode=node}}oncomment(data){if(this.lastNode&&this.lastNode.type===domelementtype__WEBPACK_IMPORTED_MODULE_0__.ElementType.Comment){this.lastNode.data+=data;return}const node=new _node_js__WEBPACK_IMPORTED_MODULE_1__.Comment(data);this.addNode(node);this.lastNode=node}oncommentend(){this.lastNode=null}oncdatastart(){const text=new _node_js__WEBPACK_IMPORTED_MODULE_1__.Text("");const node=new _node_js__WEBPACK_IMPORTED_MODULE_1__.CDATA([text]);this.addNode(node);text.parent=node;this.lastNode=text}oncdataend(){this.lastNode=null}onprocessinginstruction(name,data){const node=new _node_js__WEBPACK_IMPORTED_MODULE_1__.ProcessingInstruction(name,data);this.addNode(node)}handleCallback(error){if(typeof this.callback==="function")this.callback(error,this.dom);else if(error)throw error}addNode(node){const parent=this.tagStack[this.tagStack.length-1];const previousSibling=parent.children[parent.children.length-1];if(this.options.withStartIndices)node.startIndex=this.parser.startIndex;if(this.options.withEndIndices)node.endIndex=this.parser.endIndex;parent.children.push(node);if(previousSibling){node.prev=previousSibling;previousSibling.next=node}node.parent=parent;this.lastNode=null}}
/* harmony default export */const __WEBPACK_DEFAULT_EXPORT__=DomHandler;
/***/},
/***/"./node_modules/domhandler/lib/esm/node.js":
/*!*************************************************!*\
  !*** ./node_modules/domhandler/lib/esm/node.js ***!
  \*************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */CDATA:()=>/* binding */CDATA
/* harmony export */,Comment:()=>/* binding */Comment
/* harmony export */,DataNode:()=>/* binding */DataNode
/* harmony export */,Document:()=>/* binding */Document
/* harmony export */,Element:()=>/* binding */Element
/* harmony export */,Node:()=>/* binding */Node
/* harmony export */,NodeWithChildren:()=>/* binding */NodeWithChildren
/* harmony export */,ProcessingInstruction:()=>/* binding */ProcessingInstruction
/* harmony export */,Text:()=>/* binding */Text
/* harmony export */,cloneNode:()=>/* binding */cloneNode
/* harmony export */,hasChildren:()=>/* binding */hasChildren
/* harmony export */,isCDATA:()=>/* binding */isCDATA
/* harmony export */,isComment:()=>/* binding */isComment
/* harmony export */,isDirective:()=>/* binding */isDirective
/* harmony export */,isDocument:()=>/* binding */isDocument
/* harmony export */,isTag:()=>/* binding */isTag
/* harmony export */,isText:()=>/* binding */isText
/* harmony export */});
/* harmony import */var domelementtype__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! domelementtype */"./node_modules/domelementtype/lib/esm/index.js");
/**
 * This object will be used as the prototype for Nodes when creating a
 * DOM-Level-1-compliant structure.
 */class Node{constructor(){
/** Parent of the node */
this.parent=null;
/** Previous sibling */this.prev=null;
/** Next sibling */this.next=null;
/** The start index of the node. Requires `withStartIndices` on the handler to be `true. */this.startIndex=null;
/** The end index of the node. Requires `withEndIndices` on the handler to be `true. */this.endIndex=null}
// Read-write aliases for properties
/**
     * Same as {@link parent}.
     * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
     */
get parentNode(){return this.parent}set parentNode(parent){this.parent=parent}
/**
     * Same as {@link prev}.
     * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
     */get previousSibling(){return this.prev}set previousSibling(prev){this.prev=prev}
/**
     * Same as {@link next}.
     * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
     */get nextSibling(){return this.next}set nextSibling(next){this.next=next}
/**
     * Clone this node, and optionally its children.
     *
     * @param recursive Clone child nodes as well.
     * @returns A clone of the node.
     */cloneNode(recursive=false){return cloneNode(this,recursive)}}
/**
 * A node that contains some data.
 */class DataNode extends Node{
/**
     * @param data The content of the data node
     */
constructor(data){super();this.data=data}
/**
     * Same as {@link data}.
     * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
     */get nodeValue(){return this.data}set nodeValue(data){this.data=data}}
/**
 * Text within the document.
 */class Text extends DataNode{constructor(){super(...arguments);this.type=domelementtype__WEBPACK_IMPORTED_MODULE_0__.ElementType.Text}get nodeType(){return 3}}
/**
 * Comments within the document.
 */class Comment extends DataNode{constructor(){super(...arguments);this.type=domelementtype__WEBPACK_IMPORTED_MODULE_0__.ElementType.Comment}get nodeType(){return 8}}
/**
 * Processing instructions, including doc types.
 */class ProcessingInstruction extends DataNode{constructor(name,data){super(data);this.name=name;this.type=domelementtype__WEBPACK_IMPORTED_MODULE_0__.ElementType.Directive}get nodeType(){return 1}}
/**
 * A `Node` that can have children.
 */class NodeWithChildren extends Node{
/**
     * @param children Children of the node. Only certain node types can have children.
     */
constructor(children){super();this.children=children}
// Aliases
/** First child of the node. */
get firstChild(){var _a;return(_a=this.children[0])!==null&&_a!==void 0?_a:null}
/** Last child of the node. */get lastChild(){return this.children.length>0?this.children[this.children.length-1]:null}
/**
     * Same as {@link children}.
     * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
     */get childNodes(){return this.children}set childNodes(children){this.children=children}}class CDATA extends NodeWithChildren{constructor(){super(...arguments);this.type=domelementtype__WEBPACK_IMPORTED_MODULE_0__.ElementType.CDATA}get nodeType(){return 4}}
/**
 * The root node of the document.
 */class Document extends NodeWithChildren{constructor(){super(...arguments);this.type=domelementtype__WEBPACK_IMPORTED_MODULE_0__.ElementType.Root}get nodeType(){return 9}}
/**
 * An element within the DOM.
 */class Element extends NodeWithChildren{
/**
     * @param name Name of the tag, eg. `div`, `span`.
     * @param attribs Object mapping attribute names to attribute values.
     * @param children Children of the node.
     */
constructor(name,attribs,children=[],type=(name==="script"?domelementtype__WEBPACK_IMPORTED_MODULE_0__.ElementType.Script:name==="style"?domelementtype__WEBPACK_IMPORTED_MODULE_0__.ElementType.Style:domelementtype__WEBPACK_IMPORTED_MODULE_0__.ElementType.Tag)){super(children);this.name=name;this.attribs=attribs;this.type=type}get nodeType(){return 1}
// DOM Level 1 aliases
/**
     * Same as {@link name}.
     * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
     */
get tagName(){return this.name}set tagName(name){this.name=name}get attributes(){return Object.keys(this.attribs).map((name=>{var _a,_b;return{name,value:this.attribs[name],namespace:(_a=this["x-attribsNamespace"])===null||_a===void 0?void 0:_a[name],prefix:(_b=this["x-attribsPrefix"])===null||_b===void 0?void 0:_b[name]}}))}}
/**
 * @param node Node to check.
 * @returns `true` if the node is a `Element`, `false` otherwise.
 */function isTag(node){return(0,domelementtype__WEBPACK_IMPORTED_MODULE_0__.isTag)(node)}
/**
 * @param node Node to check.
 * @returns `true` if the node has the type `CDATA`, `false` otherwise.
 */function isCDATA(node){return node.type===domelementtype__WEBPACK_IMPORTED_MODULE_0__.ElementType.CDATA}
/**
 * @param node Node to check.
 * @returns `true` if the node has the type `Text`, `false` otherwise.
 */function isText(node){return node.type===domelementtype__WEBPACK_IMPORTED_MODULE_0__.ElementType.Text}
/**
 * @param node Node to check.
 * @returns `true` if the node has the type `Comment`, `false` otherwise.
 */function isComment(node){return node.type===domelementtype__WEBPACK_IMPORTED_MODULE_0__.ElementType.Comment}
/**
 * @param node Node to check.
 * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.
 */function isDirective(node){return node.type===domelementtype__WEBPACK_IMPORTED_MODULE_0__.ElementType.Directive}
/**
 * @param node Node to check.
 * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.
 */function isDocument(node){return node.type===domelementtype__WEBPACK_IMPORTED_MODULE_0__.ElementType.Root}
/**
 * @param node Node to check.
 * @returns `true` if the node has children, `false` otherwise.
 */function hasChildren(node){return Object.prototype.hasOwnProperty.call(node,"children")}
/**
 * Clone a node, and optionally its children.
 *
 * @param recursive Clone child nodes as well.
 * @returns A clone of the node.
 */function cloneNode(node,recursive=false){let result;if(isText(node))result=new Text(node.data);else if(isComment(node))result=new Comment(node.data);else if(isTag(node)){const children=recursive?cloneChildren(node.children):[];const clone=new Element(node.name,{...node.attribs},children);children.forEach((child=>child.parent=clone));if(node.namespace!=null)clone.namespace=node.namespace;if(node["x-attribsNamespace"])clone["x-attribsNamespace"]={...node["x-attribsNamespace"]};if(node["x-attribsPrefix"])clone["x-attribsPrefix"]={...node["x-attribsPrefix"]};result=clone}else if(isCDATA(node)){const children=recursive?cloneChildren(node.children):[];const clone=new CDATA(children);children.forEach((child=>child.parent=clone));result=clone}else if(isDocument(node)){const children=recursive?cloneChildren(node.children):[];const clone=new Document(children);children.forEach((child=>child.parent=clone));if(node["x-mode"])clone["x-mode"]=node["x-mode"];result=clone}else if(isDirective(node)){const instruction=new ProcessingInstruction(node.name,node.data);if(node["x-name"]!=null){instruction["x-name"]=node["x-name"];instruction["x-publicId"]=node["x-publicId"];instruction["x-systemId"]=node["x-systemId"]}result=instruction}else throw new Error(`Not implemented yet: ${node.type}`);result.startIndex=node.startIndex;result.endIndex=node.endIndex;if(node.sourceCodeLocation!=null)result.sourceCodeLocation=node.sourceCodeLocation;return result}function cloneChildren(childs){const children=childs.map((child=>cloneNode(child,true)));for(let i=1;i<children.length;i++){children[i].prev=children[i-1];children[i-1].next=children[i]}return children}
/***/},
/***/"./node_modules/domutils/lib/esm/feeds.js":
/*!************************************************!*\
  !*** ./node_modules/domutils/lib/esm/feeds.js ***!
  \************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */getFeed:()=>/* binding */getFeed
/* harmony export */});
/* harmony import */var _stringify_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ./stringify.js */"./node_modules/domutils/lib/esm/stringify.js");
/* harmony import */var _legacy_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./legacy.js */"./node_modules/domutils/lib/esm/legacy.js");
/**
 * Get the feed object from the root of a DOM tree.
 *
 * @category Feeds
 * @param doc - The DOM to to extract the feed from.
 * @returns The feed.
 */function getFeed(doc){const feedRoot=getOneElement(isValidFeed,doc);return!feedRoot?null:feedRoot.name==="feed"?getAtomFeed(feedRoot):getRssFeed(feedRoot)}
/**
 * Parse an Atom feed.
 *
 * @param feedRoot The root of the feed.
 * @returns The parsed feed.
 */function getAtomFeed(feedRoot){var _a;const childs=feedRoot.children;const feed={type:"atom",items:(0,_legacy_js__WEBPACK_IMPORTED_MODULE_1__.getElementsByTagName)("entry",childs).map((item=>{var _a;const{children}=item;const entry={media:getMediaElements(children)};addConditionally(entry,"id","id",children);addConditionally(entry,"title","title",children);const href=(_a=getOneElement("link",children))===null||_a===void 0?void 0:_a.attribs["href"];if(href)entry.link=href;const description=fetch("summary",children)||fetch("content",children);if(description)entry.description=description;const pubDate=fetch("updated",children);if(pubDate)entry.pubDate=new Date(pubDate);return entry}))};addConditionally(feed,"id","id",childs);addConditionally(feed,"title","title",childs);const href=(_a=getOneElement("link",childs))===null||_a===void 0?void 0:_a.attribs["href"];if(href)feed.link=href;addConditionally(feed,"description","subtitle",childs);const updated=fetch("updated",childs);if(updated)feed.updated=new Date(updated);addConditionally(feed,"author","email",childs,true);return feed}
/**
 * Parse a RSS feed.
 *
 * @param feedRoot The root of the feed.
 * @returns The parsed feed.
 */function getRssFeed(feedRoot){var _a,_b;const childs=(_b=(_a=getOneElement("channel",feedRoot.children))===null||_a===void 0?void 0:_a.children)!==null&&_b!==void 0?_b:[];const feed={type:feedRoot.name.substr(0,3),id:"",items:(0,_legacy_js__WEBPACK_IMPORTED_MODULE_1__.getElementsByTagName)("item",feedRoot.children).map((item=>{const{children}=item;const entry={media:getMediaElements(children)};addConditionally(entry,"id","guid",children);addConditionally(entry,"title","title",children);addConditionally(entry,"link","link",children);addConditionally(entry,"description","description",children);const pubDate=fetch("pubDate",children)||fetch("dc:date",children);if(pubDate)entry.pubDate=new Date(pubDate);return entry}))};addConditionally(feed,"title","title",childs);addConditionally(feed,"link","link",childs);addConditionally(feed,"description","description",childs);const updated=fetch("lastBuildDate",childs);if(updated)feed.updated=new Date(updated);addConditionally(feed,"author","managingEditor",childs,true);return feed}const MEDIA_KEYS_STRING=["url","type","lang"];const MEDIA_KEYS_INT=["fileSize","bitrate","framerate","samplingrate","channels","duration","height","width"];
/**
 * Get all media elements of a feed item.
 *
 * @param where Nodes to search in.
 * @returns Media elements.
 */function getMediaElements(where){return(0,_legacy_js__WEBPACK_IMPORTED_MODULE_1__.getElementsByTagName)("media:content",where).map((elem=>{const{attribs}=elem;const media={medium:attribs["medium"],isDefault:!!attribs["isDefault"]};for(const attrib of MEDIA_KEYS_STRING)if(attribs[attrib])media[attrib]=attribs[attrib];for(const attrib of MEDIA_KEYS_INT)if(attribs[attrib])media[attrib]=parseInt(attribs[attrib],10);if(attribs["expression"])media.expression=attribs["expression"];return media}))}
/**
 * Get one element by tag name.
 *
 * @param tagName Tag name to look for
 * @param node Node to search in
 * @returns The element or null
 */function getOneElement(tagName,node){return(0,_legacy_js__WEBPACK_IMPORTED_MODULE_1__.getElementsByTagName)(tagName,node,true,1)[0]}
/**
 * Get the text content of an element with a certain tag name.
 *
 * @param tagName Tag name to look for.
 * @param where Node to search in.
 * @param recurse Whether to recurse into child nodes.
 * @returns The text content of the element.
 */function fetch(tagName,where,recurse=false){return(0,_stringify_js__WEBPACK_IMPORTED_MODULE_0__.textContent)((0,_legacy_js__WEBPACK_IMPORTED_MODULE_1__.getElementsByTagName)(tagName,where,recurse,1)).trim()}
/**
 * Adds a property to an object if it has a value.
 *
 * @param obj Object to be extended
 * @param prop Property name
 * @param tagName Tag name that contains the conditionally added property
 * @param where Element to search for the property
 * @param recurse Whether to recurse into child nodes.
 */function addConditionally(obj,prop,tagName,where,recurse=false){const val=fetch(tagName,where,recurse);if(val)obj[prop]=val}
/**
 * Checks if an element is a feed root node.
 *
 * @param value The name of the element to check.
 * @returns Whether an element is a feed root node.
 */function isValidFeed(value){return value==="rss"||value==="feed"||value==="rdf:RDF"}
//# sourceMappingURL=feeds.js.map
/***/},
/***/"./node_modules/domutils/lib/esm/helpers.js":
/*!**************************************************!*\
  !*** ./node_modules/domutils/lib/esm/helpers.js ***!
  \**************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */DocumentPosition:()=>/* binding */DocumentPosition
/* harmony export */,compareDocumentPosition:()=>/* binding */compareDocumentPosition
/* harmony export */,removeSubsets:()=>/* binding */removeSubsets
/* harmony export */,uniqueSort:()=>/* binding */uniqueSort
/* harmony export */});
/* harmony import */var domhandler__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! domhandler */"./node_modules/domhandler/lib/esm/index.js");
/**
 * Given an array of nodes, remove any member that is contained by another
 * member.
 *
 * @category Helpers
 * @param nodes Nodes to filter.
 * @returns Remaining nodes that aren't contained by other nodes.
 */function removeSubsets(nodes){let idx=nodes.length;
/*
     * Check if each node (or one of its ancestors) is already contained in the
     * array.
     */while(--idx>=0){const node=nodes[idx];
/*
         * Remove the node if it is not unique.
         * We are going through the array from the end, so we only
         * have to check nodes that preceed the node under consideration in the array.
         */if(idx>0&&nodes.lastIndexOf(node,idx-1)>=0){nodes.splice(idx,1);continue}for(let ancestor=node.parent;ancestor;ancestor=ancestor.parent)if(nodes.includes(ancestor)){nodes.splice(idx,1);break}}return nodes}
/**
 * @category Helpers
 * @see {@link http://dom.spec.whatwg.org/#dom-node-comparedocumentposition}
 */var DocumentPosition;(function(DocumentPosition){DocumentPosition[DocumentPosition["DISCONNECTED"]=1]="DISCONNECTED";DocumentPosition[DocumentPosition["PRECEDING"]=2]="PRECEDING";DocumentPosition[DocumentPosition["FOLLOWING"]=4]="FOLLOWING";DocumentPosition[DocumentPosition["CONTAINS"]=8]="CONTAINS";DocumentPosition[DocumentPosition["CONTAINED_BY"]=16]="CONTAINED_BY"})(DocumentPosition||(DocumentPosition={}));
/**
 * Compare the position of one node against another node in any other document,
 * returning a bitmask with the values from {@link DocumentPosition}.
 *
 * Document order:
 * > There is an ordering, document order, defined on all the nodes in the
 * > document corresponding to the order in which the first character of the
 * > XML representation of each node occurs in the XML representation of the
 * > document after expansion of general entities. Thus, the document element
 * > node will be the first node. Element nodes occur before their children.
 * > Thus, document order orders element nodes in order of the occurrence of
 * > their start-tag in the XML (after expansion of entities). The attribute
 * > nodes of an element occur after the element and before its children. The
 * > relative order of attribute nodes is implementation-dependent.
 *
 * Source:
 * http://www.w3.org/TR/DOM-Level-3-Core/glossary.html#dt-document-order
 *
 * @category Helpers
 * @param nodeA The first node to use in the comparison
 * @param nodeB The second node to use in the comparison
 * @returns A bitmask describing the input nodes' relative position.
 *
 * See http://dom.spec.whatwg.org/#dom-node-comparedocumentposition for
 * a description of these values.
 */function compareDocumentPosition(nodeA,nodeB){const aParents=[];const bParents=[];if(nodeA===nodeB)return 0;let current=(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(nodeA)?nodeA:nodeA.parent;while(current){aParents.unshift(current);current=current.parent}current=(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(nodeB)?nodeB:nodeB.parent;while(current){bParents.unshift(current);current=current.parent}const maxIdx=Math.min(aParents.length,bParents.length);let idx=0;while(idx<maxIdx&&aParents[idx]===bParents[idx])idx++;if(idx===0)return DocumentPosition.DISCONNECTED;const sharedParent=aParents[idx-1];const siblings=sharedParent.children;const aSibling=aParents[idx];const bSibling=bParents[idx];if(siblings.indexOf(aSibling)>siblings.indexOf(bSibling)){if(sharedParent===nodeB)return DocumentPosition.FOLLOWING|DocumentPosition.CONTAINED_BY;return DocumentPosition.FOLLOWING}if(sharedParent===nodeA)return DocumentPosition.PRECEDING|DocumentPosition.CONTAINS;return DocumentPosition.PRECEDING}
/**
 * Sort an array of nodes based on their relative position in the document,
 * removing any duplicate nodes. If the array contains nodes that do not belong
 * to the same document, sort order is unspecified.
 *
 * @category Helpers
 * @param nodes Array of DOM nodes.
 * @returns Collection of unique nodes, sorted in document order.
 */function uniqueSort(nodes){nodes=nodes.filter(((node,i,arr)=>!arr.includes(node,i+1)));nodes.sort(((a,b)=>{const relative=compareDocumentPosition(a,b);if(relative&DocumentPosition.PRECEDING)return-1;else if(relative&DocumentPosition.FOLLOWING)return 1;return 0}));return nodes}
//# sourceMappingURL=helpers.js.map
/***/},
/***/"./node_modules/domutils/lib/esm/index.js":
/*!************************************************!*\
  !*** ./node_modules/domutils/lib/esm/index.js ***!
  \************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */DocumentPosition:()=>/* reexport safe */_helpers_js__WEBPACK_IMPORTED_MODULE_5__.DocumentPosition
/* harmony export */,append:()=>/* reexport safe */_manipulation_js__WEBPACK_IMPORTED_MODULE_2__.append
/* harmony export */,appendChild:()=>/* reexport safe */_manipulation_js__WEBPACK_IMPORTED_MODULE_2__.appendChild
/* harmony export */,compareDocumentPosition:()=>/* reexport safe */_helpers_js__WEBPACK_IMPORTED_MODULE_5__.compareDocumentPosition
/* harmony export */,existsOne:()=>/* reexport safe */_querying_js__WEBPACK_IMPORTED_MODULE_3__.existsOne
/* harmony export */,filter:()=>/* reexport safe */_querying_js__WEBPACK_IMPORTED_MODULE_3__.filter
/* harmony export */,find:()=>/* reexport safe */_querying_js__WEBPACK_IMPORTED_MODULE_3__.find
/* harmony export */,findAll:()=>/* reexport safe */_querying_js__WEBPACK_IMPORTED_MODULE_3__.findAll
/* harmony export */,findOne:()=>/* reexport safe */_querying_js__WEBPACK_IMPORTED_MODULE_3__.findOne
/* harmony export */,findOneChild:()=>/* reexport safe */_querying_js__WEBPACK_IMPORTED_MODULE_3__.findOneChild
/* harmony export */,getAttributeValue:()=>/* reexport safe */_traversal_js__WEBPACK_IMPORTED_MODULE_1__.getAttributeValue
/* harmony export */,getChildren:()=>/* reexport safe */_traversal_js__WEBPACK_IMPORTED_MODULE_1__.getChildren
/* harmony export */,getElementById:()=>/* reexport safe */_legacy_js__WEBPACK_IMPORTED_MODULE_4__.getElementById
/* harmony export */,getElements:()=>/* reexport safe */_legacy_js__WEBPACK_IMPORTED_MODULE_4__.getElements
/* harmony export */,getElementsByClassName:()=>/* reexport safe */_legacy_js__WEBPACK_IMPORTED_MODULE_4__.getElementsByClassName
/* harmony export */,getElementsByTagName:()=>/* reexport safe */_legacy_js__WEBPACK_IMPORTED_MODULE_4__.getElementsByTagName
/* harmony export */,getElementsByTagType:()=>/* reexport safe */_legacy_js__WEBPACK_IMPORTED_MODULE_4__.getElementsByTagType
/* harmony export */,getFeed:()=>/* reexport safe */_feeds_js__WEBPACK_IMPORTED_MODULE_6__.getFeed
/* harmony export */,getInnerHTML:()=>/* reexport safe */_stringify_js__WEBPACK_IMPORTED_MODULE_0__.getInnerHTML
/* harmony export */,getName:()=>/* reexport safe */_traversal_js__WEBPACK_IMPORTED_MODULE_1__.getName
/* harmony export */,getOuterHTML:()=>/* reexport safe */_stringify_js__WEBPACK_IMPORTED_MODULE_0__.getOuterHTML
/* harmony export */,getParent:()=>/* reexport safe */_traversal_js__WEBPACK_IMPORTED_MODULE_1__.getParent
/* harmony export */,getSiblings:()=>/* reexport safe */_traversal_js__WEBPACK_IMPORTED_MODULE_1__.getSiblings
/* harmony export */,getText:()=>/* reexport safe */_stringify_js__WEBPACK_IMPORTED_MODULE_0__.getText
/* harmony export */,hasAttrib:()=>/* reexport safe */_traversal_js__WEBPACK_IMPORTED_MODULE_1__.hasAttrib
/* harmony export */,hasChildren:()=>/* reexport safe */domhandler__WEBPACK_IMPORTED_MODULE_7__.hasChildren
/* harmony export */,innerText:()=>/* reexport safe */_stringify_js__WEBPACK_IMPORTED_MODULE_0__.innerText
/* harmony export */,isCDATA:()=>/* reexport safe */domhandler__WEBPACK_IMPORTED_MODULE_7__.isCDATA
/* harmony export */,isComment:()=>/* reexport safe */domhandler__WEBPACK_IMPORTED_MODULE_7__.isComment
/* harmony export */,isDocument:()=>/* reexport safe */domhandler__WEBPACK_IMPORTED_MODULE_7__.isDocument
/* harmony export */,isTag:()=>/* reexport safe */domhandler__WEBPACK_IMPORTED_MODULE_7__.isTag
/* harmony export */,isText:()=>/* reexport safe */domhandler__WEBPACK_IMPORTED_MODULE_7__.isText
/* harmony export */,nextElementSibling:()=>/* reexport safe */_traversal_js__WEBPACK_IMPORTED_MODULE_1__.nextElementSibling
/* harmony export */,prepend:()=>/* reexport safe */_manipulation_js__WEBPACK_IMPORTED_MODULE_2__.prepend
/* harmony export */,prependChild:()=>/* reexport safe */_manipulation_js__WEBPACK_IMPORTED_MODULE_2__.prependChild
/* harmony export */,prevElementSibling:()=>/* reexport safe */_traversal_js__WEBPACK_IMPORTED_MODULE_1__.prevElementSibling
/* harmony export */,removeElement:()=>/* reexport safe */_manipulation_js__WEBPACK_IMPORTED_MODULE_2__.removeElement
/* harmony export */,removeSubsets:()=>/* reexport safe */_helpers_js__WEBPACK_IMPORTED_MODULE_5__.removeSubsets
/* harmony export */,replaceElement:()=>/* reexport safe */_manipulation_js__WEBPACK_IMPORTED_MODULE_2__.replaceElement
/* harmony export */,testElement:()=>/* reexport safe */_legacy_js__WEBPACK_IMPORTED_MODULE_4__.testElement
/* harmony export */,textContent:()=>/* reexport safe */_stringify_js__WEBPACK_IMPORTED_MODULE_0__.textContent
/* harmony export */,uniqueSort:()=>/* reexport safe */_helpers_js__WEBPACK_IMPORTED_MODULE_5__.uniqueSort
/* harmony export */});
/* harmony import */var _stringify_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ./stringify.js */"./node_modules/domutils/lib/esm/stringify.js");
/* harmony import */var _traversal_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./traversal.js */"./node_modules/domutils/lib/esm/traversal.js");
/* harmony import */var _manipulation_js__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! ./manipulation.js */"./node_modules/domutils/lib/esm/manipulation.js");
/* harmony import */var _querying_js__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(/*! ./querying.js */"./node_modules/domutils/lib/esm/querying.js");
/* harmony import */var _legacy_js__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(/*! ./legacy.js */"./node_modules/domutils/lib/esm/legacy.js");
/* harmony import */var _helpers_js__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(/*! ./helpers.js */"./node_modules/domutils/lib/esm/helpers.js");
/* harmony import */var _feeds_js__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(/*! ./feeds.js */"./node_modules/domutils/lib/esm/feeds.js");
/* harmony import */var domhandler__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__(/*! domhandler */"./node_modules/domhandler/lib/esm/index.js");
/** @deprecated Use these methods from `domhandler` directly. */
//# sourceMappingURL=index.js.map
/***/},
/***/"./node_modules/domutils/lib/esm/legacy.js":
/*!*************************************************!*\
  !*** ./node_modules/domutils/lib/esm/legacy.js ***!
  \*************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */getElementById:()=>/* binding */getElementById
/* harmony export */,getElements:()=>/* binding */getElements
/* harmony export */,getElementsByClassName:()=>/* binding */getElementsByClassName
/* harmony export */,getElementsByTagName:()=>/* binding */getElementsByTagName
/* harmony export */,getElementsByTagType:()=>/* binding */getElementsByTagType
/* harmony export */,testElement:()=>/* binding */testElement
/* harmony export */});
/* harmony import */var domhandler__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! domhandler */"./node_modules/domhandler/lib/esm/index.js");
/* harmony import */var _querying_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./querying.js */"./node_modules/domutils/lib/esm/querying.js");
/**
 * A map of functions to check nodes against.
 */const Checks={tag_name(name){if(typeof name==="function")return elem=>(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag)(elem)&&name(elem.name);else if(name==="*")return domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag;return elem=>(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag)(elem)&&elem.name===name},tag_type(type){if(typeof type==="function")return elem=>type(elem.type);return elem=>elem.type===type},tag_contains(data){if(typeof data==="function")return elem=>(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isText)(elem)&&data(elem.data);return elem=>(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isText)(elem)&&elem.data===data}};
/**
 * Returns a function to check whether a node has an attribute with a particular
 * value.
 *
 * @param attrib Attribute to check.
 * @param value Attribute value to look for.
 * @returns A function to check whether the a node has an attribute with a
 *   particular value.
 */function getAttribCheck(attrib,value){if(typeof value==="function")return elem=>(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag)(elem)&&value(elem.attribs[attrib]);return elem=>(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag)(elem)&&elem.attribs[attrib]===value}
/**
 * Returns a function that returns `true` if either of the input functions
 * returns `true` for a node.
 *
 * @param a First function to combine.
 * @param b Second function to combine.
 * @returns A function taking a node and returning `true` if either of the input
 *   functions returns `true` for the node.
 */function combineFuncs(a,b){return elem=>a(elem)||b(elem)}
/**
 * Returns a function that executes all checks in `options` and returns `true`
 * if any of them match a node.
 *
 * @param options An object describing nodes to look for.
 * @returns A function that executes all checks in `options` and returns `true`
 *   if any of them match a node.
 */function compileTest(options){const funcs=Object.keys(options).map((key=>{const value=options[key];return Object.prototype.hasOwnProperty.call(Checks,key)?Checks[key](value):getAttribCheck(key,value)}));return funcs.length===0?null:funcs.reduce(combineFuncs)}
/**
 * Checks whether a node matches the description in `options`.
 *
 * @category Legacy Query Functions
 * @param options An object describing nodes to look for.
 * @param node The element to test.
 * @returns Whether the element matches the description in `options`.
 */function testElement(options,node){const test=compileTest(options);return test?test(node):true}
/**
 * Returns all nodes that match `options`.
 *
 * @category Legacy Query Functions
 * @param options An object describing nodes to look for.
 * @param nodes Nodes to search through.
 * @param recurse Also consider child nodes.
 * @param limit Maximum number of nodes to return.
 * @returns All nodes that match `options`.
 */function getElements(options,nodes,recurse,limit=1/0){const test=compileTest(options);return test?(0,_querying_js__WEBPACK_IMPORTED_MODULE_1__.filter)(test,nodes,recurse,limit):[]}
/**
 * Returns the node with the supplied ID.
 *
 * @category Legacy Query Functions
 * @param id The unique ID attribute value to look for.
 * @param nodes Nodes to search through.
 * @param recurse Also consider child nodes.
 * @returns The node with the supplied ID.
 */function getElementById(id,nodes,recurse=true){if(!Array.isArray(nodes))nodes=[nodes];return(0,_querying_js__WEBPACK_IMPORTED_MODULE_1__.findOne)(getAttribCheck("id",id),nodes,recurse)}
/**
 * Returns all nodes with the supplied `tagName`.
 *
 * @category Legacy Query Functions
 * @param tagName Tag name to search for.
 * @param nodes Nodes to search through.
 * @param recurse Also consider child nodes.
 * @param limit Maximum number of nodes to return.
 * @returns All nodes with the supplied `tagName`.
 */function getElementsByTagName(tagName,nodes,recurse=true,limit=1/0){return(0,_querying_js__WEBPACK_IMPORTED_MODULE_1__.filter)(Checks["tag_name"](tagName),nodes,recurse,limit)}
/**
 * Returns all nodes with the supplied `className`.
 *
 * @category Legacy Query Functions
 * @param className Class name to search for.
 * @param nodes Nodes to search through.
 * @param recurse Also consider child nodes.
 * @param limit Maximum number of nodes to return.
 * @returns All nodes with the supplied `className`.
 */function getElementsByClassName(className,nodes,recurse=true,limit=1/0){return(0,_querying_js__WEBPACK_IMPORTED_MODULE_1__.filter)(getAttribCheck("class",className),nodes,recurse,limit)}
/**
 * Returns all nodes with the supplied `type`.
 *
 * @category Legacy Query Functions
 * @param type Element type to look for.
 * @param nodes Nodes to search through.
 * @param recurse Also consider child nodes.
 * @param limit Maximum number of nodes to return.
 * @returns All nodes with the supplied `type`.
 */function getElementsByTagType(type,nodes,recurse=true,limit=1/0){return(0,_querying_js__WEBPACK_IMPORTED_MODULE_1__.filter)(Checks["tag_type"](type),nodes,recurse,limit)}
//# sourceMappingURL=legacy.js.map
/***/},
/***/"./node_modules/domutils/lib/esm/manipulation.js":
/*!*******************************************************!*\
  !*** ./node_modules/domutils/lib/esm/manipulation.js ***!
  \*******************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */append:()=>/* binding */append
/* harmony export */,appendChild:()=>/* binding */appendChild
/* harmony export */,prepend:()=>/* binding */prepend
/* harmony export */,prependChild:()=>/* binding */prependChild
/* harmony export */,removeElement:()=>/* binding */removeElement
/* harmony export */,replaceElement:()=>/* binding */replaceElement
/* harmony export */});
/**
 * Remove an element from the dom
 *
 * @category Manipulation
 * @param elem The element to be removed
 */function removeElement(elem){if(elem.prev)elem.prev.next=elem.next;if(elem.next)elem.next.prev=elem.prev;if(elem.parent){const childs=elem.parent.children;const childsIndex=childs.lastIndexOf(elem);if(childsIndex>=0)childs.splice(childsIndex,1)}elem.next=null;elem.prev=null;elem.parent=null}
/**
 * Replace an element in the dom
 *
 * @category Manipulation
 * @param elem The element to be replaced
 * @param replacement The element to be added
 */function replaceElement(elem,replacement){const prev=replacement.prev=elem.prev;if(prev)prev.next=replacement;const next=replacement.next=elem.next;if(next)next.prev=replacement;const parent=replacement.parent=elem.parent;if(parent){const childs=parent.children;childs[childs.lastIndexOf(elem)]=replacement;elem.parent=null}}
/**
 * Append a child to an element.
 *
 * @category Manipulation
 * @param parent The element to append to.
 * @param child The element to be added as a child.
 */function appendChild(parent,child){removeElement(child);child.next=null;child.parent=parent;if(parent.children.push(child)>1){const sibling=parent.children[parent.children.length-2];sibling.next=child;child.prev=sibling}else child.prev=null}
/**
 * Append an element after another.
 *
 * @category Manipulation
 * @param elem The element to append after.
 * @param next The element be added.
 */function append(elem,next){removeElement(next);const{parent}=elem;const currNext=elem.next;next.next=currNext;next.prev=elem;elem.next=next;next.parent=parent;if(currNext){currNext.prev=next;if(parent){const childs=parent.children;childs.splice(childs.lastIndexOf(currNext),0,next)}}else if(parent)parent.children.push(next)}
/**
 * Prepend a child to an element.
 *
 * @category Manipulation
 * @param parent The element to prepend before.
 * @param child The element to be added as a child.
 */function prependChild(parent,child){removeElement(child);child.parent=parent;child.prev=null;if(parent.children.unshift(child)!==1){const sibling=parent.children[1];sibling.prev=child;child.next=sibling}else child.next=null}
/**
 * Prepend an element before another.
 *
 * @category Manipulation
 * @param elem The element to prepend before.
 * @param prev The element be added.
 */function prepend(elem,prev){removeElement(prev);const{parent}=elem;if(parent){const childs=parent.children;childs.splice(childs.indexOf(elem),0,prev)}if(elem.prev)elem.prev.next=prev;prev.parent=parent;prev.prev=elem.prev;prev.next=elem;elem.prev=prev}
//# sourceMappingURL=manipulation.js.map
/***/},
/***/"./node_modules/domutils/lib/esm/querying.js":
/*!***************************************************!*\
  !*** ./node_modules/domutils/lib/esm/querying.js ***!
  \***************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */existsOne:()=>/* binding */existsOne
/* harmony export */,filter:()=>/* binding */filter
/* harmony export */,find:()=>/* binding */find
/* harmony export */,findAll:()=>/* binding */findAll
/* harmony export */,findOne:()=>/* binding */findOne
/* harmony export */,findOneChild:()=>/* binding */findOneChild
/* harmony export */});
/* harmony import */var domhandler__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! domhandler */"./node_modules/domhandler/lib/esm/index.js");
/**
 * Search a node and its children for nodes passing a test function. If `node` is not an array, it will be wrapped in one.
 *
 * @category Querying
 * @param test Function to test nodes on.
 * @param node Node to search. Will be included in the result set if it matches.
 * @param recurse Also consider child nodes.
 * @param limit Maximum number of nodes to return.
 * @returns All nodes passing `test`.
 */function filter(test,node,recurse=true,limit=1/0){return find(test,Array.isArray(node)?node:[node],recurse,limit)}
/**
 * Search an array of nodes and their children for nodes passing a test function.
 *
 * @category Querying
 * @param test Function to test nodes on.
 * @param nodes Array of nodes to search.
 * @param recurse Also consider child nodes.
 * @param limit Maximum number of nodes to return.
 * @returns All nodes passing `test`.
 */function find(test,nodes,recurse,limit){const result=[];
/** Stack of the arrays we are looking at. */const nodeStack=[Array.isArray(nodes)?nodes:[nodes]];
/** Stack of the indices within the arrays. */const indexStack=[0];for(;;){
// First, check if the current array has any more elements to look at.
if(indexStack[0]>=nodeStack[0].length){
// If we have no more arrays to look at, we are done.
if(indexStack.length===1)return result;
// Otherwise, remove the current array from the stack.
nodeStack.shift();indexStack.shift();
// Loop back to the start to continue with the next array.
continue}const elem=nodeStack[0][indexStack[0]++];if(test(elem)){result.push(elem);if(--limit<=0)return result}if(recurse&&(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(elem)&&elem.children.length>0){
/*
             * Add the children to the stack. We are depth-first, so this is
             * the next array we look at.
             */
indexStack.unshift(0);nodeStack.unshift(elem.children)}}}
/**
 * Finds the first element inside of an array that matches a test function. This is an alias for `Array.prototype.find`.
 *
 * @category Querying
 * @param test Function to test nodes on.
 * @param nodes Array of nodes to search.
 * @returns The first node in the array that passes `test`.
 * @deprecated Use `Array.prototype.find` directly.
 */function findOneChild(test,nodes){return nodes.find(test)}
/**
 * Finds one element in a tree that passes a test.
 *
 * @category Querying
 * @param test Function to test nodes on.
 * @param nodes Node or array of nodes to search.
 * @param recurse Also consider child nodes.
 * @returns The first node that passes `test`.
 */function findOne(test,nodes,recurse=true){const searchedNodes=Array.isArray(nodes)?nodes:[nodes];for(let i=0;i<searchedNodes.length;i++){const node=searchedNodes[i];if((0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag)(node)&&test(node))return node;if(recurse&&(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(node)&&node.children.length>0){const found=findOne(test,node.children,true);if(found)return found}}return null}
/**
 * Checks if a tree of nodes contains at least one node passing a test.
 *
 * @category Querying
 * @param test Function to test nodes on.
 * @param nodes Array of nodes to search.
 * @returns Whether a tree of nodes contains at least one node passing the test.
 */function existsOne(test,nodes){return(Array.isArray(nodes)?nodes:[nodes]).some((node=>(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag)(node)&&test(node)||(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(node)&&existsOne(test,node.children)))}
/**
 * Search an array of nodes and their children for elements passing a test function.
 *
 * Same as `find`, but limited to elements and with less options, leading to reduced complexity.
 *
 * @category Querying
 * @param test Function to test nodes on.
 * @param nodes Array of nodes to search.
 * @returns All nodes passing `test`.
 */function findAll(test,nodes){const result=[];const nodeStack=[Array.isArray(nodes)?nodes:[nodes]];const indexStack=[0];for(;;){if(indexStack[0]>=nodeStack[0].length){if(nodeStack.length===1)return result;
// Otherwise, remove the current array from the stack.
nodeStack.shift();indexStack.shift();
// Loop back to the start to continue with the next array.
continue}const elem=nodeStack[0][indexStack[0]++];if((0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag)(elem)&&test(elem))result.push(elem);if((0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(elem)&&elem.children.length>0){indexStack.unshift(0);nodeStack.unshift(elem.children)}}}
//# sourceMappingURL=querying.js.map
/***/},
/***/"./node_modules/domutils/lib/esm/stringify.js":
/*!****************************************************!*\
  !*** ./node_modules/domutils/lib/esm/stringify.js ***!
  \****************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */getInnerHTML:()=>/* binding */getInnerHTML
/* harmony export */,getOuterHTML:()=>/* binding */getOuterHTML
/* harmony export */,getText:()=>/* binding */getText
/* harmony export */,innerText:()=>/* binding */innerText
/* harmony export */,textContent:()=>/* binding */textContent
/* harmony export */});
/* harmony import */var domhandler__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! domhandler */"./node_modules/domhandler/lib/esm/index.js");
/* harmony import */var dom_serializer__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! dom-serializer */"./node_modules/dom-serializer/lib/esm/index.js");
/* harmony import */var domelementtype__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! domelementtype */"./node_modules/domelementtype/lib/esm/index.js");
/**
 * @category Stringify
 * @deprecated Use the `dom-serializer` module directly.
 * @param node Node to get the outer HTML of.
 * @param options Options for serialization.
 * @returns `node`'s outer HTML.
 */function getOuterHTML(node,options){return(0,dom_serializer__WEBPACK_IMPORTED_MODULE_1__["default"])(node,options)}
/**
 * @category Stringify
 * @deprecated Use the `dom-serializer` module directly.
 * @param node Node to get the inner HTML of.
 * @param options Options for serialization.
 * @returns `node`'s inner HTML.
 */function getInnerHTML(node,options){return(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(node)?node.children.map((node=>getOuterHTML(node,options))).join(""):""}
/**
 * Get a node's inner text. Same as `textContent`, but inserts newlines for `<br>` tags. Ignores comments.
 *
 * @category Stringify
 * @deprecated Use `textContent` instead.
 * @param node Node to get the inner text of.
 * @returns `node`'s inner text.
 */function getText(node){if(Array.isArray(node))return node.map(getText).join("");if((0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag)(node))return node.name==="br"?"\n":getText(node.children);if((0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isCDATA)(node))return getText(node.children);if((0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isText)(node))return node.data;return""}
/**
 * Get a node's text content. Ignores comments.
 *
 * @category Stringify
 * @param node Node to get the text content of.
 * @returns `node`'s text content.
 * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent}
 */function textContent(node){if(Array.isArray(node))return node.map(textContent).join("");if((0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(node)&&!(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isComment)(node))return textContent(node.children);if((0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isText)(node))return node.data;return""}
/**
 * Get a node's inner text, ignoring `<script>` and `<style>` tags. Ignores comments.
 *
 * @category Stringify
 * @param node Node to get the inner text of.
 * @returns `node`'s inner text.
 * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Node/innerText}
 */function innerText(node){if(Array.isArray(node))return node.map(innerText).join("");if((0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(node)&&(node.type===domelementtype__WEBPACK_IMPORTED_MODULE_2__.ElementType.Tag||(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isCDATA)(node)))return innerText(node.children);if((0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isText)(node))return node.data;return""}
//# sourceMappingURL=stringify.js.map
/***/},
/***/"./node_modules/domutils/lib/esm/traversal.js":
/*!****************************************************!*\
  !*** ./node_modules/domutils/lib/esm/traversal.js ***!
  \****************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */getAttributeValue:()=>/* binding */getAttributeValue
/* harmony export */,getChildren:()=>/* binding */getChildren
/* harmony export */,getName:()=>/* binding */getName
/* harmony export */,getParent:()=>/* binding */getParent
/* harmony export */,getSiblings:()=>/* binding */getSiblings
/* harmony export */,hasAttrib:()=>/* binding */hasAttrib
/* harmony export */,nextElementSibling:()=>/* binding */nextElementSibling
/* harmony export */,prevElementSibling:()=>/* binding */prevElementSibling
/* harmony export */});
/* harmony import */var domhandler__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! domhandler */"./node_modules/domhandler/lib/esm/index.js");
/**
 * Get a node's children.
 *
 * @category Traversal
 * @param elem Node to get the children of.
 * @returns `elem`'s children, or an empty array.
 */function getChildren(elem){return(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.hasChildren)(elem)?elem.children:[]}
/**
 * Get a node's parent.
 *
 * @category Traversal
 * @param elem Node to get the parent of.
 * @returns `elem`'s parent node, or `null` if `elem` is a root node.
 */function getParent(elem){return elem.parent||null}
/**
 * Gets an elements siblings, including the element itself.
 *
 * Attempts to get the children through the element's parent first. If we don't
 * have a parent (the element is a root node), we walk the element's `prev` &
 * `next` to get all remaining nodes.
 *
 * @category Traversal
 * @param elem Element to get the siblings of.
 * @returns `elem`'s siblings, including `elem`.
 */function getSiblings(elem){const parent=getParent(elem);if(parent!=null)return getChildren(parent);const siblings=[elem];let{prev,next}=elem;while(prev!=null){siblings.unshift(prev);({prev}=prev)}while(next!=null){siblings.push(next);({next}=next)}return siblings}
/**
 * Gets an attribute from an element.
 *
 * @category Traversal
 * @param elem Element to check.
 * @param name Attribute name to retrieve.
 * @returns The element's attribute value, or `undefined`.
 */function getAttributeValue(elem,name){var _a;return(_a=elem.attribs)===null||_a===void 0?void 0:_a[name]}
/**
 * Checks whether an element has an attribute.
 *
 * @category Traversal
 * @param elem Element to check.
 * @param name Attribute name to look for.
 * @returns Returns whether `elem` has the attribute `name`.
 */function hasAttrib(elem,name){return elem.attribs!=null&&Object.prototype.hasOwnProperty.call(elem.attribs,name)&&elem.attribs[name]!=null}
/**
 * Get the tag name of an element.
 *
 * @category Traversal
 * @param elem The element to get the name for.
 * @returns The tag name of `elem`.
 */function getName(elem){return elem.name}
/**
 * Returns the next element sibling of a node.
 *
 * @category Traversal
 * @param elem The element to get the next sibling of.
 * @returns `elem`'s next sibling that is a tag, or `null` if there is no next
 * sibling.
 */function nextElementSibling(elem){let{next}=elem;while(next!==null&&!(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag)(next))({next}=next);return next}
/**
 * Returns the previous element sibling of a node.
 *
 * @category Traversal
 * @param elem The element to get the previous sibling of.
 * @returns `elem`'s previous sibling that is a tag, or `null` if there is no
 * previous sibling.
 */function prevElementSibling(elem){let{prev}=elem;while(prev!==null&&!(0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag)(prev))({prev}=prev);return prev}
//# sourceMappingURL=traversal.js.map
/***/},
/***/"./node_modules/entities/lib/esm/decode.js":
/*!*************************************************!*\
  !*** ./node_modules/entities/lib/esm/decode.js ***!
  \*************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */BinTrieFlags:()=>/* binding */BinTrieFlags
/* harmony export */,DecodingMode:()=>/* binding */DecodingMode
/* harmony export */,EntityDecoder:()=>/* binding */EntityDecoder
/* harmony export */,decodeCodePoint:()=>/* reexport safe */_decode_codepoint_js__WEBPACK_IMPORTED_MODULE_2__["default"]
/* harmony export */,decodeHTML:()=>/* binding */decodeHTML
/* harmony export */,decodeHTMLAttribute:()=>/* binding */decodeHTMLAttribute
/* harmony export */,decodeHTMLStrict:()=>/* binding */decodeHTMLStrict
/* harmony export */,decodeXML:()=>/* binding */decodeXML
/* harmony export */,determineBranch:()=>/* binding */determineBranch
/* harmony export */,fromCodePoint:()=>/* reexport safe */_decode_codepoint_js__WEBPACK_IMPORTED_MODULE_2__.fromCodePoint
/* harmony export */,htmlDecodeTree:()=>/* reexport safe */_generated_decode_data_html_js__WEBPACK_IMPORTED_MODULE_0__["default"]
/* harmony export */,replaceCodePoint:()=>/* reexport safe */_decode_codepoint_js__WEBPACK_IMPORTED_MODULE_2__.replaceCodePoint
/* harmony export */,xmlDecodeTree:()=>/* reexport safe */_generated_decode_data_xml_js__WEBPACK_IMPORTED_MODULE_1__["default"]
/* harmony export */});
/* harmony import */var _generated_decode_data_html_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ./generated/decode-data-html.js */"./node_modules/entities/lib/esm/generated/decode-data-html.js");
/* harmony import */var _generated_decode_data_xml_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./generated/decode-data-xml.js */"./node_modules/entities/lib/esm/generated/decode-data-xml.js");
/* harmony import */var _decode_codepoint_js__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! ./decode_codepoint.js */"./node_modules/entities/lib/esm/decode_codepoint.js");
// Re-export for use by eg. htmlparser2
var CharCodes;(function(CharCodes){CharCodes[CharCodes["NUM"]=35]="NUM";CharCodes[CharCodes["SEMI"]=59]="SEMI";CharCodes[CharCodes["EQUALS"]=61]="EQUALS";CharCodes[CharCodes["ZERO"]=48]="ZERO";CharCodes[CharCodes["NINE"]=57]="NINE";CharCodes[CharCodes["LOWER_A"]=97]="LOWER_A";CharCodes[CharCodes["LOWER_F"]=102]="LOWER_F";CharCodes[CharCodes["LOWER_X"]=120]="LOWER_X";CharCodes[CharCodes["LOWER_Z"]=122]="LOWER_Z";CharCodes[CharCodes["UPPER_A"]=65]="UPPER_A";CharCodes[CharCodes["UPPER_F"]=70]="UPPER_F";CharCodes[CharCodes["UPPER_Z"]=90]="UPPER_Z"})(CharCodes||(CharCodes={}));
/** Bit that needs to be set to convert an upper case ASCII character to lower case */const TO_LOWER_BIT=32;var BinTrieFlags;(function(BinTrieFlags){BinTrieFlags[BinTrieFlags["VALUE_LENGTH"]=49152]="VALUE_LENGTH";BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"]=16256]="BRANCH_LENGTH";BinTrieFlags[BinTrieFlags["JUMP_TABLE"]=127]="JUMP_TABLE"})(BinTrieFlags||(BinTrieFlags={}));function isNumber(code){return code>=CharCodes.ZERO&&code<=CharCodes.NINE}function isHexadecimalCharacter(code){return code>=CharCodes.UPPER_A&&code<=CharCodes.UPPER_F||code>=CharCodes.LOWER_A&&code<=CharCodes.LOWER_F}function isAsciiAlphaNumeric(code){return code>=CharCodes.UPPER_A&&code<=CharCodes.UPPER_Z||code>=CharCodes.LOWER_A&&code<=CharCodes.LOWER_Z||isNumber(code)}
/**
 * Checks if the given character is a valid end character for an entity in an attribute.
 *
 * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.
 * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state
 */function isEntityInAttributeInvalidEnd(code){return code===CharCodes.EQUALS||isAsciiAlphaNumeric(code)}var EntityDecoderState;(function(EntityDecoderState){EntityDecoderState[EntityDecoderState["EntityStart"]=0]="EntityStart";EntityDecoderState[EntityDecoderState["NumericStart"]=1]="NumericStart";EntityDecoderState[EntityDecoderState["NumericDecimal"]=2]="NumericDecimal";EntityDecoderState[EntityDecoderState["NumericHex"]=3]="NumericHex";EntityDecoderState[EntityDecoderState["NamedEntity"]=4]="NamedEntity"})(EntityDecoderState||(EntityDecoderState={}));var DecodingMode;(function(DecodingMode){
/** Entities in text nodes that can end with any character. */
DecodingMode[DecodingMode["Legacy"]=0]="Legacy";
/** Only allow entities terminated with a semicolon. */DecodingMode[DecodingMode["Strict"]=1]="Strict";
/** Entities in attributes have limitations on ending characters. */DecodingMode[DecodingMode["Attribute"]=2]="Attribute"})(DecodingMode||(DecodingMode={}));
/**
 * Token decoder with support of writing partial entities.
 */class EntityDecoder{constructor(
/** The tree used to decode entities. */
decodeTree,
/**
     * The function that is called when a codepoint is decoded.
     *
     * For multi-byte named entities, this will be called multiple times,
     * with the second codepoint, and the same `consumed` value.
     *
     * @param codepoint The decoded codepoint.
     * @param consumed The number of bytes consumed by the decoder.
     */
emitCodePoint,
/** An object that is used to produce errors. */
errors){this.decodeTree=decodeTree;this.emitCodePoint=emitCodePoint;this.errors=errors;
/** The current state of the decoder. */this.state=EntityDecoderState.EntityStart;
/** Characters that were consumed while parsing an entity. */this.consumed=1;
/**
         * The result of the entity.
         *
         * Either the result index of a numeric entity, or the codepoint of a
         * numeric entity.
         */this.result=0;
/** The current index in the decode tree. */this.treeIndex=0;
/** The number of characters that were consumed in excess. */this.excess=1;
/** The mode in which the decoder is operating. */this.decodeMode=DecodingMode.Strict}
/** Resets the instance to make it reusable. */startEntity(decodeMode){this.decodeMode=decodeMode;this.state=EntityDecoderState.EntityStart;this.result=0;this.treeIndex=0;this.excess=1;this.consumed=1}
/**
     * Write an entity to the decoder. This can be called multiple times with partial entities.
     * If the entity is incomplete, the decoder will return -1.
     *
     * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the
     * entity is incomplete, and resume when the next string is written.
     *
     * @param string The string containing the entity (or a continuation of the entity).
     * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.
     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
     */write(str,offset){switch(this.state){case EntityDecoderState.EntityStart:if(str.charCodeAt(offset)===CharCodes.NUM){this.state=EntityDecoderState.NumericStart;this.consumed+=1;return this.stateNumericStart(str,offset+1)}this.state=EntityDecoderState.NamedEntity;return this.stateNamedEntity(str,offset);case EntityDecoderState.NumericStart:return this.stateNumericStart(str,offset);case EntityDecoderState.NumericDecimal:return this.stateNumericDecimal(str,offset);case EntityDecoderState.NumericHex:return this.stateNumericHex(str,offset);case EntityDecoderState.NamedEntity:return this.stateNamedEntity(str,offset)}}
/**
     * Switches between the numeric decimal and hexadecimal states.
     *
     * Equivalent to the `Numeric character reference state` in the HTML spec.
     *
     * @param str The string containing the entity (or a continuation of the entity).
     * @param offset The current offset.
     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
     */stateNumericStart(str,offset){if(offset>=str.length)return-1;if((str.charCodeAt(offset)|TO_LOWER_BIT)===CharCodes.LOWER_X){this.state=EntityDecoderState.NumericHex;this.consumed+=1;return this.stateNumericHex(str,offset+1)}this.state=EntityDecoderState.NumericDecimal;return this.stateNumericDecimal(str,offset)}addToNumericResult(str,start,end,base){if(start!==end){const digitCount=end-start;this.result=this.result*Math.pow(base,digitCount)+parseInt(str.substr(start,digitCount),base);this.consumed+=digitCount}}
/**
     * Parses a hexadecimal numeric entity.
     *
     * Equivalent to the `Hexademical character reference state` in the HTML spec.
     *
     * @param str The string containing the entity (or a continuation of the entity).
     * @param offset The current offset.
     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
     */stateNumericHex(str,offset){const startIdx=offset;while(offset<str.length){const char=str.charCodeAt(offset);if(isNumber(char)||isHexadecimalCharacter(char))offset+=1;else{this.addToNumericResult(str,startIdx,offset,16);return this.emitNumericEntity(char,3)}}this.addToNumericResult(str,startIdx,offset,16);return-1}
/**
     * Parses a decimal numeric entity.
     *
     * Equivalent to the `Decimal character reference state` in the HTML spec.
     *
     * @param str The string containing the entity (or a continuation of the entity).
     * @param offset The current offset.
     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
     */stateNumericDecimal(str,offset){const startIdx=offset;while(offset<str.length){const char=str.charCodeAt(offset);if(isNumber(char))offset+=1;else{this.addToNumericResult(str,startIdx,offset,10);return this.emitNumericEntity(char,2)}}this.addToNumericResult(str,startIdx,offset,10);return-1}
/**
     * Validate and emit a numeric entity.
     *
     * Implements the logic from the `Hexademical character reference start
     * state` and `Numeric character reference end state` in the HTML spec.
     *
     * @param lastCp The last code point of the entity. Used to see if the
     *               entity was terminated with a semicolon.
     * @param expectedLength The minimum number of characters that should be
     *                       consumed. Used to validate that at least one digit
     *                       was consumed.
     * @returns The number of characters that were consumed.
     */emitNumericEntity(lastCp,expectedLength){var _a;
// Ensure we consumed at least one digit.
if(this.consumed<=expectedLength){(_a=this.errors)===null||_a===void 0?void 0:_a.absenceOfDigitsInNumericCharacterReference(this.consumed);return 0}
// Figure out if this is a legit end of the entity
if(lastCp===CharCodes.SEMI)this.consumed+=1;else if(this.decodeMode===DecodingMode.Strict)return 0;this.emitCodePoint((0,_decode_codepoint_js__WEBPACK_IMPORTED_MODULE_2__.replaceCodePoint)(this.result),this.consumed);if(this.errors){if(lastCp!==CharCodes.SEMI)this.errors.missingSemicolonAfterCharacterReference();this.errors.validateNumericCharacterReference(this.result)}return this.consumed}
/**
     * Parses a named entity.
     *
     * Equivalent to the `Named character reference state` in the HTML spec.
     *
     * @param str The string containing the entity (or a continuation of the entity).
     * @param offset The current offset.
     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
     */stateNamedEntity(str,offset){const{decodeTree}=this;let current=decodeTree[this.treeIndex];
// The mask is the number of bytes of the value, including the current byte.
let valueLength=(current&BinTrieFlags.VALUE_LENGTH)>>14;for(;offset<str.length;offset++,this.excess++){const char=str.charCodeAt(offset);this.treeIndex=determineBranch(decodeTree,current,this.treeIndex+Math.max(1,valueLength),char);if(this.treeIndex<0)return this.result===0||
// If we are parsing an attribute
this.decodeMode===DecodingMode.Attribute&&(
// We shouldn't have consumed any characters after the entity,
valueLength===0||
// And there should be no invalid characters.
isEntityInAttributeInvalidEnd(char))?0:this.emitNotTerminatedNamedEntity();current=decodeTree[this.treeIndex];valueLength=(current&BinTrieFlags.VALUE_LENGTH)>>14;
// If the branch is a value, store it and continue
if(valueLength!==0){
// If the entity is terminated by a semicolon, we are done.
if(char===CharCodes.SEMI)return this.emitNamedEntityData(this.treeIndex,valueLength,this.consumed+this.excess);
// If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.
if(this.decodeMode!==DecodingMode.Strict){this.result=this.treeIndex;this.consumed+=this.excess;this.excess=0}}}return-1}
/**
     * Emit a named entity that was not terminated with a semicolon.
     *
     * @returns The number of characters consumed.
     */emitNotTerminatedNamedEntity(){var _a;const{result,decodeTree}=this;const valueLength=(decodeTree[result]&BinTrieFlags.VALUE_LENGTH)>>14;this.emitNamedEntityData(result,valueLength,this.consumed);(_a=this.errors)===null||_a===void 0?void 0:_a.missingSemicolonAfterCharacterReference();return this.consumed}
/**
     * Emit a named entity.
     *
     * @param result The index of the entity in the decode tree.
     * @param valueLength The number of bytes in the entity.
     * @param consumed The number of characters consumed.
     *
     * @returns The number of characters consumed.
     */emitNamedEntityData(result,valueLength,consumed){const{decodeTree}=this;this.emitCodePoint(valueLength===1?decodeTree[result]&~BinTrieFlags.VALUE_LENGTH:decodeTree[result+1],consumed);if(valueLength===3)
// For multi-byte values, we need to emit the second byte.
this.emitCodePoint(decodeTree[result+2],consumed);return consumed}
/**
     * Signal to the parser that the end of the input was reached.
     *
     * Remaining data will be emitted and relevant errors will be produced.
     *
     * @returns The number of characters consumed.
     */end(){var _a;switch(this.state){case EntityDecoderState.NamedEntity:
// Emit a named entity if we have one.
return this.result!==0&&(this.decodeMode!==DecodingMode.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;
// Otherwise, emit a numeric entity if we have one.
case EntityDecoderState.NumericDecimal:return this.emitNumericEntity(0,2);case EntityDecoderState.NumericHex:return this.emitNumericEntity(0,3);case EntityDecoderState.NumericStart:(_a=this.errors)===null||_a===void 0?void 0:_a.absenceOfDigitsInNumericCharacterReference(this.consumed);return 0;case EntityDecoderState.EntityStart:
// Return 0 if we have no entity.
return 0}}}
/**
 * Creates a function that decodes entities in a string.
 *
 * @param decodeTree The decode tree.
 * @returns A function that decodes entities in a string.
 */function getDecoder(decodeTree){let ret="";const decoder=new EntityDecoder(decodeTree,(str=>ret+=(0,_decode_codepoint_js__WEBPACK_IMPORTED_MODULE_2__.fromCodePoint)(str)));return function(str,decodeMode){let lastIndex=0;let offset=0;while((offset=str.indexOf("&",offset))>=0){ret+=str.slice(lastIndex,offset);decoder.startEntity(decodeMode);const len=decoder.write(str,
// Skip the "&"
offset+1);if(len<0){lastIndex=offset+decoder.end();break}lastIndex=offset+len;
// If `len` is 0, skip the current `&` and continue.
offset=len===0?lastIndex+1:lastIndex}const result=ret+str.slice(lastIndex);
// Make sure we don't keep a reference to the final string.
ret="";return result}}
/**
 * Determines the branch of the current node that is taken given the current
 * character. This function is used to traverse the trie.
 *
 * @param decodeTree The trie.
 * @param current The current node.
 * @param nodeIdx The index right after the current node and its value.
 * @param char The current character.
 * @returns The index of the next node, or -1 if no branch is taken.
 */function determineBranch(decodeTree,current,nodeIdx,char){const branchCount=(current&BinTrieFlags.BRANCH_LENGTH)>>7;const jumpOffset=current&BinTrieFlags.JUMP_TABLE;
// Case 1: Single branch encoded in jump offset
if(branchCount===0)return jumpOffset!==0&&char===jumpOffset?nodeIdx:-1;
// Case 2: Multiple branches encoded in jump table
if(jumpOffset){const value=char-jumpOffset;return value<0||value>=branchCount?-1:decodeTree[nodeIdx+value]-1}
// Case 3: Multiple branches encoded in dictionary
// Binary search for the character.
let lo=nodeIdx;let hi=lo+branchCount-1;while(lo<=hi){const mid=lo+hi>>>1;const midVal=decodeTree[mid];if(midVal<char)lo=mid+1;else if(midVal>char)hi=mid-1;else return decodeTree[mid+branchCount]}return-1}const htmlDecoder=getDecoder(_generated_decode_data_html_js__WEBPACK_IMPORTED_MODULE_0__["default"]);const xmlDecoder=getDecoder(_generated_decode_data_xml_js__WEBPACK_IMPORTED_MODULE_1__["default"]);
/**
 * Decodes an HTML string.
 *
 * @param str The string to decode.
 * @param mode The decoding mode.
 * @returns The decoded string.
 */function decodeHTML(str,mode=DecodingMode.Legacy){return htmlDecoder(str,mode)}
/**
 * Decodes an HTML string in an attribute.
 *
 * @param str The string to decode.
 * @returns The decoded string.
 */function decodeHTMLAttribute(str){return htmlDecoder(str,DecodingMode.Attribute)}
/**
 * Decodes an HTML string, requiring all entities to be terminated by a semicolon.
 *
 * @param str The string to decode.
 * @returns The decoded string.
 */function decodeHTMLStrict(str){return htmlDecoder(str,DecodingMode.Strict)}
/**
 * Decodes an XML string, requiring all entities to be terminated by a semicolon.
 *
 * @param str The string to decode.
 * @returns The decoded string.
 */function decodeXML(str){return xmlDecoder(str,DecodingMode.Strict)}
//# sourceMappingURL=decode.js.map
/***/},
/***/"./node_modules/entities/lib/esm/decode_codepoint.js":
/*!***********************************************************!*\
  !*** ./node_modules/entities/lib/esm/decode_codepoint.js ***!
  \***********************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */default:()=>/* binding */decodeCodePoint
/* harmony export */,fromCodePoint:()=>/* binding */fromCodePoint
/* harmony export */,replaceCodePoint:()=>/* binding */replaceCodePoint
/* harmony export */});
// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134
var _a;const decodeMap=new Map([[0,65533],
// C1 Unicode control character reference replacements
[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]);
/**
 * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.
 */const fromCodePoint=
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins
(_a=String.fromCodePoint)!==null&&_a!==void 0?_a:function(codePoint){let output="";if(codePoint>65535){codePoint-=65536;output+=String.fromCharCode(codePoint>>>10&1023|55296);codePoint=56320|codePoint&1023}output+=String.fromCharCode(codePoint);return output};
/**
 * Replace the given code point with a replacement character if it is a
 * surrogate or is outside the valid range. Otherwise return the code
 * point unchanged.
 */function replaceCodePoint(codePoint){var _a;if(codePoint>=55296&&codePoint<=57343||codePoint>1114111)return 65533;return(_a=decodeMap.get(codePoint))!==null&&_a!==void 0?_a:codePoint}
/**
 * Replace the code point if relevant, then convert it to a string.
 *
 * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.
 * @param codePoint The code point to decode.
 * @returns The decoded code point.
 */function decodeCodePoint(codePoint){return fromCodePoint(replaceCodePoint(codePoint))}
//# sourceMappingURL=decode_codepoint.js.map
/***/},
/***/"./node_modules/entities/lib/esm/encode.js":
/*!*************************************************!*\
  !*** ./node_modules/entities/lib/esm/encode.js ***!
  \*************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */encodeHTML:()=>/* binding */encodeHTML
/* harmony export */,encodeNonAsciiHTML:()=>/* binding */encodeNonAsciiHTML
/* harmony export */});
/* harmony import */var _generated_encode_html_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ./generated/encode-html.js */"./node_modules/entities/lib/esm/generated/encode-html.js");
/* harmony import */var _escape_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./escape.js */"./node_modules/entities/lib/esm/escape.js");const htmlReplacer=/[\t\n!-,./:-@[-`\f{-}$\x80-\uFFFF]/g;
/**
 * Encodes all characters in the input using HTML entities. This includes
 * characters that are valid ASCII characters in HTML documents, such as `#`.
 *
 * To get a more compact output, consider using the `encodeNonAsciiHTML`
 * function, which will only encode characters that are not valid in HTML
 * documents, as well as non-ASCII characters.
 *
 * If a character has no equivalent entity, a numeric hexadecimal reference
 * (eg. `&#xfc;`) will be used.
 */function encodeHTML(data){return encodeHTMLTrieRe(htmlReplacer,data)}
/**
 * Encodes all non-ASCII characters, as well as characters not valid in HTML
 * documents using HTML entities. This function will not encode characters that
 * are valid in HTML documents, such as `#`.
 *
 * If a character has no equivalent entity, a numeric hexadecimal reference
 * (eg. `&#xfc;`) will be used.
 */function encodeNonAsciiHTML(data){return encodeHTMLTrieRe(_escape_js__WEBPACK_IMPORTED_MODULE_1__.xmlReplacer,data)}function encodeHTMLTrieRe(regExp,str){let ret="";let lastIdx=0;let match;while((match=regExp.exec(str))!==null){const i=match.index;ret+=str.substring(lastIdx,i);const char=str.charCodeAt(i);let next=_generated_encode_html_js__WEBPACK_IMPORTED_MODULE_0__["default"].get(char);if(typeof next==="object"){
// We are in a branch. Try to match the next char.
if(i+1<str.length){const nextChar=str.charCodeAt(i+1);const value=typeof next.n==="number"?next.n===nextChar?next.o:void 0:next.n.get(nextChar);if(value!==void 0){ret+=value;lastIdx=regExp.lastIndex+=1;continue}}next=next.v}
// We might have a tree node without a value; skip and use a numeric entity.
if(next!==void 0){ret+=next;lastIdx=i+1}else{const cp=(0,_escape_js__WEBPACK_IMPORTED_MODULE_1__.getCodePoint)(str,i);ret+=`&#x${cp.toString(16)};`;
// Increase by 1 if we have a surrogate pair
lastIdx=regExp.lastIndex+=Number(cp!==char)}}return ret+str.substr(lastIdx)}
//# sourceMappingURL=encode.js.map
/***/},
/***/"./node_modules/entities/lib/esm/escape.js":
/*!*************************************************!*\
  !*** ./node_modules/entities/lib/esm/escape.js ***!
  \*************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */encodeXML:()=>/* binding */encodeXML
/* harmony export */,escape:()=>/* binding */escape
/* harmony export */,escapeAttribute:()=>/* binding */escapeAttribute
/* harmony export */,escapeText:()=>/* binding */escapeText
/* harmony export */,escapeUTF8:()=>/* binding */escapeUTF8
/* harmony export */,getCodePoint:()=>/* binding */getCodePoint
/* harmony export */,xmlReplacer:()=>/* binding */xmlReplacer
/* harmony export */});const xmlReplacer=/["&'<>$\x80-\uFFFF]/g;const xmlCodeMap=new Map([[34,"&quot;"],[38,"&amp;"],[39,"&apos;"],[60,"&lt;"],[62,"&gt;"]]);
// For compatibility with node < 4, we wrap `codePointAt`
const getCodePoint=
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
String.prototype.codePointAt!=null?(str,index)=>str.codePointAt(index)// http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
:(c,index)=>(c.charCodeAt(index)&64512)===55296?(c.charCodeAt(index)-55296)*1024+c.charCodeAt(index+1)-56320+65536:c.charCodeAt(index)
/**
 * Encodes all non-ASCII characters, as well as characters not valid in XML
 * documents using XML entities.
 *
 * If a character has no equivalent entity, a
 * numeric hexadecimal reference (eg. `&#xfc;`) will be used.
 */;function encodeXML(str){let ret="";let lastIdx=0;let match;while((match=xmlReplacer.exec(str))!==null){const i=match.index;const char=str.charCodeAt(i);const next=xmlCodeMap.get(char);if(next!==void 0){ret+=str.substring(lastIdx,i)+next;lastIdx=i+1}else{ret+=`${str.substring(lastIdx,i)}&#x${getCodePoint(str,i).toString(16)};`;
// Increase by 1 if we have a surrogate pair
lastIdx=xmlReplacer.lastIndex+=Number((char&64512)===55296)}}return ret+str.substr(lastIdx)}
/**
 * Encodes all non-ASCII characters, as well as characters not valid in XML
 * documents using numeric hexadecimal reference (eg. `&#xfc;`).
 *
 * Have a look at `escapeUTF8` if you want a more concise output at the expense
 * of reduced transportability.
 *
 * @param data String to escape.
 */const escape=encodeXML;
/**
 * Creates a function that escapes all characters matched by the given regular
 * expression using the given map of characters to escape to their entities.
 *
 * @param regex Regular expression to match characters to escape.
 * @param map Map of characters to escape to their entities.
 *
 * @returns Function that escapes all characters matched by the given regular
 * expression using the given map of characters to escape to their entities.
 */function getEscaper(regex,map){return function(data){let match;let lastIdx=0;let result="";while(match=regex.exec(data)){if(lastIdx!==match.index)result+=data.substring(lastIdx,match.index);
// We know that this character will be in the map.
result+=map.get(match[0].charCodeAt(0));
// Every match will be of length 1
lastIdx=match.index+1}return result+data.substring(lastIdx)}}
/**
 * Encodes all characters not valid in XML documents using XML entities.
 *
 * Note that the output will be character-set dependent.
 *
 * @param data String to escape.
 */const escapeUTF8=getEscaper(/[&<>'"]/g,xmlCodeMap);
/**
 * Encodes all characters that have to be escaped in HTML attributes,
 * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.
 *
 * @param data String to escape.
 */const escapeAttribute=getEscaper(/["&\u00A0]/g,new Map([[34,"&quot;"],[38,"&amp;"],[160,"&nbsp;"]]));
/**
 * Encodes all characters that have to be escaped in HTML text,
 * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.
 *
 * @param data String to escape.
 */const escapeText=getEscaper(/[&<>\u00A0]/g,new Map([[38,"&amp;"],[60,"&lt;"],[62,"&gt;"],[160,"&nbsp;"]]));
//# sourceMappingURL=escape.js.map
/***/},
/***/"./node_modules/entities/lib/esm/generated/decode-data-html.js":
/*!*********************************************************************!*\
  !*** ./node_modules/entities/lib/esm/generated/decode-data-html.js ***!
  \*********************************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */default:()=>__WEBPACK_DEFAULT_EXPORT__
/* harmony export */});
// Generated using scripts/write-decode-map.ts
/* harmony default export */const __WEBPACK_DEFAULT_EXPORT__=new Uint16Array(
// prettier-ignore
'ᵁ<Õıʊҝջאٵ۞ޢߖࠏ੊ઑඡ๭༉༦჊ረዡᐕᒝᓃᓟᔥ\0\0\0\0\0\0ᕫᛍᦍᰒᷝ὾⁠↰⊍⏀⏻⑂⠤⤒ⴈ⹈⿎〖㊺㘹㞬㣾㨨㩱㫠㬮ࠀEMabcfglmnoprstu\\bfms„‹•˜¦³¹ÈÏlig耻Æ䃆P耻&䀦cute耻Á䃁reve;䄂Āiyx}rc耻Â䃂;䐐r;쀀𝔄rave耻À䃀pha;䎑acr;䄀d;橓Āgp¡on;䄄f;쀀𝔸plyFunction;恡ing耻Å䃅Ācs¾Ãr;쀀𝒜ign;扔ilde耻Ã䃃ml耻Ä䃄ЀaceforsuåûþėĜĢħĪĀcrêòkslash;或Ŷöø;櫧ed;挆y;䐑ƀcrtąċĔause;戵noullis;愬a;䎒r;쀀𝔅pf;쀀𝔹eve;䋘còēmpeq;扎܀HOacdefhilorsuōőŖƀƞƢƵƷƺǜȕɳɸɾcy;䐧PY耻©䂩ƀcpyŝŢźute;䄆Ā;iŧŨ拒talDifferentialD;慅leys;愭ȀaeioƉƎƔƘron;䄌dil耻Ç䃇rc;䄈nint;戰ot;䄊ĀdnƧƭilla;䂸terDot;䂷òſi;䎧rcleȀDMPTLJNjǑǖot;抙inus;抖lus;投imes;抗oĀcsǢǸkwiseContourIntegral;戲eCurlyĀDQȃȏoubleQuote;思uote;怙ȀlnpuȞȨɇɕonĀ;eȥȦ户;橴ƀgitȯȶȺruent;扡nt;戯ourIntegral;戮ĀfrɌɎ;愂oduct;成nterClockwiseContourIntegral;戳oss;樯cr;쀀𝒞pĀ;Cʄʅ拓ap;才րDJSZacefiosʠʬʰʴʸˋ˗ˡ˦̳ҍĀ;oŹʥtrahd;椑cy;䐂cy;䐅cy;䐏ƀgrsʿ˄ˇger;怡r;憡hv;櫤Āayː˕ron;䄎;䐔lĀ;t˝˞戇a;䎔r;쀀𝔇Āaf˫̧Ācm˰̢riticalȀADGT̖̜̀̆cute;䂴oŴ̋̍;䋙bleAcute;䋝rave;䁠ilde;䋜ond;拄ferentialD;慆Ѱ̽\0\0\0͔͂\0Ѕf;쀀𝔻ƀ;DE͈͉͍䂨ot;惜qual;扐blèCDLRUVͣͲ΂ϏϢϸontourIntegraìȹoɴ͹\0\0ͻ»͉nArrow;懓Āeo·ΤftƀARTΐΖΡrrow;懐ightArrow;懔eåˊngĀLRΫτeftĀARγιrrow;柸ightArrow;柺ightArrow;柹ightĀATϘϞrrow;懒ee;抨pɁϩ\0\0ϯrrow;懑ownArrow;懕erticalBar;戥ǹABLRTaВЪаўѿͼrrowƀ;BUНОТ憓ar;椓pArrow;懵reve;䌑eft˒к\0ц\0ѐightVector;楐eeVector;楞ectorĀ;Bљњ憽ar;楖ightǔѧ\0ѱeeVector;楟ectorĀ;BѺѻ懁ar;楗eeĀ;A҆҇护rrow;憧ĀctҒҗr;쀀𝒟rok;䄐ࠀNTacdfglmopqstuxҽӀӄӋӞӢӧӮӵԡԯԶՒ՝ՠեG;䅊H耻Ð䃐cute耻É䃉ƀaiyӒӗӜron;䄚rc耻Ê䃊;䐭ot;䄖r;쀀𝔈rave耻È䃈ement;戈ĀapӺӾcr;䄒tyɓԆ\0\0ԒmallSquare;旻erySmallSquare;斫ĀgpԦԪon;䄘f;쀀𝔼silon;䎕uĀaiԼՉlĀ;TՂՃ橵ilde;扂librium;懌Āci՗՚r;愰m;橳a;䎗ml耻Ë䃋Āipժկsts;戃onentialE;慇ʀcfiosօֈ֍ֲ׌y;䐤r;쀀𝔉lledɓ֗\0\0֣mallSquare;旼erySmallSquare;斪Ͱֺ\0ֿ\0\0ׄf;쀀𝔽All;戀riertrf;愱cò׋؀JTabcdfgorstר׬ׯ׺؀ؒؖ؛؝أ٬ٲcy;䐃耻>䀾mmaĀ;d׷׸䎓;䏜reve;䄞ƀeiy؇،ؐdil;䄢rc;䄜;䐓ot;䄠r;쀀𝔊;拙pf;쀀𝔾eater̀EFGLSTصلَٖٛ٦qualĀ;Lؾؿ扥ess;招ullEqual;执reater;檢ess;扷lantEqual;橾ilde;扳cr;쀀𝒢;扫ЀAacfiosuڅڋږڛڞڪھۊRDcy;䐪Āctڐڔek;䋇;䁞irc;䄤r;愌lbertSpace;愋ǰگ\0ڲf;愍izontalLine;攀Āctۃۅòکrok;䄦mpńېۘownHumðįqual;扏܀EJOacdfgmnostuۺ۾܃܇܎ܚܞܡܨ݄ݸދޏޕcy;䐕lig;䄲cy;䐁cute耻Í䃍Āiyܓܘrc耻Î䃎;䐘ot;䄰r;愑rave耻Ì䃌ƀ;apܠܯܿĀcgܴܷr;䄪inaryI;慈lieóϝǴ݉\0ݢĀ;eݍݎ戬Āgrݓݘral;戫section;拂isibleĀCTݬݲomma;恣imes;恢ƀgptݿރވon;䄮f;쀀𝕀a;䎙cr;愐ilde;䄨ǫޚ\0ޞcy;䐆l耻Ï䃏ʀcfosuެ޷޼߂ߐĀiyޱ޵rc;䄴;䐙r;쀀𝔍pf;쀀𝕁ǣ߇\0ߌr;쀀𝒥rcy;䐈kcy;䐄΀HJacfosߤߨ߽߬߱ࠂࠈcy;䐥cy;䐌ppa;䎚Āey߶߻dil;䄶;䐚r;쀀𝔎pf;쀀𝕂cr;쀀𝒦րJTaceflmostࠥࠩࠬࡐࡣ঳সে্਷ੇcy;䐉耻<䀼ʀcmnpr࠷࠼ࡁࡄࡍute;䄹bda;䎛g;柪lacetrf;愒r;憞ƀaeyࡗ࡜ࡡron;䄽dil;䄻;䐛Āfsࡨ॰tԀACDFRTUVarࡾࢩࢱࣦ࣠ࣼयज़ΐ४Ānrࢃ࢏gleBracket;柨rowƀ;BR࢙࢚࢞憐ar;懤ightArrow;懆eiling;挈oǵࢷ\0ࣃbleBracket;柦nǔࣈ\0࣒eeVector;楡ectorĀ;Bࣛࣜ懃ar;楙loor;挊ightĀAV࣯ࣵrrow;憔ector;楎Āerँगeƀ;AVउऊऐ抣rrow;憤ector;楚iangleƀ;BEतथऩ抲ar;槏qual;抴pƀDTVषूौownVector;楑eeVector;楠ectorĀ;Bॖॗ憿ar;楘ectorĀ;B॥०憼ar;楒ightáΜs̀EFGLSTॾঋকঝঢভqualGreater;拚ullEqual;扦reater;扶ess;檡lantEqual;橽ilde;扲r;쀀𝔏Ā;eঽা拘ftarrow;懚idot;䄿ƀnpw৔ਖਛgȀLRlr৞৷ਂਐeftĀAR০৬rrow;柵ightArrow;柷ightArrow;柶eftĀarγਊightáοightáϊf;쀀𝕃erĀLRਢਬeftArrow;憙ightArrow;憘ƀchtਾੀੂòࡌ;憰rok;䅁;扪Ѐacefiosuਗ਼੝੠੷੼અઋ઎p;椅y;䐜Ādl੥੯iumSpace;恟lintrf;愳r;쀀𝔐nusPlus;戓pf;쀀𝕄cò੶;䎜ҀJacefostuણધભીଔଙඑ඗ඞcy;䐊cute;䅃ƀaey઴હાron;䅇dil;䅅;䐝ƀgswે૰଎ativeƀMTV૓૟૨ediumSpace;怋hiĀcn૦૘ë૙eryThiî૙tedĀGL૸ଆreaterGreateòٳessLesóੈLine;䀊r;쀀𝔑ȀBnptଢନଷ଺reak;恠BreakingSpace;䂠f;愕ڀ;CDEGHLNPRSTV୕ୖ୪୼஡௫ఄ౞಄ದ೘ൡඅ櫬Āou୛୤ngruent;扢pCap;扭oubleVerticalBar;戦ƀlqxஃஊ஛ement;戉ualĀ;Tஒஓ扠ilde;쀀≂̸ists;戄reater΀;EFGLSTஶஷ஽௉௓௘௥扯qual;扱ullEqual;쀀≧̸reater;쀀≫̸ess;批lantEqual;쀀⩾̸ilde;扵umpń௲௽ownHump;쀀≎̸qual;쀀≏̸eĀfsఊధtTriangleƀ;BEచఛడ拪ar;쀀⧏̸qual;括s̀;EGLSTవశ఼ౄోౘ扮qual;扰reater;扸ess;쀀≪̸lantEqual;쀀⩽̸ilde;扴estedĀGL౨౹reaterGreater;쀀⪢̸essLess;쀀⪡̸recedesƀ;ESಒಓಛ技qual;쀀⪯̸lantEqual;拠ĀeiಫಹverseElement;戌ghtTriangleƀ;BEೋೌ೒拫ar;쀀⧐̸qual;拭ĀquೝഌuareSuĀbp೨೹setĀ;E೰ೳ쀀⊏̸qual;拢ersetĀ;Eഃആ쀀⊐̸qual;拣ƀbcpഓതൎsetĀ;Eഛഞ쀀⊂⃒qual;抈ceedsȀ;ESTലള഻െ抁qual;쀀⪰̸lantEqual;拡ilde;쀀≿̸ersetĀ;E൘൛쀀⊃⃒qual;抉ildeȀ;EFT൮൯൵ൿ扁qual;扄ullEqual;扇ilde;扉erticalBar;戤cr;쀀𝒩ilde耻Ñ䃑;䎝܀Eacdfgmoprstuvලෂ෉෕ෛ෠෧෼ขภยา฿ไlig;䅒cute耻Ó䃓Āiy෎ීrc耻Ô䃔;䐞blac;䅐r;쀀𝔒rave耻Ò䃒ƀaei෮ෲ෶cr;䅌ga;䎩cron;䎟pf;쀀𝕆enCurlyĀDQฎบoubleQuote;怜uote;怘;橔Āclวฬr;쀀𝒪ash耻Ø䃘iŬื฼de耻Õ䃕es;樷ml耻Ö䃖erĀBP๋๠Āar๐๓r;怾acĀek๚๜;揞et;掴arenthesis;揜Ҁacfhilors๿ງຊຏຒດຝະ໼rtialD;戂y;䐟r;쀀𝔓i;䎦;䎠usMinus;䂱Āipຢອncareplanåڝf;愙Ȁ;eio຺ູ໠໤檻cedesȀ;EST່້໏໚扺qual;檯lantEqual;扼ilde;找me;怳Ādp໩໮uct;戏ortionĀ;aȥ໹l;戝Āci༁༆r;쀀𝒫;䎨ȀUfos༑༖༛༟OT耻"䀢r;쀀𝔔pf;愚cr;쀀𝒬؀BEacefhiorsu༾གྷཇའཱིྦྷྪྭ႖ႩႴႾarr;椐G耻®䂮ƀcnrཎནབute;䅔g;柫rĀ;tཛྷཝ憠l;椖ƀaeyཧཬཱron;䅘dil;䅖;䐠Ā;vླྀཹ愜erseĀEUྂྙĀlq྇ྎement;戋uilibrium;懋pEquilibrium;楯r»ཹo;䎡ghtЀACDFTUVa࿁࿫࿳ဢဨၛႇϘĀnr࿆࿒gleBracket;柩rowƀ;BL࿜࿝࿡憒ar;懥eftArrow;懄eiling;按oǵ࿹\0စbleBracket;柧nǔည\0နeeVector;楝ectorĀ;Bဝသ懂ar;楕loor;挋Āerိ၃eƀ;AVဵံြ抢rrow;憦ector;楛iangleƀ;BEၐၑၕ抳ar;槐qual;抵pƀDTVၣၮၸownVector;楏eeVector;楜ectorĀ;Bႂႃ憾ar;楔ectorĀ;B႑႒懀ar;楓Āpuႛ႞f;愝ndImplies;楰ightarrow;懛ĀchႹႼr;愛;憱leDelayed;槴ڀHOacfhimoqstuფჱჷჽᄙᄞᅑᅖᅡᅧᆵᆻᆿĀCcჩხHcy;䐩y;䐨FTcy;䐬cute;䅚ʀ;aeiyᄈᄉᄎᄓᄗ檼ron;䅠dil;䅞rc;䅜;䐡r;쀀𝔖ortȀDLRUᄪᄴᄾᅉownArrow»ОeftArrow»࢚ightArrow»࿝pArrow;憑gma;䎣allCircle;战pf;쀀𝕊ɲᅭ\0\0ᅰt;戚areȀ;ISUᅻᅼᆉᆯ斡ntersection;抓uĀbpᆏᆞsetĀ;Eᆗᆘ抏qual;抑ersetĀ;Eᆨᆩ抐qual;抒nion;抔cr;쀀𝒮ar;拆ȀbcmpᇈᇛሉላĀ;sᇍᇎ拐etĀ;Eᇍᇕqual;抆ĀchᇠህeedsȀ;ESTᇭᇮᇴᇿ扻qual;檰lantEqual;扽ilde;承Tháྌ;我ƀ;esሒሓሣ拑rsetĀ;Eሜም抃qual;抇et»ሓրHRSacfhiorsሾቄ቉ቕ቞ቱቶኟዂወዑORN耻Þ䃞ADE;愢ĀHc቎ቒcy;䐋y;䐦Ābuቚቜ;䀉;䎤ƀaeyብቪቯron;䅤dil;䅢;䐢r;쀀𝔗Āeiቻ኉Dzኀ\0ኇefore;戴a;䎘Ācn኎ኘkSpace;쀀  Space;怉ldeȀ;EFTካኬኲኼ戼qual;扃ullEqual;扅ilde;扈pf;쀀𝕋ipleDot;惛Āctዖዛr;쀀𝒯rok;䅦ૡዷጎጚጦ\0ጬጱ\0\0\0\0\0ጸጽ፷ᎅ\0᏿ᐄᐊᐐĀcrዻጁute耻Ú䃚rĀ;oጇገ憟cir;楉rǣጓ\0጖y;䐎ve;䅬Āiyጞጣrc耻Û䃛;䐣blac;䅰r;쀀𝔘rave耻Ù䃙acr;䅪Ādiፁ፩erĀBPፈ፝Āarፍፐr;䁟acĀekፗፙ;揟et;掵arenthesis;揝onĀ;P፰፱拃lus;抎Āgp፻፿on;䅲f;쀀𝕌ЀADETadps᎕ᎮᎸᏄϨᏒᏗᏳrrowƀ;BDᅐᎠᎤar;椒ownArrow;懅ownArrow;憕quilibrium;楮eeĀ;AᏋᏌ报rrow;憥ownáϳerĀLRᏞᏨeftArrow;憖ightArrow;憗iĀ;lᏹᏺ䏒on;䎥ing;䅮cr;쀀𝒰ilde;䅨ml耻Ü䃜ҀDbcdefosvᐧᐬᐰᐳᐾᒅᒊᒐᒖash;披ar;櫫y;䐒ashĀ;lᐻᐼ抩;櫦Āerᑃᑅ;拁ƀbtyᑌᑐᑺar;怖Ā;iᑏᑕcalȀBLSTᑡᑥᑪᑴar;戣ine;䁼eparator;杘ilde;所ThinSpace;怊r;쀀𝔙pf;쀀𝕍cr;쀀𝒱dash;抪ʀcefosᒧᒬᒱᒶᒼirc;䅴dge;拀r;쀀𝔚pf;쀀𝕎cr;쀀𝒲Ȁfiosᓋᓐᓒᓘr;쀀𝔛;䎞pf;쀀𝕏cr;쀀𝒳ҀAIUacfosuᓱᓵᓹᓽᔄᔏᔔᔚᔠcy;䐯cy;䐇cy;䐮cute耻Ý䃝Āiyᔉᔍrc;䅶;䐫r;쀀𝔜pf;쀀𝕐cr;쀀𝒴ml;䅸ЀHacdefosᔵᔹᔿᕋᕏᕝᕠᕤcy;䐖cute;䅹Āayᕄᕉron;䅽;䐗ot;䅻Dzᕔ\0ᕛoWidtè૙a;䎖r;愨pf;愤cr;쀀𝒵௡ᖃᖊᖐ\0ᖰᖶᖿ\0\0\0\0ᗆᗛᗫᙟ᙭\0ᚕ᚛ᚲᚹ\0ᚾcute耻á䃡reve;䄃̀;Ediuyᖜᖝᖡᖣᖨᖭ戾;쀀∾̳;房rc耻â䃢te肻´̆;䐰lig耻æ䃦Ā;r²ᖺ;쀀𝔞rave耻à䃠ĀepᗊᗖĀfpᗏᗔsym;愵èᗓha;䎱ĀapᗟcĀclᗤᗧr;䄁g;樿ɤᗰ\0\0ᘊʀ;adsvᗺᗻᗿᘁᘇ戧nd;橕;橜lope;橘;橚΀;elmrszᘘᘙᘛᘞᘿᙏᙙ戠;榤e»ᘙsdĀ;aᘥᘦ戡ѡᘰᘲᘴᘶᘸᘺᘼᘾ;榨;榩;榪;榫;榬;榭;榮;榯tĀ;vᙅᙆ戟bĀ;dᙌᙍ抾;榝Āptᙔᙗh;戢»¹arr;捼Āgpᙣᙧon;䄅f;쀀𝕒΀;Eaeiop዁ᙻᙽᚂᚄᚇᚊ;橰cir;橯;扊d;手s;䀧roxĀ;e዁ᚒñᚃing耻å䃥ƀctyᚡᚦᚨr;쀀𝒶;䀪mpĀ;e዁ᚯñʈilde耻ã䃣ml耻ä䃤Āciᛂᛈoninôɲnt;樑ࠀNabcdefiklnoprsu᛭ᛱᜰ᜼ᝃᝈ᝸᝽០៦ᠹᡐᜍ᤽᥈ᥰot;櫭Ācrᛶ᜞kȀcepsᜀᜅᜍᜓong;扌psilon;䏶rime;怵imĀ;e᜚᜛戽q;拍Ŷᜢᜦee;抽edĀ;gᜬᜭ挅e»ᜭrkĀ;t፜᜷brk;掶Āoyᜁᝁ;䐱quo;怞ʀcmprtᝓ᝛ᝡᝤᝨausĀ;eĊĉptyv;榰séᜌnoõēƀahwᝯ᝱ᝳ;䎲;愶een;扬r;쀀𝔟g΀costuvwឍឝឳេ៕៛៞ƀaiuបពរðݠrc;旯p»፱ƀdptឤឨឭot;樀lus;樁imes;樂ɱឹ\0\0ើcup;樆ar;昅riangleĀdu៍្own;施p;斳plus;樄eåᑄåᒭarow;植ƀako៭ᠦᠵĀcn៲ᠣkƀlst៺֫᠂ozenge;槫riangleȀ;dlr᠒᠓᠘᠝斴own;斾eft;旂ight;斸k;搣Ʊᠫ\0ᠳƲᠯ\0ᠱ;斒;斑4;斓ck;斈ĀeoᠾᡍĀ;qᡃᡆ쀀=⃥uiv;쀀≡⃥t;挐Ȁptwxᡙᡞᡧᡬf;쀀𝕓Ā;tᏋᡣom»Ꮜtie;拈؀DHUVbdhmptuvᢅᢖᢪᢻᣗᣛᣬ᣿ᤅᤊᤐᤡȀLRlrᢎᢐᢒᢔ;敗;敔;敖;敓ʀ;DUduᢡᢢᢤᢦᢨ敐;敦;敩;敤;敧ȀLRlrᢳᢵᢷᢹ;敝;敚;敜;教΀;HLRhlrᣊᣋᣍᣏᣑᣓᣕ救;敬;散;敠;敫;敢;敟ox;槉ȀLRlrᣤᣦᣨᣪ;敕;敒;攐;攌ʀ;DUduڽ᣷᣹᣻᣽;敥;敨;攬;攴inus;抟lus;択imes;抠ȀLRlrᤙᤛᤝ᤟;敛;敘;攘;攔΀;HLRhlrᤰᤱᤳᤵᤷ᤻᤹攂;敪;敡;敞;攼;攤;攜Āevģ᥂bar耻¦䂦Ȁceioᥑᥖᥚᥠr;쀀𝒷mi;恏mĀ;e᜚᜜lƀ;bhᥨᥩᥫ䁜;槅sub;柈Ŭᥴ᥾lĀ;e᥹᥺怢t»᥺pƀ;Eeįᦅᦇ;檮Ā;qۜۛೡᦧ\0᧨ᨑᨕᨲ\0ᨷᩐ\0\0᪴\0\0᫁\0\0ᬡᬮ᭍᭒\0᯽\0ᰌƀcpr᦭ᦲ᧝ute;䄇̀;abcdsᦿᧀᧄ᧊᧕᧙戩nd;橄rcup;橉Āau᧏᧒p;橋p;橇ot;橀;쀀∩︀Āeo᧢᧥t;恁îړȀaeiu᧰᧻ᨁᨅǰ᧵\0᧸s;橍on;䄍dil耻ç䃧rc;䄉psĀ;sᨌᨍ橌m;橐ot;䄋ƀdmnᨛᨠᨦil肻¸ƭptyv;榲t脀¢;eᨭᨮ䂢räƲr;쀀𝔠ƀceiᨽᩀᩍy;䑇ckĀ;mᩇᩈ朓ark»ᩈ;䏇r΀;Ecefms᩟᩠ᩢᩫ᪤᪪᪮旋;槃ƀ;elᩩᩪᩭ䋆q;扗eɡᩴ\0\0᪈rrowĀlr᩼᪁eft;憺ight;憻ʀRSacd᪒᪔᪖᪚᪟»ཇ;擈st;抛irc;抚ash;抝nint;樐id;櫯cir;槂ubsĀ;u᪻᪼晣it»᪼ˬ᫇᫔᫺\0ᬊonĀ;eᫍᫎ䀺Ā;qÇÆɭ᫙\0\0᫢aĀ;t᫞᫟䀬;䁀ƀ;fl᫨᫩᫫戁îᅠeĀmx᫱᫶ent»᫩eóɍǧ᫾\0ᬇĀ;dኻᬂot;橭nôɆƀfryᬐᬔᬗ;쀀𝕔oäɔ脀©;sŕᬝr;愗Āaoᬥᬩrr;憵ss;朗Ācuᬲᬷr;쀀𝒸Ābpᬼ᭄Ā;eᭁᭂ櫏;櫑Ā;eᭉᭊ櫐;櫒dot;拯΀delprvw᭠᭬᭷ᮂᮬᯔ᯹arrĀlr᭨᭪;椸;椵ɰ᭲\0\0᭵r;拞c;拟arrĀ;p᭿ᮀ憶;椽̀;bcdosᮏᮐᮖᮡᮥᮨ截rcap;橈Āauᮛᮞp;橆p;橊ot;抍r;橅;쀀∪︀Ȁalrv᮵ᮿᯞᯣrrĀ;mᮼᮽ憷;椼yƀevwᯇᯔᯘqɰᯎ\0\0ᯒreã᭳uã᭵ee;拎edge;拏en耻¤䂤earrowĀlrᯮ᯳eft»ᮀight»ᮽeäᯝĀciᰁᰇoninôǷnt;戱lcty;挭ঀAHabcdefhijlorstuwz᰸᰻᰿ᱝᱩᱵᲊᲞᲬᲷ᳻᳿ᴍᵻᶑᶫᶻ᷆᷍rò΁ar;楥Ȁglrs᱈ᱍ᱒᱔ger;怠eth;愸òᄳhĀ;vᱚᱛ怐»ऊūᱡᱧarow;椏aã̕Āayᱮᱳron;䄏;䐴ƀ;ao̲ᱼᲄĀgrʿᲁr;懊tseq;橷ƀglmᲑᲔᲘ耻°䂰ta;䎴ptyv;榱ĀirᲣᲨsht;楿;쀀𝔡arĀlrᲳᲵ»ࣜ»သʀaegsv᳂͸᳖᳜᳠mƀ;oș᳊᳔ndĀ;ș᳑uit;晦amma;䏝in;拲ƀ;io᳧᳨᳸䃷de脀÷;o᳧ᳰntimes;拇nø᳷cy;䑒cɯᴆ\0\0ᴊrn;挞op;挍ʀlptuwᴘᴝᴢᵉᵕlar;䀤f;쀀𝕕ʀ;emps̋ᴭᴷᴽᵂqĀ;d͒ᴳot;扑inus;戸lus;戔quare;抡blebarwedgåúnƀadhᄮᵝᵧownarrowóᲃarpoonĀlrᵲᵶefôᲴighôᲶŢᵿᶅkaro÷གɯᶊ\0\0ᶎrn;挟op;挌ƀcotᶘᶣᶦĀryᶝᶡ;쀀𝒹;䑕l;槶rok;䄑Ādrᶰᶴot;拱iĀ;fᶺ᠖斿Āah᷀᷃ròЩaòྦangle;榦Āci᷒ᷕy;䑟grarr;柿ऀDacdefglmnopqrstuxḁḉḙḸոḼṉṡṾấắẽỡἪἷὄ὎὚ĀDoḆᴴoôᲉĀcsḎḔute耻é䃩ter;橮ȀaioyḢḧḱḶron;䄛rĀ;cḭḮ扖耻ê䃪lon;払;䑍ot;䄗ĀDrṁṅot;扒;쀀𝔢ƀ;rsṐṑṗ檚ave耻è䃨Ā;dṜṝ檖ot;檘Ȁ;ilsṪṫṲṴ檙nters;揧;愓Ā;dṹṺ檕ot;檗ƀapsẅẉẗcr;䄓tyƀ;svẒẓẕ戅et»ẓpĀ1;ẝẤijạả;怄;怅怃ĀgsẪẬ;䅋p;怂ĀgpẴẸon;䄙f;쀀𝕖ƀalsỄỎỒrĀ;sỊị拕l;槣us;橱iƀ;lvỚớở䎵on»ớ;䏵ȀcsuvỪỳἋἣĀioữḱrc»Ḯɩỹ\0\0ỻíՈantĀglἂἆtr»ṝess»Ṻƀaeiἒ἖Ἒls;䀽st;扟vĀ;DȵἠD;橸parsl;槥ĀDaἯἳot;打rr;楱ƀcdiἾὁỸr;愯oô͒ĀahὉὋ;䎷耻ð䃰Āmrὓὗl耻ë䃫o;悬ƀcipὡὤὧl;䀡sôծĀeoὬὴctatioîՙnentialåչৡᾒ\0ᾞ\0ᾡᾧ\0\0ῆῌ\0ΐ\0ῦῪ \0 ⁚llingdotseñṄy;䑄male;晀ƀilrᾭᾳ῁lig;耀ffiɩᾹ\0\0᾽g;耀ffig;耀ffl;쀀𝔣lig;耀filig;쀀fjƀaltῙ῜ῡt;晭ig;耀flns;斱of;䆒ǰ΅\0ῳf;쀀𝕗ĀakֿῷĀ;vῼ´拔;櫙artint;樍Āao‌⁕Ācs‑⁒ႉ‸⁅⁈\0⁐β•‥‧‪‬\0‮耻½䂽;慓耻¼䂼;慕;慙;慛Ƴ‴\0‶;慔;慖ʴ‾⁁\0\0⁃耻¾䂾;慗;慜5;慘ƶ⁌\0⁎;慚;慝8;慞l;恄wn;挢cr;쀀𝒻ࢀEabcdefgijlnorstv₂₉₟₥₰₴⃰⃵⃺⃿℃ℒℸ̗ℾ⅒↞Ā;lٍ₇;檌ƀcmpₐₕ₝ute;䇵maĀ;dₜ᳚䎳;檆reve;䄟Āiy₪₮rc;䄝;䐳ot;䄡Ȁ;lqsؾق₽⃉ƀ;qsؾٌ⃄lanô٥Ȁ;cdl٥⃒⃥⃕c;檩otĀ;o⃜⃝檀Ā;l⃢⃣檂;檄Ā;e⃪⃭쀀⋛︀s;檔r;쀀𝔤Ā;gٳ؛mel;愷cy;䑓Ȁ;Eajٚℌℎℐ;檒;檥;檤ȀEaesℛℝ℩ℴ;扩pĀ;p℣ℤ檊rox»ℤĀ;q℮ℯ檈Ā;q℮ℛim;拧pf;쀀𝕘Āci⅃ⅆr;愊mƀ;el٫ⅎ⅐;檎;檐茀>;cdlqr׮ⅠⅪⅮⅳⅹĀciⅥⅧ;檧r;橺ot;拗Par;榕uest;橼ʀadelsↄⅪ←ٖ↛ǰ↉\0↎proø₞r;楸qĀlqؿ↖lesó₈ií٫Āen↣↭rtneqq;쀀≩︀Å↪ԀAabcefkosy⇄⇇⇱⇵⇺∘∝∯≨≽ròΠȀilmr⇐⇔⇗⇛rsðᒄf»․ilôکĀdr⇠⇤cy;䑊ƀ;cwࣴ⇫⇯ir;楈;憭ar;意irc;䄥ƀalr∁∎∓rtsĀ;u∉∊晥it»∊lip;怦con;抹r;쀀𝔥sĀew∣∩arow;椥arow;椦ʀamopr∺∾≃≞≣rr;懿tht;戻kĀlr≉≓eftarrow;憩ightarrow;憪f;쀀𝕙bar;怕ƀclt≯≴≸r;쀀𝒽asè⇴rok;䄧Ābp⊂⊇ull;恃hen»ᱛૡ⊣\0⊪\0⊸⋅⋎\0⋕⋳\0\0⋸⌢⍧⍢⍿\0⎆⎪⎴cute耻í䃭ƀ;iyݱ⊰⊵rc耻î䃮;䐸Ācx⊼⊿y;䐵cl耻¡䂡ĀfrΟ⋉;쀀𝔦rave耻ì䃬Ȁ;inoܾ⋝⋩⋮Āin⋢⋦nt;樌t;戭fin;槜ta;愩lig;䄳ƀaop⋾⌚⌝ƀcgt⌅⌈⌗r;䄫ƀelpܟ⌏⌓inåގarôܠh;䄱f;抷ed;䆵ʀ;cfotӴ⌬⌱⌽⍁are;愅inĀ;t⌸⌹戞ie;槝doô⌙ʀ;celpݗ⍌⍐⍛⍡al;抺Āgr⍕⍙eróᕣã⍍arhk;樗rod;樼Ȁcgpt⍯⍲⍶⍻y;䑑on;䄯f;쀀𝕚a;䎹uest耻¿䂿Āci⎊⎏r;쀀𝒾nʀ;EdsvӴ⎛⎝⎡ӳ;拹ot;拵Ā;v⎦⎧拴;拳Ā;iݷ⎮lde;䄩ǫ⎸\0⎼cy;䑖l耻ï䃯̀cfmosu⏌⏗⏜⏡⏧⏵Āiy⏑⏕rc;䄵;䐹r;쀀𝔧ath;䈷pf;쀀𝕛ǣ⏬\0⏱r;쀀𝒿rcy;䑘kcy;䑔Ѐacfghjos␋␖␢␧␭␱␵␻ppaĀ;v␓␔䎺;䏰Āey␛␠dil;䄷;䐺r;쀀𝔨reen;䄸cy;䑅cy;䑜pf;쀀𝕜cr;쀀𝓀஀ABEHabcdefghjlmnoprstuv⑰⒁⒆⒍⒑┎┽╚▀♎♞♥♹♽⚚⚲⛘❝❨➋⟀⠁⠒ƀart⑷⑺⑼rò৆òΕail;椛arr;椎Ā;gঔ⒋;檋ar;楢ॣ⒥\0⒪\0⒱\0\0\0\0\0⒵Ⓔ\0ⓆⓈⓍ\0⓹ute;䄺mptyv;榴raîࡌbda;䎻gƀ;dlࢎⓁⓃ;榑åࢎ;檅uo耻«䂫rЀ;bfhlpst࢙ⓞⓦⓩ⓫⓮⓱⓵Ā;f࢝ⓣs;椟s;椝ë≒p;憫l;椹im;楳l;憢ƀ;ae⓿─┄檫il;椙Ā;s┉┊檭;쀀⪭︀ƀabr┕┙┝rr;椌rk;杲Āak┢┬cĀek┨┪;䁻;䁛Āes┱┳;榋lĀdu┹┻;榏;榍Ȁaeuy╆╋╖╘ron;䄾Ādi═╔il;䄼ìࢰâ┩;䐻Ȁcqrs╣╦╭╽a;椶uoĀ;rนᝆĀdu╲╷har;楧shar;楋h;憲ʀ;fgqs▋▌উ◳◿扤tʀahlrt▘▤▷◂◨rrowĀ;t࢙□aé⓶arpoonĀdu▯▴own»њp»०eftarrows;懇ightƀahs◍◖◞rrowĀ;sࣴࢧarpoonó྘quigarro÷⇰hreetimes;拋ƀ;qs▋ও◺lanôবʀ;cdgsব☊☍☝☨c;檨otĀ;o☔☕橿Ā;r☚☛檁;檃Ā;e☢☥쀀⋚︀s;檓ʀadegs☳☹☽♉♋pproøⓆot;拖qĀgq♃♅ôউgtò⒌ôছiíলƀilr♕࣡♚sht;楼;쀀𝔩Ā;Eজ♣;檑š♩♶rĀdu▲♮Ā;l॥♳;楪lk;斄cy;䑙ʀ;achtੈ⚈⚋⚑⚖rò◁orneòᴈard;楫ri;旺Āio⚟⚤dot;䅀ustĀ;a⚬⚭掰che»⚭ȀEaes⚻⚽⛉⛔;扨pĀ;p⛃⛄檉rox»⛄Ā;q⛎⛏檇Ā;q⛎⚻im;拦Ѐabnoptwz⛩⛴⛷✚✯❁❇❐Ānr⛮⛱g;柬r;懽rëࣁgƀlmr⛿✍✔eftĀar০✇ightá৲apsto;柼ightá৽parrowĀlr✥✩efô⓭ight;憬ƀafl✶✹✽r;榅;쀀𝕝us;樭imes;樴š❋❏st;戗áፎƀ;ef❗❘᠀旊nge»❘arĀ;l❤❥䀨t;榓ʀachmt❳❶❼➅➇ròࢨorneòᶌarĀ;d྘➃;業;怎ri;抿̀achiqt➘➝ੀ➢➮➻quo;怹r;쀀𝓁mƀ;egল➪➬;檍;檏Ābu┪➳oĀ;rฟ➹;怚rok;䅂萀<;cdhilqrࠫ⟒☹⟜⟠⟥⟪⟰Āci⟗⟙;檦r;橹reå◲mes;拉arr;楶uest;橻ĀPi⟵⟹ar;榖ƀ;ef⠀भ᠛旃rĀdu⠇⠍shar;楊har;楦Āen⠗⠡rtneqq;쀀≨︀Å⠞܀Dacdefhilnopsu⡀⡅⢂⢎⢓⢠⢥⢨⣚⣢⣤ઃ⣳⤂Dot;戺Ȁclpr⡎⡒⡣⡽r耻¯䂯Āet⡗⡙;時Ā;e⡞⡟朠se»⡟Ā;sျ⡨toȀ;dluျ⡳⡷⡻owîҌefôएðᏑker;斮Āoy⢇⢌mma;権;䐼ash;怔asuredangle»ᘦr;쀀𝔪o;愧ƀcdn⢯⢴⣉ro耻µ䂵Ȁ;acdᑤ⢽⣀⣄sôᚧir;櫰ot肻·Ƶusƀ;bd⣒ᤃ⣓戒Ā;uᴼ⣘;横ţ⣞⣡p;櫛ò−ðઁĀdp⣩⣮els;抧f;쀀𝕞Āct⣸⣽r;쀀𝓂pos»ᖝƀ;lm⤉⤊⤍䎼timap;抸ఀGLRVabcdefghijlmoprstuvw⥂⥓⥾⦉⦘⧚⧩⨕⨚⩘⩝⪃⪕⪤⪨⬄⬇⭄⭿⮮ⰴⱧⱼ⳩Āgt⥇⥋;쀀⋙̸Ā;v⥐௏쀀≫⃒ƀelt⥚⥲⥶ftĀar⥡⥧rrow;懍ightarrow;懎;쀀⋘̸Ā;v⥻ే쀀≪⃒ightarrow;懏ĀDd⦎⦓ash;抯ash;抮ʀbcnpt⦣⦧⦬⦱⧌la»˞ute;䅄g;쀀∠⃒ʀ;Eiop඄⦼⧀⧅⧈;쀀⩰̸d;쀀≋̸s;䅉roø඄urĀ;a⧓⧔普lĀ;s⧓ସdz⧟\0⧣p肻 ଷmpĀ;e௹ఀʀaeouy⧴⧾⨃⨐⨓ǰ⧹\0⧻;橃on;䅈dil;䅆ngĀ;dൾ⨊ot;쀀⩭̸p;橂;䐽ash;怓΀;Aadqsxஒ⨩⨭⨻⩁⩅⩐rr;懗rĀhr⨳⨶k;椤Ā;oᏲᏰot;쀀≐̸uiöୣĀei⩊⩎ar;椨í஘istĀ;s஠டr;쀀𝔫ȀEest௅⩦⩹⩼ƀ;qs஼⩭௡ƀ;qs஼௅⩴lanô௢ií௪Ā;rஶ⪁»ஷƀAap⪊⪍⪑rò⥱rr;憮ar;櫲ƀ;svྍ⪜ྌĀ;d⪡⪢拼;拺cy;䑚΀AEadest⪷⪺⪾⫂⫅⫶⫹rò⥦;쀀≦̸rr;憚r;急Ȁ;fqs఻⫎⫣⫯tĀar⫔⫙rro÷⫁ightarro÷⪐ƀ;qs఻⪺⫪lanôౕĀ;sౕ⫴»శiíౝĀ;rవ⫾iĀ;eచథiäඐĀpt⬌⬑f;쀀𝕟膀¬;in⬙⬚⬶䂬nȀ;Edvஉ⬤⬨⬮;쀀⋹̸ot;쀀⋵̸ǡஉ⬳⬵;拷;拶iĀ;vಸ⬼ǡಸ⭁⭃;拾;拽ƀaor⭋⭣⭩rȀ;ast୻⭕⭚⭟lleì୻l;쀀⫽⃥;쀀∂̸lint;樔ƀ;ceಒ⭰⭳uåಥĀ;cಘ⭸Ā;eಒ⭽ñಘȀAait⮈⮋⮝⮧rò⦈rrƀ;cw⮔⮕⮙憛;쀀⤳̸;쀀↝̸ghtarrow»⮕riĀ;eೋೖ΀chimpqu⮽⯍⯙⬄୸⯤⯯Ȁ;cerല⯆ഷ⯉uå൅;쀀𝓃ortɭ⬅\0\0⯖ará⭖mĀ;e൮⯟Ā;q൴൳suĀbp⯫⯭å೸åഋƀbcp⯶ⰑⰙȀ;Ees⯿ⰀഢⰄ抄;쀀⫅̸etĀ;eഛⰋqĀ;qണⰀcĀ;eലⰗñസȀ;EesⰢⰣൟⰧ抅;쀀⫆̸etĀ;e൘ⰮqĀ;qൠⰣȀgilrⰽⰿⱅⱇìௗlde耻ñ䃱çృiangleĀlrⱒⱜeftĀ;eచⱚñదightĀ;eೋⱥñ೗Ā;mⱬⱭ䎽ƀ;esⱴⱵⱹ䀣ro;愖p;怇ҀDHadgilrsⲏⲔⲙⲞⲣⲰⲶⳓⳣash;抭arr;椄p;쀀≍⃒ash;抬ĀetⲨⲬ;쀀≥⃒;쀀>⃒nfin;槞ƀAetⲽⳁⳅrr;椂;쀀≤⃒Ā;rⳊⳍ쀀<⃒ie;쀀⊴⃒ĀAtⳘⳜrr;椃rie;쀀⊵⃒im;쀀∼⃒ƀAan⳰⳴ⴂrr;懖rĀhr⳺⳽k;椣Ā;oᏧᏥear;椧ቓ᪕\0\0\0\0\0\0\0\0\0\0\0\0\0ⴭ\0ⴸⵈⵠⵥ⵲ⶄᬇ\0\0ⶍⶫ\0ⷈⷎ\0ⷜ⸙⸫⸾⹃Ācsⴱ᪗ute耻ó䃳ĀiyⴼⵅrĀ;c᪞ⵂ耻ô䃴;䐾ʀabios᪠ⵒⵗLjⵚlac;䅑v;樸old;榼lig;䅓Ācr⵩⵭ir;榿;쀀𝔬ͯ⵹\0\0⵼\0ⶂn;䋛ave耻ò䃲;槁Ābmⶈ෴ar;榵Ȁacitⶕ⶘ⶥⶨrò᪀Āir⶝ⶠr;榾oss;榻nå๒;槀ƀaeiⶱⶵⶹcr;䅍ga;䏉ƀcdnⷀⷅǍron;䎿;榶pf;쀀𝕠ƀaelⷔ⷗ǒr;榷rp;榹΀;adiosvⷪⷫⷮ⸈⸍⸐⸖戨rò᪆Ȁ;efmⷷⷸ⸂⸅橝rĀ;oⷾⷿ愴f»ⷿ耻ª䂪耻º䂺gof;抶r;橖lope;橗;橛ƀclo⸟⸡⸧ò⸁ash耻ø䃸l;折iŬⸯ⸴de耻õ䃵esĀ;aǛ⸺s;樶ml耻ö䃶bar;挽ૡ⹞\0⹽\0⺀⺝\0⺢⺹\0\0⻋ຜ\0⼓\0\0⼫⾼\0⿈rȀ;astЃ⹧⹲຅脀¶;l⹭⹮䂶leìЃɩ⹸\0\0⹻m;櫳;櫽y;䐿rʀcimpt⺋⺏⺓ᡥ⺗nt;䀥od;䀮il;怰enk;怱r;쀀𝔭ƀimo⺨⺰⺴Ā;v⺭⺮䏆;䏕maô੶ne;明ƀ;tv⺿⻀⻈䏀chfork»´;䏖Āau⻏⻟nĀck⻕⻝kĀ;h⇴⻛;愎ö⇴sҀ;abcdemst⻳⻴ᤈ⻹⻽⼄⼆⼊⼎䀫cir;樣ir;樢Āouᵀ⼂;樥;橲n肻±ຝim;樦wo;樧ƀipu⼙⼠⼥ntint;樕f;쀀𝕡nd耻£䂣Ԁ;Eaceinosu່⼿⽁⽄⽇⾁⾉⾒⽾⾶;檳p;檷uå໙Ā;c໎⽌̀;acens່⽙⽟⽦⽨⽾pproø⽃urlyeñ໙ñ໎ƀaes⽯⽶⽺pprox;檹qq;檵im;拨iíໟmeĀ;s⾈ຮ怲ƀEas⽸⾐⽺ð⽵ƀdfp໬⾙⾯ƀals⾠⾥⾪lar;挮ine;挒urf;挓Ā;t໻⾴ï໻rel;抰Āci⿀⿅r;쀀𝓅;䏈ncsp;怈̀fiopsu⿚⋢⿟⿥⿫⿱r;쀀𝔮pf;쀀𝕢rime;恗cr;쀀𝓆ƀaeo⿸〉〓tĀei⿾々rnionóڰnt;樖stĀ;e【】䀿ñἙô༔઀ABHabcdefhilmnoprstux぀けさすムㄎㄫㅇㅢㅲㆎ㈆㈕㈤㈩㉘㉮㉲㊐㊰㊷ƀartぇおがròႳòϝail;検aròᱥar;楤΀cdenqrtとふへみわゔヌĀeuねぱ;쀀∽̱te;䅕iãᅮmptyv;榳gȀ;del࿑らるろ;榒;榥å࿑uo耻»䂻rր;abcfhlpstw࿜ガクシスゼゾダッデナp;極Ā;f࿠ゴs;椠;椳s;椞ë≝ð✮l;楅im;楴l;憣;憝Āaiパフil;椚oĀ;nホボ戶aló༞ƀabrョリヮrò៥rk;杳ĀakンヽcĀekヹ・;䁽;䁝Āes㄂㄄;榌lĀduㄊㄌ;榎;榐Ȁaeuyㄗㄜㄧㄩron;䅙Ādiㄡㄥil;䅗ì࿲âヺ;䑀Ȁclqsㄴㄷㄽㅄa;椷dhar;楩uoĀ;rȎȍh;憳ƀacgㅎㅟངlȀ;ipsླྀㅘㅛႜnåႻarôྩt;断ƀilrㅩဣㅮsht;楽;쀀𝔯ĀaoㅷㆆrĀduㅽㅿ»ѻĀ;l႑ㆄ;楬Ā;vㆋㆌ䏁;䏱ƀgns㆕ㇹㇼht̀ahlrstㆤㆰ㇂㇘㇤㇮rrowĀ;t࿜ㆭaéトarpoonĀduㆻㆿowîㅾp»႒eftĀah㇊㇐rrowó࿪arpoonóՑightarrows;應quigarro÷ニhreetimes;拌g;䋚ingdotseñἲƀahm㈍㈐㈓rò࿪aòՑ;怏oustĀ;a㈞㈟掱che»㈟mid;櫮Ȁabpt㈲㈽㉀㉒Ānr㈷㈺g;柭r;懾rëဃƀafl㉇㉊㉎r;榆;쀀𝕣us;樮imes;樵Āap㉝㉧rĀ;g㉣㉤䀩t;榔olint;樒arò㇣Ȁachq㉻㊀Ⴜ㊅quo;怺r;쀀𝓇Ābu・㊊oĀ;rȔȓƀhir㊗㊛㊠reåㇸmes;拊iȀ;efl㊪ၙᠡ㊫方tri;槎luhar;楨;愞ൡ㋕㋛㋟㌬㌸㍱\0㍺㎤\0\0㏬㏰\0㐨㑈㑚㒭㒱㓊㓱\0㘖\0\0㘳cute;䅛quï➺Ԁ;Eaceinpsyᇭ㋳㋵㋿㌂㌋㌏㌟㌦㌩;檴ǰ㋺\0㋼;檸on;䅡uåᇾĀ;dᇳ㌇il;䅟rc;䅝ƀEas㌖㌘㌛;檶p;檺im;择olint;樓iíሄ;䑁otƀ;be㌴ᵇ㌵担;橦΀Aacmstx㍆㍊㍗㍛㍞㍣㍭rr;懘rĀhr㍐㍒ë∨Ā;oਸ਼਴t耻§䂧i;䀻war;椩mĀin㍩ðnuóñt;朶rĀ;o㍶⁕쀀𝔰Ȁacoy㎂㎆㎑㎠rp;景Āhy㎋㎏cy;䑉;䑈rtɭ㎙\0\0㎜iäᑤaraì⹯耻­䂭Āgm㎨㎴maƀ;fv㎱㎲㎲䏃;䏂Ѐ;deglnprካ㏅㏉㏎㏖㏞㏡㏦ot;橪Ā;q኱ኰĀ;E㏓㏔檞;檠Ā;E㏛㏜檝;檟e;扆lus;樤arr;楲aròᄽȀaeit㏸㐈㐏㐗Āls㏽㐄lsetmé㍪hp;樳parsl;槤Ādlᑣ㐔e;挣Ā;e㐜㐝檪Ā;s㐢㐣檬;쀀⪬︀ƀflp㐮㐳㑂tcy;䑌Ā;b㐸㐹䀯Ā;a㐾㐿槄r;挿f;쀀𝕤aĀdr㑍ЂesĀ;u㑔㑕晠it»㑕ƀcsu㑠㑹㒟Āau㑥㑯pĀ;sᆈ㑫;쀀⊓︀pĀ;sᆴ㑵;쀀⊔︀uĀbp㑿㒏ƀ;esᆗᆜ㒆etĀ;eᆗ㒍ñᆝƀ;esᆨᆭ㒖etĀ;eᆨ㒝ñᆮƀ;afᅻ㒦ְrť㒫ֱ»ᅼaròᅈȀcemt㒹㒾㓂㓅r;쀀𝓈tmîñiì㐕aræᆾĀar㓎㓕rĀ;f㓔ឿ昆Āan㓚㓭ightĀep㓣㓪psiloîỠhé⺯s»⡒ʀbcmnp㓻㕞ሉ㖋㖎Ҁ;Edemnprs㔎㔏㔑㔕㔞㔣㔬㔱㔶抂;櫅ot;檽Ā;dᇚ㔚ot;櫃ult;櫁ĀEe㔨㔪;櫋;把lus;檿arr;楹ƀeiu㔽㕒㕕tƀ;en㔎㕅㕋qĀ;qᇚ㔏eqĀ;q㔫㔨m;櫇Ābp㕚㕜;櫕;櫓c̀;acensᇭ㕬㕲㕹㕻㌦pproø㋺urlyeñᇾñᇳƀaes㖂㖈㌛pproø㌚qñ㌗g;晪ڀ123;Edehlmnps㖩㖬㖯ሜ㖲㖴㗀㗉㗕㗚㗟㗨㗭耻¹䂹耻²䂲耻³䂳;櫆Āos㖹㖼t;檾ub;櫘Ā;dሢ㗅ot;櫄sĀou㗏㗒l;柉b;櫗arr;楻ult;櫂ĀEe㗤㗦;櫌;抋lus;櫀ƀeiu㗴㘉㘌tƀ;enሜ㗼㘂qĀ;qሢ㖲eqĀ;q㗧㗤m;櫈Ābp㘑㘓;櫔;櫖ƀAan㘜㘠㘭rr;懙rĀhr㘦㘨ë∮Ā;oਫ਩war;椪lig耻ß䃟௡㙑㙝㙠ዎ㙳㙹\0㙾㛂\0\0\0\0\0㛛㜃\0㜉㝬\0\0\0㞇ɲ㙖\0\0㙛get;挖;䏄rë๟ƀaey㙦㙫㙰ron;䅥dil;䅣;䑂lrec;挕r;쀀𝔱Ȁeiko㚆㚝㚵㚼Dz㚋\0㚑eĀ4fኄኁaƀ;sv㚘㚙㚛䎸ym;䏑Ācn㚢㚲kĀas㚨㚮pproø዁im»ኬsðኞĀas㚺㚮ð዁rn耻þ䃾Ǭ̟㛆⋧es膀×;bd㛏㛐㛘䃗Ā;aᤏ㛕r;樱;樰ƀeps㛡㛣㜀á⩍Ȁ;bcf҆㛬㛰㛴ot;挶ir;櫱Ā;o㛹㛼쀀𝕥rk;櫚á㍢rime;怴ƀaip㜏㜒㝤dåቈ΀adempst㜡㝍㝀㝑㝗㝜㝟ngleʀ;dlqr㜰㜱㜶㝀㝂斵own»ᶻeftĀ;e⠀㜾ñम;扜ightĀ;e㊪㝋ñၚot;旬inus;樺lus;樹b;槍ime;樻ezium;揢ƀcht㝲㝽㞁Āry㝷㝻;쀀𝓉;䑆cy;䑛rok;䅧Āio㞋㞎xô᝷headĀlr㞗㞠eftarro÷ࡏightarrow»ཝऀAHabcdfghlmoprstuw㟐㟓㟗㟤㟰㟼㠎㠜㠣㠴㡑㡝㡫㢩㣌㣒㣪㣶ròϭar;楣Ācr㟜㟢ute耻ú䃺òᅐrǣ㟪\0㟭y;䑞ve;䅭Āiy㟵㟺rc耻û䃻;䑃ƀabh㠃㠆㠋ròᎭlac;䅱aòᏃĀir㠓㠘sht;楾;쀀𝔲rave耻ù䃹š㠧㠱rĀlr㠬㠮»ॗ»ႃlk;斀Āct㠹㡍ɯ㠿\0\0㡊rnĀ;e㡅㡆挜r»㡆op;挏ri;旸Āal㡖㡚cr;䅫肻¨͉Āgp㡢㡦on;䅳f;쀀𝕦̀adhlsuᅋ㡸㡽፲㢑㢠ownáᎳarpoonĀlr㢈㢌efô㠭ighô㠯iƀ;hl㢙㢚㢜䏅»ᏺon»㢚parrows;懈ƀcit㢰㣄㣈ɯ㢶\0\0㣁rnĀ;e㢼㢽挝r»㢽op;挎ng;䅯ri;旹cr;쀀𝓊ƀdir㣙㣝㣢ot;拰lde;䅩iĀ;f㜰㣨»᠓Āam㣯㣲rò㢨l耻ü䃼angle;榧ހABDacdeflnoprsz㤜㤟㤩㤭㦵㦸㦽㧟㧤㧨㧳㧹㧽㨁㨠ròϷarĀ;v㤦㤧櫨;櫩asèϡĀnr㤲㤷grt;榜΀eknprst㓣㥆㥋㥒㥝㥤㦖appá␕othinçẖƀhir㓫⻈㥙opô⾵Ā;hᎷ㥢ïㆍĀiu㥩㥭gmá㎳Ābp㥲㦄setneqĀ;q㥽㦀쀀⊊︀;쀀⫋︀setneqĀ;q㦏㦒쀀⊋︀;쀀⫌︀Āhr㦛㦟etá㚜iangleĀlr㦪㦯eft»थight»ၑy;䐲ash»ံƀelr㧄㧒㧗ƀ;beⷪ㧋㧏ar;抻q;扚lip;拮Ābt㧜ᑨaòᑩr;쀀𝔳tré㦮suĀbp㧯㧱»ജ»൙pf;쀀𝕧roð໻tré㦴Ācu㨆㨋r;쀀𝓋Ābp㨐㨘nĀEe㦀㨖»㥾nĀEe㦒㨞»㦐igzag;榚΀cefoprs㨶㨻㩖㩛㩔㩡㩪irc;䅵Ādi㩀㩑Ābg㩅㩉ar;機eĀ;qᗺ㩏;扙erp;愘r;쀀𝔴pf;쀀𝕨Ā;eᑹ㩦atèᑹcr;쀀𝓌ૣណ㪇\0㪋\0㪐㪛\0\0㪝㪨㪫㪯\0\0㫃㫎\0㫘ៜ៟tré៑r;쀀𝔵ĀAa㪔㪗ròσrò৶;䎾ĀAa㪡㪤ròθrò৫að✓is;拻ƀdptឤ㪵㪾Āfl㪺ឩ;쀀𝕩imåឲĀAa㫇㫊ròώròਁĀcq㫒ីr;쀀𝓍Āpt៖㫜ré។Ѐacefiosu㫰㫽㬈㬌㬑㬕㬛㬡cĀuy㫶㫻te耻ý䃽;䑏Āiy㬂㬆rc;䅷;䑋n耻¥䂥r;쀀𝔶cy;䑗pf;쀀𝕪cr;쀀𝓎Ācm㬦㬩y;䑎l耻ÿ䃿Ԁacdefhiosw㭂㭈㭔㭘㭤㭩㭭㭴㭺㮀cute;䅺Āay㭍㭒ron;䅾;䐷ot;䅼Āet㭝㭡træᕟa;䎶r;쀀𝔷cy;䐶grarr;懝pf;쀀𝕫cr;쀀𝓏Ājn㮅㮇;怍j;怌'.split("").map((c=>c.charCodeAt(0))));
//# sourceMappingURL=decode-data-html.js.map
/***/},
/***/"./node_modules/entities/lib/esm/generated/decode-data-xml.js":
/*!********************************************************************!*\
  !*** ./node_modules/entities/lib/esm/generated/decode-data-xml.js ***!
  \********************************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */default:()=>__WEBPACK_DEFAULT_EXPORT__
/* harmony export */});
// Generated using scripts/write-decode-map.ts
/* harmony default export */const __WEBPACK_DEFAULT_EXPORT__=new Uint16Array(
// prettier-ignore
"Ȁaglq\tɭ\0\0p;䀦os;䀧t;䀾t;䀼uot;䀢".split("").map((c=>c.charCodeAt(0))));
//# sourceMappingURL=decode-data-xml.js.map
/***/},
/***/"./node_modules/entities/lib/esm/generated/encode-html.js":
/*!****************************************************************!*\
  !*** ./node_modules/entities/lib/esm/generated/encode-html.js ***!
  \****************************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */default:()=>__WEBPACK_DEFAULT_EXPORT__
/* harmony export */});
// Generated using scripts/write-encode-map.ts
function restoreDiff(arr){for(let i=1;i<arr.length;i++)arr[i][0]+=arr[i-1][0]+1;return arr}
// prettier-ignore
/* harmony default export */const __WEBPACK_DEFAULT_EXPORT__=new Map(restoreDiff([[9,"&Tab;"],[0,"&NewLine;"],[22,"&excl;"],[0,"&quot;"],[0,"&num;"],[0,"&dollar;"],[0,"&percnt;"],[0,"&amp;"],[0,"&apos;"],[0,"&lpar;"],[0,"&rpar;"],[0,"&ast;"],[0,"&plus;"],[0,"&comma;"],[1,"&period;"],[0,"&sol;"],[10,"&colon;"],[0,"&semi;"],[0,{v:"&lt;",n:8402,o:"&nvlt;"}],[0,{v:"&equals;",n:8421,o:"&bne;"}],[0,{v:"&gt;",n:8402,o:"&nvgt;"}],[0,"&quest;"],[0,"&commat;"],[26,"&lbrack;"],[0,"&bsol;"],[0,"&rbrack;"],[0,"&Hat;"],[0,"&lowbar;"],[0,"&DiacriticalGrave;"],[5,{n:106,o:"&fjlig;"}],[20,"&lbrace;"],[0,"&verbar;"],[0,"&rbrace;"],[34,"&nbsp;"],[0,"&iexcl;"],[0,"&cent;"],[0,"&pound;"],[0,"&curren;"],[0,"&yen;"],[0,"&brvbar;"],[0,"&sect;"],[0,"&die;"],[0,"&copy;"],[0,"&ordf;"],[0,"&laquo;"],[0,"&not;"],[0,"&shy;"],[0,"&circledR;"],[0,"&macr;"],[0,"&deg;"],[0,"&PlusMinus;"],[0,"&sup2;"],[0,"&sup3;"],[0,"&acute;"],[0,"&micro;"],[0,"&para;"],[0,"&centerdot;"],[0,"&cedil;"],[0,"&sup1;"],[0,"&ordm;"],[0,"&raquo;"],[0,"&frac14;"],[0,"&frac12;"],[0,"&frac34;"],[0,"&iquest;"],[0,"&Agrave;"],[0,"&Aacute;"],[0,"&Acirc;"],[0,"&Atilde;"],[0,"&Auml;"],[0,"&angst;"],[0,"&AElig;"],[0,"&Ccedil;"],[0,"&Egrave;"],[0,"&Eacute;"],[0,"&Ecirc;"],[0,"&Euml;"],[0,"&Igrave;"],[0,"&Iacute;"],[0,"&Icirc;"],[0,"&Iuml;"],[0,"&ETH;"],[0,"&Ntilde;"],[0,"&Ograve;"],[0,"&Oacute;"],[0,"&Ocirc;"],[0,"&Otilde;"],[0,"&Ouml;"],[0,"&times;"],[0,"&Oslash;"],[0,"&Ugrave;"],[0,"&Uacute;"],[0,"&Ucirc;"],[0,"&Uuml;"],[0,"&Yacute;"],[0,"&THORN;"],[0,"&szlig;"],[0,"&agrave;"],[0,"&aacute;"],[0,"&acirc;"],[0,"&atilde;"],[0,"&auml;"],[0,"&aring;"],[0,"&aelig;"],[0,"&ccedil;"],[0,"&egrave;"],[0,"&eacute;"],[0,"&ecirc;"],[0,"&euml;"],[0,"&igrave;"],[0,"&iacute;"],[0,"&icirc;"],[0,"&iuml;"],[0,"&eth;"],[0,"&ntilde;"],[0,"&ograve;"],[0,"&oacute;"],[0,"&ocirc;"],[0,"&otilde;"],[0,"&ouml;"],[0,"&div;"],[0,"&oslash;"],[0,"&ugrave;"],[0,"&uacute;"],[0,"&ucirc;"],[0,"&uuml;"],[0,"&yacute;"],[0,"&thorn;"],[0,"&yuml;"],[0,"&Amacr;"],[0,"&amacr;"],[0,"&Abreve;"],[0,"&abreve;"],[0,"&Aogon;"],[0,"&aogon;"],[0,"&Cacute;"],[0,"&cacute;"],[0,"&Ccirc;"],[0,"&ccirc;"],[0,"&Cdot;"],[0,"&cdot;"],[0,"&Ccaron;"],[0,"&ccaron;"],[0,"&Dcaron;"],[0,"&dcaron;"],[0,"&Dstrok;"],[0,"&dstrok;"],[0,"&Emacr;"],[0,"&emacr;"],[2,"&Edot;"],[0,"&edot;"],[0,"&Eogon;"],[0,"&eogon;"],[0,"&Ecaron;"],[0,"&ecaron;"],[0,"&Gcirc;"],[0,"&gcirc;"],[0,"&Gbreve;"],[0,"&gbreve;"],[0,"&Gdot;"],[0,"&gdot;"],[0,"&Gcedil;"],[1,"&Hcirc;"],[0,"&hcirc;"],[0,"&Hstrok;"],[0,"&hstrok;"],[0,"&Itilde;"],[0,"&itilde;"],[0,"&Imacr;"],[0,"&imacr;"],[2,"&Iogon;"],[0,"&iogon;"],[0,"&Idot;"],[0,"&imath;"],[0,"&IJlig;"],[0,"&ijlig;"],[0,"&Jcirc;"],[0,"&jcirc;"],[0,"&Kcedil;"],[0,"&kcedil;"],[0,"&kgreen;"],[0,"&Lacute;"],[0,"&lacute;"],[0,"&Lcedil;"],[0,"&lcedil;"],[0,"&Lcaron;"],[0,"&lcaron;"],[0,"&Lmidot;"],[0,"&lmidot;"],[0,"&Lstrok;"],[0,"&lstrok;"],[0,"&Nacute;"],[0,"&nacute;"],[0,"&Ncedil;"],[0,"&ncedil;"],[0,"&Ncaron;"],[0,"&ncaron;"],[0,"&napos;"],[0,"&ENG;"],[0,"&eng;"],[0,"&Omacr;"],[0,"&omacr;"],[2,"&Odblac;"],[0,"&odblac;"],[0,"&OElig;"],[0,"&oelig;"],[0,"&Racute;"],[0,"&racute;"],[0,"&Rcedil;"],[0,"&rcedil;"],[0,"&Rcaron;"],[0,"&rcaron;"],[0,"&Sacute;"],[0,"&sacute;"],[0,"&Scirc;"],[0,"&scirc;"],[0,"&Scedil;"],[0,"&scedil;"],[0,"&Scaron;"],[0,"&scaron;"],[0,"&Tcedil;"],[0,"&tcedil;"],[0,"&Tcaron;"],[0,"&tcaron;"],[0,"&Tstrok;"],[0,"&tstrok;"],[0,"&Utilde;"],[0,"&utilde;"],[0,"&Umacr;"],[0,"&umacr;"],[0,"&Ubreve;"],[0,"&ubreve;"],[0,"&Uring;"],[0,"&uring;"],[0,"&Udblac;"],[0,"&udblac;"],[0,"&Uogon;"],[0,"&uogon;"],[0,"&Wcirc;"],[0,"&wcirc;"],[0,"&Ycirc;"],[0,"&ycirc;"],[0,"&Yuml;"],[0,"&Zacute;"],[0,"&zacute;"],[0,"&Zdot;"],[0,"&zdot;"],[0,"&Zcaron;"],[0,"&zcaron;"],[19,"&fnof;"],[34,"&imped;"],[63,"&gacute;"],[65,"&jmath;"],[142,"&circ;"],[0,"&caron;"],[16,"&breve;"],[0,"&DiacriticalDot;"],[0,"&ring;"],[0,"&ogon;"],[0,"&DiacriticalTilde;"],[0,"&dblac;"],[51,"&DownBreve;"],[127,"&Alpha;"],[0,"&Beta;"],[0,"&Gamma;"],[0,"&Delta;"],[0,"&Epsilon;"],[0,"&Zeta;"],[0,"&Eta;"],[0,"&Theta;"],[0,"&Iota;"],[0,"&Kappa;"],[0,"&Lambda;"],[0,"&Mu;"],[0,"&Nu;"],[0,"&Xi;"],[0,"&Omicron;"],[0,"&Pi;"],[0,"&Rho;"],[1,"&Sigma;"],[0,"&Tau;"],[0,"&Upsilon;"],[0,"&Phi;"],[0,"&Chi;"],[0,"&Psi;"],[0,"&ohm;"],[7,"&alpha;"],[0,"&beta;"],[0,"&gamma;"],[0,"&delta;"],[0,"&epsi;"],[0,"&zeta;"],[0,"&eta;"],[0,"&theta;"],[0,"&iota;"],[0,"&kappa;"],[0,"&lambda;"],[0,"&mu;"],[0,"&nu;"],[0,"&xi;"],[0,"&omicron;"],[0,"&pi;"],[0,"&rho;"],[0,"&sigmaf;"],[0,"&sigma;"],[0,"&tau;"],[0,"&upsi;"],[0,"&phi;"],[0,"&chi;"],[0,"&psi;"],[0,"&omega;"],[7,"&thetasym;"],[0,"&Upsi;"],[2,"&phiv;"],[0,"&piv;"],[5,"&Gammad;"],[0,"&digamma;"],[18,"&kappav;"],[0,"&rhov;"],[3,"&epsiv;"],[0,"&backepsilon;"],[10,"&IOcy;"],[0,"&DJcy;"],[0,"&GJcy;"],[0,"&Jukcy;"],[0,"&DScy;"],[0,"&Iukcy;"],[0,"&YIcy;"],[0,"&Jsercy;"],[0,"&LJcy;"],[0,"&NJcy;"],[0,"&TSHcy;"],[0,"&KJcy;"],[1,"&Ubrcy;"],[0,"&DZcy;"],[0,"&Acy;"],[0,"&Bcy;"],[0,"&Vcy;"],[0,"&Gcy;"],[0,"&Dcy;"],[0,"&IEcy;"],[0,"&ZHcy;"],[0,"&Zcy;"],[0,"&Icy;"],[0,"&Jcy;"],[0,"&Kcy;"],[0,"&Lcy;"],[0,"&Mcy;"],[0,"&Ncy;"],[0,"&Ocy;"],[0,"&Pcy;"],[0,"&Rcy;"],[0,"&Scy;"],[0,"&Tcy;"],[0,"&Ucy;"],[0,"&Fcy;"],[0,"&KHcy;"],[0,"&TScy;"],[0,"&CHcy;"],[0,"&SHcy;"],[0,"&SHCHcy;"],[0,"&HARDcy;"],[0,"&Ycy;"],[0,"&SOFTcy;"],[0,"&Ecy;"],[0,"&YUcy;"],[0,"&YAcy;"],[0,"&acy;"],[0,"&bcy;"],[0,"&vcy;"],[0,"&gcy;"],[0,"&dcy;"],[0,"&iecy;"],[0,"&zhcy;"],[0,"&zcy;"],[0,"&icy;"],[0,"&jcy;"],[0,"&kcy;"],[0,"&lcy;"],[0,"&mcy;"],[0,"&ncy;"],[0,"&ocy;"],[0,"&pcy;"],[0,"&rcy;"],[0,"&scy;"],[0,"&tcy;"],[0,"&ucy;"],[0,"&fcy;"],[0,"&khcy;"],[0,"&tscy;"],[0,"&chcy;"],[0,"&shcy;"],[0,"&shchcy;"],[0,"&hardcy;"],[0,"&ycy;"],[0,"&softcy;"],[0,"&ecy;"],[0,"&yucy;"],[0,"&yacy;"],[1,"&iocy;"],[0,"&djcy;"],[0,"&gjcy;"],[0,"&jukcy;"],[0,"&dscy;"],[0,"&iukcy;"],[0,"&yicy;"],[0,"&jsercy;"],[0,"&ljcy;"],[0,"&njcy;"],[0,"&tshcy;"],[0,"&kjcy;"],[1,"&ubrcy;"],[0,"&dzcy;"],[7074,"&ensp;"],[0,"&emsp;"],[0,"&emsp13;"],[0,"&emsp14;"],[1,"&numsp;"],[0,"&puncsp;"],[0,"&ThinSpace;"],[0,"&hairsp;"],[0,"&NegativeMediumSpace;"],[0,"&zwnj;"],[0,"&zwj;"],[0,"&lrm;"],[0,"&rlm;"],[0,"&dash;"],[2,"&ndash;"],[0,"&mdash;"],[0,"&horbar;"],[0,"&Verbar;"],[1,"&lsquo;"],[0,"&CloseCurlyQuote;"],[0,"&lsquor;"],[1,"&ldquo;"],[0,"&CloseCurlyDoubleQuote;"],[0,"&bdquo;"],[1,"&dagger;"],[0,"&Dagger;"],[0,"&bull;"],[2,"&nldr;"],[0,"&hellip;"],[9,"&permil;"],[0,"&pertenk;"],[0,"&prime;"],[0,"&Prime;"],[0,"&tprime;"],[0,"&backprime;"],[3,"&lsaquo;"],[0,"&rsaquo;"],[3,"&oline;"],[2,"&caret;"],[1,"&hybull;"],[0,"&frasl;"],[10,"&bsemi;"],[7,"&qprime;"],[7,{v:"&MediumSpace;",n:8202,o:"&ThickSpace;"}],[0,"&NoBreak;"],[0,"&af;"],[0,"&InvisibleTimes;"],[0,"&ic;"],[72,"&euro;"],[46,"&tdot;"],[0,"&DotDot;"],[37,"&complexes;"],[2,"&incare;"],[4,"&gscr;"],[0,"&hamilt;"],[0,"&Hfr;"],[0,"&Hopf;"],[0,"&planckh;"],[0,"&hbar;"],[0,"&imagline;"],[0,"&Ifr;"],[0,"&lagran;"],[0,"&ell;"],[1,"&naturals;"],[0,"&numero;"],[0,"&copysr;"],[0,"&weierp;"],[0,"&Popf;"],[0,"&Qopf;"],[0,"&realine;"],[0,"&real;"],[0,"&reals;"],[0,"&rx;"],[3,"&trade;"],[1,"&integers;"],[2,"&mho;"],[0,"&zeetrf;"],[0,"&iiota;"],[2,"&bernou;"],[0,"&Cayleys;"],[1,"&escr;"],[0,"&Escr;"],[0,"&Fouriertrf;"],[1,"&Mellintrf;"],[0,"&order;"],[0,"&alefsym;"],[0,"&beth;"],[0,"&gimel;"],[0,"&daleth;"],[12,"&CapitalDifferentialD;"],[0,"&dd;"],[0,"&ee;"],[0,"&ii;"],[10,"&frac13;"],[0,"&frac23;"],[0,"&frac15;"],[0,"&frac25;"],[0,"&frac35;"],[0,"&frac45;"],[0,"&frac16;"],[0,"&frac56;"],[0,"&frac18;"],[0,"&frac38;"],[0,"&frac58;"],[0,"&frac78;"],[49,"&larr;"],[0,"&ShortUpArrow;"],[0,"&rarr;"],[0,"&darr;"],[0,"&harr;"],[0,"&updownarrow;"],[0,"&nwarr;"],[0,"&nearr;"],[0,"&LowerRightArrow;"],[0,"&LowerLeftArrow;"],[0,"&nlarr;"],[0,"&nrarr;"],[1,{v:"&rarrw;",n:824,o:"&nrarrw;"}],[0,"&Larr;"],[0,"&Uarr;"],[0,"&Rarr;"],[0,"&Darr;"],[0,"&larrtl;"],[0,"&rarrtl;"],[0,"&LeftTeeArrow;"],[0,"&mapstoup;"],[0,"&map;"],[0,"&DownTeeArrow;"],[1,"&hookleftarrow;"],[0,"&hookrightarrow;"],[0,"&larrlp;"],[0,"&looparrowright;"],[0,"&harrw;"],[0,"&nharr;"],[1,"&lsh;"],[0,"&rsh;"],[0,"&ldsh;"],[0,"&rdsh;"],[1,"&crarr;"],[0,"&cularr;"],[0,"&curarr;"],[2,"&circlearrowleft;"],[0,"&circlearrowright;"],[0,"&leftharpoonup;"],[0,"&DownLeftVector;"],[0,"&RightUpVector;"],[0,"&LeftUpVector;"],[0,"&rharu;"],[0,"&DownRightVector;"],[0,"&dharr;"],[0,"&dharl;"],[0,"&RightArrowLeftArrow;"],[0,"&udarr;"],[0,"&LeftArrowRightArrow;"],[0,"&leftleftarrows;"],[0,"&upuparrows;"],[0,"&rightrightarrows;"],[0,"&ddarr;"],[0,"&leftrightharpoons;"],[0,"&Equilibrium;"],[0,"&nlArr;"],[0,"&nhArr;"],[0,"&nrArr;"],[0,"&DoubleLeftArrow;"],[0,"&DoubleUpArrow;"],[0,"&DoubleRightArrow;"],[0,"&dArr;"],[0,"&DoubleLeftRightArrow;"],[0,"&DoubleUpDownArrow;"],[0,"&nwArr;"],[0,"&neArr;"],[0,"&seArr;"],[0,"&swArr;"],[0,"&lAarr;"],[0,"&rAarr;"],[1,"&zigrarr;"],[6,"&larrb;"],[0,"&rarrb;"],[15,"&DownArrowUpArrow;"],[7,"&loarr;"],[0,"&roarr;"],[0,"&hoarr;"],[0,"&forall;"],[0,"&comp;"],[0,{v:"&part;",n:824,o:"&npart;"}],[0,"&exist;"],[0,"&nexist;"],[0,"&empty;"],[1,"&Del;"],[0,"&Element;"],[0,"&NotElement;"],[1,"&ni;"],[0,"&notni;"],[2,"&prod;"],[0,"&coprod;"],[0,"&sum;"],[0,"&minus;"],[0,"&MinusPlus;"],[0,"&dotplus;"],[1,"&Backslash;"],[0,"&lowast;"],[0,"&compfn;"],[1,"&radic;"],[2,"&prop;"],[0,"&infin;"],[0,"&angrt;"],[0,{v:"&ang;",n:8402,o:"&nang;"}],[0,"&angmsd;"],[0,"&angsph;"],[0,"&mid;"],[0,"&nmid;"],[0,"&DoubleVerticalBar;"],[0,"&NotDoubleVerticalBar;"],[0,"&and;"],[0,"&or;"],[0,{v:"&cap;",n:65024,o:"&caps;"}],[0,{v:"&cup;",n:65024,o:"&cups;"}],[0,"&int;"],[0,"&Int;"],[0,"&iiint;"],[0,"&conint;"],[0,"&Conint;"],[0,"&Cconint;"],[0,"&cwint;"],[0,"&ClockwiseContourIntegral;"],[0,"&awconint;"],[0,"&there4;"],[0,"&becaus;"],[0,"&ratio;"],[0,"&Colon;"],[0,"&dotminus;"],[1,"&mDDot;"],[0,"&homtht;"],[0,{v:"&sim;",n:8402,o:"&nvsim;"}],[0,{v:"&backsim;",n:817,o:"&race;"}],[0,{v:"&ac;",n:819,o:"&acE;"}],[0,"&acd;"],[0,"&VerticalTilde;"],[0,"&NotTilde;"],[0,{v:"&eqsim;",n:824,o:"&nesim;"}],[0,"&sime;"],[0,"&NotTildeEqual;"],[0,"&cong;"],[0,"&simne;"],[0,"&ncong;"],[0,"&ap;"],[0,"&nap;"],[0,"&ape;"],[0,{v:"&apid;",n:824,o:"&napid;"}],[0,"&backcong;"],[0,{v:"&asympeq;",n:8402,o:"&nvap;"}],[0,{v:"&bump;",n:824,o:"&nbump;"}],[0,{v:"&bumpe;",n:824,o:"&nbumpe;"}],[0,{v:"&doteq;",n:824,o:"&nedot;"}],[0,"&doteqdot;"],[0,"&efDot;"],[0,"&erDot;"],[0,"&Assign;"],[0,"&ecolon;"],[0,"&ecir;"],[0,"&circeq;"],[1,"&wedgeq;"],[0,"&veeeq;"],[1,"&triangleq;"],[2,"&equest;"],[0,"&ne;"],[0,{v:"&Congruent;",n:8421,o:"&bnequiv;"}],[0,"&nequiv;"],[1,{v:"&le;",n:8402,o:"&nvle;"}],[0,{v:"&ge;",n:8402,o:"&nvge;"}],[0,{v:"&lE;",n:824,o:"&nlE;"}],[0,{v:"&gE;",n:824,o:"&ngE;"}],[0,{v:"&lnE;",n:65024,o:"&lvertneqq;"}],[0,{v:"&gnE;",n:65024,o:"&gvertneqq;"}],[0,{v:"&ll;",n:new Map(restoreDiff([[824,"&nLtv;"],[7577,"&nLt;"]]))}],[0,{v:"&gg;",n:new Map(restoreDiff([[824,"&nGtv;"],[7577,"&nGt;"]]))}],[0,"&between;"],[0,"&NotCupCap;"],[0,"&nless;"],[0,"&ngt;"],[0,"&nle;"],[0,"&nge;"],[0,"&lesssim;"],[0,"&GreaterTilde;"],[0,"&nlsim;"],[0,"&ngsim;"],[0,"&LessGreater;"],[0,"&gl;"],[0,"&NotLessGreater;"],[0,"&NotGreaterLess;"],[0,"&pr;"],[0,"&sc;"],[0,"&prcue;"],[0,"&sccue;"],[0,"&PrecedesTilde;"],[0,{v:"&scsim;",n:824,o:"&NotSucceedsTilde;"}],[0,"&NotPrecedes;"],[0,"&NotSucceeds;"],[0,{v:"&sub;",n:8402,o:"&NotSubset;"}],[0,{v:"&sup;",n:8402,o:"&NotSuperset;"}],[0,"&nsub;"],[0,"&nsup;"],[0,"&sube;"],[0,"&supe;"],[0,"&NotSubsetEqual;"],[0,"&NotSupersetEqual;"],[0,{v:"&subne;",n:65024,o:"&varsubsetneq;"}],[0,{v:"&supne;",n:65024,o:"&varsupsetneq;"}],[1,"&cupdot;"],[0,"&UnionPlus;"],[0,{v:"&sqsub;",n:824,o:"&NotSquareSubset;"}],[0,{v:"&sqsup;",n:824,o:"&NotSquareSuperset;"}],[0,"&sqsube;"],[0,"&sqsupe;"],[0,{v:"&sqcap;",n:65024,o:"&sqcaps;"}],[0,{v:"&sqcup;",n:65024,o:"&sqcups;"}],[0,"&CirclePlus;"],[0,"&CircleMinus;"],[0,"&CircleTimes;"],[0,"&osol;"],[0,"&CircleDot;"],[0,"&circledcirc;"],[0,"&circledast;"],[1,"&circleddash;"],[0,"&boxplus;"],[0,"&boxminus;"],[0,"&boxtimes;"],[0,"&dotsquare;"],[0,"&RightTee;"],[0,"&dashv;"],[0,"&DownTee;"],[0,"&bot;"],[1,"&models;"],[0,"&DoubleRightTee;"],[0,"&Vdash;"],[0,"&Vvdash;"],[0,"&VDash;"],[0,"&nvdash;"],[0,"&nvDash;"],[0,"&nVdash;"],[0,"&nVDash;"],[0,"&prurel;"],[1,"&LeftTriangle;"],[0,"&RightTriangle;"],[0,{v:"&LeftTriangleEqual;",n:8402,o:"&nvltrie;"}],[0,{v:"&RightTriangleEqual;",n:8402,o:"&nvrtrie;"}],[0,"&origof;"],[0,"&imof;"],[0,"&multimap;"],[0,"&hercon;"],[0,"&intcal;"],[0,"&veebar;"],[1,"&barvee;"],[0,"&angrtvb;"],[0,"&lrtri;"],[0,"&bigwedge;"],[0,"&bigvee;"],[0,"&bigcap;"],[0,"&bigcup;"],[0,"&diam;"],[0,"&sdot;"],[0,"&sstarf;"],[0,"&divideontimes;"],[0,"&bowtie;"],[0,"&ltimes;"],[0,"&rtimes;"],[0,"&leftthreetimes;"],[0,"&rightthreetimes;"],[0,"&backsimeq;"],[0,"&curlyvee;"],[0,"&curlywedge;"],[0,"&Sub;"],[0,"&Sup;"],[0,"&Cap;"],[0,"&Cup;"],[0,"&fork;"],[0,"&epar;"],[0,"&lessdot;"],[0,"&gtdot;"],[0,{v:"&Ll;",n:824,o:"&nLl;"}],[0,{v:"&Gg;",n:824,o:"&nGg;"}],[0,{v:"&leg;",n:65024,o:"&lesg;"}],[0,{v:"&gel;",n:65024,o:"&gesl;"}],[2,"&cuepr;"],[0,"&cuesc;"],[0,"&NotPrecedesSlantEqual;"],[0,"&NotSucceedsSlantEqual;"],[0,"&NotSquareSubsetEqual;"],[0,"&NotSquareSupersetEqual;"],[2,"&lnsim;"],[0,"&gnsim;"],[0,"&precnsim;"],[0,"&scnsim;"],[0,"&nltri;"],[0,"&NotRightTriangle;"],[0,"&nltrie;"],[0,"&NotRightTriangleEqual;"],[0,"&vellip;"],[0,"&ctdot;"],[0,"&utdot;"],[0,"&dtdot;"],[0,"&disin;"],[0,"&isinsv;"],[0,"&isins;"],[0,{v:"&isindot;",n:824,o:"&notindot;"}],[0,"&notinvc;"],[0,"&notinvb;"],[1,{v:"&isinE;",n:824,o:"&notinE;"}],[0,"&nisd;"],[0,"&xnis;"],[0,"&nis;"],[0,"&notnivc;"],[0,"&notnivb;"],[6,"&barwed;"],[0,"&Barwed;"],[1,"&lceil;"],[0,"&rceil;"],[0,"&LeftFloor;"],[0,"&rfloor;"],[0,"&drcrop;"],[0,"&dlcrop;"],[0,"&urcrop;"],[0,"&ulcrop;"],[0,"&bnot;"],[1,"&profline;"],[0,"&profsurf;"],[1,"&telrec;"],[0,"&target;"],[5,"&ulcorn;"],[0,"&urcorn;"],[0,"&dlcorn;"],[0,"&drcorn;"],[2,"&frown;"],[0,"&smile;"],[9,"&cylcty;"],[0,"&profalar;"],[7,"&topbot;"],[6,"&ovbar;"],[1,"&solbar;"],[60,"&angzarr;"],[51,"&lmoustache;"],[0,"&rmoustache;"],[2,"&OverBracket;"],[0,"&bbrk;"],[0,"&bbrktbrk;"],[37,"&OverParenthesis;"],[0,"&UnderParenthesis;"],[0,"&OverBrace;"],[0,"&UnderBrace;"],[2,"&trpezium;"],[4,"&elinters;"],[59,"&blank;"],[164,"&circledS;"],[55,"&boxh;"],[1,"&boxv;"],[9,"&boxdr;"],[3,"&boxdl;"],[3,"&boxur;"],[3,"&boxul;"],[3,"&boxvr;"],[7,"&boxvl;"],[7,"&boxhd;"],[7,"&boxhu;"],[7,"&boxvh;"],[19,"&boxH;"],[0,"&boxV;"],[0,"&boxdR;"],[0,"&boxDr;"],[0,"&boxDR;"],[0,"&boxdL;"],[0,"&boxDl;"],[0,"&boxDL;"],[0,"&boxuR;"],[0,"&boxUr;"],[0,"&boxUR;"],[0,"&boxuL;"],[0,"&boxUl;"],[0,"&boxUL;"],[0,"&boxvR;"],[0,"&boxVr;"],[0,"&boxVR;"],[0,"&boxvL;"],[0,"&boxVl;"],[0,"&boxVL;"],[0,"&boxHd;"],[0,"&boxhD;"],[0,"&boxHD;"],[0,"&boxHu;"],[0,"&boxhU;"],[0,"&boxHU;"],[0,"&boxvH;"],[0,"&boxVh;"],[0,"&boxVH;"],[19,"&uhblk;"],[3,"&lhblk;"],[3,"&block;"],[8,"&blk14;"],[0,"&blk12;"],[0,"&blk34;"],[13,"&square;"],[8,"&blacksquare;"],[0,"&EmptyVerySmallSquare;"],[1,"&rect;"],[0,"&marker;"],[2,"&fltns;"],[1,"&bigtriangleup;"],[0,"&blacktriangle;"],[0,"&triangle;"],[2,"&blacktriangleright;"],[0,"&rtri;"],[3,"&bigtriangledown;"],[0,"&blacktriangledown;"],[0,"&dtri;"],[2,"&blacktriangleleft;"],[0,"&ltri;"],[6,"&loz;"],[0,"&cir;"],[32,"&tridot;"],[2,"&bigcirc;"],[8,"&ultri;"],[0,"&urtri;"],[0,"&lltri;"],[0,"&EmptySmallSquare;"],[0,"&FilledSmallSquare;"],[8,"&bigstar;"],[0,"&star;"],[7,"&phone;"],[49,"&female;"],[1,"&male;"],[29,"&spades;"],[2,"&clubs;"],[1,"&hearts;"],[0,"&diamondsuit;"],[3,"&sung;"],[2,"&flat;"],[0,"&natural;"],[0,"&sharp;"],[163,"&check;"],[3,"&cross;"],[8,"&malt;"],[21,"&sext;"],[33,"&VerticalSeparator;"],[25,"&lbbrk;"],[0,"&rbbrk;"],[84,"&bsolhsub;"],[0,"&suphsol;"],[28,"&LeftDoubleBracket;"],[0,"&RightDoubleBracket;"],[0,"&lang;"],[0,"&rang;"],[0,"&Lang;"],[0,"&Rang;"],[0,"&loang;"],[0,"&roang;"],[7,"&longleftarrow;"],[0,"&longrightarrow;"],[0,"&longleftrightarrow;"],[0,"&DoubleLongLeftArrow;"],[0,"&DoubleLongRightArrow;"],[0,"&DoubleLongLeftRightArrow;"],[1,"&longmapsto;"],[2,"&dzigrarr;"],[258,"&nvlArr;"],[0,"&nvrArr;"],[0,"&nvHarr;"],[0,"&Map;"],[6,"&lbarr;"],[0,"&bkarow;"],[0,"&lBarr;"],[0,"&dbkarow;"],[0,"&drbkarow;"],[0,"&DDotrahd;"],[0,"&UpArrowBar;"],[0,"&DownArrowBar;"],[2,"&Rarrtl;"],[2,"&latail;"],[0,"&ratail;"],[0,"&lAtail;"],[0,"&rAtail;"],[0,"&larrfs;"],[0,"&rarrfs;"],[0,"&larrbfs;"],[0,"&rarrbfs;"],[2,"&nwarhk;"],[0,"&nearhk;"],[0,"&hksearow;"],[0,"&hkswarow;"],[0,"&nwnear;"],[0,"&nesear;"],[0,"&seswar;"],[0,"&swnwar;"],[8,{v:"&rarrc;",n:824,o:"&nrarrc;"}],[1,"&cudarrr;"],[0,"&ldca;"],[0,"&rdca;"],[0,"&cudarrl;"],[0,"&larrpl;"],[2,"&curarrm;"],[0,"&cularrp;"],[7,"&rarrpl;"],[2,"&harrcir;"],[0,"&Uarrocir;"],[0,"&lurdshar;"],[0,"&ldrushar;"],[2,"&LeftRightVector;"],[0,"&RightUpDownVector;"],[0,"&DownLeftRightVector;"],[0,"&LeftUpDownVector;"],[0,"&LeftVectorBar;"],[0,"&RightVectorBar;"],[0,"&RightUpVectorBar;"],[0,"&RightDownVectorBar;"],[0,"&DownLeftVectorBar;"],[0,"&DownRightVectorBar;"],[0,"&LeftUpVectorBar;"],[0,"&LeftDownVectorBar;"],[0,"&LeftTeeVector;"],[0,"&RightTeeVector;"],[0,"&RightUpTeeVector;"],[0,"&RightDownTeeVector;"],[0,"&DownLeftTeeVector;"],[0,"&DownRightTeeVector;"],[0,"&LeftUpTeeVector;"],[0,"&LeftDownTeeVector;"],[0,"&lHar;"],[0,"&uHar;"],[0,"&rHar;"],[0,"&dHar;"],[0,"&luruhar;"],[0,"&ldrdhar;"],[0,"&ruluhar;"],[0,"&rdldhar;"],[0,"&lharul;"],[0,"&llhard;"],[0,"&rharul;"],[0,"&lrhard;"],[0,"&udhar;"],[0,"&duhar;"],[0,"&RoundImplies;"],[0,"&erarr;"],[0,"&simrarr;"],[0,"&larrsim;"],[0,"&rarrsim;"],[0,"&rarrap;"],[0,"&ltlarr;"],[1,"&gtrarr;"],[0,"&subrarr;"],[1,"&suplarr;"],[0,"&lfisht;"],[0,"&rfisht;"],[0,"&ufisht;"],[0,"&dfisht;"],[5,"&lopar;"],[0,"&ropar;"],[4,"&lbrke;"],[0,"&rbrke;"],[0,"&lbrkslu;"],[0,"&rbrksld;"],[0,"&lbrksld;"],[0,"&rbrkslu;"],[0,"&langd;"],[0,"&rangd;"],[0,"&lparlt;"],[0,"&rpargt;"],[0,"&gtlPar;"],[0,"&ltrPar;"],[3,"&vzigzag;"],[1,"&vangrt;"],[0,"&angrtvbd;"],[6,"&ange;"],[0,"&range;"],[0,"&dwangle;"],[0,"&uwangle;"],[0,"&angmsdaa;"],[0,"&angmsdab;"],[0,"&angmsdac;"],[0,"&angmsdad;"],[0,"&angmsdae;"],[0,"&angmsdaf;"],[0,"&angmsdag;"],[0,"&angmsdah;"],[0,"&bemptyv;"],[0,"&demptyv;"],[0,"&cemptyv;"],[0,"&raemptyv;"],[0,"&laemptyv;"],[0,"&ohbar;"],[0,"&omid;"],[0,"&opar;"],[1,"&operp;"],[1,"&olcross;"],[0,"&odsold;"],[1,"&olcir;"],[0,"&ofcir;"],[0,"&olt;"],[0,"&ogt;"],[0,"&cirscir;"],[0,"&cirE;"],[0,"&solb;"],[0,"&bsolb;"],[3,"&boxbox;"],[3,"&trisb;"],[0,"&rtriltri;"],[0,{v:"&LeftTriangleBar;",n:824,o:"&NotLeftTriangleBar;"}],[0,{v:"&RightTriangleBar;",n:824,o:"&NotRightTriangleBar;"}],[11,"&iinfin;"],[0,"&infintie;"],[0,"&nvinfin;"],[4,"&eparsl;"],[0,"&smeparsl;"],[0,"&eqvparsl;"],[5,"&blacklozenge;"],[8,"&RuleDelayed;"],[1,"&dsol;"],[9,"&bigodot;"],[0,"&bigoplus;"],[0,"&bigotimes;"],[1,"&biguplus;"],[1,"&bigsqcup;"],[5,"&iiiint;"],[0,"&fpartint;"],[2,"&cirfnint;"],[0,"&awint;"],[0,"&rppolint;"],[0,"&scpolint;"],[0,"&npolint;"],[0,"&pointint;"],[0,"&quatint;"],[0,"&intlarhk;"],[10,"&pluscir;"],[0,"&plusacir;"],[0,"&simplus;"],[0,"&plusdu;"],[0,"&plussim;"],[0,"&plustwo;"],[1,"&mcomma;"],[0,"&minusdu;"],[2,"&loplus;"],[0,"&roplus;"],[0,"&Cross;"],[0,"&timesd;"],[0,"&timesbar;"],[1,"&smashp;"],[0,"&lotimes;"],[0,"&rotimes;"],[0,"&otimesas;"],[0,"&Otimes;"],[0,"&odiv;"],[0,"&triplus;"],[0,"&triminus;"],[0,"&tritime;"],[0,"&intprod;"],[2,"&amalg;"],[0,"&capdot;"],[1,"&ncup;"],[0,"&ncap;"],[0,"&capand;"],[0,"&cupor;"],[0,"&cupcap;"],[0,"&capcup;"],[0,"&cupbrcap;"],[0,"&capbrcup;"],[0,"&cupcup;"],[0,"&capcap;"],[0,"&ccups;"],[0,"&ccaps;"],[2,"&ccupssm;"],[2,"&And;"],[0,"&Or;"],[0,"&andand;"],[0,"&oror;"],[0,"&orslope;"],[0,"&andslope;"],[1,"&andv;"],[0,"&orv;"],[0,"&andd;"],[0,"&ord;"],[1,"&wedbar;"],[6,"&sdote;"],[3,"&simdot;"],[2,{v:"&congdot;",n:824,o:"&ncongdot;"}],[0,"&easter;"],[0,"&apacir;"],[0,{v:"&apE;",n:824,o:"&napE;"}],[0,"&eplus;"],[0,"&pluse;"],[0,"&Esim;"],[0,"&Colone;"],[0,"&Equal;"],[1,"&ddotseq;"],[0,"&equivDD;"],[0,"&ltcir;"],[0,"&gtcir;"],[0,"&ltquest;"],[0,"&gtquest;"],[0,{v:"&leqslant;",n:824,o:"&nleqslant;"}],[0,{v:"&geqslant;",n:824,o:"&ngeqslant;"}],[0,"&lesdot;"],[0,"&gesdot;"],[0,"&lesdoto;"],[0,"&gesdoto;"],[0,"&lesdotor;"],[0,"&gesdotol;"],[0,"&lap;"],[0,"&gap;"],[0,"&lne;"],[0,"&gne;"],[0,"&lnap;"],[0,"&gnap;"],[0,"&lEg;"],[0,"&gEl;"],[0,"&lsime;"],[0,"&gsime;"],[0,"&lsimg;"],[0,"&gsiml;"],[0,"&lgE;"],[0,"&glE;"],[0,"&lesges;"],[0,"&gesles;"],[0,"&els;"],[0,"&egs;"],[0,"&elsdot;"],[0,"&egsdot;"],[0,"&el;"],[0,"&eg;"],[2,"&siml;"],[0,"&simg;"],[0,"&simlE;"],[0,"&simgE;"],[0,{v:"&LessLess;",n:824,o:"&NotNestedLessLess;"}],[0,{v:"&GreaterGreater;",n:824,o:"&NotNestedGreaterGreater;"}],[1,"&glj;"],[0,"&gla;"],[0,"&ltcc;"],[0,"&gtcc;"],[0,"&lescc;"],[0,"&gescc;"],[0,"&smt;"],[0,"&lat;"],[0,{v:"&smte;",n:65024,o:"&smtes;"}],[0,{v:"&late;",n:65024,o:"&lates;"}],[0,"&bumpE;"],[0,{v:"&PrecedesEqual;",n:824,o:"&NotPrecedesEqual;"}],[0,{v:"&sce;",n:824,o:"&NotSucceedsEqual;"}],[2,"&prE;"],[0,"&scE;"],[0,"&precneqq;"],[0,"&scnE;"],[0,"&prap;"],[0,"&scap;"],[0,"&precnapprox;"],[0,"&scnap;"],[0,"&Pr;"],[0,"&Sc;"],[0,"&subdot;"],[0,"&supdot;"],[0,"&subplus;"],[0,"&supplus;"],[0,"&submult;"],[0,"&supmult;"],[0,"&subedot;"],[0,"&supedot;"],[0,{v:"&subE;",n:824,o:"&nsubE;"}],[0,{v:"&supE;",n:824,o:"&nsupE;"}],[0,"&subsim;"],[0,"&supsim;"],[2,{v:"&subnE;",n:65024,o:"&varsubsetneqq;"}],[0,{v:"&supnE;",n:65024,o:"&varsupsetneqq;"}],[2,"&csub;"],[0,"&csup;"],[0,"&csube;"],[0,"&csupe;"],[0,"&subsup;"],[0,"&supsub;"],[0,"&subsub;"],[0,"&supsup;"],[0,"&suphsub;"],[0,"&supdsub;"],[0,"&forkv;"],[0,"&topfork;"],[0,"&mlcp;"],[8,"&Dashv;"],[1,"&Vdashl;"],[0,"&Barv;"],[0,"&vBar;"],[0,"&vBarv;"],[1,"&Vbar;"],[0,"&Not;"],[0,"&bNot;"],[0,"&rnmid;"],[0,"&cirmid;"],[0,"&midcir;"],[0,"&topcir;"],[0,"&nhpar;"],[0,"&parsim;"],[9,{v:"&parsl;",n:8421,o:"&nparsl;"}],[44343,{n:new Map(restoreDiff([[56476,"&Ascr;"],[1,"&Cscr;"],[0,"&Dscr;"],[2,"&Gscr;"],[2,"&Jscr;"],[0,"&Kscr;"],[2,"&Nscr;"],[0,"&Oscr;"],[0,"&Pscr;"],[0,"&Qscr;"],[1,"&Sscr;"],[0,"&Tscr;"],[0,"&Uscr;"],[0,"&Vscr;"],[0,"&Wscr;"],[0,"&Xscr;"],[0,"&Yscr;"],[0,"&Zscr;"],[0,"&ascr;"],[0,"&bscr;"],[0,"&cscr;"],[0,"&dscr;"],[1,"&fscr;"],[1,"&hscr;"],[0,"&iscr;"],[0,"&jscr;"],[0,"&kscr;"],[0,"&lscr;"],[0,"&mscr;"],[0,"&nscr;"],[1,"&pscr;"],[0,"&qscr;"],[0,"&rscr;"],[0,"&sscr;"],[0,"&tscr;"],[0,"&uscr;"],[0,"&vscr;"],[0,"&wscr;"],[0,"&xscr;"],[0,"&yscr;"],[0,"&zscr;"],[52,"&Afr;"],[0,"&Bfr;"],[1,"&Dfr;"],[0,"&Efr;"],[0,"&Ffr;"],[0,"&Gfr;"],[2,"&Jfr;"],[0,"&Kfr;"],[0,"&Lfr;"],[0,"&Mfr;"],[0,"&Nfr;"],[0,"&Ofr;"],[0,"&Pfr;"],[0,"&Qfr;"],[1,"&Sfr;"],[0,"&Tfr;"],[0,"&Ufr;"],[0,"&Vfr;"],[0,"&Wfr;"],[0,"&Xfr;"],[0,"&Yfr;"],[1,"&afr;"],[0,"&bfr;"],[0,"&cfr;"],[0,"&dfr;"],[0,"&efr;"],[0,"&ffr;"],[0,"&gfr;"],[0,"&hfr;"],[0,"&ifr;"],[0,"&jfr;"],[0,"&kfr;"],[0,"&lfr;"],[0,"&mfr;"],[0,"&nfr;"],[0,"&ofr;"],[0,"&pfr;"],[0,"&qfr;"],[0,"&rfr;"],[0,"&sfr;"],[0,"&tfr;"],[0,"&ufr;"],[0,"&vfr;"],[0,"&wfr;"],[0,"&xfr;"],[0,"&yfr;"],[0,"&zfr;"],[0,"&Aopf;"],[0,"&Bopf;"],[1,"&Dopf;"],[0,"&Eopf;"],[0,"&Fopf;"],[0,"&Gopf;"],[1,"&Iopf;"],[0,"&Jopf;"],[0,"&Kopf;"],[0,"&Lopf;"],[0,"&Mopf;"],[1,"&Oopf;"],[3,"&Sopf;"],[0,"&Topf;"],[0,"&Uopf;"],[0,"&Vopf;"],[0,"&Wopf;"],[0,"&Xopf;"],[0,"&Yopf;"],[1,"&aopf;"],[0,"&bopf;"],[0,"&copf;"],[0,"&dopf;"],[0,"&eopf;"],[0,"&fopf;"],[0,"&gopf;"],[0,"&hopf;"],[0,"&iopf;"],[0,"&jopf;"],[0,"&kopf;"],[0,"&lopf;"],[0,"&mopf;"],[0,"&nopf;"],[0,"&oopf;"],[0,"&popf;"],[0,"&qopf;"],[0,"&ropf;"],[0,"&sopf;"],[0,"&topf;"],[0,"&uopf;"],[0,"&vopf;"],[0,"&wopf;"],[0,"&xopf;"],[0,"&yopf;"],[0,"&zopf;"]]))}],[8906,"&fflig;"],[0,"&filig;"],[0,"&fllig;"],[0,"&ffilig;"],[0,"&ffllig;"]]));
//# sourceMappingURL=encode-html.js.map
/***/},
/***/"./node_modules/entities/lib/esm/index.js":
/*!************************************************!*\
  !*** ./node_modules/entities/lib/esm/index.js ***!
  \************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */DecodingMode:()=>/* reexport safe */_decode_js__WEBPACK_IMPORTED_MODULE_0__.DecodingMode
/* harmony export */,EncodingMode:()=>/* binding */EncodingMode
/* harmony export */,EntityDecoder:()=>/* reexport safe */_decode_js__WEBPACK_IMPORTED_MODULE_0__.EntityDecoder
/* harmony export */,EntityLevel:()=>/* binding */EntityLevel
/* harmony export */,decode:()=>/* binding */decode
/* harmony export */,decodeHTML:()=>/* reexport safe */_decode_js__WEBPACK_IMPORTED_MODULE_0__.decodeHTML
/* harmony export */,decodeHTML4:()=>/* reexport safe */_decode_js__WEBPACK_IMPORTED_MODULE_0__.decodeHTML
/* harmony export */,decodeHTML4Strict:()=>/* reexport safe */_decode_js__WEBPACK_IMPORTED_MODULE_0__.decodeHTMLStrict
/* harmony export */,decodeHTML5:()=>/* reexport safe */_decode_js__WEBPACK_IMPORTED_MODULE_0__.decodeHTML
/* harmony export */,decodeHTML5Strict:()=>/* reexport safe */_decode_js__WEBPACK_IMPORTED_MODULE_0__.decodeHTMLStrict
/* harmony export */,decodeHTMLAttribute:()=>/* reexport safe */_decode_js__WEBPACK_IMPORTED_MODULE_0__.decodeHTMLAttribute
/* harmony export */,decodeHTMLStrict:()=>/* reexport safe */_decode_js__WEBPACK_IMPORTED_MODULE_0__.decodeHTMLStrict
/* harmony export */,decodeStrict:()=>/* binding */decodeStrict
/* harmony export */,decodeXML:()=>/* reexport safe */_decode_js__WEBPACK_IMPORTED_MODULE_0__.decodeXML
/* harmony export */,decodeXMLStrict:()=>/* reexport safe */_decode_js__WEBPACK_IMPORTED_MODULE_0__.decodeXML
/* harmony export */,encode:()=>/* binding */encode
/* harmony export */,encodeHTML:()=>/* reexport safe */_encode_js__WEBPACK_IMPORTED_MODULE_1__.encodeHTML
/* harmony export */,encodeHTML4:()=>/* reexport safe */_encode_js__WEBPACK_IMPORTED_MODULE_1__.encodeHTML
/* harmony export */,encodeHTML5:()=>/* reexport safe */_encode_js__WEBPACK_IMPORTED_MODULE_1__.encodeHTML
/* harmony export */,encodeNonAsciiHTML:()=>/* reexport safe */_encode_js__WEBPACK_IMPORTED_MODULE_1__.encodeNonAsciiHTML
/* harmony export */,encodeXML:()=>/* reexport safe */_escape_js__WEBPACK_IMPORTED_MODULE_2__.encodeXML
/* harmony export */,escape:()=>/* reexport safe */_escape_js__WEBPACK_IMPORTED_MODULE_2__.escape
/* harmony export */,escapeAttribute:()=>/* reexport safe */_escape_js__WEBPACK_IMPORTED_MODULE_2__.escapeAttribute
/* harmony export */,escapeText:()=>/* reexport safe */_escape_js__WEBPACK_IMPORTED_MODULE_2__.escapeText
/* harmony export */,escapeUTF8:()=>/* reexport safe */_escape_js__WEBPACK_IMPORTED_MODULE_2__.escapeUTF8
/* harmony export */});
/* harmony import */var _decode_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ./decode.js */"./node_modules/entities/lib/esm/decode.js");
/* harmony import */var _encode_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./encode.js */"./node_modules/entities/lib/esm/encode.js");
/* harmony import */var _escape_js__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! ./escape.js */"./node_modules/entities/lib/esm/escape.js");
/** The level of entities to support. */var EntityLevel;(function(EntityLevel){
/** Support only XML entities. */
EntityLevel[EntityLevel["XML"]=0]="XML";
/** Support HTML entities, which are a superset of XML entities. */EntityLevel[EntityLevel["HTML"]=1]="HTML"})(EntityLevel||(EntityLevel={}));var EncodingMode;(function(EncodingMode){
/**
     * The output is UTF-8 encoded. Only characters that need escaping within
     * XML will be escaped.
     */
EncodingMode[EncodingMode["UTF8"]=0]="UTF8";
/**
     * The output consists only of ASCII characters. Characters that need
     * escaping within HTML, and characters that aren't ASCII characters will
     * be escaped.
     */EncodingMode[EncodingMode["ASCII"]=1]="ASCII";
/**
     * Encode all characters that have an equivalent entity, as well as all
     * characters that are not ASCII characters.
     */EncodingMode[EncodingMode["Extensive"]=2]="Extensive";
/**
     * Encode all characters that have to be escaped in HTML attributes,
     * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.
     */EncodingMode[EncodingMode["Attribute"]=3]="Attribute";
/**
     * Encode all characters that have to be escaped in HTML text,
     * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.
     */EncodingMode[EncodingMode["Text"]=4]="Text"})(EncodingMode||(EncodingMode={}));
/**
 * Decodes a string with entities.
 *
 * @param data String to decode.
 * @param options Decoding options.
 */function decode(data,options=EntityLevel.XML){const level=typeof options==="number"?options:options.level;if(level===EntityLevel.HTML){const mode=typeof options==="object"?options.mode:void 0;return(0,_decode_js__WEBPACK_IMPORTED_MODULE_0__.decodeHTML)(data,mode)}return(0,_decode_js__WEBPACK_IMPORTED_MODULE_0__.decodeXML)(data)}
/**
 * Decodes a string with entities. Does not allow missing trailing semicolons for entities.
 *
 * @param data String to decode.
 * @param options Decoding options.
 * @deprecated Use `decode` with the `mode` set to `Strict`.
 */function decodeStrict(data,options=EntityLevel.XML){var _a;const opts=typeof options==="number"?{level:options}:options;(_a=opts.mode)!==null&&_a!==void 0?_a:opts.mode=_decode_js__WEBPACK_IMPORTED_MODULE_0__.DecodingMode.Strict;return decode(data,opts)}
/**
 * Encodes a string with entities.
 *
 * @param data String to encode.
 * @param options Encoding options.
 */function encode(data,options=EntityLevel.XML){const opts=typeof options==="number"?{level:options}:options;
// Mode `UTF8` just escapes XML entities
if(opts.mode===EncodingMode.UTF8)return(0,_escape_js__WEBPACK_IMPORTED_MODULE_2__.escapeUTF8)(data);if(opts.mode===EncodingMode.Attribute)return(0,_escape_js__WEBPACK_IMPORTED_MODULE_2__.escapeAttribute)(data);if(opts.mode===EncodingMode.Text)return(0,_escape_js__WEBPACK_IMPORTED_MODULE_2__.escapeText)(data);if(opts.level===EntityLevel.HTML){if(opts.mode===EncodingMode.ASCII)return(0,_encode_js__WEBPACK_IMPORTED_MODULE_1__.encodeNonAsciiHTML)(data);return(0,_encode_js__WEBPACK_IMPORTED_MODULE_1__.encodeHTML)(data)}
// ASCII and Extensive are equivalent
return(0,_escape_js__WEBPACK_IMPORTED_MODULE_2__.encodeXML)(data)}
//# sourceMappingURL=index.js.map
/***/},
/***/"./node_modules/htmlparser2/lib/esm/Parser.js":
/*!****************************************************!*\
  !*** ./node_modules/htmlparser2/lib/esm/Parser.js ***!
  \****************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */Parser:()=>/* binding */Parser
/* harmony export */});
/* harmony import */var _Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ./Tokenizer.js */"./node_modules/htmlparser2/lib/esm/Tokenizer.js");
/* harmony import */var entities_lib_decode_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! entities/lib/decode.js */"./node_modules/entities/lib/esm/decode.js");const formTags=new Set(["input","option","optgroup","select","button","datalist","textarea"]);const pTag=new Set(["p"]);const tableSectionTags=new Set(["thead","tbody"]);const ddtTags=new Set(["dd","dt"]);const rtpTags=new Set(["rt","rp"]);const openImpliesClose=new Map([["tr",new Set(["tr","th","td"])],["th",new Set(["th"])],["td",new Set(["thead","th","td"])],["body",new Set(["head","link","script"])],["li",new Set(["li"])],["p",pTag],["h1",pTag],["h2",pTag],["h3",pTag],["h4",pTag],["h5",pTag],["h6",pTag],["select",formTags],["input",formTags],["output",formTags],["button",formTags],["datalist",formTags],["textarea",formTags],["option",new Set(["option"])],["optgroup",new Set(["optgroup","option"])],["dd",ddtTags],["dt",ddtTags],["address",pTag],["article",pTag],["aside",pTag],["blockquote",pTag],["details",pTag],["div",pTag],["dl",pTag],["fieldset",pTag],["figcaption",pTag],["figure",pTag],["footer",pTag],["form",pTag],["header",pTag],["hr",pTag],["main",pTag],["nav",pTag],["ol",pTag],["pre",pTag],["section",pTag],["table",pTag],["ul",pTag],["rt",rtpTags],["rp",rtpTags],["tbody",tableSectionTags],["tfoot",tableSectionTags]]);const voidElements=new Set(["area","base","basefont","br","col","command","embed","frame","hr","img","input","isindex","keygen","link","meta","param","source","track","wbr"]);const foreignContextElements=new Set(["math","svg"]);const htmlIntegrationElements=new Set(["mi","mo","mn","ms","mtext","annotation-xml","foreignobject","desc","title"]);const reNameEnd=/\s|\//;class Parser{constructor(cbs,options={}){var _a,_b,_c,_d,_e,_f;this.options=options;
/** The start index of the last event. */this.startIndex=0;
/** The end index of the last event. */this.endIndex=0;
/**
         * Store the start index of the current open tag,
         * so we can update the start index for attributes.
         */this.openTagStart=0;this.tagname="";this.attribname="";this.attribvalue="";this.attribs=null;this.stack=[];this.buffers=[];this.bufferOffset=0;
/** The index of the last written buffer. Used when resuming after a `pause()`. */this.writeIndex=0;
/** Indicates whether the parser has finished running / `.end` has been called. */this.ended=false;this.cbs=cbs!==null&&cbs!==void 0?cbs:{};this.htmlMode=!this.options.xmlMode;this.lowerCaseTagNames=(_a=options.lowerCaseTags)!==null&&_a!==void 0?_a:this.htmlMode;this.lowerCaseAttributeNames=(_b=options.lowerCaseAttributeNames)!==null&&_b!==void 0?_b:this.htmlMode;this.recognizeSelfClosing=(_c=options.recognizeSelfClosing)!==null&&_c!==void 0?_c:!this.htmlMode;this.tokenizer=new((_d=options.Tokenizer)!==null&&_d!==void 0?_d:_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__["default"])(this.options,this);this.foreignContext=[!this.htmlMode];(_f=(_e=this.cbs).onparserinit)===null||_f===void 0?void 0:_f.call(_e,this)}
// Tokenizer event handlers
/** @internal */
ontext(start,endIndex){var _a,_b;const data=this.getSlice(start,endIndex);this.endIndex=endIndex-1;(_b=(_a=this.cbs).ontext)===null||_b===void 0?void 0:_b.call(_a,data);this.startIndex=endIndex}
/** @internal */ontextentity(cp,endIndex){var _a,_b;this.endIndex=endIndex-1;(_b=(_a=this.cbs).ontext)===null||_b===void 0?void 0:_b.call(_a,(0,entities_lib_decode_js__WEBPACK_IMPORTED_MODULE_1__.fromCodePoint)(cp));this.startIndex=endIndex}
/**
     * Checks if the current tag is a void element. Override this if you want
     * to specify your own additional void elements.
     */isVoidElement(name){return this.htmlMode&&voidElements.has(name)}
/** @internal */onopentagname(start,endIndex){this.endIndex=endIndex;let name=this.getSlice(start,endIndex);if(this.lowerCaseTagNames)name=name.toLowerCase();this.emitOpenTag(name)}emitOpenTag(name){var _a,_b,_c,_d;this.openTagStart=this.startIndex;this.tagname=name;const impliesClose=this.htmlMode&&openImpliesClose.get(name);if(impliesClose)while(this.stack.length>0&&impliesClose.has(this.stack[0])){const element=this.stack.shift();(_b=(_a=this.cbs).onclosetag)===null||_b===void 0?void 0:_b.call(_a,element,true)}if(!this.isVoidElement(name)){this.stack.unshift(name);if(this.htmlMode)if(foreignContextElements.has(name))this.foreignContext.unshift(true);else if(htmlIntegrationElements.has(name))this.foreignContext.unshift(false)}(_d=(_c=this.cbs).onopentagname)===null||_d===void 0?void 0:_d.call(_c,name);if(this.cbs.onopentag)this.attribs={}}endOpenTag(isImplied){var _a,_b;this.startIndex=this.openTagStart;if(this.attribs){(_b=(_a=this.cbs).onopentag)===null||_b===void 0?void 0:_b.call(_a,this.tagname,this.attribs,isImplied);this.attribs=null}if(this.cbs.onclosetag&&this.isVoidElement(this.tagname))this.cbs.onclosetag(this.tagname,true);this.tagname=""}
/** @internal */onopentagend(endIndex){this.endIndex=endIndex;this.endOpenTag(false);
// Set `startIndex` for next node
this.startIndex=endIndex+1}
/** @internal */onclosetag(start,endIndex){var _a,_b,_c,_d,_e,_f,_g,_h;this.endIndex=endIndex;let name=this.getSlice(start,endIndex);if(this.lowerCaseTagNames)name=name.toLowerCase();if(this.htmlMode&&(foreignContextElements.has(name)||htmlIntegrationElements.has(name)))this.foreignContext.shift();if(!this.isVoidElement(name)){const pos=this.stack.indexOf(name);if(pos!==-1)for(let index=0;index<=pos;index++){const element=this.stack.shift();
// We know the stack has sufficient elements.
(_b=(_a=this.cbs).onclosetag)===null||_b===void 0?void 0:_b.call(_a,element,index!==pos)}else if(this.htmlMode&&name==="p"){
// Implicit open before close
this.emitOpenTag("p");this.closeCurrentTag(true)}}else if(this.htmlMode&&name==="br"){
// We can't use `emitOpenTag` for implicit open, as `br` would be implicitly closed.
(_d=(_c=this.cbs).onopentagname)===null||_d===void 0?void 0:_d.call(_c,"br");(_f=(_e=this.cbs).onopentag)===null||_f===void 0?void 0:_f.call(_e,"br",{},true);(_h=(_g=this.cbs).onclosetag)===null||_h===void 0?void 0:_h.call(_g,"br",false)}
// Set `startIndex` for next node
this.startIndex=endIndex+1}
/** @internal */onselfclosingtag(endIndex){this.endIndex=endIndex;if(this.recognizeSelfClosing||this.foreignContext[0]){this.closeCurrentTag(false);
// Set `startIndex` for next node
this.startIndex=endIndex+1}else
// Ignore the fact that the tag is self-closing.
this.onopentagend(endIndex)}closeCurrentTag(isOpenImplied){var _a,_b;const name=this.tagname;this.endOpenTag(isOpenImplied);
// Self-closing tags will be on the top of the stack
if(this.stack[0]===name){
// If the opening tag isn't implied, the closing tag has to be implied.
(_b=(_a=this.cbs).onclosetag)===null||_b===void 0?void 0:_b.call(_a,name,!isOpenImplied);this.stack.shift()}}
/** @internal */onattribname(start,endIndex){this.startIndex=start;const name=this.getSlice(start,endIndex);this.attribname=this.lowerCaseAttributeNames?name.toLowerCase():name}
/** @internal */onattribdata(start,endIndex){this.attribvalue+=this.getSlice(start,endIndex)}
/** @internal */onattribentity(cp){this.attribvalue+=(0,entities_lib_decode_js__WEBPACK_IMPORTED_MODULE_1__.fromCodePoint)(cp)}
/** @internal */onattribend(quote,endIndex){var _a,_b;this.endIndex=endIndex;(_b=(_a=this.cbs).onattribute)===null||_b===void 0?void 0:_b.call(_a,this.attribname,this.attribvalue,quote===_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.QuoteType.Double?'"':quote===_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.QuoteType.Single?"'":quote===_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.QuoteType.NoValue?void 0:null);if(this.attribs&&!Object.prototype.hasOwnProperty.call(this.attribs,this.attribname))this.attribs[this.attribname]=this.attribvalue;this.attribvalue=""}getInstructionName(value){const index=value.search(reNameEnd);let name=index<0?value:value.substr(0,index);if(this.lowerCaseTagNames)name=name.toLowerCase();return name}
/** @internal */ondeclaration(start,endIndex){this.endIndex=endIndex;const value=this.getSlice(start,endIndex);if(this.cbs.onprocessinginstruction){const name=this.getInstructionName(value);this.cbs.onprocessinginstruction(`!${name}`,`!${value}`)}
// Set `startIndex` for next node
this.startIndex=endIndex+1}
/** @internal */onprocessinginstruction(start,endIndex){this.endIndex=endIndex;const value=this.getSlice(start,endIndex);if(this.cbs.onprocessinginstruction){const name=this.getInstructionName(value);this.cbs.onprocessinginstruction(`?${name}`,`?${value}`)}
// Set `startIndex` for next node
this.startIndex=endIndex+1}
/** @internal */oncomment(start,endIndex,offset){var _a,_b,_c,_d;this.endIndex=endIndex;(_b=(_a=this.cbs).oncomment)===null||_b===void 0?void 0:_b.call(_a,this.getSlice(start,endIndex-offset));(_d=(_c=this.cbs).oncommentend)===null||_d===void 0?void 0:_d.call(_c);
// Set `startIndex` for next node
this.startIndex=endIndex+1}
/** @internal */oncdata(start,endIndex,offset){var _a,_b,_c,_d,_e,_f,_g,_h,_j,_k;this.endIndex=endIndex;const value=this.getSlice(start,endIndex-offset);if(!this.htmlMode||this.options.recognizeCDATA){(_b=(_a=this.cbs).oncdatastart)===null||_b===void 0?void 0:_b.call(_a);(_d=(_c=this.cbs).ontext)===null||_d===void 0?void 0:_d.call(_c,value);(_f=(_e=this.cbs).oncdataend)===null||_f===void 0?void 0:_f.call(_e)}else{(_h=(_g=this.cbs).oncomment)===null||_h===void 0?void 0:_h.call(_g,`[CDATA[${value}]]`);(_k=(_j=this.cbs).oncommentend)===null||_k===void 0?void 0:_k.call(_j)}
// Set `startIndex` for next node
this.startIndex=endIndex+1}
/** @internal */onend(){var _a,_b;if(this.cbs.onclosetag){
// Set the end index for all remaining tags
this.endIndex=this.startIndex;for(let index=0;index<this.stack.length;index++)this.cbs.onclosetag(this.stack[index],true)}(_b=(_a=this.cbs).onend)===null||_b===void 0?void 0:_b.call(_a)}
/**
     * Resets the parser to a blank state, ready to parse a new HTML document
     */reset(){var _a,_b,_c,_d;(_b=(_a=this.cbs).onreset)===null||_b===void 0?void 0:_b.call(_a);this.tokenizer.reset();this.tagname="";this.attribname="";this.attribs=null;this.stack.length=0;this.startIndex=0;this.endIndex=0;(_d=(_c=this.cbs).onparserinit)===null||_d===void 0?void 0:_d.call(_c,this);this.buffers.length=0;this.foreignContext.length=0;this.foreignContext.unshift(!this.htmlMode);this.bufferOffset=0;this.writeIndex=0;this.ended=false}
/**
     * Resets the parser, then parses a complete document and
     * pushes it to the handler.
     *
     * @param data Document to parse.
     */parseComplete(data){this.reset();this.end(data)}getSlice(start,end){while(start-this.bufferOffset>=this.buffers[0].length)this.shiftBuffer();let slice=this.buffers[0].slice(start-this.bufferOffset,end-this.bufferOffset);while(end-this.bufferOffset>this.buffers[0].length){this.shiftBuffer();slice+=this.buffers[0].slice(0,end-this.bufferOffset)}return slice}shiftBuffer(){this.bufferOffset+=this.buffers[0].length;this.writeIndex--;this.buffers.shift()}
/**
     * Parses a chunk of data and calls the corresponding callbacks.
     *
     * @param chunk Chunk to parse.
     */write(chunk){var _a,_b;if(this.ended){(_b=(_a=this.cbs).onerror)===null||_b===void 0?void 0:_b.call(_a,new Error(".write() after done!"));return}this.buffers.push(chunk);if(this.tokenizer.running){this.tokenizer.write(chunk);this.writeIndex++}}
/**
     * Parses the end of the buffer and clears the stack, calls onend.
     *
     * @param chunk Optional final chunk to parse.
     */end(chunk){var _a,_b;if(this.ended){(_b=(_a=this.cbs).onerror)===null||_b===void 0?void 0:_b.call(_a,new Error(".end() after done!"));return}if(chunk)this.write(chunk);this.ended=true;this.tokenizer.end()}
/**
     * Pauses parsing. The parser won't emit events until `resume` is called.
     */pause(){this.tokenizer.pause()}
/**
     * Resumes parsing after `pause` was called.
     */resume(){this.tokenizer.resume();while(this.tokenizer.running&&this.writeIndex<this.buffers.length)this.tokenizer.write(this.buffers[this.writeIndex++]);if(this.ended)this.tokenizer.end()}
/**
     * Alias of `write`, for backwards compatibility.
     *
     * @param chunk Chunk to parse.
     * @deprecated
     */parseChunk(chunk){this.write(chunk)}
/**
     * Alias of `end`, for backwards compatibility.
     *
     * @param chunk Optional final chunk to parse.
     * @deprecated
     */done(chunk){this.end(chunk)}}
//# sourceMappingURL=Parser.js.map
/***/},
/***/"./node_modules/htmlparser2/lib/esm/Tokenizer.js":
/*!*******************************************************!*\
  !*** ./node_modules/htmlparser2/lib/esm/Tokenizer.js ***!
  \*******************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */QuoteType:()=>/* binding */QuoteType
/* harmony export */,default:()=>/* binding */Tokenizer
/* harmony export */});
/* harmony import */var entities_lib_decode_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! entities/lib/decode.js */"./node_modules/entities/lib/esm/decode.js");var CharCodes;(function(CharCodes){CharCodes[CharCodes["Tab"]=9]="Tab";CharCodes[CharCodes["NewLine"]=10]="NewLine";CharCodes[CharCodes["FormFeed"]=12]="FormFeed";CharCodes[CharCodes["CarriageReturn"]=13]="CarriageReturn";CharCodes[CharCodes["Space"]=32]="Space";CharCodes[CharCodes["ExclamationMark"]=33]="ExclamationMark";CharCodes[CharCodes["Number"]=35]="Number";CharCodes[CharCodes["Amp"]=38]="Amp";CharCodes[CharCodes["SingleQuote"]=39]="SingleQuote";CharCodes[CharCodes["DoubleQuote"]=34]="DoubleQuote";CharCodes[CharCodes["Dash"]=45]="Dash";CharCodes[CharCodes["Slash"]=47]="Slash";CharCodes[CharCodes["Zero"]=48]="Zero";CharCodes[CharCodes["Nine"]=57]="Nine";CharCodes[CharCodes["Semi"]=59]="Semi";CharCodes[CharCodes["Lt"]=60]="Lt";CharCodes[CharCodes["Eq"]=61]="Eq";CharCodes[CharCodes["Gt"]=62]="Gt";CharCodes[CharCodes["Questionmark"]=63]="Questionmark";CharCodes[CharCodes["UpperA"]=65]="UpperA";CharCodes[CharCodes["LowerA"]=97]="LowerA";CharCodes[CharCodes["UpperF"]=70]="UpperF";CharCodes[CharCodes["LowerF"]=102]="LowerF";CharCodes[CharCodes["UpperZ"]=90]="UpperZ";CharCodes[CharCodes["LowerZ"]=122]="LowerZ";CharCodes[CharCodes["LowerX"]=120]="LowerX";CharCodes[CharCodes["OpeningSquareBracket"]=91]="OpeningSquareBracket"})(CharCodes||(CharCodes={}));
/** All the states the tokenizer can be in. */var State;(function(State){State[State["Text"]=1]="Text";State[State["BeforeTagName"]=2]="BeforeTagName";State[State["InTagName"]=3]="InTagName";State[State["InSelfClosingTag"]=4]="InSelfClosingTag";State[State["BeforeClosingTagName"]=5]="BeforeClosingTagName";State[State["InClosingTagName"]=6]="InClosingTagName";State[State["AfterClosingTagName"]=7]="AfterClosingTagName";
// Attributes
State[State["BeforeAttributeName"]=8]="BeforeAttributeName";State[State["InAttributeName"]=9]="InAttributeName";State[State["AfterAttributeName"]=10]="AfterAttributeName";State[State["BeforeAttributeValue"]=11]="BeforeAttributeValue";State[State["InAttributeValueDq"]=12]="InAttributeValueDq";State[State["InAttributeValueSq"]=13]="InAttributeValueSq";State[State["InAttributeValueNq"]=14]="InAttributeValueNq";
// Declarations
State[State["BeforeDeclaration"]=15]="BeforeDeclaration";State[State["InDeclaration"]=16]="InDeclaration";
// Processing instructions
State[State["InProcessingInstruction"]=17]="InProcessingInstruction";
// Comments & CDATA
State[State["BeforeComment"]=18]="BeforeComment";State[State["CDATASequence"]=19]="CDATASequence";State[State["InSpecialComment"]=20]="InSpecialComment";State[State["InCommentLike"]=21]="InCommentLike";
// Special tags
State[State["BeforeSpecialS"]=22]="BeforeSpecialS";State[State["BeforeSpecialT"]=23]="BeforeSpecialT";State[State["SpecialStartSequence"]=24]="SpecialStartSequence";State[State["InSpecialTag"]=25]="InSpecialTag";State[State["InEntity"]=26]="InEntity"})(State||(State={}));function isWhitespace(c){return c===CharCodes.Space||c===CharCodes.NewLine||c===CharCodes.Tab||c===CharCodes.FormFeed||c===CharCodes.CarriageReturn}function isEndOfTagSection(c){return c===CharCodes.Slash||c===CharCodes.Gt||isWhitespace(c)}function isASCIIAlpha(c){return c>=CharCodes.LowerA&&c<=CharCodes.LowerZ||c>=CharCodes.UpperA&&c<=CharCodes.UpperZ}var QuoteType;(function(QuoteType){QuoteType[QuoteType["NoValue"]=0]="NoValue";QuoteType[QuoteType["Unquoted"]=1]="Unquoted";QuoteType[QuoteType["Single"]=2]="Single";QuoteType[QuoteType["Double"]=3]="Double"})(QuoteType||(QuoteType={}));
/**
 * Sequences used to match longer strings.
 *
 * We don't have `Script`, `Style`, or `Title` here. Instead, we re-use the *End
 * sequences with an increased offset.
 */const Sequences={Cdata:new Uint8Array([67,68,65,84,65,91]),// CDATA[
CdataEnd:new Uint8Array([93,93,62]),// ]]>
CommentEnd:new Uint8Array([45,45,62]),// `-->`
ScriptEnd:new Uint8Array([60,47,115,99,114,105,112,116]),// `<\/script`
StyleEnd:new Uint8Array([60,47,115,116,121,108,101]),// `</style`
TitleEnd:new Uint8Array([60,47,116,105,116,108,101]),// `</title`
TextareaEnd:new Uint8Array([60,47,116,101,120,116,97,114,101,97])};class Tokenizer{constructor({xmlMode=false,decodeEntities=true},cbs){this.cbs=cbs;
/** The current state the tokenizer is in. */this.state=State.Text;
/** The read buffer. */this.buffer="";
/** The beginning of the section that is currently being read. */this.sectionStart=0;
/** The index within the buffer that we are currently looking at. */this.index=0;
/** The start of the last entity. */this.entityStart=0;
/** Some behavior, eg. when decoding entities, is done while we are in another state. This keeps track of the other state type. */this.baseState=State.Text;
/** For special parsing behavior inside of script and style tags. */this.isSpecial=false;
/** Indicates whether the tokenizer has been paused. */this.running=true;
/** The offset of the current buffer. */this.offset=0;this.currentSequence=void 0;this.sequenceIndex=0;this.xmlMode=xmlMode;this.decodeEntities=decodeEntities;this.entityDecoder=new entities_lib_decode_js__WEBPACK_IMPORTED_MODULE_0__.EntityDecoder(xmlMode?entities_lib_decode_js__WEBPACK_IMPORTED_MODULE_0__.xmlDecodeTree:entities_lib_decode_js__WEBPACK_IMPORTED_MODULE_0__.htmlDecodeTree,((cp,consumed)=>this.emitCodePoint(cp,consumed)))}reset(){this.state=State.Text;this.buffer="";this.sectionStart=0;this.index=0;this.baseState=State.Text;this.currentSequence=void 0;this.running=true;this.offset=0}write(chunk){this.offset+=this.buffer.length;this.buffer=chunk;this.parse()}end(){if(this.running)this.finish()}pause(){this.running=false}resume(){this.running=true;if(this.index<this.buffer.length+this.offset)this.parse()}stateText(c){if(c===CharCodes.Lt||!this.decodeEntities&&this.fastForwardTo(CharCodes.Lt)){if(this.index>this.sectionStart)this.cbs.ontext(this.sectionStart,this.index);this.state=State.BeforeTagName;this.sectionStart=this.index}else if(this.decodeEntities&&c===CharCodes.Amp)this.startEntity()}stateSpecialStartSequence(c){const isEnd=this.sequenceIndex===this.currentSequence.length;const isMatch=isEnd?// If we are at the end of the sequence, make sure the tag name has ended
isEndOfTagSection(c):// Otherwise, do a case-insensitive comparison
(c|32)===this.currentSequence[this.sequenceIndex];if(!isMatch)this.isSpecial=false;else if(!isEnd){this.sequenceIndex++;return}this.sequenceIndex=0;this.state=State.InTagName;this.stateInTagName(c)}
/** Look for an end tag. For <title> tags, also decode entities. */stateInSpecialTag(c){if(this.sequenceIndex===this.currentSequence.length){if(c===CharCodes.Gt||isWhitespace(c)){const endOfText=this.index-this.currentSequence.length;if(this.sectionStart<endOfText){
// Spoof the index so that reported locations match up.
const actualIndex=this.index;this.index=endOfText;this.cbs.ontext(this.sectionStart,endOfText);this.index=actualIndex}this.isSpecial=false;this.sectionStart=endOfText+2;// Skip over the `</`
this.stateInClosingTagName(c);return;// We are done; skip the rest of the function.
}this.sequenceIndex=0}if((c|32)===this.currentSequence[this.sequenceIndex])this.sequenceIndex+=1;else if(this.sequenceIndex===0){if(this.currentSequence===Sequences.TitleEnd){
// We have to parse entities in <title> tags.
if(this.decodeEntities&&c===CharCodes.Amp)this.startEntity()}else if(this.fastForwardTo(CharCodes.Lt))
// Outside of <title> tags, we can fast-forward.
this.sequenceIndex=1}else
// If we see a `<`, set the sequence index to 1; useful for eg. `<<\/script>`.
this.sequenceIndex=Number(c===CharCodes.Lt)}stateCDATASequence(c){if(c===Sequences.Cdata[this.sequenceIndex]){if(++this.sequenceIndex===Sequences.Cdata.length){this.state=State.InCommentLike;this.currentSequence=Sequences.CdataEnd;this.sequenceIndex=0;this.sectionStart=this.index+1}}else{this.sequenceIndex=0;this.state=State.InDeclaration;this.stateInDeclaration(c);// Reconsume the character
}}
/**
     * When we wait for one specific character, we can speed things up
     * by skipping through the buffer until we find it.
     *
     * @returns Whether the character was found.
     */fastForwardTo(c){while(++this.index<this.buffer.length+this.offset)if(this.buffer.charCodeAt(this.index-this.offset)===c)return true;
/*
         * We increment the index at the end of the `parse` loop,
         * so set it to `buffer.length - 1` here.
         *
         * TODO: Refactor `parse` to increment index before calling states.
         */this.index=this.buffer.length+this.offset-1;return false}
/**
     * Comments and CDATA end with `-->` and `]]>`.
     *
     * Their common qualities are:
     * - Their end sequences have a distinct character they start with.
     * - That character is then repeated, so we have to check multiple repeats.
     * - All characters but the start character of the sequence can be skipped.
     */stateInCommentLike(c){if(c===this.currentSequence[this.sequenceIndex]){if(++this.sequenceIndex===this.currentSequence.length){if(this.currentSequence===Sequences.CdataEnd)this.cbs.oncdata(this.sectionStart,this.index,2);else this.cbs.oncomment(this.sectionStart,this.index,2);this.sequenceIndex=0;this.sectionStart=this.index+1;this.state=State.Text}}else if(this.sequenceIndex===0){
// Fast-forward to the first character of the sequence
if(this.fastForwardTo(this.currentSequence[0]))this.sequenceIndex=1}else if(c!==this.currentSequence[this.sequenceIndex-1])
// Allow long sequences, eg. --->, ]]]>
this.sequenceIndex=0}
/**
     * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.
     *
     * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).
     * We allow anything that wouldn't end the tag.
     */isTagStartChar(c){return this.xmlMode?!isEndOfTagSection(c):isASCIIAlpha(c)}startSpecial(sequence,offset){this.isSpecial=true;this.currentSequence=sequence;this.sequenceIndex=offset;this.state=State.SpecialStartSequence}stateBeforeTagName(c){if(c===CharCodes.ExclamationMark){this.state=State.BeforeDeclaration;this.sectionStart=this.index+1}else if(c===CharCodes.Questionmark){this.state=State.InProcessingInstruction;this.sectionStart=this.index+1}else if(this.isTagStartChar(c)){const lower=c|32;this.sectionStart=this.index;if(this.xmlMode)this.state=State.InTagName;else if(lower===Sequences.ScriptEnd[2])this.state=State.BeforeSpecialS;else if(lower===Sequences.TitleEnd[2])this.state=State.BeforeSpecialT;else this.state=State.InTagName}else if(c===CharCodes.Slash)this.state=State.BeforeClosingTagName;else{this.state=State.Text;this.stateText(c)}}stateInTagName(c){if(isEndOfTagSection(c)){this.cbs.onopentagname(this.sectionStart,this.index);this.sectionStart=-1;this.state=State.BeforeAttributeName;this.stateBeforeAttributeName(c)}}stateBeforeClosingTagName(c){if(isWhitespace(c));else if(c===CharCodes.Gt)this.state=State.Text;else{this.state=this.isTagStartChar(c)?State.InClosingTagName:State.InSpecialComment;this.sectionStart=this.index}}stateInClosingTagName(c){if(c===CharCodes.Gt||isWhitespace(c)){this.cbs.onclosetag(this.sectionStart,this.index);this.sectionStart=-1;this.state=State.AfterClosingTagName;this.stateAfterClosingTagName(c)}}stateAfterClosingTagName(c){
// Skip everything until ">"
if(c===CharCodes.Gt||this.fastForwardTo(CharCodes.Gt)){this.state=State.Text;this.sectionStart=this.index+1}}stateBeforeAttributeName(c){if(c===CharCodes.Gt){this.cbs.onopentagend(this.index);if(this.isSpecial){this.state=State.InSpecialTag;this.sequenceIndex=0}else this.state=State.Text;this.sectionStart=this.index+1}else if(c===CharCodes.Slash)this.state=State.InSelfClosingTag;else if(!isWhitespace(c)){this.state=State.InAttributeName;this.sectionStart=this.index}}stateInSelfClosingTag(c){if(c===CharCodes.Gt){this.cbs.onselfclosingtag(this.index);this.state=State.Text;this.sectionStart=this.index+1;this.isSpecial=false;// Reset special state, in case of self-closing special tags
}else if(!isWhitespace(c)){this.state=State.BeforeAttributeName;this.stateBeforeAttributeName(c)}}stateInAttributeName(c){if(c===CharCodes.Eq||isEndOfTagSection(c)){this.cbs.onattribname(this.sectionStart,this.index);this.sectionStart=this.index;this.state=State.AfterAttributeName;this.stateAfterAttributeName(c)}}stateAfterAttributeName(c){if(c===CharCodes.Eq)this.state=State.BeforeAttributeValue;else if(c===CharCodes.Slash||c===CharCodes.Gt){this.cbs.onattribend(QuoteType.NoValue,this.sectionStart);this.sectionStart=-1;this.state=State.BeforeAttributeName;this.stateBeforeAttributeName(c)}else if(!isWhitespace(c)){this.cbs.onattribend(QuoteType.NoValue,this.sectionStart);this.state=State.InAttributeName;this.sectionStart=this.index}}stateBeforeAttributeValue(c){if(c===CharCodes.DoubleQuote){this.state=State.InAttributeValueDq;this.sectionStart=this.index+1}else if(c===CharCodes.SingleQuote){this.state=State.InAttributeValueSq;this.sectionStart=this.index+1}else if(!isWhitespace(c)){this.sectionStart=this.index;this.state=State.InAttributeValueNq;this.stateInAttributeValueNoQuotes(c);// Reconsume token
}}handleInAttributeValue(c,quote){if(c===quote||!this.decodeEntities&&this.fastForwardTo(quote)){this.cbs.onattribdata(this.sectionStart,this.index);this.sectionStart=-1;this.cbs.onattribend(quote===CharCodes.DoubleQuote?QuoteType.Double:QuoteType.Single,this.index+1);this.state=State.BeforeAttributeName}else if(this.decodeEntities&&c===CharCodes.Amp)this.startEntity()}stateInAttributeValueDoubleQuotes(c){this.handleInAttributeValue(c,CharCodes.DoubleQuote)}stateInAttributeValueSingleQuotes(c){this.handleInAttributeValue(c,CharCodes.SingleQuote)}stateInAttributeValueNoQuotes(c){if(isWhitespace(c)||c===CharCodes.Gt){this.cbs.onattribdata(this.sectionStart,this.index);this.sectionStart=-1;this.cbs.onattribend(QuoteType.Unquoted,this.index);this.state=State.BeforeAttributeName;this.stateBeforeAttributeName(c)}else if(this.decodeEntities&&c===CharCodes.Amp)this.startEntity()}stateBeforeDeclaration(c){if(c===CharCodes.OpeningSquareBracket){this.state=State.CDATASequence;this.sequenceIndex=0}else this.state=c===CharCodes.Dash?State.BeforeComment:State.InDeclaration}stateInDeclaration(c){if(c===CharCodes.Gt||this.fastForwardTo(CharCodes.Gt)){this.cbs.ondeclaration(this.sectionStart,this.index);this.state=State.Text;this.sectionStart=this.index+1}}stateInProcessingInstruction(c){if(c===CharCodes.Gt||this.fastForwardTo(CharCodes.Gt)){this.cbs.onprocessinginstruction(this.sectionStart,this.index);this.state=State.Text;this.sectionStart=this.index+1}}stateBeforeComment(c){if(c===CharCodes.Dash){this.state=State.InCommentLike;this.currentSequence=Sequences.CommentEnd;
// Allow short comments (eg. <!-->)
this.sequenceIndex=2;this.sectionStart=this.index+1}else this.state=State.InDeclaration}stateInSpecialComment(c){if(c===CharCodes.Gt||this.fastForwardTo(CharCodes.Gt)){this.cbs.oncomment(this.sectionStart,this.index,0);this.state=State.Text;this.sectionStart=this.index+1}}stateBeforeSpecialS(c){const lower=c|32;if(lower===Sequences.ScriptEnd[3])this.startSpecial(Sequences.ScriptEnd,4);else if(lower===Sequences.StyleEnd[3])this.startSpecial(Sequences.StyleEnd,4);else{this.state=State.InTagName;this.stateInTagName(c);// Consume the token again
}}stateBeforeSpecialT(c){const lower=c|32;if(lower===Sequences.TitleEnd[3])this.startSpecial(Sequences.TitleEnd,4);else if(lower===Sequences.TextareaEnd[3])this.startSpecial(Sequences.TextareaEnd,4);else{this.state=State.InTagName;this.stateInTagName(c);// Consume the token again
}}startEntity(){this.baseState=this.state;this.state=State.InEntity;this.entityStart=this.index;this.entityDecoder.startEntity(this.xmlMode?entities_lib_decode_js__WEBPACK_IMPORTED_MODULE_0__.DecodingMode.Strict:this.baseState===State.Text||this.baseState===State.InSpecialTag?entities_lib_decode_js__WEBPACK_IMPORTED_MODULE_0__.DecodingMode.Legacy:entities_lib_decode_js__WEBPACK_IMPORTED_MODULE_0__.DecodingMode.Attribute)}stateInEntity(){const length=this.entityDecoder.write(this.buffer,this.index-this.offset);
// If `length` is positive, we are done with the entity.
if(length>=0){this.state=this.baseState;if(length===0)this.index=this.entityStart}else
// Mark buffer as consumed.
this.index=this.offset+this.buffer.length-1}
/**
     * Remove data that has already been consumed from the buffer.
     */cleanup(){
// If we are inside of text or attributes, emit what we already have.
if(this.running&&this.sectionStart!==this.index)if(this.state===State.Text||this.state===State.InSpecialTag&&this.sequenceIndex===0){this.cbs.ontext(this.sectionStart,this.index);this.sectionStart=this.index}else if(this.state===State.InAttributeValueDq||this.state===State.InAttributeValueSq||this.state===State.InAttributeValueNq){this.cbs.onattribdata(this.sectionStart,this.index);this.sectionStart=this.index}}shouldContinue(){return this.index<this.buffer.length+this.offset&&this.running}
/**
     * Iterates through the buffer, calling the function corresponding to the current state.
     *
     * States that are more likely to be hit are higher up, as a performance improvement.
     */parse(){while(this.shouldContinue()){const c=this.buffer.charCodeAt(this.index-this.offset);switch(this.state){case State.Text:this.stateText(c);break;case State.SpecialStartSequence:this.stateSpecialStartSequence(c);break;case State.InSpecialTag:this.stateInSpecialTag(c);break;case State.CDATASequence:this.stateCDATASequence(c);break;case State.InAttributeValueDq:this.stateInAttributeValueDoubleQuotes(c);break;case State.InAttributeName:this.stateInAttributeName(c);break;case State.InCommentLike:this.stateInCommentLike(c);break;case State.InSpecialComment:this.stateInSpecialComment(c);break;case State.BeforeAttributeName:this.stateBeforeAttributeName(c);break;case State.InTagName:this.stateInTagName(c);break;case State.InClosingTagName:this.stateInClosingTagName(c);break;case State.BeforeTagName:this.stateBeforeTagName(c);break;case State.AfterAttributeName:this.stateAfterAttributeName(c);break;case State.InAttributeValueSq:this.stateInAttributeValueSingleQuotes(c);break;case State.BeforeAttributeValue:this.stateBeforeAttributeValue(c);break;case State.BeforeClosingTagName:this.stateBeforeClosingTagName(c);break;case State.AfterClosingTagName:this.stateAfterClosingTagName(c);break;case State.BeforeSpecialS:this.stateBeforeSpecialS(c);break;case State.BeforeSpecialT:this.stateBeforeSpecialT(c);break;case State.InAttributeValueNq:this.stateInAttributeValueNoQuotes(c);break;case State.InSelfClosingTag:this.stateInSelfClosingTag(c);break;case State.InDeclaration:this.stateInDeclaration(c);break;case State.BeforeDeclaration:this.stateBeforeDeclaration(c);break;case State.BeforeComment:this.stateBeforeComment(c);break;case State.InProcessingInstruction:this.stateInProcessingInstruction(c);break;case State.InEntity:this.stateInEntity();break}this.index++}this.cleanup()}finish(){if(this.state===State.InEntity){this.entityDecoder.end();this.state=this.baseState}this.handleTrailingData();this.cbs.onend()}
/** Handle any trailing data. */handleTrailingData(){const endIndex=this.buffer.length+this.offset;
// If there is no remaining data, we are done.
if(this.sectionStart>=endIndex)return;if(this.state===State.InCommentLike)if(this.currentSequence===Sequences.CdataEnd)this.cbs.oncdata(this.sectionStart,endIndex,0);else this.cbs.oncomment(this.sectionStart,endIndex,0);else if(this.state===State.InTagName||this.state===State.BeforeAttributeName||this.state===State.BeforeAttributeValue||this.state===State.AfterAttributeName||this.state===State.InAttributeName||this.state===State.InAttributeValueSq||this.state===State.InAttributeValueDq||this.state===State.InAttributeValueNq||this.state===State.InClosingTagName);else this.cbs.ontext(this.sectionStart,endIndex)}emitCodePoint(cp,consumed){if(this.baseState!==State.Text&&this.baseState!==State.InSpecialTag){if(this.sectionStart<this.entityStart)this.cbs.onattribdata(this.sectionStart,this.entityStart);this.sectionStart=this.entityStart+consumed;this.index=this.sectionStart-1;this.cbs.onattribentity(cp)}else{if(this.sectionStart<this.entityStart)this.cbs.ontext(this.sectionStart,this.entityStart);this.sectionStart=this.entityStart+consumed;this.index=this.sectionStart-1;this.cbs.ontextentity(cp,this.sectionStart)}}}
//# sourceMappingURL=Tokenizer.js.map
/***/},
/***/"./node_modules/htmlparser2/lib/esm/index.js":
/*!***************************************************!*\
  !*** ./node_modules/htmlparser2/lib/esm/index.js ***!
  \***************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */DefaultHandler:()=>/* reexport safe */domhandler__WEBPACK_IMPORTED_MODULE_1__.DomHandler
/* harmony export */,DomHandler:()=>/* reexport safe */domhandler__WEBPACK_IMPORTED_MODULE_1__.DomHandler
/* harmony export */,DomUtils:()=>/* reexport module object */domutils__WEBPACK_IMPORTED_MODULE_4__
/* harmony export */,ElementType:()=>/* reexport module object */domelementtype__WEBPACK_IMPORTED_MODULE_3__
/* harmony export */,Parser:()=>/* reexport safe */_Parser_js__WEBPACK_IMPORTED_MODULE_0__.Parser
/* harmony export */,QuoteType:()=>/* reexport safe */_Tokenizer_js__WEBPACK_IMPORTED_MODULE_2__.QuoteType
/* harmony export */,Tokenizer:()=>/* reexport safe */_Tokenizer_js__WEBPACK_IMPORTED_MODULE_2__["default"]
/* harmony export */,createDocumentStream:()=>/* binding */createDocumentStream
/* harmony export */,createDomStream:()=>/* binding */createDomStream
/* harmony export */,getFeed:()=>/* reexport safe */domutils__WEBPACK_IMPORTED_MODULE_4__.getFeed
/* harmony export */,parseDOM:()=>/* binding */parseDOM
/* harmony export */,parseDocument:()=>/* binding */parseDocument
/* harmony export */,parseFeed:()=>/* binding */parseFeed
/* harmony export */});
/* harmony import */var _Parser_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ./Parser.js */"./node_modules/htmlparser2/lib/esm/Parser.js");
/* harmony import */var domhandler__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! domhandler */"./node_modules/domhandler/lib/esm/index.js");
/* harmony import */var _Tokenizer_js__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! ./Tokenizer.js */"./node_modules/htmlparser2/lib/esm/Tokenizer.js");
/* harmony import */var domelementtype__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(/*! domelementtype */"./node_modules/domelementtype/lib/esm/index.js");
/* harmony import */var domutils__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(/*! domutils */"./node_modules/domutils/lib/esm/index.js");
// Helper methods
/**
 * Parses the data, returns the resulting document.
 *
 * @param data The data that should be parsed.
 * @param options Optional options for the parser and DOM handler.
 */function parseDocument(data,options){const handler=new domhandler__WEBPACK_IMPORTED_MODULE_1__.DomHandler(void 0,options);new _Parser_js__WEBPACK_IMPORTED_MODULE_0__.Parser(handler,options).end(data);return handler.root}
/**
 * Parses data, returns an array of the root nodes.
 *
 * Note that the root nodes still have a `Document` node as their parent.
 * Use `parseDocument` to get the `Document` node instead.
 *
 * @param data The data that should be parsed.
 * @param options Optional options for the parser and DOM handler.
 * @deprecated Use `parseDocument` instead.
 */function parseDOM(data,options){return parseDocument(data,options).children}
/**
 * Creates a parser instance, with an attached DOM handler.
 *
 * @param callback A callback that will be called once parsing has been completed, with the resulting document.
 * @param options Optional options for the parser and DOM handler.
 * @param elementCallback An optional callback that will be called every time a tag has been completed inside of the DOM.
 */function createDocumentStream(callback,options,elementCallback){const handler=new domhandler__WEBPACK_IMPORTED_MODULE_1__.DomHandler((error=>callback(error,handler.root)),options,elementCallback);return new _Parser_js__WEBPACK_IMPORTED_MODULE_0__.Parser(handler,options)}
/**
 * Creates a parser instance, with an attached DOM handler.
 *
 * @param callback A callback that will be called once parsing has been completed, with an array of root nodes.
 * @param options Optional options for the parser and DOM handler.
 * @param elementCallback An optional callback that will be called every time a tag has been completed inside of the DOM.
 * @deprecated Use `createDocumentStream` instead.
 */function createDomStream(callback,options,elementCallback){const handler=new domhandler__WEBPACK_IMPORTED_MODULE_1__.DomHandler(callback,options,elementCallback);return new _Parser_js__WEBPACK_IMPORTED_MODULE_0__.Parser(handler,options)}
/*
 * All of the following exports exist for backwards-compatibility.
 * They should probably be removed eventually.
 */const parseFeedDefaultOptions={xmlMode:true};
/**
 * Parse a feed.
 *
 * @param feed The feed that should be parsed, as a string.
 * @param options Optionally, options for parsing. When using this, you should set `xmlMode` to `true`.
 */function parseFeed(feed,options=parseFeedDefaultOptions){return(0,domutils__WEBPACK_IMPORTED_MODULE_4__.getFeed)(parseDOM(feed,options))}
//# sourceMappingURL=index.js.map
/***/},
/***/"./node_modules/nth-check/lib/esm/compile.js":
/*!***************************************************!*\
  !*** ./node_modules/nth-check/lib/esm/compile.js ***!
  \***************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */compile:()=>/* binding */compile
/* harmony export */,generate:()=>/* binding */generate
/* harmony export */});
/* harmony import */var boolbase__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! boolbase */"./node_modules/boolbase/index.js");
/**
 * Returns a function that checks if an elements index matches the given rule
 * highly optimized to return the fastest solution.
 *
 * @param parsed A tuple [a, b], as returned by `parse`.
 * @returns A highly optimized function that returns whether an index matches the nth-check.
 * @example
 *
 * ```js
 * const check = nthCheck.compile([2, 3]);
 *
 * check(0); // `false`
 * check(1); // `false`
 * check(2); // `true`
 * check(3); // `false`
 * check(4); // `true`
 * check(5); // `false`
 * check(6); // `true`
 * ```
 */function compile(parsed){const a=parsed[0];
// Subtract 1 from `b`, to convert from one- to zero-indexed.
const b=parsed[1]-1;
/*
     * When `b <= 0`, `a * n` won't be lead to any matches for `a < 0`.
     * Besides, the specification states that no elements are
     * matched when `a` and `b` are 0.
     *
     * `b < 0` here as we subtracted 1 from `b` above.
     */if(b<0&&a<=0)return boolbase__WEBPACK_IMPORTED_MODULE_0__.falseFunc;
// When `a` is in the range -1..1, it matches any element (so only `b` is checked).
if(a===-1)return index=>index<=b;if(a===0)return index=>index===b
// When `b <= 0` and `a === 1`, they match any element.;
if(a===1)return b<0?boolbase__WEBPACK_IMPORTED_MODULE_0__.trueFunc:index=>index>=b
/*
     * Otherwise, modulo can be used to check if there is a match.
     *
     * Modulo doesn't care about the sign, so let's use `a`s absolute value.
     */;const absA=Math.abs(a);
// Get `b mod a`, + a if this is negative.
const bMod=(b%absA+absA)%absA;return a>1?index=>index>=b&&index%absA===bMod:index=>index<=b&&index%absA===bMod}
/**
 * Returns a function that produces a monotonously increasing sequence of indices.
 *
 * If the sequence has an end, the returned function will return `null` after
 * the last index in the sequence.
 *
 * @param parsed A tuple [a, b], as returned by `parse`.
 * @returns A function that produces a sequence of indices.
 * @example <caption>Always increasing (2n+3)</caption>
 *
 * ```js
 * const gen = nthCheck.generate([2, 3])
 *
 * gen() // `1`
 * gen() // `3`
 * gen() // `5`
 * gen() // `8`
 * gen() // `11`
 * ```
 *
 * @example <caption>With end value (-2n+10)</caption>
 *
 * ```js
 *
 * const gen = nthCheck.generate([-2, 5]);
 *
 * gen() // 0
 * gen() // 2
 * gen() // 4
 * gen() // null
 * ```
 */function generate(parsed){const a=parsed[0];
// Subtract 1 from `b`, to convert from one- to zero-indexed.
let b=parsed[1]-1;let n=0;
// Make sure to always return an increasing sequence
if(a<0){const aPos=-a;
// Get `b mod a`
const minValue=(b%aPos+aPos)%aPos;return()=>{const val=minValue+aPos*n++;return val>b?null:val}}if(a===0)return b<0?// There are no result — always return `null`
()=>null// Return `b` exactly once
:()=>n++===0?b:null;if(b<0)b+=a*Math.ceil(-b/a);return()=>a*n+++b}
//# sourceMappingURL=compile.js.map
/***/},
/***/"./node_modules/nth-check/lib/esm/index.js":
/*!*************************************************!*\
  !*** ./node_modules/nth-check/lib/esm/index.js ***!
  \*************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */compile:()=>/* reexport safe */_compile_js__WEBPACK_IMPORTED_MODULE_1__.compile
/* harmony export */,default:()=>/* binding */nthCheck
/* harmony export */,generate:()=>/* reexport safe */_compile_js__WEBPACK_IMPORTED_MODULE_1__.generate
/* harmony export */,parse:()=>/* reexport safe */_parse_js__WEBPACK_IMPORTED_MODULE_0__.parse
/* harmony export */,sequence:()=>/* binding */sequence
/* harmony export */});
/* harmony import */var _parse_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ./parse.js */"./node_modules/nth-check/lib/esm/parse.js");
/* harmony import */var _compile_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./compile.js */"./node_modules/nth-check/lib/esm/compile.js");
/**
 * Parses and compiles a formula to a highly optimized function.
 * Combination of {@link parse} and {@link compile}.
 *
 * If the formula doesn't match any elements,
 * it returns [`boolbase`](https://github.com/fb55/boolbase)'s `falseFunc`.
 * Otherwise, a function accepting an _index_ is returned, which returns
 * whether or not the passed _index_ matches the formula.
 *
 * Note: The nth-rule starts counting at `1`, the returned function at `0`.
 *
 * @param formula The formula to compile.
 * @example
 * const check = nthCheck("2n+3");
 *
 * check(0); // `false`
 * check(1); // `false`
 * check(2); // `true`
 * check(3); // `false`
 * check(4); // `true`
 * check(5); // `false`
 * check(6); // `true`
 */function nthCheck(formula){return(0,_compile_js__WEBPACK_IMPORTED_MODULE_1__.compile)((0,_parse_js__WEBPACK_IMPORTED_MODULE_0__.parse)(formula))}
/**
 * Parses and compiles a formula to a generator that produces a sequence of indices.
 * Combination of {@link parse} and {@link generate}.
 *
 * @param formula The formula to compile.
 * @returns A function that produces a sequence of indices.
 * @example <caption>Always increasing</caption>
 *
 * ```js
 * const gen = nthCheck.sequence('2n+3')
 *
 * gen() // `1`
 * gen() // `3`
 * gen() // `5`
 * gen() // `8`
 * gen() // `11`
 * ```
 *
 * @example <caption>With end value</caption>
 *
 * ```js
 *
 * const gen = nthCheck.sequence('-2n+5');
 *
 * gen() // 0
 * gen() // 2
 * gen() // 4
 * gen() // null
 * ```
 */function sequence(formula){return(0,_compile_js__WEBPACK_IMPORTED_MODULE_1__.generate)((0,_parse_js__WEBPACK_IMPORTED_MODULE_0__.parse)(formula))}
//# sourceMappingURL=index.js.map
/***/},
/***/"./node_modules/nth-check/lib/esm/parse.js":
/*!*************************************************!*\
  !*** ./node_modules/nth-check/lib/esm/parse.js ***!
  \*************************************************/
/***/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */parse:()=>/* binding */parse
/* harmony export */});
// Following http://www.w3.org/TR/css3-selectors/#nth-child-pseudo
// Whitespace as per https://www.w3.org/TR/selectors-3/#lex is " \t\r\n\f"
const whitespace=new Set([9,10,12,13,32]);const ZERO="0".charCodeAt(0);const NINE="9".charCodeAt(0);
/**
 * Parses an expression.
 *
 * @throws An `Error` if parsing fails.
 * @returns An array containing the integer step size and the integer offset of the nth rule.
 * @example nthCheck.parse("2n+3"); // returns [2, 3]
 */function parse(formula){formula=formula.trim().toLowerCase();if(formula==="even")return[2,0];else if(formula==="odd")return[2,1];
// Parse [ ['-'|'+']? INTEGER? {N} [ S* ['-'|'+'] S* INTEGER ]?
let idx=0;let a=0;let sign=readSign();let number=readNumber();if(idx<formula.length&&formula.charAt(idx)==="n"){idx++;a=sign*(number!==null&&number!==void 0?number:1);skipWhitespace();if(idx<formula.length){sign=readSign();skipWhitespace();number=readNumber()}else sign=number=0}
// Throw if there is anything else
if(number===null||idx<formula.length)throw new Error(`n-th rule couldn't be parsed ('${formula}')`);return[a,sign*number];function readSign(){if(formula.charAt(idx)==="-"){idx++;return-1}if(formula.charAt(idx)==="+")idx++;return 1}function readNumber(){const start=idx;let value=0;while(idx<formula.length&&formula.charCodeAt(idx)>=ZERO&&formula.charCodeAt(idx)<=NINE){value=value*10+(formula.charCodeAt(idx)-ZERO);idx++}
// Return `null` if we didn't read anything.
return idx===start?null:value}function skipWhitespace(){while(idx<formula.length&&whitespace.has(formula.charCodeAt(idx)))idx++}}
//# sourceMappingURL=parse.js.map
/***/},
/***/"?2259":
/*!**********************!*\
  !*** path (ignored) ***!
  \**********************/
/***/()=>{},
/***/"?c221":
/*!********************!*\
  !*** fs (ignored) ***!
  \********************/
/***/()=>{}
/******/};
/************************************************************************/
/******/ // The module cache
/******/var __webpack_module_cache__={};
/******/
/******/ // The require function
/******/function __webpack_require__(moduleId){
/******/ // Check if module is in cache
/******/var cachedModule=__webpack_module_cache__[moduleId];
/******/if(cachedModule!==void 0)
/******/return cachedModule.exports;
/******/
/******/ // Create a new module (and put it into the cache)
/******/var module=__webpack_module_cache__[moduleId]={
/******/ // no module.id needed
/******/ // no module.loaded needed
/******/exports:{}
/******/};
/******/
/******/ // Execute the module function
/******/__webpack_modules__[moduleId](module,module.exports,__webpack_require__);
/******/
/******/ // Return the exports of the module
/******/return module.exports;
/******/}
/******/
/************************************************************************/
/******/ /* webpack/runtime/define property getters */
/******/(()=>{
/******/ // define getter functions for harmony exports
/******/__webpack_require__.d=(exports,definition)=>{
/******/for(var key in definition)
/******/if(__webpack_require__.o(definition,key)&&!__webpack_require__.o(exports,key))
/******/Object.defineProperty(exports,key,{enumerable:true,get:definition[key]});
/******/
/******/
/******/};
/******/})();
/******/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/(()=>{
/******/__webpack_require__.o=(obj,prop)=>Object.prototype.hasOwnProperty.call(obj,prop)
/******/})();
/******/
/******/ /* webpack/runtime/make namespace object */
/******/(()=>{
/******/ // define __esModule on exports
/******/__webpack_require__.r=exports=>{
/******/if(typeof Symbol!=="undefined"&&Symbol.toStringTag)
/******/Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});
/******/
/******/Object.defineProperty(exports,"__esModule",{value:true});
/******/};
/******/})();
/******/
/************************************************************************/var __webpack_exports__={};
// This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk.
(()=>{
/*!******************!*\
  !*** ./teddy.js ***!
  \******************/
__webpack_require__.r(__webpack_exports__);
/* harmony export */__webpack_require__.d(__webpack_exports__,{
/* harmony export */default:()=>__WEBPACK_DEFAULT_EXPORT__
/* harmony export */});
/* harmony import */var fs__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! fs */"?c221");
/* harmony import */var path__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! path */"?2259");
/* harmony import */var cheerio_slim__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! cheerio/slim */"./node_modules/cheerio/dist/browser/slim.js");
// #region globals
// node filesystem module
// node path module
// dom parser
const cheerioOptions={xml:{xmlMode:false,lowerCaseAttributeNames:false,decodeEntities:false}};const browser=cheerio_slim__WEBPACK_IMPORTED_MODULE_2__.load.isCheerioPolyfill;// true if we are executing in the browser context
const params={};// teddy parameters
setDefaultParams();// set params to the defaults
let templates={};// loaded templates are stored as object collections, e.g. { "myTemplate.html": "<p>some markup</p>"}
const caches={};// a place to store cached portions of templates
const templateCaches={};// a place to store cached full templates
// #endregion
// #region private methods
// loads the template from the filesystem
function loadTemplate(template){
// ensure template is a string
if(typeof template!=="string"){if(params.verbosity>1)console.warn("teddy.loadTemplate attempted to load a template which is not a string.");return""}const name=template;let register=false;if(!templates[template]&&template.indexOf("<")===-1&&fs__WEBPACK_IMPORTED_MODULE_0__&&fs__WEBPACK_IMPORTED_MODULE_0__.readFileSync){
// template is not found, it is not code, and we're in the node.js context
register=true;
// append extension if not present
if(template.slice(-5)!==".html")template+=".html";try{template=fs__WEBPACK_IMPORTED_MODULE_0__.readFileSync(template,"utf8")}catch(e){try{template=fs__WEBPACK_IMPORTED_MODULE_0__.readFileSync(params.templateRoot+template,"utf8")}catch(e){try{template=fs__WEBPACK_IMPORTED_MODULE_0__.readFileSync(params.templateRoot+"/"+template,"utf8")}catch(e){
// do nothing, attempt to render it as code
register=false}}}}else if(templates[template]){template=templates[template];register=true}else{
// didn't find it; append extension if not present and check it again
if(template.slice(-5)!==".html")template+=".html";if(templates[template]){template=templates[template];register=true}template=removeTeddyComments(template)}if(register){
// register the new template and return the code
template=removeTeddyComments(template);templates[name]=template;return template}else
// return the template name which is presumed to be code
return template.slice(-5)===".html"?template.substring(0,template.length-5):template}
// remove teddy {! comments !} and <!--! comments -->; also replace <!--# content --> with <escape>content</escape>
function removeTeddyComments(renderedTemplate){let oldTemplate;do{oldTemplate=renderedTemplate;let vars;try{vars=matchByDelimiter(renderedTemplate,"{!","!}")}catch(e){return renderedTemplate;// it will match {! comments {! with comments in them !} !} but if there are unbalanced brackets, just return the original text
}for(let i=0;i<vars.length;i++)renderedTemplate=renderedTemplate.replace(`{!${vars[i]}!}`,"");try{vars=matchByDelimiter(renderedTemplate,"\x3c!--!","--\x3e")}catch(e){return renderedTemplate}for(let i=0;i<vars.length;i++)renderedTemplate=renderedTemplate.replace(`\x3c!--!${vars[i]}--\x3e`,"");try{vars=matchByDelimiter(renderedTemplate,"\x3c!--#","--\x3e")}catch(e){return renderedTemplate}for(let i=0;i<vars.length;i++)renderedTemplate=renderedTemplate.replace(`\x3c!--#${vars[i]}--\x3e`,`<escape>${vars[i]}</escape>`)}while(oldTemplate!==renderedTemplate);return renderedTemplate}
// find all cache elements and replace them with the rendered contents of their cache, then remove the cache element
function replaceCacheElements(dom,model){let parsedTags;do{parsedTags=0;const tags=dom("cache:not([defer])");if(tags.length>0)for(const el of tags){if(browser)el.attribs=getAttribs(el);const name=el.attribs.name;if(name.includes("{"))continue;const key=el.attribs.key||"none";if(key.includes("{"))continue;const cache=caches[name];if(cache&&cache.entries){const keyVal=el.attribs.key?getOrSetObjectByDotNotation(model,key):"none";if(cache.entries[keyVal]){const now=Date.now();
// if max age is not set, then there is no max age and the cache content is still valid
// or if last accessed + max age > now then the cache is not stale and the cache is still valid
if(!(cache.maxAge&&!cache.maxage)||cache.entries[keyVal].lastAccessed+(cache.maxAge||cache.maxage)>now){const cacheContent=cache.entries[keyVal].markup;cache.entries[keyVal].lastAccessed=now;dom(el).replaceWith(cacheContent)}else{
// if last accessed + max age <= now then the cache is stale and the cache is no longer valid
delete caches[name].entries[keyVal];dom(el).attr("defer","true");// create a new cache
}}else dom(el).attr("defer","true");// no cache exists for this yet; create after the template renders
}else dom(el).attr("defer","true");// no cache exists for this yet; create after the template renders
parsedTags++}}while(parsedTags);return dom}
// add an id to all <noteddy> or <noparse> tags, then remove their content temporarily until the template is fully parsed
function tagNoParseBlocks(dom,model){let parsedTags;do{parsedTags=0;let tags=dom("noteddy:not([id]), noparse:not([id])");if(tags.length>0)for(const el of tags){const id=model._noTeddyBlocks.push(dom(el).html())-1;dom(el).replaceWith(`<noteddy id="${id}"></noteddy>`);parsedTags++}tags=dom("pre:not([id]):not([parse])");if(tags.length>0)for(const el of tags){const id=model._noTeddyBlocks.push(dom(el).toString())-1;dom(el).replaceWith(`<noteddy id="${id}" pre="true"></noteddy>`);parsedTags++}}while(parsedTags);return dom}
// parse <include> tags
function parseIncludes(dom,model,dynamic){let parsedTags;let passes=0;do{passes++;if(passes>params.maxPasses)throw new Error(`teddy could not finish rendering the template because the max number of passes over the template (${params.maxPasses}) was exceeded; there may be an infinite loop in your template logic.`);parsedTags=0;let tags;
// dynamic includes are includes like <include src="{sourcedFromVariable}"></include>
if(dynamic)tags=dom("include");// parse all includes
else tags=dom("include:not([teddydeferreddynamicinclude])");// parse only includes that aren't dynamic
if(tags.length>0)for(const el of tags){
// ensure this isn't the child of a no parse block
let foundBody=false;let next=false;let parent=el.parent||el.parentNode;while(!foundBody){let parentName;if(!parent)parentName="body";else parentName=parent.nodeName?.toLowerCase()||parent.name;if(parentName==="noparse"||parentName==="noteddy"){next=true;break}else if(parentName==="body")foundBody=true;else parent=parent.parent||parent.parentNode}if(next)continue;
// get attributes
if(browser)el.attribs=getAttribs(el);const src=el.attribs.src;if(!src){if(params.verbosity>1)console.warn("teddy encountered an include tag with no src attribute.");continue}if(src.startsWith("{")){dom(el).attr("teddydeferreddynamicinclude","true");// mark it dynamic and then skip it
continue}loadTemplate(src);// load the partial into the template list
let contents=templates[src]||"";if(typeof templates[src]!=="string"&&params.includeNotFoundBehavior==="display"){contents=`Template "${src}" not found!`;if(params.verbosity>1)console.warn(`teddy encountered an include tag with a src set to a template that could not be found: ${src}`)}const localModel=Object.assign({},model);for(const arg of dom(el).children()){const argName=browser?arg.nodeName?.toLowerCase():arg.name;if(argName==="arg"){if(browser)arg.attribs=getAttribs(arg);const argval=Object.keys(arg.attribs)[0];getOrSetObjectByDotNotation(localModel,argval,dom(arg).html())}}const hasNoteddy=contents.includes("</noteddy>");const hasNoparse=contents.includes("</noparse>");const hasPre=contents.includes("</pre>");const hasIf=contents.includes("</if>");const hasUnless=contents.includes("</unless>");const hasTrue=contents.includes(" true=");const hasFalse=contents.includes(" false=");const hasLoop=contents.includes("</loop>");const hasInline=contents.includes("</inline>");const hasEscape=contents.includes("</escape>")||contents.includes("\x3c!--#");const hasSelected=contents.includes(" selected-value=")||contents.includes(" checked-value=");if(hasEscape)contents=parseEscapes(contents);let localDom;if(hasNoteddy||hasNoparse||hasPre){localDom=(0,cheerio_slim__WEBPACK_IMPORTED_MODULE_2__.load)(contents,cheerioOptions);localDom=tagNoParseBlocks(localDom,localModel);contents=localDom.html()}localDom=(0,cheerio_slim__WEBPACK_IMPORTED_MODULE_2__.load)(parseVars(contents,localModel),cheerioOptions);if(hasIf||hasUnless)localDom=parseConditionals(localDom,localModel);if(hasTrue||hasFalse)localDom=parseOneLineConditionals(localDom,localModel);if(hasLoop)localDom=parseLoops(localDom,localModel);if(hasInline)localDom=parseInlines(localDom,localModel);if(hasSelected)localDom=parseSelectedAttributeValues(localDom,localModel);dom(el).replaceWith(localDom.html());parsedTags++}}while(parsedTags);return dom}
// parse <if>, <elseif>, <unless>, <elseunless>, and <else> tags
function parseConditionals(dom,model){let parsedTags;do{parsedTags=0;const tags=dom("if, unless");if(tags.length>0)for(const el of tags){
// ensure this isn't the child of a loop or a no parse block
let foundBody=false;let next=false;let parent=el.parent||el.parentNode;while(!foundBody){let parentName;if(!parent)parentName="body";else parentName=parent.nodeName?.toLowerCase()||parent.name;if(parentName==="loop"||parentName==="noparse"||parentName==="noteddy"){next=true;break}else if(parentName==="body")foundBody=true;else parent=parent.parent||parent.parentNode}if(next)continue;
// get conditions
let args=[];if(browser)el.attribs=getAttribs(el);for(let attr in el.attribs){if(attr.includes("-teddyduplicate"))attr=attr.split("-teddyduplicate")[0];// the condition is a duplicate, so remove the `-teddyduplicate1` from `conditionName-teddyduplicate1`, `conditionName-teddyduplicate2`, etc
let val=el.attribs[attr];if(val){if(val.startsWith("{"))val=parseVars(val,model);args.push(`${attr}=${val}`)}else args.push(attr)}
// check if it's an if tag and not an unless tag
let isIf=true;const elName=browser?el.nodeName?.toLowerCase():el.name;if(elName==="unless")isIf=false;
// evaluate conditional
const condResult=evaluateConditional(args,model);if(isIf&&condResult||!isIf&&!condResult){
// render the true block and discard the elseif, elseunless, and else blocks
let nextSibling=el.nextSibling;const removeStack=[];while(nextSibling){const nextSiblingName=browser?nextSibling.nodeName?.toLowerCase():nextSibling.name;switch(nextSiblingName){case"elseif":case"elseunless":case"else":removeStack.push(nextSibling);nextSibling=nextSibling.nextSibling;break;case"if":case"unless":nextSibling=false;break;default:nextSibling=nextSibling.nextSibling}}for(const element of removeStack)dom(element).replaceWith("");dom(el).replaceWith(el.childNodes||el.children);parsedTags++}else{
// true block is false; find the next elseif, elseunless, or else tag to evaluate
let nextSibling=el.nextSibling;while(nextSibling){const nextSiblingName=browser?nextSibling.nodeName?.toLowerCase():nextSibling.name;switch(nextSiblingName){case"elseif":
// get conditions
args=[];if(browser)nextSibling.attribs=getAttribs(nextSibling);for(const attr in nextSibling.attribs){const val=nextSibling.attribs[attr];if(val)args.push(`${attr}=${val}`);else args.push(attr)}if(evaluateConditional(args,model)){
// render the true block and discard the elseif, elseunless, and else blocks
const replaceSibling=nextSibling;dom(replaceSibling).replaceWith(replaceSibling.childNodes||replaceSibling.children);nextSibling=el.nextSibling;const removeStack=[];while(nextSibling){const nextSiblingName=browser?nextSibling.nodeName?.toLowerCase():nextSibling.name;switch(nextSiblingName){case"elseif":case"elseunless":case"else":removeStack.push(nextSibling);nextSibling=nextSibling.nextSibling;break;case"if":case"unless":nextSibling=false;break;default:nextSibling=nextSibling.nextSibling}}for(const element of removeStack)dom(element).replaceWith("");nextSibling=false;parsedTags++}else{
// true block is false; find the next elseif, elseunless, or else tag to evaluate
const siblingToWipe=nextSibling;nextSibling=nextSibling.nextSibling;dom(siblingToWipe).replaceWith("")}break;case"elseunless":
// get conditions
args=[];if(browser)nextSibling.attribs=getAttribs(nextSibling);for(const attr in nextSibling.attribs){const val=nextSibling.attribs[attr];if(val)args.push(`${attr}=${val}`);else args.push(attr)}if(!evaluateConditional(args,model)){
// render the true block and discard the elseif, elseunless, and else blocks
const replaceSibling=nextSibling;dom(replaceSibling).replaceWith(replaceSibling.childNodes||replaceSibling.children);nextSibling=el.nextSibling;const removeStack=[];while(nextSibling){const nextSiblingName=browser?nextSibling.nodeName?.toLowerCase():nextSibling.name;switch(nextSiblingName){case"elseif":case"elseunless":case"else":removeStack.push(nextSibling);nextSibling=nextSibling.nextSibling;break;case"if":case"unless":nextSibling=false;break;default:nextSibling=nextSibling.nextSibling}}for(const element of removeStack)dom(element).replaceWith("");nextSibling=false;parsedTags++}else{
// true block is false; find the next elseif, elseunless, or else tag to evaluate
const siblingToWipe=nextSibling;nextSibling=nextSibling.nextSibling;dom(siblingToWipe).replaceWith("")}break;case"else":
// else is always true, so if we've gotten here, then there's nothing to evaluate and we've reached the end of the conditional blocks
dom(nextSibling).replaceWith(nextSibling.childNodes||nextSibling.children);nextSibling=false;parsedTags++;break;case"if":case"unless":
// if we encounter another fresh if statement or unless statement, then there's nothing left to evaluate and we've reached the end of this conditional's blocks
nextSibling=false;break;default:
// if we encounter any other element or a text node we assume there could still be more elseif, elseunless, or else tags ahead so we keep going
nextSibling=nextSibling.nextSibling}}dom(el).replaceWith("");// remove the original if statement once done with finding its siblings
}}}while(parsedTags);return dom}
// evaluates a single <if> or <unless> tag
function evaluateConditional(conditions,model){const conditionsLength=conditions.length;
// loop through conditions and reduce them to booleans
for(let i=0;i<conditionsLength;i++){const condition=conditions[i];if(typeof condition==="boolean")continue;// if the condition is already a boolean then we don't need to reduce it to a boolean to evaluate it
// reject conditions with invalid formatting
if(condition.startsWith("=")||condition.endsWith("=")){if(params.verbosity>1)console.warn('teddy encountered a conditional statement with "=" at the beginning or end of a condition.');return false}if(condition.includes(":")&&!condition.startsWith("not:")){if(params.verbosity>1)console.warn('teddy encountered a conditional statement with a "not:" that isn\'t at the beginning of a condition.');return false}
// deal with boolean logic
if(condition==="and")if(conditions[i-1]&&evaluateCondition(conditions[i+1],model)){
// if both sides of an and are true, then reduce all 3 condition blocks to true
conditions[i-1]=true;conditions[i]=true;conditions[i+1]=true}else{
// if either side of an and is false, then reduce all 3 condition blocks to false
conditions[i-1]=false;conditions[i]=false;conditions[i+1]=false}else if(condition==="or")if(conditions[i-1]||evaluateCondition(conditions[i+1],model))
// if either side of an or is true, then reduce all 3 condition blocks to true, as well as all condition blocks that precded this or
conditions.fill(true,0,i+2);else{
// if both sides of an or are false, then reduce all 3 condition blocks to false
conditions[i-1]=false;conditions[i]=false;conditions[i+1]=false}else if(condition==="xor")if(!!conditions[i-1]===!!evaluateCondition(conditions[i+1],model)){
// if both sides of an xor are equal to each other, then reduce all 3 condition blocks to false
conditions[i-1]=false;conditions[i]=false;conditions[i+1]=false}else{
// if the two sides of an xor are not equal to each other, then reduce all 3 condition blocks to true
conditions[i-1]=true;conditions[i]=true;conditions[i+1]=true}else conditions[i]=evaluateCondition(condition,model)}return conditions.every((item=>item===true))||false;// if any of the booleans are false, then return false. otherwise return true
}
// determines whether a single condition in a teddy conditional is true or false
function evaluateCondition(condition,model){let not;// stores whether the :not modifier is present
if(typeof condition==="string"&&condition.includes("=")){// it's an equality check condition
not=!!condition.startsWith("not:");// true if "not:" is present
if(not)condition=condition.slice(4);// remove the :not prefix
const parts=condition.split("=");// something="Some content"
const cond=parts[0];// something
delete parts[0];// remove the something=
const val=parts.join("");// "Some content" — the path.join method ensures the string gets rebuilt even if it contains another = character
const lookup=getOrSetObjectByDotNotation(model,cond);
// the == is necessary because teddy does type-insensitive equality checks
if(lookup==val)return!not;// eslint-disable-line
else return not;// false
}else{// it's a presence check
not=typeof condition==="string"?!!condition.startsWith("not:"):false;// true if "not:" is present
if(not)condition=condition.slice(4);// remove the :not prefix
const lookup=getOrSetObjectByDotNotation(model,condition);if(lookup){if(typeof lookup==="object"&&Object.keys(lookup).length===0)return not;// false; empty object or array
return!not;// true; var is present
}else return not;// false; var is not present
}}
// render one-line if attributes, e.g. <p if-something="value" true="class='class-applied-if-true'" false="class='class-applied-if-false'">hello</p>
function parseOneLineConditionals(dom,model){let parsedTags;do{parsedTags=0;const tags=dom("[true], [false]");if(tags.length>0)for(const el of tags){
// skip parsing this if it uses variables as part of its conditions; it will get caught in the next pass after parseVars runs
let defer=false;if(browser)el.attribs=getAttribs(el);for(const attr in el.attribs){const val=el.attribs[attr];if(val.startsWith("{")){defer=true;break}}if(defer){dom(el).attr("teddydeferredonelineconditional","true");continue}
// ensure this isn't the child of a loop or a no parse block
let foundBody=false;let next=false;let parent=el.parent||el.parentNode;while(!foundBody){let parentName;if(!parent)parentName="body";else parentName=parent.nodeName?.toLowerCase()||parent.name;if(parentName==="loop"||parentName==="noparse"||parentName==="noteddy"){next=true;break}else if(parentName==="body")foundBody=true;else parent=parent.parent||parent.parentNode}if(next)continue;
// get conditions
let ifTrue;let ifFalse;if(browser)el.attribs=getAttribs(el);const args=[];for(const origAttr in el.attribs){let attr=origAttr;let val=el.attribs[attr];if(attr.includes("-teddyduplicate"))attr=attr.split("-teddyduplicate")[0];// the condition is a duplicate, so remove the `-teddyduplicate1` from `conditionName-teddyduplicate1`, `conditionName-teddyduplicate2`, etc
if(val?.startsWith("{"))val=parseVars(val,model);if(attr.startsWith("if-")){const parts=attr.split("if-");if(val)args.push(`${parts[1]}=${val}`);else args.push(parts[1]);dom(el).removeAttr(origAttr)}else if(attr==="true"){ifTrue=val.replaceAll("&quot;",'"');// true="class='blah'"
dom(el).removeAttr(origAttr)}else if(attr==="false"){ifFalse=val.replaceAll("&quot;",'"');// false="class='blah'"
dom(el).removeAttr(origAttr)}else if(attr==="and"||attr==="or"||attr==="xor"){args.push(attr);dom(el).removeAttr(origAttr)}}
// evaluate conditional
if(evaluateConditional(args,model)){if(ifTrue){const parts=ifTrue.split("=");dom(el).attr(parts[0],parts[1]?parts[1].replace(/["']/g,""):"")}parsedTags++}else if(ifFalse){if(ifFalse){const parts=ifFalse.split("=");dom(el).attr(parts[0],parts[1]?parts[1].replace(/["']/g,""):"")}parsedTags++}}}while(parsedTags);return dom}
// render <loop> tags
function parseLoops(dom,model){let parsedTags;do{parsedTags=0;const tags=dom("loop");if(tags.length>0)for(const el of tags){
// get attributes
let loopThrough;let keyName;let valName;if(browser)el.attribs=getAttribs(el);for(const attr in el.attribs)if(attr==="through"){let attrVal=el.attribs[attr];if(attrVal.startsWith("{"))attrVal=parseVars(attrVal,model);loopThrough=getOrSetObjectByDotNotation(model,attrVal)}else if(attr==="key")keyName=el.attribs[attr];else if(attr==="val")valName=el.attribs[attr];
// reject the loop if it has invalid attributes
if(!loopThrough){if(params.verbosity>1)console.warn("teddy encountered a loop without a through attribute.");dom(el).replaceWith("");continue}if(!keyName&&!valName){if(params.verbosity>1)console.warn("teddy encountered a loop without a key or a val attribute.");dom(el).replaceWith("");continue}
// loop through model[loopThrough] and parse teddy tags within the loop's iteration against the local model
let newMarkup="";let loopContents=dom(el).html();if(loopThrough instanceof Set)loopThrough=[...loopThrough];// convert Sets to arrays
for(const key in loopThrough){const val=loopThrough[key];const localModel=Object.assign({},model);getOrSetObjectByDotNotation(localModel,keyName,key);getOrSetObjectByDotNotation(localModel,valName,val);const hasNoteddyLoopContents=loopContents.includes("</noteddy>");const hasNoparseLoopContents=loopContents.includes("</noparse>");const hasPreLoopContents=loopContents.includes("</pre>");const hasEscape=loopContents.includes("</escape>")||loopContents.includes("\x3c!--#");if(hasEscape)loopContents=parseEscapes(loopContents);if(hasNoteddyLoopContents||hasNoparseLoopContents||hasPreLoopContents){let localDom=(0,cheerio_slim__WEBPACK_IMPORTED_MODULE_2__.load)(loopContents,cheerioOptions);localDom=tagNoParseBlocks(localDom,localModel);loopContents=localDom.html()}const localMarkup=parseVars(loopContents,localModel)||"";const hasNoteddy=localMarkup.includes("</noteddy>");const hasNoparse=localMarkup.includes("</noparse>");const hasIf=localMarkup.includes("</if>");const hasUnless=localMarkup.includes("</unless>");const hasTrue=localMarkup.includes(" true=");const hasFalse=localMarkup.includes(" false=");const hasLoop=localMarkup.includes("</loop>");const hasInline=localMarkup.includes("</inline>");const hasSelected=localMarkup.includes(" selected-value=")||localMarkup.includes(" checked-value=");let localDom=(0,cheerio_slim__WEBPACK_IMPORTED_MODULE_2__.load)(localMarkup||"",cheerioOptions);if(hasNoteddy||hasNoparse)localDom=tagNoParseBlocks(localDom,localModel);if(hasIf||hasUnless)localDom=parseConditionals(localDom,localModel);if(hasTrue||hasFalse)localDom=parseOneLineConditionals(localDom,localModel);if(hasLoop)localDom=parseLoops(localDom,localModel);if(hasInline)localDom=parseInlines(localDom,localModel);if(hasSelected)localDom=parseSelectedAttributeValues(localDom,localModel);newMarkup+=localDom.html()}const newDom=(0,cheerio_slim__WEBPACK_IMPORTED_MODULE_2__.load)(newMarkup||"",cheerioOptions);dom(el).replaceWith(newDom.html());parsedTags++}}while(parsedTags);return dom}
// render <inline> tags
function parseInlines(dom,model){let parsedTags;do{parsedTags=0;const tags=dom("inline");if(tags.length>0)for(const el of tags){
// get attributes
let css;let js;if(browser)el.attribs=getAttribs(el);for(const attr in el.attribs)if(attr==="css")css=getOrSetObjectByDotNotation(model,el.attribs[attr]);else if(attr==="js")js=getOrSetObjectByDotNotation(model,el.attribs[attr]);
// reject if it has invalid attributes
if(!css&&!js){if(params.verbosity>1)console.warn("teddy encountered an <inline> element without a css or js attribute.");dom(el).replaceWith("");continue}let replaceWith="";if(css)replaceWith=`<style>${css}</style>`;else replaceWith=`<script>${js}<\/script>`;dom(el).replaceWith(replaceWith);parsedTags++}}while(parsedTags);return dom}
// render <escape> tags
function parseEscapes(templateString){return templateString.replace(/<escape>(.*?)<\/escape>/gs,((_,content)=>escapeEntities(content.trim())))}
// render `selected-value` and `checked-value` attributes
function parseSelectedAttributeValues(dom,model){let parsedTags;do{parsedTags=0;const tags=dom("select[selected-value], [checked-value]");if(tags.length>0)for(const el of tags){
// get attributes
if(browser)el.attribs=getAttribs(el);for(let attr in el.attribs){const origAttr=attr;if(attr.includes("-teddyduplicate"))attr=attr.split("-teddyduplicate")[0];if(attr==="selected-value"){const val=parseVars(el.attribs[origAttr],model)||el.attribs[origAttr];const children=dom(el).find("option[value]");for(const opt of children){if(browser)opt.attribs=getAttribs(opt);if(opt.attribs.value===val)dom(opt).attr("selected","selected")}dom(el).removeAttr(origAttr)}else if(attr==="checked-value"){const val=parseVars(el.attribs[origAttr],model)||el.attribs[origAttr];const children=dom(el).find('input[type="checkbox"][value], input[type="radio"][value]');for(const opt of children){if(browser)opt.attribs=getAttribs(opt);if(opt.attribs.value===val)dom(opt).attr("checked","checked")}dom(el).removeAttr(origAttr)}}parsedTags++}}while(parsedTags);return dom}
// render {variables}
function parseVars(templateString,model){let vars;try{vars=matchByDelimiter(templateString,"{","}")}catch(e){return templateString;// it will match {vars{withVarsInThem}} but if there are unbalanced brackets, just return the original text
}const varsLength=vars.length;for(let i=0;i<varsLength;i++){let match=vars[i];if(match==="")continue;// empty {}
if(!/^(\d+|[a-zA-Z_$][a-zA-Z0-9_$|{}.-]*(\.[a-zA-Z_$][a-zA-Z0-9_$|{}.-]*)*)$/.test(match)){if(params.verbosity>2)console.warn(`teddy.parseVars encountered a {variable} that could not be parsed: {${match}}`);continue;// skip invalid variables
}if(match.includes("{")){
// there's a variable inside the variable name
const originalMatch=match;match=parseVars(match,model);try{templateString=templateString.replace(new RegExp(`\${${originalMatch}}`,"i"),(()=>`\${${match}}`));templateString=templateString.replace(new RegExp(`{${originalMatch}}`,"i"),(()=>`{${match}}`))}catch(e){if(params.verbosity>2)console.warn(`teddy.parseVars encountered a {variable} that could not be parsed: {${originalMatch}}`)}}const lastSixChars=match.slice(-6);if(lastSixChars.includes("|p")){// no parse flag is set
const originalMatch=match;match=match.substring(0,match.length-(lastSixChars.split("|").length-1)*2);// remove last 2-n chars
let parsed=getOrSetObjectByDotNotation(model,match);if(!parsed&&!lastSixChars.includes("|d")&&(params.emptyVarBehavior==="hide"||lastSixChars.includes("|h")))parsed="";// display empty string instead of the variable text verbatim if this setting is set
if(typeof parsed==="string"&&parsed.startsWith("{")&&parsed.includes("|d"))parsed=parsed.replace("|d","");if(parsed||parsed===""){const id=model._noTeddyBlocks.push(parsed)-1;try{try{templateString=templateString.replace(new RegExp(`\${${originalMatch}}`.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d"),"i"),`<noteddy id="${id}"></noteddy>`);templateString=templateString.replace(new RegExp(`{${originalMatch}}`.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d"),"i"),`<noteddy id="${id}"></noteddy>`)}catch(e){if(params.verbosity>2)console.warn(`teddy.parseVars encountered a {variable} that could not be parsed: {${originalMatch}}`)}}catch(e){return templateString}}}else if(lastSixChars.includes("|s")){// no escape flag is set
const originalMatch=match;match=match.substring(0,match.length-(lastSixChars.split("|").length-1)*2);// remove last 2-n chars
let parsed=getOrSetObjectByDotNotation(model,match);let skipTemplateLiteralReplacement=false;if(!parsed&&!lastSixChars.includes("|d")&&(params.emptyVarBehavior==="hide"||lastSixChars.includes("|h")))parsed="";// display empty string instead of the variable text verbatim if this setting is set
else if(!parsed&&parsed!==""){skipTemplateLiteralReplacement=true;parsed=`{${originalMatch}}`}if(typeof parsed==="string"&&parsed.startsWith("{")&&parsed.includes("|d"))parsed=parsed.replace("|d","");try{if(!skipTemplateLiteralReplacement)templateString=templateString.replace(new RegExp(`\${${originalMatch}}`.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d"),"i"),(()=>parsed));templateString=templateString.replace(new RegExp(`{${originalMatch}}`.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d"),"i"),(()=>parsed))}catch(e){return templateString}}else{// no flags are set
let parsed=getOrSetObjectByDotNotation(model,match);let skipTemplateLiteralReplacement=false;if(!parsed&&!lastSixChars.includes("|d")&&(params.emptyVarBehavior==="hide"||lastSixChars.includes("|h")))parsed="";// display empty string instead of the variable text verbatim if this setting is set
else if(parsed||parsed==="")parsed=escapeEntities(parsed);else if(parsed===0)parsed="0";else{skipTemplateLiteralReplacement=true;parsed=`{${match}}`}if(typeof parsed==="string"&&parsed.startsWith("{")&&parsed.includes("|d"))parsed=parsed.replace("|d","");try{if(!skipTemplateLiteralReplacement)templateString=templateString.replace(new RegExp(`\${${match}}`.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d"),"i"),(()=>parsed));templateString=templateString.replace(new RegExp(`{${match}}`.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d"),"i"),(()=>parsed))}catch(e){return templateString}}}return templateString}
// once the template is fully rendered, find all cache elements that still exist and cache their contents
function defineNewCaches(dom,model){let parsedTags;do{parsedTags=0;const tags=dom("cache[defer]");if(tags.length>0)for(const el of tags){if(browser)el.attribs=getAttribs(el);const name=el.attribs.name;const key=el.attribs.key||"none";const maxAge=parseInt(el.attribs.maxAge||el.attribs.maxage)||0;const maxCaches=parseInt(el.attribs.maxCaches||el.attribs.maxcaches)||1e3;const timestamp=Date.now();const markup=dom(el).html();if(!caches[name])caches[name]={key,maxAge,maxCaches,entries:{}};caches[name].entries[el.attribs.key?getOrSetObjectByDotNotation(model,key):"none"]={lastAccessed:timestamp,created:timestamp,markup};
// invalidate oldest cache if we've reached max caches limit
if(Object.keys(caches[name].entries).length>maxCaches){const lowestKeyVal=Object.keys(caches[name].entries).reduce(((a,b)=>caches[name].entries[a].lastAccessed<caches[name].entries[b].lastAccessed?a:b));delete caches[name].entries[lowestKeyVal]}dom(el).replaceWith(markup);parsedTags++}}while(parsedTags);return dom}
// removes any remaining teddy tags from the dom before returning the parsed html to the user
function cleanupStrayTeddyTags(dom){let parsedTags;do{parsedTags=0;const tags=dom("[teddydeferredonelineconditional], pre[parse], include, arg, if, unless, elseif, elseunless, else, loop, cache");if(tags.length>0)for(const el of tags){const tagName=browser?el.nodeName?.toLowerCase():el.name;if(tagName==="include"||tagName==="arg"||tagName==="if"||tagName==="unless"||tagName==="elseif"||tagName==="elseunless"||tagName==="else"||tagName==="loop"||tagName==="cache")dom(el).remove();if(browser)el.attribs=getAttribs(el);for(const attr in el.attribs)if(attr==="true"||attr==="false"||attr==="parse"||attr==="teddydeferredonelineconditional"||attr.startsWith("if-"))dom(el).removeAttr(attr)}}while(parsedTags);return dom}
// escapes sensitive characters to prevent xss
const escapeHtmlEntities={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&#34;","'":"&#39;"};const entityKeys=Object.keys(escapeHtmlEntities);const ekl=entityKeys.length;function escapeEntities(value){let escapedEntity=false;let newValue="";let i;let j;if(typeof value==="object"){// cannot escape on this value
if(!value)return false;// it is falsey to return false
else if(Array.isArray(value))if(value.length===0)return false;// empty arrays are falsey
else return"[Array]";// print that it is an array with content in it, but do not print the contents
return"[Object]";// just print that it is an object, do not print the contents
}else if(value===void 0)return false;// cannot escape on this value; undefined is falsey
else if(typeof value==="boolean"||typeof value==="number")return value;// cannot escape on these values; if it's already a boolean or a number just return it
else
// loop through value to find html entities
for(i=0;i<value.length;i++){escapedEntity=false;
// loop through list of html entities to escape
for(j=0;j<ekl;j++)if(value[i]===entityKeys[j]){// alter value to show escaped html entities
newValue+=escapeHtmlEntities[entityKeys[j]];escapedEntity=true;break}if(!escapedEntity)newValue+=value[i]}return newValue}
// if an entity is double-encoded, this will fix that
function reverseDoubleEncodedEntities(str){return str.replace(/&amp;(#\d+;|#x[0-9A-Fa-f]+;|[A-Za-z]+;)/g,"&$1")}
// match strings by a custom delimiter
function matchByDelimiter(input,openDelimiter,closeDelimiter){const stack=[];const result=[];const openLength=openDelimiter.length;const closeLength=closeDelimiter.length;for(let i=0;i<input.length;i++)if(input.substring(i,i+openLength)===openDelimiter){stack.push(i+openLength);i+=openLength-1}else if(input.substring(i,i+closeLength)===closeDelimiter){const start=stack.pop();if(stack.length===0)result.push(input.substring(start,i));i+=closeLength-1}const individualSegments=[];const regex=/{!([^{}]*)!}/g;let match;for(const segment of result){while((match=regex.exec(segment))!==null)individualSegments.push(match[1]);individualSegments.push(segment)}return individualSegments}
// gets or sets an object by dot notation, e.g. thing.nestedThing.furtherNestedThing: two arguments gets, three arguments sets
function getOrSetObjectByDotNotation(obj,dotNotation,value){if(!obj)return false;if(!dotNotation||typeof dotNotation==="boolean"||typeof dotNotation==="number")return dotNotation;if(typeof dotNotation==="string")return getOrSetObjectByDotNotation(obj,dotNotation.split("."),value);else if(dotNotation.length===1&&value!==void 0){obj[dotNotation[0]]=value;return obj[dotNotation[0]]}else if(dotNotation.length===0)return obj;else if(dotNotation.length===1){if(obj)return caseInsensitiveLookup(obj,dotNotation[0]);return false}else return getOrSetObjectByDotNotation(caseInsensitiveLookup(obj,dotNotation[0]),dotNotation.slice(1),value);function caseInsensitiveLookup(obj,key){if(key==="length")return obj.length;const lowerCaseKey=key.toLowerCase();const normalizedObj=Object.keys(obj).reduce(((acc,k)=>{acc[k.toLowerCase()]=obj[k];return acc}),{});return normalizedObj[lowerCaseKey]}}
// cheerio polyfill
function getAttribs(element){const attributes=element.attributes;const attributesObject={};for(let i=0;i<attributes.length;i++){const attr=attributes[i];attributesObject[attr.name]=attr.value}return attributesObject}
// #endregion
// #region public methods
// set params to the defaults
function setDefaultParams(){params.verbosity=1;params.templateRoot="./";params.maxPasses=1e3;params.emptyVarBehavior="display";// or 'hide'
params.includeNotFoundBehavior="display";// or 'hide'
}
// mutator method to set verbosity param. takes human-readable string argument and converts it to an integer for more efficient checks against the setting
function setVerbosity(v){switch(v){case"none":case 0:v=0;break;case"verbose":case 2:v=2;break;case"debug":case"DEBUG":case 3:v=3;break;default:// concise
v=1}params.verbosity=v}
// mutator method to set template root param; must be a string
function setTemplateRoot(v){params.templateRoot=String(v)}
// mutator method to set max passes param: the number of times the parser can iterate over the template
function setMaxPasses(v){params.maxPasses=Number(v)}
// mutator method to set empty var behavior param: whether to display {variables} that don't resolve as text ('display') or as an empty string ('hide')
function setEmptyVarBehavior(v){if(v==="hide")params.emptyVarBehavior="hide";else params.emptyVarBehavior="display"}
// mutator method to set include tag not found param: whether to display an error when an <include> tag src can't be found
function setIncludeNotFoundBehavior(v){if(v==="hide")params.includeNotFoundBehavior="hide";else params.includeNotFoundBehavior="display"}
// access templates
function getTemplates(){return templates}
// takes in a template string and outputs a function which when given data will render out html
function compile(templateString){return function(model){return render(templateString,model)}}
// mutator method to cache template
function setTemplate(file,template){templates[file]=template}
// mutator method to clear template cache entirely
function clearTemplates(){templates={}}function setCache(params){if(!templateCaches[params.template])templateCaches[params.template]={};if(params.key)templateCaches[params.template][params.key]={maxAge:params.maxAge||params.maxage,maxCaches:params.maxCaches||params.maxcaches||1e3,entries:{}};else templateCaches[params.template].none={maxAge:params.maxAge||params.maxage,markup:null,created:null}}
// delete one or more cached templates
// 1 string argument deletes the whole cache at that name for template partial caches
// 2 arguments deletes just the value at that keyVal for template partial caches
// 1 object argument assumes we're clearing whole template level cache
function clearCache(name,keyVal){if(typeof name==="string")if(keyVal)delete caches[name].entries[keyVal];else delete caches[name];else if(typeof name==="object"){const params=name;if(params.key)delete templateCaches[params.template][params.key];else delete templateCaches[params.template]}else if(params.verbosity>0)console.error("teddy: invalid params passed to clearCache.")}
// parses a template
function render(template,model,callback){
// ensure template is a string
if(typeof template!=="string"){if(params.verbosity>1)console.warn("teddy.render attempted to render a template which is not a string.");if(typeof callback==="function")return callback(null,"");else return""}
// ensure model is an object
if(typeof model!=="object"){if(params.verbosity>1)console.warn("teddy.render was passed an invalid model.");model={};// allow the template to render if an invalid model is supplied, but it will have an empty model
}
// declare vars
let dom;let renderedTemplate;model._noTeddyBlocks=[];// will store code blocks exempt from teddy parsing
// express.js support
if(model.settings&&model.settings.views&&path__WEBPACK_IMPORTED_MODULE_1__)params.templateRoot=path__WEBPACK_IMPORTED_MODULE_1__.resolve(model.settings.views);
// remove templateRoot from template name if necessary
if(template.slice(params.templateRoot.length)===params.templateRoot)template=template.replace(params.templateRoot,"");
// whole template caching
const templateCache=templateCaches[template];let cacheKey=null;let cacheKeyModelVal=null;if(templateCache){const singletonCache=templateCache.none;if(singletonCache)
// check if the timestamp exceeds max age
if(!singletonCache.created)cacheKey="none";else if(!singletonCache.maxAge&&singletonCache.maxage)
// if no max age is set, then this cache doesn't expire
if(typeof callback==="function")return callback(null,singletonCache.markup);else return singletonCache.markup;else if(singletonCache.created+(singletonCache.maxAge||singletonCache.maxage)<Date.now())cacheKey="none";// if yes re-render the template and cache it again
else
// if no return the cached markup and skip the template render
if(typeof callback==="function")return callback(null,singletonCache.markup);else return singletonCache.markup;else
// loop through its keys
for(const key in templateCache){
// if there's a model value for that key name
cacheKeyModelVal=getOrSetObjectByDotNotation(model,key);if(cacheKeyModelVal){
// loop through its entries
const templateCacheAtThisKey=templateCache[key];for(const entryKey in templateCacheAtThisKey.entries)
// if any entry keys match the model value for that key name
if(entryKey===cacheKeyModelVal){
// check if the timestamp exceeds max age
const entry=templateCacheAtThisKey.entries[entryKey];if(!templateCacheAtThisKey.maxAge&&!templateCacheAtThisKey.maxage)
// if no max age is set, then this cache doesn't expire
if(typeof callback==="function")return callback(null,entry.markup);else return entry.markup;else if(entry.created+(templateCacheAtThisKey.maxAge||templateCacheAtThisKey.maxage)<Date.now()){
// if yes re-render the template and cache it again
cacheKey=key;break}else
// if no return the cached markup and skip the template render
if(typeof callback==="function")return callback(null,entry.markup);else return entry.markup}
// this is a new model value so it needs a new entry
cacheKey=key;break}}}
// start the render
renderedTemplate=loadTemplate(template);
// replace duplicate attributes with temporary unique names before loading into cheerio
if(!browser)renderedTemplate=renderedTemplate.replace(/<([a-zA-Z][a-zA-Z0-9-]*)([^>]*)>/g,((match,tagName,attributes)=>{const attrRegex=/([a-zA-Z0-9-:._]+)(?:=(["'])(.*?)\2|([^>\s]+))?/g;const attrMap=new Map;let count=1;const processedAttributes=attributes.replace(attrRegex,((attrMatch,attrName,quote,attrValue)=>{if(attrMap.has(attrName)){const newAttrName=`${attrName}-teddyduplicate${count++}`;return attrMatch.replace(attrName,newAttrName)}else{attrMap.set(attrName,true);return attrMatch}}));return`<${tagName}${processedAttributes}>`}));const hasEscape=renderedTemplate.includes("</escape>")||renderedTemplate.includes("\x3c!--#");if(hasEscape)renderedTemplate=parseEscapes(renderedTemplate);dom=(0,cheerio_slim__WEBPACK_IMPORTED_MODULE_2__.load)(renderedTemplate||"",cheerioOptions);let oldTemplate;let passes=0;let parseDynamicIncludes=false;do{passes++;if(passes>params.maxPasses){if(params.verbosity>0)console.error(`teddy could not finish rendering the template because the max number of passes over the template (${params.maxPasses}) was exceeded; there may be an infinite loop in your template logic.`);break}const hasCache=renderedTemplate.includes("</cache>");const hasNoteddy=renderedTemplate.includes("</noteddy>");const hasNoparse=renderedTemplate.includes("</noparse>");const hasPre=renderedTemplate.includes("</pre>");const hasIf=renderedTemplate.includes("</if>");const hasUnless=renderedTemplate.includes("</unless>");const hasTrue=renderedTemplate.includes(" true=");const hasFalse=renderedTemplate.includes(" false=");const hasInclude=renderedTemplate.includes("</include>");const hasLoop=renderedTemplate.includes("</loop>");const hasInline=renderedTemplate.includes("</inline>");const hasSelected=renderedTemplate.includes(" selected-value=")||renderedTemplate.includes(" checked-value=");oldTemplate=renderedTemplate||"";if(passes>1){dom=(0,cheerio_slim__WEBPACK_IMPORTED_MODULE_2__.load)(renderedTemplate||"",cheerioOptions);if(parseDynamicIncludes)dom=parseIncludes(dom,model,true)}if(hasCache)dom=replaceCacheElements(dom,model);if(hasNoteddy||hasNoparse||hasPre)dom=tagNoParseBlocks(dom,model);if(hasIf||hasUnless)dom=parseConditionals(dom,model);if(hasTrue||hasFalse)dom=parseOneLineConditionals(dom,model);if(hasInclude)dom=parseIncludes(dom,model);if(hasLoop)dom=parseLoops(dom,model);if(hasInline)dom=parseInlines(dom,model);if(hasSelected)dom=parseSelectedAttributeValues(dom,model);const cachesStillPresent=renderedTemplate.includes("</cache>");renderedTemplate=dom.html();renderedTemplate=parseVars(renderedTemplate,model);if(parseDynamicIncludes){renderedTemplate=removeTeddyComments(renderedTemplate);parseDynamicIncludes=false}if(renderedTemplate.includes('teddydeferreddynamicinclude="true"')){oldTemplate="";// reset old template to force another pass
parseDynamicIncludes=true}if(oldTemplate===renderedTemplate&&cachesStillPresent){dom=(0,cheerio_slim__WEBPACK_IMPORTED_MODULE_2__.load)(renderedTemplate||"",cheerioOptions);dom=defineNewCaches(dom,model);renderedTemplate=dom.html()}}while(oldTemplate!==renderedTemplate);
// remove stray teddy tags if any exist
if(renderedTemplate.includes('teddydeferredonelineconditional="true"')||renderedTemplate.includes("</include>")||renderedTemplate.includes("</arg>")||renderedTemplate.includes("</if>")||renderedTemplate.includes("</unless>")||renderedTemplate.includes("</elseif>")||renderedTemplate.includes("</elseunless>")||renderedTemplate.includes("</else>")||renderedTemplate.includes("</loop>")||renderedTemplate.includes("</cache>")||renderedTemplate.includes("</pre>")){dom=(0,cheerio_slim__WEBPACK_IMPORTED_MODULE_2__.load)(renderedTemplate||"",cheerioOptions);dom=cleanupStrayTeddyTags(dom);renderedTemplate=dom.html()}
// replace <noteddy> blocks with the hidden code
for(const blockId in model._noTeddyBlocks){renderedTemplate=renderedTemplate.replace(`<noteddy id="${blockId}"></noteddy>`,(()=>model._noTeddyBlocks[blockId]));renderedTemplate=renderedTemplate.replace(`<noteddy id="${blockId}" pre="true"></noteddy>`,(()=>model._noTeddyBlocks[blockId]))}if(browser){
// fix double-encoding html entity bug in client-side mode
renderedTemplate=reverseDoubleEncodedEntities(renderedTemplate);
// now that we're done with the render, reset data-teddy-defer-attr-src and data-teddy-defer-attr-href to native attributes
renderedTemplate=renderedTemplate.replaceAll("data-teddy-defer-attr-src","src").replaceAll("data-teddy-defer-attr-href","href")}
// cache the template
if(cacheKey==="none"){templateCaches[template].none.markup=renderedTemplate;templateCaches[template].none.created=Date.now()}else if(cacheKey){if(!templateCaches[template][cacheKey].entries[cacheKeyModelVal])templateCaches[template][cacheKey].entries[cacheKeyModelVal]={};templateCaches[template][cacheKey].entries[cacheKeyModelVal].markup=renderedTemplate;templateCaches[template][cacheKey].entries[cacheKeyModelVal].created=Date.now();
// invalidate oldest cache if we've reached max caches limit
if(Object.keys(templateCaches[template][cacheKey].entries).length>templateCaches[template][cacheKey].maxCaches){const lowestKeyVal=Object.keys(templateCaches[template][cacheKey].entries).reduce(((a,b)=>templateCaches[template][cacheKey].entries[a].created<templateCaches[template][cacheKey].entries[b].created?a:b));delete templateCaches[template][cacheKey].entries[lowestKeyVal]}}if(typeof callback==="function")return callback(null,renderedTemplate);else return renderedTemplate}
// #endregion
/* harmony default export */const __WEBPACK_DEFAULT_EXPORT__={params,caches,templateCaches,
// functions
compile,setDefaultParams,setVerbosity,setTemplateRoot,setMaxPasses,setEmptyVarBehavior,setIncludeNotFoundBehavior,getTemplates,setTemplate,clearTemplates,setCache,clearCache,render,__express:render}})();var __webpack_exports__default=__webpack_exports__["default"];export{__webpack_exports__default as default};
//# sourceMappingURL=teddy.mjs.map