[6a3a178] | 1 | {"version":3,"file":"critters.umd.js","sources":["../node_modules/domelementtype/index.js","../node_modules/dom-serializer/node_modules/domelementtype/lib/index.js","../node_modules/entities/lib/decode_codepoint.js","../node_modules/entities/lib/decode.js","../node_modules/entities/lib/encode.js","../node_modules/entities/lib/index.js","../node_modules/dom-serializer/index.js","../node_modules/css-select/node_modules/domutils/lib/stringify.js","../node_modules/css-select/node_modules/domutils/lib/traversal.js","../node_modules/css-select/node_modules/domutils/lib/manipulation.js","../node_modules/css-select/node_modules/domutils/lib/querying.js","../node_modules/css-select/node_modules/domutils/lib/legacy.js","../node_modules/css-select/node_modules/domutils/lib/helpers.js","../node_modules/css-select/node_modules/domutils/index.js","../node_modules/nth-check/parse.js","../node_modules/boolbase/index.js","../node_modules/nth-check/compile.js","../node_modules/nth-check/index.js","../node_modules/css-select/lib/attributes.js","../node_modules/css-select/lib/pseudos.js","../node_modules/css-what/index.js","../node_modules/css-select/lib/general.js","../node_modules/css-select/lib/sort.js","../node_modules/css-select/lib/compile.js","../node_modules/css-select/index.js","../src/dom.js","../src/css.js","../src/util.js","../src/index.js"],"sourcesContent":["//Types of elements found in the DOM\nmodule.exports = {\n\tText: \"text\", //Text\n\tDirective: \"directive\", //<? ... ?>\n\tComment: \"comment\", //<!-- ... -->\n\tScript: \"script\", //<script> tags\n\tStyle: \"style\", //<style> tags\n\tTag: \"tag\", //Any tag\n\tCDATA: \"cdata\", //<![CDATA[ ... ]]>\n\tDoctype: \"doctype\",\n\n\tisTag: function(elem){\n\t\treturn elem.type === \"tag\" || elem.type === \"script\" || elem.type === \"style\";\n\t}\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Tests whether an element is a tag or not.\n *\n * @param elem Element to test\n */\nfunction isTag(elem) {\n return (elem.type === \"tag\" /* Tag */ ||\n elem.type === \"script\" /* Script */ ||\n elem.type === \"style\" /* Style */);\n}\nexports.isTag = isTag;\n// Exports for backwards compatibility\nexports.Text = \"text\" /* Text */; //Text\nexports.Directive = \"directive\" /* Directive */; //<? ... ?>\nexports.Comment = \"comment\" /* Comment */; //<!-- ... -->\nexports.Script = \"script\" /* Script */; //<script> tags\nexports.Style = \"style\" /* Style */; //<style> tags\nexports.Tag = \"tag\" /* Tag */; //Any tag\nexports.CDATA = \"cdata\" /* CDATA */; //<![CDATA[ ... ]]>\nexports.Doctype = \"doctype\" /* Doctype */;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar decode_json_1 = __importDefault(require(\"./maps/decode.json\"));\n// modified version of https://github.com/mathiasbynens/he/blob/master/src/he.js#L94-L119\nfunction decodeCodePoint(codePoint) {\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return \"\\uFFFD\";\n }\n if (codePoint in decode_json_1.default) {\n codePoint = decode_json_1.default[codePoint];\n }\n var output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n output += String.fromCharCode(codePoint);\n return output;\n}\nexports.default = decodeCodePoint;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodeHTML = exports.decodeHTMLStrict = exports.decodeXML = void 0;\nvar entities_json_1 = __importDefault(require(\"./maps/entities.json\"));\nvar legacy_json_1 = __importDefault(require(\"./maps/legacy.json\"));\nvar xml_json_1 = __importDefault(require(\"./maps/xml.json\"));\nvar decode_codepoint_1 = __importDefault(require(\"./decode_codepoint\"));\nexports.decodeXML = getStrictDecoder(xml_json_1.default);\nexports.decodeHTMLStrict = getStrictDecoder(entities_json_1.default);\nfunction getStrictDecoder(map) {\n var keys = Object.keys(map).join(\"|\");\n var replace = getReplacer(map);\n keys += \"|#[xX][\\\\da-fA-F]+|#\\\\d+\";\n var re = new RegExp(\"&(?:\" + keys + \");\", \"g\");\n return function (str) { return String(str).replace(re, replace); };\n}\nvar sorter = function (a, b) { return (a < b ? 1 : -1); };\nexports.decodeHTML = (function () {\n var legacy = Object.keys(legacy_json_1.default).sort(sorter);\n var keys = Object.keys(entities_json_1.default).sort(sorter);\n for (var i = 0, j = 0; i < keys.length; i++) {\n if (legacy[j] === keys[i]) {\n keys[i] += \";?\";\n j++;\n }\n else {\n keys[i] += \";\";\n }\n }\n var re = new RegExp(\"&(?:\" + keys.join(\"|\") + \"|#[xX][\\\\da-fA-F]+;?|#\\\\d+;?)\", \"g\");\n var replace = getReplacer(entities_json_1.default);\n function replacer(str) {\n if (str.substr(-1) !== \";\")\n str += \";\";\n return replace(str);\n }\n //TODO consider creating a merged map\n return function (str) { return String(str).replace(re, replacer); };\n})();\nfunction getReplacer(map) {\n return function replace(str) {\n if (str.charAt(1) === \"#\") {\n var secondChar = str.charAt(2);\n if (secondChar === \"X\" || secondChar === \"x\") {\n return decode_codepoint_1.default(parseInt(str.substr(3), 16));\n }\n return decode_codepoint_1.default(parseInt(str.substr(2), 10));\n }\n return map[str.slice(1, -1)];\n };\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.escape = exports.encodeHTML = exports.encodeXML = void 0;\nvar xml_json_1 = __importDefault(require(\"./maps/xml.json\"));\nvar inverseXML = getInverseObj(xml_json_1.default);\nvar xmlReplacer = getInverseReplacer(inverseXML);\nexports.encodeXML = getInverse(inverseXML, xmlReplacer);\nvar entities_json_1 = __importDefault(require(\"./maps/entities.json\"));\nvar inverseHTML = getInverseObj(entities_json_1.default);\nvar htmlReplacer = getInverseReplacer(inverseHTML);\nexports.encodeHTML = getInverse(inverseHTML, htmlReplacer);\nfunction getInverseObj(obj) {\n return Object.keys(obj)\n .sort()\n .reduce(function (inverse, name) {\n inverse[obj[name]] = \"&\" + name + \";\";\n return inverse;\n }, {});\n}\nfunction getInverseReplacer(inverse) {\n var single = [];\n var multiple = [];\n for (var _i = 0, _a = Object.keys(inverse); _i < _a.length; _i++) {\n var k = _a[_i];\n if (k.length === 1) {\n // Add value to single array\n single.push(\"\\\\\" + k);\n }\n else {\n // Add value to multiple array\n multiple.push(k);\n }\n }\n // Add ranges to single characters.\n single.sort();\n for (var start = 0; start < single.length - 1; start++) {\n // Find the end of a run of characters\n var end = start;\n while (end < single.length - 1 &&\n single[end].charCodeAt(1) + 1 === single[end + 1].charCodeAt(1)) {\n end += 1;\n }\n var count = 1 + end - start;\n // We want to replace at least three characters\n if (count < 3)\n continue;\n single.splice(start, count, single[start] + \"-\" + single[end]);\n }\n multiple.unshift(\"[\" + single.join(\"\") + \"]\");\n return new RegExp(multiple.join(\"|\"), \"g\");\n}\nvar reNonASCII = /(?:[\\x80-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])/g;\nfunction singleCharReplacer(c) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return \"&#x\" + c.codePointAt(0).toString(16).toUpperCase() + \";\";\n}\nfunction getInverse(inverse, re) {\n return function (data) {\n return data\n .replace(re, function (name) { return inverse[name]; })\n .replace(reNonASCII, singleCharReplacer);\n };\n}\nvar reXmlChars = getInverseReplacer(inverseXML);\nfunction escape(data) {\n return data\n .replace(reXmlChars, singleCharReplacer)\n .replace(reNonASCII, singleCharReplacer);\n}\nexports.escape = escape;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.encode = exports.decodeStrict = exports.decode = void 0;\nvar decode_1 = require(\"./decode\");\nvar encode_1 = require(\"./encode\");\n/**\n * Decodes a string with entities.\n *\n * @param data String to decode.\n * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.\n */\nfunction decode(data, level) {\n return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTML)(data);\n}\nexports.decode = decode;\n/**\n * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n *\n * @param data String to decode.\n * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.\n */\nfunction decodeStrict(data, level) {\n return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTMLStrict)(data);\n}\nexports.decodeStrict = decodeStrict;\n/**\n * Encodes a string with entities.\n *\n * @param data String to encode.\n * @param level Optional level to encode at. 0 = XML, 1 = HTML. Default is 0.\n */\nfunction encode(data, level) {\n return (!level || level <= 0 ? encode_1.encodeXML : encode_1.encodeHTML)(data);\n}\nexports.encode = encode;\nvar encode_2 = require(\"./encode\");\nObject.defineProperty(exports, \"encodeXML\", { enumerable: true, get: function () { return encode_2.encodeXML; } });\nObject.defineProperty(exports, \"encodeHTML\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nObject.defineProperty(exports, \"escape\", { enumerable: true, get: function () { return encode_2.escape; } });\n// Legacy aliases\nObject.defineProperty(exports, \"encodeHTML4\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nObject.defineProperty(exports, \"encodeHTML5\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nvar decode_2 = require(\"./decode\");\nObject.defineProperty(exports, \"decodeXML\", { enumerable: true, get: function () { return decode_2.decodeXML; } });\nObject.defineProperty(exports, \"decodeHTML\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTMLStrict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\n// Legacy aliases\nObject.defineProperty(exports, \"decodeHTML4\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTML5\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTML4Strict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\nObject.defineProperty(exports, \"decodeHTML5Strict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\nObject.defineProperty(exports, \"decodeXMLStrict\", { enumerable: true, get: function () { return decode_2.decodeXML; } });\n","/*\n Module dependencies\n*/\nvar ElementType = require('domelementtype');\nvar entities = require('entities');\n\n/* mixed-case SVG and MathML tags & attributes\n recognized by the HTML parser, see\n https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inforeign\n*/\nvar foreignNames = require('./foreignNames.json');\nforeignNames.elementNames.__proto__ = null; /* use as a simple dictionary */\nforeignNames.attributeNames.__proto__ = null;\n\nvar unencodedElements = {\n __proto__: null,\n style: true,\n script: true,\n xmp: true,\n iframe: true,\n noembed: true,\n noframes: true,\n plaintext: true,\n noscript: true\n};\n\n/*\n Format attributes\n*/\nfunction formatAttrs(attributes, opts) {\n if (!attributes) return;\n\n var output = '';\n var value;\n\n // Loop through the attributes\n for (var key in attributes) {\n value = attributes[key];\n if (output) {\n output += ' ';\n }\n\n if (opts.xmlMode === 'foreign') {\n /* fix up mixed-case attribute names */\n key = foreignNames.attributeNames[key] || key;\n }\n output += key;\n if ((value !== null && value !== '') || opts.xmlMode) {\n output +=\n '=\"' +\n (opts.decodeEntities\n ? entities.encodeXML(value)\n : value.replace(/\\\"/g, '"')) +\n '\"';\n }\n }\n\n return output;\n}\n\n/*\n Self-enclosing tags (stolen from node-htmlparser)\n*/\nvar singleTag = {\n __proto__: null,\n area: true,\n base: true,\n basefont: true,\n br: true,\n col: true,\n command: true,\n embed: true,\n frame: true,\n hr: true,\n img: true,\n input: true,\n isindex: true,\n keygen: true,\n link: true,\n meta: true,\n param: true,\n source: true,\n track: true,\n wbr: true\n};\n\nvar render = (module.exports = function(dom, opts) {\n if (!Array.isArray(dom) && !dom.cheerio) dom = [dom];\n opts = opts || {};\n\n var output = '';\n\n for (var i = 0; i < dom.length; i++) {\n var elem = dom[i];\n\n if (elem.type === 'root') output += render(elem.children, opts);\n else if (ElementType.isTag(elem)) output += renderTag(elem, opts);\n else if (elem.type === ElementType.Directive)\n output += renderDirective(elem);\n else if (elem.type === ElementType.Comment) output += renderComment(elem);\n else if (elem.type === ElementType.CDATA) output += renderCdata(elem);\n else output += renderText(elem, opts);\n }\n\n return output;\n});\n\nvar foreignModeIntegrationPoints = [\n 'mi',\n 'mo',\n 'mn',\n 'ms',\n 'mtext',\n 'annotation-xml',\n 'foreignObject',\n 'desc',\n 'title'\n];\n\nfunction renderTag(elem, opts) {\n // Handle SVG / MathML in HTML\n if (opts.xmlMode === 'foreign') {\n /* fix up mixed-case element names */\n elem.name = foreignNames.elementNames[elem.name] || elem.name;\n /* exit foreign mode at integration points */\n if (\n elem.parent &&\n foreignModeIntegrationPoints.indexOf(elem.parent.name) >= 0\n )\n opts = Object.assign({}, opts, { xmlMode: false });\n }\n if (!opts.xmlMode && ['svg', 'math'].indexOf(elem.name) >= 0) {\n opts = Object.assign({}, opts, { xmlMode: 'foreign' });\n }\n\n var tag = '<' + elem.name;\n var attribs = formatAttrs(elem.attribs, opts);\n\n if (attribs) {\n tag += ' ' + attribs;\n }\n\n if (opts.xmlMode && (!elem.children || elem.children.length === 0)) {\n tag += '/>';\n } else {\n tag += '>';\n if (elem.children) {\n tag += render(elem.children, opts);\n }\n\n if (!singleTag[elem.name] || opts.xmlMode) {\n tag += '</' + elem.name + '>';\n }\n }\n\n return tag;\n}\n\nfunction renderDirective(elem) {\n return '<' + elem.data + '>';\n}\n\nfunction renderText(elem, opts) {\n var data = elem.data || '';\n\n // if entities weren't decoded, no need to encode them back\n if (\n opts.decodeEntities &&\n !(elem.parent && elem.parent.name in unencodedElements)\n ) {\n data = entities.encodeXML(data);\n }\n\n return data;\n}\n\nfunction renderCdata(elem) {\n return '<![CDATA[' + elem.children[0].data + ']]>';\n}\n\nfunction renderComment(elem) {\n return '<!--' + elem.data + '-->';\n}\n","var ElementType = require(\"domelementtype\"),\n getOuterHTML = require(\"dom-serializer\"),\n isTag = ElementType.isTag;\n\nmodule.exports = {\n\tgetInnerHTML: getInnerHTML,\n\tgetOuterHTML: getOuterHTML,\n\tgetText: getText\n};\n\nfunction getInnerHTML(elem, opts){\n\treturn elem.children ? elem.children.map(function(elem){\n\t\treturn getOuterHTML(elem, opts);\n\t}).join(\"\") : \"\";\n}\n\nfunction getText(elem){\n\tif(Array.isArray(elem)) return elem.map(getText).join(\"\");\n\tif(isTag(elem) || elem.type === ElementType.CDATA) return getText(elem.children);\n\tif(elem.type === ElementType.Text) return elem.data;\n\treturn \"\";\n}\n","var getChildren = exports.getChildren = function(elem){\n\treturn elem.children;\n};\n\nvar getParent = exports.getParent = function(elem){\n\treturn elem.parent;\n};\n\nexports.getSiblings = function(elem){\n\tvar parent = getParent(elem);\n\treturn parent ? getChildren(parent) : [elem];\n};\n\nexports.getAttributeValue = function(elem, name){\n\treturn elem.attribs && elem.attribs[name];\n};\n\nexports.hasAttrib = function(elem, name){\n\treturn !!elem.attribs && hasOwnProperty.call(elem.attribs, name);\n};\n\nexports.getName = function(elem){\n\treturn elem.name;\n};\n","exports.removeElement = function(elem){\n\tif(elem.prev) elem.prev.next = elem.next;\n\tif(elem.next) elem.next.prev = elem.prev;\n\n\tif(elem.parent){\n\t\tvar childs = elem.parent.children;\n\t\tchilds.splice(childs.lastIndexOf(elem), 1);\n\t}\n};\n\nexports.replaceElement = function(elem, replacement){\n\tvar prev = replacement.prev = elem.prev;\n\tif(prev){\n\t\tprev.next = replacement;\n\t}\n\n\tvar next = replacement.next = elem.next;\n\tif(next){\n\t\tnext.prev = replacement;\n\t}\n\n\tvar parent = replacement.parent = elem.parent;\n\tif(parent){\n\t\tvar childs = parent.children;\n\t\tchilds[childs.lastIndexOf(elem)] = replacement;\n\t}\n};\n\nexports.appendChild = function(elem, child){\n\tchild.parent = elem;\n\n\tif(elem.children.push(child) !== 1){\n\t\tvar sibling = elem.children[elem.children.length - 2];\n\t\tsibling.next = child;\n\t\tchild.prev = sibling;\n\t\tchild.next = null;\n\t}\n};\n\nexports.append = function(elem, next){\n\tvar parent = elem.parent,\n\t\tcurrNext = elem.next;\n\n\tnext.next = currNext;\n\tnext.prev = elem;\n\telem.next = next;\n\tnext.parent = parent;\n\n\tif(currNext){\n\t\tcurrNext.prev = next;\n\t\tif(parent){\n\t\t\tvar childs = parent.children;\n\t\t\tchilds.splice(childs.lastIndexOf(currNext), 0, next);\n\t\t}\n\t} else if(parent){\n\t\tparent.children.push(next);\n\t}\n};\n\nexports.prepend = function(elem, prev){\n\tvar parent = elem.parent;\n\tif(parent){\n\t\tvar childs = parent.children;\n\t\tchilds.splice(childs.lastIndexOf(elem), 0, prev);\n\t}\n\n\tif(elem.prev){\n\t\telem.prev.next = prev;\n\t}\n\t\n\tprev.parent = parent;\n\tprev.prev = elem.prev;\n\tprev.next = elem;\n\telem.prev = prev;\n};\n\n\n","var isTag = require(\"domelementtype\").isTag;\n\nmodule.exports = {\n\tfilter: filter,\n\tfind: find,\n\tfindOneChild: findOneChild,\n\tfindOne: findOne,\n\texistsOne: existsOne,\n\tfindAll: findAll\n};\n\nfunction filter(test, element, recurse, limit){\n\tif(!Array.isArray(element)) element = [element];\n\n\tif(typeof limit !== \"number\" || !isFinite(limit)){\n\t\tlimit = Infinity;\n\t}\n\treturn find(test, element, recurse !== false, limit);\n}\n\nfunction find(test, elems, recurse, limit){\n\tvar result = [], childs;\n\n\tfor(var i = 0, j = elems.length; i < j; i++){\n\t\tif(test(elems[i])){\n\t\t\tresult.push(elems[i]);\n\t\t\tif(--limit <= 0) break;\n\t\t}\n\n\t\tchilds = elems[i].children;\n\t\tif(recurse && childs && childs.length > 0){\n\t\t\tchilds = find(test, childs, recurse, limit);\n\t\t\tresult = result.concat(childs);\n\t\t\tlimit -= childs.length;\n\t\t\tif(limit <= 0) break;\n\t\t}\n\t}\n\n\treturn result;\n}\n\nfunction findOneChild(test, elems){\n\tfor(var i = 0, l = elems.length; i < l; i++){\n\t\tif(test(elems[i])) return elems[i];\n\t}\n\n\treturn null;\n}\n\nfunction findOne(test, elems){\n\tvar elem = null;\n\n\tfor(var i = 0, l = elems.length; i < l && !elem; i++){\n\t\tif(!isTag(elems[i])){\n\t\t\tcontinue;\n\t\t} else if(test(elems[i])){\n\t\t\telem = elems[i];\n\t\t} else if(elems[i].children.length > 0){\n\t\t\telem = findOne(test, elems[i].children);\n\t\t}\n\t}\n\n\treturn elem;\n}\n\nfunction existsOne(test, elems){\n\tfor(var i = 0, l = elems.length; i < l; i++){\n\t\tif(\n\t\t\tisTag(elems[i]) && (\n\t\t\t\ttest(elems[i]) || (\n\t\t\t\t\telems[i].children.length > 0 &&\n\t\t\t\t\texistsOne(test, elems[i].children)\n\t\t\t\t)\n\t\t\t)\n\t\t){\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\nfunction findAll(test, elems){\n\tvar result = [];\n\tfor(var i = 0, j = elems.length; i < j; i++){\n\t\tif(!isTag(elems[i])) continue;\n\t\tif(test(elems[i])) result.push(elems[i]);\n\n\t\tif(elems[i].children.length > 0){\n\t\t\tresult = result.concat(findAll(test, elems[i].children));\n\t\t}\n\t}\n\treturn result;\n}\n","var ElementType = require(\"domelementtype\");\nvar isTag = exports.isTag = ElementType.isTag;\n\nexports.testElement = function(options, element){\n\tfor(var key in options){\n\t\tif(!options.hasOwnProperty(key));\n\t\telse if(key === \"tag_name\"){\n\t\t\tif(!isTag(element) || !options.tag_name(element.name)){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else if(key === \"tag_type\"){\n\t\t\tif(!options.tag_type(element.type)) return false;\n\t\t} else if(key === \"tag_contains\"){\n\t\t\tif(isTag(element) || !options.tag_contains(element.data)){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else if(!element.attribs || !options[key](element.attribs[key])){\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n};\n\nvar Checks = {\n\ttag_name: function(name){\n\t\tif(typeof name === \"function\"){\n\t\t\treturn function(elem){ return isTag(elem) && name(elem.name); };\n\t\t} else if(name === \"*\"){\n\t\t\treturn isTag;\n\t\t} else {\n\t\t\treturn function(elem){ return isTag(elem) && elem.name === name; };\n\t\t}\n\t},\n\ttag_type: function(type){\n\t\tif(typeof type === \"function\"){\n\t\t\treturn function(elem){ return type(elem.type); };\n\t\t} else {\n\t\t\treturn function(elem){ return elem.type === type; };\n\t\t}\n\t},\n\ttag_contains: function(data){\n\t\tif(typeof data === \"function\"){\n\t\t\treturn function(elem){ return !isTag(elem) && data(elem.data); };\n\t\t} else {\n\t\t\treturn function(elem){ return !isTag(elem) && elem.data === data; };\n\t\t}\n\t}\n};\n\nfunction getAttribCheck(attrib, value){\n\tif(typeof value === \"function\"){\n\t\treturn function(elem){ return elem.attribs && value(elem.attribs[attrib]); };\n\t} else {\n\t\treturn function(elem){ return elem.attribs && elem.attribs[attrib] === value; };\n\t}\n}\n\nfunction combineFuncs(a, b){\n\treturn function(elem){\n\t\treturn a(elem) || b(elem);\n\t};\n}\n\nexports.getElements = function(options, element, recurse, limit){\n\tvar funcs = Object.keys(options).map(function(key){\n\t\tvar value = options[key];\n\t\treturn key in Checks ? Checks[key](value) : getAttribCheck(key, value);\n\t});\n\n\treturn funcs.length === 0 ? [] : this.filter(\n\t\tfuncs.reduce(combineFuncs),\n\t\telement, recurse, limit\n\t);\n};\n\nexports.getElementById = function(id, element, recurse){\n\tif(!Array.isArray(element)) element = [element];\n\treturn this.findOne(getAttribCheck(\"id\", id), element, recurse !== false);\n};\n\nexports.getElementsByTagName = function(name, element, recurse, limit){\n\treturn this.filter(Checks.tag_name(name), element, recurse, limit);\n};\n\nexports.getElementsByTagType = function(type, element, recurse, limit){\n\treturn this.filter(Checks.tag_type(type), element, recurse, limit);\n};\n","// removeSubsets\n// Given an array of nodes, remove any member that is contained by another.\nexports.removeSubsets = function(nodes) {\n\tvar idx = nodes.length, node, ancestor, replace;\n\n\t// Check if each node (or one of its ancestors) is already contained in the\n\t// array.\n\twhile (--idx > -1) {\n\t\tnode = ancestor = nodes[idx];\n\n\t\t// Temporarily remove the node under consideration\n\t\tnodes[idx] = null;\n\t\treplace = true;\n\n\t\twhile (ancestor) {\n\t\t\tif (nodes.indexOf(ancestor) > -1) {\n\t\t\t\treplace = false;\n\t\t\t\tnodes.splice(idx, 1);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tancestor = ancestor.parent;\n\t\t}\n\n\t\t// If the node has been found to be unique, re-insert it.\n\t\tif (replace) {\n\t\t\tnodes[idx] = node;\n\t\t}\n\t}\n\n\treturn nodes;\n};\n\n// Source: http://dom.spec.whatwg.org/#dom-node-comparedocumentposition\nvar POSITION = {\n\tDISCONNECTED: 1,\n\tPRECEDING: 2,\n\tFOLLOWING: 4,\n\tCONTAINS: 8,\n\tCONTAINED_BY: 16\n};\n\n// Compare the position of one node against another node in any other document.\n// The return value is a bitmask with the following values:\n//\n// document order:\n// > There is an ordering, document order, defined on all the nodes in the\n// > document corresponding to the order in which the first character of the\n// > XML representation of each node occurs in the XML representation of the\n// > document after expansion of general entities. Thus, the document element\n// > node will be the first node. Element nodes occur before their children.\n// > Thus, document order orders element nodes in order of the occurrence of\n// > their start-tag in the XML (after expansion of entities). The attribute\n// > nodes of an element occur after the element and before its children. The\n// > relative order of attribute nodes is implementation-dependent./\n// Source:\n// http://www.w3.org/TR/DOM-Level-3-Core/glossary.html#dt-document-order\n//\n// @argument {Node} nodaA The first node to use in the comparison\n// @argument {Node} nodeB The second node to use in the comparison\n//\n// @return {Number} A bitmask describing the input nodes' relative position.\n// See http://dom.spec.whatwg.org/#dom-node-comparedocumentposition for\n// a description of these values.\nvar comparePos = exports.compareDocumentPosition = function(nodeA, nodeB) {\n\tvar aParents = [];\n\tvar bParents = [];\n\tvar current, sharedParent, siblings, aSibling, bSibling, idx;\n\n\tif (nodeA === nodeB) {\n\t\treturn 0;\n\t}\n\n\tcurrent = nodeA;\n\twhile (current) {\n\t\taParents.unshift(current);\n\t\tcurrent = current.parent;\n\t}\n\tcurrent = nodeB;\n\twhile (current) {\n\t\tbParents.unshift(current);\n\t\tcurrent = current.parent;\n\t}\n\n\tidx = 0;\n\twhile (aParents[idx] === bParents[idx]) {\n\t\tidx++;\n\t}\n\n\tif (idx === 0) {\n\t\treturn POSITION.DISCONNECTED;\n\t}\n\n\tsharedParent = aParents[idx - 1];\n\tsiblings = sharedParent.children;\n\taSibling = aParents[idx];\n\tbSibling = bParents[idx];\n\n\tif (siblings.indexOf(aSibling) > siblings.indexOf(bSibling)) {\n\t\tif (sharedParent === nodeB) {\n\t\t\treturn POSITION.FOLLOWING | POSITION.CONTAINED_BY;\n\t\t}\n\t\treturn POSITION.FOLLOWING;\n\t} else {\n\t\tif (sharedParent === nodeA) {\n\t\t\treturn POSITION.PRECEDING | POSITION.CONTAINS;\n\t\t}\n\t\treturn POSITION.PRECEDING;\n\t}\n};\n\n// Sort an array of nodes based on their relative position in the document and\n// remove any duplicate nodes. If the array contains nodes that do not belong\n// to the same document, sort order is unspecified.\n//\n// @argument {Array} nodes Array of DOM nodes\n//\n// @returns {Array} collection of unique nodes, sorted in document order\nexports.uniqueSort = function(nodes) {\n\tvar idx = nodes.length, node, position;\n\n\tnodes = nodes.slice();\n\n\twhile (--idx > -1) {\n\t\tnode = nodes[idx];\n\t\tposition = nodes.indexOf(node);\n\t\tif (position > -1 && position < idx) {\n\t\t\tnodes.splice(idx, 1);\n\t\t}\n\t}\n\tnodes.sort(function(a, b) {\n\t\tvar relative = comparePos(a, b);\n\t\tif (relative & POSITION.PRECEDING) {\n\t\t\treturn -1;\n\t\t} else if (relative & POSITION.FOLLOWING) {\n\t\t\treturn 1;\n\t\t}\n\t\treturn 0;\n\t});\n\n\treturn nodes;\n};\n","var DomUtils = module.exports;\n\n[\n\trequire(\"./lib/stringify\"),\n\trequire(\"./lib/traversal\"),\n\trequire(\"./lib/manipulation\"),\n\trequire(\"./lib/querying\"),\n\trequire(\"./lib/legacy\"),\n\trequire(\"./lib/helpers\")\n].forEach(function(ext){\n\tObject.keys(ext).forEach(function(key){\n\t\tDomUtils[key] = ext[key].bind(DomUtils);\n\t});\n});\n","module.exports = parse;\n\n//following http://www.w3.org/TR/css3-selectors/#nth-child-pseudo\n\n//[ ['-'|'+']? INTEGER? {N} [ S* ['-'|'+'] S* INTEGER ]?\nvar re_nthElement = /^([+\\-]?\\d*n)?\\s*(?:([+\\-]?)\\s*(\\d+))?$/;\n\n/*\n\tparses a nth-check formula, returns an array of two numbers\n*/\nfunction parse(formula){\n\tformula = formula.trim().toLowerCase();\n\n\tif(formula === \"even\"){\n\t\treturn [2, 0];\n\t} else if(formula === \"odd\"){\n\t\treturn [2, 1];\n\t} else {\n\t\tvar parsed = formula.match(re_nthElement);\n\n\t\tif(!parsed){\n\t\t\tthrow new SyntaxError(\"n-th rule couldn't be parsed ('\" + formula + \"')\");\n\t\t}\n\n\t\tvar a;\n\n\t\tif(parsed[1]){\n\t\t\ta = parseInt(parsed[1], 10);\n\t\t\tif(isNaN(a)){\n\t\t\t\tif(parsed[1].charAt(0) === \"-\") a = -1;\n\t\t\t\telse a = 1;\n\t\t\t}\n\t\t} else a = 0;\n\n\t\treturn [\n\t\t\ta,\n\t\t\tparsed[3] ? parseInt((parsed[2] || \"\") + parsed[3], 10) : 0\n\t\t];\n\t}\n}\n","module.exports = {\n\ttrueFunc: function trueFunc(){\n\t\treturn true;\n\t},\n\tfalseFunc: function falseFunc(){\n\t\treturn false;\n\t}\n};","module.exports = compile;\n\nvar BaseFuncs = require(\"boolbase\"),\n trueFunc = BaseFuncs.trueFunc,\n falseFunc = BaseFuncs.falseFunc;\n\n/*\n\treturns a function that checks if an elements index matches the given rule\n\thighly optimized to return the fastest solution\n*/\nfunction compile(parsed){\n\tvar a = parsed[0],\n\t b = parsed[1] - 1;\n\n\t//when b <= 0, a*n won't be possible for any matches when a < 0\n\t//besides, the specification says that no element is matched when a and b are 0\n\tif(b < 0 && a <= 0) return falseFunc;\n\n\t//when a is in the range -1..1, it matches any element (so only b is checked)\n\tif(a ===-1) return function(pos){ return pos <= b; };\n\tif(a === 0) return function(pos){ return pos === b; };\n\t//when b <= 0 and a === 1, they match any element\n\tif(a === 1) return b < 0 ? trueFunc : function(pos){ return pos >= b; };\n\n\t//when a > 0, modulo can be used to check if there is a match\n\tvar bMod = b % a;\n\tif(bMod < 0) bMod += a;\n\n\tif(a > 1){\n\t\treturn function(pos){\n\t\t\treturn pos >= b && pos % a === bMod;\n\t\t};\n\t}\n\n\ta *= -1; //make `a` positive\n\n\treturn function(pos){\n\t\treturn pos <= b && pos % a === bMod;\n\t};\n}","var parse = require(\"./parse.js\"),\n compile = require(\"./compile.js\");\n\nmodule.exports = function nthCheck(formula){\n\treturn compile(parse(formula));\n};\n\nmodule.exports.parse = parse;\nmodule.exports.compile = compile;","var DomUtils = require(\"domutils\"),\n hasAttrib = DomUtils.hasAttrib,\n getAttributeValue = DomUtils.getAttributeValue,\n falseFunc = require(\"boolbase\").falseFunc;\n\n//https://github.com/slevithan/XRegExp/blob/master/src/xregexp.js#L469\nvar reChars = /[-[\\]{}()*+?.,\\\\^$|#\\s]/g;\n\n/*\n\tattribute selectors\n*/\n\nvar attributeRules = {\n\t__proto__: null,\n\tequals: function(next, data){\n\t\tvar name = data.name,\n\t\t value = data.value;\n\n\t\tif(data.ignoreCase){\n\t\t\tvalue = value.toLowerCase();\n\n\t\t\treturn function equalsIC(elem){\n\t\t\t\tvar attr = getAttributeValue(elem, name);\n\t\t\t\treturn attr != null && attr.toLowerCase() === value && next(elem);\n\t\t\t};\n\t\t}\n\n\t\treturn function equals(elem){\n\t\t\treturn getAttributeValue(elem, name) === value && next(elem);\n\t\t};\n\t},\n\thyphen: function(next, data){\n\t\tvar name = data.name,\n\t\t value = data.value,\n\t\t len = value.length;\n\n\t\tif(data.ignoreCase){\n\t\t\tvalue = value.toLowerCase();\n\n\t\t\treturn function hyphenIC(elem){\n\t\t\t\tvar attr = getAttributeValue(elem, name);\n\t\t\t\treturn attr != null &&\n\t\t\t\t\t\t(attr.length === len || attr.charAt(len) === \"-\") &&\n\t\t\t\t\t\tattr.substr(0, len).toLowerCase() === value &&\n\t\t\t\t\t\tnext(elem);\n\t\t\t};\n\t\t}\n\n\t\treturn function hyphen(elem){\n\t\t\tvar attr = getAttributeValue(elem, name);\n\t\t\treturn attr != null &&\n\t\t\t\t\tattr.substr(0, len) === value &&\n\t\t\t\t\t(attr.length === len || attr.charAt(len) === \"-\") &&\n\t\t\t\t\tnext(elem);\n\t\t};\n\t},\n\telement: function(next, data){\n\t\tvar name = data.name,\n\t\t value = data.value;\n\n\t\tif(/\\s/.test(value)){\n\t\t\treturn falseFunc;\n\t\t}\n\n\t\tvalue = value.replace(reChars, \"\\\\$&\");\n\n\t\tvar pattern = \"(?:^|\\\\s)\" + value + \"(?:$|\\\\s)\",\n\t\t flags = data.ignoreCase ? \"i\" : \"\",\n\t\t regex = new RegExp(pattern, flags);\n\n\t\treturn function element(elem){\n\t\t\tvar attr = getAttributeValue(elem, name);\n\t\t\treturn attr != null && regex.test(attr) && next(elem);\n\t\t};\n\t},\n\texists: function(next, data){\n\t\tvar name = data.name;\n\t\treturn function exists(elem){\n\t\t\treturn hasAttrib(elem, name) && next(elem);\n\t\t};\n\t},\n\tstart: function(next, data){\n\t\tvar name = data.name,\n\t\t value = data.value,\n\t\t len = value.length;\n\n\t\tif(len === 0){\n\t\t\treturn falseFunc;\n\t\t}\n\t\t\n\t\tif(data.ignoreCase){\n\t\t\tvalue = value.toLowerCase();\n\n\t\t\treturn function startIC(elem){\n\t\t\t\tvar attr = getAttributeValue(elem, name);\n\t\t\t\treturn attr != null && attr.substr(0, len).toLowerCase() === value && next(elem);\n\t\t\t};\n\t\t}\n\n\t\treturn function start(elem){\n\t\t\tvar attr = getAttributeValue(elem, name);\n\t\t\treturn attr != null && attr.substr(0, len) === value && next(elem);\n\t\t};\n\t},\n\tend: function(next, data){\n\t\tvar name = data.name,\n\t\t value = data.value,\n\t\t len = -value.length;\n\n\t\tif(len === 0){\n\t\t\treturn falseFunc;\n\t\t}\n\n\t\tif(data.ignoreCase){\n\t\t\tvalue = value.toLowerCase();\n\n\t\t\treturn function endIC(elem){\n\t\t\t\tvar attr = getAttributeValue(elem, name);\n\t\t\t\treturn attr != null && attr.substr(len).toLowerCase() === value && next(elem);\n\t\t\t};\n\t\t}\n\n\t\treturn function end(elem){\n\t\t\tvar attr = getAttributeValue(elem, name);\n\t\t\treturn attr != null && attr.substr(len) === value && next(elem);\n\t\t};\n\t},\n\tany: function(next, data){\n\t\tvar name = data.name,\n\t\t value = data.value;\n\n\t\tif(value === \"\"){\n\t\t\treturn falseFunc;\n\t\t}\n\n\t\tif(data.ignoreCase){\n\t\t\tvar regex = new RegExp(value.replace(reChars, \"\\\\$&\"), \"i\");\n\n\t\t\treturn function anyIC(elem){\n\t\t\t\tvar attr = getAttributeValue(elem, name);\n\t\t\t\treturn attr != null && regex.test(attr) && next(elem);\n\t\t\t};\n\t\t}\n\n\t\treturn function any(elem){\n\t\t\tvar attr = getAttributeValue(elem, name);\n\t\t\treturn attr != null && attr.indexOf(value) >= 0 && next(elem);\n\t\t};\n\t},\n\tnot: function(next, data){\n\t\tvar name = data.name,\n\t\t value = data.value;\n\n\t\tif(value === \"\"){\n\t\t\treturn function notEmpty(elem){\n\t\t\t\treturn !!getAttributeValue(elem, name) && next(elem);\n\t\t\t};\n\t\t} else if(data.ignoreCase){\n\t\t\tvalue = value.toLowerCase();\n\n\t\t\treturn function notIC(elem){\n\t\t\t\tvar attr = getAttributeValue(elem, name);\n\t\t\t\treturn attr != null && attr.toLowerCase() !== value && next(elem);\n\t\t\t};\n\t\t}\n\n\t\treturn function not(elem){\n\t\t\treturn getAttributeValue(elem, name) !== value && next(elem);\n\t\t};\n\t}\n};\n\nmodule.exports = {\n\tcompile: function(next, data, options){\n\t\tif(options && options.strict && (\n\t\t\tdata.ignoreCase || data.action === \"not\"\n\t\t)) throw SyntaxError(\"Unsupported attribute selector\");\n\t\treturn attributeRules[data.action](next, data);\n\t},\n\trules: attributeRules\n};\n","/*\n\tpseudo selectors\n\n\t---\n\n\tthey are available in two forms:\n\t* filters called when the selector\n\t is compiled and return a function\n\t that needs to return next()\n\t* pseudos get called on execution\n\t they need to return a boolean\n*/\n\nvar DomUtils = require(\"domutils\"),\n isTag = DomUtils.isTag,\n getText = DomUtils.getText,\n getParent = DomUtils.getParent,\n getChildren = DomUtils.getChildren,\n getSiblings = DomUtils.getSiblings,\n hasAttrib = DomUtils.hasAttrib,\n getName = DomUtils.getName,\n getAttribute= DomUtils.getAttributeValue,\n getNCheck = require(\"nth-check\"),\n checkAttrib = require(\"./attributes.js\").rules.equals,\n BaseFuncs = require(\"boolbase\"),\n trueFunc = BaseFuncs.trueFunc,\n falseFunc = BaseFuncs.falseFunc;\n\n//helper methods\nfunction getFirstElement(elems){\n\tfor(var i = 0; elems && i < elems.length; i++){\n\t\tif(isTag(elems[i])) return elems[i];\n\t}\n}\n\nfunction getAttribFunc(name, value){\n\tvar data = {name: name, value: value};\n\treturn function attribFunc(next){\n\t\treturn checkAttrib(next, data);\n\t};\n}\n\nfunction getChildFunc(next){\n\treturn function(elem){\n\t\treturn !!getParent(elem) && next(elem);\n\t};\n}\n\nvar filters = {\n\tcontains: function(next, text){\n\t\treturn function contains(elem){\n\t\t\treturn next(elem) && getText(elem).indexOf(text) >= 0;\n\t\t};\n\t},\n\ticontains: function(next, text){\n\t\tvar itext = text.toLowerCase();\n\t\treturn function icontains(elem){\n\t\t\treturn next(elem) &&\n\t\t\t\tgetText(elem).toLowerCase().indexOf(itext) >= 0;\n\t\t};\n\t},\n\n\t//location specific methods\n\t\"nth-child\": function(next, rule){\n\t\tvar func = getNCheck(rule);\n\n\t\tif(func === falseFunc) return func;\n\t\tif(func === trueFunc) return getChildFunc(next);\n\n\t\treturn function nthChild(elem){\n\t\t\tvar siblings = getSiblings(elem);\n\n\t\t\tfor(var i = 0, pos = 0; i < siblings.length; i++){\n\t\t\t\tif(isTag(siblings[i])){\n\t\t\t\t\tif(siblings[i] === elem) break;\n\t\t\t\t\telse pos++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn func(pos) && next(elem);\n\t\t};\n\t},\n\t\"nth-last-child\": function(next, rule){\n\t\tvar func = getNCheck(rule);\n\n\t\tif(func === falseFunc) return func;\n\t\tif(func === trueFunc) return getChildFunc(next);\n\n\t\treturn function nthLastChild(elem){\n\t\t\tvar siblings = getSiblings(elem);\n\n\t\t\tfor(var pos = 0, i = siblings.length - 1; i >= 0; i--){\n\t\t\t\tif(isTag(siblings[i])){\n\t\t\t\t\tif(siblings[i] === elem) break;\n\t\t\t\t\telse pos++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn func(pos) && next(elem);\n\t\t};\n\t},\n\t\"nth-of-type\": function(next, rule){\n\t\tvar func = getNCheck(rule);\n\n\t\tif(func === falseFunc) return func;\n\t\tif(func === trueFunc) return getChildFunc(next);\n\n\t\treturn function nthOfType(elem){\n\t\t\tvar siblings = getSiblings(elem);\n\n\t\t\tfor(var pos = 0, i = 0; i < siblings.length; i++){\n\t\t\t\tif(isTag(siblings[i])){\n\t\t\t\t\tif(siblings[i] === elem) break;\n\t\t\t\t\tif(getName(siblings[i]) === getName(elem)) pos++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn func(pos) && next(elem);\n\t\t};\n\t},\n\t\"nth-last-of-type\": function(next, rule){\n\t\tvar func = getNCheck(rule);\n\n\t\tif(func === falseFunc) return func;\n\t\tif(func === trueFunc) return getChildFunc(next);\n\n\t\treturn function nthLastOfType(elem){\n\t\t\tvar siblings = getSiblings(elem);\n\n\t\t\tfor(var pos = 0, i = siblings.length - 1; i >= 0; i--){\n\t\t\t\tif(isTag(siblings[i])){\n\t\t\t\t\tif(siblings[i] === elem) break;\n\t\t\t\t\tif(getName(siblings[i]) === getName(elem)) pos++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn func(pos) && next(elem);\n\t\t};\n\t},\n\n //TODO determine the actual root element\n root: function(next){\n return function(elem){\n return !getParent(elem) && next(elem);\n };\n },\n\n scope: function(next, rule, options, context){\n if(!context || context.length === 0){\n //equivalent to :root\n return filters.root(next);\n }\n\n if(context.length === 1){\n //NOTE: can't be unpacked, as :has uses this for side-effects\n return function(elem){\n return context[0] === elem && next(elem);\n };\n }\n\n return function(elem){\n return context.indexOf(elem) >= 0 && next(elem);\n };\n },\n\n\t//jQuery extensions (others follow as pseudos)\n\tcheckbox: getAttribFunc(\"type\", \"checkbox\"),\n\tfile: getAttribFunc(\"type\", \"file\"),\n\tpassword: getAttribFunc(\"type\", \"password\"),\n\tradio: getAttribFunc(\"type\", \"radio\"),\n\treset: getAttribFunc(\"type\", \"reset\"),\n\timage: getAttribFunc(\"type\", \"image\"),\n\tsubmit: getAttribFunc(\"type\", \"submit\")\n};\n\n//while filters are precompiled, pseudos get called when they are needed\nvar pseudos = {\n\tempty: function(elem){\n\t\treturn !getChildren(elem).some(function(elem){\n\t\t\treturn isTag(elem) || elem.type === \"text\";\n\t\t});\n\t},\n\n\t\"first-child\": function(elem){\n\t\treturn getFirstElement(getSiblings(elem)) === elem;\n\t},\n\t\"last-child\": function(elem){\n\t\tvar siblings = getSiblings(elem);\n\n\t\tfor(var i = siblings.length - 1; i >= 0; i--){\n\t\t\tif(siblings[i] === elem) return true;\n\t\t\tif(isTag(siblings[i])) break;\n\t\t}\n\n\t\treturn false;\n\t},\n\t\"first-of-type\": function(elem){\n\t\tvar siblings = getSiblings(elem);\n\n\t\tfor(var i = 0; i < siblings.length; i++){\n\t\t\tif(isTag(siblings[i])){\n\t\t\t\tif(siblings[i] === elem) return true;\n\t\t\t\tif(getName(siblings[i]) === getName(elem)) break;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\t\"last-of-type\": function(elem){\n\t\tvar siblings = getSiblings(elem);\n\n\t\tfor(var i = siblings.length-1; i >= 0; i--){\n\t\t\tif(isTag(siblings[i])){\n\t\t\t\tif(siblings[i] === elem) return true;\n\t\t\t\tif(getName(siblings[i]) === getName(elem)) break;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\t\"only-of-type\": function(elem){\n\t\tvar siblings = getSiblings(elem);\n\n\t\tfor(var i = 0, j = siblings.length; i < j; i++){\n\t\t\tif(isTag(siblings[i])){\n\t\t\t\tif(siblings[i] === elem) continue;\n\t\t\t\tif(getName(siblings[i]) === getName(elem)) return false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t},\n\t\"only-child\": function(elem){\n\t\tvar siblings = getSiblings(elem);\n\n\t\tfor(var i = 0; i < siblings.length; i++){\n\t\t\tif(isTag(siblings[i]) && siblings[i] !== elem) return false;\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t//:matches(a, area, link)[href]\n\tlink: function(elem){\n\t\treturn hasAttrib(elem, \"href\");\n\t},\n\tvisited: falseFunc, //seems to be a valid implementation\n\t//TODO: :any-link once the name is finalized (as an alias of :link)\n\n\t//forms\n\t//to consider: :target\n\n\t//:matches([selected], select:not([multiple]):not(> option[selected]) > option:first-of-type)\n\tselected: function(elem){\n\t\tif(hasAttrib(elem, \"selected\")) return true;\n\t\telse if(getName(elem) !== \"option\") return false;\n\n\t\t//the first <option> in a <select> is also selected\n\t\tvar parent = getParent(elem);\n\n\t\tif(\n\t\t\t!parent ||\n\t\t\tgetName(parent) !== \"select\" ||\n\t\t\thasAttrib(parent, \"multiple\")\n\t\t) return false;\n\n\t\tvar siblings = getChildren(parent),\n\t\t\tsawElem = false;\n\n\t\tfor(var i = 0; i < siblings.length; i++){\n\t\t\tif(isTag(siblings[i])){\n\t\t\t\tif(siblings[i] === elem){\n\t\t\t\t\tsawElem = true;\n\t\t\t\t} else if(!sawElem){\n\t\t\t\t\treturn false;\n\t\t\t\t} else if(hasAttrib(siblings[i], \"selected\")){\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn sawElem;\n\t},\n\t//https://html.spec.whatwg.org/multipage/scripting.html#disabled-elements\n\t//:matches(\n\t// :matches(button, input, select, textarea, menuitem, optgroup, option)[disabled],\n\t// optgroup[disabled] > option),\n\t// fieldset[disabled] * //TODO not child of first <legend>\n\t//)\n\tdisabled: function(elem){\n\t\treturn hasAttrib(elem, \"disabled\");\n\t},\n\tenabled: function(elem){\n\t\treturn !hasAttrib(elem, \"disabled\");\n\t},\n\t//:matches(:matches(:radio, :checkbox)[checked], :selected) (TODO menuitem)\n\tchecked: function(elem){\n\t\treturn hasAttrib(elem, \"checked\") || pseudos.selected(elem);\n\t},\n\t//:matches(input, select, textarea)[required]\n\trequired: function(elem){\n\t\treturn hasAttrib(elem, \"required\");\n\t},\n\t//:matches(input, select, textarea):not([required])\n\toptional: function(elem){\n\t\treturn !hasAttrib(elem, \"required\");\n\t},\n\n\t//jQuery extensions\n\n\t//:not(:empty)\n\tparent: function(elem){\n\t\treturn !pseudos.empty(elem);\n\t},\n\t//:matches(h1, h2, h3, h4, h5, h6)\n\theader: function(elem){\n\t\tvar name = getName(elem);\n\t\treturn name === \"h1\" ||\n\t\t name === \"h2\" ||\n\t\t name === \"h3\" ||\n\t\t name === \"h4\" ||\n\t\t name === \"h5\" ||\n\t\t name === \"h6\";\n\t},\n\n\t//:matches(button, input[type=button])\n\tbutton: function(elem){\n\t\tvar name = getName(elem);\n\t\treturn name === \"button\" ||\n\t\t name === \"input\" &&\n\t\t getAttribute(elem, \"type\") === \"button\";\n\t},\n\t//:matches(input, textarea, select, button)\n\tinput: function(elem){\n\t\tvar name = getName(elem);\n\t\treturn name === \"input\" ||\n\t\t name === \"textarea\" ||\n\t\t name === \"select\" ||\n\t\t name === \"button\";\n\t},\n\t//input:matches(:not([type!='']), [type='text' i])\n\ttext: function(elem){\n\t\tvar attr;\n\t\treturn getName(elem) === \"input\" && (\n\t\t\t!(attr = getAttribute(elem, \"type\")) ||\n\t\t\tattr.toLowerCase() === \"text\"\n\t\t);\n\t}\n};\n\nfunction verifyArgs(func, name, subselect){\n\tif(subselect === null){\n\t\tif(func.length > 1 && name !== \"scope\"){\n\t\t\tthrow new SyntaxError(\"pseudo-selector :\" + name + \" requires an argument\");\n\t\t}\n\t} else {\n\t\tif(func.length === 1){\n\t\t\tthrow new SyntaxError(\"pseudo-selector :\" + name + \" doesn't have any arguments\");\n\t\t}\n\t}\n}\n\n//FIXME this feels hacky\nvar re_CSS3 = /^(?:(?:nth|last|first|only)-(?:child|of-type)|root|empty|(?:en|dis)abled|checked|not)$/;\n\nmodule.exports = {\n\tcompile: function(next, data, options, context){\n\t\tvar name = data.name,\n\t\t\tsubselect = data.data;\n\n\t\tif(options && options.strict && !re_CSS3.test(name)){\n\t\t\tthrow SyntaxError(\":\" + name + \" isn't part of CSS3\");\n\t\t}\n\n\t\tif(typeof filters[name] === \"function\"){\n\t\t\tverifyArgs(filters[name], name, subselect);\n\t\t\treturn filters[name](next, subselect, options, context);\n\t\t} else if(typeof pseudos[name] === \"function\"){\n\t\t\tvar func = pseudos[name];\n\t\t\tverifyArgs(func, name, subselect);\n\n\t\t\tif(next === trueFunc) return func;\n\n\t\t\treturn function pseudoArgs(elem){\n\t\t\t\treturn func(elem, subselect) && next(elem);\n\t\t\t};\n\t\t} else {\n\t\t\tthrow new SyntaxError(\"unmatched pseudo-class :\" + name);\n\t\t}\n\t},\n\tfilters: filters,\n\tpseudos: pseudos\n};\n","\"use strict\";\n\nmodule.exports = parse;\n\nvar re_name = /^(?:\\\\.|[\\w\\-\\u00b0-\\uFFFF])+/,\n re_escape = /\\\\([\\da-f]{1,6}\\s?|(\\s)|.)/ig,\n //modified version of https://github.com/jquery/sizzle/blob/master/src/sizzle.js#L87\n re_attr = /^\\s*((?:\\\\.|[\\w\\u00b0-\\uFFFF\\-])+)\\s*(?:(\\S?)=\\s*(?:(['\"])([^]*?)\\3|(#?(?:\\\\.|[\\w\\u00b0-\\uFFFF\\-])*)|)|)\\s*(i)?\\]/;\n\nvar actionTypes = {\n\t__proto__: null,\n\t\"undefined\": \"exists\",\n\t\"\": \"equals\",\n\t\"~\": \"element\",\n\t\"^\": \"start\",\n\t\"$\": \"end\",\n\t\"*\": \"any\",\n\t\"!\": \"not\",\n\t\"|\": \"hyphen\"\n};\n\nvar simpleSelectors = {\n\t__proto__: null,\n\t\">\": \"child\",\n\t\"<\": \"parent\",\n\t\"~\": \"sibling\",\n\t\"+\": \"adjacent\"\n};\n\nvar attribSelectors = {\n\t__proto__: null,\n\t\"#\": [\"id\", \"equals\"],\n\t\".\": [\"class\", \"element\"]\n};\n\n//pseudos, whose data-property is parsed as well\nvar unpackPseudos = {\n\t__proto__: null,\n\t\"has\": true,\n\t\"not\": true,\n\t\"matches\": true\n};\n\nvar stripQuotesFromPseudos = {\n\t__proto__: null,\n\t\"contains\": true,\n\t\"icontains\": true\n};\n\nvar quotes = {\n\t__proto__: null,\n\t\"\\\"\": true,\n\t\"'\": true\n};\n\n//unescape function taken from https://github.com/jquery/sizzle/blob/master/src/sizzle.js#L139\nfunction funescape( _, escaped, escapedWhitespace ) {\n\tvar high = \"0x\" + escaped - 0x10000;\n\t// NaN means non-codepoint\n\t// Support: Firefox\n\t// Workaround erroneous numeric interpretation of +\"0x\"\n\treturn high !== high || escapedWhitespace ?\n\t\tescaped :\n\t\t// BMP codepoint\n\t\thigh < 0 ?\n\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n}\n\nfunction unescapeCSS(str){\n\treturn str.replace(re_escape, funescape);\n}\n\nfunction isWhitespace(c){\n\treturn c === \" \" || c === \"\\n\" || c === \"\\t\" || c === \"\\f\" || c === \"\\r\";\n}\n\nfunction parse(selector, options){\n\tvar subselects = [];\n\n\tselector = parseSelector(subselects, selector + \"\", options);\n\n\tif(selector !== \"\"){\n\t\tthrow new SyntaxError(\"Unmatched selector: \" + selector);\n\t}\n\n\treturn subselects;\n}\n\nfunction parseSelector(subselects, selector, options){\n\tvar tokens = [],\n\t\tsawWS = false,\n\t\tdata, firstChar, name, quot;\n\n\tfunction getName(){\n\t\tvar sub = selector.match(re_name)[0];\n\t\tselector = selector.substr(sub.length);\n\t\treturn unescapeCSS(sub);\n\t}\n\n\tfunction stripWhitespace(start){\n\t\twhile(isWhitespace(selector.charAt(start))) start++;\n\t\tselector = selector.substr(start);\n\t}\n\n\tfunction isEscaped(pos) {\n\t\tvar slashCount = 0;\n\n\t\twhile (selector.charAt(--pos) === \"\\\\\") slashCount++;\n\t\treturn (slashCount & 1) === 1;\n\t}\n\n\tstripWhitespace(0);\n\n\twhile(selector !== \"\"){\n\t\tfirstChar = selector.charAt(0);\n\n\t\tif(isWhitespace(firstChar)){\n\t\t\tsawWS = true;\n\t\t\tstripWhitespace(1);\n\t\t} else if(firstChar in simpleSelectors){\n\t\t\ttokens.push({type: simpleSelectors[firstChar]});\n\t\t\tsawWS = false;\n\n\t\t\tstripWhitespace(1);\n\t\t} else if(firstChar === \",\"){\n\t\t\tif(tokens.length === 0){\n\t\t\t\tthrow new SyntaxError(\"empty sub-selector\");\n\t\t\t}\n\t\t\tsubselects.push(tokens);\n\t\t\ttokens = [];\n\t\t\tsawWS = false;\n\t\t\tstripWhitespace(1);\n\t\t} else {\n\t\t\tif(sawWS){\n\t\t\t\tif(tokens.length > 0){\n\t\t\t\t\ttokens.push({type: \"descendant\"});\n\t\t\t\t}\n\t\t\t\tsawWS = false;\n\t\t\t}\n\n\t\t\tif(firstChar === \"*\"){\n\t\t\t\tselector = selector.substr(1);\n\t\t\t\ttokens.push({type: \"universal\"});\n\t\t\t} else if(firstChar in attribSelectors){\n\t\t\t\tselector = selector.substr(1);\n\t\t\t\ttokens.push({\n\t\t\t\t\ttype: \"attribute\",\n\t\t\t\t\tname: attribSelectors[firstChar][0],\n\t\t\t\t\taction: attribSelectors[firstChar][1],\n\t\t\t\t\tvalue: getName(),\n\t\t\t\t\tignoreCase: false\n\t\t\t\t});\n\t\t\t} else if(firstChar === \"[\"){\n\t\t\t\tselector = selector.substr(1);\n\t\t\t\tdata = selector.match(re_attr);\n\t\t\t\tif(!data){\n\t\t\t\t\tthrow new SyntaxError(\"Malformed attribute selector: \" + selector);\n\t\t\t\t}\n\t\t\t\tselector = selector.substr(data[0].length);\n\t\t\t\tname = unescapeCSS(data[1]);\n\n\t\t\t\tif(\n\t\t\t\t\t!options || (\n\t\t\t\t\t\t\"lowerCaseAttributeNames\" in options ?\n\t\t\t\t\t\t\toptions.lowerCaseAttributeNames :\n\t\t\t\t\t\t\t!options.xmlMode\n\t\t\t\t\t)\n\t\t\t\t){\n\t\t\t\t\tname = name.toLowerCase();\n\t\t\t\t}\n\n\t\t\t\ttokens.push({\n\t\t\t\t\ttype: \"attribute\",\n\t\t\t\t\tname: name,\n\t\t\t\t\taction: actionTypes[data[2]],\n\t\t\t\t\tvalue: unescapeCSS(data[4] || data[5] || \"\"),\n\t\t\t\t\tignoreCase: !!data[6]\n\t\t\t\t});\n\n\t\t\t} else if(firstChar === \":\"){\n\t\t\t\tif(selector.charAt(1) === \":\"){\n\t\t\t\t\tselector = selector.substr(2);\n\t\t\t\t\ttokens.push({type: \"pseudo-element\", name: getName().toLowerCase()});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tselector = selector.substr(1);\n\n\t\t\t\tname = getName().toLowerCase();\n\t\t\t\tdata = null;\n\n\t\t\t\tif(selector.charAt(0) === \"(\"){\n\t\t\t\t\tif(name in unpackPseudos){\n\t\t\t\t\t\tquot = selector.charAt(1);\n\t\t\t\t\t\tvar quoted = quot in quotes;\n\n\t\t\t\t\t\tselector = selector.substr(quoted + 1);\n\n\t\t\t\t\t\tdata = [];\n\t\t\t\t\t\tselector = parseSelector(data, selector, options);\n\n\t\t\t\t\t\tif(quoted){\n\t\t\t\t\t\t\tif(selector.charAt(0) !== quot){\n\t\t\t\t\t\t\t\tthrow new SyntaxError(\"unmatched quotes in :\" + name);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tselector = selector.substr(1);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif(selector.charAt(0) !== \")\"){\n\t\t\t\t\t\t\tthrow new SyntaxError(\"missing closing parenthesis in :\" + name + \" \" + selector);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tselector = selector.substr(1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar pos = 1, counter = 1;\n\n\t\t\t\t\t\tfor(; counter > 0 && pos < selector.length; pos++){\n\t\t\t\t\t\t\tif(selector.charAt(pos) === \"(\" && !isEscaped(pos)) counter++;\n\t\t\t\t\t\t\telse if(selector.charAt(pos) === \")\" && !isEscaped(pos)) counter--;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif(counter){\n\t\t\t\t\t\t\tthrow new SyntaxError(\"parenthesis not matched\");\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdata = selector.substr(1, pos - 2);\n\t\t\t\t\t\tselector = selector.substr(pos);\n\n\t\t\t\t\t\tif(name in stripQuotesFromPseudos){\n\t\t\t\t\t\t\tquot = data.charAt(0);\n\n\t\t\t\t\t\t\tif(quot === data.slice(-1) && quot in quotes){\n\t\t\t\t\t\t\t\tdata = data.slice(1, -1);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tdata = unescapeCSS(data);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\ttokens.push({type: \"pseudo\", name: name, data: data});\n\t\t\t} else if(re_name.test(selector)){\n\t\t\t\tname = getName();\n\n\t\t\t\tif(!options || (\"lowerCaseTags\" in options ? options.lowerCaseTags : !options.xmlMode)){\n\t\t\t\t\tname = name.toLowerCase();\n\t\t\t\t}\n\n\t\t\t\ttokens.push({type: \"tag\", name: name});\n\t\t\t} else {\n\t\t\t\tif(tokens.length && tokens[tokens.length - 1].type === \"descendant\"){\n\t\t\t\t\ttokens.pop();\n\t\t\t\t}\n\t\t\t\taddToken(subselects, tokens);\n\t\t\t\treturn selector;\n\t\t\t}\n\t\t}\n\t}\n\n\taddToken(subselects, tokens);\n\n\treturn selector;\n}\n\nfunction addToken(subselects, tokens){\n\tif(subselects.length > 0 && tokens.length === 0){\n\t\tthrow new SyntaxError(\"empty sub-selector\");\n\t}\n\n\tsubselects.push(tokens);\n}\n","var DomUtils = require(\"domutils\"),\n isTag = DomUtils.isTag,\n getParent = DomUtils.getParent,\n getChildren = DomUtils.getChildren,\n getSiblings = DomUtils.getSiblings,\n getName = DomUtils.getName;\n\n/*\n\tall available rules\n*/\nmodule.exports = {\n\t__proto__: null,\n\n\tattribute: require(\"./attributes.js\").compile,\n\tpseudo: require(\"./pseudos.js\").compile,\n\n\t//tags\n\ttag: function(next, data){\n\t\tvar name = data.name;\n\t\treturn function tag(elem){\n\t\t\treturn getName(elem) === name && next(elem);\n\t\t};\n\t},\n\n\t//traversal\n\tdescendant: function(next, rule, options, context, acceptSelf){\n\t\treturn function descendant(elem){\n\n\t\t\tif (acceptSelf && next(elem)) return true;\n\n\t\t\tvar found = false;\n\n\t\t\twhile(!found && (elem = getParent(elem))){\n\t\t\t\tfound = next(elem);\n\t\t\t}\n\n\t\t\treturn found;\n\t\t};\n\t},\n\tparent: function(next, data, options){\n\t\tif(options && options.strict) throw SyntaxError(\"Parent selector isn't part of CSS3\");\n\n\t\treturn function parent(elem){\n\t\t\treturn getChildren(elem).some(test);\n\t\t};\n\n\t\tfunction test(elem){\n\t\t\treturn isTag(elem) && next(elem);\n\t\t}\n\t},\n\tchild: function(next){\n\t\treturn function child(elem){\n\t\t\tvar parent = getParent(elem);\n\t\t\treturn !!parent && next(parent);\n\t\t};\n\t},\n\tsibling: function(next){\n\t\treturn function sibling(elem){\n\t\t\tvar siblings = getSiblings(elem);\n\n\t\t\tfor(var i = 0; i < siblings.length; i++){\n\t\t\t\tif(isTag(siblings[i])){\n\t\t\t\t\tif(siblings[i] === elem) break;\n\t\t\t\t\tif(next(siblings[i])) return true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t};\n\t},\n\tadjacent: function(next){\n\t\treturn function adjacent(elem){\n\t\t\tvar siblings = getSiblings(elem),\n\t\t\t lastElement;\n\n\t\t\tfor(var i = 0; i < siblings.length; i++){\n\t\t\t\tif(isTag(siblings[i])){\n\t\t\t\t\tif(siblings[i] === elem) break;\n\t\t\t\t\tlastElement = siblings[i];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn !!lastElement && next(lastElement);\n\t\t};\n\t},\n\tuniversal: function(next){\n\t\treturn next;\n\t}\n};","module.exports = sortByProcedure;\n\n/*\n\tsort the parts of the passed selector,\n\tas there is potential for optimization\n\t(some types of selectors are faster than others)\n*/\n\nvar procedure = require(\"./procedure.json\");\n\nvar attributes = {\n\t__proto__: null,\n\texists: 10,\n\tequals: 8,\n\tnot: 7,\n\tstart: 6,\n\tend: 6,\n\tany: 5,\n\thyphen: 4,\n\telement: 4\n};\n\nfunction sortByProcedure(arr){\n\tvar procs = arr.map(getProcedure);\n\tfor(var i = 1; i < arr.length; i++){\n\t\tvar procNew = procs[i];\n\n\t\tif(procNew < 0) continue;\n\n\t\tfor(var j = i - 1; j >= 0 && procNew < procs[j]; j--){\n\t\t\tvar token = arr[j + 1];\n\t\t\tarr[j + 1] = arr[j];\n\t\t\tarr[j] = token;\n\t\t\tprocs[j + 1] = procs[j];\n\t\t\tprocs[j] = procNew;\n\t\t}\n\t}\n}\n\nfunction getProcedure(token){\n\tvar proc = procedure[token.type];\n\n\tif(proc === procedure.attribute){\n\t\tproc = attributes[token.action];\n\n\t\tif(proc === attributes.equals && token.name === \"id\"){\n\t\t\t//prefer ID selectors (eg. #ID)\n\t\t\tproc = 9;\n\t\t}\n\n\t\tif(token.ignoreCase){\n\t\t\t//ignoreCase adds some overhead, prefer \"normal\" token\n\t\t\t//this is a binary operation, to ensure it's still an int\n\t\t\tproc >>= 1;\n\t\t}\n\t} else if(proc === procedure.pseudo){\n\t\tif(!token.data){\n\t\t\tproc = 3;\n\t\t} else if(token.name === \"has\" || token.name === \"contains\"){\n\t\t\tproc = 0; //expensive in any case\n\t\t} else if(token.name === \"matches\" || token.name === \"not\"){\n\t\t\tproc = 0;\n\t\t\tfor(var i = 0; i < token.data.length; i++){\n\t\t\t\t//TODO better handling of complex selectors\n\t\t\t\tif(token.data[i].length !== 1) continue;\n\t\t\t\tvar cur = getProcedure(token.data[i][0]);\n\t\t\t\t//avoid executing :has or :contains\n\t\t\t\tif(cur === 0){\n\t\t\t\t\tproc = 0;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(cur > proc) proc = cur;\n\t\t\t}\n\t\t\tif(token.data.length > 1 && proc > 0) proc -= 1;\n\t\t} else {\n\t\t\tproc = 1;\n\t\t}\n\t}\n\treturn proc;\n}\n","/*\n\tcompiles a selector to an executable function\n*/\n\nmodule.exports = compile;\nmodule.exports.compileUnsafe = compileUnsafe;\nmodule.exports.compileToken = compileToken;\n\nvar parse = require(\"css-what\"),\n DomUtils = require(\"domutils\"),\n isTag = DomUtils.isTag,\n Rules = require(\"./general.js\"),\n sortRules = require(\"./sort.js\"),\n BaseFuncs = require(\"boolbase\"),\n trueFunc = BaseFuncs.trueFunc,\n falseFunc = BaseFuncs.falseFunc,\n procedure = require(\"./procedure.json\");\n\nfunction compile(selector, options, context){\n\tvar next = compileUnsafe(selector, options, context);\n\treturn wrap(next);\n}\n\nfunction wrap(next){\n\treturn function base(elem){\n\t\treturn isTag(elem) && next(elem);\n\t};\n}\n\nfunction compileUnsafe(selector, options, context){\n\tvar token = parse(selector, options);\n\treturn compileToken(token, options, context);\n}\n\nfunction includesScopePseudo(t){\n return t.type === \"pseudo\" && (\n t.name === \"scope\" || (\n Array.isArray(t.data) &&\n t.data.some(function(data){\n return data.some(includesScopePseudo);\n })\n )\n );\n}\n\nvar DESCENDANT_TOKEN = {type: \"descendant\"},\n SCOPE_TOKEN = {type: \"pseudo\", name: \"scope\"},\n PLACEHOLDER_ELEMENT = {},\n getParent = DomUtils.getParent;\n\n//CSS 4 Spec (Draft): 3.3.1. Absolutizing a Scope-relative Selector\n//http://www.w3.org/TR/selectors4/#absolutizing\nfunction absolutize(token, context){\n //TODO better check if context is document\n var hasContext = !!context && !!context.length && context.every(function(e){\n return e === PLACEHOLDER_ELEMENT || !!getParent(e);\n });\n\n\n token.forEach(function(t){\n if(t.length > 0 && isTraversal(t[0]) && t[0].type !== \"descendant\"){\n //don't return in else branch\n } else if(hasContext && !includesScopePseudo(t)){\n t.unshift(DESCENDANT_TOKEN);\n } else {\n return;\n }\n\n t.unshift(SCOPE_TOKEN);\n });\n}\n\nfunction compileToken(token, options, context){\n token = token.filter(function(t){ return t.length > 0; });\n\n\ttoken.forEach(sortRules);\n\n\tvar isArrayContext = Array.isArray(context);\n\n context = (options && options.context) || context;\n\n if(context && !isArrayContext) context = [context];\n\n absolutize(token, context);\n\n\treturn token\n\t\t.map(function(rules){ return compileRules(rules, options, context, isArrayContext); })\n\t\t.reduce(reduceRules, falseFunc);\n}\n\nfunction isTraversal(t){\n\treturn procedure[t.type] < 0;\n}\n\nfunction compileRules(rules, options, context, isArrayContext){\n\tvar acceptSelf = (isArrayContext && rules[0].name === \"scope\" && rules[1].type === \"descendant\");\n\treturn rules.reduce(function(func, rule, index){\n\t\tif(func === falseFunc) return func;\n\t\treturn Rules[rule.type](func, rule, options, context, acceptSelf && index === 1);\n\t}, options && options.rootFunc || trueFunc);\n}\n\nfunction reduceRules(a, b){\n\tif(b === falseFunc || a === trueFunc){\n\t\treturn a;\n\t}\n\tif(a === falseFunc || b === trueFunc){\n\t\treturn b;\n\t}\n\n\treturn function combine(elem){\n\t\treturn a(elem) || b(elem);\n\t};\n}\n\n//:not, :has and :matches have to compile selectors\n//doing this in lib/pseudos.js would lead to circular dependencies,\n//so we add them here\n\nvar Pseudos = require(\"./pseudos.js\"),\n filters = Pseudos.filters,\n existsOne = DomUtils.existsOne,\n isTag = DomUtils.isTag,\n getChildren = DomUtils.getChildren;\n\n\nfunction containsTraversal(t){\n\treturn t.some(isTraversal);\n}\n\nfilters.not = function(next, token, options, context){\n\tvar opts = {\n\t \txmlMode: !!(options && options.xmlMode),\n\t \tstrict: !!(options && options.strict)\n\t };\n\n\tif(opts.strict){\n\t\tif(token.length > 1 || token.some(containsTraversal)){\n\t\t\tthrow new SyntaxError(\"complex selectors in :not aren't allowed in strict mode\");\n\t\t}\n\t}\n\n var func = compileToken(token, opts, context);\n\n\tif(func === falseFunc) return next;\n\tif(func === trueFunc) return falseFunc;\n\n\treturn function(elem){\n\t\treturn !func(elem) && next(elem);\n\t};\n};\n\nfilters.has = function(next, token, options){\n\tvar opts = {\n\t\txmlMode: !!(options && options.xmlMode),\n\t\tstrict: !!(options && options.strict)\n\t};\n\n //FIXME: Uses an array as a pointer to the current element (side effects)\n var context = token.some(containsTraversal) ? [PLACEHOLDER_ELEMENT] : null;\n\n\tvar func = compileToken(token, opts, context);\n\n\tif(func === falseFunc) return falseFunc;\n\tif(func === trueFunc) return function(elem){\n\t\t\treturn getChildren(elem).some(isTag) && next(elem);\n\t\t};\n\n\tfunc = wrap(func);\n\n if(context){\n return function has(elem){\n\t\treturn next(elem) && (\n (context[0] = elem), existsOne(func, getChildren(elem))\n );\n\t};\n }\n\n return function has(elem){\n\t\treturn next(elem) && existsOne(func, getChildren(elem));\n\t};\n};\n\nfilters.matches = function(next, token, options, context){\n\tvar opts = {\n\t\txmlMode: !!(options && options.xmlMode),\n\t\tstrict: !!(options && options.strict),\n\t\trootFunc: next\n\t};\n\n\treturn compileToken(token, opts, context);\n};\n","\"use strict\";\n\nmodule.exports = CSSselect;\n\nvar Pseudos = require(\"./lib/pseudos.js\"),\n DomUtils = require(\"domutils\"),\n findOne = DomUtils.findOne,\n findAll = DomUtils.findAll,\n getChildren = DomUtils.getChildren,\n removeSubsets = DomUtils.removeSubsets,\n falseFunc = require(\"boolbase\").falseFunc,\n compile = require(\"./lib/compile.js\"),\n compileUnsafe = compile.compileUnsafe,\n compileToken = compile.compileToken;\n\nfunction getSelectorFunc(searchFunc){\n\treturn function select(query, elems, options){\n if(typeof query !== \"function\") query = compileUnsafe(query, options, elems);\n if(!Array.isArray(elems)) elems = getChildren(elems);\n\t\telse elems = removeSubsets(elems);\n\t\treturn searchFunc(query, elems);\n\t};\n}\n\nvar selectAll = getSelectorFunc(function selectAll(query, elems){\n\treturn (query === falseFunc || !elems || elems.length === 0) ? [] : findAll(query, elems);\n});\n\nvar selectOne = getSelectorFunc(function selectOne(query, elems){\n\treturn (query === falseFunc || !elems || elems.length === 0) ? null : findOne(query, elems);\n});\n\nfunction is(elem, query, options){\n\treturn (typeof query === \"function\" ? query : compile(query, options))(elem);\n}\n\n/*\n\tthe exported interface\n*/\nfunction CSSselect(query, elems, options){\n\treturn selectAll(query, elems, options);\n}\n\nCSSselect.compile = compile;\nCSSselect.filters = Pseudos.filters;\nCSSselect.pseudos = Pseudos.pseudos;\n\nCSSselect.selectAll = selectAll;\nCSSselect.selectOne = selectOne;\n\nCSSselect.is = is;\n\n//legacy methods (might be removed)\nCSSselect.parse = compile;\nCSSselect.iterate = selectAll;\n\n//hooks\nCSSselect._compileUnsafe = compileUnsafe;\nCSSselect._compileToken = compileToken;\n","/**\n * Copyright 2018 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * use this file except in compliance with the License. You may obtain a copy of\n * the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */\n\nimport parse5 from 'parse5';\nimport select from 'css-select';\n\n// htmlparser2 has a relatively DOM-like tree format, which we'll massage into a DOM elsewhere\nconst treeAdapter = require('parse5-htmlparser2-tree-adapter');\n\nconst PARSE5_OPTS = {\n treeAdapter\n};\n\n/**\n * Parse HTML into a mutable, serializable DOM Document.\n * The DOM implementation is an htmlparser2 DOM enhanced with basic DOM mutation methods.\n * @param {String} html HTML to parse into a Document instance\n */\nexport function createDocument(html) {\n const document = parse5.parse(html, PARSE5_OPTS);\n\n defineProperties(document, DocumentExtensions);\n\n // Extend Element.prototype with DOM manipulation methods.\n const scratch = document.createElement('div');\n // Get a reference to the base Node class - used by createTextNode()\n document.$$Node = scratch.constructor;\n const elementProto = Object.getPrototypeOf(scratch);\n defineProperties(elementProto, ElementExtensions);\n elementProto.ownerDocument = document;\n\n return document;\n}\n\n/**\n * Serialize a Document to an HTML String\n * @param {Document} document A Document, such as one created via `createDocument()`\n */\nexport function serializeDocument(document) {\n return parse5.serialize(document, PARSE5_OPTS);\n}\n\n/**\n * Methods and descriptors to mix into Element.prototype\n */\nconst ElementExtensions = {\n /** @extends htmlparser2.Element.prototype */\n\n nodeName: {\n get() {\n return this.tagName.toUpperCase();\n }\n },\n\n id: reflectedProperty('id'),\n\n className: reflectedProperty('class'),\n\n insertBefore(child, referenceNode) {\n if (!referenceNode) return this.appendChild(child);\n treeAdapter.insertBefore(this, child, referenceNode);\n return child;\n },\n\n appendChild(child) {\n treeAdapter.appendChild(this, child);\n return child;\n },\n\n removeChild(child) {\n treeAdapter.detachNode(child);\n },\n\n remove() {\n treeAdapter.detachNode(this);\n },\n\n textContent: {\n get() {\n return getText(this);\n },\n\n set(text) {\n this.children = [];\n treeAdapter.insertText(this, text);\n }\n },\n\n setAttribute(name, value) {\n if (this.attribs == null) this.attribs = {};\n if (value == null) value = '';\n this.attribs[name] = value;\n },\n\n removeAttribute(name) {\n if (this.attribs != null) {\n delete this.attribs[name];\n }\n },\n\n getAttribute(name) {\n return this.attribs != null && this.attribs[name];\n },\n\n hasAttribute(name) {\n return this.attribs != null && this.attribs[name] != null;\n },\n\n getAttributeNode(name) {\n const value = this.getAttribute(name);\n if (value != null) return { specified: true, value };\n }\n};\n\n/**\n * Methods and descriptors to mix into the global document instance\n * @private\n */\nconst DocumentExtensions = {\n /** @extends htmlparser2.Document.prototype */\n\n // document is just an Element in htmlparser2, giving it a nodeType of ELEMENT_NODE.\n // TODO: verify if these are needed for css-select\n nodeType: {\n get() {\n return 9;\n }\n },\n\n contentType: {\n get() {\n return 'text/html';\n }\n },\n\n nodeName: {\n get() {\n return '#document';\n }\n },\n\n documentElement: {\n get() {\n // Find the first <html> element within the document\n return this.childNodes.filter(\n (child) => String(child.tagName).toLowerCase() === 'html'\n );\n }\n },\n\n compatMode: {\n get() {\n const compatMode = {\n 'no-quirks': 'CSS1Compat',\n quirks: 'BackCompat',\n 'limited-quirks': 'CSS1Compat'\n };\n return compatMode[treeAdapter.getDocumentMode(this)];\n }\n },\n\n body: {\n get() {\n return this.querySelector('body');\n }\n },\n\n createElement(name) {\n return treeAdapter.createElement(name, null, []);\n },\n\n createTextNode(text) {\n // there is no dedicated createTextNode equivalent exposed in htmlparser2's DOM\n const Node = this.$$Node;\n return new Node({\n type: 'text',\n data: text,\n parent: null,\n prev: null,\n next: null\n });\n },\n\n querySelector(sel) {\n return select.selectOne(sel, this.documentElement);\n },\n\n querySelectorAll(sel) {\n if (sel === ':root') {\n return this;\n }\n return select(sel, this.documentElement);\n }\n};\n\n/**\n * Essentially `Object.defineProperties()`, except function values are assigned as value descriptors for convenience.\n * @private\n */\nfunction defineProperties(obj, properties) {\n for (const i in properties) {\n const value = properties[i];\n Object.defineProperty(\n obj,\n i,\n typeof value === 'function' ? { value } : value\n );\n }\n}\n\n/**\n * Create a property descriptor defining a getter/setter pair alias for a named attribute.\n * @private\n */\nfunction reflectedProperty(attributeName) {\n return {\n get() {\n return this.getAttribute(attributeName);\n },\n set(value) {\n this.setAttribute(attributeName, value);\n }\n };\n}\n\n/**\n * Helper to get the text content of a node\n * https://github.com/fb55/domutils/blob/master/src/stringify.ts#L21\n * @private\n */\nfunction getText(node) {\n if (Array.isArray(node)) return node.map(getText).join('');\n if (treeAdapter.isElementNode(node))\n return node.name === 'br' ? '\\n' : getText(node.children);\n if (treeAdapter.isTextNode(node)) return node.data;\n return '';\n}\n","/**\n * Copyright 2018 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * use this file except in compliance with the License. You may obtain a copy of\n * the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */\n\nimport css from 'css';\n\n/**\n * Parse a textual CSS Stylesheet into a Stylesheet instance.\n * Stylesheet is a mutable ReworkCSS AST with format similar to CSSOM.\n * @see https://github.com/reworkcss/css\n * @private\n * @param {String} stylesheet\n * @returns {css.Stylesheet} ast\n */\nexport function parseStylesheet (stylesheet) {\n return css.parse(stylesheet);\n}\n\n/**\n * Serialize a ReworkCSS Stylesheet to a String of CSS.\n * @private\n * @param {css.Stylesheet} ast A Stylesheet to serialize, such as one returned from `parseStylesheet()`\n * @param {Object} options Options to pass to `css.stringify()`\n * @param {Boolean} [options.compress] Compress CSS output (removes comments, whitespace, etc)\n */\nexport function serializeStylesheet (ast, options) {\n return css.stringify(ast, options);\n}\n\n/**\n * Converts a walkStyleRules() iterator to mark nodes with `.$$remove=true` instead of actually removing them.\n * This means they can be removed in a second pass, allowing the first pass to be nondestructive (eg: to preserve mirrored sheets).\n * @private\n * @param {Function} iterator Invoked on each node in the tree. Return `false` to remove that node.\n * @returns {(rule) => void} nonDestructiveIterator\n */\nexport function markOnly (predicate) {\n return rule => {\n const sel = rule.selectors;\n if (predicate(rule) === false) {\n rule.$$remove = true;\n }\n rule.$$markedSelectors = rule.selectors;\n if (rule._other) {\n rule._other.$$markedSelectors = rule._other.selectors;\n }\n rule.selectors = sel;\n };\n}\n\n/**\n * Apply filtered selectors to a rule from a previous markOnly run.\n * @private\n * @param {css.Rule} rule The Rule to apply marked selectors to (if they exist).\n*/\nexport function applyMarkedSelectors (rule) {\n if (rule.$$markedSelectors) {\n rule.selectors = rule.$$markedSelectors;\n }\n if (rule._other) {\n applyMarkedSelectors(rule._other);\n }\n}\n\n/**\n * Recursively walk all rules in a stylesheet.\n * @private\n * @param {css.Rule} node A Stylesheet or Rule to descend into.\n * @param {Function} iterator Invoked on each node in the tree. Return `false` to remove that node.\n */\nexport function walkStyleRules (node, iterator) {\n if (node.stylesheet) return walkStyleRules(node.stylesheet, iterator);\n\n node.rules = node.rules.filter(rule => {\n if (rule.rules) {\n walkStyleRules(rule, iterator);\n }\n rule._other = undefined;\n rule.filterSelectors = filterSelectors;\n return iterator(rule) !== false;\n });\n}\n\n/**\n * Recursively walk all rules in two identical stylesheets, filtering nodes into one or the other based on a predicate.\n * @private\n * @param {css.Rule} node A Stylesheet or Rule to descend into.\n * @param {css.Rule} node2 A second tree identical to `node`\n * @param {Function} iterator Invoked on each node in the tree. Return `false` to remove that node from the first tree, true to remove it from the second.\n */\nexport function walkStyleRulesWithReverseMirror (node, node2, iterator) {\n if (node2 === null) return walkStyleRules(node, iterator);\n\n if (node.stylesheet) return walkStyleRulesWithReverseMirror(node.stylesheet, node2.stylesheet, iterator);\n\n [node.rules, node2.rules] = splitFilter(node.rules, node2.rules, (rule, index, rules, rules2) => {\n const rule2 = rules2[index];\n if (rule.rules) {\n walkStyleRulesWithReverseMirror(rule, rule2, iterator);\n }\n rule._other = rule2;\n rule.filterSelectors = filterSelectors;\n return iterator(rule) !== false;\n });\n}\n\n// Like [].filter(), but applies the opposite filtering result to a second copy of the Array without a second pass.\n// This is just a quicker version of generating the compliment of the set returned from a filter operation.\nfunction splitFilter (a, b, predicate) {\n const aOut = [];\n const bOut = [];\n for (let index = 0; index < a.length; index++) {\n if (predicate(a[index], index, a, b)) {\n aOut.push(a[index]);\n } else {\n bOut.push(a[index]);\n }\n }\n return [aOut, bOut];\n}\n\n// can be invoked on a style rule to subset its selectors (with reverse mirroring)\nfunction filterSelectors (predicate) {\n if (this._other) {\n const [a, b] = splitFilter(this.selectors, this._other.selectors, predicate);\n this.selectors = a;\n this._other.selectors = b;\n } else {\n this.selectors = this.selectors.filter(predicate);\n }\n}\n","import chalk from 'chalk';\n\nconst LOG_LEVELS = ['trace', 'debug', 'info', 'warn', 'error', 'silent'];\n\nexport const defaultLogger = {\n trace(msg) {\n console.trace(msg);\n },\n\n debug(msg) {\n console.debug(msg);\n },\n\n warn(msg) {\n console.warn(chalk.yellow(msg));\n },\n\n error(msg) {\n console.error(chalk.bold.red(msg));\n },\n\n info(msg) {\n console.info(chalk.bold.blue(msg));\n },\n\n silent() {}\n};\n\nexport function createLogger(logLevel) {\n const logLevelIdx = LOG_LEVELS.indexOf(logLevel);\n\n return LOG_LEVELS.reduce((logger, type, index) => {\n if (index >= logLevelIdx) {\n logger[type] = defaultLogger[type];\n } else {\n logger[type] = defaultLogger.silent;\n }\n return logger;\n }, {});\n}\n","/**\n * Copyright 2018 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * use this file except in compliance with the License. You may obtain a copy of\n * the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */\n\nimport path from 'path';\nimport prettyBytes from 'pretty-bytes';\nimport { createDocument, serializeDocument } from './dom';\nimport {\n parseStylesheet,\n serializeStylesheet,\n walkStyleRules,\n walkStyleRulesWithReverseMirror,\n markOnly,\n applyMarkedSelectors\n} from './css';\nimport { createLogger } from './util';\n\n/**\n * The mechanism to use for lazy-loading stylesheets.\n * Note: <kbd>JS</kbd> indicates a strategy requiring JavaScript (falls back to `<noscript>` unless disabled).\n *\n * - **default:** Move stylesheet links to the end of the document and insert preload meta tags in their place.\n * - **\"body\":** Move all external stylesheet links to the end of the document.\n * - **\"media\":** Load stylesheets asynchronously by adding `media=\"not x\"` and removing once loaded. <kbd>JS</kbd>\n * - **\"swap\":** Convert stylesheet links to preloads that swap to `rel=\"stylesheet\"` once loaded ([details](https://www.filamentgroup.com/lab/load-css-simpler/#the-code)). <kbd>JS</kbd>\n * - **\"swap-high\":** Use `<link rel=\"alternate stylesheet preload\">` and swap to `rel=\"stylesheet\"` once loaded ([details](http://filamentgroup.github.io/loadCSS/test/new-high.html)). <kbd>JS</kbd>\n * - **\"js\":** Inject an asynchronous CSS loader similar to [LoadCSS](https://github.com/filamentgroup/loadCSS) and use it to load stylesheets. <kbd>JS</kbd>\n * - **\"js-lazy\":** Like `\"js\"`, but the stylesheet is disabled until fully loaded.\n * @typedef {(default|'body'|'media'|'swap'|'swap-high'|'js'|'js-lazy')} PreloadStrategy\n * @public\n */\n\n/**\n * Controls which keyframes rules are inlined.\n *\n * - **\"critical\":** _(default)_ inline keyframes rules that are used by the critical CSS.\n * - **\"all\":** Inline all keyframes rules.\n * - **\"none\":** Remove all keyframes rules.\n * @typedef {('critical'|'all'|'none')} KeyframeStrategy\n * @private\n * @property {String} keyframes Which {@link KeyframeStrategy keyframe strategy} to use (default: `critical`)_\n */\n\n/**\n * Controls log level of the plugin. Specifies the level the logger should use. A logger will\n * not produce output for any log level beneath the specified level. Available levels and order\n * are:\n *\n * - **\"info\"** _(default)_\n * - **\"warn\"**\n * - **\"error\"**\n * - **\"trace\"**\n * - **\"debug\"**\n * - **\"silent\"**\n * @typedef {('info'|'warn'|'error'|'trace'|'debug'|'silent')} LogLevel\n * @public\n */\n\n/**\n * Custom logger interface:\n * @typedef {object} Logger\n * @public\n * @property {function(String)} trace - Prints a trace message\n * @property {function(String)} debug - Prints a debug message\n * @property {function(String)} info - Prints an information message\n * @property {function(String)} warn - Prints a warning message\n * @property {function(String)} error - Prints an error message\n */\n\n/**\n * All optional. Pass them to `new Critters({ ... })`.\n * @public\n * @typedef Options\n * @property {String} path Base path location of the CSS files _(default: `''`)_\n * @property {String} publicPath Public path of the CSS resources. This prefix is removed from the href _(default: `''`)_\n * @property {Boolean} external Inline styles from external stylesheets _(default: `true`)_\n * @property {Number} inlineThreshold Inline external stylesheets smaller than a given size _(default: `0`)_\n * @property {Number} minimumExternalSize If the non-critical external stylesheet would be below this size, just inline it _(default: `0`)_\n * @property {Boolean} pruneSource Remove inlined rules from the external stylesheet _(default: `false`)_\n * @property {Boolean} mergeStylesheets Merged inlined stylesheets into a single <style> tag _(default: `true`)_\n * @property {String[]} additionalStylesheets Glob for matching other stylesheets to be used while looking for critical CSS _(default: ``)_.\n * @property {String} preload Which {@link PreloadStrategy preload strategy} to use\n * @property {Boolean} noscriptFallback Add `<noscript>` fallback to JS-based strategies\n * @property {Boolean} inlineFonts Inline critical font-face rules _(default: `false`)_\n * @property {Boolean} preloadFonts Preloads critical fonts _(default: `true`)_\n * @property {Boolean} fonts Shorthand for setting `inlineFonts`+`preloadFonts`\n * - Values:\n * - `true` to inline critical font-face rules and preload the fonts\n * - `false` to don't inline any font-face rules and don't preload fonts\n * @property {String} keyframes Controls which keyframes rules are inlined.\n * - Values:\n * - `\"critical\"`: _(default)_ inline keyframes rules used by the critical CSS\n * - `\"all\"` inline all keyframes rules\n * - `\"none\"` remove all keyframes rules\n * @property {Boolean} compress Compress resulting critical CSS _(default: `true`)_\n * @property {String} logLevel Controls {@link LogLevel log level} of the plugin _(default: `\"info\"`)_\n * @property {object} logger Provide a custom logger interface {@link Logger logger}\n */\n\nexport default class Critters {\n /** @private */\n constructor(options) {\n this.options = Object.assign(\n {\n logLevel: 'info',\n path: '',\n publicPath: '',\n reduceInlineStyles: true,\n pruneSource: false,\n additionalStylesheets: []\n },\n options || {}\n );\n\n this.urlFilter = this.options.filter;\n if (this.urlFilter instanceof RegExp) {\n this.urlFilter = this.urlFilter.test.bind(this.urlFilter);\n }\n\n this.logger = this.options.logger || createLogger(this.options.logLevel);\n }\n\n /**\n * Read the contents of a file from the specified filesystem or disk\n */\n readFile(filename) {\n const fs = this.fs;\n return new Promise((resolve, reject) => {\n const callback = (err, data) => {\n if (err) reject(err);\n else resolve(data);\n };\n if (fs && fs.readFile) {\n fs.readFile(filename, callback);\n } else {\n require('fs').readFile(filename, 'utf8', callback);\n }\n });\n }\n\n /**\n * Apply critical CSS processing to the html\n */\n async process(html) {\n const start = process.hrtime.bigint();\n\n // Parse the generated HTML in a DOM we can mutate\n const document = createDocument(html);\n\n if (this.options.additionalStylesheets.length > 0) {\n this.embedAdditionalStylesheet(document);\n }\n\n // `external:false` skips processing of external sheets\n if (this.options.external !== false) {\n const externalSheets = [].slice.call(\n document.querySelectorAll('link[rel=\"stylesheet\"]')\n );\n\n await Promise.all(\n externalSheets.map((link) => this.embedLinkedStylesheet(link, document))\n );\n }\n\n // go through all the style tags in the document and reduce them to only critical CSS\n const styles = this.getAffectedStyleTags(document);\n\n await Promise.all(\n styles.map((style) => this.processStyle(style, document))\n );\n\n if (this.options.mergeStylesheets !== false && styles.length !== 0) {\n await this.mergeStylesheets(document);\n }\n\n // serialize the document back to HTML and we're done\n const output = serializeDocument(document);\n const end = process.hrtime.bigint();\n this.logger.info('Time ' + parseFloat(end - start) / 1000000.0);\n return output;\n }\n\n /**\n * Get the style tags that need processing\n */\n getAffectedStyleTags(document) {\n const styles = [].slice.call(document.querySelectorAll('style'));\n\n // `inline:false` skips processing of inline stylesheets\n if (this.options.reduceInlineStyles === false) {\n return styles.filter((style) => style.$$external);\n }\n return styles;\n }\n\n async mergeStylesheets(document) {\n const styles = this.getAffectedStyleTags(document);\n if (styles.length === 0) {\n this.logger.warn(\n 'Merging inline stylesheets into a single <style> tag skipped, no inline stylesheets to merge'\n );\n return;\n }\n const first = styles[0];\n let sheet = first.textContent;\n\n for (let i = 1; i < styles.length; i++) {\n const node = styles[i];\n sheet += node.textContent;\n node.remove();\n }\n\n first.textContent = sheet;\n }\n\n /**\n * Given href, find the corresponding CSS asset\n */\n async getCssAsset(href) {\n const outputPath = this.options.path;\n const publicPath = this.options.publicPath;\n\n // CHECK - the output path\n // path on disk (with output.publicPath removed)\n let normalizedPath = href.replace(/^\\//, '');\n const pathPrefix = (publicPath || '').replace(/(^\\/|\\/$)/g, '') + '/';\n if (normalizedPath.indexOf(pathPrefix) === 0) {\n normalizedPath = normalizedPath\n .substring(pathPrefix.length)\n .replace(/^\\//, '');\n }\n const filename = path.resolve(outputPath, normalizedPath);\n\n let sheet;\n\n try {\n sheet = await this.readFile(filename);\n } catch (e) {\n this.logger.warn(`Unable to locate stylesheet: ${filename}`);\n }\n\n return sheet;\n }\n\n checkInlineThreshold(link, style, sheet) {\n if (\n this.options.inlineThreshold &&\n sheet.length < this.options.inlineThreshold\n ) {\n const href = style.$$name;\n style.$$reduce = false;\n this.logger.info(\n `\\u001b[32mInlined all of ${href} (${sheet.length} was below the threshold of ${this.options.inlineThreshold})\\u001b[39m`\n );\n link.remove();\n return true;\n }\n\n return false;\n }\n\n /**\n * Inline the stylesheets from options.additionalStylesheets (assuming it passes `options.filter`)\n */\n async embedAdditionalStylesheet(document) {\n const styleSheetsIncluded = [];\n\n const sources = await Promise.all(\n this.options.additionalStylesheets.map((cssFile) => {\n if (styleSheetsIncluded.includes(cssFile)) {\n return;\n }\n styleSheetsIncluded.push(cssFile);\n const style = document.createElement('style');\n style.$$external = true;\n return this.getCssAsset(cssFile, style).then((sheet) => [sheet, style]);\n })\n );\n\n sources.forEach(([sheet, style]) => {\n if (!sheet) return;\n style.textContent = sheet;\n document.head.appendChild(style);\n });\n }\n\n /**\n * Inline the target stylesheet referred to by a <link rel=\"stylesheet\"> (assuming it passes `options.filter`)\n */\n async embedLinkedStylesheet(link, document) {\n const href = link.getAttribute('href');\n const media = link.getAttribute('media');\n\n const preloadMode = this.options.preload;\n\n // skip filtered resources, or network resources if no filter is provided\n if (this.urlFilter ? this.urlFilter(href) : !(href || '').match(/\\.css$/)) {\n return Promise.resolve();\n }\n\n // the reduced critical CSS gets injected into a new <style> tag\n const style = document.createElement('style');\n style.$$external = true;\n const sheet = await this.getCssAsset(href, style);\n\n if (!sheet) {\n return;\n }\n\n style.textContent = sheet;\n style.$$name = href;\n style.$$links = [link];\n link.parentNode.insertBefore(style, link);\n\n if (this.checkInlineThreshold(link, style, sheet)) {\n return;\n }\n\n // CSS loader is only injected for the first sheet, then this becomes an empty string\n let cssLoaderPreamble =\n \"function $loadcss(u,m,l){(l=document.createElement('link')).rel='stylesheet';l.href=u;document.head.appendChild(l)}\";\n const lazy = preloadMode === 'js-lazy';\n if (lazy) {\n cssLoaderPreamble = cssLoaderPreamble.replace(\n 'l.href',\n \"l.media='print';l.onload=function(){l.media=m};l.href\"\n );\n }\n\n // Allow disabling any mutation of the stylesheet link:\n if (preloadMode === false) return;\n\n let noscriptFallback = false;\n\n if (preloadMode === 'body') {\n document.body.appendChild(link);\n } else {\n link.setAttribute('rel', 'preload');\n link.setAttribute('as', 'style');\n if (preloadMode === 'js' || preloadMode === 'js-lazy') {\n const script = document.createElement('script');\n const js = `${cssLoaderPreamble}$loadcss(${JSON.stringify(href)}${\n lazy ? ',' + JSON.stringify(media || 'all') : ''\n })`;\n // script.appendChild(document.createTextNode(js));\n script.textContent = js;\n link.parentNode.insertBefore(script, link.nextSibling);\n style.$$links.push(script);\n cssLoaderPreamble = '';\n noscriptFallback = true;\n } else if (preloadMode === 'media') {\n // @see https://github.com/filamentgroup/loadCSS/blob/af1106cfe0bf70147e22185afa7ead96c01dec48/src/loadCSS.js#L26\n link.setAttribute('rel', 'stylesheet');\n link.removeAttribute('as');\n link.setAttribute('media', 'print');\n link.setAttribute('onload', `this.media='${media || 'all'}'`);\n noscriptFallback = true;\n } else if (preloadMode === 'swap-high') {\n // @see http://filamentgroup.github.io/loadCSS/test/new-high.html\n link.setAttribute('rel', 'alternate stylesheet preload');\n link.setAttribute('title', 'styles');\n link.setAttribute('onload', `this.title='';this.rel='stylesheet'`);\n noscriptFallback = true;\n } else if (preloadMode === 'swap') {\n link.setAttribute('onload', \"this.rel='stylesheet'\");\n noscriptFallback = true;\n } else {\n const bodyLink = document.createElement('link');\n bodyLink.setAttribute('rel', 'stylesheet');\n if (media) bodyLink.setAttribute('media', media);\n bodyLink.setAttribute('href', href);\n document.body.appendChild(bodyLink);\n style.$$links.push(bodyLink);\n }\n }\n\n if (this.options.noscriptFallback !== false && noscriptFallback) {\n const noscript = document.createElement('noscript');\n const noscriptLink = document.createElement('link');\n noscriptLink.setAttribute('rel', 'stylesheet');\n noscriptLink.setAttribute('href', href);\n if (media) noscriptLink.setAttribute('media', media);\n noscript.appendChild(noscriptLink);\n link.parentNode.insertBefore(noscript, link.nextSibling);\n style.$$links.push(noscript);\n }\n }\n\n /**\n * Prune the source CSS files\n */\n pruneSource(style, before, sheetInverse) {\n // if external stylesheet would be below minimum size, just inline everything\n const minSize = this.options.minimumExternalSize;\n const name = style.$$name;\n if (minSize && sheetInverse.length < minSize) {\n this.logger.info(\n `\\u001b[32mInlined all of ${name} (non-critical external stylesheet would have been ${sheetInverse.length}b, which was below the threshold of ${minSize})\\u001b[39m`\n );\n style.textContent = before;\n // remove any associated external resources/loaders:\n if (style.$$links) {\n for (const link of style.$$links) {\n const parent = link.parentNode;\n if (parent) parent.removeChild(link);\n }\n }\n\n return true;\n }\n\n return false;\n }\n\n /**\n * Parse the stylesheet within a <style> element, then reduce it to contain only rules used by the document.\n */\n async processStyle(style, document) {\n if (style.$$reduce === false) return;\n\n const name = style.$$name ? style.$$name.replace(/^\\//, '') : 'inline CSS';\n const options = this.options;\n // const document = style.ownerDocument;\n const head = document.querySelector('head');\n let keyframesMode = options.keyframes || 'critical';\n // we also accept a boolean value for options.keyframes\n if (keyframesMode === true) keyframesMode = 'all';\n if (keyframesMode === false) keyframesMode = 'none';\n\n let sheet = style.textContent;\n\n // store a reference to the previous serialized stylesheet for reporting stats\n const before = sheet;\n\n // Skip empty stylesheets\n if (!sheet) return;\n\n const ast = parseStylesheet(sheet);\n const astInverse = options.pruneSource ? parseStylesheet(sheet) : null;\n\n // a string to search for font names (very loose)\n let criticalFonts = '';\n\n const failedSelectors = [];\n\n const criticalKeyframeNames = [];\n\n // Walk all CSS rules, marking unused rules with `.$$remove=true` for removal in the second pass.\n // This first pass is also used to collect font and keyframe usage used in the second pass.\n walkStyleRules(\n ast,\n markOnly((rule) => {\n if (rule.type === 'rule') {\n // Filter the selector list down to only those match\n rule.filterSelectors((sel) => {\n // Strip pseudo-elements and pseudo-classes, since we only care that their associated elements exist.\n // This means any selector for a pseudo-element or having a pseudo-class will be inlined if the rest of the selector matches.\n if (sel === ':root' || sel.match(/^::?(before|after)$/)) {\n return true;\n }\n sel = sel\n .replace(/(?<!\\\\)::?[a-z-]+(?![a-z-(])/gi, '')\n .replace(/::?not\\(\\s*\\)/g, '')\n .trim();\n if (!sel) return false;\n\n try {\n return document.querySelector(sel) != null;\n } catch (e) {\n failedSelectors.push(sel + ' -> ' + e.message);\n return false;\n }\n });\n // If there are no matched selectors, remove the rule:\n if (rule.selectors.length === 0) {\n return false;\n }\n\n if (rule.declarations) {\n for (let i = 0; i < rule.declarations.length; i++) {\n const decl = rule.declarations[i];\n\n // detect used fonts\n if (decl.property && decl.property.match(/\\bfont(-family)?\\b/i)) {\n criticalFonts += ' ' + decl.value;\n }\n\n // detect used keyframes\n if (\n decl.property === 'animation' ||\n decl.property === 'animation-name'\n ) {\n // @todo: parse animation declarations and extract only the name. for now we'll do a lazy match.\n const names = decl.value.split(/\\s+/);\n for (let j = 0; j < names.length; j++) {\n const name = names[j].trim();\n if (name) criticalKeyframeNames.push(name);\n }\n }\n }\n }\n }\n\n // keep font rules, they're handled in the second pass:\n if (rule.type === 'font-face') return;\n\n // If there are no remaining rules, remove the whole rule:\n const rules = rule.rules && rule.rules.filter((rule) => !rule.$$remove);\n return !rules || rules.length !== 0;\n })\n );\n\n if (failedSelectors.length !== 0) {\n this.logger.warn(\n `${\n failedSelectors.length\n } rules skipped due to selector errors:\\n ${failedSelectors.join(\n '\\n '\n )}`\n );\n }\n\n const shouldPreloadFonts =\n options.fonts === true || options.preloadFonts === true;\n const shouldInlineFonts =\n options.fonts !== false && options.inlineFonts === true;\n\n const preloadedFonts = [];\n // Second pass, using data picked up from the first\n walkStyleRulesWithReverseMirror(ast, astInverse, (rule) => {\n // remove any rules marked in the first pass\n if (rule.$$remove === true) return false;\n\n applyMarkedSelectors(rule);\n\n // prune @keyframes rules\n if (rule.type === 'keyframes') {\n if (keyframesMode === 'none') return false;\n if (keyframesMode === 'all') return true;\n return criticalKeyframeNames.indexOf(rule.name) !== -1;\n }\n\n // prune @font-face rules\n if (rule.type === 'font-face') {\n let family, src;\n for (let i = 0; i < rule.declarations.length; i++) {\n const decl = rule.declarations[i];\n if (decl.property === 'src') {\n // @todo parse this properly and generate multiple preloads with type=\"font/woff2\" etc\n src = (decl.value.match(/url\\s*\\(\\s*(['\"]?)(.+?)\\1\\s*\\)/) || [])[2];\n } else if (decl.property === 'font-family') {\n family = decl.value;\n }\n }\n\n if (src && shouldPreloadFonts && preloadedFonts.indexOf(src) === -1) {\n preloadedFonts.push(src);\n const preload = document.createElement('link');\n preload.setAttribute('rel', 'preload');\n preload.setAttribute('as', 'font');\n preload.setAttribute('crossorigin', 'anonymous');\n preload.setAttribute('href', src.trim());\n head.appendChild(preload);\n }\n\n // if we're missing info, if the font is unused, or if critical font inlining is disabled, remove the rule:\n if (\n !family ||\n !src ||\n criticalFonts.indexOf(family) === -1 ||\n !shouldInlineFonts\n ) {\n return false;\n }\n }\n });\n\n sheet = serializeStylesheet(ast, {\n compress: this.options.compress !== false\n }).trim();\n\n // If all rules were removed, get rid of the style element entirely\n if (sheet.trim().length === 0) {\n if (style.parentNode) {\n style.remove();\n }\n return;\n }\n\n let afterText = '';\n let styleInlinedCompletely = false;\n if (options.pruneSource) {\n const sheetInverse = serializeStylesheet(astInverse, {\n compress: this.options.compress !== false\n });\n\n styleInlinedCompletely = this.pruneSource(style, before, sheetInverse);\n\n if (styleInlinedCompletely) {\n const percent = (sheetInverse.length / before.length) * 100;\n afterText = `, reducing non-inlined size ${\n percent | 0\n }% to ${prettyBytes(sheetInverse.length)}`;\n }\n }\n\n // replace the inline stylesheet with its critical'd counterpart\n if (!styleInlinedCompletely) {\n style.textContent = sheet;\n }\n\n // output stats\n const percent = ((sheet.length / before.length) * 100) | 0;\n this.logger.info(\n '\\u001b[32mInlined ' +\n prettyBytes(sheet.length) +\n ' (' +\n percent +\n '% of original ' +\n prettyBytes(before.length) +\n ') of ' +\n name +\n afterText +\n '.\\u001b[39m'\n );\n }\n}\n"],"names":["this","require$$0","require$$1","require$$2","require$$3","decode_1","encode","encode_1","foreignNames","entities","ElementType","getOuterHTML","isTag","require$$4","require$$5","BaseFuncs","compile","parse","DomUtils","falseFunc","getText","hasAttrib","trueFunc","getNCheck","getParent","getChildren","getSiblings","getName","attributes","procedure","sortRules","Rules","filters","Pseudos","existsOne","findOne","findAll","compileUnsafe","compileToken","treeAdapter","require","PARSE5_OPTS","createDocument","html","document","parse5","defineProperties","DocumentExtensions","scratch","createElement","$$Node","constructor","elementProto","Object","getPrototypeOf","ElementExtensions","ownerDocument","serializeDocument","serialize","nodeName","get","tagName","toUpperCase","id","reflectedProperty","className","insertBefore","child","referenceNode","appendChild","removeChild","detachNode","remove","textContent","set","text","children","insertText","setAttribute","name","value","attribs","removeAttribute","getAttribute","hasAttribute","getAttributeNode","specified","nodeType","contentType","documentElement","childNodes","filter","String","toLowerCase","compatMode","quirks","getDocumentMode","body","querySelector","createTextNode","Node","type","data","parent","prev","next","sel","select","selectOne","querySelectorAll","obj","properties","i","defineProperty","attributeName","node","Array","isArray","map","join","isElementNode","isTextNode","parseStylesheet","stylesheet","css","serializeStylesheet","ast","options","stringify","markOnly","predicate","rule","selectors","$$remove","$$markedSelectors","_other","applyMarkedSelectors","walkStyleRules","iterator","rules","undefined","filterSelectors","walkStyleRulesWithReverseMirror","node2","splitFilter","index","rules2","rule2","a","b","aOut","bOut","length","push","LOG_LEVELS","defaultLogger","trace","msg","console","debug","warn","chalk","yellow","error","bold","red","info","blue","silent","createLogger","logLevel","logLevelIdx","indexOf","reduce","logger","recover","result","e","then","Critters","assign","path","publicPath","reduceInlineStyles","pruneSource","additionalStylesheets","urlFilter","RegExp","test","bind","readFile","filename","fs","Promise","resolve","reject","callback","err","process","styles","getAffectedStyleTags","all","style","processStyle","output","end","hrtime","bigint","parseFloat","start","mergeStylesheets","embedAdditionalStylesheet","external","externalSheets","slice","call","link","embedLinkedStylesheet","$$external","first","sheet","getCssAsset","href","outputPath","normalizedPath","replace","pathPrefix","substring","checkInlineThreshold","inlineThreshold","$$name","$$reduce","styleSheetsIncluded","cssFile","includes","sources","forEach","head","media","preloadMode","preload","match","$$links","parentNode","cssLoaderPreamble","lazy","noscriptFallback","script","js","JSON","nextSibling","bodyLink","noscript","noscriptLink","before","sheetInverse","minSize","minimumExternalSize","keyframesMode","keyframes","astInverse","criticalFonts","failedSelectors","criticalKeyframeNames","trim","message","declarations","decl","property","names","split","j","shouldPreloadFonts","fonts","preloadFonts","shouldInlineFonts","inlineFonts","preloadedFonts","family","src","compress","afterText","styleInlinedCompletely","percent","prettyBytes"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAA;CACA,kBAAc,GAAG;CACjB,CAAC,IAAI,EAAE,MAAM;CACb,CAAC,SAAS,EAAE,WAAW;CACvB,CAAC,OAAO,EAAE,SAAS;CACnB,CAAC,MAAM,EAAE,QAAQ;CACjB,CAAC,KAAK,EAAE,OAAO;CACf,CAAC,GAAG,EAAE,KAAK;CACX,CAAC,KAAK,EAAE,OAAO;CACf,CAAC,OAAO,EAAE,SAAS;AACnB;CACA,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC;CACtB,EAAE,OAAO,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;CAChF,EAAE;CACF,CAAC;;;ACdD,CACA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;CAC9D;CACA;CACA;CACA;CACA;CACA,SAAS,KAAK,CAAC,IAAI,EAAE;CACrB,IAAI,QAAQ,IAAI,CAAC,IAAI,KAAK,KAAK;CAC/B,QAAQ,IAAI,CAAC,IAAI,KAAK,QAAQ;CAC9B,QAAQ,IAAI,CAAC,IAAI,KAAK,OAAO,cAAc;CAC3C,CAAC;CACD,aAAa,GAAG,KAAK,CAAC;CACtB;CACA,YAAY,GAAG,MAAM,YAAY;CACjC,iBAAiB,GAAG,WAAW,iBAAiB;CAChD,eAAe,GAAG,SAAS,eAAe;CAC1C,cAAc,GAAG,QAAQ,cAAc;CACvC,aAAa,GAAG,OAAO,aAAa;CACpC,WAAW,GAAG,KAAK,WAAW;CAC9B,aAAa,GAAG,OAAO,aAAa;CACpC,eAAe,GAAG,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"} |
---|