{"version":3,"file":"bundle.min.js","sources":["../lib/utils/index.js","../lib/parse.js","../lib/ast.js","../lib/transform.js","../lib/utils/first_in_statement.js","../lib/output.js","../lib/scope.js","../lib/compress/index.js","../tools/domprops.js","../lib/propmangle.js","../lib/minify.js","../lib/sourcemap.js","../tools/node.js","../lib/mozilla-ast.js"],"sourcesContent":["/***********************************************************************\n\n A JavaScript tokenizer / parser / beautifier / compressor.\n https://github.com/mishoo/UglifyJS2\n\n -------------------------------- (C) ---------------------------------\n\n Author: Mihai Bazon\n \n http://mihai.bazon.net/blog\n\n Distributed under the BSD license:\n\n Copyright 2012 (c) Mihai Bazon \n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions\n are met:\n\n * Redistributions of source code must retain the above\n copyright notice, this list of conditions and the following\n disclaimer.\n\n * Redistributions in binary form must reproduce the above\n copyright notice, this list of conditions and the following\n disclaimer in the documentation and/or other materials\n provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY\n EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE\n LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,\n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR\n TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF\n THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n SUCH DAMAGE.\n\n ***********************************************************************/\n\n\"use strict\";\n\nfunction characters(str) {\n return str.split(\"\");\n}\n\nfunction member(name, array) {\n return array.includes(name);\n}\n\nclass DefaultsError extends Error {\n constructor(msg, defs) {\n super();\n\n this.name = \"DefaultsError\";\n this.message = msg;\n this.defs = defs;\n }\n}\n\nfunction defaults(args, defs, croak) {\n if (args === true)\n args = {};\n const ret = args || {};\n if (croak) for (const i in ret) if (HOP(ret, i) && !HOP(defs, i))\n throw new DefaultsError(\"`\" + i + \"` is not a supported option\", defs);\n for (const i in defs) if (HOP(defs, i)) {\n if (!args || !HOP(args, i)) {\n ret[i] = defs[i];\n } else if (i === \"ecma\") {\n let ecma = args[i] | 0;\n if (ecma > 5 && ecma < 2015) ecma += 2009;\n ret[i] = ecma;\n } else {\n ret[i] = (args && HOP(args, i)) ? args[i] : defs[i];\n }\n }\n return ret;\n}\n\nfunction noop() {}\nfunction return_false() { return false; }\nfunction return_true() { return true; }\nfunction return_this() { return this; }\nfunction return_null() { return null; }\n\nvar MAP = (function() {\n function MAP(a, f, backwards) {\n var ret = [], top = [], i;\n function doit() {\n var val = f(a[i], i);\n var is_last = val instanceof Last;\n if (is_last) val = val.v;\n if (val instanceof AtTop) {\n val = val.v;\n if (val instanceof Splice) {\n top.push.apply(top, backwards ? val.v.slice().reverse() : val.v);\n } else {\n top.push(val);\n }\n } else if (val !== skip) {\n if (val instanceof Splice) {\n ret.push.apply(ret, backwards ? val.v.slice().reverse() : val.v);\n } else {\n ret.push(val);\n }\n }\n return is_last;\n }\n if (Array.isArray(a)) {\n if (backwards) {\n for (i = a.length; --i >= 0;) if (doit()) break;\n ret.reverse();\n top.reverse();\n } else {\n for (i = 0; i < a.length; ++i) if (doit()) break;\n }\n } else {\n for (i in a) if (HOP(a, i)) if (doit()) break;\n }\n return top.concat(ret);\n }\n MAP.at_top = function(val) { return new AtTop(val); };\n MAP.splice = function(val) { return new Splice(val); };\n MAP.last = function(val) { return new Last(val); };\n var skip = MAP.skip = {};\n function AtTop(val) { this.v = val; }\n function Splice(val) { this.v = val; }\n function Last(val) { this.v = val; }\n return MAP;\n})();\n\nfunction make_node(ctor, orig, props) {\n if (!props) props = {};\n if (orig) {\n if (!props.start) props.start = orig.start;\n if (!props.end) props.end = orig.end;\n }\n return new ctor(props);\n}\n\nfunction push_uniq(array, el) {\n if (!array.includes(el))\n array.push(el);\n}\n\nfunction string_template(text, props) {\n return text.replace(/{(.+?)}/g, function(str, p) {\n return props && props[p];\n });\n}\n\nfunction remove(array, el) {\n for (var i = array.length; --i >= 0;) {\n if (array[i] === el) array.splice(i, 1);\n }\n}\n\nfunction mergeSort(array, cmp) {\n if (array.length < 2) return array.slice();\n function merge(a, b) {\n var r = [], ai = 0, bi = 0, i = 0;\n while (ai < a.length && bi < b.length) {\n cmp(a[ai], b[bi]) <= 0\n ? r[i++] = a[ai++]\n : r[i++] = b[bi++];\n }\n if (ai < a.length) r.push.apply(r, a.slice(ai));\n if (bi < b.length) r.push.apply(r, b.slice(bi));\n return r;\n }\n function _ms(a) {\n if (a.length <= 1)\n return a;\n var m = Math.floor(a.length / 2), left = a.slice(0, m), right = a.slice(m);\n left = _ms(left);\n right = _ms(right);\n return merge(left, right);\n }\n return _ms(array);\n}\n\nfunction makePredicate(words) {\n if (!Array.isArray(words)) words = words.split(\" \");\n\n return new Set(words);\n}\n\nfunction map_add(map, key, value) {\n if (map.has(key)) {\n map.get(key).push(value);\n } else {\n map.set(key, [ value ]);\n }\n}\n\nfunction map_from_object(obj) {\n var map = new Map();\n for (var key in obj) {\n if (HOP(obj, key) && key.charAt(0) === \"$\") {\n map.set(key.substr(1), obj[key]);\n }\n }\n return map;\n}\n\nfunction map_to_object(map) {\n var obj = Object.create(null);\n map.forEach(function (value, key) {\n obj[\"$\" + key] = value;\n });\n return obj;\n}\n\nfunction HOP(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nfunction keep_name(keep_setting, name) {\n return keep_setting === true\n || (keep_setting instanceof RegExp && keep_setting.test(name));\n}\n\nvar lineTerminatorEscape = {\n \"\\n\": \"n\",\n \"\\r\": \"r\",\n \"\\u2028\": \"u2028\",\n \"\\u2029\": \"u2029\",\n};\nfunction regexp_source_fix(source) {\n // V8 does not escape line terminators in regexp patterns in node 12\n return source.replace(/[\\n\\r\\u2028\\u2029]/g, function (match, offset) {\n var escaped = source[offset - 1] == \"\\\\\"\n && (source[offset - 2] != \"\\\\\"\n || /(?:^|[^\\\\])(?:\\\\{2})*$/.test(source.slice(0, offset - 1)));\n return (escaped ? \"\" : \"\\\\\") + lineTerminatorEscape[match];\n });\n}\nconst all_flags = \"gimuy\";\nfunction sort_regexp_flags(flags) {\n const existing_flags = new Set(flags.split(\"\"));\n let out = \"\";\n for (const flag of all_flags) {\n if (existing_flags.has(flag)) {\n out += flag;\n existing_flags.delete(flag);\n }\n }\n if (existing_flags.size) {\n // Flags Terser doesn't know about\n existing_flags.forEach(flag => { out += flag; });\n }\n return out;\n}\n\nfunction has_annotation(node, annotation) {\n return node._annotations & annotation;\n}\n\nfunction set_annotation(node, annotation) {\n node._annotations |= annotation;\n}\n\nexport {\n characters,\n defaults,\n HOP,\n keep_name,\n make_node,\n makePredicate,\n map_add,\n map_from_object,\n map_to_object,\n MAP,\n member,\n mergeSort,\n noop,\n push_uniq,\n regexp_source_fix,\n remove,\n return_false,\n return_null,\n return_this,\n return_true,\n sort_regexp_flags,\n string_template,\n has_annotation,\n set_annotation\n};\n","/***********************************************************************\n\n A JavaScript tokenizer / parser / beautifier / compressor.\n https://github.com/mishoo/UglifyJS2\n\n -------------------------------- (C) ---------------------------------\n\n Author: Mihai Bazon\n \n http://mihai.bazon.net/blog\n\n Distributed under the BSD license:\n\n Copyright 2012 (c) Mihai Bazon \n Parser based on parse-js (http://marijn.haverbeke.nl/parse-js/).\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions\n are met:\n\n * Redistributions of source code must retain the above\n copyright notice, this list of conditions and the following\n disclaimer.\n\n * Redistributions in binary form must reproduce the above\n copyright notice, this list of conditions and the following\n disclaimer in the documentation and/or other materials\n provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY\n EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE\n LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,\n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR\n TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF\n THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n SUCH DAMAGE.\n\n ***********************************************************************/\n\n\"use strict\";\n\nimport {\n characters,\n defaults,\n HOP,\n makePredicate,\n set_annotation,\n} from \"./utils/index.js\";\nimport {\n AST_Accessor,\n AST_Array,\n AST_Arrow,\n AST_Assign,\n AST_Await,\n AST_BigInt,\n AST_Binary,\n AST_BlockStatement,\n AST_Break,\n AST_Call,\n AST_Case,\n AST_Catch,\n AST_ClassExpression,\n AST_ConciseMethod,\n AST_Conditional,\n AST_Const,\n AST_Continue,\n AST_Debugger,\n AST_Default,\n AST_DefaultAssign,\n AST_DefClass,\n AST_Definitions,\n AST_Defun,\n AST_Destructuring,\n AST_Directive,\n AST_Do,\n AST_Dot,\n AST_EmptyStatement,\n AST_Expansion,\n AST_Export,\n AST_False,\n AST_Finally,\n AST_For,\n AST_ForIn,\n AST_ForOf,\n AST_Function,\n AST_Hole,\n AST_If,\n AST_Import,\n AST_IterationStatement,\n AST_Label,\n AST_LabeledStatement,\n AST_LabelRef,\n AST_Lambda,\n AST_Let,\n AST_NameMapping,\n AST_New,\n AST_NewTarget,\n AST_Node,\n AST_Null,\n AST_Number,\n AST_Object,\n AST_ObjectGetter,\n AST_ObjectKeyVal,\n AST_ObjectProperty,\n AST_ObjectSetter,\n AST_PrefixedTemplateString,\n AST_PropAccess,\n AST_RegExp,\n AST_Return,\n AST_Sequence,\n AST_SimpleStatement,\n AST_String,\n AST_Sub,\n AST_Super,\n AST_Switch,\n AST_SymbolCatch,\n AST_SymbolClass,\n AST_SymbolConst,\n AST_SymbolDeclaration,\n AST_SymbolDefClass,\n AST_SymbolDefun,\n AST_SymbolExport,\n AST_SymbolExportForeign,\n AST_SymbolFunarg,\n AST_SymbolImport,\n AST_SymbolImportForeign,\n AST_SymbolLambda,\n AST_SymbolLet,\n AST_SymbolMethod,\n AST_SymbolRef,\n AST_SymbolVar,\n AST_TemplateSegment,\n AST_TemplateString,\n AST_This,\n AST_Throw,\n AST_Token,\n AST_Toplevel,\n AST_True,\n AST_Try,\n AST_UnaryPostfix,\n AST_UnaryPrefix,\n AST_Var,\n AST_VarDef,\n AST_While,\n AST_With,\n AST_Yield,\n _INLINE,\n _NOINLINE,\n _PURE\n} from \"./ast.js\";\n\nvar KEYWORDS = \"break case catch class const continue debugger default delete do else export extends finally for function if in instanceof let new return switch throw try typeof var void while with\";\nvar KEYWORDS_ATOM = \"false null true\";\nvar RESERVED_WORDS = \"enum implements import interface package private protected public static super this \" + KEYWORDS_ATOM + \" \" + KEYWORDS;\nvar KEYWORDS_BEFORE_EXPRESSION = \"return new delete throw else case yield await\";\n\nKEYWORDS = makePredicate(KEYWORDS);\nRESERVED_WORDS = makePredicate(RESERVED_WORDS);\nKEYWORDS_BEFORE_EXPRESSION = makePredicate(KEYWORDS_BEFORE_EXPRESSION);\nKEYWORDS_ATOM = makePredicate(KEYWORDS_ATOM);\n\nvar OPERATOR_CHARS = makePredicate(characters(\"+-*&%=<>!?|~^\"));\n\nvar RE_NUM_LITERAL = /[0-9a-f]/i;\nvar RE_HEX_NUMBER = /^0x[0-9a-f]+$/i;\nvar RE_OCT_NUMBER = /^0[0-7]+$/;\nvar RE_ES6_OCT_NUMBER = /^0o[0-7]+$/i;\nvar RE_BIN_NUMBER = /^0b[01]+$/i;\nvar RE_DEC_NUMBER = /^\\d*\\.?\\d*(?:e[+-]?\\d*(?:\\d\\.?|\\.?\\d)\\d*)?$/i;\nvar RE_BIG_INT = /^(0[xob])?[0-9a-f]+n$/i;\n\nvar OPERATORS = makePredicate([\n \"in\",\n \"instanceof\",\n \"typeof\",\n \"new\",\n \"void\",\n \"delete\",\n \"++\",\n \"--\",\n \"+\",\n \"-\",\n \"!\",\n \"~\",\n \"&\",\n \"|\",\n \"^\",\n \"*\",\n \"**\",\n \"/\",\n \"%\",\n \">>\",\n \"<<\",\n \">>>\",\n \"<\",\n \">\",\n \"<=\",\n \">=\",\n \"==\",\n \"===\",\n \"!=\",\n \"!==\",\n \"?\",\n \"=\",\n \"+=\",\n \"-=\",\n \"/=\",\n \"*=\",\n \"**=\",\n \"%=\",\n \">>=\",\n \"<<=\",\n \">>>=\",\n \"|=\",\n \"^=\",\n \"&=\",\n \"&&\",\n \"||\"\n]);\n\nvar WHITESPACE_CHARS = makePredicate(characters(\" \\u00a0\\n\\r\\t\\f\\u000b\\u200b\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\uFEFF\"));\n\nvar NEWLINE_CHARS = makePredicate(characters(\"\\n\\r\\u2028\\u2029\"));\n\nvar PUNC_AFTER_EXPRESSION = makePredicate(characters(\";]),:\"));\n\nvar PUNC_BEFORE_EXPRESSION = makePredicate(characters(\"[{(,;:\"));\n\nvar PUNC_CHARS = makePredicate(characters(\"[]{}(),;:\"));\n\n/* -----[ Tokenizer ]----- */\n\n// surrogate safe regexps adapted from https://github.com/mathiasbynens/unicode-8.0.0/tree/89b412d8a71ecca9ed593d9e9fa073ab64acfebe/Binary_Property\nvar UNICODE = {\n ID_Start: /[A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B4\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309B-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF30-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF19]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDEC0-\\uDEF8]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50\\uDF93-\\uDF9F]|\\uD82C[\\uDC00\\uDC01]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD83A[\\uDC00-\\uDCC4]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1]|\\uD87E[\\uDC00-\\uDE1D]/,\n ID_Continue: /[0-9A-Z_a-z\\xAA\\xB5\\xB7\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B4\\u08E3-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AF9\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D5F-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1369-\\u1371\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF30-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC6F\\uDC7F-\\uDCBA\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDCA-\\uDDCC\\uDDD0-\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3C-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB7\\uDEC0-\\uDEC9\\uDF00-\\uDF19\\uDF1D-\\uDF2B\\uDF30-\\uDF39]|\\uD806[\\uDCA0-\\uDCE9\\uDCFF\\uDEC0-\\uDEF8]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50-\\uDF7E\\uDF8F-\\uDF9F]|\\uD82C[\\uDC00\\uDC01]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1]|\\uD87E[\\uDC00-\\uDE1D]|\\uDB40[\\uDD00-\\uDDEF]/,\n};\n\nfunction get_full_char(str, pos) {\n var char = str.charAt(pos);\n if (is_surrogate_pair_head(char)) {\n var next = str.charAt(pos + 1);\n if (is_surrogate_pair_tail(next)) {\n return char + next;\n }\n } else if (is_surrogate_pair_tail(char)) {\n var prev = str.charAt(pos - 1);\n if (is_surrogate_pair_head(prev)) {\n return prev + char;\n }\n }\n return char;\n}\n\nfunction get_full_char_code(str, pos) {\n // https://en.wikipedia.org/wiki/Universal_Character_Set_characters#Surrogates\n if (is_surrogate_pair_head(str.charAt(pos))) {\n return 0x10000 + (str.charCodeAt(pos) - 0xd800 << 10) + str.charCodeAt(pos + 1) - 0xdc00;\n }\n return str.charCodeAt(pos);\n}\n\nfunction get_full_char_length(str) {\n var surrogates = 0;\n\n for (var i = 0; i < str.length; i++) {\n if (is_surrogate_pair_head(str.charCodeAt(i))) {\n if (is_surrogate_pair_tail(str.charCodeAt(i + 1))) {\n surrogates++;\n i++;\n }\n }\n }\n\n return str.length - surrogates;\n}\n\nfunction from_char_code(code) {\n // Based on https://github.com/mathiasbynens/String.fromCodePoint/blob/master/fromcodepoint.js\n if (code > 0xFFFF) {\n code -= 0x10000;\n return (String.fromCharCode((code >> 10) + 0xD800) +\n String.fromCharCode((code % 0x400) + 0xDC00));\n }\n return String.fromCharCode(code);\n}\n\nfunction is_surrogate_pair_head(code) {\n if (typeof code === \"string\")\n code = code.charCodeAt(0);\n\n return code >= 0xd800 && code <= 0xdbff;\n}\n\nfunction is_surrogate_pair_tail(code) {\n if (typeof code === \"string\")\n code = code.charCodeAt(0);\n return code >= 0xdc00 && code <= 0xdfff;\n}\n\nfunction is_digit(code) {\n return code >= 48 && code <= 57;\n}\n\nfunction is_identifier_start(ch) {\n var code = ch.charCodeAt(0);\n return UNICODE.ID_Start.test(ch) || code == 36 || code == 95;\n}\n\nfunction is_identifier_char(ch) {\n var code = ch.charCodeAt(0);\n return UNICODE.ID_Continue.test(ch)\n || code == 36\n || code == 95\n || code == 8204 // \\u200c: zero-width non-joiner \n || code == 8205 // \\u200d: zero-width joiner (in my ECMA-262 PDF, this is also 200c)\n ;\n}\n\nfunction is_identifier_string(str) {\n return /^[a-z_$][a-z0-9_$]*$/i.test(str);\n}\n\nfunction parse_js_number(num, allow_e = true) {\n if (!allow_e && num.includes(\"e\")) {\n return NaN;\n }\n if (RE_HEX_NUMBER.test(num)) {\n return parseInt(num.substr(2), 16);\n } else if (RE_OCT_NUMBER.test(num)) {\n return parseInt(num.substr(1), 8);\n } else if (RE_ES6_OCT_NUMBER.test(num)) {\n return parseInt(num.substr(2), 8);\n } else if (RE_BIN_NUMBER.test(num)) {\n return parseInt(num.substr(2), 2);\n } else if (RE_DEC_NUMBER.test(num)) {\n return parseFloat(num);\n } else {\n var val = parseFloat(num);\n if (val == num) return val;\n }\n}\n\nclass JS_Parse_Error extends Error {\n constructor(message, filename, line, col, pos) {\n super();\n\n this.name = \"SyntaxError\";\n this.message = message;\n this.filename = filename;\n this.line = line;\n this.col = col;\n this.pos = pos;\n }\n}\n\nfunction js_error(message, filename, line, col, pos) {\n throw new JS_Parse_Error(message, filename, line, col, pos);\n}\n\nfunction is_token(token, type, val) {\n return token.type == type && (val == null || token.value == val);\n}\n\nvar EX_EOF = {};\n\nfunction tokenizer($TEXT, filename, html5_comments, shebang) {\n var S = {\n text : $TEXT,\n filename : filename,\n pos : 0,\n tokpos : 0,\n line : 1,\n tokline : 0,\n col : 0,\n tokcol : 0,\n newline_before : false,\n regex_allowed : false,\n brace_counter : 0,\n template_braces : [],\n comments_before : [],\n directives : {},\n directive_stack : []\n };\n\n function peek() { return get_full_char(S.text, S.pos); }\n\n function next(signal_eof, in_string) {\n var ch = get_full_char(S.text, S.pos++);\n if (signal_eof && !ch)\n throw EX_EOF;\n if (NEWLINE_CHARS.has(ch)) {\n S.newline_before = S.newline_before || !in_string;\n ++S.line;\n S.col = 0;\n if (ch == \"\\r\" && peek() == \"\\n\") {\n // treat a \\r\\n sequence as a single \\n\n ++S.pos;\n ch = \"\\n\";\n }\n } else {\n if (ch.length > 1) {\n ++S.pos;\n ++S.col;\n }\n ++S.col;\n }\n return ch;\n }\n\n function forward(i) {\n while (i-- > 0) next();\n }\n\n function looking_at(str) {\n return S.text.substr(S.pos, str.length) == str;\n }\n\n function find_eol() {\n var text = S.text;\n for (var i = S.pos, n = S.text.length; i < n; ++i) {\n var ch = text[i];\n if (NEWLINE_CHARS.has(ch))\n return i;\n }\n return -1;\n }\n\n function find(what, signal_eof) {\n var pos = S.text.indexOf(what, S.pos);\n if (signal_eof && pos == -1) throw EX_EOF;\n return pos;\n }\n\n function start_token() {\n S.tokline = S.line;\n S.tokcol = S.col;\n S.tokpos = S.pos;\n }\n\n var prev_was_dot = false;\n var previous_token = null;\n function token(type, value, is_comment) {\n S.regex_allowed = ((type == \"operator\" && !UNARY_POSTFIX.has(value)) ||\n (type == \"keyword\" && KEYWORDS_BEFORE_EXPRESSION.has(value)) ||\n (type == \"punc\" && PUNC_BEFORE_EXPRESSION.has(value))) ||\n (type == \"arrow\");\n if (type == \"punc\" && value == \".\") {\n prev_was_dot = true;\n } else if (!is_comment) {\n prev_was_dot = false;\n }\n var ret = {\n type : type,\n value : value,\n line : S.tokline,\n col : S.tokcol,\n pos : S.tokpos,\n endline : S.line,\n endcol : S.col,\n endpos : S.pos,\n nlb : S.newline_before,\n file : filename\n };\n if (/^(?:num|string|regexp)$/i.test(type)) {\n ret.raw = $TEXT.substring(ret.pos, ret.endpos);\n }\n if (!is_comment) {\n ret.comments_before = S.comments_before;\n ret.comments_after = S.comments_before = [];\n }\n S.newline_before = false;\n ret = new AST_Token(ret);\n if (!is_comment) previous_token = ret;\n return ret;\n }\n\n function skip_whitespace() {\n while (WHITESPACE_CHARS.has(peek()))\n next();\n }\n\n function read_while(pred) {\n var ret = \"\", ch, i = 0;\n while ((ch = peek()) && pred(ch, i++))\n ret += next();\n return ret;\n }\n\n function parse_error(err) {\n js_error(err, filename, S.tokline, S.tokcol, S.tokpos);\n }\n\n function read_num(prefix) {\n var has_e = false, after_e = false, has_x = false, has_dot = prefix == \".\", is_big_int = false;\n var num = read_while(function(ch, i) {\n if (is_big_int) return false;\n\n var code = ch.charCodeAt(0);\n switch (code) {\n case 98: case 66: // bB\n return (has_x = true); // Can occur in hex sequence, don't return false yet\n case 111: case 79: // oO\n case 120: case 88: // xX\n return has_x ? false : (has_x = true);\n case 101: case 69: // eE\n return has_x ? true : has_e ? false : (has_e = after_e = true);\n case 45: // -\n return after_e || (i == 0 && !prefix);\n case 43: // +\n return after_e;\n case (after_e = false, 46): // .\n return (!has_dot && !has_x && !has_e) ? (has_dot = true) : false;\n }\n\n if (ch === \"n\") {\n is_big_int = true;\n\n return true;\n }\n\n return RE_NUM_LITERAL.test(ch);\n });\n if (prefix) num = prefix + num;\n if (RE_OCT_NUMBER.test(num) && next_token.has_directive(\"use strict\")) {\n parse_error(\"Legacy octal literals are not allowed in strict mode\");\n }\n if (num.endsWith(\"n\")) {\n const without_n = num.slice(0, -1);\n const valid = parse_js_number(without_n, /*allow_e=*/false);\n if (!has_dot && RE_BIG_INT.test(num) && !isNaN(valid))\n return token(\"big_int\", without_n);\n parse_error(\"Invalid or unexpected token\");\n }\n var valid = parse_js_number(num);\n if (!isNaN(valid)) {\n return token(\"num\", valid);\n } else {\n parse_error(\"Invalid syntax: \" + num);\n }\n }\n\n function is_octal(ch) {\n return ch >= \"0\" && ch <= \"7\";\n }\n\n function read_escaped_char(in_string, strict_hex, template_string) {\n var ch = next(true, in_string);\n switch (ch.charCodeAt(0)) {\n case 110 : return \"\\n\";\n case 114 : return \"\\r\";\n case 116 : return \"\\t\";\n case 98 : return \"\\b\";\n case 118 : return \"\\u000b\"; // \\v\n case 102 : return \"\\f\";\n case 120 : return String.fromCharCode(hex_bytes(2, strict_hex)); // \\x\n case 117 : // \\u\n if (peek() == \"{\") {\n next(true);\n if (peek() === \"}\")\n parse_error(\"Expecting hex-character between {}\");\n while (peek() == \"0\") next(true); // No significance\n var result, length = find(\"}\", true) - S.pos;\n // Avoid 32 bit integer overflow (1 << 32 === 1)\n // We know first character isn't 0 and thus out of range anyway\n if (length > 6 || (result = hex_bytes(length, strict_hex)) > 0x10FFFF) {\n parse_error(\"Unicode reference out of bounds\");\n }\n next(true);\n return from_char_code(result);\n }\n return String.fromCharCode(hex_bytes(4, strict_hex));\n case 10 : return \"\"; // newline\n case 13 : // \\r\n if (peek() == \"\\n\") { // DOS newline\n next(true, in_string);\n return \"\";\n }\n }\n if (is_octal(ch)) {\n if (template_string && strict_hex) {\n const represents_null_character = ch === \"0\" && !is_octal(peek());\n if (!represents_null_character) {\n parse_error(\"Octal escape sequences are not allowed in template strings\");\n }\n }\n return read_octal_escape_sequence(ch, strict_hex);\n }\n return ch;\n }\n\n function read_octal_escape_sequence(ch, strict_octal) {\n // Read\n var p = peek();\n if (p >= \"0\" && p <= \"7\") {\n ch += next(true);\n if (ch[0] <= \"3\" && (p = peek()) >= \"0\" && p <= \"7\")\n ch += next(true);\n }\n\n // Parse\n if (ch === \"0\") return \"\\0\";\n if (ch.length > 0 && next_token.has_directive(\"use strict\") && strict_octal)\n parse_error(\"Legacy octal escape sequences are not allowed in strict mode\");\n return String.fromCharCode(parseInt(ch, 8));\n }\n\n function hex_bytes(n, strict_hex) {\n var num = 0;\n for (; n > 0; --n) {\n if (!strict_hex && isNaN(parseInt(peek(), 16))) {\n return parseInt(num, 16) || \"\";\n }\n var digit = next(true);\n if (isNaN(parseInt(digit, 16)))\n parse_error(\"Invalid hex-character pattern in string\");\n num += digit;\n }\n return parseInt(num, 16);\n }\n\n var read_string = with_eof_error(\"Unterminated string constant\", function() {\n var quote = next(), ret = \"\";\n for (;;) {\n var ch = next(true, true);\n if (ch == \"\\\\\") ch = read_escaped_char(true, true);\n else if (ch == \"\\r\" || ch == \"\\n\") parse_error(\"Unterminated string constant\");\n else if (ch == quote) break;\n ret += ch;\n }\n var tok = token(\"string\", ret);\n tok.quote = quote;\n return tok;\n });\n\n var read_template_characters = with_eof_error(\"Unterminated template\", function(begin) {\n if (begin) {\n S.template_braces.push(S.brace_counter);\n }\n var content = \"\", raw = \"\", ch, tok;\n next(true, true);\n while ((ch = next(true, true)) != \"`\") {\n if (ch == \"\\r\") {\n if (peek() == \"\\n\") ++S.pos;\n ch = \"\\n\";\n } else if (ch == \"$\" && peek() == \"{\") {\n next(true, true);\n S.brace_counter++;\n tok = token(begin ? \"template_head\" : \"template_substitution\", content);\n tok.raw = raw;\n return tok;\n }\n\n raw += ch;\n if (ch == \"\\\\\") {\n var tmp = S.pos;\n var prev_is_tag = previous_token && (previous_token.type === \"name\" || previous_token.type === \"punc\" && (previous_token.value === \")\" || previous_token.value === \"]\"));\n ch = read_escaped_char(true, !prev_is_tag, true);\n raw += S.text.substr(tmp, S.pos - tmp);\n }\n\n content += ch;\n }\n S.template_braces.pop();\n tok = token(begin ? \"template_head\" : \"template_substitution\", content);\n tok.raw = raw;\n tok.end = true;\n return tok;\n });\n\n function skip_line_comment(type) {\n var regex_allowed = S.regex_allowed;\n var i = find_eol(), ret;\n if (i == -1) {\n ret = S.text.substr(S.pos);\n S.pos = S.text.length;\n } else {\n ret = S.text.substring(S.pos, i);\n S.pos = i;\n }\n S.col = S.tokcol + (S.pos - S.tokpos);\n S.comments_before.push(token(type, ret, true));\n S.regex_allowed = regex_allowed;\n return next_token;\n }\n\n var skip_multiline_comment = with_eof_error(\"Unterminated multiline comment\", function() {\n var regex_allowed = S.regex_allowed;\n var i = find(\"*/\", true);\n var text = S.text.substring(S.pos, i).replace(/\\r\\n|\\r|\\u2028|\\u2029/g, \"\\n\");\n // update stream position\n forward(get_full_char_length(text) /* text length doesn't count \\r\\n as 2 char while S.pos - i does */ + 2);\n S.comments_before.push(token(\"comment2\", text, true));\n S.newline_before = S.newline_before || text.includes(\"\\n\");\n S.regex_allowed = regex_allowed;\n return next_token;\n });\n\n var read_name = with_eof_error(\"Unterminated identifier name\", function() {\n var name, ch, escaped = false;\n var read_escaped_identifier_char = function() {\n escaped = true;\n next();\n if (peek() !== \"u\") {\n parse_error(\"Expecting UnicodeEscapeSequence -- uXXXX or u{XXXX}\");\n }\n return read_escaped_char(false, true);\n };\n\n // Read first character (ID_Start)\n if ((name = peek()) === \"\\\\\") {\n name = read_escaped_identifier_char();\n if (!is_identifier_start(name)) {\n parse_error(\"First identifier char is an invalid identifier char\");\n }\n } else if (is_identifier_start(name)) {\n next();\n } else {\n return \"\";\n }\n\n // Read ID_Continue\n while ((ch = peek()) != null) {\n if ((ch = peek()) === \"\\\\\") {\n ch = read_escaped_identifier_char();\n if (!is_identifier_char(ch)) {\n parse_error(\"Invalid escaped identifier char\");\n }\n } else {\n if (!is_identifier_char(ch)) {\n break;\n }\n next();\n }\n name += ch;\n }\n if (RESERVED_WORDS.has(name) && escaped) {\n parse_error(\"Escaped characters are not allowed in keywords\");\n }\n return name;\n });\n\n var read_regexp = with_eof_error(\"Unterminated regular expression\", function(source) {\n var prev_backslash = false, ch, in_class = false;\n while ((ch = next(true))) if (NEWLINE_CHARS.has(ch)) {\n parse_error(\"Unexpected line terminator\");\n } else if (prev_backslash) {\n source += \"\\\\\" + ch;\n prev_backslash = false;\n } else if (ch == \"[\") {\n in_class = true;\n source += ch;\n } else if (ch == \"]\" && in_class) {\n in_class = false;\n source += ch;\n } else if (ch == \"/\" && !in_class) {\n break;\n } else if (ch == \"\\\\\") {\n prev_backslash = true;\n } else {\n source += ch;\n }\n const flags = read_name();\n return token(\"regexp\", { source, flags });\n });\n\n function read_operator(prefix) {\n function grow(op) {\n if (!peek()) return op;\n var bigger = op + peek();\n if (OPERATORS.has(bigger)) {\n next();\n return grow(bigger);\n } else {\n return op;\n }\n }\n return token(\"operator\", grow(prefix || next()));\n }\n\n function handle_slash() {\n next();\n switch (peek()) {\n case \"/\":\n next();\n return skip_line_comment(\"comment1\");\n case \"*\":\n next();\n return skip_multiline_comment();\n }\n return S.regex_allowed ? read_regexp(\"\") : read_operator(\"/\");\n }\n\n function handle_eq_sign() {\n next();\n if (peek() === \">\") {\n next();\n return token(\"arrow\", \"=>\");\n } else {\n return read_operator(\"=\");\n }\n }\n\n function handle_dot() {\n next();\n if (is_digit(peek().charCodeAt(0))) {\n return read_num(\".\");\n }\n if (peek() === \".\") {\n next(); // Consume second dot\n next(); // Consume third dot\n return token(\"expand\", \"...\");\n }\n\n return token(\"punc\", \".\");\n }\n\n function read_word() {\n var word = read_name();\n if (prev_was_dot) return token(\"name\", word);\n return KEYWORDS_ATOM.has(word) ? token(\"atom\", word)\n : !KEYWORDS.has(word) ? token(\"name\", word)\n : OPERATORS.has(word) ? token(\"operator\", word)\n : token(\"keyword\", word);\n }\n\n function with_eof_error(eof_error, cont) {\n return function(x) {\n try {\n return cont(x);\n } catch(ex) {\n if (ex === EX_EOF) parse_error(eof_error);\n else throw ex;\n }\n };\n }\n\n function next_token(force_regexp) {\n if (force_regexp != null)\n return read_regexp(force_regexp);\n if (shebang && S.pos == 0 && looking_at(\"#!\")) {\n start_token();\n forward(2);\n skip_line_comment(\"comment5\");\n }\n for (;;) {\n skip_whitespace();\n start_token();\n if (html5_comments) {\n if (looking_at(\"\") && S.newline_before) {\n forward(3);\n skip_line_comment(\"comment4\");\n continue;\n }\n }\n var ch = peek();\n if (!ch) return token(\"eof\");\n var code = ch.charCodeAt(0);\n switch (code) {\n case 34: case 39: return read_string();\n case 46: return handle_dot();\n case 47: {\n var tok = handle_slash();\n if (tok === next_token) continue;\n return tok;\n }\n case 61: return handle_eq_sign();\n case 96: return read_template_characters(true);\n case 123:\n S.brace_counter++;\n break;\n case 125:\n S.brace_counter--;\n if (S.template_braces.length > 0\n && S.template_braces[S.template_braces.length - 1] === S.brace_counter)\n return read_template_characters(false);\n break;\n }\n if (is_digit(code)) return read_num();\n if (PUNC_CHARS.has(ch)) return token(\"punc\", next());\n if (OPERATOR_CHARS.has(ch)) return read_operator();\n if (code == 92 || is_identifier_start(ch)) return read_word();\n break;\n }\n parse_error(\"Unexpected character '\" + ch + \"'\");\n }\n\n next_token.next = next;\n next_token.peek = peek;\n\n next_token.context = function(nc) {\n if (nc) S = nc;\n return S;\n };\n\n next_token.add_directive = function(directive) {\n S.directive_stack[S.directive_stack.length - 1].push(directive);\n\n if (S.directives[directive] === undefined) {\n S.directives[directive] = 1;\n } else {\n S.directives[directive]++;\n }\n };\n\n next_token.push_directives_stack = function() {\n S.directive_stack.push([]);\n };\n\n next_token.pop_directives_stack = function() {\n var directives = S.directive_stack[S.directive_stack.length - 1];\n\n for (var i = 0; i < directives.length; i++) {\n S.directives[directives[i]]--;\n }\n\n S.directive_stack.pop();\n };\n\n next_token.has_directive = function(directive) {\n return S.directives[directive] > 0;\n };\n\n return next_token;\n\n}\n\n/* -----[ Parser (constants) ]----- */\n\nvar UNARY_PREFIX = makePredicate([\n \"typeof\",\n \"void\",\n \"delete\",\n \"--\",\n \"++\",\n \"!\",\n \"~\",\n \"-\",\n \"+\"\n]);\n\nvar UNARY_POSTFIX = makePredicate([ \"--\", \"++\" ]);\n\nvar ASSIGNMENT = makePredicate([ \"=\", \"+=\", \"-=\", \"/=\", \"*=\", \"**=\", \"%=\", \">>=\", \"<<=\", \">>>=\", \"|=\", \"^=\", \"&=\" ]);\n\nvar PRECEDENCE = (function(a, ret) {\n for (var i = 0; i < a.length; ++i) {\n var b = a[i];\n for (var j = 0; j < b.length; ++j) {\n ret[b[j]] = i + 1;\n }\n }\n return ret;\n})(\n [\n [\"||\"],\n [\"&&\"],\n [\"|\"],\n [\"^\"],\n [\"&\"],\n [\"==\", \"===\", \"!=\", \"!==\"],\n [\"<\", \">\", \"<=\", \">=\", \"in\", \"instanceof\"],\n [\">>\", \"<<\", \">>>\"],\n [\"+\", \"-\"],\n [\"*\", \"/\", \"%\"],\n [\"**\"]\n ],\n {}\n);\n\nvar ATOMIC_START_TOKEN = makePredicate([ \"atom\", \"num\", \"big_int\", \"string\", \"regexp\", \"name\" ]);\n\n/* -----[ Parser ]----- */\n\nfunction parse($TEXT, options) {\n // maps start tokens to count of comments found outside of their parens\n // Example: /* I count */ ( /* I don't */ foo() )\n // Useful because comments_before property of call with parens outside\n // contains both comments inside and outside these parens. Used to find the\n // right #__PURE__ comments for an expression\n const outer_comments_before_counts = new Map();\n\n options = defaults(options, {\n bare_returns : false,\n ecma : 2017,\n expression : false,\n filename : null,\n html5_comments : true,\n module : false,\n shebang : true,\n strict : false,\n toplevel : null,\n }, true);\n\n var S = {\n input : (typeof $TEXT == \"string\"\n ? tokenizer($TEXT, options.filename,\n options.html5_comments, options.shebang)\n : $TEXT),\n token : null,\n prev : null,\n peeked : null,\n in_function : 0,\n in_async : -1,\n in_generator : -1,\n in_directives : true,\n in_loop : 0,\n labels : []\n };\n\n S.token = next();\n\n function is(type, value) {\n return is_token(S.token, type, value);\n }\n\n function peek() { return S.peeked || (S.peeked = S.input()); }\n\n function next() {\n S.prev = S.token;\n\n if (!S.peeked) peek();\n S.token = S.peeked;\n S.peeked = null;\n S.in_directives = S.in_directives && (\n S.token.type == \"string\" || is(\"punc\", \";\")\n );\n return S.token;\n }\n\n function prev() {\n return S.prev;\n }\n\n function croak(msg, line, col, pos) {\n var ctx = S.input.context();\n js_error(msg,\n ctx.filename,\n line != null ? line : ctx.tokline,\n col != null ? col : ctx.tokcol,\n pos != null ? pos : ctx.tokpos);\n }\n\n function token_error(token, msg) {\n croak(msg, token.line, token.col);\n }\n\n function unexpected(token) {\n if (token == null)\n token = S.token;\n token_error(token, \"Unexpected token: \" + token.type + \" (\" + token.value + \")\");\n }\n\n function expect_token(type, val) {\n if (is(type, val)) {\n return next();\n }\n token_error(S.token, \"Unexpected token \" + S.token.type + \" «\" + S.token.value + \"»\" + \", expected \" + type + \" «\" + val + \"»\");\n }\n\n function expect(punc) { return expect_token(\"punc\", punc); }\n\n function has_newline_before(token) {\n return token.nlb || !token.comments_before.every((comment) => !comment.nlb);\n }\n\n function can_insert_semicolon() {\n return !options.strict\n && (is(\"eof\") || is(\"punc\", \"}\") || has_newline_before(S.token));\n }\n\n function is_in_generator() {\n return S.in_generator === S.in_function;\n }\n\n function is_in_async() {\n return S.in_async === S.in_function;\n }\n\n function semicolon(optional) {\n if (is(\"punc\", \";\")) next();\n else if (!optional && !can_insert_semicolon()) unexpected();\n }\n\n function parenthesised() {\n expect(\"(\");\n var exp = expression(true);\n expect(\")\");\n return exp;\n }\n\n function embed_tokens(parser) {\n return function(...args) {\n const start = S.token;\n const expr = parser(...args);\n expr.start = start;\n expr.end = prev();\n return expr;\n };\n }\n\n function handle_regexp() {\n if (is(\"operator\", \"/\") || is(\"operator\", \"/=\")) {\n S.peeked = null;\n S.token = S.input(S.token.value.substr(1)); // force regexp\n }\n }\n\n var statement = embed_tokens(function(is_export_default, is_for_body, is_if_body) {\n handle_regexp();\n switch (S.token.type) {\n case \"string\":\n if (S.in_directives) {\n var token = peek();\n if (!S.token.raw.includes(\"\\\\\")\n && (is_token(token, \"punc\", \";\")\n || is_token(token, \"punc\", \"}\")\n || has_newline_before(token)\n || is_token(token, \"eof\"))) {\n S.input.add_directive(S.token.value);\n } else {\n S.in_directives = false;\n }\n }\n var dir = S.in_directives, stat = simple_statement();\n return dir && stat.body instanceof AST_String ? new AST_Directive(stat.body) : stat;\n case \"template_head\":\n case \"num\":\n case \"big_int\":\n case \"regexp\":\n case \"operator\":\n case \"atom\":\n return simple_statement();\n\n case \"name\":\n if (S.token.value == \"async\" && is_token(peek(), \"keyword\", \"function\")) {\n next();\n next();\n if (is_for_body) {\n croak(\"functions are not allowed as the body of a loop\");\n }\n return function_(AST_Defun, false, true, is_export_default);\n }\n if (S.token.value == \"import\" && !is_token(peek(), \"punc\", \"(\")) {\n next();\n var node = import_();\n semicolon();\n return node;\n }\n return is_token(peek(), \"punc\", \":\")\n ? labeled_statement()\n : simple_statement();\n\n case \"punc\":\n switch (S.token.value) {\n case \"{\":\n return new AST_BlockStatement({\n start : S.token,\n body : block_(),\n end : prev()\n });\n case \"[\":\n case \"(\":\n return simple_statement();\n case \";\":\n S.in_directives = false;\n next();\n return new AST_EmptyStatement();\n default:\n unexpected();\n }\n\n case \"keyword\":\n switch (S.token.value) {\n case \"break\":\n next();\n return break_cont(AST_Break);\n\n case \"continue\":\n next();\n return break_cont(AST_Continue);\n\n case \"debugger\":\n next();\n semicolon();\n return new AST_Debugger();\n\n case \"do\":\n next();\n var body = in_loop(statement);\n expect_token(\"keyword\", \"while\");\n var condition = parenthesised();\n semicolon(true);\n return new AST_Do({\n body : body,\n condition : condition\n });\n\n case \"while\":\n next();\n return new AST_While({\n condition : parenthesised(),\n body : in_loop(function() { return statement(false, true); })\n });\n\n case \"for\":\n next();\n return for_();\n\n case \"class\":\n next();\n if (is_for_body) {\n croak(\"classes are not allowed as the body of a loop\");\n }\n if (is_if_body) {\n croak(\"classes are not allowed as the body of an if\");\n }\n return class_(AST_DefClass);\n\n case \"function\":\n next();\n if (is_for_body) {\n croak(\"functions are not allowed as the body of a loop\");\n }\n return function_(AST_Defun, false, false, is_export_default);\n\n case \"if\":\n next();\n return if_();\n\n case \"return\":\n if (S.in_function == 0 && !options.bare_returns)\n croak(\"'return' outside of function\");\n next();\n var value = null;\n if (is(\"punc\", \";\")) {\n next();\n } else if (!can_insert_semicolon()) {\n value = expression(true);\n semicolon();\n }\n return new AST_Return({\n value: value\n });\n\n case \"switch\":\n next();\n return new AST_Switch({\n expression : parenthesised(),\n body : in_loop(switch_body_)\n });\n\n case \"throw\":\n next();\n if (has_newline_before(S.token))\n croak(\"Illegal newline after 'throw'\");\n var value = expression(true);\n semicolon();\n return new AST_Throw({\n value: value\n });\n\n case \"try\":\n next();\n return try_();\n\n case \"var\":\n next();\n var node = var_();\n semicolon();\n return node;\n\n case \"let\":\n next();\n var node = let_();\n semicolon();\n return node;\n\n case \"const\":\n next();\n var node = const_();\n semicolon();\n return node;\n\n case \"with\":\n if (S.input.has_directive(\"use strict\")) {\n croak(\"Strict mode may not include a with statement\");\n }\n next();\n return new AST_With({\n expression : parenthesised(),\n body : statement()\n });\n\n case \"export\":\n if (!is_token(peek(), \"punc\", \"(\")) {\n next();\n var node = export_();\n if (is(\"punc\", \";\")) semicolon();\n return node;\n }\n }\n }\n unexpected();\n });\n\n function labeled_statement() {\n var label = as_symbol(AST_Label);\n if (label.name === \"await\" && is_in_async()) {\n token_error(S.prev, \"await cannot be used as label inside async function\");\n }\n if (S.labels.some((l) => l.name === label.name)) {\n // ECMA-262, 12.12: An ECMAScript program is considered\n // syntactically incorrect if it contains a\n // LabelledStatement that is enclosed by a\n // LabelledStatement with the same Identifier as label.\n croak(\"Label \" + label.name + \" defined twice\");\n }\n expect(\":\");\n S.labels.push(label);\n var stat = statement();\n S.labels.pop();\n if (!(stat instanceof AST_IterationStatement)) {\n // check for `continue` that refers to this label.\n // those should be reported as syntax errors.\n // https://github.com/mishoo/UglifyJS2/issues/287\n label.references.forEach(function(ref) {\n if (ref instanceof AST_Continue) {\n ref = ref.label.start;\n croak(\"Continue label `\" + label.name + \"` refers to non-IterationStatement.\",\n ref.line, ref.col, ref.pos);\n }\n });\n }\n return new AST_LabeledStatement({ body: stat, label: label });\n }\n\n function simple_statement(tmp) {\n return new AST_SimpleStatement({ body: (tmp = expression(true), semicolon(), tmp) });\n }\n\n function break_cont(type) {\n var label = null, ldef;\n if (!can_insert_semicolon()) {\n label = as_symbol(AST_LabelRef, true);\n }\n if (label != null) {\n ldef = S.labels.find((l) => l.name === label.name);\n if (!ldef)\n croak(\"Undefined label \" + label.name);\n label.thedef = ldef;\n } else if (S.in_loop == 0)\n croak(type.TYPE + \" not inside a loop or switch\");\n semicolon();\n var stat = new type({ label: label });\n if (ldef) ldef.references.push(stat);\n return stat;\n }\n\n function for_() {\n var for_await_error = \"`for await` invalid in this context\";\n var await_tok = S.token;\n if (await_tok.type == \"name\" && await_tok.value == \"await\") {\n if (!is_in_async()) {\n token_error(await_tok, for_await_error);\n }\n next();\n } else {\n await_tok = false;\n }\n expect(\"(\");\n var init = null;\n if (!is(\"punc\", \";\")) {\n init =\n is(\"keyword\", \"var\") ? (next(), var_(true)) :\n is(\"keyword\", \"let\") ? (next(), let_(true)) :\n is(\"keyword\", \"const\") ? (next(), const_(true)) :\n expression(true, true);\n var is_in = is(\"operator\", \"in\");\n var is_of = is(\"name\", \"of\");\n if (await_tok && !is_of) {\n token_error(await_tok, for_await_error);\n }\n if (is_in || is_of) {\n if (init instanceof AST_Definitions) {\n if (init.definitions.length > 1)\n token_error(init.start, \"Only one variable declaration allowed in for..in loop\");\n } else if (!(is_assignable(init) || (init = to_destructuring(init)) instanceof AST_Destructuring)) {\n token_error(init.start, \"Invalid left-hand side in for..in loop\");\n }\n next();\n if (is_in) {\n return for_in(init);\n } else {\n return for_of(init, !!await_tok);\n }\n }\n } else if (await_tok) {\n token_error(await_tok, for_await_error);\n }\n return regular_for(init);\n }\n\n function regular_for(init) {\n expect(\";\");\n var test = is(\"punc\", \";\") ? null : expression(true);\n expect(\";\");\n var step = is(\"punc\", \")\") ? null : expression(true);\n expect(\")\");\n return new AST_For({\n init : init,\n condition : test,\n step : step,\n body : in_loop(function() { return statement(false, true); })\n });\n }\n\n function for_of(init, is_await) {\n var lhs = init instanceof AST_Definitions ? init.definitions[0].name : null;\n var obj = expression(true);\n expect(\")\");\n return new AST_ForOf({\n await : is_await,\n init : init,\n name : lhs,\n object : obj,\n body : in_loop(function() { return statement(false, true); })\n });\n }\n\n function for_in(init) {\n var obj = expression(true);\n expect(\")\");\n return new AST_ForIn({\n init : init,\n object : obj,\n body : in_loop(function() { return statement(false, true); })\n });\n }\n\n var arrow_function = function(start, argnames, is_async) {\n if (has_newline_before(S.token)) {\n croak(\"Unexpected newline before arrow (=>)\");\n }\n\n expect_token(\"arrow\", \"=>\");\n\n var body = _function_body(is(\"punc\", \"{\"), false, is_async);\n\n var end =\n body instanceof Array && body.length ? body[body.length - 1].end :\n body instanceof Array ? start :\n body.end;\n\n return new AST_Arrow({\n start : start,\n end : end,\n async : is_async,\n argnames : argnames,\n body : body\n });\n };\n\n var function_ = function(ctor, is_generator_property, is_async, is_export_default) {\n var start = S.token;\n\n var in_statement = ctor === AST_Defun;\n var is_generator = is(\"operator\", \"*\");\n if (is_generator) {\n next();\n }\n\n var name = is(\"name\") ? as_symbol(in_statement ? AST_SymbolDefun : AST_SymbolLambda) : null;\n if (in_statement && !name) {\n if (is_export_default) {\n ctor = AST_Function;\n } else {\n unexpected();\n }\n }\n\n if (name && ctor !== AST_Accessor && !(name instanceof AST_SymbolDeclaration))\n unexpected(prev());\n\n var args = [];\n var body = _function_body(true, is_generator || is_generator_property, is_async, name, args);\n return new ctor({\n start : args.start,\n end : body.end,\n is_generator: is_generator,\n async : is_async,\n name : name,\n argnames: args,\n body : body\n });\n };\n\n function track_used_binding_identifiers(is_parameter, strict) {\n var parameters = new Set();\n var duplicate = false;\n var default_assignment = false;\n var spread = false;\n var strict_mode = !!strict;\n var tracker = {\n add_parameter: function(token) {\n if (parameters.has(token.value)) {\n if (duplicate === false) {\n duplicate = token;\n }\n tracker.check_strict();\n } else {\n parameters.add(token.value);\n if (is_parameter) {\n switch (token.value) {\n case \"arguments\":\n case \"eval\":\n case \"yield\":\n if (strict_mode) {\n token_error(token, \"Unexpected \" + token.value + \" identifier as parameter inside strict mode\");\n }\n break;\n default:\n if (RESERVED_WORDS.has(token.value)) {\n unexpected();\n }\n }\n }\n }\n },\n mark_default_assignment: function(token) {\n if (default_assignment === false) {\n default_assignment = token;\n }\n },\n mark_spread: function(token) {\n if (spread === false) {\n spread = token;\n }\n },\n mark_strict_mode: function() {\n strict_mode = true;\n },\n is_strict: function() {\n return default_assignment !== false || spread !== false || strict_mode;\n },\n check_strict: function() {\n if (tracker.is_strict() && duplicate !== false) {\n token_error(duplicate, \"Parameter \" + duplicate.value + \" was used already\");\n }\n }\n };\n\n return tracker;\n }\n\n function parameters(params) {\n var start = S.token;\n var used_parameters = track_used_binding_identifiers(true, S.input.has_directive(\"use strict\"));\n\n expect(\"(\");\n\n while (!is(\"punc\", \")\")) {\n var param = parameter(used_parameters);\n params.push(param);\n\n if (!is(\"punc\", \")\")) {\n expect(\",\");\n if (is(\"punc\", \")\") && options.ecma < 2017) unexpected();\n }\n\n if (param instanceof AST_Expansion) {\n break;\n }\n }\n\n next();\n }\n\n function parameter(used_parameters, symbol_type) {\n var param;\n var expand = false;\n if (used_parameters === undefined) {\n used_parameters = track_used_binding_identifiers(true, S.input.has_directive(\"use strict\"));\n }\n if (is(\"expand\", \"...\")) {\n expand = S.token;\n used_parameters.mark_spread(S.token);\n next();\n }\n param = binding_element(used_parameters, symbol_type);\n\n if (is(\"operator\", \"=\") && expand === false) {\n used_parameters.mark_default_assignment(S.token);\n next();\n param = new AST_DefaultAssign({\n start: param.start,\n left: param,\n operator: \"=\",\n right: expression(false),\n end: S.token\n });\n }\n\n if (expand !== false) {\n if (!is(\"punc\", \")\")) {\n unexpected();\n }\n param = new AST_Expansion({\n start: expand,\n expression: param,\n end: expand\n });\n }\n used_parameters.check_strict();\n\n return param;\n }\n\n function binding_element(used_parameters, symbol_type) {\n var elements = [];\n var first = true;\n var is_expand = false;\n var expand_token;\n var first_token = S.token;\n if (used_parameters === undefined) {\n used_parameters = track_used_binding_identifiers(false, S.input.has_directive(\"use strict\"));\n }\n symbol_type = symbol_type === undefined ? AST_SymbolFunarg : symbol_type;\n if (is(\"punc\", \"[\")) {\n next();\n while (!is(\"punc\", \"]\")) {\n if (first) {\n first = false;\n } else {\n expect(\",\");\n }\n\n if (is(\"expand\", \"...\")) {\n is_expand = true;\n expand_token = S.token;\n used_parameters.mark_spread(S.token);\n next();\n }\n if (is(\"punc\")) {\n switch (S.token.value) {\n case \",\":\n elements.push(new AST_Hole({\n start: S.token,\n end: S.token\n }));\n continue;\n case \"]\": // Trailing comma after last element\n break;\n case \"[\":\n case \"{\":\n elements.push(binding_element(used_parameters, symbol_type));\n break;\n default:\n unexpected();\n }\n } else if (is(\"name\")) {\n used_parameters.add_parameter(S.token);\n elements.push(as_symbol(symbol_type));\n } else {\n croak(\"Invalid function parameter\");\n }\n if (is(\"operator\", \"=\") && is_expand === false) {\n used_parameters.mark_default_assignment(S.token);\n next();\n elements[elements.length - 1] = new AST_DefaultAssign({\n start: elements[elements.length - 1].start,\n left: elements[elements.length - 1],\n operator: \"=\",\n right: expression(false),\n end: S.token\n });\n }\n if (is_expand) {\n if (!is(\"punc\", \"]\")) {\n croak(\"Rest element must be last element\");\n }\n elements[elements.length - 1] = new AST_Expansion({\n start: expand_token,\n expression: elements[elements.length - 1],\n end: expand_token\n });\n }\n }\n expect(\"]\");\n used_parameters.check_strict();\n return new AST_Destructuring({\n start: first_token,\n names: elements,\n is_array: true,\n end: prev()\n });\n } else if (is(\"punc\", \"{\")) {\n next();\n while (!is(\"punc\", \"}\")) {\n if (first) {\n first = false;\n } else {\n expect(\",\");\n }\n if (is(\"expand\", \"...\")) {\n is_expand = true;\n expand_token = S.token;\n used_parameters.mark_spread(S.token);\n next();\n }\n if (is(\"name\") && (is_token(peek(), \"punc\") || is_token(peek(), \"operator\")) && [\",\", \"}\", \"=\"].includes(peek().value)) {\n used_parameters.add_parameter(S.token);\n var start = prev();\n var value = as_symbol(symbol_type);\n if (is_expand) {\n elements.push(new AST_Expansion({\n start: expand_token,\n expression: value,\n end: value.end,\n }));\n } else {\n elements.push(new AST_ObjectKeyVal({\n start: start,\n key: value.name,\n value: value,\n end: value.end,\n }));\n }\n } else if (is(\"punc\", \"}\")) {\n continue; // Allow trailing hole\n } else {\n var property_token = S.token;\n var property = as_property_name();\n if (property === null) {\n unexpected(prev());\n } else if (prev().type === \"name\" && !is(\"punc\", \":\")) {\n elements.push(new AST_ObjectKeyVal({\n start: prev(),\n key: property,\n value: new symbol_type({\n start: prev(),\n name: property,\n end: prev()\n }),\n end: prev()\n }));\n } else {\n expect(\":\");\n elements.push(new AST_ObjectKeyVal({\n start: property_token,\n quote: property_token.quote,\n key: property,\n value: binding_element(used_parameters, symbol_type),\n end: prev()\n }));\n }\n }\n if (is_expand) {\n if (!is(\"punc\", \"}\")) {\n croak(\"Rest element must be last element\");\n }\n } else if (is(\"operator\", \"=\")) {\n used_parameters.mark_default_assignment(S.token);\n next();\n elements[elements.length - 1].value = new AST_DefaultAssign({\n start: elements[elements.length - 1].value.start,\n left: elements[elements.length - 1].value,\n operator: \"=\",\n right: expression(false),\n end: S.token\n });\n }\n }\n expect(\"}\");\n used_parameters.check_strict();\n return new AST_Destructuring({\n start: first_token,\n names: elements,\n is_array: false,\n end: prev()\n });\n } else if (is(\"name\")) {\n used_parameters.add_parameter(S.token);\n return as_symbol(symbol_type);\n } else {\n croak(\"Invalid function parameter\");\n }\n }\n\n function params_or_seq_(allow_arrows, maybe_sequence) {\n var spread_token;\n var invalid_sequence;\n var trailing_comma;\n var a = [];\n expect(\"(\");\n while (!is(\"punc\", \")\")) {\n if (spread_token) unexpected(spread_token);\n if (is(\"expand\", \"...\")) {\n spread_token = S.token;\n if (maybe_sequence) invalid_sequence = S.token;\n next();\n a.push(new AST_Expansion({\n start: prev(),\n expression: expression(),\n end: S.token,\n }));\n } else {\n a.push(expression());\n }\n if (!is(\"punc\", \")\")) {\n expect(\",\");\n if (is(\"punc\", \")\")) {\n if (options.ecma < 2017) unexpected();\n trailing_comma = prev();\n if (maybe_sequence) invalid_sequence = trailing_comma;\n }\n }\n }\n expect(\")\");\n if (allow_arrows && is(\"arrow\", \"=>\")) {\n if (spread_token && trailing_comma) unexpected(trailing_comma);\n } else if (invalid_sequence) {\n unexpected(invalid_sequence);\n }\n return a;\n }\n\n function _function_body(block, generator, is_async, name, args) {\n var loop = S.in_loop;\n var labels = S.labels;\n var current_generator = S.in_generator;\n var current_async = S.in_async;\n ++S.in_function;\n if (generator)\n S.in_generator = S.in_function;\n if (is_async)\n S.in_async = S.in_function;\n if (args) parameters(args);\n if (block)\n S.in_directives = true;\n S.in_loop = 0;\n S.labels = [];\n if (block) {\n S.input.push_directives_stack();\n var a = block_();\n if (name) _verify_symbol(name);\n if (args) args.forEach(_verify_symbol);\n S.input.pop_directives_stack();\n } else {\n var a = [new AST_Return({\n start: S.token,\n value: expression(false),\n end: S.token\n })];\n }\n --S.in_function;\n S.in_loop = loop;\n S.labels = labels;\n S.in_generator = current_generator;\n S.in_async = current_async;\n return a;\n }\n\n function _await_expression() {\n // Previous token must be \"await\" and not be interpreted as an identifier\n if (!is_in_async()) {\n croak(\"Unexpected await expression outside async function\",\n S.prev.line, S.prev.col, S.prev.pos);\n }\n // the await expression is parsed as a unary expression in Babel\n return new AST_Await({\n start: prev(),\n end: S.token,\n expression : maybe_unary(true),\n });\n }\n\n function _yield_expression() {\n // Previous token must be keyword yield and not be interpret as an identifier\n if (!is_in_generator()) {\n croak(\"Unexpected yield expression outside generator function\",\n S.prev.line, S.prev.col, S.prev.pos);\n }\n var start = S.token;\n var star = false;\n var has_expression = true;\n\n // Attempt to get expression or star (and then the mandatory expression)\n // behind yield on the same line.\n //\n // If nothing follows on the same line of the yieldExpression,\n // it should default to the value `undefined` for yield to return.\n // In that case, the `undefined` stored as `null` in ast.\n //\n // Note 1: It isn't allowed for yield* to close without an expression\n // Note 2: If there is a nlb between yield and star, it is interpret as\n // yield *\n if (can_insert_semicolon() ||\n (is(\"punc\") && PUNC_AFTER_EXPRESSION.has(S.token.value))) {\n has_expression = false;\n\n } else if (is(\"operator\", \"*\")) {\n star = true;\n next();\n }\n\n return new AST_Yield({\n start : start,\n is_star : star,\n expression : has_expression ? expression() : null,\n end : prev()\n });\n }\n\n function if_() {\n var cond = parenthesised(), body = statement(false, false, true), belse = null;\n if (is(\"keyword\", \"else\")) {\n next();\n belse = statement(false, false, true);\n }\n return new AST_If({\n condition : cond,\n body : body,\n alternative : belse\n });\n }\n\n function block_() {\n expect(\"{\");\n var a = [];\n while (!is(\"punc\", \"}\")) {\n if (is(\"eof\")) unexpected();\n a.push(statement());\n }\n next();\n return a;\n }\n\n function switch_body_() {\n expect(\"{\");\n var a = [], cur = null, branch = null, tmp;\n while (!is(\"punc\", \"}\")) {\n if (is(\"eof\")) unexpected();\n if (is(\"keyword\", \"case\")) {\n if (branch) branch.end = prev();\n cur = [];\n branch = new AST_Case({\n start : (tmp = S.token, next(), tmp),\n expression : expression(true),\n body : cur\n });\n a.push(branch);\n expect(\":\");\n } else if (is(\"keyword\", \"default\")) {\n if (branch) branch.end = prev();\n cur = [];\n branch = new AST_Default({\n start : (tmp = S.token, next(), expect(\":\"), tmp),\n body : cur\n });\n a.push(branch);\n } else {\n if (!cur) unexpected();\n cur.push(statement());\n }\n }\n if (branch) branch.end = prev();\n next();\n return a;\n }\n\n function try_() {\n var body = block_(), bcatch = null, bfinally = null;\n if (is(\"keyword\", \"catch\")) {\n var start = S.token;\n next();\n if (is(\"punc\", \"{\")) {\n var name = null;\n } else {\n expect(\"(\");\n var name = parameter(undefined, AST_SymbolCatch);\n expect(\")\");\n }\n bcatch = new AST_Catch({\n start : start,\n argname : name,\n body : block_(),\n end : prev()\n });\n }\n if (is(\"keyword\", \"finally\")) {\n var start = S.token;\n next();\n bfinally = new AST_Finally({\n start : start,\n body : block_(),\n end : prev()\n });\n }\n if (!bcatch && !bfinally)\n croak(\"Missing catch/finally blocks\");\n return new AST_Try({\n body : body,\n bcatch : bcatch,\n bfinally : bfinally\n });\n }\n\n function vardefs(no_in, kind) {\n var a = [];\n var def;\n for (;;) {\n var sym_type =\n kind === \"var\" ? AST_SymbolVar :\n kind === \"const\" ? AST_SymbolConst :\n kind === \"let\" ? AST_SymbolLet : null;\n if (is(\"punc\", \"{\") || is(\"punc\", \"[\")) {\n def = new AST_VarDef({\n start: S.token,\n name: binding_element(undefined ,sym_type),\n value: is(\"operator\", \"=\") ? (expect_token(\"operator\", \"=\"), expression(false, no_in)) : null,\n end: prev()\n });\n } else {\n def = new AST_VarDef({\n start : S.token,\n name : as_symbol(sym_type),\n value : is(\"operator\", \"=\")\n ? (next(), expression(false, no_in))\n : !no_in && kind === \"const\"\n ? croak(\"Missing initializer in const declaration\") : null,\n end : prev()\n });\n if (def.name.name == \"import\") croak(\"Unexpected token: import\");\n }\n a.push(def);\n if (!is(\"punc\", \",\"))\n break;\n next();\n }\n return a;\n }\n\n var var_ = function(no_in) {\n return new AST_Var({\n start : prev(),\n definitions : vardefs(no_in, \"var\"),\n end : prev()\n });\n };\n\n var let_ = function(no_in) {\n return new AST_Let({\n start : prev(),\n definitions : vardefs(no_in, \"let\"),\n end : prev()\n });\n };\n\n var const_ = function(no_in) {\n return new AST_Const({\n start : prev(),\n definitions : vardefs(no_in, \"const\"),\n end : prev()\n });\n };\n\n var new_ = function(allow_calls) {\n var start = S.token;\n expect_token(\"operator\", \"new\");\n if (is(\"punc\", \".\")) {\n next();\n expect_token(\"name\", \"target\");\n return subscripts(new AST_NewTarget({\n start : start,\n end : prev()\n }), allow_calls);\n }\n var newexp = expr_atom(false), args;\n if (is(\"punc\", \"(\")) {\n next();\n args = expr_list(\")\", options.ecma >= 2017);\n } else {\n args = [];\n }\n var call = new AST_New({\n start : start,\n expression : newexp,\n args : args,\n end : prev()\n });\n annotate(call);\n return subscripts(call, allow_calls);\n };\n\n function as_atom_node() {\n var tok = S.token, ret;\n switch (tok.type) {\n case \"name\":\n ret = _make_symbol(AST_SymbolRef);\n break;\n case \"num\":\n ret = new AST_Number({ start: tok, end: tok, value: tok.value });\n break;\n case \"big_int\":\n ret = new AST_BigInt({ start: tok, end: tok, value: tok.value });\n break;\n case \"string\":\n ret = new AST_String({\n start : tok,\n end : tok,\n value : tok.value,\n quote : tok.quote\n });\n break;\n case \"regexp\":\n ret = new AST_RegExp({ start: tok, end: tok, value: tok.value });\n break;\n case \"atom\":\n switch (tok.value) {\n case \"false\":\n ret = new AST_False({ start: tok, end: tok });\n break;\n case \"true\":\n ret = new AST_True({ start: tok, end: tok });\n break;\n case \"null\":\n ret = new AST_Null({ start: tok, end: tok });\n break;\n }\n break;\n }\n next();\n return ret;\n }\n\n function to_fun_args(ex, _, __, default_seen_above) {\n var insert_default = function(ex, default_value) {\n if (default_value) {\n return new AST_DefaultAssign({\n start: ex.start,\n left: ex,\n operator: \"=\",\n right: default_value,\n end: default_value.end\n });\n }\n return ex;\n };\n if (ex instanceof AST_Object) {\n return insert_default(new AST_Destructuring({\n start: ex.start,\n end: ex.end,\n is_array: false,\n names: ex.properties.map(to_fun_args)\n }), default_seen_above);\n } else if (ex instanceof AST_ObjectKeyVal) {\n ex.value = to_fun_args(ex.value, 0, [ex.key]);\n return insert_default(ex, default_seen_above);\n } else if (ex instanceof AST_Hole) {\n return ex;\n } else if (ex instanceof AST_Destructuring) {\n ex.names = ex.names.map(to_fun_args);\n return insert_default(ex, default_seen_above);\n } else if (ex instanceof AST_SymbolRef) {\n return insert_default(new AST_SymbolFunarg({\n name: ex.name,\n start: ex.start,\n end: ex.end\n }), default_seen_above);\n } else if (ex instanceof AST_Expansion) {\n ex.expression = to_fun_args(ex.expression);\n return insert_default(ex, default_seen_above);\n } else if (ex instanceof AST_Array) {\n return insert_default(new AST_Destructuring({\n start: ex.start,\n end: ex.end,\n is_array: true,\n names: ex.elements.map(to_fun_args)\n }), default_seen_above);\n } else if (ex instanceof AST_Assign) {\n return insert_default(to_fun_args(ex.left, undefined, undefined, ex.right), default_seen_above);\n } else if (ex instanceof AST_DefaultAssign) {\n ex.left = to_fun_args(ex.left, 0, [ex.left]);\n return ex;\n } else {\n croak(\"Invalid function parameter\", ex.start.line, ex.start.col);\n }\n }\n\n var expr_atom = function(allow_calls, allow_arrows) {\n if (is(\"operator\", \"new\")) {\n return new_(allow_calls);\n }\n var start = S.token;\n var peeked;\n var async = is(\"name\", \"async\")\n && (peeked = peek()).value != \"[\"\n && peeked.type != \"arrow\"\n && as_atom_node();\n if (is(\"punc\")) {\n switch (S.token.value) {\n case \"(\":\n if (async && !allow_calls) break;\n var exprs = params_or_seq_(allow_arrows, !async);\n if (allow_arrows && is(\"arrow\", \"=>\")) {\n return arrow_function(start, exprs.map(to_fun_args), !!async);\n }\n var ex = async ? new AST_Call({\n expression: async,\n args: exprs\n }) : exprs.length == 1 ? exprs[0] : new AST_Sequence({\n expressions: exprs\n });\n if (ex.start) {\n const outer_comments_before = start.comments_before.length;\n outer_comments_before_counts.set(start, outer_comments_before);\n ex.start.comments_before.unshift(...start.comments_before);\n start.comments_before = ex.start.comments_before;\n if (outer_comments_before == 0 && start.comments_before.length > 0) {\n var comment = start.comments_before[0];\n if (!comment.nlb) {\n comment.nlb = start.nlb;\n start.nlb = false;\n }\n }\n start.comments_after = ex.start.comments_after;\n }\n ex.start = start;\n var end = prev();\n if (ex.end) {\n end.comments_before = ex.end.comments_before;\n ex.end.comments_after.push(...end.comments_after);\n end.comments_after = ex.end.comments_after;\n }\n ex.end = end;\n if (ex instanceof AST_Call) annotate(ex);\n return subscripts(ex, allow_calls);\n case \"[\":\n return subscripts(array_(), allow_calls);\n case \"{\":\n return subscripts(object_or_destructuring_(), allow_calls);\n }\n if (!async) unexpected();\n }\n if (allow_arrows && is(\"name\") && is_token(peek(), \"arrow\")) {\n var param = new AST_SymbolFunarg({\n name: S.token.value,\n start: start,\n end: start,\n });\n next();\n return arrow_function(start, [param], !!async);\n }\n if (is(\"keyword\", \"function\")) {\n next();\n var func = function_(AST_Function, false, !!async);\n func.start = start;\n func.end = prev();\n return subscripts(func, allow_calls);\n }\n if (async) return subscripts(async, allow_calls);\n if (is(\"keyword\", \"class\")) {\n next();\n var cls = class_(AST_ClassExpression);\n cls.start = start;\n cls.end = prev();\n return subscripts(cls, allow_calls);\n }\n if (is(\"template_head\")) {\n return subscripts(template_string(false), allow_calls);\n }\n if (ATOMIC_START_TOKEN.has(S.token.type)) {\n return subscripts(as_atom_node(), allow_calls);\n }\n unexpected();\n };\n\n function template_string(tagged) {\n var segments = [], start = S.token;\n\n segments.push(new AST_TemplateSegment({\n start: S.token,\n raw: S.token.raw,\n value: S.token.value,\n end: S.token\n }));\n while (!S.token.end) {\n next();\n handle_regexp();\n segments.push(expression(true));\n\n if (!is_token(\"template_substitution\")) {\n unexpected();\n }\n\n segments.push(new AST_TemplateSegment({\n start: S.token,\n raw: S.token.raw,\n value: S.token.value,\n end: S.token\n }));\n }\n next();\n\n return new AST_TemplateString({\n start: start,\n segments: segments,\n end: S.token\n });\n }\n\n function expr_list(closing, allow_trailing_comma, allow_empty) {\n var first = true, a = [];\n while (!is(\"punc\", closing)) {\n if (first) first = false; else expect(\",\");\n if (allow_trailing_comma && is(\"punc\", closing)) break;\n if (is(\"punc\", \",\") && allow_empty) {\n a.push(new AST_Hole({ start: S.token, end: S.token }));\n } else if (is(\"expand\", \"...\")) {\n next();\n a.push(new AST_Expansion({start: prev(), expression: expression(),end: S.token}));\n } else {\n a.push(expression(false));\n }\n }\n next();\n return a;\n }\n\n var array_ = embed_tokens(function() {\n expect(\"[\");\n return new AST_Array({\n elements: expr_list(\"]\", !options.strict, true)\n });\n });\n\n var create_accessor = embed_tokens((is_generator, is_async) => {\n return function_(AST_Accessor, is_generator, is_async);\n });\n\n var object_or_destructuring_ = embed_tokens(function object_or_destructuring_() {\n var start = S.token, first = true, a = [];\n expect(\"{\");\n while (!is(\"punc\", \"}\")) {\n if (first) first = false; else expect(\",\");\n if (!options.strict && is(\"punc\", \"}\"))\n // allow trailing comma\n break;\n\n start = S.token;\n if (start.type == \"expand\") {\n next();\n a.push(new AST_Expansion({\n start: start,\n expression: expression(false),\n end: prev(),\n }));\n continue;\n }\n\n var name = as_property_name();\n var value;\n\n // Check property and fetch value\n if (!is(\"punc\", \":\")) {\n var concise = concise_method_or_getset(name, start);\n if (concise) {\n a.push(concise);\n continue;\n }\n\n value = new AST_SymbolRef({\n start: prev(),\n name: name,\n end: prev()\n });\n } else if (name === null) {\n unexpected(prev());\n } else {\n next(); // `:` - see first condition\n value = expression(false);\n }\n\n // Check for default value and alter value accordingly if necessary\n if (is(\"operator\", \"=\")) {\n next();\n value = new AST_Assign({\n start: start,\n left: value,\n operator: \"=\",\n right: expression(false),\n end: prev()\n });\n }\n\n // Create property\n a.push(new AST_ObjectKeyVal({\n start: start,\n quote: start.quote,\n key: name instanceof AST_Node ? name : \"\" + name,\n value: value,\n end: prev()\n }));\n }\n next();\n return new AST_Object({ properties: a });\n });\n\n function class_(KindOfClass) {\n var start, method, class_name, extends_, a = [];\n\n S.input.push_directives_stack(); // Push directive stack, but not scope stack\n S.input.add_directive(\"use strict\");\n\n if (S.token.type == \"name\" && S.token.value != \"extends\") {\n class_name = as_symbol(KindOfClass === AST_DefClass ? AST_SymbolDefClass : AST_SymbolClass);\n }\n\n if (KindOfClass === AST_DefClass && !class_name) {\n unexpected();\n }\n\n if (S.token.value == \"extends\") {\n next();\n extends_ = expression(true);\n }\n\n expect(\"{\");\n\n while (is(\"punc\", \";\")) { next(); } // Leading semicolons are okay in class bodies.\n while (!is(\"punc\", \"}\")) {\n start = S.token;\n method = concise_method_or_getset(as_property_name(), start, true);\n if (!method) { unexpected(); }\n a.push(method);\n while (is(\"punc\", \";\")) { next(); }\n }\n\n S.input.pop_directives_stack();\n\n next();\n\n return new KindOfClass({\n start: start,\n name: class_name,\n extends: extends_,\n properties: a,\n end: prev(),\n });\n }\n\n function concise_method_or_getset(name, start, is_class) {\n var get_ast = function(name, token) {\n if (typeof name === \"string\" || typeof name === \"number\") {\n return new AST_SymbolMethod({\n start: token,\n name: \"\" + name,\n end: prev()\n });\n } else if (name === null) {\n unexpected();\n }\n return name;\n };\n var is_async = false;\n var is_static = false;\n var is_generator = false;\n var property_token = start;\n if (is_class && name === \"static\" && !is(\"punc\", \"(\")) {\n is_static = true;\n property_token = S.token;\n name = as_property_name();\n }\n if (name === \"async\" && !is(\"punc\", \"(\") && !is(\"punc\", \",\") && !is(\"punc\", \"}\") && !is(\"operator\", \"=\")) {\n is_async = true;\n property_token = S.token;\n name = as_property_name();\n }\n if (name === null) {\n is_generator = true;\n property_token = S.token;\n name = as_property_name();\n if (name === null) {\n unexpected();\n }\n }\n if (is(\"punc\", \"(\")) {\n name = get_ast(name, start);\n var node = new AST_ConciseMethod({\n start : start,\n static : is_static,\n is_generator: is_generator,\n async : is_async,\n key : name,\n quote : name instanceof AST_SymbolMethod ?\n property_token.quote : undefined,\n value : create_accessor(is_generator, is_async),\n end : prev()\n });\n return node;\n }\n property_token = S.token;\n if (name == \"get\") {\n if (!is(\"punc\") || is(\"punc\", \"[\")) {\n name = get_ast(as_property_name(), start);\n return new AST_ObjectGetter({\n start : start,\n static: is_static,\n key : name,\n quote : name instanceof AST_SymbolMethod ?\n property_token.quote : undefined,\n value : create_accessor(),\n end : prev()\n });\n }\n } else if (name == \"set\") {\n if (!is(\"punc\") || is(\"punc\", \"[\")) {\n name = get_ast(as_property_name(), start);\n return new AST_ObjectSetter({\n start : start,\n static: is_static,\n key : name,\n quote : name instanceof AST_SymbolMethod ?\n property_token.quote : undefined,\n value : create_accessor(),\n end : prev()\n });\n }\n }\n }\n\n function import_() {\n var start = prev();\n var imported_name;\n var imported_names;\n if (is(\"name\")) {\n imported_name = as_symbol(AST_SymbolImport);\n }\n\n if (is(\"punc\", \",\")) {\n next();\n }\n\n imported_names = map_names(true);\n\n if (imported_names || imported_name) {\n expect_token(\"name\", \"from\");\n }\n var mod_str = S.token;\n if (mod_str.type !== \"string\") {\n unexpected();\n }\n next();\n return new AST_Import({\n start: start,\n imported_name: imported_name,\n imported_names: imported_names,\n module_name: new AST_String({\n start: mod_str,\n value: mod_str.value,\n quote: mod_str.quote,\n end: mod_str,\n }),\n end: S.token,\n });\n }\n\n function map_name(is_import) {\n function make_symbol(type) {\n return new type({\n name: as_property_name(),\n start: prev(),\n end: prev()\n });\n }\n\n var foreign_type = is_import ? AST_SymbolImportForeign : AST_SymbolExportForeign;\n var type = is_import ? AST_SymbolImport : AST_SymbolExport;\n var start = S.token;\n var foreign_name;\n var name;\n\n if (is_import) {\n foreign_name = make_symbol(foreign_type);\n } else {\n name = make_symbol(type);\n }\n if (is(\"name\", \"as\")) {\n next(); // The \"as\" word\n if (is_import) {\n name = make_symbol(type);\n } else {\n foreign_name = make_symbol(foreign_type);\n }\n } else if (is_import) {\n name = new type(foreign_name);\n } else {\n foreign_name = new foreign_type(name);\n }\n\n return new AST_NameMapping({\n start: start,\n foreign_name: foreign_name,\n name: name,\n end: prev(),\n });\n }\n\n function map_nameAsterisk(is_import, name) {\n var foreign_type = is_import ? AST_SymbolImportForeign : AST_SymbolExportForeign;\n var type = is_import ? AST_SymbolImport : AST_SymbolExport;\n var start = S.token;\n var foreign_name;\n var end = prev();\n\n name = name || new type({\n name: \"*\",\n start: start,\n end: end,\n });\n\n foreign_name = new foreign_type({\n name: \"*\",\n start: start,\n end: end,\n });\n\n return new AST_NameMapping({\n start: start,\n foreign_name: foreign_name,\n name: name,\n end: end,\n });\n }\n\n function map_names(is_import) {\n var names;\n if (is(\"punc\", \"{\")) {\n next();\n names = [];\n while (!is(\"punc\", \"}\")) {\n names.push(map_name(is_import));\n if (is(\"punc\", \",\")) {\n next();\n }\n }\n next();\n } else if (is(\"operator\", \"*\")) {\n var name;\n next();\n if (is_import && is(\"name\", \"as\")) {\n next(); // The \"as\" word\n name = as_symbol(is_import ? AST_SymbolImport : AST_SymbolExportForeign);\n }\n names = [map_nameAsterisk(is_import, name)];\n }\n return names;\n }\n\n function export_() {\n var start = S.token;\n var is_default;\n var exported_names;\n\n if (is(\"keyword\", \"default\")) {\n is_default = true;\n next();\n } else if (exported_names = map_names(false)) {\n if (is(\"name\", \"from\")) {\n next();\n\n var mod_str = S.token;\n if (mod_str.type !== \"string\") {\n unexpected();\n }\n next();\n\n return new AST_Export({\n start: start,\n is_default: is_default,\n exported_names: exported_names,\n module_name: new AST_String({\n start: mod_str,\n value: mod_str.value,\n quote: mod_str.quote,\n end: mod_str,\n }),\n end: prev(),\n });\n } else {\n return new AST_Export({\n start: start,\n is_default: is_default,\n exported_names: exported_names,\n end: prev(),\n });\n }\n }\n\n var node;\n var exported_value;\n var exported_definition;\n if (is(\"punc\", \"{\")\n || is_default\n && (is(\"keyword\", \"class\") || is(\"keyword\", \"function\"))\n && is_token(peek(), \"punc\")) {\n exported_value = expression(false);\n semicolon();\n } else if ((node = statement(is_default)) instanceof AST_Definitions && is_default) {\n unexpected(node.start);\n } else if (node instanceof AST_Definitions || node instanceof AST_Lambda || node instanceof AST_DefClass) {\n exported_definition = node;\n } else if (node instanceof AST_SimpleStatement) {\n exported_value = node.body;\n } else {\n unexpected(node.start);\n }\n\n return new AST_Export({\n start: start,\n is_default: is_default,\n exported_value: exported_value,\n exported_definition: exported_definition,\n end: prev(),\n });\n }\n\n function as_property_name() {\n var tmp = S.token;\n switch (tmp.type) {\n case \"punc\":\n if (tmp.value === \"[\") {\n next();\n var ex = expression(false);\n expect(\"]\");\n return ex;\n } else unexpected(tmp);\n case \"operator\":\n if (tmp.value === \"*\") {\n next();\n return null;\n }\n if (![\"delete\", \"in\", \"instanceof\", \"new\", \"typeof\", \"void\"].includes(tmp.value)) {\n unexpected(tmp);\n }\n case \"name\":\n if (tmp.value == \"yield\") {\n if (is_in_generator()) {\n token_error(tmp, \"Yield cannot be used as identifier inside generators\");\n } else if (!is_token(peek(), \"punc\", \":\")\n && !is_token(peek(), \"punc\", \"(\")\n && S.input.has_directive(\"use strict\")) {\n token_error(tmp, \"Unexpected yield identifier inside strict mode\");\n }\n }\n case \"string\":\n case \"num\":\n case \"big_int\":\n case \"keyword\":\n case \"atom\":\n next();\n return tmp.value;\n default:\n unexpected(tmp);\n }\n }\n\n function as_name() {\n var tmp = S.token;\n if (tmp.type != \"name\") unexpected();\n next();\n return tmp.value;\n }\n\n function _make_symbol(type) {\n var name = S.token.value;\n return new (name == \"this\" ? AST_This :\n name == \"super\" ? AST_Super :\n type)({\n name : String(name),\n start : S.token,\n end : S.token\n });\n }\n\n function _verify_symbol(sym) {\n var name = sym.name;\n if (is_in_generator() && name == \"yield\") {\n token_error(sym.start, \"Yield cannot be used as identifier inside generators\");\n }\n if (S.input.has_directive(\"use strict\")) {\n if (name == \"yield\") {\n token_error(sym.start, \"Unexpected yield identifier inside strict mode\");\n }\n if (sym instanceof AST_SymbolDeclaration && (name == \"arguments\" || name == \"eval\")) {\n token_error(sym.start, \"Unexpected \" + name + \" in strict mode\");\n }\n }\n }\n\n function as_symbol(type, noerror) {\n if (!is(\"name\")) {\n if (!noerror) croak(\"Name expected\");\n return null;\n }\n var sym = _make_symbol(type);\n _verify_symbol(sym);\n next();\n return sym;\n }\n\n // Annotate AST_Call, AST_Lambda or AST_New with the special comments\n function annotate(node) {\n var start = node.start;\n var comments = start.comments_before;\n const comments_outside_parens = outer_comments_before_counts.get(start);\n var i = comments_outside_parens != null ? comments_outside_parens : comments.length;\n while (--i >= 0) {\n var comment = comments[i];\n if (/[@#]__/.test(comment.value)) {\n if (/[@#]__PURE__/.test(comment.value)) {\n set_annotation(node, _PURE);\n break;\n }\n if (/[@#]__INLINE__/.test(comment.value)) {\n set_annotation(node, _INLINE);\n break;\n }\n if (/[@#]__NOINLINE__/.test(comment.value)) {\n set_annotation(node, _NOINLINE);\n break;\n }\n }\n }\n }\n\n var subscripts = function(expr, allow_calls) {\n var start = expr.start;\n if (is(\"punc\", \".\")) {\n next();\n return subscripts(new AST_Dot({\n start : start,\n expression : expr,\n property : as_name(),\n end : prev()\n }), allow_calls);\n }\n if (is(\"punc\", \"[\")) {\n next();\n var prop = expression(true);\n expect(\"]\");\n return subscripts(new AST_Sub({\n start : start,\n expression : expr,\n property : prop,\n end : prev()\n }), allow_calls);\n }\n if (allow_calls && is(\"punc\", \"(\")) {\n next();\n var call = new AST_Call({\n start : start,\n expression : expr,\n args : call_args(),\n end : prev()\n });\n annotate(call);\n return subscripts(call, true);\n }\n if (is(\"template_head\")) {\n return subscripts(new AST_PrefixedTemplateString({\n start: start,\n prefix: expr,\n template_string: template_string(true),\n end: prev()\n }), allow_calls);\n }\n return expr;\n };\n\n function call_args() {\n var args = [];\n while (!is(\"punc\", \")\")) {\n if (is(\"expand\", \"...\")) {\n next();\n args.push(new AST_Expansion({\n start: prev(),\n expression: expression(false),\n end: prev()\n }));\n } else {\n args.push(expression(false));\n }\n if (!is(\"punc\", \")\")) {\n expect(\",\");\n if (is(\"punc\", \")\") && options.ecma < 2017) unexpected();\n }\n }\n next();\n return args;\n }\n\n var maybe_unary = function(allow_calls, allow_arrows) {\n var start = S.token;\n if (start.type == \"name\" && start.value == \"await\") {\n if (is_in_async()) {\n next();\n return _await_expression();\n } else if (S.input.has_directive(\"use strict\")) {\n token_error(S.token, \"Unexpected await identifier inside strict mode\");\n }\n }\n if (is(\"operator\") && UNARY_PREFIX.has(start.value)) {\n next();\n handle_regexp();\n var ex = make_unary(AST_UnaryPrefix, start, maybe_unary(allow_calls));\n ex.start = start;\n ex.end = prev();\n return ex;\n }\n var val = expr_atom(allow_calls, allow_arrows);\n while (is(\"operator\") && UNARY_POSTFIX.has(S.token.value) && !has_newline_before(S.token)) {\n if (val instanceof AST_Arrow) unexpected();\n val = make_unary(AST_UnaryPostfix, S.token, val);\n val.start = start;\n val.end = S.token;\n next();\n }\n return val;\n };\n\n function make_unary(ctor, token, expr) {\n var op = token.value;\n switch (op) {\n case \"++\":\n case \"--\":\n if (!is_assignable(expr))\n croak(\"Invalid use of \" + op + \" operator\", token.line, token.col, token.pos);\n break;\n case \"delete\":\n if (expr instanceof AST_SymbolRef && S.input.has_directive(\"use strict\"))\n croak(\"Calling delete on expression not allowed in strict mode\", expr.start.line, expr.start.col, expr.start.pos);\n break;\n }\n return new ctor({ operator: op, expression: expr });\n }\n\n var expr_op = function(left, min_prec, no_in) {\n var op = is(\"operator\") ? S.token.value : null;\n if (op == \"in\" && no_in) op = null;\n if (op == \"**\" && left instanceof AST_UnaryPrefix\n /* unary token in front not allowed - parenthesis required */\n && !is_token(left.start, \"punc\", \"(\")\n && left.operator !== \"--\" && left.operator !== \"++\")\n unexpected(left.start);\n var prec = op != null ? PRECEDENCE[op] : null;\n if (prec != null && (prec > min_prec || (op === \"**\" && min_prec === prec))) {\n next();\n var right = expr_op(maybe_unary(true), prec, no_in);\n return expr_op(new AST_Binary({\n start : left.start,\n left : left,\n operator : op,\n right : right,\n end : right.end\n }), min_prec, no_in);\n }\n return left;\n };\n\n function expr_ops(no_in) {\n return expr_op(maybe_unary(true, true), 0, no_in);\n }\n\n var maybe_conditional = function(no_in) {\n var start = S.token;\n var expr = expr_ops(no_in);\n if (is(\"operator\", \"?\")) {\n next();\n var yes = expression(false);\n expect(\":\");\n return new AST_Conditional({\n start : start,\n condition : expr,\n consequent : yes,\n alternative : expression(false, no_in),\n end : prev()\n });\n }\n return expr;\n };\n\n function is_assignable(expr) {\n return expr instanceof AST_PropAccess || expr instanceof AST_SymbolRef;\n }\n\n function to_destructuring(node) {\n if (node instanceof AST_Object) {\n node = new AST_Destructuring({\n start: node.start,\n names: node.properties.map(to_destructuring),\n is_array: false,\n end: node.end\n });\n } else if (node instanceof AST_Array) {\n var names = [];\n\n for (var i = 0; i < node.elements.length; i++) {\n // Only allow expansion as last element\n if (node.elements[i] instanceof AST_Expansion) {\n if (i + 1 !== node.elements.length) {\n token_error(node.elements[i].start, \"Spread must the be last element in destructuring array\");\n }\n node.elements[i].expression = to_destructuring(node.elements[i].expression);\n }\n\n names.push(to_destructuring(node.elements[i]));\n }\n\n node = new AST_Destructuring({\n start: node.start,\n names: names,\n is_array: true,\n end: node.end\n });\n } else if (node instanceof AST_ObjectProperty) {\n node.value = to_destructuring(node.value);\n } else if (node instanceof AST_Assign) {\n node = new AST_DefaultAssign({\n start: node.start,\n left: node.left,\n operator: \"=\",\n right: node.right,\n end: node.end\n });\n }\n return node;\n }\n\n // In ES6, AssignmentExpression can also be an ArrowFunction\n var maybe_assign = function(no_in) {\n handle_regexp();\n var start = S.token;\n\n if (start.type == \"name\" && start.value == \"yield\") {\n if (is_in_generator()) {\n next();\n return _yield_expression();\n } else if (S.input.has_directive(\"use strict\")) {\n token_error(S.token, \"Unexpected yield identifier inside strict mode\");\n }\n }\n\n var left = maybe_conditional(no_in);\n var val = S.token.value;\n\n if (is(\"operator\") && ASSIGNMENT.has(val)) {\n if (is_assignable(left) || (left = to_destructuring(left)) instanceof AST_Destructuring) {\n next();\n return new AST_Assign({\n start : start,\n left : left,\n operator : val,\n right : maybe_assign(no_in),\n end : prev()\n });\n }\n croak(\"Invalid assignment\");\n }\n return left;\n };\n\n var expression = function(commas, no_in) {\n var start = S.token;\n var exprs = [];\n while (true) {\n exprs.push(maybe_assign(no_in));\n if (!commas || !is(\"punc\", \",\")) break;\n next();\n commas = true;\n }\n return exprs.length == 1 ? exprs[0] : new AST_Sequence({\n start : start,\n expressions : exprs,\n end : peek()\n });\n };\n\n function in_loop(cont) {\n ++S.in_loop;\n var ret = cont();\n --S.in_loop;\n return ret;\n }\n\n if (options.expression) {\n return expression(true);\n }\n\n return (function() {\n var start = S.token;\n var body = [];\n S.input.push_directives_stack();\n if (options.module) S.input.add_directive(\"use strict\");\n while (!is(\"eof\"))\n body.push(statement());\n S.input.pop_directives_stack();\n var end = prev();\n var toplevel = options.toplevel;\n if (toplevel) {\n toplevel.body = toplevel.body.concat(body);\n toplevel.end = end;\n } else {\n toplevel = new AST_Toplevel({ start: start, body: body, end: end });\n }\n return toplevel;\n })();\n\n}\n\nexport {\n get_full_char_code,\n get_full_char,\n is_identifier_char,\n is_identifier_string,\n is_surrogate_pair_head,\n is_surrogate_pair_tail,\n js_error,\n JS_Parse_Error,\n parse,\n PRECEDENCE,\n RESERVED_WORDS,\n tokenizer,\n};\n","/***********************************************************************\n\n A JavaScript tokenizer / parser / beautifier / compressor.\n https://github.com/mishoo/UglifyJS2\n\n -------------------------------- (C) ---------------------------------\n\n Author: Mihai Bazon\n \n http://mihai.bazon.net/blog\n\n Distributed under the BSD license:\n\n Copyright 2012 (c) Mihai Bazon \n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions\n are met:\n\n * Redistributions of source code must retain the above\n copyright notice, this list of conditions and the following\n disclaimer.\n\n * Redistributions in binary form must reproduce the above\n copyright notice, this list of conditions and the following\n disclaimer in the documentation and/or other materials\n provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY\n EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE\n LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,\n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR\n TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF\n THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n SUCH DAMAGE.\n\n ***********************************************************************/\n\n\"use strict\";\n\nimport {\n HOP,\n MAP,\n noop,\n string_template,\n} from \"./utils/index.js\";\nimport { parse } from \"./parse.js\";\n\nfunction DEFNODE(type, props, methods, base = AST_Node) {\n if (!props) props = [];\n else props = props.split(/\\s+/);\n var self_props = props;\n if (base && base.PROPS)\n props = props.concat(base.PROPS);\n var code = \"return function AST_\" + type + \"(props){ if (props) { \";\n for (var i = props.length; --i >= 0;) {\n code += \"this.\" + props[i] + \" = props.\" + props[i] + \";\";\n }\n const proto = base && Object.create(base.prototype);\n if (proto && proto.initialize || (methods && methods.initialize))\n code += \"this.initialize();\";\n code += \"}\";\n code += \"this.flags = 0;\";\n code += \"}\";\n var ctor = new Function(code)();\n if (proto) {\n ctor.prototype = proto;\n ctor.BASE = base;\n }\n if (base) base.SUBCLASSES.push(ctor);\n ctor.prototype.CTOR = ctor;\n ctor.PROPS = props || null;\n ctor.SELF_PROPS = self_props;\n ctor.SUBCLASSES = [];\n if (type) {\n ctor.prototype.TYPE = ctor.TYPE = type;\n }\n if (methods) for (i in methods) if (HOP(methods, i)) {\n if (i[0] === \"$\") {\n ctor[i.substr(1)] = methods[i];\n } else {\n ctor.prototype[i] = methods[i];\n }\n }\n ctor.DEFMETHOD = function(name, method) {\n this.prototype[name] = method;\n };\n return ctor;\n}\n\nvar AST_Token = DEFNODE(\"Token\", \"type value line col pos endline endcol endpos nlb comments_before comments_after file raw quote end\", {\n}, null);\n\nvar AST_Node = DEFNODE(\"Node\", \"start end\", {\n _clone: function(deep) {\n if (deep) {\n var self = this.clone();\n return self.transform(new TreeTransformer(function(node) {\n if (node !== self) {\n return node.clone(true);\n }\n }));\n }\n return new this.CTOR(this);\n },\n clone: function(deep) {\n return this._clone(deep);\n },\n $documentation: \"Base class of all AST nodes\",\n $propdoc: {\n start: \"[AST_Token] The first token of this node\",\n end: \"[AST_Token] The last token of this node\"\n },\n _walk: function(visitor) {\n return visitor._visit(this);\n },\n walk: function(visitor) {\n return this._walk(visitor); // not sure the indirection will be any help\n }\n}, null);\n\nAST_Node.warn_function = null;\nAST_Node.warn = function(txt, props) {\n if (AST_Node.warn_function)\n AST_Node.warn_function(string_template(txt, props));\n};\n\n/* -----[ statements ]----- */\n\nvar AST_Statement = DEFNODE(\"Statement\", null, {\n $documentation: \"Base class of all statements\",\n});\n\nvar AST_Debugger = DEFNODE(\"Debugger\", null, {\n $documentation: \"Represents a debugger statement\",\n}, AST_Statement);\n\nvar AST_Directive = DEFNODE(\"Directive\", \"value quote\", {\n $documentation: \"Represents a directive, like \\\"use strict\\\";\",\n $propdoc: {\n value: \"[string] The value of this directive as a plain string (it's not an AST_String!)\",\n quote: \"[string] the original quote character\"\n },\n}, AST_Statement);\n\nvar AST_SimpleStatement = DEFNODE(\"SimpleStatement\", \"body\", {\n $documentation: \"A statement consisting of an expression, i.e. a = 1 + 2\",\n $propdoc: {\n body: \"[AST_Node] an expression node (should not be instanceof AST_Statement)\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.body._walk(visitor);\n });\n }\n}, AST_Statement);\n\nfunction walk_body(node, visitor) {\n var body = node.body;\n if (body instanceof AST_Node) {\n body._walk(visitor);\n } else for (var i = 0, len = body.length; i < len; i++) {\n body[i]._walk(visitor);\n }\n}\n\nfunction clone_block_scope(deep) {\n var clone = this._clone(deep);\n if (this.block_scope) {\n // TODO this is sometimes undefined during compression.\n // But it should always have a value!\n clone.block_scope = this.block_scope.clone();\n }\n return clone;\n}\n\nvar AST_Block = DEFNODE(\"Block\", \"body block_scope\", {\n $documentation: \"A body of statements (usually braced)\",\n $propdoc: {\n body: \"[AST_Statement*] an array of statements\",\n block_scope: \"[AST_Scope] the block scope\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n walk_body(this, visitor);\n });\n },\n clone: clone_block_scope\n}, AST_Statement);\n\nvar AST_BlockStatement = DEFNODE(\"BlockStatement\", null, {\n $documentation: \"A block statement\",\n}, AST_Block);\n\nvar AST_EmptyStatement = DEFNODE(\"EmptyStatement\", null, {\n $documentation: \"The empty statement (empty block or simply a semicolon)\"\n}, AST_Statement);\n\nvar AST_StatementWithBody = DEFNODE(\"StatementWithBody\", \"body\", {\n $documentation: \"Base class for all statements that contain one nested body: `For`, `ForIn`, `Do`, `While`, `With`\",\n $propdoc: {\n body: \"[AST_Statement] the body; this should always be present, even if it's an AST_EmptyStatement\"\n }\n}, AST_Statement);\n\nvar AST_LabeledStatement = DEFNODE(\"LabeledStatement\", \"label\", {\n $documentation: \"Statement with a label\",\n $propdoc: {\n label: \"[AST_Label] a label definition\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.label._walk(visitor);\n this.body._walk(visitor);\n });\n },\n clone: function(deep) {\n var node = this._clone(deep);\n if (deep) {\n var label = node.label;\n var def = this.label;\n node.walk(new TreeWalker(function(node) {\n if (node instanceof AST_LoopControl\n && node.label && node.label.thedef === def) {\n node.label.thedef = label;\n label.references.push(node);\n }\n }));\n }\n return node;\n }\n}, AST_StatementWithBody);\n\nvar AST_IterationStatement = DEFNODE(\"IterationStatement\", \"block_scope\", {\n $documentation: \"Internal class. All loops inherit from it.\",\n $propdoc: {\n block_scope: \"[AST_Scope] the block scope for this iteration statement.\"\n },\n clone: clone_block_scope\n}, AST_StatementWithBody);\n\nvar AST_DWLoop = DEFNODE(\"DWLoop\", \"condition\", {\n $documentation: \"Base class for do/while statements\",\n $propdoc: {\n condition: \"[AST_Node] the loop condition. Should not be instanceof AST_Statement\"\n }\n}, AST_IterationStatement);\n\nvar AST_Do = DEFNODE(\"Do\", null, {\n $documentation: \"A `do` statement\",\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.body._walk(visitor);\n this.condition._walk(visitor);\n });\n }\n}, AST_DWLoop);\n\nvar AST_While = DEFNODE(\"While\", null, {\n $documentation: \"A `while` statement\",\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.condition._walk(visitor);\n this.body._walk(visitor);\n });\n }\n}, AST_DWLoop);\n\nvar AST_For = DEFNODE(\"For\", \"init condition step\", {\n $documentation: \"A `for` statement\",\n $propdoc: {\n init: \"[AST_Node?] the `for` initialization code, or null if empty\",\n condition: \"[AST_Node?] the `for` termination clause, or null if empty\",\n step: \"[AST_Node?] the `for` update clause, or null if empty\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n if (this.init) this.init._walk(visitor);\n if (this.condition) this.condition._walk(visitor);\n if (this.step) this.step._walk(visitor);\n this.body._walk(visitor);\n });\n }\n}, AST_IterationStatement);\n\nvar AST_ForIn = DEFNODE(\"ForIn\", \"init object\", {\n $documentation: \"A `for ... in` statement\",\n $propdoc: {\n init: \"[AST_Node] the `for/in` initialization code\",\n object: \"[AST_Node] the object that we're looping through\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.init._walk(visitor);\n this.object._walk(visitor);\n this.body._walk(visitor);\n });\n }\n}, AST_IterationStatement);\n\nvar AST_ForOf = DEFNODE(\"ForOf\", \"await\", {\n $documentation: \"A `for ... of` statement\",\n}, AST_ForIn);\n\nvar AST_With = DEFNODE(\"With\", \"expression\", {\n $documentation: \"A `with` statement\",\n $propdoc: {\n expression: \"[AST_Node] the `with` expression\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.expression._walk(visitor);\n this.body._walk(visitor);\n });\n }\n}, AST_StatementWithBody);\n\n/* -----[ scope and functions ]----- */\n\nvar AST_Scope = DEFNODE(\"Scope\", \"variables functions uses_with uses_eval parent_scope enclosed cname _var_name_cache\", {\n $documentation: \"Base class for all statements introducing a lexical scope\",\n $propdoc: {\n variables: \"[Map/S] a map of name -> SymbolDef for all variables/functions defined in this scope\",\n functions: \"[Map/S] like `variables`, but only lists function declarations\",\n uses_with: \"[boolean/S] tells whether this scope uses the `with` statement\",\n uses_eval: \"[boolean/S] tells whether this scope contains a direct call to the global `eval`\",\n parent_scope: \"[AST_Scope?/S] link to the parent scope\",\n enclosed: \"[SymbolDef*/S] a list of all symbol definitions that are accessed from this scope or any subscopes\",\n cname: \"[integer/S] current index for mangling variables (used internally by the mangler)\",\n },\n get_defun_scope: function() {\n var self = this;\n while (self.is_block_scope()) {\n self = self.parent_scope;\n }\n return self;\n },\n clone: function(deep) {\n var node = this._clone(deep);\n if (this.variables) node.variables = new Map(this.variables);\n if (this.functions) node.functions = new Map(this.functions);\n if (this.enclosed) node.enclosed = this.enclosed.slice();\n return node;\n },\n pinned: function() {\n return this.uses_eval || this.uses_with;\n }\n}, AST_Block);\n\nvar AST_Toplevel = DEFNODE(\"Toplevel\", \"globals\", {\n $documentation: \"The toplevel scope\",\n $propdoc: {\n globals: \"[Map/S] a map of name -> SymbolDef for all undeclared names\",\n },\n wrap_commonjs: function(name) {\n var body = this.body;\n var wrapped_tl = \"(function(exports){'$ORIG';})(typeof \" + name + \"=='undefined'?(\" + name + \"={}):\" + name + \");\";\n wrapped_tl = parse(wrapped_tl);\n wrapped_tl = wrapped_tl.transform(new TreeTransformer(function(node) {\n if (node instanceof AST_Directive && node.value == \"$ORIG\") {\n return MAP.splice(body);\n }\n }));\n return wrapped_tl;\n },\n wrap_enclose: function(args_values) {\n if (typeof args_values != \"string\") args_values = \"\";\n var index = args_values.indexOf(\":\");\n if (index < 0) index = args_values.length;\n var body = this.body;\n return parse([\n \"(function(\",\n args_values.slice(0, index),\n '){\"$ORIG\"})(',\n args_values.slice(index + 1),\n \")\"\n ].join(\"\")).transform(new TreeTransformer(function(node) {\n if (node instanceof AST_Directive && node.value == \"$ORIG\") {\n return MAP.splice(body);\n }\n }));\n }\n}, AST_Scope);\n\nvar AST_Expansion = DEFNODE(\"Expansion\", \"expression\", {\n $documentation: \"An expandible argument, such as ...rest, a splat, such as [1,2,...all], or an expansion in a variable declaration, such as var [first, ...rest] = list\",\n $propdoc: {\n expression: \"[AST_Node] the thing to be expanded\"\n },\n _walk: function(visitor) {\n var self = this;\n return visitor._visit(this, function() {\n self.expression.walk(visitor);\n });\n }\n});\n\nvar AST_Lambda = DEFNODE(\"Lambda\", \"name argnames uses_arguments is_generator async\", {\n $documentation: \"Base class for functions\",\n $propdoc: {\n name: \"[AST_SymbolDeclaration?] the name of this function\",\n argnames: \"[AST_SymbolFunarg|AST_Destructuring|AST_Expansion|AST_DefaultAssign*] array of function arguments, destructurings, or expanding arguments\",\n uses_arguments: \"[boolean/S] tells whether this function accesses the arguments array\",\n is_generator: \"[boolean] is this a generator method\",\n async: \"[boolean] is this method async\",\n },\n args_as_names: function () {\n var out = [];\n for (var i = 0; i < this.argnames.length; i++) {\n if (this.argnames[i] instanceof AST_Destructuring) {\n out.push(...this.argnames[i].all_symbols());\n } else {\n out.push(this.argnames[i]);\n }\n }\n return out;\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n if (this.name) this.name._walk(visitor);\n var argnames = this.argnames;\n for (var i = 0, len = argnames.length; i < len; i++) {\n argnames[i]._walk(visitor);\n }\n walk_body(this, visitor);\n });\n }\n}, AST_Scope);\n\nvar AST_Accessor = DEFNODE(\"Accessor\", null, {\n $documentation: \"A setter/getter function. The `name` property is always null.\"\n}, AST_Lambda);\n\nvar AST_Function = DEFNODE(\"Function\", null, {\n $documentation: \"A function expression\"\n}, AST_Lambda);\n\nvar AST_Arrow = DEFNODE(\"Arrow\", null, {\n $documentation: \"An ES6 Arrow function ((a) => b)\"\n}, AST_Lambda);\n\nvar AST_Defun = DEFNODE(\"Defun\", null, {\n $documentation: \"A function definition\"\n}, AST_Lambda);\n\n/* -----[ DESTRUCTURING ]----- */\nvar AST_Destructuring = DEFNODE(\"Destructuring\", \"names is_array\", {\n $documentation: \"A destructuring of several names. Used in destructuring assignment and with destructuring function argument names\",\n $propdoc: {\n \"names\": \"[AST_Node*] Array of properties or elements\",\n \"is_array\": \"[Boolean] Whether the destructuring represents an object or array\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.names.forEach(function(name) {\n name._walk(visitor);\n });\n });\n },\n all_symbols: function() {\n var out = [];\n this.walk(new TreeWalker(function (node) {\n if (node instanceof AST_Symbol) {\n out.push(node);\n }\n }));\n return out;\n }\n});\n\nvar AST_PrefixedTemplateString = DEFNODE(\"PrefixedTemplateString\", \"template_string prefix\", {\n $documentation: \"A templatestring with a prefix, such as String.raw`foobarbaz`\",\n $propdoc: {\n template_string: \"[AST_TemplateString] The template string\",\n prefix: \"[AST_SymbolRef|AST_PropAccess] The prefix, which can be a symbol such as `foo` or a dotted expression such as `String.raw`.\"\n },\n _walk: function(visitor) {\n this.prefix._walk(visitor);\n this.template_string._walk(visitor);\n }\n});\n\nvar AST_TemplateString = DEFNODE(\"TemplateString\", \"segments\", {\n $documentation: \"A template string literal\",\n $propdoc: {\n segments: \"[AST_Node*] One or more segments, starting with AST_TemplateSegment. AST_Node may follow AST_TemplateSegment, but each AST_Node must be followed by AST_TemplateSegment.\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.segments.forEach(function(seg) {\n seg._walk(visitor);\n });\n });\n }\n});\n\nvar AST_TemplateSegment = DEFNODE(\"TemplateSegment\", \"value raw\", {\n $documentation: \"A segment of a template string literal\",\n $propdoc: {\n value: \"Content of the segment\",\n raw: \"Raw content of the segment\"\n }\n});\n\n/* -----[ JUMPS ]----- */\n\nvar AST_Jump = DEFNODE(\"Jump\", null, {\n $documentation: \"Base class for “jumps” (for now that's `return`, `throw`, `break` and `continue`)\"\n}, AST_Statement);\n\nvar AST_Exit = DEFNODE(\"Exit\", \"value\", {\n $documentation: \"Base class for “exits” (`return` and `throw`)\",\n $propdoc: {\n value: \"[AST_Node?] the value returned or thrown by this statement; could be null for AST_Return\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, this.value && function() {\n this.value._walk(visitor);\n });\n }\n}, AST_Jump);\n\nvar AST_Return = DEFNODE(\"Return\", null, {\n $documentation: \"A `return` statement\"\n}, AST_Exit);\n\nvar AST_Throw = DEFNODE(\"Throw\", null, {\n $documentation: \"A `throw` statement\"\n}, AST_Exit);\n\nvar AST_LoopControl = DEFNODE(\"LoopControl\", \"label\", {\n $documentation: \"Base class for loop control statements (`break` and `continue`)\",\n $propdoc: {\n label: \"[AST_LabelRef?] the label, or null if none\",\n },\n _walk: function(visitor) {\n return visitor._visit(this, this.label && function() {\n this.label._walk(visitor);\n });\n }\n}, AST_Jump);\n\nvar AST_Break = DEFNODE(\"Break\", null, {\n $documentation: \"A `break` statement\"\n}, AST_LoopControl);\n\nvar AST_Continue = DEFNODE(\"Continue\", null, {\n $documentation: \"A `continue` statement\"\n}, AST_LoopControl);\n\n/* -----[ IF ]----- */\n\nvar AST_If = DEFNODE(\"If\", \"condition alternative\", {\n $documentation: \"A `if` statement\",\n $propdoc: {\n condition: \"[AST_Node] the `if` condition\",\n alternative: \"[AST_Statement?] the `else` part, or null if not present\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.condition._walk(visitor);\n this.body._walk(visitor);\n if (this.alternative) this.alternative._walk(visitor);\n });\n }\n}, AST_StatementWithBody);\n\n/* -----[ SWITCH ]----- */\n\nvar AST_Switch = DEFNODE(\"Switch\", \"expression\", {\n $documentation: \"A `switch` statement\",\n $propdoc: {\n expression: \"[AST_Node] the `switch` “discriminant”\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.expression._walk(visitor);\n walk_body(this, visitor);\n });\n }\n}, AST_Block);\n\nvar AST_SwitchBranch = DEFNODE(\"SwitchBranch\", null, {\n $documentation: \"Base class for `switch` branches\",\n}, AST_Block);\n\nvar AST_Default = DEFNODE(\"Default\", null, {\n $documentation: \"A `default` switch branch\",\n}, AST_SwitchBranch);\n\nvar AST_Case = DEFNODE(\"Case\", \"expression\", {\n $documentation: \"A `case` switch branch\",\n $propdoc: {\n expression: \"[AST_Node] the `case` expression\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.expression._walk(visitor);\n walk_body(this, visitor);\n });\n }\n}, AST_SwitchBranch);\n\n/* -----[ EXCEPTIONS ]----- */\n\nvar AST_Try = DEFNODE(\"Try\", \"bcatch bfinally\", {\n $documentation: \"A `try` statement\",\n $propdoc: {\n bcatch: \"[AST_Catch?] the catch block, or null if not present\",\n bfinally: \"[AST_Finally?] the finally block, or null if not present\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n walk_body(this, visitor);\n if (this.bcatch) this.bcatch._walk(visitor);\n if (this.bfinally) this.bfinally._walk(visitor);\n });\n }\n}, AST_Block);\n\nvar AST_Catch = DEFNODE(\"Catch\", \"argname\", {\n $documentation: \"A `catch` node; only makes sense as part of a `try` statement\",\n $propdoc: {\n argname: \"[AST_SymbolCatch|AST_Destructuring|AST_Expansion|AST_DefaultAssign] symbol for the exception\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n if (this.argname) this.argname._walk(visitor);\n walk_body(this, visitor);\n });\n }\n}, AST_Block);\n\nvar AST_Finally = DEFNODE(\"Finally\", null, {\n $documentation: \"A `finally` node; only makes sense as part of a `try` statement\"\n}, AST_Block);\n\n/* -----[ VAR/CONST ]----- */\n\nvar AST_Definitions = DEFNODE(\"Definitions\", \"definitions\", {\n $documentation: \"Base class for `var` or `const` nodes (variable declarations/initializations)\",\n $propdoc: {\n definitions: \"[AST_VarDef*] array of variable definitions\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n var definitions = this.definitions;\n for (var i = 0, len = definitions.length; i < len; i++) {\n definitions[i]._walk(visitor);\n }\n });\n }\n}, AST_Statement);\n\nvar AST_Var = DEFNODE(\"Var\", null, {\n $documentation: \"A `var` statement\"\n}, AST_Definitions);\n\nvar AST_Let = DEFNODE(\"Let\", null, {\n $documentation: \"A `let` statement\"\n}, AST_Definitions);\n\nvar AST_Const = DEFNODE(\"Const\", null, {\n $documentation: \"A `const` statement\"\n}, AST_Definitions);\n\nvar AST_NameMapping = DEFNODE(\"NameMapping\", \"foreign_name name\", {\n $documentation: \"The part of the export/import statement that declare names from a module.\",\n $propdoc: {\n foreign_name: \"[AST_SymbolExportForeign|AST_SymbolImportForeign] The name being exported/imported (as specified in the module)\",\n name: \"[AST_SymbolExport|AST_SymbolImport] The name as it is visible to this module.\"\n },\n _walk: function (visitor) {\n return visitor._visit(this, function() {\n this.foreign_name._walk(visitor);\n this.name._walk(visitor);\n });\n }\n});\n\nvar AST_Import = DEFNODE(\"Import\", \"imported_name imported_names module_name\", {\n $documentation: \"An `import` statement\",\n $propdoc: {\n imported_name: \"[AST_SymbolImport] The name of the variable holding the module's default export.\",\n imported_names: \"[AST_NameMapping*] The names of non-default imported variables\",\n module_name: \"[AST_String] String literal describing where this module came from\",\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n if (this.imported_name) {\n this.imported_name._walk(visitor);\n }\n if (this.imported_names) {\n this.imported_names.forEach(function(name_import) {\n name_import._walk(visitor);\n });\n }\n this.module_name._walk(visitor);\n });\n }\n});\n\nvar AST_Export = DEFNODE(\"Export\", \"exported_definition exported_value is_default exported_names module_name\", {\n $documentation: \"An `export` statement\",\n $propdoc: {\n exported_definition: \"[AST_Defun|AST_Definitions|AST_DefClass?] An exported definition\",\n exported_value: \"[AST_Node?] An exported value\",\n exported_names: \"[AST_NameMapping*?] List of exported names\",\n module_name: \"[AST_String?] Name of the file to load exports from\",\n is_default: \"[Boolean] Whether this is the default exported value of this module\"\n },\n _walk: function (visitor) {\n visitor._visit(this, function () {\n if (this.exported_definition) {\n this.exported_definition._walk(visitor);\n }\n if (this.exported_value) {\n this.exported_value._walk(visitor);\n }\n if (this.exported_names) {\n this.exported_names.forEach(function(name_export) {\n name_export._walk(visitor);\n });\n }\n if (this.module_name) {\n this.module_name._walk(visitor);\n }\n });\n }\n}, AST_Statement);\n\nvar AST_VarDef = DEFNODE(\"VarDef\", \"name value\", {\n $documentation: \"A variable declaration; only appears in a AST_Definitions node\",\n $propdoc: {\n name: \"[AST_Destructuring|AST_SymbolConst|AST_SymbolLet|AST_SymbolVar] name of the variable\",\n value: \"[AST_Node?] initializer, or null of there's no initializer\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.name._walk(visitor);\n if (this.value) this.value._walk(visitor);\n });\n }\n});\n\n/* -----[ OTHER ]----- */\n\nvar AST_Call = DEFNODE(\"Call\", \"expression args _annotations\", {\n $documentation: \"A function call expression\",\n $propdoc: {\n expression: \"[AST_Node] expression to invoke as function\",\n args: \"[AST_Node*] array of arguments\",\n _annotations: \"[number] bitfield containing information about the call\"\n },\n initialize() {\n if (this._annotations == null) this._annotations = 0;\n },\n _walk(visitor) {\n return visitor._visit(this, function() {\n var args = this.args;\n for (var i = 0, len = args.length; i < len; i++) {\n args[i]._walk(visitor);\n }\n this.expression._walk(visitor);\n });\n }\n});\n\nvar AST_New = DEFNODE(\"New\", null, {\n $documentation: \"An object instantiation. Derives from a function call since it has exactly the same properties\"\n}, AST_Call);\n\nvar AST_Sequence = DEFNODE(\"Sequence\", \"expressions\", {\n $documentation: \"A sequence expression (comma-separated expressions)\",\n $propdoc: {\n expressions: \"[AST_Node*] array of expressions (at least two)\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.expressions.forEach(function(node) {\n node._walk(visitor);\n });\n });\n }\n});\n\nvar AST_PropAccess = DEFNODE(\"PropAccess\", \"expression property\", {\n $documentation: \"Base class for property access expressions, i.e. `a.foo` or `a[\\\"foo\\\"]`\",\n $propdoc: {\n expression: \"[AST_Node] the “container” expression\",\n property: \"[AST_Node|string] the property to access. For AST_Dot this is always a plain string, while for AST_Sub it's an arbitrary AST_Node\"\n }\n});\n\nvar AST_Dot = DEFNODE(\"Dot\", \"quote\", {\n $documentation: \"A dotted property access expression\",\n $propdoc: {\n quote: \"[string] the original quote character when transformed from AST_Sub\",\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.expression._walk(visitor);\n });\n }\n}, AST_PropAccess);\n\nvar AST_Sub = DEFNODE(\"Sub\", null, {\n $documentation: \"Index-style property access, i.e. `a[\\\"foo\\\"]`\",\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.expression._walk(visitor);\n this.property._walk(visitor);\n });\n }\n}, AST_PropAccess);\n\nvar AST_Unary = DEFNODE(\"Unary\", \"operator expression\", {\n $documentation: \"Base class for unary expressions\",\n $propdoc: {\n operator: \"[string] the operator\",\n expression: \"[AST_Node] expression that this unary operator applies to\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.expression._walk(visitor);\n });\n }\n});\n\nvar AST_UnaryPrefix = DEFNODE(\"UnaryPrefix\", null, {\n $documentation: \"Unary prefix expression, i.e. `typeof i` or `++i`\"\n}, AST_Unary);\n\nvar AST_UnaryPostfix = DEFNODE(\"UnaryPostfix\", null, {\n $documentation: \"Unary postfix expression, i.e. `i++`\"\n}, AST_Unary);\n\nvar AST_Binary = DEFNODE(\"Binary\", \"operator left right\", {\n $documentation: \"Binary expression, i.e. `a + b`\",\n $propdoc: {\n left: \"[AST_Node] left-hand side expression\",\n operator: \"[string] the operator\",\n right: \"[AST_Node] right-hand side expression\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.left._walk(visitor);\n this.right._walk(visitor);\n });\n }\n});\n\nvar AST_Conditional = DEFNODE(\"Conditional\", \"condition consequent alternative\", {\n $documentation: \"Conditional expression using the ternary operator, i.e. `a ? b : c`\",\n $propdoc: {\n condition: \"[AST_Node]\",\n consequent: \"[AST_Node]\",\n alternative: \"[AST_Node]\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.condition._walk(visitor);\n this.consequent._walk(visitor);\n this.alternative._walk(visitor);\n });\n }\n});\n\nvar AST_Assign = DEFNODE(\"Assign\", null, {\n $documentation: \"An assignment expression — `a = b + 5`\",\n}, AST_Binary);\n\nvar AST_DefaultAssign = DEFNODE(\"DefaultAssign\", null, {\n $documentation: \"A default assignment expression like in `(a = 3) => a`\"\n}, AST_Binary);\n\n/* -----[ LITERALS ]----- */\n\nvar AST_Array = DEFNODE(\"Array\", \"elements\", {\n $documentation: \"An array literal\",\n $propdoc: {\n elements: \"[AST_Node*] array of elements\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n var elements = this.elements;\n for (var i = 0, len = elements.length; i < len; i++) {\n elements[i]._walk(visitor);\n }\n });\n }\n});\n\nvar AST_Object = DEFNODE(\"Object\", \"properties\", {\n $documentation: \"An object literal\",\n $propdoc: {\n properties: \"[AST_ObjectProperty*] array of properties\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n var properties = this.properties;\n for (var i = 0, len = properties.length; i < len; i++) {\n properties[i]._walk(visitor);\n }\n });\n }\n});\n\nvar AST_ObjectProperty = DEFNODE(\"ObjectProperty\", \"key value\", {\n $documentation: \"Base class for literal object properties\",\n $propdoc: {\n key: \"[string|AST_Node] property name. For ObjectKeyVal this is a string. For getters, setters and computed property this is an AST_Node.\",\n value: \"[AST_Node] property value. For getters and setters this is an AST_Accessor.\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n if (this.key instanceof AST_Node)\n this.key._walk(visitor);\n this.value._walk(visitor);\n });\n }\n});\n\nvar AST_ObjectKeyVal = DEFNODE(\"ObjectKeyVal\", \"quote\", {\n $documentation: \"A key: value object property\",\n $propdoc: {\n quote: \"[string] the original quote character\"\n }\n}, AST_ObjectProperty);\n\nvar AST_ObjectSetter = DEFNODE(\"ObjectSetter\", \"quote static\", {\n $propdoc: {\n quote: \"[string|undefined] the original quote character, if any\",\n static: \"[boolean] whether this is a static setter (classes only)\"\n },\n $documentation: \"An object setter property\",\n}, AST_ObjectProperty);\n\nvar AST_ObjectGetter = DEFNODE(\"ObjectGetter\", \"quote static\", {\n $propdoc: {\n quote: \"[string|undefined] the original quote character, if any\",\n static: \"[boolean] whether this is a static getter (classes only)\"\n },\n $documentation: \"An object getter property\",\n}, AST_ObjectProperty);\n\nvar AST_ConciseMethod = DEFNODE(\"ConciseMethod\", \"quote static is_generator async\", {\n $propdoc: {\n quote: \"[string|undefined] the original quote character, if any\",\n static: \"[boolean] is this method static (classes only)\",\n is_generator: \"[boolean] is this a generator method\",\n async: \"[boolean] is this method async\",\n },\n $documentation: \"An ES6 concise method inside an object or class\"\n}, AST_ObjectProperty);\n\nvar AST_Class = DEFNODE(\"Class\", \"name extends properties\", {\n $propdoc: {\n name: \"[AST_SymbolClass|AST_SymbolDefClass?] optional class name.\",\n extends: \"[AST_Node]? optional parent class\",\n properties: \"[AST_ObjectProperty*] array of properties\"\n },\n $documentation: \"An ES6 class\",\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n if (this.name) {\n this.name._walk(visitor);\n }\n if (this.extends) {\n this.extends._walk(visitor);\n }\n this.properties.forEach((prop) => prop._walk(visitor));\n });\n },\n}, AST_Scope /* TODO a class might have a scope but it's not a scope */);\n\nvar AST_DefClass = DEFNODE(\"DefClass\", null, {\n $documentation: \"A class definition\",\n}, AST_Class);\n\nvar AST_ClassExpression = DEFNODE(\"ClassExpression\", null, {\n $documentation: \"A class expression.\"\n}, AST_Class);\n\nvar AST_Symbol = DEFNODE(\"Symbol\", \"scope name thedef\", {\n $propdoc: {\n name: \"[string] name of this symbol\",\n scope: \"[AST_Scope/S] the current scope (not necessarily the definition scope)\",\n thedef: \"[SymbolDef/S] the definition of this symbol\"\n },\n $documentation: \"Base class for all symbols\"\n});\n\nvar AST_NewTarget = DEFNODE(\"NewTarget\", null, {\n $documentation: \"A reference to new.target\"\n});\n\nvar AST_SymbolDeclaration = DEFNODE(\"SymbolDeclaration\", \"init\", {\n $documentation: \"A declaration symbol (symbol in var/const, function name or argument, symbol in catch)\",\n}, AST_Symbol);\n\nvar AST_SymbolVar = DEFNODE(\"SymbolVar\", null, {\n $documentation: \"Symbol defining a variable\",\n}, AST_SymbolDeclaration);\n\nvar AST_SymbolBlockDeclaration = DEFNODE(\"SymbolBlockDeclaration\", null, {\n $documentation: \"Base class for block-scoped declaration symbols\"\n}, AST_SymbolDeclaration);\n\nvar AST_SymbolConst = DEFNODE(\"SymbolConst\", null, {\n $documentation: \"A constant declaration\"\n}, AST_SymbolBlockDeclaration);\n\nvar AST_SymbolLet = DEFNODE(\"SymbolLet\", null, {\n $documentation: \"A block-scoped `let` declaration\"\n}, AST_SymbolBlockDeclaration);\n\nvar AST_SymbolFunarg = DEFNODE(\"SymbolFunarg\", null, {\n $documentation: \"Symbol naming a function argument\",\n}, AST_SymbolVar);\n\nvar AST_SymbolDefun = DEFNODE(\"SymbolDefun\", null, {\n $documentation: \"Symbol defining a function\",\n}, AST_SymbolDeclaration);\n\nvar AST_SymbolMethod = DEFNODE(\"SymbolMethod\", null, {\n $documentation: \"Symbol in an object defining a method\",\n}, AST_Symbol);\n\nvar AST_SymbolLambda = DEFNODE(\"SymbolLambda\", null, {\n $documentation: \"Symbol naming a function expression\",\n}, AST_SymbolDeclaration);\n\nvar AST_SymbolDefClass = DEFNODE(\"SymbolDefClass\", null, {\n $documentation: \"Symbol naming a class's name in a class declaration. Lexically scoped to its containing scope, and accessible within the class.\"\n}, AST_SymbolBlockDeclaration);\n\nvar AST_SymbolClass = DEFNODE(\"SymbolClass\", null, {\n $documentation: \"Symbol naming a class's name. Lexically scoped to the class.\"\n}, AST_SymbolDeclaration);\n\nvar AST_SymbolCatch = DEFNODE(\"SymbolCatch\", null, {\n $documentation: \"Symbol naming the exception in catch\",\n}, AST_SymbolBlockDeclaration);\n\nvar AST_SymbolImport = DEFNODE(\"SymbolImport\", null, {\n $documentation: \"Symbol referring to an imported name\",\n}, AST_SymbolBlockDeclaration);\n\nvar AST_SymbolImportForeign = DEFNODE(\"SymbolImportForeign\", null, {\n $documentation: \"A symbol imported from a module, but it is defined in the other module, and its real name is irrelevant for this module's purposes\",\n}, AST_Symbol);\n\nvar AST_Label = DEFNODE(\"Label\", \"references\", {\n $documentation: \"Symbol naming a label (declaration)\",\n $propdoc: {\n references: \"[AST_LoopControl*] a list of nodes referring to this label\"\n },\n initialize: function() {\n this.references = [];\n this.thedef = this;\n }\n}, AST_Symbol);\n\nvar AST_SymbolRef = DEFNODE(\"SymbolRef\", null, {\n $documentation: \"Reference to some symbol (not definition/declaration)\",\n}, AST_Symbol);\n\nvar AST_SymbolExport = DEFNODE(\"SymbolExport\", null, {\n $documentation: \"Symbol referring to a name to export\",\n}, AST_SymbolRef);\n\nvar AST_SymbolExportForeign = DEFNODE(\"SymbolExportForeign\", null, {\n $documentation: \"A symbol exported from this module, but it is used in the other module, and its real name is irrelevant for this module's purposes\",\n}, AST_Symbol);\n\nvar AST_LabelRef = DEFNODE(\"LabelRef\", null, {\n $documentation: \"Reference to a label symbol\",\n}, AST_Symbol);\n\nvar AST_This = DEFNODE(\"This\", null, {\n $documentation: \"The `this` symbol\",\n}, AST_Symbol);\n\nvar AST_Super = DEFNODE(\"Super\", null, {\n $documentation: \"The `super` symbol\",\n}, AST_This);\n\nvar AST_Constant = DEFNODE(\"Constant\", null, {\n $documentation: \"Base class for all constants\",\n getValue: function() {\n return this.value;\n }\n});\n\nvar AST_String = DEFNODE(\"String\", \"value quote\", {\n $documentation: \"A string literal\",\n $propdoc: {\n value: \"[string] the contents of this string\",\n quote: \"[string] the original quote character\"\n }\n}, AST_Constant);\n\nvar AST_Number = DEFNODE(\"Number\", \"value literal\", {\n $documentation: \"A number literal\",\n $propdoc: {\n value: \"[number] the numeric value\",\n literal: \"[string] numeric value as string (optional)\"\n }\n}, AST_Constant);\n\nvar AST_BigInt = DEFNODE(\"BigInt\", \"value\", {\n $documentation: \"A big int literal\",\n $propdoc: {\n value: \"[string] big int value\"\n }\n}, AST_Constant);\n\nvar AST_RegExp = DEFNODE(\"RegExp\", \"value\", {\n $documentation: \"A regexp literal\",\n $propdoc: {\n value: \"[RegExp] the actual regexp\",\n }\n}, AST_Constant);\n\nvar AST_Atom = DEFNODE(\"Atom\", null, {\n $documentation: \"Base class for atoms\",\n}, AST_Constant);\n\nvar AST_Null = DEFNODE(\"Null\", null, {\n $documentation: \"The `null` atom\",\n value: null\n}, AST_Atom);\n\nvar AST_NaN = DEFNODE(\"NaN\", null, {\n $documentation: \"The impossible value\",\n value: 0/0\n}, AST_Atom);\n\nvar AST_Undefined = DEFNODE(\"Undefined\", null, {\n $documentation: \"The `undefined` value\",\n value: (function() {}())\n}, AST_Atom);\n\nvar AST_Hole = DEFNODE(\"Hole\", null, {\n $documentation: \"A hole in an array\",\n value: (function() {}())\n}, AST_Atom);\n\nvar AST_Infinity = DEFNODE(\"Infinity\", null, {\n $documentation: \"The `Infinity` value\",\n value: 1/0\n}, AST_Atom);\n\nvar AST_Boolean = DEFNODE(\"Boolean\", null, {\n $documentation: \"Base class for booleans\",\n}, AST_Atom);\n\nvar AST_False = DEFNODE(\"False\", null, {\n $documentation: \"The `false` atom\",\n value: false\n}, AST_Boolean);\n\nvar AST_True = DEFNODE(\"True\", null, {\n $documentation: \"The `true` atom\",\n value: true\n}, AST_Boolean);\n\nvar AST_Await = DEFNODE(\"Await\", \"expression\", {\n $documentation: \"An `await` statement\",\n $propdoc: {\n expression: \"[AST_Node] the mandatory expression being awaited\",\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.expression._walk(visitor);\n });\n }\n});\n\nvar AST_Yield = DEFNODE(\"Yield\", \"expression is_star\", {\n $documentation: \"A `yield` statement\",\n $propdoc: {\n expression: \"[AST_Node?] the value returned or thrown by this statement; could be null (representing undefined) but only when is_star is set to false\",\n is_star: \"[Boolean] Whether this is a yield or yield* statement\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, this.expression && function() {\n this.expression._walk(visitor);\n });\n }\n});\n\n/* -----[ TreeWalker ]----- */\n\nclass TreeWalker {\n constructor(callback) {\n this.visit = callback;\n this.stack = [];\n this.directives = Object.create(null);\n }\n\n _visit(node, descend) {\n this.push(node);\n var ret = this.visit(node, descend ? function() {\n descend.call(node);\n } : noop);\n if (!ret && descend) {\n descend.call(node);\n }\n this.pop();\n return ret;\n }\n\n parent(n) {\n return this.stack[this.stack.length - 2 - (n || 0)];\n }\n\n push(node) {\n if (node instanceof AST_Lambda) {\n this.directives = Object.create(this.directives);\n } else if (node instanceof AST_Directive && !this.directives[node.value]) {\n this.directives[node.value] = node;\n } else if (node instanceof AST_Class) {\n this.directives = Object.create(this.directives);\n if (!this.directives[\"use strict\"]) {\n this.directives[\"use strict\"] = node;\n }\n }\n this.stack.push(node);\n }\n\n pop() {\n var node = this.stack.pop();\n if (node instanceof AST_Lambda || node instanceof AST_Class) {\n this.directives = Object.getPrototypeOf(this.directives);\n }\n }\n\n self() {\n return this.stack[this.stack.length - 1];\n }\n\n find_parent(type) {\n var stack = this.stack;\n for (var i = stack.length; --i >= 0;) {\n var x = stack[i];\n if (x instanceof type) return x;\n }\n }\n\n has_directive(type) {\n var dir = this.directives[type];\n if (dir) return dir;\n var node = this.stack[this.stack.length - 1];\n if (node instanceof AST_Scope && node.body) {\n for (var i = 0; i < node.body.length; ++i) {\n var st = node.body[i];\n if (!(st instanceof AST_Directive)) break;\n if (st.value == type) return st;\n }\n }\n }\n\n loopcontrol_target(node) {\n var stack = this.stack;\n if (node.label) for (var i = stack.length; --i >= 0;) {\n var x = stack[i];\n if (x instanceof AST_LabeledStatement && x.label.name == node.label.name)\n return x.body;\n } else for (var i = stack.length; --i >= 0;) {\n var x = stack[i];\n if (x instanceof AST_IterationStatement\n || node instanceof AST_Break && x instanceof AST_Switch)\n return x;\n }\n }\n}\n\n// Tree transformer helpers.\nclass TreeTransformer extends TreeWalker {\n constructor(before, after) {\n super();\n this.before = before;\n this.after = after;\n }\n}\n\nconst _PURE = 0b00000001;\nconst _INLINE = 0b00000010;\nconst _NOINLINE = 0b00000100;\n\nexport {\n AST_Accessor,\n AST_Array,\n AST_Arrow,\n AST_Assign,\n AST_Atom,\n AST_Await,\n AST_BigInt,\n AST_Binary,\n AST_Block,\n AST_BlockStatement,\n AST_Boolean,\n AST_Break,\n AST_Call,\n AST_Case,\n AST_Catch,\n AST_Class,\n AST_ClassExpression,\n AST_ConciseMethod,\n AST_Conditional,\n AST_Const,\n AST_Constant,\n AST_Continue,\n AST_Debugger,\n AST_Default,\n AST_DefaultAssign,\n AST_DefClass,\n AST_Definitions,\n AST_Defun,\n AST_Destructuring,\n AST_Directive,\n AST_Do,\n AST_Dot,\n AST_DWLoop,\n AST_EmptyStatement,\n AST_Exit,\n AST_Expansion,\n AST_Export,\n AST_False,\n AST_Finally,\n AST_For,\n AST_ForIn,\n AST_ForOf,\n AST_Function,\n AST_Hole,\n AST_If,\n AST_Import,\n AST_Infinity,\n AST_IterationStatement,\n AST_Jump,\n AST_Label,\n AST_LabeledStatement,\n AST_LabelRef,\n AST_Lambda,\n AST_Let,\n AST_LoopControl,\n AST_NameMapping,\n AST_NaN,\n AST_New,\n AST_NewTarget,\n AST_Node,\n AST_Null,\n AST_Number,\n AST_Object,\n AST_ObjectGetter,\n AST_ObjectKeyVal,\n AST_ObjectProperty,\n AST_ObjectSetter,\n AST_PrefixedTemplateString,\n AST_PropAccess,\n AST_RegExp,\n AST_Return,\n AST_Scope,\n AST_Sequence,\n AST_SimpleStatement,\n AST_Statement,\n AST_StatementWithBody,\n AST_String,\n AST_Sub,\n AST_Super,\n AST_Switch,\n AST_SwitchBranch,\n AST_Symbol,\n AST_SymbolBlockDeclaration,\n AST_SymbolCatch,\n AST_SymbolClass,\n AST_SymbolConst,\n AST_SymbolDeclaration,\n AST_SymbolDefClass,\n AST_SymbolDefun,\n AST_SymbolExport,\n AST_SymbolExportForeign,\n AST_SymbolFunarg,\n AST_SymbolImport,\n AST_SymbolImportForeign,\n AST_SymbolLambda,\n AST_SymbolLet,\n AST_SymbolMethod,\n AST_SymbolRef,\n AST_SymbolVar,\n AST_TemplateSegment,\n AST_TemplateString,\n AST_This,\n AST_Throw,\n AST_Token,\n AST_Toplevel,\n AST_True,\n AST_Try,\n AST_Unary,\n AST_UnaryPostfix,\n AST_UnaryPrefix,\n AST_Undefined,\n AST_Var,\n AST_VarDef,\n AST_While,\n AST_With,\n AST_Yield,\n TreeTransformer,\n TreeWalker,\n walk_body,\n _INLINE,\n _NOINLINE,\n _PURE,\n};\n","/***********************************************************************\n\n A JavaScript tokenizer / parser / beautifier / compressor.\n https://github.com/mishoo/UglifyJS2\n\n -------------------------------- (C) ---------------------------------\n\n Author: Mihai Bazon\n \n http://mihai.bazon.net/blog\n\n Distributed under the BSD license:\n\n Copyright 2012 (c) Mihai Bazon \n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions\n are met:\n\n * Redistributions of source code must retain the above\n copyright notice, this list of conditions and the following\n disclaimer.\n\n * Redistributions in binary form must reproduce the above\n copyright notice, this list of conditions and the following\n disclaimer in the documentation and/or other materials\n provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY\n EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE\n LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,\n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR\n TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF\n THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n SUCH DAMAGE.\n\n ***********************************************************************/\n\n\"use strict\";\n\nimport {\n AST_Array,\n AST_Await,\n AST_Binary,\n AST_Block,\n AST_Call,\n AST_Case,\n AST_Catch,\n AST_Class,\n AST_Conditional,\n AST_Definitions,\n AST_Destructuring,\n AST_Do,\n AST_Dot,\n AST_Exit,\n AST_Expansion,\n AST_Export,\n AST_For,\n AST_ForIn,\n AST_If,\n AST_Import,\n AST_LabeledStatement,\n AST_Lambda,\n AST_LoopControl,\n AST_NameMapping,\n AST_Node,\n AST_Number,\n AST_Object,\n AST_ObjectProperty,\n AST_PrefixedTemplateString,\n AST_Sequence,\n AST_SimpleStatement,\n AST_Sub,\n AST_Switch,\n AST_TemplateString,\n AST_Try,\n AST_Unary,\n AST_VarDef,\n AST_While,\n AST_With,\n AST_Yield,\n} from \"./ast.js\";\nimport {\n MAP,\n noop,\n} from \"./utils/index.js\";\n\nfunction def_transform(node, descend) {\n node.DEFMETHOD(\"transform\", function(tw, in_list) {\n let transformed = undefined;\n tw.push(this);\n if (tw.before) transformed = tw.before(this, descend, in_list);\n if (transformed === undefined) {\n transformed = this;\n descend(transformed, tw);\n if (tw.after) {\n const after_ret = tw.after(transformed, in_list);\n if (after_ret !== undefined) transformed = after_ret;\n }\n }\n tw.pop();\n return transformed;\n });\n}\n\nfunction do_list(list, tw) {\n return MAP(list, function(node) {\n return node.transform(tw, true);\n });\n}\n\ndef_transform(AST_Node, noop);\n\ndef_transform(AST_LabeledStatement, function(self, tw) {\n self.label = self.label.transform(tw);\n self.body = self.body.transform(tw);\n});\n\ndef_transform(AST_SimpleStatement, function(self, tw) {\n self.body = self.body.transform(tw);\n});\n\ndef_transform(AST_Block, function(self, tw) {\n self.body = do_list(self.body, tw);\n});\n\ndef_transform(AST_Do, function(self, tw) {\n self.body = self.body.transform(tw);\n self.condition = self.condition.transform(tw);\n});\n\ndef_transform(AST_While, function(self, tw) {\n self.condition = self.condition.transform(tw);\n self.body = self.body.transform(tw);\n});\n\ndef_transform(AST_For, function(self, tw) {\n if (self.init) self.init = self.init.transform(tw);\n if (self.condition) self.condition = self.condition.transform(tw);\n if (self.step) self.step = self.step.transform(tw);\n self.body = self.body.transform(tw);\n});\n\ndef_transform(AST_ForIn, function(self, tw) {\n self.init = self.init.transform(tw);\n self.object = self.object.transform(tw);\n self.body = self.body.transform(tw);\n});\n\ndef_transform(AST_With, function(self, tw) {\n self.expression = self.expression.transform(tw);\n self.body = self.body.transform(tw);\n});\n\ndef_transform(AST_Exit, function(self, tw) {\n if (self.value) self.value = self.value.transform(tw);\n});\n\ndef_transform(AST_LoopControl, function(self, tw) {\n if (self.label) self.label = self.label.transform(tw);\n});\n\ndef_transform(AST_If, function(self, tw) {\n self.condition = self.condition.transform(tw);\n self.body = self.body.transform(tw);\n if (self.alternative) self.alternative = self.alternative.transform(tw);\n});\n\ndef_transform(AST_Switch, function(self, tw) {\n self.expression = self.expression.transform(tw);\n self.body = do_list(self.body, tw);\n});\n\ndef_transform(AST_Case, function(self, tw) {\n self.expression = self.expression.transform(tw);\n self.body = do_list(self.body, tw);\n});\n\ndef_transform(AST_Try, function(self, tw) {\n self.body = do_list(self.body, tw);\n if (self.bcatch) self.bcatch = self.bcatch.transform(tw);\n if (self.bfinally) self.bfinally = self.bfinally.transform(tw);\n});\n\ndef_transform(AST_Catch, function(self, tw) {\n if (self.argname) self.argname = self.argname.transform(tw);\n self.body = do_list(self.body, tw);\n});\n\ndef_transform(AST_Definitions, function(self, tw) {\n self.definitions = do_list(self.definitions, tw);\n});\n\ndef_transform(AST_VarDef, function(self, tw) {\n self.name = self.name.transform(tw);\n if (self.value) self.value = self.value.transform(tw);\n});\n\ndef_transform(AST_Destructuring, function(self, tw) {\n self.names = do_list(self.names, tw);\n});\n\ndef_transform(AST_Lambda, function(self, tw) {\n if (self.name) self.name = self.name.transform(tw);\n self.argnames = do_list(self.argnames, tw);\n if (self.body instanceof AST_Node) {\n self.body = self.body.transform(tw);\n } else {\n self.body = do_list(self.body, tw);\n }\n});\n\ndef_transform(AST_Call, function(self, tw) {\n self.expression = self.expression.transform(tw);\n self.args = do_list(self.args, tw);\n});\n\ndef_transform(AST_Sequence, function(self, tw) {\n const result = do_list(self.expressions, tw);\n self.expressions = result.length\n ? result\n : [new AST_Number({ value: 0 })];\n});\n\ndef_transform(AST_Dot, function(self, tw) {\n self.expression = self.expression.transform(tw);\n});\n\ndef_transform(AST_Sub, function(self, tw) {\n self.expression = self.expression.transform(tw);\n self.property = self.property.transform(tw);\n});\n\ndef_transform(AST_Yield, function(self, tw) {\n if (self.expression) self.expression = self.expression.transform(tw);\n});\n\ndef_transform(AST_Await, function(self, tw) {\n self.expression = self.expression.transform(tw);\n});\n\ndef_transform(AST_Unary, function(self, tw) {\n self.expression = self.expression.transform(tw);\n});\n\ndef_transform(AST_Binary, function(self, tw) {\n self.left = self.left.transform(tw);\n self.right = self.right.transform(tw);\n});\n\ndef_transform(AST_Conditional, function(self, tw) {\n self.condition = self.condition.transform(tw);\n self.consequent = self.consequent.transform(tw);\n self.alternative = self.alternative.transform(tw);\n});\n\ndef_transform(AST_Array, function(self, tw) {\n self.elements = do_list(self.elements, tw);\n});\n\ndef_transform(AST_Object, function(self, tw) {\n self.properties = do_list(self.properties, tw);\n});\n\ndef_transform(AST_ObjectProperty, function(self, tw) {\n if (self.key instanceof AST_Node) {\n self.key = self.key.transform(tw);\n }\n self.value = self.value.transform(tw);\n});\n\ndef_transform(AST_Class, function(self, tw) {\n if (self.name) self.name = self.name.transform(tw);\n if (self.extends) self.extends = self.extends.transform(tw);\n self.properties = do_list(self.properties, tw);\n});\n\ndef_transform(AST_Expansion, function(self, tw) {\n self.expression = self.expression.transform(tw);\n});\n\ndef_transform(AST_NameMapping, function(self, tw) {\n self.foreign_name = self.foreign_name.transform(tw);\n self.name = self.name.transform(tw);\n});\n\ndef_transform(AST_Import, function(self, tw) {\n if (self.imported_name) self.imported_name = self.imported_name.transform(tw);\n if (self.imported_names) do_list(self.imported_names, tw);\n self.module_name = self.module_name.transform(tw);\n});\n\ndef_transform(AST_Export, function(self, tw) {\n if (self.exported_definition) self.exported_definition = self.exported_definition.transform(tw);\n if (self.exported_value) self.exported_value = self.exported_value.transform(tw);\n if (self.exported_names) do_list(self.exported_names, tw);\n if (self.module_name) self.module_name = self.module_name.transform(tw);\n});\n\ndef_transform(AST_TemplateString, function(self, tw) {\n self.segments = do_list(self.segments, tw);\n});\n\ndef_transform(AST_PrefixedTemplateString, function(self, tw) {\n self.prefix = self.prefix.transform(tw);\n self.template_string = self.template_string.transform(tw);\n});\n\n","import {\n AST_Binary,\n AST_Conditional,\n AST_Dot,\n AST_Object,\n AST_Sequence,\n AST_Statement,\n AST_Sub,\n AST_UnaryPostfix,\n AST_PrefixedTemplateString\n} from \"../ast.js\";\n\n// return true if the node at the top of the stack (that means the\n// innermost node in the current output) is lexically the first in\n// a statement.\nfunction first_in_statement(stack) {\n let node = stack.parent(-1);\n for (let i = 0, p; p = stack.parent(i); i++) {\n if (p instanceof AST_Statement && p.body === node)\n return true;\n if ((p instanceof AST_Sequence && p.expressions[0] === node) ||\n (p.TYPE === \"Call\" && p.expression === node) ||\n (p instanceof AST_PrefixedTemplateString && p.prefix === node) ||\n (p instanceof AST_Dot && p.expression === node) ||\n (p instanceof AST_Sub && p.expression === node) ||\n (p instanceof AST_Conditional && p.condition === node) ||\n (p instanceof AST_Binary && p.left === node) ||\n (p instanceof AST_UnaryPostfix && p.expression === node)\n ) {\n node = p;\n } else {\n return false;\n }\n }\n}\n\n// Returns whether the leftmost item in the expression is an object\nfunction left_is_object(node) {\n if (node instanceof AST_Object) return true;\n if (node instanceof AST_Sequence) return left_is_object(node.expressions[0]);\n if (node.TYPE === \"Call\") return left_is_object(node.expression);\n if (node instanceof AST_PrefixedTemplateString) return left_is_object(node.prefix);\n if (node instanceof AST_Dot || node instanceof AST_Sub) return left_is_object(node.expression);\n if (node instanceof AST_Conditional) return left_is_object(node.condition);\n if (node instanceof AST_Binary) return left_is_object(node.left);\n if (node instanceof AST_UnaryPostfix) return left_is_object(node.expression);\n return false;\n}\n\nexport { first_in_statement, left_is_object };\n","/***********************************************************************\n\n A JavaScript tokenizer / parser / beautifier / compressor.\n https://github.com/mishoo/UglifyJS2\n\n -------------------------------- (C) ---------------------------------\n\n Author: Mihai Bazon\n \n http://mihai.bazon.net/blog\n\n Distributed under the BSD license:\n\n Copyright 2012 (c) Mihai Bazon \n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions\n are met:\n\n * Redistributions of source code must retain the above\n copyright notice, this list of conditions and the following\n disclaimer.\n\n * Redistributions in binary form must reproduce the above\n copyright notice, this list of conditions and the following\n disclaimer in the documentation and/or other materials\n provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY\n EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE\n LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,\n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR\n TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF\n THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n SUCH DAMAGE.\n\n ***********************************************************************/\n\n\"use strict\";\n\nimport {\n defaults,\n makePredicate,\n noop,\n regexp_source_fix,\n sort_regexp_flags,\n return_false,\n return_true,\n} from \"./utils/index.js\";\nimport { first_in_statement, left_is_object } from \"./utils/first_in_statement.js\";\nimport {\n AST_Array,\n AST_Arrow,\n AST_Assign,\n AST_Await,\n AST_BigInt,\n AST_Binary,\n AST_BlockStatement,\n AST_Break,\n AST_Call,\n AST_Case,\n AST_Catch,\n AST_Class,\n AST_ClassExpression,\n AST_ConciseMethod,\n AST_Conditional,\n AST_Const,\n AST_Constant,\n AST_Continue,\n AST_Debugger,\n AST_Default,\n AST_DefaultAssign,\n AST_Definitions,\n AST_Defun,\n AST_Destructuring,\n AST_Directive,\n AST_Do,\n AST_Dot,\n AST_EmptyStatement,\n AST_Exit,\n AST_Expansion,\n AST_Export,\n AST_Finally,\n AST_For,\n AST_ForIn,\n AST_ForOf,\n AST_Function,\n AST_Hole,\n AST_If,\n AST_Import,\n AST_Jump,\n AST_LabeledStatement,\n AST_Lambda,\n AST_Let,\n AST_LoopControl,\n AST_NameMapping,\n AST_New,\n AST_NewTarget,\n AST_Node,\n AST_Number,\n AST_Object,\n AST_ObjectGetter,\n AST_ObjectKeyVal,\n AST_ObjectProperty,\n AST_ObjectSetter,\n AST_PrefixedTemplateString,\n AST_PropAccess,\n AST_RegExp,\n AST_Return,\n AST_Scope,\n AST_Sequence,\n AST_SimpleStatement,\n AST_Statement,\n AST_StatementWithBody,\n AST_String,\n AST_Sub,\n AST_Super,\n AST_Switch,\n AST_SwitchBranch,\n AST_Symbol,\n AST_SymbolMethod,\n AST_SymbolRef,\n AST_TemplateSegment,\n AST_TemplateString,\n AST_This,\n AST_Throw,\n AST_Toplevel,\n AST_Try,\n AST_Unary,\n AST_UnaryPostfix,\n AST_UnaryPrefix,\n AST_Var,\n AST_VarDef,\n AST_While,\n AST_With,\n AST_Yield,\n TreeWalker,\n} from \"./ast.js\";\nimport {\n get_full_char_code,\n get_full_char,\n is_identifier_char,\n is_identifier_string,\n is_surrogate_pair_head,\n is_surrogate_pair_tail,\n PRECEDENCE,\n RESERVED_WORDS,\n} from \"./parse.js\";\n\nconst EXPECT_DIRECTIVE = /^$|[;{][\\s\\n]*$/;\nconst CODE_LINE_BREAK = 10;\nconst CODE_SPACE = 32;\n\nconst r_annotation = /[@#]__(PURE|INLINE|NOINLINE)__/g;\n\nfunction is_some_comments(comment) {\n // multiline comment\n return comment.type == \"comment2\" && /@preserve|@lic|@cc_on|^\\**!/i.test(comment.value);\n}\n\nfunction OutputStream(options) {\n\n var readonly = !options;\n options = defaults(options, {\n ascii_only : false,\n beautify : false,\n braces : false,\n comments : \"some\",\n ecma : 5,\n ie8 : false,\n indent_level : 4,\n indent_start : 0,\n inline_script : true,\n keep_numbers : false,\n keep_quoted_props: false,\n max_line_len : false,\n preamble : null,\n quote_keys : false,\n quote_style : 0,\n safari10 : false,\n semicolons : true,\n shebang : true,\n shorthand : undefined,\n source_map : null,\n webkit : false,\n width : 80,\n wrap_iife : false,\n wrap_func_args : true,\n }, true);\n\n if (options.shorthand === undefined)\n options.shorthand = options.ecma > 5;\n\n // Convert comment option to RegExp if neccessary and set up comments filter\n var comment_filter = return_false; // Default case, throw all comments away\n if (options.comments) {\n let comments = options.comments;\n if (typeof options.comments === \"string\" && /^\\/.*\\/[a-zA-Z]*$/.test(options.comments)) {\n var regex_pos = options.comments.lastIndexOf(\"/\");\n comments = new RegExp(\n options.comments.substr(1, regex_pos - 1),\n options.comments.substr(regex_pos + 1)\n );\n }\n if (comments instanceof RegExp) {\n comment_filter = function(comment) {\n return comment.type != \"comment5\" && comments.test(comment.value);\n };\n } else if (typeof comments === \"function\") {\n comment_filter = function(comment) {\n return comment.type != \"comment5\" && comments(this, comment);\n };\n } else if (comments === \"some\") {\n comment_filter = is_some_comments;\n } else { // NOTE includes \"all\" option\n comment_filter = return_true;\n }\n }\n\n var indentation = 0;\n var current_col = 0;\n var current_line = 1;\n var current_pos = 0;\n var OUTPUT = \"\";\n let printed_comments = new Set();\n\n var to_utf8 = options.ascii_only ? function(str, identifier) {\n if (options.ecma >= 2015) {\n str = str.replace(/[\\ud800-\\udbff][\\udc00-\\udfff]/g, function(ch) {\n var code = get_full_char_code(ch, 0).toString(16);\n return \"\\\\u{\" + code + \"}\";\n });\n }\n return str.replace(/[\\u0000-\\u001f\\u007f-\\uffff]/g, function(ch) {\n var code = ch.charCodeAt(0).toString(16);\n if (code.length <= 2 && !identifier) {\n while (code.length < 2) code = \"0\" + code;\n return \"\\\\x\" + code;\n } else {\n while (code.length < 4) code = \"0\" + code;\n return \"\\\\u\" + code;\n }\n });\n } : function(str) {\n var s = \"\";\n for (var i = 0, len = str.length; i < len; i++) {\n if (is_surrogate_pair_head(str[i]) && !is_surrogate_pair_tail(str[i + 1])\n || is_surrogate_pair_tail(str[i]) && !is_surrogate_pair_head(str[i - 1])) {\n s += \"\\\\u\" + str.charCodeAt(i).toString(16);\n } else {\n s += str[i];\n }\n }\n return s;\n };\n\n function make_string(str, quote) {\n var dq = 0, sq = 0;\n str = str.replace(/[\\\\\\b\\f\\n\\r\\v\\t\\x22\\x27\\u2028\\u2029\\0\\ufeff]/g,\n function(s, i) {\n switch (s) {\n case '\"': ++dq; return '\"';\n case \"'\": ++sq; return \"'\";\n case \"\\\\\": return \"\\\\\\\\\";\n case \"\\n\": return \"\\\\n\";\n case \"\\r\": return \"\\\\r\";\n case \"\\t\": return \"\\\\t\";\n case \"\\b\": return \"\\\\b\";\n case \"\\f\": return \"\\\\f\";\n case \"\\x0B\": return options.ie8 ? \"\\\\x0B\" : \"\\\\v\";\n case \"\\u2028\": return \"\\\\u2028\";\n case \"\\u2029\": return \"\\\\u2029\";\n case \"\\ufeff\": return \"\\\\ufeff\";\n case \"\\0\":\n return /[0-9]/.test(get_full_char(str, i+1)) ? \"\\\\x00\" : \"\\\\0\";\n }\n return s;\n });\n function quote_single() {\n return \"'\" + str.replace(/\\x27/g, \"\\\\'\") + \"'\";\n }\n function quote_double() {\n return '\"' + str.replace(/\\x22/g, '\\\\\"') + '\"';\n }\n function quote_template() {\n return \"`\" + str.replace(/`/g, \"\\\\`\") + \"`\";\n }\n str = to_utf8(str);\n if (quote === \"`\") return quote_template();\n switch (options.quote_style) {\n case 1:\n return quote_single();\n case 2:\n return quote_double();\n case 3:\n return quote == \"'\" ? quote_single() : quote_double();\n default:\n return dq > sq ? quote_single() : quote_double();\n }\n }\n\n function encode_string(str, quote) {\n var ret = make_string(str, quote);\n if (options.inline_script) {\n ret = ret.replace(/<\\x2f(script)([>\\/\\t\\n\\f\\r ])/gi, \"<\\\\/$1$2\");\n ret = ret.replace(/\\x3c!--/g, \"\\\\x3c!--\");\n ret = ret.replace(/--\\x3e/g, \"--\\\\x3e\");\n }\n return ret;\n }\n\n function make_name(name) {\n name = name.toString();\n name = to_utf8(name, true);\n return name;\n }\n\n function make_indent(back) {\n return \" \".repeat(options.indent_start + indentation - back * options.indent_level);\n }\n\n /* -----[ beautification/minification ]----- */\n\n var has_parens = false;\n var might_need_space = false;\n var might_need_semicolon = false;\n var might_add_newline = 0;\n var need_newline_indented = false;\n var need_space = false;\n var newline_insert = -1;\n var last = \"\";\n var mapping_token, mapping_name, mappings = options.source_map && [];\n\n var do_add_mapping = mappings ? function() {\n mappings.forEach(function(mapping) {\n try {\n options.source_map.add(\n mapping.token.file,\n mapping.line, mapping.col,\n mapping.token.line, mapping.token.col,\n !mapping.name && mapping.token.type == \"name\" ? mapping.token.value : mapping.name\n );\n } catch(ex) {\n mapping.token.file != null && AST_Node.warn(\"Couldn't figure out mapping for {file}:{line},{col} → {cline},{ccol} [{name}]\", {\n file: mapping.token.file,\n line: mapping.token.line,\n col: mapping.token.col,\n cline: mapping.line,\n ccol: mapping.col,\n name: mapping.name || \"\"\n });\n }\n });\n mappings = [];\n } : noop;\n\n var ensure_line_len = options.max_line_len ? function() {\n if (current_col > options.max_line_len) {\n if (might_add_newline) {\n var left = OUTPUT.slice(0, might_add_newline);\n var right = OUTPUT.slice(might_add_newline);\n if (mappings) {\n var delta = right.length - current_col;\n mappings.forEach(function(mapping) {\n mapping.line++;\n mapping.col += delta;\n });\n }\n OUTPUT = left + \"\\n\" + right;\n current_line++;\n current_pos++;\n current_col = right.length;\n }\n if (current_col > options.max_line_len) {\n AST_Node.warn(\"Output exceeds {max_line_len} characters\", options);\n }\n }\n if (might_add_newline) {\n might_add_newline = 0;\n do_add_mapping();\n }\n } : noop;\n\n var requireSemicolonChars = makePredicate(\"( [ + * / - , . `\");\n\n function print(str) {\n str = String(str);\n var ch = get_full_char(str, 0);\n if (need_newline_indented && ch) {\n need_newline_indented = false;\n if (ch !== \"\\n\") {\n print(\"\\n\");\n indent();\n }\n }\n if (need_space && ch) {\n need_space = false;\n if (!/[\\s;})]/.test(ch)) {\n space();\n }\n }\n newline_insert = -1;\n var prev = last.charAt(last.length - 1);\n if (might_need_semicolon) {\n might_need_semicolon = false;\n\n if (prev === \":\" && ch === \"}\" || (!ch || !\";}\".includes(ch)) && prev !== \";\") {\n if (options.semicolons || requireSemicolonChars.has(ch)) {\n OUTPUT += \";\";\n current_col++;\n current_pos++;\n } else {\n ensure_line_len();\n if (current_col > 0) {\n OUTPUT += \"\\n\";\n current_pos++;\n current_line++;\n current_col = 0;\n }\n\n if (/^\\s+$/.test(str)) {\n // reset the semicolon flag, since we didn't print one\n // now and might still have to later\n might_need_semicolon = true;\n }\n }\n\n if (!options.beautify)\n might_need_space = false;\n }\n }\n\n if (might_need_space) {\n if ((is_identifier_char(prev)\n && (is_identifier_char(ch) || ch == \"\\\\\"))\n || (ch == \"/\" && ch == prev)\n || ((ch == \"+\" || ch == \"-\") && ch == last)\n ) {\n OUTPUT += \" \";\n current_col++;\n current_pos++;\n }\n might_need_space = false;\n }\n\n if (mapping_token) {\n mappings.push({\n token: mapping_token,\n name: mapping_name,\n line: current_line,\n col: current_col\n });\n mapping_token = false;\n if (!might_add_newline) do_add_mapping();\n }\n\n OUTPUT += str;\n has_parens = str[str.length - 1] == \"(\";\n current_pos += str.length;\n var a = str.split(/\\r?\\n/), n = a.length - 1;\n current_line += n;\n current_col += a[0].length;\n if (n > 0) {\n ensure_line_len();\n current_col = a[n].length;\n }\n last = str;\n }\n\n var star = function() {\n print(\"*\");\n };\n\n var space = options.beautify ? function() {\n print(\" \");\n } : function() {\n might_need_space = true;\n };\n\n var indent = options.beautify ? function(half) {\n if (options.beautify) {\n print(make_indent(half ? 0.5 : 0));\n }\n } : noop;\n\n var with_indent = options.beautify ? function(col, cont) {\n if (col === true) col = next_indent();\n var save_indentation = indentation;\n indentation = col;\n var ret = cont();\n indentation = save_indentation;\n return ret;\n } : function(col, cont) { return cont(); };\n\n var newline = options.beautify ? function() {\n if (newline_insert < 0) return print(\"\\n\");\n if (OUTPUT[newline_insert] != \"\\n\") {\n OUTPUT = OUTPUT.slice(0, newline_insert) + \"\\n\" + OUTPUT.slice(newline_insert);\n current_pos++;\n current_line++;\n }\n newline_insert++;\n } : options.max_line_len ? function() {\n ensure_line_len();\n might_add_newline = OUTPUT.length;\n } : noop;\n\n var semicolon = options.beautify ? function() {\n print(\";\");\n } : function() {\n might_need_semicolon = true;\n };\n\n function force_semicolon() {\n might_need_semicolon = false;\n print(\";\");\n }\n\n function next_indent() {\n return indentation + options.indent_level;\n }\n\n function with_block(cont) {\n var ret;\n print(\"{\");\n newline();\n with_indent(next_indent(), function() {\n ret = cont();\n });\n indent();\n print(\"}\");\n return ret;\n }\n\n function with_parens(cont) {\n print(\"(\");\n //XXX: still nice to have that for argument lists\n //var ret = with_indent(current_col, cont);\n var ret = cont();\n print(\")\");\n return ret;\n }\n\n function with_square(cont) {\n print(\"[\");\n //var ret = with_indent(current_col, cont);\n var ret = cont();\n print(\"]\");\n return ret;\n }\n\n function comma() {\n print(\",\");\n space();\n }\n\n function colon() {\n print(\":\");\n space();\n }\n\n var add_mapping = mappings ? function(token, name) {\n mapping_token = token;\n mapping_name = name;\n } : noop;\n\n function get() {\n if (might_add_newline) {\n ensure_line_len();\n }\n return OUTPUT;\n }\n\n function has_nlb() {\n let n = OUTPUT.length - 1;\n while (n >= 0) {\n const code = OUTPUT.charCodeAt(n);\n if (code === CODE_LINE_BREAK) {\n return true;\n }\n\n if (code !== CODE_SPACE) {\n return false;\n }\n n--;\n }\n return true;\n }\n\n function prepend_comments(node) {\n var self = this;\n var start = node.start;\n if (!start) return;\n var printed_comments = self.printed_comments;\n if (start.comments_before && printed_comments.has(start.comments_before)) return;\n var comments = start.comments_before;\n if (!comments) {\n comments = start.comments_before = [];\n }\n printed_comments.add(comments);\n\n if (node instanceof AST_Exit && node.value) {\n var tw = new TreeWalker(function(node) {\n var parent = tw.parent();\n if (parent instanceof AST_Exit\n || parent instanceof AST_Binary && parent.left === node\n || parent.TYPE == \"Call\" && parent.expression === node\n || parent instanceof AST_Conditional && parent.condition === node\n || parent instanceof AST_Dot && parent.expression === node\n || parent instanceof AST_Sequence && parent.expressions[0] === node\n || parent instanceof AST_Sub && parent.expression === node\n || parent instanceof AST_UnaryPostfix) {\n if (!node.start) return;\n var text = node.start.comments_before;\n if (text && !printed_comments.has(text)) {\n printed_comments.add(text);\n comments = comments.concat(text);\n }\n } else {\n return true;\n }\n });\n tw.push(node);\n node.value.walk(tw);\n }\n\n if (current_pos == 0) {\n if (comments.length > 0 && options.shebang && comments[0].type === \"comment5\"\n && !printed_comments.has(comments[0])) {\n print(\"#!\" + comments.shift().value + \"\\n\");\n indent();\n }\n var preamble = options.preamble;\n if (preamble) {\n print(preamble.replace(/\\r\\n?|[\\n\\u2028\\u2029]|\\s*$/g, \"\\n\"));\n }\n }\n\n comments = comments.filter(comment_filter, node).filter(c => !printed_comments.has(c));\n if (comments.length == 0) return;\n var last_nlb = has_nlb();\n comments.forEach(function(c, i) {\n printed_comments.add(c);\n if (!last_nlb) {\n if (c.nlb) {\n print(\"\\n\");\n indent();\n last_nlb = true;\n } else if (i > 0) {\n space();\n }\n }\n if (/comment[134]/.test(c.type)) {\n print(\"//\" + c.value.replace(r_annotation, \" \") + \"\\n\");\n indent();\n last_nlb = true;\n } else if (c.type == \"comment2\") {\n print(\"/*\" + c.value.replace(r_annotation, \" \") + \"*/\");\n last_nlb = false;\n }\n });\n if (!last_nlb) {\n if (start.nlb) {\n print(\"\\n\");\n indent();\n } else {\n space();\n }\n }\n }\n\n function append_comments(node, tail) {\n var self = this;\n var token = node.end;\n if (!token) return;\n var printed_comments = self.printed_comments;\n var comments = token[tail ? \"comments_before\" : \"comments_after\"];\n if (!comments || printed_comments.has(comments)) return;\n if (!(node instanceof AST_Statement || comments.every((c) =>\n !/comment[134]/.test(c.type)\n ))) return;\n printed_comments.add(comments);\n var insert = OUTPUT.length;\n comments.filter(comment_filter, node).forEach(function(c, i) {\n if (printed_comments.has(c)) return;\n printed_comments.add(c);\n need_space = false;\n if (need_newline_indented) {\n print(\"\\n\");\n indent();\n need_newline_indented = false;\n } else if (c.nlb && (i > 0 || !has_nlb())) {\n print(\"\\n\");\n indent();\n } else if (i > 0 || !tail) {\n space();\n }\n if (/comment[134]/.test(c.type)) {\n print(\"//\" + c.value.replace(r_annotation, \" \"));\n need_newline_indented = true;\n } else if (c.type == \"comment2\") {\n print(\"/*\" + c.value.replace(r_annotation, \" \") + \"*/\");\n need_space = true;\n }\n });\n if (OUTPUT.length > insert) newline_insert = insert;\n }\n\n var stack = [];\n return {\n get : get,\n toString : get,\n indent : indent,\n in_directive : false,\n use_asm : null,\n active_scope : null,\n indentation : function() { return indentation; },\n current_width : function() { return current_col - indentation; },\n should_break : function() { return options.width && this.current_width() >= options.width; },\n has_parens : function() { return has_parens; },\n newline : newline,\n print : print,\n star : star,\n space : space,\n comma : comma,\n colon : colon,\n last : function() { return last; },\n semicolon : semicolon,\n force_semicolon : force_semicolon,\n to_utf8 : to_utf8,\n print_name : function(name) { print(make_name(name)); },\n print_string : function(str, quote, escape_directive) {\n var encoded = encode_string(str, quote);\n if (escape_directive === true && !encoded.includes(\"\\\\\")) {\n // Insert semicolons to break directive prologue\n if (!EXPECT_DIRECTIVE.test(OUTPUT)) {\n force_semicolon();\n }\n force_semicolon();\n }\n print(encoded);\n },\n print_template_string_chars: function(str) {\n var encoded = encode_string(str, \"`\").replace(/\\${/g, \"\\\\${\");\n return print(encoded.substr(1, encoded.length - 2));\n },\n encode_string : encode_string,\n next_indent : next_indent,\n with_indent : with_indent,\n with_block : with_block,\n with_parens : with_parens,\n with_square : with_square,\n add_mapping : add_mapping,\n option : function(opt) { return options[opt]; },\n printed_comments: printed_comments,\n prepend_comments: readonly ? noop : prepend_comments,\n append_comments : readonly || comment_filter === return_false ? noop : append_comments,\n line : function() { return current_line; },\n col : function() { return current_col; },\n pos : function() { return current_pos; },\n push_node : function(node) { stack.push(node); },\n pop_node : function() { return stack.pop(); },\n parent : function(n) {\n return stack[stack.length - 2 - (n || 0)];\n }\n };\n\n}\n\n/* -----[ code generators ]----- */\n\n(function() {\n\n /* -----[ utils ]----- */\n\n function DEFPRINT(nodetype, generator) {\n nodetype.DEFMETHOD(\"_codegen\", generator);\n }\n\n AST_Node.DEFMETHOD(\"print\", function(output, force_parens) {\n var self = this, generator = self._codegen;\n if (self instanceof AST_Scope) {\n output.active_scope = self;\n } else if (!output.use_asm && self instanceof AST_Directive && self.value == \"use asm\") {\n output.use_asm = output.active_scope;\n }\n function doit() {\n output.prepend_comments(self);\n self.add_source_map(output);\n generator(self, output);\n output.append_comments(self);\n }\n output.push_node(self);\n if (force_parens || self.needs_parens(output)) {\n output.with_parens(doit);\n } else {\n doit();\n }\n output.pop_node();\n if (self === output.use_asm) {\n output.use_asm = null;\n }\n });\n AST_Node.DEFMETHOD(\"_print\", AST_Node.prototype.print);\n\n AST_Node.DEFMETHOD(\"print_to_string\", function(options) {\n var output = OutputStream(options);\n this.print(output);\n return output.get();\n });\n\n /* -----[ PARENTHESES ]----- */\n\n function PARENS(nodetype, func) {\n if (Array.isArray(nodetype)) {\n nodetype.forEach(function(nodetype) {\n PARENS(nodetype, func);\n });\n } else {\n nodetype.DEFMETHOD(\"needs_parens\", func);\n }\n }\n\n PARENS(AST_Node, return_false);\n\n // a function expression needs parens around it when it's provably\n // the first token to appear in a statement.\n PARENS(AST_Function, function(output) {\n if (!output.has_parens() && first_in_statement(output)) {\n return true;\n }\n\n if (output.option(\"webkit\")) {\n var p = output.parent();\n if (p instanceof AST_PropAccess && p.expression === this) {\n return true;\n }\n }\n\n if (output.option(\"wrap_iife\")) {\n var p = output.parent();\n if (p instanceof AST_Call && p.expression === this) {\n return true;\n }\n }\n\n if (output.option(\"wrap_func_args\")) {\n var p = output.parent();\n if (p instanceof AST_Call && p.args.includes(this)) {\n return true;\n }\n }\n\n return false;\n });\n\n PARENS(AST_Arrow, function(output) {\n var p = output.parent();\n return p instanceof AST_PropAccess && p.expression === this;\n });\n\n // same goes for an object literal, because otherwise it would be\n // interpreted as a block of code.\n PARENS(AST_Object, function(output) {\n return !output.has_parens() && first_in_statement(output);\n });\n\n PARENS(AST_ClassExpression, first_in_statement);\n\n PARENS(AST_Unary, function(output) {\n var p = output.parent();\n return p instanceof AST_PropAccess && p.expression === this\n || p instanceof AST_Call && p.expression === this\n || p instanceof AST_Binary\n && p.operator === \"**\"\n && this instanceof AST_UnaryPrefix\n && p.left === this\n && this.operator !== \"++\"\n && this.operator !== \"--\";\n });\n\n PARENS(AST_Await, function(output) {\n var p = output.parent();\n return p instanceof AST_PropAccess && p.expression === this\n || p instanceof AST_Call && p.expression === this\n || output.option(\"safari10\") && p instanceof AST_UnaryPrefix;\n });\n\n PARENS(AST_Sequence, function(output) {\n var p = output.parent();\n return p instanceof AST_Call // (foo, bar)() or foo(1, (2, 3), 4)\n || p instanceof AST_Unary // !(foo, bar, baz)\n || p instanceof AST_Binary // 1 + (2, 3) + 4 ==> 8\n || p instanceof AST_VarDef // var a = (1, 2), b = a + a; ==> b == 4\n || p instanceof AST_PropAccess // (1, {foo:2}).foo or (1, {foo:2})[\"foo\"] ==> 2\n || p instanceof AST_Array // [ 1, (2, 3), 4 ] ==> [ 1, 3, 4 ]\n || p instanceof AST_ObjectProperty // { foo: (1, 2) }.foo ==> 2\n || p instanceof AST_Conditional /* (false, true) ? (a = 10, b = 20) : (c = 30)\n * ==> 20 (side effect, set a := 10 and b := 20) */\n || p instanceof AST_Arrow // x => (x, x)\n || p instanceof AST_DefaultAssign // x => (x = (0, function(){}))\n || p instanceof AST_Expansion // [...(a, b)]\n || p instanceof AST_ForOf && this === p.object // for (e of (foo, bar)) {}\n || p instanceof AST_Yield // yield (foo, bar)\n || p instanceof AST_Export // export default (foo, bar)\n ;\n });\n\n PARENS(AST_Binary, function(output) {\n var p = output.parent();\n // (foo && bar)()\n if (p instanceof AST_Call && p.expression === this)\n return true;\n // typeof (foo && bar)\n if (p instanceof AST_Unary)\n return true;\n // (foo && bar)[\"prop\"], (foo && bar).prop\n if (p instanceof AST_PropAccess && p.expression === this)\n return true;\n // this deals with precedence: 3 * (2 + 1)\n if (p instanceof AST_Binary) {\n var po = p.operator, pp = PRECEDENCE[po];\n var so = this.operator, sp = PRECEDENCE[so];\n if (pp > sp\n || (pp == sp\n && (this === p.right || po == \"**\"))) {\n return true;\n }\n }\n });\n\n PARENS(AST_Yield, function(output) {\n var p = output.parent();\n // (yield 1) + (yield 2)\n // a = yield 3\n if (p instanceof AST_Binary && p.operator !== \"=\")\n return true;\n // (yield 1)()\n // new (yield 1)()\n if (p instanceof AST_Call && p.expression === this)\n return true;\n // (yield 1) ? yield 2 : yield 3\n if (p instanceof AST_Conditional && p.condition === this)\n return true;\n // -(yield 4)\n if (p instanceof AST_Unary)\n return true;\n // (yield x).foo\n // (yield x)['foo']\n if (p instanceof AST_PropAccess && p.expression === this)\n return true;\n });\n\n PARENS(AST_PropAccess, function(output) {\n var p = output.parent();\n if (p instanceof AST_New && p.expression === this) {\n // i.e. new (foo.bar().baz)\n //\n // if there's one call into this subtree, then we need\n // parens around it too, otherwise the call will be\n // interpreted as passing the arguments to the upper New\n // expression.\n var parens = false;\n this.walk(new TreeWalker(function(node) {\n if (parens || node instanceof AST_Scope) return true;\n if (node instanceof AST_Call) {\n parens = true;\n return true;\n }\n }));\n return parens;\n }\n });\n\n PARENS(AST_Call, function(output) {\n var p = output.parent(), p1;\n if (p instanceof AST_New && p.expression === this\n || p instanceof AST_Export && p.is_default && this.expression instanceof AST_Function)\n return true;\n\n // workaround for Safari bug.\n // https://bugs.webkit.org/show_bug.cgi?id=123506\n return this.expression instanceof AST_Function\n && p instanceof AST_PropAccess\n && p.expression === this\n && (p1 = output.parent(1)) instanceof AST_Assign\n && p1.left === p;\n });\n\n PARENS(AST_New, function(output) {\n var p = output.parent();\n if (this.args.length === 0\n && (p instanceof AST_PropAccess // (new Date).getTime(), (new Date)[\"getTime\"]()\n || p instanceof AST_Call && p.expression === this)) // (new foo)(bar)\n return true;\n });\n\n PARENS(AST_Number, function(output) {\n var p = output.parent();\n if (p instanceof AST_PropAccess && p.expression === this) {\n var value = this.getValue();\n if (value < 0 || /^0/.test(make_num(value))) {\n return true;\n }\n }\n });\n\n PARENS(AST_BigInt, function(output) {\n var p = output.parent();\n if (p instanceof AST_PropAccess && p.expression === this) {\n var value = this.getValue();\n if (value.startsWith(\"-\")) {\n return true;\n }\n }\n });\n\n PARENS([ AST_Assign, AST_Conditional ], function(output) {\n var p = output.parent();\n // !(a = false) → true\n if (p instanceof AST_Unary)\n return true;\n // 1 + (a = 2) + 3 → 6, side effect setting a = 2\n if (p instanceof AST_Binary && !(p instanceof AST_Assign))\n return true;\n // (a = func)() —or— new (a = Object)()\n if (p instanceof AST_Call && p.expression === this)\n return true;\n // (a = foo) ? bar : baz\n if (p instanceof AST_Conditional && p.condition === this)\n return true;\n // (a = foo)[\"prop\"] —or— (a = foo).prop\n if (p instanceof AST_PropAccess && p.expression === this)\n return true;\n // ({a, b} = {a: 1, b: 2}), a destructuring assignment\n if (this instanceof AST_Assign && this.left instanceof AST_Destructuring && this.left.is_array === false)\n return true;\n });\n\n /* -----[ PRINTERS ]----- */\n\n DEFPRINT(AST_Directive, function(self, output) {\n output.print_string(self.value, self.quote);\n output.semicolon();\n });\n\n DEFPRINT(AST_Expansion, function (self, output) {\n output.print(\"...\");\n self.expression.print(output);\n });\n\n DEFPRINT(AST_Destructuring, function (self, output) {\n output.print(self.is_array ? \"[\" : \"{\");\n var len = self.names.length;\n self.names.forEach(function (name, i) {\n if (i > 0) output.comma();\n name.print(output);\n // If the final element is a hole, we need to make sure it\n // doesn't look like a trailing comma, by inserting an actual\n // trailing comma.\n if (i == len - 1 && name instanceof AST_Hole) output.comma();\n });\n output.print(self.is_array ? \"]\" : \"}\");\n });\n\n DEFPRINT(AST_Debugger, function(self, output) {\n output.print(\"debugger\");\n output.semicolon();\n });\n\n /* -----[ statements ]----- */\n\n function display_body(body, is_toplevel, output, allow_directives) {\n var last = body.length - 1;\n output.in_directive = allow_directives;\n body.forEach(function(stmt, i) {\n if (output.in_directive === true && !(stmt instanceof AST_Directive ||\n stmt instanceof AST_EmptyStatement ||\n (stmt instanceof AST_SimpleStatement && stmt.body instanceof AST_String)\n )) {\n output.in_directive = false;\n }\n if (!(stmt instanceof AST_EmptyStatement)) {\n output.indent();\n stmt.print(output);\n if (!(i == last && is_toplevel)) {\n output.newline();\n if (is_toplevel) output.newline();\n }\n }\n if (output.in_directive === true &&\n stmt instanceof AST_SimpleStatement &&\n stmt.body instanceof AST_String\n ) {\n output.in_directive = false;\n }\n });\n output.in_directive = false;\n }\n\n AST_StatementWithBody.DEFMETHOD(\"_do_print_body\", function(output) {\n force_statement(this.body, output);\n });\n\n DEFPRINT(AST_Statement, function(self, output) {\n self.body.print(output);\n output.semicolon();\n });\n DEFPRINT(AST_Toplevel, function(self, output) {\n display_body(self.body, true, output, true);\n output.print(\"\");\n });\n DEFPRINT(AST_LabeledStatement, function(self, output) {\n self.label.print(output);\n output.colon();\n self.body.print(output);\n });\n DEFPRINT(AST_SimpleStatement, function(self, output) {\n self.body.print(output);\n output.semicolon();\n });\n function print_braced_empty(self, output) {\n output.print(\"{\");\n output.with_indent(output.next_indent(), function() {\n output.append_comments(self, true);\n });\n output.print(\"}\");\n }\n function print_braced(self, output, allow_directives) {\n if (self.body.length > 0) {\n output.with_block(function() {\n display_body(self.body, false, output, allow_directives);\n });\n } else print_braced_empty(self, output);\n }\n DEFPRINT(AST_BlockStatement, function(self, output) {\n print_braced(self, output);\n });\n DEFPRINT(AST_EmptyStatement, function(self, output) {\n output.semicolon();\n });\n DEFPRINT(AST_Do, function(self, output) {\n output.print(\"do\");\n output.space();\n make_block(self.body, output);\n output.space();\n output.print(\"while\");\n output.space();\n output.with_parens(function() {\n self.condition.print(output);\n });\n output.semicolon();\n });\n DEFPRINT(AST_While, function(self, output) {\n output.print(\"while\");\n output.space();\n output.with_parens(function() {\n self.condition.print(output);\n });\n output.space();\n self._do_print_body(output);\n });\n DEFPRINT(AST_For, function(self, output) {\n output.print(\"for\");\n output.space();\n output.with_parens(function() {\n if (self.init) {\n if (self.init instanceof AST_Definitions) {\n self.init.print(output);\n } else {\n parenthesize_for_noin(self.init, output, true);\n }\n output.print(\";\");\n output.space();\n } else {\n output.print(\";\");\n }\n if (self.condition) {\n self.condition.print(output);\n output.print(\";\");\n output.space();\n } else {\n output.print(\";\");\n }\n if (self.step) {\n self.step.print(output);\n }\n });\n output.space();\n self._do_print_body(output);\n });\n DEFPRINT(AST_ForIn, function(self, output) {\n output.print(\"for\");\n if (self.await) {\n output.space();\n output.print(\"await\");\n }\n output.space();\n output.with_parens(function() {\n self.init.print(output);\n output.space();\n output.print(self instanceof AST_ForOf ? \"of\" : \"in\");\n output.space();\n self.object.print(output);\n });\n output.space();\n self._do_print_body(output);\n });\n DEFPRINT(AST_With, function(self, output) {\n output.print(\"with\");\n output.space();\n output.with_parens(function() {\n self.expression.print(output);\n });\n output.space();\n self._do_print_body(output);\n });\n\n /* -----[ functions ]----- */\n AST_Lambda.DEFMETHOD(\"_do_print\", function(output, nokeyword) {\n var self = this;\n if (!nokeyword) {\n if (self.async) {\n output.print(\"async\");\n output.space();\n }\n output.print(\"function\");\n if (self.is_generator) {\n output.star();\n }\n if (self.name) {\n output.space();\n }\n }\n if (self.name instanceof AST_Symbol) {\n self.name.print(output);\n } else if (nokeyword && self.name instanceof AST_Node) {\n output.with_square(function() {\n self.name.print(output); // Computed method name\n });\n }\n output.with_parens(function() {\n self.argnames.forEach(function(arg, i) {\n if (i) output.comma();\n arg.print(output);\n });\n });\n output.space();\n print_braced(self, output, true);\n });\n DEFPRINT(AST_Lambda, function(self, output) {\n self._do_print(output);\n });\n\n DEFPRINT(AST_PrefixedTemplateString, function(self, output) {\n var tag = self.prefix;\n var parenthesize_tag = tag instanceof AST_Lambda\n || tag instanceof AST_Binary\n || tag instanceof AST_Conditional\n || tag instanceof AST_Sequence\n || tag instanceof AST_Unary\n || tag instanceof AST_Dot && tag.expression instanceof AST_Object;\n if (parenthesize_tag) output.print(\"(\");\n self.prefix.print(output);\n if (parenthesize_tag) output.print(\")\");\n self.template_string.print(output);\n });\n DEFPRINT(AST_TemplateString, function(self, output) {\n var is_tagged = output.parent() instanceof AST_PrefixedTemplateString;\n\n output.print(\"`\");\n for (var i = 0; i < self.segments.length; i++) {\n if (!(self.segments[i] instanceof AST_TemplateSegment)) {\n output.print(\"${\");\n self.segments[i].print(output);\n output.print(\"}\");\n } else if (is_tagged) {\n output.print(self.segments[i].raw);\n } else {\n output.print_template_string_chars(self.segments[i].value);\n }\n }\n output.print(\"`\");\n });\n\n AST_Arrow.DEFMETHOD(\"_do_print\", function(output) {\n var self = this;\n var parent = output.parent();\n var needs_parens = (parent instanceof AST_Binary && !(parent instanceof AST_Assign)) ||\n parent instanceof AST_Unary ||\n (parent instanceof AST_Call && self === parent.expression);\n if (needs_parens) { output.print(\"(\"); }\n if (self.async) {\n output.print(\"async\");\n output.space();\n }\n if (self.argnames.length === 1 && self.argnames[0] instanceof AST_Symbol) {\n self.argnames[0].print(output);\n } else {\n output.with_parens(function() {\n self.argnames.forEach(function(arg, i) {\n if (i) output.comma();\n arg.print(output);\n });\n });\n }\n output.space();\n output.print(\"=>\");\n output.space();\n const first_statement = self.body[0];\n if (\n self.body.length === 1\n && first_statement instanceof AST_Return\n ) {\n const returned = first_statement.value;\n if (!returned) {\n output.print(\"{}\");\n } else if (left_is_object(returned)) {\n output.print(\"(\");\n returned.print(output);\n output.print(\")\");\n } else {\n returned.print(output);\n }\n } else {\n print_braced(self, output);\n }\n if (needs_parens) { output.print(\")\"); }\n });\n\n /* -----[ exits ]----- */\n AST_Exit.DEFMETHOD(\"_do_print\", function(output, kind) {\n output.print(kind);\n if (this.value) {\n output.space();\n const comments = this.value.start.comments_before;\n if (comments && comments.length && !output.printed_comments.has(comments)) {\n output.print(\"(\");\n this.value.print(output);\n output.print(\")\");\n } else {\n this.value.print(output);\n }\n }\n output.semicolon();\n });\n DEFPRINT(AST_Return, function(self, output) {\n self._do_print(output, \"return\");\n });\n DEFPRINT(AST_Throw, function(self, output) {\n self._do_print(output, \"throw\");\n });\n\n /* -----[ yield ]----- */\n\n DEFPRINT(AST_Yield, function(self, output) {\n var star = self.is_star ? \"*\" : \"\";\n output.print(\"yield\" + star);\n if (self.expression) {\n output.space();\n self.expression.print(output);\n }\n });\n\n DEFPRINT(AST_Await, function(self, output) {\n output.print(\"await\");\n output.space();\n var e = self.expression;\n var parens = !(\n e instanceof AST_Call\n || e instanceof AST_SymbolRef\n || e instanceof AST_PropAccess\n || e instanceof AST_Unary\n || e instanceof AST_Constant\n );\n if (parens) output.print(\"(\");\n self.expression.print(output);\n if (parens) output.print(\")\");\n });\n\n /* -----[ loop control ]----- */\n AST_LoopControl.DEFMETHOD(\"_do_print\", function(output, kind) {\n output.print(kind);\n if (this.label) {\n output.space();\n this.label.print(output);\n }\n output.semicolon();\n });\n DEFPRINT(AST_Break, function(self, output) {\n self._do_print(output, \"break\");\n });\n DEFPRINT(AST_Continue, function(self, output) {\n self._do_print(output, \"continue\");\n });\n\n /* -----[ if ]----- */\n function make_then(self, output) {\n var b = self.body;\n if (output.option(\"braces\")\n || output.option(\"ie8\") && b instanceof AST_Do)\n return make_block(b, output);\n // The squeezer replaces \"block\"-s that contain only a single\n // statement with the statement itself; technically, the AST\n // is correct, but this can create problems when we output an\n // IF having an ELSE clause where the THEN clause ends in an\n // IF *without* an ELSE block (then the outer ELSE would refer\n // to the inner IF). This function checks for this case and\n // adds the block braces if needed.\n if (!b) return output.force_semicolon();\n while (true) {\n if (b instanceof AST_If) {\n if (!b.alternative) {\n make_block(self.body, output);\n return;\n }\n b = b.alternative;\n } else if (b instanceof AST_StatementWithBody) {\n b = b.body;\n } else break;\n }\n force_statement(self.body, output);\n }\n DEFPRINT(AST_If, function(self, output) {\n output.print(\"if\");\n output.space();\n output.with_parens(function() {\n self.condition.print(output);\n });\n output.space();\n if (self.alternative) {\n make_then(self, output);\n output.space();\n output.print(\"else\");\n output.space();\n if (self.alternative instanceof AST_If)\n self.alternative.print(output);\n else\n force_statement(self.alternative, output);\n } else {\n self._do_print_body(output);\n }\n });\n\n /* -----[ switch ]----- */\n DEFPRINT(AST_Switch, function(self, output) {\n output.print(\"switch\");\n output.space();\n output.with_parens(function() {\n self.expression.print(output);\n });\n output.space();\n var last = self.body.length - 1;\n if (last < 0) print_braced_empty(self, output);\n else output.with_block(function() {\n self.body.forEach(function(branch, i) {\n output.indent(true);\n branch.print(output);\n if (i < last && branch.body.length > 0)\n output.newline();\n });\n });\n });\n AST_SwitchBranch.DEFMETHOD(\"_do_print_body\", function(output) {\n output.newline();\n this.body.forEach(function(stmt) {\n output.indent();\n stmt.print(output);\n output.newline();\n });\n });\n DEFPRINT(AST_Default, function(self, output) {\n output.print(\"default:\");\n self._do_print_body(output);\n });\n DEFPRINT(AST_Case, function(self, output) {\n output.print(\"case\");\n output.space();\n self.expression.print(output);\n output.print(\":\");\n self._do_print_body(output);\n });\n\n /* -----[ exceptions ]----- */\n DEFPRINT(AST_Try, function(self, output) {\n output.print(\"try\");\n output.space();\n print_braced(self, output);\n if (self.bcatch) {\n output.space();\n self.bcatch.print(output);\n }\n if (self.bfinally) {\n output.space();\n self.bfinally.print(output);\n }\n });\n DEFPRINT(AST_Catch, function(self, output) {\n output.print(\"catch\");\n if (self.argname) {\n output.space();\n output.with_parens(function() {\n self.argname.print(output);\n });\n }\n output.space();\n print_braced(self, output);\n });\n DEFPRINT(AST_Finally, function(self, output) {\n output.print(\"finally\");\n output.space();\n print_braced(self, output);\n });\n\n /* -----[ var/const ]----- */\n AST_Definitions.DEFMETHOD(\"_do_print\", function(output, kind) {\n output.print(kind);\n output.space();\n this.definitions.forEach(function(def, i) {\n if (i) output.comma();\n def.print(output);\n });\n var p = output.parent();\n var in_for = p instanceof AST_For || p instanceof AST_ForIn;\n var output_semicolon = !in_for || p && p.init !== this;\n if (output_semicolon)\n output.semicolon();\n });\n DEFPRINT(AST_Let, function(self, output) {\n self._do_print(output, \"let\");\n });\n DEFPRINT(AST_Var, function(self, output) {\n self._do_print(output, \"var\");\n });\n DEFPRINT(AST_Const, function(self, output) {\n self._do_print(output, \"const\");\n });\n DEFPRINT(AST_Import, function(self, output) {\n output.print(\"import\");\n output.space();\n if (self.imported_name) {\n self.imported_name.print(output);\n }\n if (self.imported_name && self.imported_names) {\n output.print(\",\");\n output.space();\n }\n if (self.imported_names) {\n if (self.imported_names.length === 1 && self.imported_names[0].foreign_name.name === \"*\") {\n self.imported_names[0].print(output);\n } else {\n output.print(\"{\");\n self.imported_names.forEach(function (name_import, i) {\n output.space();\n name_import.print(output);\n if (i < self.imported_names.length - 1) {\n output.print(\",\");\n }\n });\n output.space();\n output.print(\"}\");\n }\n }\n if (self.imported_name || self.imported_names) {\n output.space();\n output.print(\"from\");\n output.space();\n }\n self.module_name.print(output);\n output.semicolon();\n });\n\n DEFPRINT(AST_NameMapping, function(self, output) {\n var is_import = output.parent() instanceof AST_Import;\n var definition = self.name.definition();\n var names_are_different =\n (definition && definition.mangled_name || self.name.name) !==\n self.foreign_name.name;\n if (names_are_different) {\n if (is_import) {\n output.print(self.foreign_name.name);\n } else {\n self.name.print(output);\n }\n output.space();\n output.print(\"as\");\n output.space();\n if (is_import) {\n self.name.print(output);\n } else {\n output.print(self.foreign_name.name);\n }\n } else {\n self.name.print(output);\n }\n });\n\n DEFPRINT(AST_Export, function(self, output) {\n output.print(\"export\");\n output.space();\n if (self.is_default) {\n output.print(\"default\");\n output.space();\n }\n if (self.exported_names) {\n if (self.exported_names.length === 1 && self.exported_names[0].name.name === \"*\") {\n self.exported_names[0].print(output);\n } else {\n output.print(\"{\");\n self.exported_names.forEach(function(name_export, i) {\n output.space();\n name_export.print(output);\n if (i < self.exported_names.length - 1) {\n output.print(\",\");\n }\n });\n output.space();\n output.print(\"}\");\n }\n } else if (self.exported_value) {\n self.exported_value.print(output);\n } else if (self.exported_definition) {\n self.exported_definition.print(output);\n if (self.exported_definition instanceof AST_Definitions) return;\n }\n if (self.module_name) {\n output.space();\n output.print(\"from\");\n output.space();\n self.module_name.print(output);\n }\n if (self.exported_value\n && !(self.exported_value instanceof AST_Defun ||\n self.exported_value instanceof AST_Function ||\n self.exported_value instanceof AST_Class)\n || self.module_name\n || self.exported_names\n ) {\n output.semicolon();\n }\n });\n\n function parenthesize_for_noin(node, output, noin) {\n var parens = false;\n // need to take some precautions here:\n // https://github.com/mishoo/UglifyJS2/issues/60\n if (noin) node.walk(new TreeWalker(function(node) {\n if (parens || node instanceof AST_Scope) return true;\n if (node instanceof AST_Binary && node.operator == \"in\") {\n parens = true;\n return true;\n }\n }));\n node.print(output, parens);\n }\n\n DEFPRINT(AST_VarDef, function(self, output) {\n self.name.print(output);\n if (self.value) {\n output.space();\n output.print(\"=\");\n output.space();\n var p = output.parent(1);\n var noin = p instanceof AST_For || p instanceof AST_ForIn;\n parenthesize_for_noin(self.value, output, noin);\n }\n });\n\n /* -----[ other expressions ]----- */\n DEFPRINT(AST_Call, function(self, output) {\n self.expression.print(output);\n if (self instanceof AST_New && self.args.length === 0)\n return;\n if (self.expression instanceof AST_Call || self.expression instanceof AST_Lambda) {\n output.add_mapping(self.start);\n }\n output.with_parens(function() {\n self.args.forEach(function(expr, i) {\n if (i) output.comma();\n expr.print(output);\n });\n });\n });\n DEFPRINT(AST_New, function(self, output) {\n output.print(\"new\");\n output.space();\n AST_Call.prototype._codegen(self, output);\n });\n\n AST_Sequence.DEFMETHOD(\"_do_print\", function(output) {\n this.expressions.forEach(function(node, index) {\n if (index > 0) {\n output.comma();\n if (output.should_break()) {\n output.newline();\n output.indent();\n }\n }\n node.print(output);\n });\n });\n DEFPRINT(AST_Sequence, function(self, output) {\n self._do_print(output);\n // var p = output.parent();\n // if (p instanceof AST_Statement) {\n // output.with_indent(output.next_indent(), function(){\n // self._do_print(output);\n // });\n // } else {\n // self._do_print(output);\n // }\n });\n DEFPRINT(AST_Dot, function(self, output) {\n var expr = self.expression;\n expr.print(output);\n var prop = self.property;\n if (output.option(\"ie8\") && RESERVED_WORDS.has(prop)) {\n output.print(\"[\");\n output.add_mapping(self.end);\n output.print_string(prop);\n output.print(\"]\");\n } else {\n if (expr instanceof AST_Number && expr.getValue() >= 0) {\n if (!/[xa-f.)]/i.test(output.last())) {\n output.print(\".\");\n }\n }\n output.print(\".\");\n // the name after dot would be mapped about here.\n output.add_mapping(self.end);\n output.print_name(prop);\n }\n });\n DEFPRINT(AST_Sub, function(self, output) {\n self.expression.print(output);\n output.print(\"[\");\n self.property.print(output);\n output.print(\"]\");\n });\n DEFPRINT(AST_UnaryPrefix, function(self, output) {\n var op = self.operator;\n output.print(op);\n if (/^[a-z]/i.test(op)\n || (/[+-]$/.test(op)\n && self.expression instanceof AST_UnaryPrefix\n && /^[+-]/.test(self.expression.operator))) {\n output.space();\n }\n self.expression.print(output);\n });\n DEFPRINT(AST_UnaryPostfix, function(self, output) {\n self.expression.print(output);\n output.print(self.operator);\n });\n DEFPRINT(AST_Binary, function(self, output) {\n var op = self.operator;\n self.left.print(output);\n if (op[0] == \">\" /* \">>\" \">>>\" \">\" \">=\" */\n && self.left instanceof AST_UnaryPostfix\n && self.left.operator == \"--\") {\n // space is mandatory to avoid outputting -->\n output.print(\" \");\n } else {\n // the space is optional depending on \"beautify\"\n output.space();\n }\n output.print(op);\n if ((op == \"<\" || op == \"<<\")\n && self.right instanceof AST_UnaryPrefix\n && self.right.operator == \"!\"\n && self.right.expression instanceof AST_UnaryPrefix\n && self.right.expression.operator == \"--\") {\n // space is mandatory to avoid outputting x ? y : false\n if (self.left.operator == \"||\") {\n var lr = self.left.right.evaluate(compressor);\n if (!lr) return make_node(AST_Conditional, self, {\n condition: self.left.left,\n consequent: self.right,\n alternative: self.left.right\n }).optimize(compressor);\n }\n break;\n case \"||\":\n var ll = has_flag(self.left, TRUTHY)\n ? true\n : has_flag(self.left, FALSY)\n ? false\n : self.left.evaluate(compressor);\n if (!ll) {\n compressor.warn(\"Condition left of || always false [{file}:{line},{col}]\", self.start);\n return make_sequence(self, [ self.left, self.right ]).optimize(compressor);\n } else if (!(ll instanceof AST_Node)) {\n compressor.warn(\"Condition left of || always true [{file}:{line},{col}]\", self.start);\n return maintain_this_binding(compressor.parent(), compressor.self(), self.left).optimize(compressor);\n }\n var rr = self.right.evaluate(compressor);\n if (!rr) {\n var parent = compressor.parent();\n if (parent.operator == \"||\" && parent.left === compressor.self() || compressor.in_boolean_context()) {\n compressor.warn(\"Dropping side-effect-free || [{file}:{line},{col}]\", self.start);\n return self.left.optimize(compressor);\n }\n } else if (!(rr instanceof AST_Node)) {\n if (compressor.in_boolean_context()) {\n compressor.warn(\"Boolean || always true [{file}:{line},{col}]\", self.start);\n return make_sequence(self, [\n self.left,\n make_node(AST_True, self)\n ]).optimize(compressor);\n } else {\n set_flag(self, TRUTHY);\n }\n }\n if (self.left.operator == \"&&\") {\n var lr = self.left.right.evaluate(compressor);\n if (lr && !(lr instanceof AST_Node)) return make_node(AST_Conditional, self, {\n condition: self.left.left,\n consequent: self.left.right,\n alternative: self.right\n }).optimize(compressor);\n }\n break;\n }\n var associative = true;\n switch (self.operator) {\n case \"+\":\n // \"foo\" + (\"bar\" + x) => \"foobar\" + x\n if (self.left instanceof AST_Constant\n && self.right instanceof AST_Binary\n && self.right.operator == \"+\"\n && self.right.left instanceof AST_Constant\n && self.right.is_string(compressor)) {\n self = make_node(AST_Binary, self, {\n operator: \"+\",\n left: make_node(AST_String, self.left, {\n value: \"\" + self.left.getValue() + self.right.left.getValue(),\n start: self.left.start,\n end: self.right.left.end\n }),\n right: self.right.right\n });\n }\n // (x + \"foo\") + \"bar\" => x + \"foobar\"\n if (self.right instanceof AST_Constant\n && self.left instanceof AST_Binary\n && self.left.operator == \"+\"\n && self.left.right instanceof AST_Constant\n && self.left.is_string(compressor)) {\n self = make_node(AST_Binary, self, {\n operator: \"+\",\n left: self.left.left,\n right: make_node(AST_String, self.right, {\n value: \"\" + self.left.right.getValue() + self.right.getValue(),\n start: self.left.right.start,\n end: self.right.end\n })\n });\n }\n // (x + \"foo\") + (\"bar\" + y) => (x + \"foobar\") + y\n if (self.left instanceof AST_Binary\n && self.left.operator == \"+\"\n && self.left.is_string(compressor)\n && self.left.right instanceof AST_Constant\n && self.right instanceof AST_Binary\n && self.right.operator == \"+\"\n && self.right.left instanceof AST_Constant\n && self.right.is_string(compressor)) {\n self = make_node(AST_Binary, self, {\n operator: \"+\",\n left: make_node(AST_Binary, self.left, {\n operator: \"+\",\n left: self.left.left,\n right: make_node(AST_String, self.left.right, {\n value: \"\" + self.left.right.getValue() + self.right.left.getValue(),\n start: self.left.right.start,\n end: self.right.left.end\n })\n }),\n right: self.right.right\n });\n }\n // a + -b => a - b\n if (self.right instanceof AST_UnaryPrefix\n && self.right.operator == \"-\"\n && self.left.is_number(compressor)) {\n self = make_node(AST_Binary, self, {\n operator: \"-\",\n left: self.left,\n right: self.right.expression\n });\n break;\n }\n // -a + b => b - a\n if (self.left instanceof AST_UnaryPrefix\n && self.left.operator == \"-\"\n && reversible()\n && self.right.is_number(compressor)) {\n self = make_node(AST_Binary, self, {\n operator: \"-\",\n left: self.right,\n right: self.left.expression\n });\n break;\n }\n case \"*\":\n associative = compressor.option(\"unsafe_math\");\n case \"&\":\n case \"|\":\n case \"^\":\n // a + +b => +b + a\n if (self.left.is_number(compressor)\n && self.right.is_number(compressor)\n && reversible()\n && !(self.left instanceof AST_Binary\n && self.left.operator != self.operator\n && PRECEDENCE[self.left.operator] >= PRECEDENCE[self.operator])) {\n var reversed = make_node(AST_Binary, self, {\n operator: self.operator,\n left: self.right,\n right: self.left\n });\n if (self.right instanceof AST_Constant\n && !(self.left instanceof AST_Constant)) {\n self = best_of(compressor, reversed, self);\n } else {\n self = best_of(compressor, self, reversed);\n }\n }\n if (associative && self.is_number(compressor)) {\n // a + (b + c) => (a + b) + c\n if (self.right instanceof AST_Binary\n && self.right.operator == self.operator) {\n self = make_node(AST_Binary, self, {\n operator: self.operator,\n left: make_node(AST_Binary, self.left, {\n operator: self.operator,\n left: self.left,\n right: self.right.left,\n start: self.left.start,\n end: self.right.left.end\n }),\n right: self.right.right\n });\n }\n // (n + 2) + 3 => 5 + n\n // (2 * n) * 3 => 6 + n\n if (self.right instanceof AST_Constant\n && self.left instanceof AST_Binary\n && self.left.operator == self.operator) {\n if (self.left.left instanceof AST_Constant) {\n self = make_node(AST_Binary, self, {\n operator: self.operator,\n left: make_node(AST_Binary, self.left, {\n operator: self.operator,\n left: self.left.left,\n right: self.right,\n start: self.left.left.start,\n end: self.right.end\n }),\n right: self.left.right\n });\n } else if (self.left.right instanceof AST_Constant) {\n self = make_node(AST_Binary, self, {\n operator: self.operator,\n left: make_node(AST_Binary, self.left, {\n operator: self.operator,\n left: self.left.right,\n right: self.right,\n start: self.left.right.start,\n end: self.right.end\n }),\n right: self.left.left\n });\n }\n }\n // (a | 1) | (2 | d) => (3 | a) | b\n if (self.left instanceof AST_Binary\n && self.left.operator == self.operator\n && self.left.right instanceof AST_Constant\n && self.right instanceof AST_Binary\n && self.right.operator == self.operator\n && self.right.left instanceof AST_Constant) {\n self = make_node(AST_Binary, self, {\n operator: self.operator,\n left: make_node(AST_Binary, self.left, {\n operator: self.operator,\n left: make_node(AST_Binary, self.left.left, {\n operator: self.operator,\n left: self.left.right,\n right: self.right.left,\n start: self.left.right.start,\n end: self.right.left.end\n }),\n right: self.left.left\n }),\n right: self.right.right\n });\n }\n }\n }\n }\n // x && (y && z) ==> x && y && z\n // x || (y || z) ==> x || y || z\n // x + (\"y\" + z) ==> x + \"y\" + z\n // \"x\" + (y + \"z\")==> \"x\" + y + \"z\"\n if (self.right instanceof AST_Binary\n && self.right.operator == self.operator\n && (lazy_op.has(self.operator)\n || (self.operator == \"+\"\n && (self.right.left.is_string(compressor)\n || (self.left.is_string(compressor)\n && self.right.right.is_string(compressor)))))\n ) {\n self.left = make_node(AST_Binary, self.left, {\n operator : self.operator,\n left : self.left,\n right : self.right.left\n });\n self.right = self.right.right;\n return self.transform(compressor);\n }\n var ev = self.evaluate(compressor);\n if (ev !== self) {\n ev = make_node_from_constant(ev, self).optimize(compressor);\n return best_of(compressor, ev, self);\n }\n return self;\n});\n\ndef_optimize(AST_SymbolExport, function(self, compressor) {\n return self;\n});\n\nfunction recursive_ref(compressor, def) {\n var node;\n for (var i = 0; node = compressor.parent(i); i++) {\n if (node instanceof AST_Lambda) {\n var name = node.name;\n if (name && name.definition() === def) break;\n }\n }\n return node;\n}\n\nfunction within_array_or_object_literal(compressor) {\n var node, level = 0;\n while (node = compressor.parent(level++)) {\n if (node instanceof AST_Statement) return false;\n if (node instanceof AST_Array\n || node instanceof AST_ObjectKeyVal\n || node instanceof AST_Object) {\n return true;\n }\n }\n return false;\n}\n\ndef_optimize(AST_SymbolRef, function(self, compressor) {\n if (!compressor.option(\"ie8\")\n && is_undeclared_ref(self)\n && (!self.scope.uses_with || !compressor.find_parent(AST_With))) {\n switch (self.name) {\n case \"undefined\":\n return make_node(AST_Undefined, self).optimize(compressor);\n case \"NaN\":\n return make_node(AST_NaN, self).optimize(compressor);\n case \"Infinity\":\n return make_node(AST_Infinity, self).optimize(compressor);\n }\n }\n var parent = compressor.parent();\n if (compressor.option(\"reduce_vars\") && is_lhs(self, parent) !== self) {\n const def = self.definition();\n if (compressor.top_retain && def.global && compressor.top_retain(def)) {\n def.fixed = false;\n def.should_replace = false;\n def.single_use = false;\n return self;\n }\n var fixed = self.fixed_value();\n var single_use = def.single_use\n && !(parent instanceof AST_Call && parent.is_expr_pure(compressor));\n if (single_use && (fixed instanceof AST_Lambda || fixed instanceof AST_Class)) {\n if (retain_top_func(fixed, compressor)) {\n single_use = false;\n } else if (def.scope !== self.scope\n && (def.escaped == 1\n || has_flag(fixed, INLINED)\n || within_array_or_object_literal(compressor))) {\n single_use = false;\n } else if (recursive_ref(compressor, def)) {\n single_use = false;\n } else if (def.scope !== self.scope || def.orig[0] instanceof AST_SymbolFunarg) {\n single_use = fixed.is_constant_expression(self.scope);\n if (single_use == \"f\") {\n var scope = self.scope;\n do {\n if (scope instanceof AST_Defun || is_func_expr(scope)) {\n set_flag(scope, INLINED);\n }\n } while (scope = scope.parent_scope);\n }\n }\n }\n if (single_use && fixed instanceof AST_Lambda) {\n single_use =\n def.scope === self.scope\n || parent instanceof AST_Call && parent.expression === self;\n }\n if (single_use && fixed instanceof AST_Class && fixed.extends) {\n single_use =\n !fixed.extends.may_throw(compressor)\n && (!(fixed.extends instanceof AST_Call) || fixed.extends.is_expr_pure(compressor));\n }\n const can_pull_in = single_use && fixed;\n if (can_pull_in) {\n if (fixed instanceof AST_DefClass) {\n set_flag(fixed, SQUEEZED);\n fixed = make_node(AST_ClassExpression, fixed, fixed);\n }\n if (fixed instanceof AST_Defun) {\n set_flag(fixed, SQUEEZED);\n fixed = make_node(AST_Function, fixed, fixed);\n }\n if (def.recursive_refs > 0 && fixed.name instanceof AST_SymbolDefun) {\n const defun_def = fixed.name.definition();\n let lambda_def = fixed.variables.get(fixed.name.name);\n let name = lambda_def && lambda_def.orig[0];\n if (!(name instanceof AST_SymbolLambda)) {\n name = make_node(AST_SymbolLambda, fixed.name, fixed.name);\n name.scope = fixed;\n fixed.name = name;\n lambda_def = fixed.def_function(name);\n }\n fixed.walk(new TreeWalker(function(node) {\n if (node instanceof AST_SymbolRef && node.definition() === defun_def) {\n node.thedef = lambda_def;\n lambda_def.references.push(node);\n }\n }));\n }\n if (fixed instanceof AST_Lambda || fixed instanceof AST_Class) {\n find_scope(compressor, true).add_child_scope(fixed);\n }\n return fixed.optimize(compressor);\n }\n if (fixed && def.should_replace === undefined) {\n let init;\n if (fixed instanceof AST_This) {\n if (!(def.orig[0] instanceof AST_SymbolFunarg)\n && def.references.every((ref) =>\n def.scope === ref.scope\n )) {\n init = fixed;\n }\n } else {\n var ev = fixed.evaluate(compressor);\n if (ev !== fixed && (compressor.option(\"unsafe_regexp\") || !(ev instanceof RegExp))) {\n init = make_node_from_constant(ev, fixed);\n }\n }\n if (init) {\n var value_length = init.optimize(compressor).print_to_string().length;\n var fn;\n if (has_symbol_ref(fixed)) {\n fn = function() {\n var result = init.optimize(compressor);\n return result === init ? result.clone(true) : result;\n };\n } else {\n value_length = Math.min(value_length, fixed.print_to_string().length);\n fn = function() {\n var result = best_of_expression(init.optimize(compressor), fixed);\n return result === init || result === fixed ? result.clone(true) : result;\n };\n }\n var name_length = def.name.length;\n var overhead = 0;\n if (compressor.option(\"unused\") && !compressor.exposed(def)) {\n overhead = (name_length + 2 + value_length) / (def.references.length - def.assignments);\n }\n def.should_replace = value_length <= name_length + overhead ? fn : false;\n } else {\n def.should_replace = false;\n }\n }\n if (def.should_replace) {\n return def.should_replace();\n }\n }\n return self;\n\n function has_symbol_ref(value) {\n var found;\n value.walk(new TreeWalker(function(node) {\n if (node instanceof AST_SymbolRef) found = true;\n if (found) return true;\n }));\n return found;\n }\n});\n\nfunction is_atomic(lhs, self) {\n return lhs instanceof AST_SymbolRef || lhs.TYPE === self.TYPE;\n}\n\ndef_optimize(AST_Undefined, function(self, compressor) {\n if (compressor.option(\"unsafe_undefined\")) {\n var undef = find_variable(compressor, \"undefined\");\n if (undef) {\n var ref = make_node(AST_SymbolRef, self, {\n name : \"undefined\",\n scope : undef.scope,\n thedef : undef\n });\n set_flag(ref, UNDEFINED);\n return ref;\n }\n }\n var lhs = is_lhs(compressor.self(), compressor.parent());\n if (lhs && is_atomic(lhs, self)) return self;\n return make_node(AST_UnaryPrefix, self, {\n operator: \"void\",\n expression: make_node(AST_Number, self, {\n value: 0\n })\n });\n});\n\ndef_optimize(AST_Infinity, function(self, compressor) {\n var lhs = is_lhs(compressor.self(), compressor.parent());\n if (lhs && is_atomic(lhs, self)) return self;\n if (compressor.option(\"keep_infinity\")\n && !(lhs && !is_atomic(lhs, self))\n && !find_variable(compressor, \"Infinity\"))\n return self;\n return make_node(AST_Binary, self, {\n operator: \"/\",\n left: make_node(AST_Number, self, {\n value: 1\n }),\n right: make_node(AST_Number, self, {\n value: 0\n })\n });\n});\n\ndef_optimize(AST_NaN, function(self, compressor) {\n var lhs = is_lhs(compressor.self(), compressor.parent());\n if (lhs && !is_atomic(lhs, self)\n || find_variable(compressor, \"NaN\")) {\n return make_node(AST_Binary, self, {\n operator: \"/\",\n left: make_node(AST_Number, self, {\n value: 0\n }),\n right: make_node(AST_Number, self, {\n value: 0\n })\n });\n }\n return self;\n});\n\nfunction is_reachable(self, defs) {\n var reachable = false;\n var find_ref = new TreeWalker(function(node) {\n if (reachable) return true;\n if (node instanceof AST_SymbolRef && member(node.definition(), defs)) {\n return reachable = true;\n }\n });\n var scan_scope = new TreeWalker(function(node) {\n if (reachable) return true;\n if (node instanceof AST_Scope && node !== self) {\n var parent = scan_scope.parent();\n if (parent instanceof AST_Call && parent.expression === node) return;\n node.walk(find_ref);\n return true;\n }\n });\n self.walk(scan_scope);\n return reachable;\n}\n\nconst ASSIGN_OPS = makePredicate(\"+ - / * % >> << >>> | ^ &\");\nconst ASSIGN_OPS_COMMUTATIVE = makePredicate(\"* | ^ &\");\ndef_optimize(AST_Assign, function(self, compressor) {\n var def;\n if (compressor.option(\"dead_code\")\n && self.left instanceof AST_SymbolRef\n && (def = self.left.definition()).scope === compressor.find_parent(AST_Lambda)) {\n var level = 0, node, parent = self;\n do {\n node = parent;\n parent = compressor.parent(level++);\n if (parent instanceof AST_Exit) {\n if (in_try(level, parent)) break;\n if (is_reachable(def.scope, [ def ])) break;\n if (self.operator == \"=\") return self.right;\n def.fixed = false;\n return make_node(AST_Binary, self, {\n operator: self.operator.slice(0, -1),\n left: self.left,\n right: self.right\n }).optimize(compressor);\n }\n } while (parent instanceof AST_Binary && parent.right === node\n || parent instanceof AST_Sequence && parent.tail_node() === node);\n }\n self = self.lift_sequences(compressor);\n if (self.operator == \"=\" && self.left instanceof AST_SymbolRef && self.right instanceof AST_Binary) {\n // x = expr1 OP expr2\n if (self.right.left instanceof AST_SymbolRef\n && self.right.left.name == self.left.name\n && ASSIGN_OPS.has(self.right.operator)) {\n // x = x - 2 ---> x -= 2\n self.operator = self.right.operator + \"=\";\n self.right = self.right.right;\n } else if (self.right.right instanceof AST_SymbolRef\n && self.right.right.name == self.left.name\n && ASSIGN_OPS_COMMUTATIVE.has(self.right.operator)\n && !self.right.left.has_side_effects(compressor)) {\n // x = 2 & x ---> x &= 2\n self.operator = self.right.operator + \"=\";\n self.right = self.right.left;\n }\n }\n return self;\n\n function in_try(level, node) {\n var right = self.right;\n self.right = make_node(AST_Null, right);\n var may_throw = node.may_throw(compressor);\n self.right = right;\n var scope = self.left.definition().scope;\n var parent;\n while ((parent = compressor.parent(level++)) !== scope) {\n if (parent instanceof AST_Try) {\n if (parent.bfinally) return true;\n if (may_throw && parent.bcatch) return true;\n }\n }\n }\n});\n\ndef_optimize(AST_DefaultAssign, function(self, compressor) {\n if (!compressor.option(\"evaluate\")) {\n return self;\n }\n var evaluateRight = self.right.evaluate(compressor);\n\n // `[x = undefined] = foo` ---> `[x] = foo`\n if (evaluateRight === undefined) {\n self = self.left;\n } else if (evaluateRight !== self.right) {\n evaluateRight = make_node_from_constant(evaluateRight, self.right);\n self.right = best_of_expression(evaluateRight, self.right);\n }\n\n return self;\n});\n\ndef_optimize(AST_Conditional, function(self, compressor) {\n if (!compressor.option(\"conditionals\")) return self;\n // This looks like lift_sequences(), should probably be under \"sequences\"\n if (self.condition instanceof AST_Sequence) {\n var expressions = self.condition.expressions.slice();\n self.condition = expressions.pop();\n expressions.push(self);\n return make_sequence(self, expressions);\n }\n var cond = self.condition.evaluate(compressor);\n if (cond !== self.condition) {\n if (cond) {\n compressor.warn(\"Condition always true [{file}:{line},{col}]\", self.start);\n return maintain_this_binding(compressor.parent(), compressor.self(), self.consequent);\n } else {\n compressor.warn(\"Condition always false [{file}:{line},{col}]\", self.start);\n return maintain_this_binding(compressor.parent(), compressor.self(), self.alternative);\n }\n }\n var negated = cond.negate(compressor, first_in_statement(compressor));\n if (best_of(compressor, cond, negated) === negated) {\n self = make_node(AST_Conditional, self, {\n condition: negated,\n consequent: self.alternative,\n alternative: self.consequent\n });\n }\n var condition = self.condition;\n var consequent = self.consequent;\n var alternative = self.alternative;\n // x?x:y --> x||y\n if (condition instanceof AST_SymbolRef\n && consequent instanceof AST_SymbolRef\n && condition.definition() === consequent.definition()) {\n return make_node(AST_Binary, self, {\n operator: \"||\",\n left: condition,\n right: alternative\n });\n }\n // if (foo) exp = something; else exp = something_else;\n // |\n // v\n // exp = foo ? something : something_else;\n if (consequent instanceof AST_Assign\n && alternative instanceof AST_Assign\n && consequent.operator == alternative.operator\n && consequent.left.equivalent_to(alternative.left)\n && (!self.condition.has_side_effects(compressor)\n || consequent.operator == \"=\"\n && !consequent.left.has_side_effects(compressor))) {\n return make_node(AST_Assign, self, {\n operator: consequent.operator,\n left: consequent.left,\n right: make_node(AST_Conditional, self, {\n condition: self.condition,\n consequent: consequent.right,\n alternative: alternative.right\n })\n });\n }\n // x ? y(a) : y(b) --> y(x ? a : b)\n var arg_index;\n if (consequent instanceof AST_Call\n && alternative.TYPE === consequent.TYPE\n && consequent.args.length > 0\n && consequent.args.length == alternative.args.length\n && consequent.expression.equivalent_to(alternative.expression)\n && !self.condition.has_side_effects(compressor)\n && !consequent.expression.has_side_effects(compressor)\n && typeof (arg_index = single_arg_diff()) == \"number\") {\n var node = consequent.clone();\n node.args[arg_index] = make_node(AST_Conditional, self, {\n condition: self.condition,\n consequent: consequent.args[arg_index],\n alternative: alternative.args[arg_index]\n });\n return node;\n }\n // x?y?z:a:a --> x&&y?z:a\n if (consequent instanceof AST_Conditional\n && consequent.alternative.equivalent_to(alternative)) {\n return make_node(AST_Conditional, self, {\n condition: make_node(AST_Binary, self, {\n left: self.condition,\n operator: \"&&\",\n right: consequent.condition\n }),\n consequent: consequent.consequent,\n alternative: alternative\n });\n }\n // x ? y : y --> x, y\n if (consequent.equivalent_to(alternative)) {\n return make_sequence(self, [\n self.condition,\n consequent\n ]).optimize(compressor);\n }\n // x ? y || z : z --> x && y || z\n if (consequent instanceof AST_Binary\n && consequent.operator == \"||\"\n && consequent.right.equivalent_to(alternative)) {\n return make_node(AST_Binary, self, {\n operator: \"||\",\n left: make_node(AST_Binary, self, {\n operator: \"&&\",\n left: self.condition,\n right: consequent.left\n }),\n right: alternative\n }).optimize(compressor);\n }\n var in_bool = compressor.in_boolean_context();\n if (is_true(self.consequent)) {\n if (is_false(self.alternative)) {\n // c ? true : false ---> !!c\n return booleanize(self.condition);\n }\n // c ? true : x ---> !!c || x\n return make_node(AST_Binary, self, {\n operator: \"||\",\n left: booleanize(self.condition),\n right: self.alternative\n });\n }\n if (is_false(self.consequent)) {\n if (is_true(self.alternative)) {\n // c ? false : true ---> !c\n return booleanize(self.condition.negate(compressor));\n }\n // c ? false : x ---> !c && x\n return make_node(AST_Binary, self, {\n operator: \"&&\",\n left: booleanize(self.condition.negate(compressor)),\n right: self.alternative\n });\n }\n if (is_true(self.alternative)) {\n // c ? x : true ---> !c || x\n return make_node(AST_Binary, self, {\n operator: \"||\",\n left: booleanize(self.condition.negate(compressor)),\n right: self.consequent\n });\n }\n if (is_false(self.alternative)) {\n // c ? x : false ---> !!c && x\n return make_node(AST_Binary, self, {\n operator: \"&&\",\n left: booleanize(self.condition),\n right: self.consequent\n });\n }\n\n return self;\n\n function booleanize(node) {\n if (node.is_boolean()) return node;\n // !!expression\n return make_node(AST_UnaryPrefix, node, {\n operator: \"!\",\n expression: node.negate(compressor)\n });\n }\n\n // AST_True or !0\n function is_true(node) {\n return node instanceof AST_True\n || in_bool\n && node instanceof AST_Constant\n && node.getValue()\n || (node instanceof AST_UnaryPrefix\n && node.operator == \"!\"\n && node.expression instanceof AST_Constant\n && !node.expression.getValue());\n }\n // AST_False or !1\n function is_false(node) {\n return node instanceof AST_False\n || in_bool\n && node instanceof AST_Constant\n && !node.getValue()\n || (node instanceof AST_UnaryPrefix\n && node.operator == \"!\"\n && node.expression instanceof AST_Constant\n && node.expression.getValue());\n }\n\n function single_arg_diff() {\n var a = consequent.args;\n var b = alternative.args;\n for (var i = 0, len = a.length; i < len; i++) {\n if (a[i] instanceof AST_Expansion) return;\n if (!a[i].equivalent_to(b[i])) {\n if (b[i] instanceof AST_Expansion) return;\n for (var j = i + 1; j < len; j++) {\n if (a[j] instanceof AST_Expansion) return;\n if (!a[j].equivalent_to(b[j])) return;\n }\n return i;\n }\n }\n }\n});\n\ndef_optimize(AST_Boolean, function(self, compressor) {\n if (compressor.in_boolean_context()) return make_node(AST_Number, self, {\n value: +self.value\n });\n var p = compressor.parent();\n if (compressor.option(\"booleans_as_integers\")) {\n if (p instanceof AST_Binary && (p.operator == \"===\" || p.operator == \"!==\")) {\n p.operator = p.operator.replace(/=$/, \"\");\n }\n return make_node(AST_Number, self, {\n value: +self.value\n });\n }\n if (compressor.option(\"booleans\")) {\n if (p instanceof AST_Binary && (p.operator == \"==\"\n || p.operator == \"!=\")) {\n compressor.warn(\"Non-strict equality against boolean: {operator} {value} [{file}:{line},{col}]\", {\n operator : p.operator,\n value : self.value,\n file : p.start.file,\n line : p.start.line,\n col : p.start.col,\n });\n return make_node(AST_Number, self, {\n value: +self.value\n });\n }\n return make_node(AST_UnaryPrefix, self, {\n operator: \"!\",\n expression: make_node(AST_Number, self, {\n value: 1 - self.value\n })\n });\n }\n return self;\n});\n\nfunction safe_to_flatten(value, compressor) {\n if (value instanceof AST_SymbolRef) {\n value = value.fixed_value();\n }\n if (!value) return false;\n return !(value instanceof AST_Lambda || value instanceof AST_Class)\n || compressor.parent() instanceof AST_New\n || !value.contains_this();\n}\n\ndef_optimize(AST_Sub, function(self, compressor) {\n var expr = self.expression;\n var prop = self.property;\n if (compressor.option(\"properties\")) {\n var key = prop.evaluate(compressor);\n if (key !== prop) {\n if (typeof key == \"string\") {\n if (key == \"undefined\") {\n key = undefined;\n } else {\n var value = parseFloat(key);\n if (value.toString() == key) {\n key = value;\n }\n }\n }\n prop = self.property = best_of_expression(prop, make_node_from_constant(key, prop).transform(compressor));\n var property = \"\" + key;\n if (is_identifier_string(property)\n && property.length <= prop.print_to_string().length + 1) {\n return make_node(AST_Dot, self, {\n expression: expr,\n property: property,\n quote: prop.quote,\n }).optimize(compressor);\n }\n }\n }\n var fn;\n OPT_ARGUMENTS: if (compressor.option(\"arguments\")\n && expr instanceof AST_SymbolRef\n && expr.name == \"arguments\"\n && expr.definition().orig.length == 1\n && (fn = expr.scope) instanceof AST_Lambda\n && fn.uses_arguments\n && !(fn instanceof AST_Arrow)\n && prop instanceof AST_Number) {\n var index = prop.getValue();\n var params = new Set();\n var argnames = fn.argnames;\n for (var n = 0; n < argnames.length; n++) {\n if (!(argnames[n] instanceof AST_SymbolFunarg)) {\n break OPT_ARGUMENTS; // destructuring parameter - bail\n }\n var param = argnames[n].name;\n if (params.has(param)) {\n break OPT_ARGUMENTS; // duplicate parameter - bail\n }\n params.add(param);\n }\n var argname = fn.argnames[index];\n if (argname && compressor.has_directive(\"use strict\")) {\n var def = argname.definition();\n if (!compressor.option(\"reduce_vars\") || def.assignments || def.orig.length > 1) {\n argname = null;\n }\n } else if (!argname && !compressor.option(\"keep_fargs\") && index < fn.argnames.length + 5) {\n while (index >= fn.argnames.length) {\n argname = make_node(AST_SymbolFunarg, fn, {\n name: fn.make_var_name(\"argument_\" + fn.argnames.length),\n scope: fn\n });\n fn.argnames.push(argname);\n fn.enclosed.push(fn.def_variable(argname));\n }\n }\n if (argname) {\n var sym = make_node(AST_SymbolRef, self, argname);\n sym.reference({});\n clear_flag(argname, UNUSED);\n return sym;\n }\n }\n if (is_lhs(self, compressor.parent())) return self;\n if (key !== prop) {\n var sub = self.flatten_object(property, compressor);\n if (sub) {\n expr = self.expression = sub.expression;\n prop = self.property = sub.property;\n }\n }\n if (compressor.option(\"properties\") && compressor.option(\"side_effects\")\n && prop instanceof AST_Number && expr instanceof AST_Array) {\n var index = prop.getValue();\n var elements = expr.elements;\n var retValue = elements[index];\n FLATTEN: if (safe_to_flatten(retValue, compressor)) {\n var flatten = true;\n var values = [];\n for (var i = elements.length; --i > index;) {\n var value = elements[i].drop_side_effect_free(compressor);\n if (value) {\n values.unshift(value);\n if (flatten && value.has_side_effects(compressor)) flatten = false;\n }\n }\n if (retValue instanceof AST_Expansion) break FLATTEN;\n retValue = retValue instanceof AST_Hole ? make_node(AST_Undefined, retValue) : retValue;\n if (!flatten) values.unshift(retValue);\n while (--i >= 0) {\n var value = elements[i];\n if (value instanceof AST_Expansion) break FLATTEN;\n value = value.drop_side_effect_free(compressor);\n if (value) values.unshift(value);\n else index--;\n }\n if (flatten) {\n values.push(retValue);\n return make_sequence(self, values).optimize(compressor);\n } else return make_node(AST_Sub, self, {\n expression: make_node(AST_Array, expr, {\n elements: values\n }),\n property: make_node(AST_Number, prop, {\n value: index\n })\n });\n }\n }\n var ev = self.evaluate(compressor);\n if (ev !== self) {\n ev = make_node_from_constant(ev, self).optimize(compressor);\n return best_of(compressor, ev, self);\n }\n return self;\n});\n\nAST_Lambda.DEFMETHOD(\"contains_this\", function() {\n var result;\n var self = this;\n self.walk(new TreeWalker(function(node) {\n if (result) return true;\n if (node instanceof AST_This) return result = true;\n if (node !== self && node instanceof AST_Scope && !(node instanceof AST_Arrow)) return true;\n }));\n return result;\n});\n\nAST_PropAccess.DEFMETHOD(\"flatten_object\", function(key, compressor) {\n if (!compressor.option(\"properties\")) return;\n var arrows = compressor.option(\"unsafe_arrows\") && compressor.option(\"ecma\") >= 2015;\n var expr = this.expression;\n if (expr instanceof AST_Object) {\n var props = expr.properties;\n for (var i = props.length; --i >= 0;) {\n var prop = props[i];\n if (\"\" + (prop instanceof AST_ConciseMethod ? prop.key.name : prop.key) == key) {\n if (!props.every((prop) => {\n return prop instanceof AST_ObjectKeyVal\n || arrows && prop instanceof AST_ConciseMethod && !prop.is_generator;\n })) break;\n if (!safe_to_flatten(prop.value, compressor)) break;\n return make_node(AST_Sub, this, {\n expression: make_node(AST_Array, expr, {\n elements: props.map(function(prop) {\n var v = prop.value;\n if (v instanceof AST_Accessor) v = make_node(AST_Function, v, v);\n var k = prop.key;\n if (k instanceof AST_Node && !(k instanceof AST_SymbolMethod)) {\n return make_sequence(prop, [ k, v ]);\n }\n return v;\n })\n }),\n property: make_node(AST_Number, this, {\n value: i\n })\n });\n }\n }\n }\n});\n\ndef_optimize(AST_Dot, function(self, compressor) {\n if (self.property == \"arguments\" || self.property == \"caller\") {\n compressor.warn(\"Function.prototype.{prop} not supported [{file}:{line},{col}]\", {\n prop: self.property,\n file: self.start.file,\n line: self.start.line,\n col: self.start.col\n });\n }\n if (is_lhs(self, compressor.parent())) return self;\n if (compressor.option(\"unsafe_proto\")\n && self.expression instanceof AST_Dot\n && self.expression.property == \"prototype\") {\n var exp = self.expression.expression;\n if (is_undeclared_ref(exp)) switch (exp.name) {\n case \"Array\":\n self.expression = make_node(AST_Array, self.expression, {\n elements: []\n });\n break;\n case \"Function\":\n self.expression = make_node(AST_Function, self.expression, {\n argnames: [],\n body: []\n });\n break;\n case \"Number\":\n self.expression = make_node(AST_Number, self.expression, {\n value: 0\n });\n break;\n case \"Object\":\n self.expression = make_node(AST_Object, self.expression, {\n properties: []\n });\n break;\n case \"RegExp\":\n self.expression = make_node(AST_RegExp, self.expression, {\n value: { source: \"t\", flags: \"\" }\n });\n break;\n case \"String\":\n self.expression = make_node(AST_String, self.expression, {\n value: \"\"\n });\n break;\n }\n }\n var sub = self.flatten_object(self.property, compressor);\n if (sub) return sub.optimize(compressor);\n var ev = self.evaluate(compressor);\n if (ev !== self) {\n ev = make_node_from_constant(ev, self).optimize(compressor);\n return best_of(compressor, ev, self);\n }\n return self;\n});\n\nfunction literals_in_boolean_context(self, compressor) {\n if (compressor.in_boolean_context()) {\n return best_of(compressor, self, make_sequence(self, [\n self,\n make_node(AST_True, self)\n ]).optimize(compressor));\n }\n return self;\n}\n\nfunction inline_array_like_spread(self, compressor, elements) {\n for (var i = 0; i < elements.length; i++) {\n var el = elements[i];\n if (el instanceof AST_Expansion) {\n var expr = el.expression;\n if ( expr instanceof AST_Array) {\n elements.splice(i, 1, ...expr.elements);\n // Step back one, as the element at i is now new.\n i--;\n }\n // In array-like spread, spreading a non-iterable value is TypeError.\n // We therefore can’t optimize anything else, unlike with object spread.\n }\n }\n return self;\n}\n\ndef_optimize(AST_Array, function(self, compressor) {\n var optimized = literals_in_boolean_context(self, compressor);\n if (optimized !== self) {\n return optimized;\n }\n return inline_array_like_spread(self, compressor, self.elements);\n});\n\ndef_optimize(AST_Object, function(self, compressor) {\n var optimized = literals_in_boolean_context(self, compressor);\n if (optimized !== self) {\n return optimized;\n }\n var props = self.properties;\n for (var i = 0; i < props.length; i++) {\n var prop = props[i];\n if (prop instanceof AST_Expansion) {\n var expr = prop.expression;\n if (expr instanceof AST_Object) {\n props.splice.apply(props, [i, 1].concat(prop.expression.properties));\n // Step back one, as the property at i is now new.\n i--;\n } else if (expr instanceof AST_Constant\n && !(expr instanceof AST_String)) {\n // Unlike array-like spread, in object spread, spreading a\n // non-iterable value silently does nothing; it is thus safe\n // to remove. AST_String is the only iterable AST_Constant.\n props.splice(i, 1);\n }\n }\n }\n return self;\n});\n\ndef_optimize(AST_RegExp, literals_in_boolean_context);\n\ndef_optimize(AST_Return, function(self, compressor) {\n if (self.value && is_undefined(self.value, compressor)) {\n self.value = null;\n }\n return self;\n});\n\ndef_optimize(AST_Arrow, opt_AST_Lambda);\n\ndef_optimize(AST_Function, function(self, compressor) {\n self = opt_AST_Lambda(self, compressor);\n if (compressor.option(\"unsafe_arrows\")\n && compressor.option(\"ecma\") >= 2015\n && !self.name\n && !self.is_generator\n && !self.uses_arguments\n && !self.pinned()) {\n var has_special_symbol = false;\n self.walk(new TreeWalker(function(node) {\n if (has_special_symbol) return true;\n if (node instanceof AST_This) {\n has_special_symbol = true;\n return true;\n }\n }));\n if (!has_special_symbol) return make_node(AST_Arrow, self, self).optimize(compressor);\n }\n return self;\n});\n\ndef_optimize(AST_Class, function(self, compressor) {\n // HACK to avoid compress failure.\n // AST_Class is not really an AST_Scope/AST_Block as it lacks a body.\n return self;\n});\n\ndef_optimize(AST_Yield, function(self, compressor) {\n if (self.expression && !self.is_star && is_undefined(self.expression, compressor)) {\n self.expression = null;\n }\n return self;\n});\n\ndef_optimize(AST_TemplateString, function(self, compressor) {\n if (!compressor.option(\"evaluate\")\n || compressor.parent() instanceof AST_PrefixedTemplateString)\n return self;\n\n var segments = [];\n for (var i = 0; i < self.segments.length; i++) {\n var segment = self.segments[i];\n if (segment instanceof AST_Node) {\n var result = segment.evaluate(compressor);\n // Evaluate to constant value\n // Constant value shorter than ${segment}\n if (result !== segment && (result + \"\").length <= segment.print_to_string().length + \"${}\".length) {\n // There should always be a previous and next segment if segment is a node\n segments[segments.length - 1].value = segments[segments.length - 1].value + result + self.segments[++i].value;\n continue;\n }\n }\n segments.push(segment);\n }\n self.segments = segments;\n\n return segments.length == 1 ? make_node(AST_String, self, segments[0]) : self;\n});\n\ndef_optimize(AST_PrefixedTemplateString, function(self, compressor) {\n return self;\n});\n\n// [\"p\"]:1 ---> p:1\n// [42]:1 ---> 42:1\nfunction lift_key(self, compressor) {\n if (!compressor.option(\"computed_props\")) return self;\n // save a comparison in the typical case\n if (!(self.key instanceof AST_Constant)) return self;\n // whitelist acceptable props as not all AST_Constants are true constants\n if (self.key instanceof AST_String || self.key instanceof AST_Number) {\n if (self.key.value === \"__proto__\") return self;\n if (self.key.value == \"constructor\"\n && compressor.parent() instanceof AST_Class) return self;\n if (self instanceof AST_ObjectKeyVal) {\n self.key = self.key.value;\n } else {\n self.key = make_node(AST_SymbolMethod, self.key, {\n name: self.key.value\n });\n }\n }\n return self;\n}\n\ndef_optimize(AST_ObjectProperty, lift_key);\n\ndef_optimize(AST_ConciseMethod, function(self, compressor) {\n lift_key(self, compressor);\n // p(){return x;} ---> p:()=>x\n if (compressor.option(\"arrows\")\n && compressor.parent() instanceof AST_Object\n && !self.is_generator\n && !self.value.uses_arguments\n && !self.value.pinned()\n && self.value.body.length == 1\n && self.value.body[0] instanceof AST_Return\n && self.value.body[0].value\n && !self.value.contains_this()) {\n var arrow = make_node(AST_Arrow, self.value, self.value);\n arrow.async = self.async;\n arrow.is_generator = self.is_generator;\n return make_node(AST_ObjectKeyVal, self, {\n key: self.key instanceof AST_SymbolMethod ? self.key.name : self.key,\n value: arrow,\n quote: self.quote,\n });\n }\n return self;\n});\n\ndef_optimize(AST_ObjectKeyVal, function(self, compressor) {\n lift_key(self, compressor);\n // p:function(){} ---> p(){}\n // p:function*(){} ---> *p(){}\n // p:async function(){} ---> async p(){}\n // p:()=>{} ---> p(){}\n // p:async()=>{} ---> async p(){}\n var unsafe_methods = compressor.option(\"unsafe_methods\");\n if (unsafe_methods\n && compressor.option(\"ecma\") >= 2015\n && (!(unsafe_methods instanceof RegExp) || unsafe_methods.test(self.key + \"\"))) {\n var key = self.key;\n var value = self.value;\n var is_arrow_with_block = value instanceof AST_Arrow\n && Array.isArray(value.body)\n && !value.contains_this();\n if ((is_arrow_with_block || value instanceof AST_Function) && !value.name) {\n return make_node(AST_ConciseMethod, self, {\n async: value.async,\n is_generator: value.is_generator,\n key: key instanceof AST_Node ? key : make_node(AST_SymbolMethod, self, {\n name: key,\n }),\n value: make_node(AST_Accessor, value, value),\n quote: self.quote,\n });\n }\n }\n return self;\n});\n\ndef_optimize(AST_Destructuring, function(self, compressor) {\n if (compressor.option(\"pure_getters\") == true\n && compressor.option(\"unused\")\n && !self.is_array\n && Array.isArray(self.names)\n && !is_destructuring_export_decl(compressor)) {\n var keep = [];\n for (var i = 0; i < self.names.length; i++) {\n var elem = self.names[i];\n if (!(elem instanceof AST_ObjectKeyVal\n && typeof elem.key == \"string\"\n && elem.value instanceof AST_SymbolDeclaration\n && !should_retain(compressor, elem.value.definition()))) {\n keep.push(elem);\n }\n }\n if (keep.length != self.names.length) {\n self.names = keep;\n }\n }\n return self;\n\n function is_destructuring_export_decl(compressor) {\n var ancestors = [/^VarDef$/, /^(Const|Let|Var)$/, /^Export$/];\n for (var a = 0, p = 0, len = ancestors.length; a < len; p++) {\n var parent = compressor.parent(p);\n if (!parent) return false;\n if (a === 0 && parent.TYPE == \"Destructuring\") continue;\n if (!ancestors[a].test(parent.TYPE)) {\n return false;\n }\n a++;\n }\n return true;\n }\n\n function should_retain(compressor, def) {\n if (def.references.length) return true;\n if (!def.global) return false;\n if (compressor.toplevel.vars) {\n if (compressor.top_retain) {\n return compressor.top_retain(def);\n }\n return false;\n }\n return true;\n }\n});\n\nexport {\n Compressor,\n};\n","export var domprops = [\n \"$&\",\n \"$'\",\n \"$*\",\n \"$+\",\n \"$1\",\n \"$2\",\n \"$3\",\n \"$4\",\n \"$5\",\n \"$6\",\n \"$7\",\n \"$8\",\n \"$9\",\n \"$_\",\n \"$`\",\n \"$input\",\n \"@@iterator\",\n \"ABORT_ERR\",\n \"ACTIVE\",\n \"ACTIVE_ATTRIBUTES\",\n \"ACTIVE_TEXTURE\",\n \"ACTIVE_UNIFORMS\",\n \"ADDITION\",\n \"ALIASED_LINE_WIDTH_RANGE\",\n \"ALIASED_POINT_SIZE_RANGE\",\n \"ALLOW_KEYBOARD_INPUT\",\n \"ALLPASS\",\n \"ALPHA\",\n \"ALPHA_BITS\",\n \"ALT_MASK\",\n \"ALWAYS\",\n \"ANY_TYPE\",\n \"ANY_UNORDERED_NODE_TYPE\",\n \"ARRAY_BUFFER\",\n \"ARRAY_BUFFER_BINDING\",\n \"ATTACHED_SHADERS\",\n \"ATTRIBUTE_NODE\",\n \"AT_TARGET\",\n \"AddSearchProvider\",\n \"AnalyserNode\",\n \"AnimationEvent\",\n \"AnonXMLHttpRequest\",\n \"ApplicationCache\",\n \"ApplicationCacheErrorEvent\",\n \"Array\",\n \"ArrayBuffer\",\n \"Attr\",\n \"Audio\",\n \"AudioBuffer\",\n \"AudioBufferSourceNode\",\n \"AudioContext\",\n \"AudioDestinationNode\",\n \"AudioListener\",\n \"AudioNode\",\n \"AudioParam\",\n \"AudioProcessingEvent\",\n \"AudioStreamTrack\",\n \"AutocompleteErrorEvent\",\n \"BACK\",\n \"BAD_BOUNDARYPOINTS_ERR\",\n \"BANDPASS\",\n \"BLEND\",\n \"BLEND_COLOR\",\n \"BLEND_DST_ALPHA\",\n \"BLEND_DST_RGB\",\n \"BLEND_EQUATION\",\n \"BLEND_EQUATION_ALPHA\",\n \"BLEND_EQUATION_RGB\",\n \"BLEND_SRC_ALPHA\",\n \"BLEND_SRC_RGB\",\n \"BLUE_BITS\",\n \"BLUR\",\n \"BOOL\",\n \"BOOLEAN_TYPE\",\n \"BOOL_VEC2\",\n \"BOOL_VEC3\",\n \"BOOL_VEC4\",\n \"BOTH\",\n \"BROWSER_DEFAULT_WEBGL\",\n \"BUBBLING_PHASE\",\n \"BUFFER_SIZE\",\n \"BUFFER_USAGE\",\n \"BYTE\",\n \"BYTES_PER_ELEMENT\",\n \"BarProp\",\n \"BaseHref\",\n \"BatteryManager\",\n \"BeforeLoadEvent\",\n \"BeforeUnloadEvent\",\n \"BiquadFilterNode\",\n \"Blob\",\n \"BlobEvent\",\n \"Boolean\",\n \"CAPTURING_PHASE\",\n \"CCW\",\n \"CDATASection\",\n \"CDATA_SECTION_NODE\",\n \"CHANGE\",\n \"CHARSET_RULE\",\n \"CHECKING\",\n \"CLAMP_TO_EDGE\",\n \"CLICK\",\n \"CLOSED\",\n \"CLOSING\",\n \"COLOR_ATTACHMENT0\",\n \"COLOR_BUFFER_BIT\",\n \"COLOR_CLEAR_VALUE\",\n \"COLOR_WRITEMASK\",\n \"COMMENT_NODE\",\n \"COMPILE_STATUS\",\n \"COMPRESSED_RGBA_S3TC_DXT1_EXT\",\n \"COMPRESSED_RGBA_S3TC_DXT3_EXT\",\n \"COMPRESSED_RGBA_S3TC_DXT5_EXT\",\n \"COMPRESSED_RGB_S3TC_DXT1_EXT\",\n \"COMPRESSED_TEXTURE_FORMATS\",\n \"CONNECTING\",\n \"CONSTANT_ALPHA\",\n \"CONSTANT_COLOR\",\n \"CONSTRAINT_ERR\",\n \"CONTEXT_LOST_WEBGL\",\n \"CONTROL_MASK\",\n \"COUNTER_STYLE_RULE\",\n \"CSS\",\n \"CSS2Properties\",\n \"CSSCharsetRule\",\n \"CSSConditionRule\",\n \"CSSCounterStyleRule\",\n \"CSSFontFaceRule\",\n \"CSSFontFeatureValuesRule\",\n \"CSSGroupingRule\",\n \"CSSImportRule\",\n \"CSSKeyframeRule\",\n \"CSSKeyframesRule\",\n \"CSSMediaRule\",\n \"CSSMozDocumentRule\",\n \"CSSNameSpaceRule\",\n \"CSSPageRule\",\n \"CSSPrimitiveValue\",\n \"CSSRule\",\n \"CSSRuleList\",\n \"CSSStyleDeclaration\",\n \"CSSStyleRule\",\n \"CSSStyleSheet\",\n \"CSSSupportsRule\",\n \"CSSUnknownRule\",\n \"CSSValue\",\n \"CSSValueList\",\n \"CSSVariablesDeclaration\",\n \"CSSVariablesRule\",\n \"CSSViewportRule\",\n \"CSS_ATTR\",\n \"CSS_CM\",\n \"CSS_COUNTER\",\n \"CSS_CUSTOM\",\n \"CSS_DEG\",\n \"CSS_DIMENSION\",\n \"CSS_EMS\",\n \"CSS_EXS\",\n \"CSS_FILTER_BLUR\",\n \"CSS_FILTER_BRIGHTNESS\",\n \"CSS_FILTER_CONTRAST\",\n \"CSS_FILTER_CUSTOM\",\n \"CSS_FILTER_DROP_SHADOW\",\n \"CSS_FILTER_GRAYSCALE\",\n \"CSS_FILTER_HUE_ROTATE\",\n \"CSS_FILTER_INVERT\",\n \"CSS_FILTER_OPACITY\",\n \"CSS_FILTER_REFERENCE\",\n \"CSS_FILTER_SATURATE\",\n \"CSS_FILTER_SEPIA\",\n \"CSS_GRAD\",\n \"CSS_HZ\",\n \"CSS_IDENT\",\n \"CSS_IN\",\n \"CSS_INHERIT\",\n \"CSS_KHZ\",\n \"CSS_MATRIX\",\n \"CSS_MATRIX3D\",\n \"CSS_MM\",\n \"CSS_MS\",\n \"CSS_NUMBER\",\n \"CSS_PC\",\n \"CSS_PERCENTAGE\",\n \"CSS_PERSPECTIVE\",\n \"CSS_PRIMITIVE_VALUE\",\n \"CSS_PT\",\n \"CSS_PX\",\n \"CSS_RAD\",\n \"CSS_RECT\",\n \"CSS_RGBCOLOR\",\n \"CSS_ROTATE\",\n \"CSS_ROTATE3D\",\n \"CSS_ROTATEX\",\n \"CSS_ROTATEY\",\n \"CSS_ROTATEZ\",\n \"CSS_S\",\n \"CSS_SCALE\",\n \"CSS_SCALE3D\",\n \"CSS_SCALEX\",\n \"CSS_SCALEY\",\n \"CSS_SCALEZ\",\n \"CSS_SKEW\",\n \"CSS_SKEWX\",\n \"CSS_SKEWY\",\n \"CSS_STRING\",\n \"CSS_TRANSLATE\",\n \"CSS_TRANSLATE3D\",\n \"CSS_TRANSLATEX\",\n \"CSS_TRANSLATEY\",\n \"CSS_TRANSLATEZ\",\n \"CSS_UNKNOWN\",\n \"CSS_URI\",\n \"CSS_VALUE_LIST\",\n \"CSS_VH\",\n \"CSS_VMAX\",\n \"CSS_VMIN\",\n \"CSS_VW\",\n \"CULL_FACE\",\n \"CULL_FACE_MODE\",\n \"CURRENT_PROGRAM\",\n \"CURRENT_VERTEX_ATTRIB\",\n \"CUSTOM\",\n \"CW\",\n \"CanvasGradient\",\n \"CanvasPattern\",\n \"CanvasRenderingContext2D\",\n \"CaretPosition\",\n \"ChannelMergerNode\",\n \"ChannelSplitterNode\",\n \"CharacterData\",\n \"ClientRect\",\n \"ClientRectList\",\n \"Clipboard\",\n \"ClipboardEvent\",\n \"CloseEvent\",\n \"Collator\",\n \"CommandEvent\",\n \"Comment\",\n \"CompositionEvent\",\n \"Console\",\n \"Controllers\",\n \"ConvolverNode\",\n \"Counter\",\n \"Crypto\",\n \"CryptoKey\",\n \"CustomEvent\",\n \"DATABASE_ERR\",\n \"DATA_CLONE_ERR\",\n \"DATA_ERR\",\n \"DBLCLICK\",\n \"DECR\",\n \"DECR_WRAP\",\n \"DELETE_STATUS\",\n \"DEPTH_ATTACHMENT\",\n \"DEPTH_BITS\",\n \"DEPTH_BUFFER_BIT\",\n \"DEPTH_CLEAR_VALUE\",\n \"DEPTH_COMPONENT\",\n \"DEPTH_COMPONENT16\",\n \"DEPTH_FUNC\",\n \"DEPTH_RANGE\",\n \"DEPTH_STENCIL\",\n \"DEPTH_STENCIL_ATTACHMENT\",\n \"DEPTH_TEST\",\n \"DEPTH_WRITEMASK\",\n \"DIRECTION_DOWN\",\n \"DIRECTION_LEFT\",\n \"DIRECTION_RIGHT\",\n \"DIRECTION_UP\",\n \"DISABLED\",\n \"DISPATCH_REQUEST_ERR\",\n \"DITHER\",\n \"DOCUMENT_FRAGMENT_NODE\",\n \"DOCUMENT_NODE\",\n \"DOCUMENT_POSITION_CONTAINED_BY\",\n \"DOCUMENT_POSITION_CONTAINS\",\n \"DOCUMENT_POSITION_DISCONNECTED\",\n \"DOCUMENT_POSITION_FOLLOWING\",\n \"DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC\",\n \"DOCUMENT_POSITION_PRECEDING\",\n \"DOCUMENT_TYPE_NODE\",\n \"DOMCursor\",\n \"DOMError\",\n \"DOMException\",\n \"DOMImplementation\",\n \"DOMImplementationLS\",\n \"DOMMatrix\",\n \"DOMMatrixReadOnly\",\n \"DOMParser\",\n \"DOMPoint\",\n \"DOMPointReadOnly\",\n \"DOMQuad\",\n \"DOMRect\",\n \"DOMRectList\",\n \"DOMRectReadOnly\",\n \"DOMRequest\",\n \"DOMSTRING_SIZE_ERR\",\n \"DOMSettableTokenList\",\n \"DOMStringList\",\n \"DOMStringMap\",\n \"DOMTokenList\",\n \"DOMTransactionEvent\",\n \"DOM_DELTA_LINE\",\n \"DOM_DELTA_PAGE\",\n \"DOM_DELTA_PIXEL\",\n \"DOM_INPUT_METHOD_DROP\",\n \"DOM_INPUT_METHOD_HANDWRITING\",\n \"DOM_INPUT_METHOD_IME\",\n \"DOM_INPUT_METHOD_KEYBOARD\",\n \"DOM_INPUT_METHOD_MULTIMODAL\",\n \"DOM_INPUT_METHOD_OPTION\",\n \"DOM_INPUT_METHOD_PASTE\",\n \"DOM_INPUT_METHOD_SCRIPT\",\n \"DOM_INPUT_METHOD_UNKNOWN\",\n \"DOM_INPUT_METHOD_VOICE\",\n \"DOM_KEY_LOCATION_JOYSTICK\",\n \"DOM_KEY_LOCATION_LEFT\",\n \"DOM_KEY_LOCATION_MOBILE\",\n \"DOM_KEY_LOCATION_NUMPAD\",\n \"DOM_KEY_LOCATION_RIGHT\",\n \"DOM_KEY_LOCATION_STANDARD\",\n \"DOM_VK_0\",\n \"DOM_VK_1\",\n \"DOM_VK_2\",\n \"DOM_VK_3\",\n \"DOM_VK_4\",\n \"DOM_VK_5\",\n \"DOM_VK_6\",\n \"DOM_VK_7\",\n \"DOM_VK_8\",\n \"DOM_VK_9\",\n \"DOM_VK_A\",\n \"DOM_VK_ACCEPT\",\n \"DOM_VK_ADD\",\n \"DOM_VK_ALT\",\n \"DOM_VK_ALTGR\",\n \"DOM_VK_AMPERSAND\",\n \"DOM_VK_ASTERISK\",\n \"DOM_VK_AT\",\n \"DOM_VK_ATTN\",\n \"DOM_VK_B\",\n \"DOM_VK_BACKSPACE\",\n \"DOM_VK_BACK_QUOTE\",\n \"DOM_VK_BACK_SLASH\",\n \"DOM_VK_BACK_SPACE\",\n \"DOM_VK_C\",\n \"DOM_VK_CANCEL\",\n \"DOM_VK_CAPS_LOCK\",\n \"DOM_VK_CIRCUMFLEX\",\n \"DOM_VK_CLEAR\",\n \"DOM_VK_CLOSE_BRACKET\",\n \"DOM_VK_CLOSE_CURLY_BRACKET\",\n \"DOM_VK_CLOSE_PAREN\",\n \"DOM_VK_COLON\",\n \"DOM_VK_COMMA\",\n \"DOM_VK_CONTEXT_MENU\",\n \"DOM_VK_CONTROL\",\n \"DOM_VK_CONVERT\",\n \"DOM_VK_CRSEL\",\n \"DOM_VK_CTRL\",\n \"DOM_VK_D\",\n \"DOM_VK_DECIMAL\",\n \"DOM_VK_DELETE\",\n \"DOM_VK_DIVIDE\",\n \"DOM_VK_DOLLAR\",\n \"DOM_VK_DOUBLE_QUOTE\",\n \"DOM_VK_DOWN\",\n \"DOM_VK_E\",\n \"DOM_VK_EISU\",\n \"DOM_VK_END\",\n \"DOM_VK_ENTER\",\n \"DOM_VK_EQUALS\",\n \"DOM_VK_EREOF\",\n \"DOM_VK_ESCAPE\",\n \"DOM_VK_EXCLAMATION\",\n \"DOM_VK_EXECUTE\",\n \"DOM_VK_EXSEL\",\n \"DOM_VK_F\",\n \"DOM_VK_F1\",\n \"DOM_VK_F10\",\n \"DOM_VK_F11\",\n \"DOM_VK_F12\",\n \"DOM_VK_F13\",\n \"DOM_VK_F14\",\n \"DOM_VK_F15\",\n \"DOM_VK_F16\",\n \"DOM_VK_F17\",\n \"DOM_VK_F18\",\n \"DOM_VK_F19\",\n \"DOM_VK_F2\",\n \"DOM_VK_F20\",\n \"DOM_VK_F21\",\n \"DOM_VK_F22\",\n \"DOM_VK_F23\",\n \"DOM_VK_F24\",\n \"DOM_VK_F25\",\n \"DOM_VK_F26\",\n \"DOM_VK_F27\",\n \"DOM_VK_F28\",\n \"DOM_VK_F29\",\n \"DOM_VK_F3\",\n \"DOM_VK_F30\",\n \"DOM_VK_F31\",\n \"DOM_VK_F32\",\n \"DOM_VK_F33\",\n \"DOM_VK_F34\",\n \"DOM_VK_F35\",\n \"DOM_VK_F36\",\n \"DOM_VK_F4\",\n \"DOM_VK_F5\",\n \"DOM_VK_F6\",\n \"DOM_VK_F7\",\n \"DOM_VK_F8\",\n \"DOM_VK_F9\",\n \"DOM_VK_FINAL\",\n \"DOM_VK_FRONT\",\n \"DOM_VK_G\",\n \"DOM_VK_GREATER_THAN\",\n \"DOM_VK_H\",\n \"DOM_VK_HANGUL\",\n \"DOM_VK_HANJA\",\n \"DOM_VK_HASH\",\n \"DOM_VK_HELP\",\n \"DOM_VK_HK_TOGGLE\",\n \"DOM_VK_HOME\",\n \"DOM_VK_HYPHEN_MINUS\",\n \"DOM_VK_I\",\n \"DOM_VK_INSERT\",\n \"DOM_VK_J\",\n \"DOM_VK_JUNJA\",\n \"DOM_VK_K\",\n \"DOM_VK_KANA\",\n \"DOM_VK_KANJI\",\n \"DOM_VK_L\",\n \"DOM_VK_LEFT\",\n \"DOM_VK_LEFT_TAB\",\n \"DOM_VK_LESS_THAN\",\n \"DOM_VK_M\",\n \"DOM_VK_META\",\n \"DOM_VK_MODECHANGE\",\n \"DOM_VK_MULTIPLY\",\n \"DOM_VK_N\",\n \"DOM_VK_NONCONVERT\",\n \"DOM_VK_NUMPAD0\",\n \"DOM_VK_NUMPAD1\",\n \"DOM_VK_NUMPAD2\",\n \"DOM_VK_NUMPAD3\",\n \"DOM_VK_NUMPAD4\",\n \"DOM_VK_NUMPAD5\",\n \"DOM_VK_NUMPAD6\",\n \"DOM_VK_NUMPAD7\",\n \"DOM_VK_NUMPAD8\",\n \"DOM_VK_NUMPAD9\",\n \"DOM_VK_NUM_LOCK\",\n \"DOM_VK_O\",\n \"DOM_VK_OEM_1\",\n \"DOM_VK_OEM_102\",\n \"DOM_VK_OEM_2\",\n \"DOM_VK_OEM_3\",\n \"DOM_VK_OEM_4\",\n \"DOM_VK_OEM_5\",\n \"DOM_VK_OEM_6\",\n \"DOM_VK_OEM_7\",\n \"DOM_VK_OEM_8\",\n \"DOM_VK_OEM_COMMA\",\n \"DOM_VK_OEM_MINUS\",\n \"DOM_VK_OEM_PERIOD\",\n \"DOM_VK_OEM_PLUS\",\n \"DOM_VK_OPEN_BRACKET\",\n \"DOM_VK_OPEN_CURLY_BRACKET\",\n \"DOM_VK_OPEN_PAREN\",\n \"DOM_VK_P\",\n \"DOM_VK_PA1\",\n \"DOM_VK_PAGEDOWN\",\n \"DOM_VK_PAGEUP\",\n \"DOM_VK_PAGE_DOWN\",\n \"DOM_VK_PAGE_UP\",\n \"DOM_VK_PAUSE\",\n \"DOM_VK_PERCENT\",\n \"DOM_VK_PERIOD\",\n \"DOM_VK_PIPE\",\n \"DOM_VK_PLAY\",\n \"DOM_VK_PLUS\",\n \"DOM_VK_PRINT\",\n \"DOM_VK_PRINTSCREEN\",\n \"DOM_VK_PROCESSKEY\",\n \"DOM_VK_PROPERITES\",\n \"DOM_VK_Q\",\n \"DOM_VK_QUESTION_MARK\",\n \"DOM_VK_QUOTE\",\n \"DOM_VK_R\",\n \"DOM_VK_REDO\",\n \"DOM_VK_RETURN\",\n \"DOM_VK_RIGHT\",\n \"DOM_VK_S\",\n \"DOM_VK_SCROLL_LOCK\",\n \"DOM_VK_SELECT\",\n \"DOM_VK_SEMICOLON\",\n \"DOM_VK_SEPARATOR\",\n \"DOM_VK_SHIFT\",\n \"DOM_VK_SLASH\",\n \"DOM_VK_SLEEP\",\n \"DOM_VK_SPACE\",\n \"DOM_VK_SUBTRACT\",\n \"DOM_VK_T\",\n \"DOM_VK_TAB\",\n \"DOM_VK_TILDE\",\n \"DOM_VK_U\",\n \"DOM_VK_UNDERSCORE\",\n \"DOM_VK_UNDO\",\n \"DOM_VK_UNICODE\",\n \"DOM_VK_UP\",\n \"DOM_VK_V\",\n \"DOM_VK_VOLUME_DOWN\",\n \"DOM_VK_VOLUME_MUTE\",\n \"DOM_VK_VOLUME_UP\",\n \"DOM_VK_W\",\n \"DOM_VK_WIN\",\n \"DOM_VK_WINDOW\",\n \"DOM_VK_WIN_ICO_00\",\n \"DOM_VK_WIN_ICO_CLEAR\",\n \"DOM_VK_WIN_ICO_HELP\",\n \"DOM_VK_WIN_OEM_ATTN\",\n \"DOM_VK_WIN_OEM_AUTO\",\n \"DOM_VK_WIN_OEM_BACKTAB\",\n \"DOM_VK_WIN_OEM_CLEAR\",\n \"DOM_VK_WIN_OEM_COPY\",\n \"DOM_VK_WIN_OEM_CUSEL\",\n \"DOM_VK_WIN_OEM_ENLW\",\n \"DOM_VK_WIN_OEM_FINISH\",\n \"DOM_VK_WIN_OEM_FJ_JISHO\",\n \"DOM_VK_WIN_OEM_FJ_LOYA\",\n \"DOM_VK_WIN_OEM_FJ_MASSHOU\",\n \"DOM_VK_WIN_OEM_FJ_ROYA\",\n \"DOM_VK_WIN_OEM_FJ_TOUROKU\",\n \"DOM_VK_WIN_OEM_JUMP\",\n \"DOM_VK_WIN_OEM_PA1\",\n \"DOM_VK_WIN_OEM_PA2\",\n \"DOM_VK_WIN_OEM_PA3\",\n \"DOM_VK_WIN_OEM_RESET\",\n \"DOM_VK_WIN_OEM_WSCTRL\",\n \"DOM_VK_X\",\n \"DOM_VK_XF86XK_ADD_FAVORITE\",\n \"DOM_VK_XF86XK_APPLICATION_LEFT\",\n \"DOM_VK_XF86XK_APPLICATION_RIGHT\",\n \"DOM_VK_XF86XK_AUDIO_CYCLE_TRACK\",\n \"DOM_VK_XF86XK_AUDIO_FORWARD\",\n \"DOM_VK_XF86XK_AUDIO_LOWER_VOLUME\",\n \"DOM_VK_XF86XK_AUDIO_MEDIA\",\n \"DOM_VK_XF86XK_AUDIO_MUTE\",\n \"DOM_VK_XF86XK_AUDIO_NEXT\",\n \"DOM_VK_XF86XK_AUDIO_PAUSE\",\n \"DOM_VK_XF86XK_AUDIO_PLAY\",\n \"DOM_VK_XF86XK_AUDIO_PREV\",\n \"DOM_VK_XF86XK_AUDIO_RAISE_VOLUME\",\n \"DOM_VK_XF86XK_AUDIO_RANDOM_PLAY\",\n \"DOM_VK_XF86XK_AUDIO_RECORD\",\n \"DOM_VK_XF86XK_AUDIO_REPEAT\",\n \"DOM_VK_XF86XK_AUDIO_REWIND\",\n \"DOM_VK_XF86XK_AUDIO_STOP\",\n \"DOM_VK_XF86XK_AWAY\",\n \"DOM_VK_XF86XK_BACK\",\n \"DOM_VK_XF86XK_BACK_FORWARD\",\n \"DOM_VK_XF86XK_BATTERY\",\n \"DOM_VK_XF86XK_BLUE\",\n \"DOM_VK_XF86XK_BLUETOOTH\",\n \"DOM_VK_XF86XK_BOOK\",\n \"DOM_VK_XF86XK_BRIGHTNESS_ADJUST\",\n \"DOM_VK_XF86XK_CALCULATOR\",\n \"DOM_VK_XF86XK_CALENDAR\",\n \"DOM_VK_XF86XK_CD\",\n \"DOM_VK_XF86XK_CLOSE\",\n \"DOM_VK_XF86XK_COMMUNITY\",\n \"DOM_VK_XF86XK_CONTRAST_ADJUST\",\n \"DOM_VK_XF86XK_COPY\",\n \"DOM_VK_XF86XK_CUT\",\n \"DOM_VK_XF86XK_CYCLE_ANGLE\",\n \"DOM_VK_XF86XK_DISPLAY\",\n \"DOM_VK_XF86XK_DOCUMENTS\",\n \"DOM_VK_XF86XK_DOS\",\n \"DOM_VK_XF86XK_EJECT\",\n \"DOM_VK_XF86XK_EXCEL\",\n \"DOM_VK_XF86XK_EXPLORER\",\n \"DOM_VK_XF86XK_FAVORITES\",\n \"DOM_VK_XF86XK_FINANCE\",\n \"DOM_VK_XF86XK_FORWARD\",\n \"DOM_VK_XF86XK_FRAME_BACK\",\n \"DOM_VK_XF86XK_FRAME_FORWARD\",\n \"DOM_VK_XF86XK_GAME\",\n \"DOM_VK_XF86XK_GO\",\n \"DOM_VK_XF86XK_GREEN\",\n \"DOM_VK_XF86XK_HIBERNATE\",\n \"DOM_VK_XF86XK_HISTORY\",\n \"DOM_VK_XF86XK_HOME_PAGE\",\n \"DOM_VK_XF86XK_HOT_LINKS\",\n \"DOM_VK_XF86XK_I_TOUCH\",\n \"DOM_VK_XF86XK_KBD_BRIGHTNESS_DOWN\",\n \"DOM_VK_XF86XK_KBD_BRIGHTNESS_UP\",\n \"DOM_VK_XF86XK_KBD_LIGHT_ON_OFF\",\n \"DOM_VK_XF86XK_LAUNCH0\",\n \"DOM_VK_XF86XK_LAUNCH1\",\n \"DOM_VK_XF86XK_LAUNCH2\",\n \"DOM_VK_XF86XK_LAUNCH3\",\n \"DOM_VK_XF86XK_LAUNCH4\",\n \"DOM_VK_XF86XK_LAUNCH5\",\n \"DOM_VK_XF86XK_LAUNCH6\",\n \"DOM_VK_XF86XK_LAUNCH7\",\n \"DOM_VK_XF86XK_LAUNCH8\",\n \"DOM_VK_XF86XK_LAUNCH9\",\n \"DOM_VK_XF86XK_LAUNCH_A\",\n \"DOM_VK_XF86XK_LAUNCH_B\",\n \"DOM_VK_XF86XK_LAUNCH_C\",\n \"DOM_VK_XF86XK_LAUNCH_D\",\n \"DOM_VK_XF86XK_LAUNCH_E\",\n \"DOM_VK_XF86XK_LAUNCH_F\",\n \"DOM_VK_XF86XK_LIGHT_BULB\",\n \"DOM_VK_XF86XK_LOG_OFF\",\n \"DOM_VK_XF86XK_MAIL\",\n \"DOM_VK_XF86XK_MAIL_FORWARD\",\n \"DOM_VK_XF86XK_MARKET\",\n \"DOM_VK_XF86XK_MEETING\",\n \"DOM_VK_XF86XK_MEMO\",\n \"DOM_VK_XF86XK_MENU_KB\",\n \"DOM_VK_XF86XK_MENU_PB\",\n \"DOM_VK_XF86XK_MESSENGER\",\n \"DOM_VK_XF86XK_MON_BRIGHTNESS_DOWN\",\n \"DOM_VK_XF86XK_MON_BRIGHTNESS_UP\",\n \"DOM_VK_XF86XK_MUSIC\",\n \"DOM_VK_XF86XK_MY_COMPUTER\",\n \"DOM_VK_XF86XK_MY_SITES\",\n \"DOM_VK_XF86XK_NEW\",\n \"DOM_VK_XF86XK_NEWS\",\n \"DOM_VK_XF86XK_OFFICE_HOME\",\n \"DOM_VK_XF86XK_OPEN\",\n \"DOM_VK_XF86XK_OPEN_URL\",\n \"DOM_VK_XF86XK_OPTION\",\n \"DOM_VK_XF86XK_PASTE\",\n \"DOM_VK_XF86XK_PHONE\",\n \"DOM_VK_XF86XK_PICTURES\",\n \"DOM_VK_XF86XK_POWER_DOWN\",\n \"DOM_VK_XF86XK_POWER_OFF\",\n \"DOM_VK_XF86XK_RED\",\n \"DOM_VK_XF86XK_REFRESH\",\n \"DOM_VK_XF86XK_RELOAD\",\n \"DOM_VK_XF86XK_REPLY\",\n \"DOM_VK_XF86XK_ROCKER_DOWN\",\n \"DOM_VK_XF86XK_ROCKER_ENTER\",\n \"DOM_VK_XF86XK_ROCKER_UP\",\n \"DOM_VK_XF86XK_ROTATE_WINDOWS\",\n \"DOM_VK_XF86XK_ROTATION_KB\",\n \"DOM_VK_XF86XK_ROTATION_PB\",\n \"DOM_VK_XF86XK_SAVE\",\n \"DOM_VK_XF86XK_SCREEN_SAVER\",\n \"DOM_VK_XF86XK_SCROLL_CLICK\",\n \"DOM_VK_XF86XK_SCROLL_DOWN\",\n \"DOM_VK_XF86XK_SCROLL_UP\",\n \"DOM_VK_XF86XK_SEARCH\",\n \"DOM_VK_XF86XK_SEND\",\n \"DOM_VK_XF86XK_SHOP\",\n \"DOM_VK_XF86XK_SPELL\",\n \"DOM_VK_XF86XK_SPLIT_SCREEN\",\n \"DOM_VK_XF86XK_STANDBY\",\n \"DOM_VK_XF86XK_START\",\n \"DOM_VK_XF86XK_STOP\",\n \"DOM_VK_XF86XK_SUBTITLE\",\n \"DOM_VK_XF86XK_SUPPORT\",\n \"DOM_VK_XF86XK_SUSPEND\",\n \"DOM_VK_XF86XK_TASK_PANE\",\n \"DOM_VK_XF86XK_TERMINAL\",\n \"DOM_VK_XF86XK_TIME\",\n \"DOM_VK_XF86XK_TOOLS\",\n \"DOM_VK_XF86XK_TOP_MENU\",\n \"DOM_VK_XF86XK_TO_DO_LIST\",\n \"DOM_VK_XF86XK_TRAVEL\",\n \"DOM_VK_XF86XK_USER1KB\",\n \"DOM_VK_XF86XK_USER2KB\",\n \"DOM_VK_XF86XK_USER_PB\",\n \"DOM_VK_XF86XK_UWB\",\n \"DOM_VK_XF86XK_VENDOR_HOME\",\n \"DOM_VK_XF86XK_VIDEO\",\n \"DOM_VK_XF86XK_VIEW\",\n \"DOM_VK_XF86XK_WAKE_UP\",\n \"DOM_VK_XF86XK_WEB_CAM\",\n \"DOM_VK_XF86XK_WHEEL_BUTTON\",\n \"DOM_VK_XF86XK_WLAN\",\n \"DOM_VK_XF86XK_WORD\",\n \"DOM_VK_XF86XK_WWW\",\n \"DOM_VK_XF86XK_XFER\",\n \"DOM_VK_XF86XK_YELLOW\",\n \"DOM_VK_XF86XK_ZOOM_IN\",\n \"DOM_VK_XF86XK_ZOOM_OUT\",\n \"DOM_VK_Y\",\n \"DOM_VK_Z\",\n \"DOM_VK_ZOOM\",\n \"DONE\",\n \"DONT_CARE\",\n \"DOWNLOADING\",\n \"DRAGDROP\",\n \"DST_ALPHA\",\n \"DST_COLOR\",\n \"DYNAMIC_DRAW\",\n \"DataChannel\",\n \"DataTransfer\",\n \"DataTransferItem\",\n \"DataTransferItemList\",\n \"DataView\",\n \"Date\",\n \"DateTimeFormat\",\n \"DelayNode\",\n \"DesktopNotification\",\n \"DesktopNotificationCenter\",\n \"DeviceLightEvent\",\n \"DeviceMotionEvent\",\n \"DeviceOrientationEvent\",\n \"DeviceProximityEvent\",\n \"DeviceStorage\",\n \"DeviceStorageChangeEvent\",\n \"Document\",\n \"DocumentFragment\",\n \"DocumentType\",\n \"DragEvent\",\n \"DynamicsCompressorNode\",\n \"E\",\n \"ELEMENT_ARRAY_BUFFER\",\n \"ELEMENT_ARRAY_BUFFER_BINDING\",\n \"ELEMENT_NODE\",\n \"EMPTY\",\n \"ENCODING_ERR\",\n \"ENDED\",\n \"END_TO_END\",\n \"END_TO_START\",\n \"ENTITY_NODE\",\n \"ENTITY_REFERENCE_NODE\",\n \"EPSILON\",\n \"EQUAL\",\n \"EQUALPOWER\",\n \"ERROR\",\n \"EXPONENTIAL_DISTANCE\",\n \"Element\",\n \"ElementQuery\",\n \"Entity\",\n \"EntityReference\",\n \"Error\",\n \"ErrorEvent\",\n \"EvalError\",\n \"Event\",\n \"EventException\",\n \"EventSource\",\n \"EventTarget\",\n \"External\",\n \"FASTEST\",\n \"FIDOSDK\",\n \"FILTER_ACCEPT\",\n \"FILTER_INTERRUPT\",\n \"FILTER_REJECT\",\n \"FILTER_SKIP\",\n \"FINISHED_STATE\",\n \"FIRST_ORDERED_NODE_TYPE\",\n \"FLOAT\",\n \"FLOAT_MAT2\",\n \"FLOAT_MAT3\",\n \"FLOAT_MAT4\",\n \"FLOAT_VEC2\",\n \"FLOAT_VEC3\",\n \"FLOAT_VEC4\",\n \"FOCUS\",\n \"FONT_FACE_RULE\",\n \"FONT_FEATURE_VALUES_RULE\",\n \"FRAGMENT_SHADER\",\n \"FRAGMENT_SHADER_DERIVATIVE_HINT_OES\",\n \"FRAMEBUFFER\",\n \"FRAMEBUFFER_ATTACHMENT_OBJECT_NAME\",\n \"FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE\",\n \"FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE\",\n \"FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL\",\n \"FRAMEBUFFER_BINDING\",\n \"FRAMEBUFFER_COMPLETE\",\n \"FRAMEBUFFER_INCOMPLETE_ATTACHMENT\",\n \"FRAMEBUFFER_INCOMPLETE_DIMENSIONS\",\n \"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT\",\n \"FRAMEBUFFER_UNSUPPORTED\",\n \"FRONT\",\n \"FRONT_AND_BACK\",\n \"FRONT_FACE\",\n \"FUNC_ADD\",\n \"FUNC_REVERSE_SUBTRACT\",\n \"FUNC_SUBTRACT\",\n \"Feed\",\n \"FeedEntry\",\n \"File\",\n \"FileError\",\n \"FileList\",\n \"FileReader\",\n \"FindInPage\",\n \"Float32Array\",\n \"Float64Array\",\n \"FocusEvent\",\n \"FontFace\",\n \"FormData\",\n \"Function\",\n \"GENERATE_MIPMAP_HINT\",\n \"GEQUAL\",\n \"GREATER\",\n \"GREEN_BITS\",\n \"GainNode\",\n \"Gamepad\",\n \"GamepadButton\",\n \"GamepadEvent\",\n \"GestureEvent\",\n \"HAVE_CURRENT_DATA\",\n \"HAVE_ENOUGH_DATA\",\n \"HAVE_FUTURE_DATA\",\n \"HAVE_METADATA\",\n \"HAVE_NOTHING\",\n \"HEADERS_RECEIVED\",\n \"HIDDEN\",\n \"HIERARCHY_REQUEST_ERR\",\n \"HIGHPASS\",\n \"HIGHSHELF\",\n \"HIGH_FLOAT\",\n \"HIGH_INT\",\n \"HORIZONTAL\",\n \"HORIZONTAL_AXIS\",\n \"HRTF\",\n \"HTMLAllCollection\",\n \"HTMLAnchorElement\",\n \"HTMLAppletElement\",\n \"HTMLAreaElement\",\n \"HTMLAudioElement\",\n \"HTMLBRElement\",\n \"HTMLBaseElement\",\n \"HTMLBaseFontElement\",\n \"HTMLBlockquoteElement\",\n \"HTMLBodyElement\",\n \"HTMLButtonElement\",\n \"HTMLCanvasElement\",\n \"HTMLCollection\",\n \"HTMLCommandElement\",\n \"HTMLContentElement\",\n \"HTMLDListElement\",\n \"HTMLDataElement\",\n \"HTMLDataListElement\",\n \"HTMLDetailsElement\",\n \"HTMLDialogElement\",\n \"HTMLDirectoryElement\",\n \"HTMLDivElement\",\n \"HTMLDocument\",\n \"HTMLElement\",\n \"HTMLEmbedElement\",\n \"HTMLFieldSetElement\",\n \"HTMLFontElement\",\n \"HTMLFormControlsCollection\",\n \"HTMLFormElement\",\n \"HTMLFrameElement\",\n \"HTMLFrameSetElement\",\n \"HTMLHRElement\",\n \"HTMLHeadElement\",\n \"HTMLHeadingElement\",\n \"HTMLHtmlElement\",\n \"HTMLIFrameElement\",\n \"HTMLImageElement\",\n \"HTMLInputElement\",\n \"HTMLIsIndexElement\",\n \"HTMLKeygenElement\",\n \"HTMLLIElement\",\n \"HTMLLabelElement\",\n \"HTMLLegendElement\",\n \"HTMLLinkElement\",\n \"HTMLMapElement\",\n \"HTMLMarqueeElement\",\n \"HTMLMediaElement\",\n \"HTMLMenuElement\",\n \"HTMLMenuItemElement\",\n \"HTMLMetaElement\",\n \"HTMLMeterElement\",\n \"HTMLModElement\",\n \"HTMLOListElement\",\n \"HTMLObjectElement\",\n \"HTMLOptGroupElement\",\n \"HTMLOptionElement\",\n \"HTMLOptionsCollection\",\n \"HTMLOutputElement\",\n \"HTMLParagraphElement\",\n \"HTMLParamElement\",\n \"HTMLPictureElement\",\n \"HTMLPreElement\",\n \"HTMLProgressElement\",\n \"HTMLPropertiesCollection\",\n \"HTMLQuoteElement\",\n \"HTMLScriptElement\",\n \"HTMLSelectElement\",\n \"HTMLShadowElement\",\n \"HTMLSourceElement\",\n \"HTMLSpanElement\",\n \"HTMLStyleElement\",\n \"HTMLTableCaptionElement\",\n \"HTMLTableCellElement\",\n \"HTMLTableColElement\",\n \"HTMLTableElement\",\n \"HTMLTableRowElement\",\n \"HTMLTableSectionElement\",\n \"HTMLTemplateElement\",\n \"HTMLTextAreaElement\",\n \"HTMLTimeElement\",\n \"HTMLTitleElement\",\n \"HTMLTrackElement\",\n \"HTMLUListElement\",\n \"HTMLUnknownElement\",\n \"HTMLVideoElement\",\n \"HashChangeEvent\",\n \"Headers\",\n \"History\",\n \"ICE_CHECKING\",\n \"ICE_CLOSED\",\n \"ICE_COMPLETED\",\n \"ICE_CONNECTED\",\n \"ICE_FAILED\",\n \"ICE_GATHERING\",\n \"ICE_WAITING\",\n \"IDBCursor\",\n \"IDBCursorWithValue\",\n \"IDBDatabase\",\n \"IDBDatabaseException\",\n \"IDBFactory\",\n \"IDBFileHandle\",\n \"IDBFileRequest\",\n \"IDBIndex\",\n \"IDBKeyRange\",\n \"IDBMutableFile\",\n \"IDBObjectStore\",\n \"IDBOpenDBRequest\",\n \"IDBRequest\",\n \"IDBTransaction\",\n \"IDBVersionChangeEvent\",\n \"IDLE\",\n \"IMPLEMENTATION_COLOR_READ_FORMAT\",\n \"IMPLEMENTATION_COLOR_READ_TYPE\",\n \"IMPORT_RULE\",\n \"INCR\",\n \"INCR_WRAP\",\n \"INDEX_SIZE_ERR\",\n \"INT\",\n \"INT_VEC2\",\n \"INT_VEC3\",\n \"INT_VEC4\",\n \"INUSE_ATTRIBUTE_ERR\",\n \"INVALID_ACCESS_ERR\",\n \"INVALID_CHARACTER_ERR\",\n \"INVALID_ENUM\",\n \"INVALID_EXPRESSION_ERR\",\n \"INVALID_FRAMEBUFFER_OPERATION\",\n \"INVALID_MODIFICATION_ERR\",\n \"INVALID_NODE_TYPE_ERR\",\n \"INVALID_OPERATION\",\n \"INVALID_STATE_ERR\",\n \"INVALID_VALUE\",\n \"INVERSE_DISTANCE\",\n \"INVERT\",\n \"IceCandidate\",\n \"Image\",\n \"ImageBitmap\",\n \"ImageData\",\n \"Infinity\",\n \"InputEvent\",\n \"InputMethodContext\",\n \"InstallTrigger\",\n \"Int16Array\",\n \"Int32Array\",\n \"Int8Array\",\n \"Intent\",\n \"InternalError\",\n \"Intl\",\n \"IsSearchProviderInstalled\",\n \"Iterator\",\n \"JSON\",\n \"KEEP\",\n \"KEYDOWN\",\n \"KEYFRAMES_RULE\",\n \"KEYFRAME_RULE\",\n \"KEYPRESS\",\n \"KEYUP\",\n \"KeyEvent\",\n \"KeyboardEvent\",\n \"LENGTHADJUST_SPACING\",\n \"LENGTHADJUST_SPACINGANDGLYPHS\",\n \"LENGTHADJUST_UNKNOWN\",\n \"LEQUAL\",\n \"LESS\",\n \"LINEAR\",\n \"LINEAR_DISTANCE\",\n \"LINEAR_MIPMAP_LINEAR\",\n \"LINEAR_MIPMAP_NEAREST\",\n \"LINES\",\n \"LINE_LOOP\",\n \"LINE_STRIP\",\n \"LINE_WIDTH\",\n \"LINK_STATUS\",\n \"LIVE\",\n \"LN10\",\n \"LN2\",\n \"LOADED\",\n \"LOADING\",\n \"LOG10E\",\n \"LOG2E\",\n \"LOWPASS\",\n \"LOWSHELF\",\n \"LOW_FLOAT\",\n \"LOW_INT\",\n \"LSException\",\n \"LSParserFilter\",\n \"LUMINANCE\",\n \"LUMINANCE_ALPHA\",\n \"LocalMediaStream\",\n \"Location\",\n \"MAX_COMBINED_TEXTURE_IMAGE_UNITS\",\n \"MAX_CUBE_MAP_TEXTURE_SIZE\",\n \"MAX_FRAGMENT_UNIFORM_VECTORS\",\n \"MAX_RENDERBUFFER_SIZE\",\n \"MAX_SAFE_INTEGER\",\n \"MAX_TEXTURE_IMAGE_UNITS\",\n \"MAX_TEXTURE_MAX_ANISOTROPY_EXT\",\n \"MAX_TEXTURE_SIZE\",\n \"MAX_VALUE\",\n \"MAX_VARYING_VECTORS\",\n \"MAX_VERTEX_ATTRIBS\",\n \"MAX_VERTEX_TEXTURE_IMAGE_UNITS\",\n \"MAX_VERTEX_UNIFORM_VECTORS\",\n \"MAX_VIEWPORT_DIMS\",\n \"MEDIA_ERR_ABORTED\",\n \"MEDIA_ERR_DECODE\",\n \"MEDIA_ERR_ENCRYPTED\",\n \"MEDIA_ERR_NETWORK\",\n \"MEDIA_ERR_SRC_NOT_SUPPORTED\",\n \"MEDIA_KEYERR_CLIENT\",\n \"MEDIA_KEYERR_DOMAIN\",\n \"MEDIA_KEYERR_HARDWARECHANGE\",\n \"MEDIA_KEYERR_OUTPUT\",\n \"MEDIA_KEYERR_SERVICE\",\n \"MEDIA_KEYERR_UNKNOWN\",\n \"MEDIA_RULE\",\n \"MEDIUM_FLOAT\",\n \"MEDIUM_INT\",\n \"META_MASK\",\n \"MIN_SAFE_INTEGER\",\n \"MIN_VALUE\",\n \"MIRRORED_REPEAT\",\n \"MODE_ASYNCHRONOUS\",\n \"MODE_SYNCHRONOUS\",\n \"MODIFICATION\",\n \"MOUSEDOWN\",\n \"MOUSEDRAG\",\n \"MOUSEMOVE\",\n \"MOUSEOUT\",\n \"MOUSEOVER\",\n \"MOUSEUP\",\n \"MOZ_KEYFRAMES_RULE\",\n \"MOZ_KEYFRAME_RULE\",\n \"MOZ_SOURCE_CURSOR\",\n \"MOZ_SOURCE_ERASER\",\n \"MOZ_SOURCE_KEYBOARD\",\n \"MOZ_SOURCE_MOUSE\",\n \"MOZ_SOURCE_PEN\",\n \"MOZ_SOURCE_TOUCH\",\n \"MOZ_SOURCE_UNKNOWN\",\n \"MSGESTURE_FLAG_BEGIN\",\n \"MSGESTURE_FLAG_CANCEL\",\n \"MSGESTURE_FLAG_END\",\n \"MSGESTURE_FLAG_INERTIA\",\n \"MSGESTURE_FLAG_NONE\",\n \"MSPOINTER_TYPE_MOUSE\",\n \"MSPOINTER_TYPE_PEN\",\n \"MSPOINTER_TYPE_TOUCH\",\n \"MS_ASYNC_CALLBACK_STATUS_ASSIGN_DELEGATE\",\n \"MS_ASYNC_CALLBACK_STATUS_CANCEL\",\n \"MS_ASYNC_CALLBACK_STATUS_CHOOSEANY\",\n \"MS_ASYNC_CALLBACK_STATUS_ERROR\",\n \"MS_ASYNC_CALLBACK_STATUS_JOIN\",\n \"MS_ASYNC_OP_STATUS_CANCELED\",\n \"MS_ASYNC_OP_STATUS_ERROR\",\n \"MS_ASYNC_OP_STATUS_SUCCESS\",\n \"MS_MANIPULATION_STATE_ACTIVE\",\n \"MS_MANIPULATION_STATE_CANCELLED\",\n \"MS_MANIPULATION_STATE_COMMITTED\",\n \"MS_MANIPULATION_STATE_DRAGGING\",\n \"MS_MANIPULATION_STATE_INERTIA\",\n \"MS_MANIPULATION_STATE_PRESELECT\",\n \"MS_MANIPULATION_STATE_SELECTING\",\n \"MS_MANIPULATION_STATE_STOPPED\",\n \"MS_MEDIA_ERR_ENCRYPTED\",\n \"MS_MEDIA_KEYERR_CLIENT\",\n \"MS_MEDIA_KEYERR_DOMAIN\",\n \"MS_MEDIA_KEYERR_HARDWARECHANGE\",\n \"MS_MEDIA_KEYERR_OUTPUT\",\n \"MS_MEDIA_KEYERR_SERVICE\",\n \"MS_MEDIA_KEYERR_UNKNOWN\",\n \"Map\",\n \"Math\",\n \"MediaController\",\n \"MediaDevices\",\n \"MediaElementAudioSourceNode\",\n \"MediaEncryptedEvent\",\n \"MediaError\",\n \"MediaKeyError\",\n \"MediaKeyEvent\",\n \"MediaKeyMessageEvent\",\n \"MediaKeyNeededEvent\",\n \"MediaKeySession\",\n \"MediaKeyStatusMap\",\n \"MediaKeySystemAccess\",\n \"MediaKeys\",\n \"MediaList\",\n \"MediaQueryList\",\n \"MediaQueryListEvent\",\n \"MediaRecorder\",\n \"MediaSource\",\n \"MediaStream\",\n \"MediaStreamAudioDestinationNode\",\n \"MediaStreamAudioSourceNode\",\n \"MediaStreamEvent\",\n \"MediaStreamTrack\",\n \"MediaStreamTrackEvent\",\n \"MessageChannel\",\n \"MessageEvent\",\n \"MessagePort\",\n \"Methods\",\n \"MimeType\",\n \"MimeTypeArray\",\n \"MouseEvent\",\n \"MouseScrollEvent\",\n \"MozAnimation\",\n \"MozAnimationDelay\",\n \"MozAnimationDirection\",\n \"MozAnimationDuration\",\n \"MozAnimationFillMode\",\n \"MozAnimationIterationCount\",\n \"MozAnimationName\",\n \"MozAnimationPlayState\",\n \"MozAnimationTimingFunction\",\n \"MozAppearance\",\n \"MozBackfaceVisibility\",\n \"MozBinding\",\n \"MozBorderBottomColors\",\n \"MozBorderEnd\",\n \"MozBorderEndColor\",\n \"MozBorderEndStyle\",\n \"MozBorderEndWidth\",\n \"MozBorderImage\",\n \"MozBorderLeftColors\",\n \"MozBorderRightColors\",\n \"MozBorderStart\",\n \"MozBorderStartColor\",\n \"MozBorderStartStyle\",\n \"MozBorderStartWidth\",\n \"MozBorderTopColors\",\n \"MozBoxAlign\",\n \"MozBoxDirection\",\n \"MozBoxFlex\",\n \"MozBoxOrdinalGroup\",\n \"MozBoxOrient\",\n \"MozBoxPack\",\n \"MozBoxSizing\",\n \"MozCSSKeyframeRule\",\n \"MozCSSKeyframesRule\",\n \"MozColumnCount\",\n \"MozColumnFill\",\n \"MozColumnGap\",\n \"MozColumnRule\",\n \"MozColumnRuleColor\",\n \"MozColumnRuleStyle\",\n \"MozColumnRuleWidth\",\n \"MozColumnWidth\",\n \"MozColumns\",\n \"MozContactChangeEvent\",\n \"MozFloatEdge\",\n \"MozFontFeatureSettings\",\n \"MozFontLanguageOverride\",\n \"MozForceBrokenImageIcon\",\n \"MozHyphens\",\n \"MozImageRegion\",\n \"MozMarginEnd\",\n \"MozMarginStart\",\n \"MozMmsEvent\",\n \"MozMmsMessage\",\n \"MozMobileMessageThread\",\n \"MozOSXFontSmoothing\",\n \"MozOrient\",\n \"MozOutlineRadius\",\n \"MozOutlineRadiusBottomleft\",\n \"MozOutlineRadiusBottomright\",\n \"MozOutlineRadiusTopleft\",\n \"MozOutlineRadiusTopright\",\n \"MozPaddingEnd\",\n \"MozPaddingStart\",\n \"MozPerspective\",\n \"MozPerspectiveOrigin\",\n \"MozPowerManager\",\n \"MozSettingsEvent\",\n \"MozSmsEvent\",\n \"MozSmsMessage\",\n \"MozStackSizing\",\n \"MozTabSize\",\n \"MozTextAlignLast\",\n \"MozTextDecorationColor\",\n \"MozTextDecorationLine\",\n \"MozTextDecorationStyle\",\n \"MozTextSizeAdjust\",\n \"MozTransform\",\n \"MozTransformOrigin\",\n \"MozTransformStyle\",\n \"MozTransition\",\n \"MozTransitionDelay\",\n \"MozTransitionDuration\",\n \"MozTransitionProperty\",\n \"MozTransitionTimingFunction\",\n \"MozUserFocus\",\n \"MozUserInput\",\n \"MozUserModify\",\n \"MozUserSelect\",\n \"MozWindowDragging\",\n \"MozWindowShadow\",\n \"MutationEvent\",\n \"MutationObserver\",\n \"MutationRecord\",\n \"NAMESPACE_ERR\",\n \"NAMESPACE_RULE\",\n \"NEAREST\",\n \"NEAREST_MIPMAP_LINEAR\",\n \"NEAREST_MIPMAP_NEAREST\",\n \"NEGATIVE_INFINITY\",\n \"NETWORK_EMPTY\",\n \"NETWORK_ERR\",\n \"NETWORK_IDLE\",\n \"NETWORK_LOADED\",\n \"NETWORK_LOADING\",\n \"NETWORK_NO_SOURCE\",\n \"NEVER\",\n \"NEW\",\n \"NEXT\",\n \"NEXT_NO_DUPLICATE\",\n \"NICEST\",\n \"NODE_AFTER\",\n \"NODE_BEFORE\",\n \"NODE_BEFORE_AND_AFTER\",\n \"NODE_INSIDE\",\n \"NONE\",\n \"NON_TRANSIENT_ERR\",\n \"NOTATION_NODE\",\n \"NOTCH\",\n \"NOTEQUAL\",\n \"NOT_ALLOWED_ERR\",\n \"NOT_FOUND_ERR\",\n \"NOT_READABLE_ERR\",\n \"NOT_SUPPORTED_ERR\",\n \"NO_DATA_ALLOWED_ERR\",\n \"NO_ERR\",\n \"NO_ERROR\",\n \"NO_MODIFICATION_ALLOWED_ERR\",\n \"NUMBER_TYPE\",\n \"NUM_COMPRESSED_TEXTURE_FORMATS\",\n \"NaN\",\n \"NamedNodeMap\",\n \"Navigator\",\n \"NearbyLinks\",\n \"NetworkInformation\",\n \"Node\",\n \"NodeFilter\",\n \"NodeIterator\",\n \"NodeList\",\n \"Notation\",\n \"Notification\",\n \"NotifyPaintEvent\",\n \"Number\",\n \"NumberFormat\",\n \"OBSOLETE\",\n \"ONE\",\n \"ONE_MINUS_CONSTANT_ALPHA\",\n \"ONE_MINUS_CONSTANT_COLOR\",\n \"ONE_MINUS_DST_ALPHA\",\n \"ONE_MINUS_DST_COLOR\",\n \"ONE_MINUS_SRC_ALPHA\",\n \"ONE_MINUS_SRC_COLOR\",\n \"OPEN\",\n \"OPENED\",\n \"OPENING\",\n \"ORDERED_NODE_ITERATOR_TYPE\",\n \"ORDERED_NODE_SNAPSHOT_TYPE\",\n \"OUT_OF_MEMORY\",\n \"Object\",\n \"OfflineAudioCompletionEvent\",\n \"OfflineAudioContext\",\n \"OfflineResourceList\",\n \"Option\",\n \"OscillatorNode\",\n \"OverflowEvent\",\n \"PACK_ALIGNMENT\",\n \"PAGE_RULE\",\n \"PARSE_ERR\",\n \"PATHSEG_ARC_ABS\",\n \"PATHSEG_ARC_REL\",\n \"PATHSEG_CLOSEPATH\",\n \"PATHSEG_CURVETO_CUBIC_ABS\",\n \"PATHSEG_CURVETO_CUBIC_REL\",\n \"PATHSEG_CURVETO_CUBIC_SMOOTH_ABS\",\n \"PATHSEG_CURVETO_CUBIC_SMOOTH_REL\",\n \"PATHSEG_CURVETO_QUADRATIC_ABS\",\n \"PATHSEG_CURVETO_QUADRATIC_REL\",\n \"PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS\",\n \"PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL\",\n \"PATHSEG_LINETO_ABS\",\n \"PATHSEG_LINETO_HORIZONTAL_ABS\",\n \"PATHSEG_LINETO_HORIZONTAL_REL\",\n \"PATHSEG_LINETO_REL\",\n \"PATHSEG_LINETO_VERTICAL_ABS\",\n \"PATHSEG_LINETO_VERTICAL_REL\",\n \"PATHSEG_MOVETO_ABS\",\n \"PATHSEG_MOVETO_REL\",\n \"PATHSEG_UNKNOWN\",\n \"PATH_EXISTS_ERR\",\n \"PEAKING\",\n \"PERMISSION_DENIED\",\n \"PERSISTENT\",\n \"PI\",\n \"PLAYING_STATE\",\n \"POINTS\",\n \"POLYGON_OFFSET_FACTOR\",\n \"POLYGON_OFFSET_FILL\",\n \"POLYGON_OFFSET_UNITS\",\n \"POSITION_UNAVAILABLE\",\n \"POSITIVE_INFINITY\",\n \"PREV\",\n \"PREV_NO_DUPLICATE\",\n \"PROCESSING_INSTRUCTION_NODE\",\n \"PageChangeEvent\",\n \"PageTransitionEvent\",\n \"PaintRequest\",\n \"PaintRequestList\",\n \"PannerNode\",\n \"Path2D\",\n \"Performance\",\n \"PerformanceEntry\",\n \"PerformanceMark\",\n \"PerformanceMeasure\",\n \"PerformanceNavigation\",\n \"PerformanceResourceTiming\",\n \"PerformanceTiming\",\n \"PeriodicWave\",\n \"Plugin\",\n \"PluginArray\",\n \"PopStateEvent\",\n \"PopupBlockedEvent\",\n \"ProcessingInstruction\",\n \"ProgressEvent\",\n \"Promise\",\n \"PropertyNodeList\",\n \"Proxy\",\n \"PushManager\",\n \"PushSubscription\",\n \"Q\",\n \"QUOTA_ERR\",\n \"QUOTA_EXCEEDED_ERR\",\n \"QueryInterface\",\n \"READ_ONLY\",\n \"READ_ONLY_ERR\",\n \"READ_WRITE\",\n \"RED_BITS\",\n \"REMOVAL\",\n \"RENDERBUFFER\",\n \"RENDERBUFFER_ALPHA_SIZE\",\n \"RENDERBUFFER_BINDING\",\n \"RENDERBUFFER_BLUE_SIZE\",\n \"RENDERBUFFER_DEPTH_SIZE\",\n \"RENDERBUFFER_GREEN_SIZE\",\n \"RENDERBUFFER_HEIGHT\",\n \"RENDERBUFFER_INTERNAL_FORMAT\",\n \"RENDERBUFFER_RED_SIZE\",\n \"RENDERBUFFER_STENCIL_SIZE\",\n \"RENDERBUFFER_WIDTH\",\n \"RENDERER\",\n \"RENDERING_INTENT_ABSOLUTE_COLORIMETRIC\",\n \"RENDERING_INTENT_AUTO\",\n \"RENDERING_INTENT_PERCEPTUAL\",\n \"RENDERING_INTENT_RELATIVE_COLORIMETRIC\",\n \"RENDERING_INTENT_SATURATION\",\n \"RENDERING_INTENT_UNKNOWN\",\n \"REPEAT\",\n \"REPLACE\",\n \"RGB\",\n \"RGB565\",\n \"RGB5_A1\",\n \"RGBA\",\n \"RGBA4\",\n \"RGBColor\",\n \"ROTATION_CLOCKWISE\",\n \"ROTATION_COUNTERCLOCKWISE\",\n \"RTCDataChannelEvent\",\n \"RTCIceCandidate\",\n \"RTCPeerConnectionIceEvent\",\n \"RTCRtpReceiver\",\n \"RTCRtpSender\",\n \"RTCSessionDescription\",\n \"RTCStatsReport\",\n \"RadioNodeList\",\n \"Range\",\n \"RangeError\",\n \"RangeException\",\n \"RecordErrorEvent\",\n \"Rect\",\n \"ReferenceError\",\n \"RegExp\",\n \"Request\",\n \"Response\",\n \"SAMPLER_2D\",\n \"SAMPLER_CUBE\",\n \"SAMPLES\",\n \"SAMPLE_ALPHA_TO_COVERAGE\",\n \"SAMPLE_BUFFERS\",\n \"SAMPLE_COVERAGE\",\n \"SAMPLE_COVERAGE_INVERT\",\n \"SAMPLE_COVERAGE_VALUE\",\n \"SAWTOOTH\",\n \"SCHEDULED_STATE\",\n \"SCISSOR_BOX\",\n \"SCISSOR_TEST\",\n \"SCROLL_PAGE_DOWN\",\n \"SCROLL_PAGE_UP\",\n \"SDP_ANSWER\",\n \"SDP_OFFER\",\n \"SDP_PRANSWER\",\n \"SECURITY_ERR\",\n \"SELECT\",\n \"SERIALIZE_ERR\",\n \"SEVERITY_ERROR\",\n \"SEVERITY_FATAL_ERROR\",\n \"SEVERITY_WARNING\",\n \"SHADER_COMPILER\",\n \"SHADER_TYPE\",\n \"SHADING_LANGUAGE_VERSION\",\n \"SHIFT_MASK\",\n \"SHORT\",\n \"SHOWING\",\n \"SHOW_ALL\",\n \"SHOW_ATTRIBUTE\",\n \"SHOW_CDATA_SECTION\",\n \"SHOW_COMMENT\",\n \"SHOW_DOCUMENT\",\n \"SHOW_DOCUMENT_FRAGMENT\",\n \"SHOW_DOCUMENT_TYPE\",\n \"SHOW_ELEMENT\",\n \"SHOW_ENTITY\",\n \"SHOW_ENTITY_REFERENCE\",\n \"SHOW_NOTATION\",\n \"SHOW_PROCESSING_INSTRUCTION\",\n \"SHOW_TEXT\",\n \"SINE\",\n \"SOUNDFIELD\",\n \"SQLException\",\n \"SQRT1_2\",\n \"SQRT2\",\n \"SQUARE\",\n \"SRC_ALPHA\",\n \"SRC_ALPHA_SATURATE\",\n \"SRC_COLOR\",\n \"START_TO_END\",\n \"START_TO_START\",\n \"STATIC_DRAW\",\n \"STENCIL_ATTACHMENT\",\n \"STENCIL_BACK_FAIL\",\n \"STENCIL_BACK_FUNC\",\n \"STENCIL_BACK_PASS_DEPTH_FAIL\",\n \"STENCIL_BACK_PASS_DEPTH_PASS\",\n \"STENCIL_BACK_REF\",\n \"STENCIL_BACK_VALUE_MASK\",\n \"STENCIL_BACK_WRITEMASK\",\n \"STENCIL_BITS\",\n \"STENCIL_BUFFER_BIT\",\n \"STENCIL_CLEAR_VALUE\",\n \"STENCIL_FAIL\",\n \"STENCIL_FUNC\",\n \"STENCIL_INDEX\",\n \"STENCIL_INDEX8\",\n \"STENCIL_PASS_DEPTH_FAIL\",\n \"STENCIL_PASS_DEPTH_PASS\",\n \"STENCIL_REF\",\n \"STENCIL_TEST\",\n \"STENCIL_VALUE_MASK\",\n \"STENCIL_WRITEMASK\",\n \"STREAM_DRAW\",\n \"STRING_TYPE\",\n \"STYLE_RULE\",\n \"SUBPIXEL_BITS\",\n \"SUPPORTS_RULE\",\n \"SVGAElement\",\n \"SVGAltGlyphDefElement\",\n \"SVGAltGlyphElement\",\n \"SVGAltGlyphItemElement\",\n \"SVGAngle\",\n \"SVGAnimateColorElement\",\n \"SVGAnimateElement\",\n \"SVGAnimateMotionElement\",\n \"SVGAnimateTransformElement\",\n \"SVGAnimatedAngle\",\n \"SVGAnimatedBoolean\",\n \"SVGAnimatedEnumeration\",\n \"SVGAnimatedInteger\",\n \"SVGAnimatedLength\",\n \"SVGAnimatedLengthList\",\n \"SVGAnimatedNumber\",\n \"SVGAnimatedNumberList\",\n \"SVGAnimatedPreserveAspectRatio\",\n \"SVGAnimatedRect\",\n \"SVGAnimatedString\",\n \"SVGAnimatedTransformList\",\n \"SVGAnimationElement\",\n \"SVGCircleElement\",\n \"SVGClipPathElement\",\n \"SVGColor\",\n \"SVGComponentTransferFunctionElement\",\n \"SVGCursorElement\",\n \"SVGDefsElement\",\n \"SVGDescElement\",\n \"SVGDiscardElement\",\n \"SVGDocument\",\n \"SVGElement\",\n \"SVGElementInstance\",\n \"SVGElementInstanceList\",\n \"SVGEllipseElement\",\n \"SVGException\",\n \"SVGFEBlendElement\",\n \"SVGFEColorMatrixElement\",\n \"SVGFEComponentTransferElement\",\n \"SVGFECompositeElement\",\n \"SVGFEConvolveMatrixElement\",\n \"SVGFEDiffuseLightingElement\",\n \"SVGFEDisplacementMapElement\",\n \"SVGFEDistantLightElement\",\n \"SVGFEDropShadowElement\",\n \"SVGFEFloodElement\",\n \"SVGFEFuncAElement\",\n \"SVGFEFuncBElement\",\n \"SVGFEFuncGElement\",\n \"SVGFEFuncRElement\",\n \"SVGFEGaussianBlurElement\",\n \"SVGFEImageElement\",\n \"SVGFEMergeElement\",\n \"SVGFEMergeNodeElement\",\n \"SVGFEMorphologyElement\",\n \"SVGFEOffsetElement\",\n \"SVGFEPointLightElement\",\n \"SVGFESpecularLightingElement\",\n \"SVGFESpotLightElement\",\n \"SVGFETileElement\",\n \"SVGFETurbulenceElement\",\n \"SVGFilterElement\",\n \"SVGFontElement\",\n \"SVGFontFaceElement\",\n \"SVGFontFaceFormatElement\",\n \"SVGFontFaceNameElement\",\n \"SVGFontFaceSrcElement\",\n \"SVGFontFaceUriElement\",\n \"SVGForeignObjectElement\",\n \"SVGGElement\",\n \"SVGGeometryElement\",\n \"SVGGlyphElement\",\n \"SVGGlyphRefElement\",\n \"SVGGradientElement\",\n \"SVGGraphicsElement\",\n \"SVGHKernElement\",\n \"SVGImageElement\",\n \"SVGLength\",\n \"SVGLengthList\",\n \"SVGLineElement\",\n \"SVGLinearGradientElement\",\n \"SVGMPathElement\",\n \"SVGMarkerElement\",\n \"SVGMaskElement\",\n \"SVGMatrix\",\n \"SVGMetadataElement\",\n \"SVGMissingGlyphElement\",\n \"SVGNumber\",\n \"SVGNumberList\",\n \"SVGPaint\",\n \"SVGPathElement\",\n \"SVGPathSeg\",\n \"SVGPathSegArcAbs\",\n \"SVGPathSegArcRel\",\n \"SVGPathSegClosePath\",\n \"SVGPathSegCurvetoCubicAbs\",\n \"SVGPathSegCurvetoCubicRel\",\n \"SVGPathSegCurvetoCubicSmoothAbs\",\n \"SVGPathSegCurvetoCubicSmoothRel\",\n \"SVGPathSegCurvetoQuadraticAbs\",\n \"SVGPathSegCurvetoQuadraticRel\",\n \"SVGPathSegCurvetoQuadraticSmoothAbs\",\n \"SVGPathSegCurvetoQuadraticSmoothRel\",\n \"SVGPathSegLinetoAbs\",\n \"SVGPathSegLinetoHorizontalAbs\",\n \"SVGPathSegLinetoHorizontalRel\",\n \"SVGPathSegLinetoRel\",\n \"SVGPathSegLinetoVerticalAbs\",\n \"SVGPathSegLinetoVerticalRel\",\n \"SVGPathSegList\",\n \"SVGPathSegMovetoAbs\",\n \"SVGPathSegMovetoRel\",\n \"SVGPatternElement\",\n \"SVGPoint\",\n \"SVGPointList\",\n \"SVGPolygonElement\",\n \"SVGPolylineElement\",\n \"SVGPreserveAspectRatio\",\n \"SVGRadialGradientElement\",\n \"SVGRect\",\n \"SVGRectElement\",\n \"SVGRenderingIntent\",\n \"SVGSVGElement\",\n \"SVGScriptElement\",\n \"SVGSetElement\",\n \"SVGStopElement\",\n \"SVGStringList\",\n \"SVGStyleElement\",\n \"SVGSwitchElement\",\n \"SVGSymbolElement\",\n \"SVGTRefElement\",\n \"SVGTSpanElement\",\n \"SVGTextContentElement\",\n \"SVGTextElement\",\n \"SVGTextPathElement\",\n \"SVGTextPositioningElement\",\n \"SVGTitleElement\",\n \"SVGTransform\",\n \"SVGTransformList\",\n \"SVGUnitTypes\",\n \"SVGUseElement\",\n \"SVGVKernElement\",\n \"SVGViewElement\",\n \"SVGViewSpec\",\n \"SVGZoomAndPan\",\n \"SVGZoomEvent\",\n \"SVG_ANGLETYPE_DEG\",\n \"SVG_ANGLETYPE_GRAD\",\n \"SVG_ANGLETYPE_RAD\",\n \"SVG_ANGLETYPE_UNKNOWN\",\n \"SVG_ANGLETYPE_UNSPECIFIED\",\n \"SVG_CHANNEL_A\",\n \"SVG_CHANNEL_B\",\n \"SVG_CHANNEL_G\",\n \"SVG_CHANNEL_R\",\n \"SVG_CHANNEL_UNKNOWN\",\n \"SVG_COLORTYPE_CURRENTCOLOR\",\n \"SVG_COLORTYPE_RGBCOLOR\",\n \"SVG_COLORTYPE_RGBCOLOR_ICCCOLOR\",\n \"SVG_COLORTYPE_UNKNOWN\",\n \"SVG_EDGEMODE_DUPLICATE\",\n \"SVG_EDGEMODE_NONE\",\n \"SVG_EDGEMODE_UNKNOWN\",\n \"SVG_EDGEMODE_WRAP\",\n \"SVG_FEBLEND_MODE_COLOR\",\n \"SVG_FEBLEND_MODE_COLOR_BURN\",\n \"SVG_FEBLEND_MODE_COLOR_DODGE\",\n \"SVG_FEBLEND_MODE_DARKEN\",\n \"SVG_FEBLEND_MODE_DIFFERENCE\",\n \"SVG_FEBLEND_MODE_EXCLUSION\",\n \"SVG_FEBLEND_MODE_HARD_LIGHT\",\n \"SVG_FEBLEND_MODE_HUE\",\n \"SVG_FEBLEND_MODE_LIGHTEN\",\n \"SVG_FEBLEND_MODE_LUMINOSITY\",\n \"SVG_FEBLEND_MODE_MULTIPLY\",\n \"SVG_FEBLEND_MODE_NORMAL\",\n \"SVG_FEBLEND_MODE_OVERLAY\",\n \"SVG_FEBLEND_MODE_SATURATION\",\n \"SVG_FEBLEND_MODE_SCREEN\",\n \"SVG_FEBLEND_MODE_SOFT_LIGHT\",\n \"SVG_FEBLEND_MODE_UNKNOWN\",\n \"SVG_FECOLORMATRIX_TYPE_HUEROTATE\",\n \"SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA\",\n \"SVG_FECOLORMATRIX_TYPE_MATRIX\",\n \"SVG_FECOLORMATRIX_TYPE_SATURATE\",\n \"SVG_FECOLORMATRIX_TYPE_UNKNOWN\",\n \"SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE\",\n \"SVG_FECOMPONENTTRANSFER_TYPE_GAMMA\",\n \"SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY\",\n \"SVG_FECOMPONENTTRANSFER_TYPE_LINEAR\",\n \"SVG_FECOMPONENTTRANSFER_TYPE_TABLE\",\n \"SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN\",\n \"SVG_FECOMPOSITE_OPERATOR_ARITHMETIC\",\n \"SVG_FECOMPOSITE_OPERATOR_ATOP\",\n \"SVG_FECOMPOSITE_OPERATOR_IN\",\n \"SVG_FECOMPOSITE_OPERATOR_OUT\",\n \"SVG_FECOMPOSITE_OPERATOR_OVER\",\n \"SVG_FECOMPOSITE_OPERATOR_UNKNOWN\",\n \"SVG_FECOMPOSITE_OPERATOR_XOR\",\n \"SVG_INVALID_VALUE_ERR\",\n \"SVG_LENGTHTYPE_CM\",\n \"SVG_LENGTHTYPE_EMS\",\n \"SVG_LENGTHTYPE_EXS\",\n \"SVG_LENGTHTYPE_IN\",\n \"SVG_LENGTHTYPE_MM\",\n \"SVG_LENGTHTYPE_NUMBER\",\n \"SVG_LENGTHTYPE_PC\",\n \"SVG_LENGTHTYPE_PERCENTAGE\",\n \"SVG_LENGTHTYPE_PT\",\n \"SVG_LENGTHTYPE_PX\",\n \"SVG_LENGTHTYPE_UNKNOWN\",\n \"SVG_MARKERUNITS_STROKEWIDTH\",\n \"SVG_MARKERUNITS_UNKNOWN\",\n \"SVG_MARKERUNITS_USERSPACEONUSE\",\n \"SVG_MARKER_ORIENT_ANGLE\",\n \"SVG_MARKER_ORIENT_AUTO\",\n \"SVG_MARKER_ORIENT_UNKNOWN\",\n \"SVG_MASKTYPE_ALPHA\",\n \"SVG_MASKTYPE_LUMINANCE\",\n \"SVG_MATRIX_NOT_INVERTABLE\",\n \"SVG_MEETORSLICE_MEET\",\n \"SVG_MEETORSLICE_SLICE\",\n \"SVG_MEETORSLICE_UNKNOWN\",\n \"SVG_MORPHOLOGY_OPERATOR_DILATE\",\n \"SVG_MORPHOLOGY_OPERATOR_ERODE\",\n \"SVG_MORPHOLOGY_OPERATOR_UNKNOWN\",\n \"SVG_PAINTTYPE_CURRENTCOLOR\",\n \"SVG_PAINTTYPE_NONE\",\n \"SVG_PAINTTYPE_RGBCOLOR\",\n \"SVG_PAINTTYPE_RGBCOLOR_ICCCOLOR\",\n \"SVG_PAINTTYPE_UNKNOWN\",\n \"SVG_PAINTTYPE_URI\",\n \"SVG_PAINTTYPE_URI_CURRENTCOLOR\",\n \"SVG_PAINTTYPE_URI_NONE\",\n \"SVG_PAINTTYPE_URI_RGBCOLOR\",\n \"SVG_PAINTTYPE_URI_RGBCOLOR_ICCCOLOR\",\n \"SVG_PRESERVEASPECTRATIO_NONE\",\n \"SVG_PRESERVEASPECTRATIO_UNKNOWN\",\n \"SVG_PRESERVEASPECTRATIO_XMAXYMAX\",\n \"SVG_PRESERVEASPECTRATIO_XMAXYMID\",\n \"SVG_PRESERVEASPECTRATIO_XMAXYMIN\",\n \"SVG_PRESERVEASPECTRATIO_XMIDYMAX\",\n \"SVG_PRESERVEASPECTRATIO_XMIDYMID\",\n \"SVG_PRESERVEASPECTRATIO_XMIDYMIN\",\n \"SVG_PRESERVEASPECTRATIO_XMINYMAX\",\n \"SVG_PRESERVEASPECTRATIO_XMINYMID\",\n \"SVG_PRESERVEASPECTRATIO_XMINYMIN\",\n \"SVG_SPREADMETHOD_PAD\",\n \"SVG_SPREADMETHOD_REFLECT\",\n \"SVG_SPREADMETHOD_REPEAT\",\n \"SVG_SPREADMETHOD_UNKNOWN\",\n \"SVG_STITCHTYPE_NOSTITCH\",\n \"SVG_STITCHTYPE_STITCH\",\n \"SVG_STITCHTYPE_UNKNOWN\",\n \"SVG_TRANSFORM_MATRIX\",\n \"SVG_TRANSFORM_ROTATE\",\n \"SVG_TRANSFORM_SCALE\",\n \"SVG_TRANSFORM_SKEWX\",\n \"SVG_TRANSFORM_SKEWY\",\n \"SVG_TRANSFORM_TRANSLATE\",\n \"SVG_TRANSFORM_UNKNOWN\",\n \"SVG_TURBULENCE_TYPE_FRACTALNOISE\",\n \"SVG_TURBULENCE_TYPE_TURBULENCE\",\n \"SVG_TURBULENCE_TYPE_UNKNOWN\",\n \"SVG_UNIT_TYPE_OBJECTBOUNDINGBOX\",\n \"SVG_UNIT_TYPE_UNKNOWN\",\n \"SVG_UNIT_TYPE_USERSPACEONUSE\",\n \"SVG_WRONG_TYPE_ERR\",\n \"SVG_ZOOMANDPAN_DISABLE\",\n \"SVG_ZOOMANDPAN_MAGNIFY\",\n \"SVG_ZOOMANDPAN_UNKNOWN\",\n \"SYNTAX_ERR\",\n \"SavedPages\",\n \"Screen\",\n \"ScreenOrientation\",\n \"Script\",\n \"ScriptProcessorNode\",\n \"ScrollAreaEvent\",\n \"SecurityPolicyViolationEvent\",\n \"Selection\",\n \"ServiceWorker\",\n \"ServiceWorkerContainer\",\n \"ServiceWorkerRegistration\",\n \"SessionDescription\",\n \"Set\",\n \"ShadowRoot\",\n \"SharedWorker\",\n \"SimpleGestureEvent\",\n \"SpeechSynthesisEvent\",\n \"SpeechSynthesisUtterance\",\n \"StopIteration\",\n \"Storage\",\n \"StorageEvent\",\n \"String\",\n \"StyleSheet\",\n \"StyleSheetList\",\n \"SubtleCrypto\",\n \"Symbol\",\n \"SyntaxError\",\n \"TEMPORARY\",\n \"TEXTPATH_METHODTYPE_ALIGN\",\n \"TEXTPATH_METHODTYPE_STRETCH\",\n \"TEXTPATH_METHODTYPE_UNKNOWN\",\n \"TEXTPATH_SPACINGTYPE_AUTO\",\n \"TEXTPATH_SPACINGTYPE_EXACT\",\n \"TEXTPATH_SPACINGTYPE_UNKNOWN\",\n \"TEXTURE\",\n \"TEXTURE0\",\n \"TEXTURE1\",\n \"TEXTURE10\",\n \"TEXTURE11\",\n \"TEXTURE12\",\n \"TEXTURE13\",\n \"TEXTURE14\",\n \"TEXTURE15\",\n \"TEXTURE16\",\n \"TEXTURE17\",\n \"TEXTURE18\",\n \"TEXTURE19\",\n \"TEXTURE2\",\n \"TEXTURE20\",\n \"TEXTURE21\",\n \"TEXTURE22\",\n \"TEXTURE23\",\n \"TEXTURE24\",\n \"TEXTURE25\",\n \"TEXTURE26\",\n \"TEXTURE27\",\n \"TEXTURE28\",\n \"TEXTURE29\",\n \"TEXTURE3\",\n \"TEXTURE30\",\n \"TEXTURE31\",\n \"TEXTURE4\",\n \"TEXTURE5\",\n \"TEXTURE6\",\n \"TEXTURE7\",\n \"TEXTURE8\",\n \"TEXTURE9\",\n \"TEXTURE_2D\",\n \"TEXTURE_BINDING_2D\",\n \"TEXTURE_BINDING_CUBE_MAP\",\n \"TEXTURE_CUBE_MAP\",\n \"TEXTURE_CUBE_MAP_NEGATIVE_X\",\n \"TEXTURE_CUBE_MAP_NEGATIVE_Y\",\n \"TEXTURE_CUBE_MAP_NEGATIVE_Z\",\n \"TEXTURE_CUBE_MAP_POSITIVE_X\",\n \"TEXTURE_CUBE_MAP_POSITIVE_Y\",\n \"TEXTURE_CUBE_MAP_POSITIVE_Z\",\n \"TEXTURE_MAG_FILTER\",\n \"TEXTURE_MAX_ANISOTROPY_EXT\",\n \"TEXTURE_MIN_FILTER\",\n \"TEXTURE_WRAP_S\",\n \"TEXTURE_WRAP_T\",\n \"TEXT_NODE\",\n \"TIMEOUT\",\n \"TIMEOUT_ERR\",\n \"TOO_LARGE_ERR\",\n \"TRANSACTION_INACTIVE_ERR\",\n \"TRIANGLE\",\n \"TRIANGLES\",\n \"TRIANGLE_FAN\",\n \"TRIANGLE_STRIP\",\n \"TYPE_BACK_FORWARD\",\n \"TYPE_ERR\",\n \"TYPE_MISMATCH_ERR\",\n \"TYPE_NAVIGATE\",\n \"TYPE_RELOAD\",\n \"TYPE_RESERVED\",\n \"Text\",\n \"TextDecoder\",\n \"TextEncoder\",\n \"TextEvent\",\n \"TextMetrics\",\n \"TextTrack\",\n \"TextTrackCue\",\n \"TextTrackCueList\",\n \"TextTrackList\",\n \"TimeEvent\",\n \"TimeRanges\",\n \"Touch\",\n \"TouchEvent\",\n \"TouchList\",\n \"TrackEvent\",\n \"TransitionEvent\",\n \"TreeWalker\",\n \"TypeError\",\n \"UIEvent\",\n \"UNCACHED\",\n \"UNKNOWN_ERR\",\n \"UNKNOWN_RULE\",\n \"UNMASKED_RENDERER_WEBGL\",\n \"UNMASKED_VENDOR_WEBGL\",\n \"UNORDERED_NODE_ITERATOR_TYPE\",\n \"UNORDERED_NODE_SNAPSHOT_TYPE\",\n \"UNPACK_ALIGNMENT\",\n \"UNPACK_COLORSPACE_CONVERSION_WEBGL\",\n \"UNPACK_FLIP_Y_WEBGL\",\n \"UNPACK_PREMULTIPLY_ALPHA_WEBGL\",\n \"UNSCHEDULED_STATE\",\n \"UNSENT\",\n \"UNSIGNED_BYTE\",\n \"UNSIGNED_INT\",\n \"UNSIGNED_SHORT\",\n \"UNSIGNED_SHORT_4_4_4_4\",\n \"UNSIGNED_SHORT_5_5_5_1\",\n \"UNSIGNED_SHORT_5_6_5\",\n \"UNSPECIFIED_EVENT_TYPE_ERR\",\n \"UPDATEREADY\",\n \"URIError\",\n \"URL\",\n \"URLSearchParams\",\n \"URLUnencoded\",\n \"URL_MISMATCH_ERR\",\n \"UTC\",\n \"Uint16Array\",\n \"Uint32Array\",\n \"Uint8Array\",\n \"Uint8ClampedArray\",\n \"UserMessageHandler\",\n \"UserMessageHandlersNamespace\",\n \"UserProximityEvent\",\n \"VALIDATE_STATUS\",\n \"VALIDATION_ERR\",\n \"VARIABLES_RULE\",\n \"VENDOR\",\n \"VERSION\",\n \"VERSION_CHANGE\",\n \"VERSION_ERR\",\n \"VERTEX_ATTRIB_ARRAY_BUFFER_BINDING\",\n \"VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE\",\n \"VERTEX_ATTRIB_ARRAY_ENABLED\",\n \"VERTEX_ATTRIB_ARRAY_NORMALIZED\",\n \"VERTEX_ATTRIB_ARRAY_POINTER\",\n \"VERTEX_ATTRIB_ARRAY_SIZE\",\n \"VERTEX_ATTRIB_ARRAY_STRIDE\",\n \"VERTEX_ATTRIB_ARRAY_TYPE\",\n \"VERTEX_SHADER\",\n \"VERTICAL\",\n \"VERTICAL_AXIS\",\n \"VER_ERR\",\n \"VIEWPORT\",\n \"VIEWPORT_RULE\",\n \"VTTCue\",\n \"VTTRegion\",\n \"ValidityState\",\n \"VideoStreamTrack\",\n \"WEBKIT_FILTER_RULE\",\n \"WEBKIT_KEYFRAMES_RULE\",\n \"WEBKIT_KEYFRAME_RULE\",\n \"WEBKIT_REGION_RULE\",\n \"WRONG_DOCUMENT_ERR\",\n \"WaveShaperNode\",\n \"WeakMap\",\n \"WeakSet\",\n \"WebGLActiveInfo\",\n \"WebGLBuffer\",\n \"WebGLContextEvent\",\n \"WebGLFramebuffer\",\n \"WebGLProgram\",\n \"WebGLRenderbuffer\",\n \"WebGLRenderingContext\",\n \"WebGLShader\",\n \"WebGLShaderPrecisionFormat\",\n \"WebGLTexture\",\n \"WebGLUniformLocation\",\n \"WebGLVertexArray\",\n \"WebKitAnimationEvent\",\n \"WebKitBlobBuilder\",\n \"WebKitCSSFilterRule\",\n \"WebKitCSSFilterValue\",\n \"WebKitCSSKeyframeRule\",\n \"WebKitCSSKeyframesRule\",\n \"WebKitCSSMatrix\",\n \"WebKitCSSRegionRule\",\n \"WebKitCSSTransformValue\",\n \"WebKitDataCue\",\n \"WebKitGamepad\",\n \"WebKitMediaKeyError\",\n \"WebKitMediaKeyMessageEvent\",\n \"WebKitMediaKeySession\",\n \"WebKitMediaKeys\",\n \"WebKitMediaSource\",\n \"WebKitMutationObserver\",\n \"WebKitNamespace\",\n \"WebKitPlaybackTargetAvailabilityEvent\",\n \"WebKitPoint\",\n \"WebKitShadowRoot\",\n \"WebKitSourceBuffer\",\n \"WebKitSourceBufferList\",\n \"WebKitTransitionEvent\",\n \"WebSocket\",\n \"WheelEvent\",\n \"Window\",\n \"Worker\",\n \"XMLDocument\",\n \"XMLHttpRequest\",\n \"XMLHttpRequestEventTarget\",\n \"XMLHttpRequestException\",\n \"XMLHttpRequestProgressEvent\",\n \"XMLHttpRequestUpload\",\n \"XMLSerializer\",\n \"XMLStylesheetProcessingInstruction\",\n \"XPathEvaluator\",\n \"XPathException\",\n \"XPathExpression\",\n \"XPathNSResolver\",\n \"XPathResult\",\n \"XSLTProcessor\",\n \"ZERO\",\n \"_XD0M_\",\n \"_YD0M_\",\n \"__defineGetter__\",\n \"__defineSetter__\",\n \"__lookupGetter__\",\n \"__lookupSetter__\",\n \"__opera\",\n \"__proto__\",\n \"_browserjsran\",\n \"a\",\n \"aLink\",\n \"abbr\",\n \"abort\",\n \"abs\",\n \"absolute\",\n \"acceleration\",\n \"accelerationIncludingGravity\",\n \"accelerator\",\n \"accept\",\n \"acceptCharset\",\n \"acceptNode\",\n \"accessKey\",\n \"accessKeyLabel\",\n \"accuracy\",\n \"acos\",\n \"acosh\",\n \"action\",\n \"actionURL\",\n \"active\",\n \"activeCues\",\n \"activeElement\",\n \"activeSourceBuffers\",\n \"activeSourceCount\",\n \"activeTexture\",\n \"add\",\n \"addBehavior\",\n \"addCandidate\",\n \"addColorStop\",\n \"addCue\",\n \"addElement\",\n \"addEventListener\",\n \"addFilter\",\n \"addFromString\",\n \"addFromUri\",\n \"addIceCandidate\",\n \"addImport\",\n \"addListener\",\n \"addNamed\",\n \"addPageRule\",\n \"addPath\",\n \"addPointer\",\n \"addRange\",\n \"addRegion\",\n \"addRule\",\n \"addSearchEngine\",\n \"addSourceBuffer\",\n \"addStream\",\n \"addTextTrack\",\n \"addTrack\",\n \"addWakeLockListener\",\n \"addedNodes\",\n \"additionalName\",\n \"additiveSymbols\",\n \"addons\",\n \"adoptNode\",\n \"adr\",\n \"advance\",\n \"alert\",\n \"algorithm\",\n \"align\",\n \"align-content\",\n \"align-items\",\n \"align-self\",\n \"alignContent\",\n \"alignItems\",\n \"alignSelf\",\n \"alignmentBaseline\",\n \"alinkColor\",\n \"all\",\n \"allSettled\",\n \"allowFullscreen\",\n \"allowedDirections\",\n \"alpha\",\n \"alt\",\n \"altGraphKey\",\n \"altHtml\",\n \"altKey\",\n \"altLeft\",\n \"altitude\",\n \"altitudeAccuracy\",\n \"amplitude\",\n \"ancestorOrigins\",\n \"anchor\",\n \"anchorNode\",\n \"anchorOffset\",\n \"anchors\",\n \"angle\",\n \"animVal\",\n \"animate\",\n \"animatedInstanceRoot\",\n \"animatedNormalizedPathSegList\",\n \"animatedPathSegList\",\n \"animatedPoints\",\n \"animation\",\n \"animation-delay\",\n \"animation-direction\",\n \"animation-duration\",\n \"animation-fill-mode\",\n \"animation-iteration-count\",\n \"animation-name\",\n \"animation-play-state\",\n \"animation-timing-function\",\n \"animationDelay\",\n \"animationDirection\",\n \"animationDuration\",\n \"animationFillMode\",\n \"animationIterationCount\",\n \"animationName\",\n \"animationPlayState\",\n \"animationStartTime\",\n \"animationTimingFunction\",\n \"animationsPaused\",\n \"anniversary\",\n \"any\",\n \"app\",\n \"appCodeName\",\n \"appMinorVersion\",\n \"appName\",\n \"appNotifications\",\n \"appVersion\",\n \"append\",\n \"appendBuffer\",\n \"appendChild\",\n \"appendData\",\n \"appendItem\",\n \"appendMedium\",\n \"appendNamed\",\n \"appendRule\",\n \"appendStream\",\n \"appendWindowEnd\",\n \"appendWindowStart\",\n \"applets\",\n \"applicationCache\",\n \"apply\",\n \"applyElement\",\n \"arc\",\n \"arcTo\",\n \"archive\",\n \"areas\",\n \"arguments\",\n \"arrayBuffer\",\n \"asin\",\n \"asinh\",\n \"assert\",\n \"assign\",\n \"async\",\n \"atEnd\",\n \"atan\",\n \"atan2\",\n \"atanh\",\n \"atob\",\n \"attachEvent\",\n \"attachShader\",\n \"attachShadow\",\n \"attachments\",\n \"attack\",\n \"attrChange\",\n \"attrName\",\n \"attributeFilter\",\n \"attributeName\",\n \"attributeNamespace\",\n \"attributeOldValue\",\n \"attributes\",\n \"audioTracks\",\n \"autoIncrement\",\n \"autobuffer\",\n \"autocapitalize\",\n \"autocomplete\",\n \"autocorrect\",\n \"autofocus\",\n \"autoplay\",\n \"availHeight\",\n \"availLeft\",\n \"availTop\",\n \"availWidth\",\n \"availability\",\n \"available\",\n \"aversion\",\n \"axes\",\n \"axis\",\n \"azimuth\",\n \"b\",\n \"back\",\n \"backface-visibility\",\n \"backfaceVisibility\",\n \"background\",\n \"background-attachment\",\n \"background-blend-mode\",\n \"background-clip\",\n \"background-color\",\n \"background-image\",\n \"background-origin\",\n \"background-position\",\n \"background-repeat\",\n \"background-size\",\n \"backgroundAttachment\",\n \"backgroundBlendMode\",\n \"backgroundClip\",\n \"backgroundColor\",\n \"backgroundImage\",\n \"backgroundOrigin\",\n \"backgroundPosition\",\n \"backgroundPositionX\",\n \"backgroundPositionY\",\n \"backgroundRepeat\",\n \"backgroundSize\",\n \"badInput\",\n \"balance\",\n \"baseFrequencyX\",\n \"baseFrequencyY\",\n \"baseNode\",\n \"baseOffset\",\n \"baseURI\",\n \"baseVal\",\n \"baselineShift\",\n \"battery\",\n \"bday\",\n \"beginElement\",\n \"beginElementAt\",\n \"beginPath\",\n \"behavior\",\n \"behaviorCookie\",\n \"behaviorPart\",\n \"behaviorUrns\",\n \"beta\",\n \"bezierCurveTo\",\n \"bgColor\",\n \"bgProperties\",\n \"bias\",\n \"big\",\n \"binaryType\",\n \"bind\",\n \"bindAttribLocation\",\n \"bindBuffer\",\n \"bindFramebuffer\",\n \"bindRenderbuffer\",\n \"bindTexture\",\n \"blendColor\",\n \"blendEquation\",\n \"blendEquationSeparate\",\n \"blendFunc\",\n \"blendFuncSeparate\",\n \"blink\",\n \"blob\",\n \"blockDirection\",\n \"blue\",\n \"blur\",\n \"body\",\n \"bodyUsed\",\n \"bold\",\n \"bookmarks\",\n \"booleanValue\",\n \"border\",\n \"border-bottom\",\n \"border-bottom-color\",\n \"border-bottom-left-radius\",\n \"border-bottom-right-radius\",\n \"border-bottom-style\",\n \"border-bottom-width\",\n \"border-collapse\",\n \"border-color\",\n \"border-image\",\n \"border-image-outset\",\n \"border-image-repeat\",\n \"border-image-slice\",\n \"border-image-source\",\n \"border-image-width\",\n \"border-left\",\n \"border-left-color\",\n \"border-left-style\",\n \"border-left-width\",\n \"border-radius\",\n \"border-right\",\n \"border-right-color\",\n \"border-right-style\",\n \"border-right-width\",\n \"border-spacing\",\n \"border-style\",\n \"border-top\",\n \"border-top-color\",\n \"border-top-left-radius\",\n \"border-top-right-radius\",\n \"border-top-style\",\n \"border-top-width\",\n \"border-width\",\n \"borderBottom\",\n \"borderBottomColor\",\n \"borderBottomLeftRadius\",\n \"borderBottomRightRadius\",\n \"borderBottomStyle\",\n \"borderBottomWidth\",\n \"borderCollapse\",\n \"borderColor\",\n \"borderColorDark\",\n \"borderColorLight\",\n \"borderImage\",\n \"borderImageOutset\",\n \"borderImageRepeat\",\n \"borderImageSlice\",\n \"borderImageSource\",\n \"borderImageWidth\",\n \"borderLeft\",\n \"borderLeftColor\",\n \"borderLeftStyle\",\n \"borderLeftWidth\",\n \"borderRadius\",\n \"borderRight\",\n \"borderRightColor\",\n \"borderRightStyle\",\n \"borderRightWidth\",\n \"borderSpacing\",\n \"borderStyle\",\n \"borderTop\",\n \"borderTopColor\",\n \"borderTopLeftRadius\",\n \"borderTopRightRadius\",\n \"borderTopStyle\",\n \"borderTopWidth\",\n \"borderWidth\",\n \"bottom\",\n \"bottomMargin\",\n \"bound\",\n \"boundElements\",\n \"boundingClientRect\",\n \"boundingHeight\",\n \"boundingLeft\",\n \"boundingTop\",\n \"boundingWidth\",\n \"bounds\",\n \"box-decoration-break\",\n \"box-shadow\",\n \"box-sizing\",\n \"boxDecorationBreak\",\n \"boxShadow\",\n \"boxSizing\",\n \"breakAfter\",\n \"breakBefore\",\n \"breakInside\",\n \"browserLanguage\",\n \"btoa\",\n \"bubbles\",\n \"buffer\",\n \"bufferData\",\n \"bufferDepth\",\n \"bufferSize\",\n \"bufferSubData\",\n \"buffered\",\n \"bufferedAmount\",\n \"buildID\",\n \"buildNumber\",\n \"button\",\n \"buttonID\",\n \"buttons\",\n \"byteLength\",\n \"byteOffset\",\n \"c\",\n \"call\",\n \"caller\",\n \"canBeFormatted\",\n \"canBeMounted\",\n \"canBeShared\",\n \"canHaveChildren\",\n \"canHaveHTML\",\n \"canPlayType\",\n \"cancel\",\n \"cancelAnimationFrame\",\n \"cancelBubble\",\n \"cancelScheduledValues\",\n \"cancelable\",\n \"candidate\",\n \"canvas\",\n \"caption\",\n \"caption-side\",\n \"captionSide\",\n \"capture\",\n \"captureEvents\",\n \"captureStackTrace\",\n \"caretPositionFromPoint\",\n \"caretRangeFromPoint\",\n \"cast\",\n \"catch\",\n \"category\",\n \"cbrt\",\n \"cd\",\n \"ceil\",\n \"cellIndex\",\n \"cellPadding\",\n \"cellSpacing\",\n \"cells\",\n \"ch\",\n \"chOff\",\n \"chain\",\n \"challenge\",\n \"changedTouches\",\n \"channel\",\n \"channelCount\",\n \"channelCountMode\",\n \"channelInterpretation\",\n \"char\",\n \"charAt\",\n \"charCode\",\n \"charCodeAt\",\n \"charIndex\",\n \"characterSet\",\n \"characterData\",\n \"characterDataOldValue\",\n \"charging\",\n \"chargingTime\",\n \"charset\",\n \"checkEnclosure\",\n \"checkFramebufferStatus\",\n \"checkIntersection\",\n \"checkValidity\",\n \"checked\",\n \"childElementCount\",\n \"childList\",\n \"childNodes\",\n \"children\",\n \"chrome\",\n \"ciphertext\",\n \"cite\",\n \"classList\",\n \"className\",\n \"classid\",\n \"clear\",\n \"clearAttributes\",\n \"clearColor\",\n \"clearData\",\n \"clearDepth\",\n \"clearImmediate\",\n \"clearInterval\",\n \"clearMarks\",\n \"clearMeasures\",\n \"clearParameters\",\n \"clearRect\",\n \"clearResourceTimings\",\n \"clearShadow\",\n \"clearStencil\",\n \"clearTimeout\",\n \"clearWatch\",\n \"click\",\n \"clickCount\",\n \"clientHeight\",\n \"clientInformation\",\n \"clientLeft\",\n \"clientRect\",\n \"clientRects\",\n \"clientTop\",\n \"clientWidth\",\n \"clientX\",\n \"clientY\",\n \"clip\",\n \"clip-path\",\n \"clip-rule\",\n \"clipBottom\",\n \"clipLeft\",\n \"clipPath\",\n \"clipPathUnits\",\n \"clipRight\",\n \"clipRule\",\n \"clipTop\",\n \"clipboardData\",\n \"clone\",\n \"cloneContents\",\n \"cloneNode\",\n \"cloneRange\",\n \"close\",\n \"closePath\",\n \"closed\",\n \"closest\",\n \"clz\",\n \"clz32\",\n \"cmp\",\n \"code\",\n \"codeBase\",\n \"codePointAt\",\n \"codeType\",\n \"colSpan\",\n \"collapse\",\n \"collapseToEnd\",\n \"collapseToStart\",\n \"collapsed\",\n \"collect\",\n \"colno\",\n \"color\",\n \"color-interpolation\",\n \"color-interpolation-filters\",\n \"colorDepth\",\n \"colorInterpolation\",\n \"colorInterpolationFilters\",\n \"colorMask\",\n \"colorType\",\n \"cols\",\n \"columnCount\",\n \"columnFill\",\n \"columnGap\",\n \"columnNumber\",\n \"columnRule\",\n \"columnRuleColor\",\n \"columnRuleStyle\",\n \"columnRuleWidth\",\n \"columnSpan\",\n \"columnWidth\",\n \"columns\",\n \"command\",\n \"commitPreferences\",\n \"commonAncestorContainer\",\n \"compact\",\n \"compareBoundaryPoints\",\n \"compareDocumentPosition\",\n \"compareEndPoints\",\n \"compareNode\",\n \"comparePoint\",\n \"compatMode\",\n \"compatible\",\n \"compile\",\n \"compileShader\",\n \"complete\",\n \"componentFromPoint\",\n \"compositionEndOffset\",\n \"compositionStartOffset\",\n \"compressedTexImage2D\",\n \"compressedTexSubImage2D\",\n \"concat\",\n \"conditionText\",\n \"coneInnerAngle\",\n \"coneOuterAngle\",\n \"coneOuterGain\",\n \"confirm\",\n \"confirmComposition\",\n \"confirmSiteSpecificTrackingException\",\n \"confirmWebWideTrackingException\",\n \"connect\",\n \"connectEnd\",\n \"connectStart\",\n \"connected\",\n \"connection\",\n \"connectionSpeed\",\n \"console\",\n \"consolidate\",\n \"constrictionActive\",\n \"constructor\",\n \"contactID\",\n \"contains\",\n \"containsNode\",\n \"content\",\n \"contentDocument\",\n \"contentEditable\",\n \"contentOverflow\",\n \"contentScriptType\",\n \"contentStyleType\",\n \"contentType\",\n \"contentWindow\",\n \"context\",\n \"contextMenu\",\n \"contextmenu\",\n \"continue\",\n \"continuous\",\n \"control\",\n \"controller\",\n \"controls\",\n \"convertToSpecifiedUnits\",\n \"cookie\",\n \"cookieEnabled\",\n \"coords\",\n \"copyFromChannel\",\n \"copyTexImage2D\",\n \"copyTexSubImage2D\",\n \"copyToChannel\",\n \"copyWithin\",\n \"correspondingElement\",\n \"correspondingUseElement\",\n \"cos\",\n \"cosh\",\n \"count\",\n \"counter-increment\",\n \"counter-reset\",\n \"counterIncrement\",\n \"counterReset\",\n \"cpuClass\",\n \"cpuSleepAllowed\",\n \"create\",\n \"createAnalyser\",\n \"createAnswer\",\n \"createAttribute\",\n \"createAttributeNS\",\n \"createBiquadFilter\",\n \"createBuffer\",\n \"createBufferSource\",\n \"createCDATASection\",\n \"createCSSStyleSheet\",\n \"createCaption\",\n \"createChannelMerger\",\n \"createChannelSplitter\",\n \"createComment\",\n \"createContextualFragment\",\n \"createControlRange\",\n \"createConvolver\",\n \"createDTMFSender\",\n \"createDataChannel\",\n \"createDelay\",\n \"createDelayNode\",\n \"createDocument\",\n \"createDocumentFragment\",\n \"createDocumentType\",\n \"createDynamicsCompressor\",\n \"createElement\",\n \"createElementNS\",\n \"createEntityReference\",\n \"createEvent\",\n \"createEventObject\",\n \"createExpression\",\n \"createFramebuffer\",\n \"createFunction\",\n \"createGain\",\n \"createGainNode\",\n \"createHTMLDocument\",\n \"createImageBitmap\",\n \"createImageData\",\n \"createIndex\",\n \"createJavaScriptNode\",\n \"createLinearGradient\",\n \"createMediaElementSource\",\n \"createMediaKeys\",\n \"createMediaStreamDestination\",\n \"createMediaStreamSource\",\n \"createMutableFile\",\n \"createNSResolver\",\n \"createNodeIterator\",\n \"createNotification\",\n \"createObjectStore\",\n \"createObjectURL\",\n \"createOffer\",\n \"createOscillator\",\n \"createPanner\",\n \"createPattern\",\n \"createPeriodicWave\",\n \"createPopup\",\n \"createProcessingInstruction\",\n \"createProgram\",\n \"createRadialGradient\",\n \"createRange\",\n \"createRangeCollection\",\n \"createRenderbuffer\",\n \"createSVGAngle\",\n \"createSVGLength\",\n \"createSVGMatrix\",\n \"createSVGNumber\",\n \"createSVGPathSegArcAbs\",\n \"createSVGPathSegArcRel\",\n \"createSVGPathSegClosePath\",\n \"createSVGPathSegCurvetoCubicAbs\",\n \"createSVGPathSegCurvetoCubicRel\",\n \"createSVGPathSegCurvetoCubicSmoothAbs\",\n \"createSVGPathSegCurvetoCubicSmoothRel\",\n \"createSVGPathSegCurvetoQuadraticAbs\",\n \"createSVGPathSegCurvetoQuadraticRel\",\n \"createSVGPathSegCurvetoQuadraticSmoothAbs\",\n \"createSVGPathSegCurvetoQuadraticSmoothRel\",\n \"createSVGPathSegLinetoAbs\",\n \"createSVGPathSegLinetoHorizontalAbs\",\n \"createSVGPathSegLinetoHorizontalRel\",\n \"createSVGPathSegLinetoRel\",\n \"createSVGPathSegLinetoVerticalAbs\",\n \"createSVGPathSegLinetoVerticalRel\",\n \"createSVGPathSegMovetoAbs\",\n \"createSVGPathSegMovetoRel\",\n \"createSVGPoint\",\n \"createSVGRect\",\n \"createSVGTransform\",\n \"createSVGTransformFromMatrix\",\n \"createScriptProcessor\",\n \"createSession\",\n \"createShader\",\n \"createShadowRoot\",\n \"createStereoPanner\",\n \"createStyleSheet\",\n \"createTBody\",\n \"createTFoot\",\n \"createTHead\",\n \"createTextNode\",\n \"createTextRange\",\n \"createTexture\",\n \"createTouch\",\n \"createTouchList\",\n \"createTreeWalker\",\n \"createWaveShaper\",\n \"creationTime\",\n \"crossOrigin\",\n \"crypto\",\n \"csi\",\n \"cssFloat\",\n \"cssRules\",\n \"cssText\",\n \"cssValueType\",\n \"ctrlKey\",\n \"ctrlLeft\",\n \"cues\",\n \"cullFace\",\n \"currentNode\",\n \"currentPage\",\n \"currentScale\",\n \"currentScript\",\n \"currentSrc\",\n \"currentState\",\n \"currentStyle\",\n \"currentTarget\",\n \"currentTime\",\n \"currentTranslate\",\n \"currentView\",\n \"cursor\",\n \"curve\",\n \"customError\",\n \"cx\",\n \"cy\",\n \"d\",\n \"data\",\n \"dataFld\",\n \"dataFormatAs\",\n \"dataPageSize\",\n \"dataSrc\",\n \"dataTransfer\",\n \"database\",\n \"dataset\",\n \"dateTime\",\n \"db\",\n \"debug\",\n \"debuggerEnabled\",\n \"declare\",\n \"decode\",\n \"decodeAudioData\",\n \"decodingInfo\",\n \"decodeURI\",\n \"decodeURIComponent\",\n \"decrypt\",\n \"default\",\n \"defaultCharset\",\n \"defaultChecked\",\n \"defaultMuted\",\n \"defaultPlaybackRate\",\n \"defaultPrevented\",\n \"defaultSelected\",\n \"defaultStatus\",\n \"defaultURL\",\n \"defaultValue\",\n \"defaultView\",\n \"defaultstatus\",\n \"defer\",\n \"defineMagicFunction\",\n \"defineMagicVariable\",\n \"defineProperties\",\n \"defineProperty\",\n \"delayTime\",\n \"delete\",\n \"deleteBuffer\",\n \"deleteCaption\",\n \"deleteCell\",\n \"deleteContents\",\n \"deleteData\",\n \"deleteDatabase\",\n \"deleteFramebuffer\",\n \"deleteFromDocument\",\n \"deleteIndex\",\n \"deleteMedium\",\n \"deleteObjectStore\",\n \"deleteProgram\",\n \"deleteRenderbuffer\",\n \"deleteRow\",\n \"deleteRule\",\n \"deleteShader\",\n \"deleteTFoot\",\n \"deleteTHead\",\n \"deleteTexture\",\n \"deliverChangeRecords\",\n \"delivery\",\n \"deliveryInfo\",\n \"deliveryStatus\",\n \"deliveryTimestamp\",\n \"delta\",\n \"deltaMode\",\n \"deltaX\",\n \"deltaY\",\n \"deltaZ\",\n \"depthFunc\",\n \"depthMask\",\n \"depthRange\",\n \"deriveBits\",\n \"deriveKey\",\n \"description\",\n \"deselectAll\",\n \"designMode\",\n \"destination\",\n \"destinationURL\",\n \"detach\",\n \"detachEvent\",\n \"detachShader\",\n \"detail\",\n \"detune\",\n \"devicePixelRatio\",\n \"deviceXDPI\",\n \"deviceYDPI\",\n \"diffuseConstant\",\n \"digest\",\n \"dimensions\",\n \"dir\",\n \"dirName\",\n \"direction\",\n \"dirxml\",\n \"disable\",\n \"disableVertexAttribArray\",\n \"disabled\",\n \"dischargingTime\",\n \"disconnect\",\n \"dispatchEvent\",\n \"display\",\n \"distanceModel\",\n \"divisor\",\n \"djsapi\",\n \"djsproxy\",\n \"doImport\",\n \"doNotTrack\",\n \"doScroll\",\n \"doctype\",\n \"document\",\n \"documentElement\",\n \"documentMode\",\n \"documentURI\",\n \"dolphin\",\n \"dolphinGameCenter\",\n \"dolphininfo\",\n \"dolphinmeta\",\n \"domComplete\",\n \"domContentLoadedEventEnd\",\n \"domContentLoadedEventStart\",\n \"domInteractive\",\n \"domLoading\",\n \"domain\",\n \"domainLookupEnd\",\n \"domainLookupStart\",\n \"dominant-baseline\",\n \"dominantBaseline\",\n \"done\",\n \"dopplerFactor\",\n \"download\",\n \"dragDrop\",\n \"draggable\",\n \"drawArrays\",\n \"drawArraysInstancedANGLE\",\n \"drawCustomFocusRing\",\n \"drawElements\",\n \"drawElementsInstancedANGLE\",\n \"drawFocusIfNeeded\",\n \"drawImage\",\n \"drawImageFromRect\",\n \"drawSystemFocusRing\",\n \"drawingBufferHeight\",\n \"drawingBufferWidth\",\n \"dropEffect\",\n \"droppedVideoFrames\",\n \"dropzone\",\n \"dump\",\n \"duplicate\",\n \"duration\",\n \"dvname\",\n \"dvnum\",\n \"dx\",\n \"dy\",\n \"dynsrc\",\n \"e\",\n \"edgeMode\",\n \"effectAllowed\",\n \"elapsedTime\",\n \"elementFromPoint\",\n \"elements\",\n \"elevation\",\n \"ellipse\",\n \"email\",\n \"embeds\",\n \"empty\",\n \"empty-cells\",\n \"emptyCells\",\n \"enable\",\n \"enableBackground\",\n \"enableStyleSheetsForSet\",\n \"enableVertexAttribArray\",\n \"enabled\",\n \"enabledPlugin\",\n \"encode\",\n \"encodeURI\",\n \"encodeURIComponent\",\n \"encoding\",\n \"encrypt\",\n \"enctype\",\n \"end\",\n \"endContainer\",\n \"endElement\",\n \"endElementAt\",\n \"endOfStream\",\n \"endOffset\",\n \"endTime\",\n \"ended\",\n \"endsWith\",\n \"entities\",\n \"entries\",\n \"entryType\",\n \"enumerate\",\n \"enumerateEditable\",\n \"error\",\n \"errorCode\",\n \"escape\",\n \"eval\",\n \"evaluate\",\n \"event\",\n \"eventPhase\",\n \"every\",\n \"exception\",\n \"exec\",\n \"execCommand\",\n \"execCommandShowHelp\",\n \"execScript\",\n \"exitFullscreen\",\n \"exitPointerLock\",\n \"exp\",\n \"expand\",\n \"expandEntityReferences\",\n \"expando\",\n \"expansion\",\n \"expiryDate\",\n \"explicitOriginalTarget\",\n \"expm1\",\n \"exponent\",\n \"exponentialRampToValueAtTime\",\n \"exportKey\",\n \"extend\",\n \"extensions\",\n \"extentNode\",\n \"extentOffset\",\n \"external\",\n \"externalResourcesRequired\",\n \"extractContents\",\n \"extractable\",\n \"f\",\n \"face\",\n \"factoryReset\",\n \"fallback\",\n \"familyName\",\n \"farthestViewportElement\",\n \"fastSeek\",\n \"fatal\",\n \"fetch\",\n \"fetchStart\",\n \"fftSize\",\n \"fgColor\",\n \"fileCreatedDate\",\n \"fileHandle\",\n \"fileModifiedDate\",\n \"fileName\",\n \"fileSize\",\n \"fileUpdatedDate\",\n \"filename\",\n \"files\",\n \"fill\",\n \"fill-opacity\",\n \"fill-rule\",\n \"fillOpacity\",\n \"fillRect\",\n \"fillRule\",\n \"fillStyle\",\n \"fillText\",\n \"filter\",\n \"filterResX\",\n \"filterResY\",\n \"filterUnits\",\n \"filters\",\n \"finally\",\n \"find\",\n \"findIndex\",\n \"findRule\",\n \"findText\",\n \"finish\",\n \"fireEvent\",\n \"firstChild\",\n \"firstElementChild\",\n \"firstPage\",\n \"fixed\",\n \"flex\",\n \"flex-basis\",\n \"flex-direction\",\n \"flex-flow\",\n \"flex-grow\",\n \"flex-shrink\",\n \"flex-wrap\",\n \"flexBasis\",\n \"flexDirection\",\n \"flexFlow\",\n \"flexGrow\",\n \"flexShrink\",\n \"flexWrap\",\n \"flipX\",\n \"flipY\",\n \"float\",\n \"flood-color\",\n \"flood-opacity\",\n \"floodColor\",\n \"floodOpacity\",\n \"floor\",\n \"flush\",\n \"focus\",\n \"focusNode\",\n \"focusOffset\",\n \"font\",\n \"font-family\",\n \"font-feature-settings\",\n \"font-kerning\",\n \"font-language-override\",\n \"font-size\",\n \"font-size-adjust\",\n \"font-stretch\",\n \"font-style\",\n \"font-synthesis\",\n \"font-variant\",\n \"font-variant-alternates\",\n \"font-variant-caps\",\n \"font-variant-east-asian\",\n \"font-variant-ligatures\",\n \"font-variant-numeric\",\n \"font-variant-position\",\n \"font-weight\",\n \"fontFamily\",\n \"fontFeatureSettings\",\n \"fontKerning\",\n \"fontLanguageOverride\",\n \"fontSize\",\n \"fontSizeAdjust\",\n \"fontSmoothingEnabled\",\n \"fontStretch\",\n \"fontStyle\",\n \"fontSynthesis\",\n \"fontVariant\",\n \"fontVariantAlternates\",\n \"fontVariantCaps\",\n \"fontVariantEastAsian\",\n \"fontVariantLigatures\",\n \"fontVariantNumeric\",\n \"fontVariantPosition\",\n \"fontWeight\",\n \"fontcolor\",\n \"fonts\",\n \"fontsize\",\n \"for\",\n \"forEach\",\n \"forceRedraw\",\n \"form\",\n \"formAction\",\n \"formEnctype\",\n \"formMethod\",\n \"formNoValidate\",\n \"formTarget\",\n \"format\",\n \"formatToParts\",\n \"forms\",\n \"forward\",\n \"fr\",\n \"frame\",\n \"frameBorder\",\n \"frameElement\",\n \"frameSpacing\",\n \"framebufferRenderbuffer\",\n \"framebufferTexture2D\",\n \"frames\",\n \"freeSpace\",\n \"freeze\",\n \"frequency\",\n \"frequencyBinCount\",\n \"from\",\n \"fromCharCode\",\n \"fromCodePoint\",\n \"fromElement\",\n \"frontFace\",\n \"fround\",\n \"fullScreen\",\n \"fullscreenElement\",\n \"fullscreenEnabled\",\n \"fx\",\n \"fy\",\n \"gain\",\n \"gamepad\",\n \"gamma\",\n \"genderIdentity\",\n \"generateKey\",\n \"generateMipmap\",\n \"generateRequest\",\n \"geolocation\",\n \"gestureObject\",\n \"get\",\n \"getActiveAttrib\",\n \"getActiveUniform\",\n \"getAdjacentText\",\n \"getAll\",\n \"getAllResponseHeaders\",\n \"getAsFile\",\n \"getAsString\",\n \"getAttachedShaders\",\n \"getAttribLocation\",\n \"getAttribute\",\n \"getAttributeNS\",\n \"getAttributeNode\",\n \"getAttributeNodeNS\",\n \"getAudioTracks\",\n \"getBBox\",\n \"getBattery\",\n \"getBlob\",\n \"getBookmark\",\n \"getBoundingClientRect\",\n \"getBufferParameter\",\n \"getByteFrequencyData\",\n \"getByteTimeDomainData\",\n \"getCSSCanvasContext\",\n \"getCTM\",\n \"getCandidateWindowClientRect\",\n \"getChannelData\",\n \"getCharNumAtPosition\",\n \"getClientRect\",\n \"getClientRects\",\n \"getCompositionAlternatives\",\n \"getComputedStyle\",\n \"getComputedTextLength\",\n \"getConfiguration\",\n \"getContext\",\n \"getContextAttributes\",\n \"getCounterValue\",\n \"getCueAsHTML\",\n \"getCueById\",\n \"getCurrentPosition\",\n \"getCurrentTime\",\n \"getData\",\n \"getDatabaseNames\",\n \"getDate\",\n \"getDay\",\n \"getDefaultComputedStyle\",\n \"getDestinationInsertionPoints\",\n \"getDistributedNodes\",\n \"getEditable\",\n \"getElementById\",\n \"getElementsByClassName\",\n \"getElementsByName\",\n \"getElementsByTagName\",\n \"getElementsByTagNameNS\",\n \"getEnclosureList\",\n \"getEndPositionOfChar\",\n \"getEntries\",\n \"getEntriesByName\",\n \"getEntriesByType\",\n \"getError\",\n \"getExtension\",\n \"getExtentOfChar\",\n \"getFeature\",\n \"getFile\",\n \"getFloat32\",\n \"getFloat64\",\n \"getFloatFrequencyData\",\n \"getFloatTimeDomainData\",\n \"getFloatValue\",\n \"getFramebufferAttachmentParameter\",\n \"getFrequencyResponse\",\n \"getFullYear\",\n \"getGamepads\",\n \"getHours\",\n \"getImageData\",\n \"getInt16\",\n \"getInt32\",\n \"getInt8\",\n \"getIntersectionList\",\n \"getItem\",\n \"getItems\",\n \"getKey\",\n \"getLineDash\",\n \"getLocalStreams\",\n \"getMarks\",\n \"getMatchedCSSRules\",\n \"getMeasures\",\n \"getMetadata\",\n \"getMilliseconds\",\n \"getMinutes\",\n \"getModifierState\",\n \"getMonth\",\n \"getNamedItem\",\n \"getNamedItemNS\",\n \"getNotifier\",\n \"getNumberOfChars\",\n \"getOverrideHistoryNavigationMode\",\n \"getOverrideStyle\",\n \"getOwnPropertyDescriptor\",\n \"getOwnPropertyNames\",\n \"getOwnPropertySymbols\",\n \"getParameter\",\n \"getPathSegAtLength\",\n \"getPointAtLength\",\n \"getPreference\",\n \"getPreferenceDefault\",\n \"getPresentationAttribute\",\n \"getPreventDefault\",\n \"getProgramInfoLog\",\n \"getProgramParameter\",\n \"getPropertyCSSValue\",\n \"getPropertyPriority\",\n \"getPropertyShorthand\",\n \"getPropertyValue\",\n \"getPrototypeOf\",\n \"getRGBColorValue\",\n \"getRandomValues\",\n \"getRangeAt\",\n \"getReceivers\",\n \"getRectValue\",\n \"getRegistration\",\n \"getRemoteStreams\",\n \"getRenderbufferParameter\",\n \"getResponseHeader\",\n \"getRoot\",\n \"getRotationOfChar\",\n \"getSVGDocument\",\n \"getScreenCTM\",\n \"getSeconds\",\n \"getSelection\",\n \"getSenders\",\n \"getShaderInfoLog\",\n \"getShaderParameter\",\n \"getShaderPrecisionFormat\",\n \"getShaderSource\",\n \"getSimpleDuration\",\n \"getSiteIcons\",\n \"getSources\",\n \"getSpeculativeParserUrls\",\n \"getStartPositionOfChar\",\n \"getStartTime\",\n \"getStats\",\n \"getStorageUpdates\",\n \"getStreamById\",\n \"getStringValue\",\n \"getSubStringLength\",\n \"getSubscription\",\n \"getSupportedExtensions\",\n \"getTexParameter\",\n \"getTime\",\n \"getTimezoneOffset\",\n \"getTotalLength\",\n \"getTrackById\",\n \"getTracks\",\n \"getTransformToElement\",\n \"getUTCDate\",\n \"getUTCDay\",\n \"getUTCFullYear\",\n \"getUTCHours\",\n \"getUTCMilliseconds\",\n \"getUTCMinutes\",\n \"getUTCMonth\",\n \"getUTCSeconds\",\n \"getUint16\",\n \"getUint32\",\n \"getUint8\",\n \"getUniform\",\n \"getUniformLocation\",\n \"getUserMedia\",\n \"getValues\",\n \"getVarDate\",\n \"getVariableValue\",\n \"getVertexAttrib\",\n \"getVertexAttribOffset\",\n \"getVideoPlaybackQuality\",\n \"getVideoTracks\",\n \"getWakeLockState\",\n \"getYear\",\n \"givenName\",\n \"global\",\n \"globalAlpha\",\n \"globalCompositeOperation\",\n \"glyphOrientationHorizontal\",\n \"glyphOrientationVertical\",\n \"glyphRef\",\n \"go\",\n \"gradientTransform\",\n \"gradientUnits\",\n \"grammars\",\n \"green\",\n \"group\",\n \"groupCollapsed\",\n \"groupEnd\",\n \"hardwareConcurrency\",\n \"has\",\n \"hasAttribute\",\n \"hasAttributeNS\",\n \"hasAttributes\",\n \"hasChildNodes\",\n \"hasComposition\",\n \"hasExtension\",\n \"hasFeature\",\n \"hasFocus\",\n \"hasLayout\",\n \"hasOwnProperty\",\n \"hash\",\n \"head\",\n \"headers\",\n \"heading\",\n \"height\",\n \"hidden\",\n \"hide\",\n \"hideFocus\",\n \"high\",\n \"hint\",\n \"history\",\n \"honorificPrefix\",\n \"honorificSuffix\",\n \"horizontalOverflow\",\n \"host\",\n \"hostname\",\n \"href\",\n \"hreflang\",\n \"hspace\",\n \"html5TagCheckInerface\",\n \"htmlFor\",\n \"htmlText\",\n \"httpEquiv\",\n \"hwTimestamp\",\n \"hypot\",\n \"iccId\",\n \"iceConnectionState\",\n \"iceGatheringState\",\n \"icon\",\n \"id\",\n \"identifier\",\n \"identity\",\n \"ignoreBOM\",\n \"ignoreCase\",\n \"image-orientation\",\n \"image-rendering\",\n \"imageOrientation\",\n \"imageRendering\",\n \"images\",\n \"ime-mode\",\n \"imeMode\",\n \"implementation\",\n \"importKey\",\n \"importNode\",\n \"importStylesheet\",\n \"imports\",\n \"impp\",\n \"imul\",\n \"in1\",\n \"in2\",\n \"inBandMetadataTrackDispatchType\",\n \"inRange\",\n \"includes\",\n \"incremental\",\n \"indeterminate\",\n \"index\",\n \"indexNames\",\n \"indexOf\",\n \"indexedDB\",\n \"inertiaDestinationX\",\n \"inertiaDestinationY\",\n \"info\",\n \"init\",\n \"initAnimationEvent\",\n \"initBeforeLoadEvent\",\n \"initClipboardEvent\",\n \"initCloseEvent\",\n \"initCommandEvent\",\n \"initCompositionEvent\",\n \"initCustomEvent\",\n \"initData\",\n \"initDeviceMotionEvent\",\n \"initDeviceOrientationEvent\",\n \"initDragEvent\",\n \"initErrorEvent\",\n \"initEvent\",\n \"initFocusEvent\",\n \"initGestureEvent\",\n \"initHashChangeEvent\",\n \"initKeyEvent\",\n \"initKeyboardEvent\",\n \"initMSManipulationEvent\",\n \"initMessageEvent\",\n \"initMouseEvent\",\n \"initMouseScrollEvent\",\n \"initMouseWheelEvent\",\n \"initMutationEvent\",\n \"initNSMouseEvent\",\n \"initOverflowEvent\",\n \"initPageEvent\",\n \"initPageTransitionEvent\",\n \"initPointerEvent\",\n \"initPopStateEvent\",\n \"initProgressEvent\",\n \"initScrollAreaEvent\",\n \"initSimpleGestureEvent\",\n \"initStorageEvent\",\n \"initTextEvent\",\n \"initTimeEvent\",\n \"initTouchEvent\",\n \"initTransitionEvent\",\n \"initUIEvent\",\n \"initWebKitAnimationEvent\",\n \"initWebKitTransitionEvent\",\n \"initWebKitWheelEvent\",\n \"initWheelEvent\",\n \"initialTime\",\n \"initialize\",\n \"initiatorType\",\n \"inner\",\n \"innerHTML\",\n \"innerHeight\",\n \"innerText\",\n \"innerWidth\",\n \"input\",\n \"inputBuffer\",\n \"inputEncoding\",\n \"inputMethod\",\n \"insertAdjacentElement\",\n \"insertAdjacentHTML\",\n \"insertAdjacentText\",\n \"insertBefore\",\n \"insertCell\",\n \"insertData\",\n \"insertItemBefore\",\n \"insertNode\",\n \"insertRow\",\n \"insertRule\",\n \"instanceRoot\",\n \"intercept\",\n \"interimResults\",\n \"internalSubset\",\n \"intersectsNode\",\n \"interval\",\n \"invalidIteratorState\",\n \"inverse\",\n \"invertSelf\",\n \"is\",\n \"is2D\",\n \"isAlternate\",\n \"isArray\",\n \"isBingCurrentSearchDefault\",\n \"isBuffer\",\n \"isCandidateWindowVisible\",\n \"isChar\",\n \"isCollapsed\",\n \"isComposing\",\n \"isContentEditable\",\n \"isContentHandlerRegistered\",\n \"isContextLost\",\n \"isDefaultNamespace\",\n \"isDisabled\",\n \"isEnabled\",\n \"isEqual\",\n \"isEqualNode\",\n \"isExtensible\",\n \"isFinite\",\n \"isFramebuffer\",\n \"isFrozen\",\n \"isGenerator\",\n \"isId\",\n \"isInjected\",\n \"isInteger\",\n \"isMap\",\n \"isMultiLine\",\n \"isNaN\",\n \"isOpen\",\n \"isPointInFill\",\n \"isPointInPath\",\n \"isPointInRange\",\n \"isPointInStroke\",\n \"isPrefAlternate\",\n \"isPrimary\",\n \"isProgram\",\n \"isPropertyImplicit\",\n \"isProtocolHandlerRegistered\",\n \"isPrototypeOf\",\n \"isRenderbuffer\",\n \"isSafeInteger\",\n \"isSameNode\",\n \"isSealed\",\n \"isShader\",\n \"isSupported\",\n \"isTextEdit\",\n \"isTexture\",\n \"isTrusted\",\n \"isTypeSupported\",\n \"isView\",\n \"isolation\",\n \"italics\",\n \"item\",\n \"itemId\",\n \"itemProp\",\n \"itemRef\",\n \"itemScope\",\n \"itemType\",\n \"itemValue\",\n \"iterateNext\",\n \"iterator\",\n \"javaEnabled\",\n \"jobTitle\",\n \"join\",\n \"json\",\n \"justify-content\",\n \"justifyContent\",\n \"k1\",\n \"k2\",\n \"k3\",\n \"k4\",\n \"kernelMatrix\",\n \"kernelUnitLengthX\",\n \"kernelUnitLengthY\",\n \"kerning\",\n \"key\",\n \"keyCode\",\n \"keyFor\",\n \"keyIdentifier\",\n \"keyLightEnabled\",\n \"keyLocation\",\n \"keyPath\",\n \"keySystem\",\n \"keyText\",\n \"keyUsage\",\n \"keys\",\n \"keytype\",\n \"kind\",\n \"knee\",\n \"label\",\n \"labels\",\n \"lang\",\n \"language\",\n \"languages\",\n \"largeArcFlag\",\n \"lastChild\",\n \"lastElementChild\",\n \"lastEventId\",\n \"lastIndex\",\n \"lastIndexOf\",\n \"lastMatch\",\n \"lastMessageSubject\",\n \"lastMessageType\",\n \"lastModified\",\n \"lastModifiedDate\",\n \"lastPage\",\n \"lastParen\",\n \"lastState\",\n \"lastStyleSheetSet\",\n \"latitude\",\n \"layerX\",\n \"layerY\",\n \"layoutFlow\",\n \"layoutGrid\",\n \"layoutGridChar\",\n \"layoutGridLine\",\n \"layoutGridMode\",\n \"layoutGridType\",\n \"lbound\",\n \"left\",\n \"leftContext\",\n \"leftMargin\",\n \"length\",\n \"lengthAdjust\",\n \"lengthComputable\",\n \"letter-spacing\",\n \"letterSpacing\",\n \"level\",\n \"lighting-color\",\n \"lightingColor\",\n \"limitingConeAngle\",\n \"line\",\n \"line-height\",\n \"lineAlign\",\n \"lineBreak\",\n \"lineCap\",\n \"lineDashOffset\",\n \"lineHeight\",\n \"lineJoin\",\n \"lineNumber\",\n \"lineTo\",\n \"lineWidth\",\n \"linearRampToValueAtTime\",\n \"lineno\",\n \"link\",\n \"linkColor\",\n \"linkProgram\",\n \"links\",\n \"list\",\n \"list-style\",\n \"list-style-image\",\n \"list-style-position\",\n \"list-style-type\",\n \"listStyle\",\n \"listStyleImage\",\n \"listStylePosition\",\n \"listStyleType\",\n \"listener\",\n \"load\",\n \"loadEventEnd\",\n \"loadEventStart\",\n \"loadTimes\",\n \"loaded\",\n \"localDescription\",\n \"localName\",\n \"localStorage\",\n \"locale\",\n \"localeCompare\",\n \"location\",\n \"locationbar\",\n \"lock\",\n \"lockedFile\",\n \"log\",\n \"log10\",\n \"log1p\",\n \"log2\",\n \"logicalXDPI\",\n \"logicalYDPI\",\n \"longDesc\",\n \"longitude\",\n \"lookupNamespaceURI\",\n \"lookupPrefix\",\n \"loop\",\n \"loopEnd\",\n \"loopStart\",\n \"looping\",\n \"low\",\n \"lower\",\n \"lowerBound\",\n \"lowerOpen\",\n \"lowsrc\",\n \"m11\",\n \"m12\",\n \"m13\",\n \"m14\",\n \"m21\",\n \"m22\",\n \"m23\",\n \"m24\",\n \"m31\",\n \"m32\",\n \"m33\",\n \"m34\",\n \"m41\",\n \"m42\",\n \"m43\",\n \"m44\",\n \"manifest\",\n \"map\",\n \"mapping\",\n \"margin\",\n \"margin-bottom\",\n \"margin-left\",\n \"margin-right\",\n \"margin-top\",\n \"marginBottom\",\n \"marginHeight\",\n \"marginLeft\",\n \"marginRight\",\n \"marginTop\",\n \"marginWidth\",\n \"mark\",\n \"marker\",\n \"marker-end\",\n \"marker-mid\",\n \"marker-offset\",\n \"marker-start\",\n \"markerEnd\",\n \"markerHeight\",\n \"markerMid\",\n \"markerOffset\",\n \"markerStart\",\n \"markerUnits\",\n \"markerWidth\",\n \"marks\",\n \"mask\",\n \"mask-type\",\n \"maskContentUnits\",\n \"maskType\",\n \"maskUnits\",\n \"match\",\n \"matchMedia\",\n \"matchMedium\",\n \"matches\",\n \"matrix\",\n \"matrixTransform\",\n \"max\",\n \"max-height\",\n \"max-width\",\n \"maxAlternatives\",\n \"maxChannelCount\",\n \"maxConnectionsPerServer\",\n \"maxDecibels\",\n \"maxDistance\",\n \"maxHeight\",\n \"maxLength\",\n \"maxTouchPoints\",\n \"maxValue\",\n \"maxWidth\",\n \"measure\",\n \"measureText\",\n \"media\",\n \"mediaCapabilities\",\n \"mediaDevices\",\n \"mediaElement\",\n \"mediaGroup\",\n \"mediaKeys\",\n \"mediaText\",\n \"meetOrSlice\",\n \"memory\",\n \"menubar\",\n \"mergeAttributes\",\n \"message\",\n \"messageClass\",\n \"messageHandlers\",\n \"metaKey\",\n \"method\",\n \"mimeType\",\n \"mimeTypes\",\n \"min\",\n \"min-height\",\n \"min-width\",\n \"minDecibels\",\n \"minHeight\",\n \"minValue\",\n \"minWidth\",\n \"miterLimit\",\n \"mix-blend-mode\",\n \"mixBlendMode\",\n \"mode\",\n \"modify\",\n \"mount\",\n \"move\",\n \"moveBy\",\n \"moveEnd\",\n \"moveFirst\",\n \"moveFocusDown\",\n \"moveFocusLeft\",\n \"moveFocusRight\",\n \"moveFocusUp\",\n \"moveNext\",\n \"moveRow\",\n \"moveStart\",\n \"moveTo\",\n \"moveToBookmark\",\n \"moveToElementText\",\n \"moveToPoint\",\n \"mozAdd\",\n \"mozAnimationStartTime\",\n \"mozAnon\",\n \"mozApps\",\n \"mozAudioCaptured\",\n \"mozAudioChannelType\",\n \"mozAutoplayEnabled\",\n \"mozCancelAnimationFrame\",\n \"mozCancelFullScreen\",\n \"mozCancelRequestAnimationFrame\",\n \"mozCaptureStream\",\n \"mozCaptureStreamUntilEnded\",\n \"mozClearDataAt\",\n \"mozContact\",\n \"mozContacts\",\n \"mozCreateFileHandle\",\n \"mozCurrentTransform\",\n \"mozCurrentTransformInverse\",\n \"mozCursor\",\n \"mozDash\",\n \"mozDashOffset\",\n \"mozDecodedFrames\",\n \"mozExitPointerLock\",\n \"mozFillRule\",\n \"mozFragmentEnd\",\n \"mozFrameDelay\",\n \"mozFullScreen\",\n \"mozFullScreenElement\",\n \"mozFullScreenEnabled\",\n \"mozGetAll\",\n \"mozGetAllKeys\",\n \"mozGetAsFile\",\n \"mozGetDataAt\",\n \"mozGetMetadata\",\n \"mozGetUserMedia\",\n \"mozHasAudio\",\n \"mozHasItem\",\n \"mozHidden\",\n \"mozImageSmoothingEnabled\",\n \"mozIndexedDB\",\n \"mozInnerScreenX\",\n \"mozInnerScreenY\",\n \"mozInputSource\",\n \"mozIsTextField\",\n \"mozItem\",\n \"mozItemCount\",\n \"mozItems\",\n \"mozLength\",\n \"mozLockOrientation\",\n \"mozMatchesSelector\",\n \"mozMovementX\",\n \"mozMovementY\",\n \"mozOpaque\",\n \"mozOrientation\",\n \"mozPaintCount\",\n \"mozPaintedFrames\",\n \"mozParsedFrames\",\n \"mozPay\",\n \"mozPointerLockElement\",\n \"mozPresentedFrames\",\n \"mozPreservesPitch\",\n \"mozPressure\",\n \"mozPrintCallback\",\n \"mozRTCIceCandidate\",\n \"mozRTCPeerConnection\",\n \"mozRTCSessionDescription\",\n \"mozRemove\",\n \"mozRequestAnimationFrame\",\n \"mozRequestFullScreen\",\n \"mozRequestPointerLock\",\n \"mozSetDataAt\",\n \"mozSetImageElement\",\n \"mozSourceNode\",\n \"mozSrcObject\",\n \"mozSystem\",\n \"mozTCPSocket\",\n \"mozTextStyle\",\n \"mozTypesAt\",\n \"mozUnlockOrientation\",\n \"mozUserCancelled\",\n \"mozVisibilityState\",\n \"msAnimation\",\n \"msAnimationDelay\",\n \"msAnimationDirection\",\n \"msAnimationDuration\",\n \"msAnimationFillMode\",\n \"msAnimationIterationCount\",\n \"msAnimationName\",\n \"msAnimationPlayState\",\n \"msAnimationStartTime\",\n \"msAnimationTimingFunction\",\n \"msBackfaceVisibility\",\n \"msBlockProgression\",\n \"msCSSOMElementFloatMetrics\",\n \"msCaching\",\n \"msCachingEnabled\",\n \"msCancelRequestAnimationFrame\",\n \"msCapsLockWarningOff\",\n \"msClearImmediate\",\n \"msClose\",\n \"msContentZoomChaining\",\n \"msContentZoomFactor\",\n \"msContentZoomLimit\",\n \"msContentZoomLimitMax\",\n \"msContentZoomLimitMin\",\n \"msContentZoomSnap\",\n \"msContentZoomSnapPoints\",\n \"msContentZoomSnapType\",\n \"msContentZooming\",\n \"msConvertURL\",\n \"msCrypto\",\n \"msDoNotTrack\",\n \"msElementsFromPoint\",\n \"msElementsFromRect\",\n \"msExitFullscreen\",\n \"msExtendedCode\",\n \"msFillRule\",\n \"msFirstPaint\",\n \"msFlex\",\n \"msFlexAlign\",\n \"msFlexDirection\",\n \"msFlexFlow\",\n \"msFlexItemAlign\",\n \"msFlexLinePack\",\n \"msFlexNegative\",\n \"msFlexOrder\",\n \"msFlexPack\",\n \"msFlexPositive\",\n \"msFlexPreferredSize\",\n \"msFlexWrap\",\n \"msFlowFrom\",\n \"msFlowInto\",\n \"msFontFeatureSettings\",\n \"msFullscreenElement\",\n \"msFullscreenEnabled\",\n \"msGetInputContext\",\n \"msGetRegionContent\",\n \"msGetUntransformedBounds\",\n \"msGraphicsTrustStatus\",\n \"msGridColumn\",\n \"msGridColumnAlign\",\n \"msGridColumnSpan\",\n \"msGridColumns\",\n \"msGridRow\",\n \"msGridRowAlign\",\n \"msGridRowSpan\",\n \"msGridRows\",\n \"msHidden\",\n \"msHighContrastAdjust\",\n \"msHyphenateLimitChars\",\n \"msHyphenateLimitLines\",\n \"msHyphenateLimitZone\",\n \"msHyphens\",\n \"msImageSmoothingEnabled\",\n \"msImeAlign\",\n \"msIndexedDB\",\n \"msInterpolationMode\",\n \"msIsStaticHTML\",\n \"msKeySystem\",\n \"msKeys\",\n \"msLaunchUri\",\n \"msLockOrientation\",\n \"msManipulationViewsEnabled\",\n \"msMatchMedia\",\n \"msMatchesSelector\",\n \"msMaxTouchPoints\",\n \"msOrientation\",\n \"msOverflowStyle\",\n \"msPerspective\",\n \"msPerspectiveOrigin\",\n \"msPlayToDisabled\",\n \"msPlayToPreferredSourceUri\",\n \"msPlayToPrimary\",\n \"msPointerEnabled\",\n \"msRegionOverflow\",\n \"msReleasePointerCapture\",\n \"msRequestAnimationFrame\",\n \"msRequestFullscreen\",\n \"msSaveBlob\",\n \"msSaveOrOpenBlob\",\n \"msScrollChaining\",\n \"msScrollLimit\",\n \"msScrollLimitXMax\",\n \"msScrollLimitXMin\",\n \"msScrollLimitYMax\",\n \"msScrollLimitYMin\",\n \"msScrollRails\",\n \"msScrollSnapPointsX\",\n \"msScrollSnapPointsY\",\n \"msScrollSnapType\",\n \"msScrollSnapX\",\n \"msScrollSnapY\",\n \"msScrollTranslation\",\n \"msSetImmediate\",\n \"msSetMediaKeys\",\n \"msSetPointerCapture\",\n \"msTextCombineHorizontal\",\n \"msTextSizeAdjust\",\n \"msToBlob\",\n \"msTouchAction\",\n \"msTouchSelect\",\n \"msTraceAsyncCallbackCompleted\",\n \"msTraceAsyncCallbackStarting\",\n \"msTraceAsyncOperationCompleted\",\n \"msTraceAsyncOperationStarting\",\n \"msTransform\",\n \"msTransformOrigin\",\n \"msTransformStyle\",\n \"msTransition\",\n \"msTransitionDelay\",\n \"msTransitionDuration\",\n \"msTransitionProperty\",\n \"msTransitionTimingFunction\",\n \"msUnlockOrientation\",\n \"msUpdateAsyncCallbackRelation\",\n \"msUserSelect\",\n \"msVisibilityState\",\n \"msWrapFlow\",\n \"msWrapMargin\",\n \"msWrapThrough\",\n \"msWriteProfilerMark\",\n \"msZoom\",\n \"msZoomTo\",\n \"mt\",\n \"multiEntry\",\n \"multiSelectionObj\",\n \"multiline\",\n \"multiple\",\n \"multiply\",\n \"multiplySelf\",\n \"mutableFile\",\n \"muted\",\n \"n\",\n \"name\",\n \"nameProp\",\n \"namedItem\",\n \"namedRecordset\",\n \"names\",\n \"namespaceURI\",\n \"namespaces\",\n \"naturalHeight\",\n \"naturalWidth\",\n \"navigate\",\n \"navigation\",\n \"navigationMode\",\n \"navigationStart\",\n \"navigator\",\n \"near\",\n \"nearestViewportElement\",\n \"negative\",\n \"netscape\",\n \"networkState\",\n \"newScale\",\n \"newTranslate\",\n \"newURL\",\n \"newValue\",\n \"newValueSpecifiedUnits\",\n \"newVersion\",\n \"newhome\",\n \"next\",\n \"nextElementSibling\",\n \"nextNode\",\n \"nextPage\",\n \"nextSibling\",\n \"nickname\",\n \"noHref\",\n \"noResize\",\n \"noShade\",\n \"noValidate\",\n \"noWrap\",\n \"nodeName\",\n \"nodeType\",\n \"nodeValue\",\n \"normalize\",\n \"normalizedPathSegList\",\n \"notationName\",\n \"notations\",\n \"note\",\n \"noteGrainOn\",\n \"noteOff\",\n \"noteOn\",\n \"now\",\n \"numOctaves\",\n \"number\",\n \"numberOfChannels\",\n \"numberOfInputs\",\n \"numberOfItems\",\n \"numberOfOutputs\",\n \"numberValue\",\n \"oMatchesSelector\",\n \"object\",\n \"object-fit\",\n \"object-position\",\n \"objectFit\",\n \"objectPosition\",\n \"objectStore\",\n \"objectStoreNames\",\n \"observe\",\n \"of\",\n \"offscreenBuffering\",\n \"offset\",\n \"offsetHeight\",\n \"offsetLeft\",\n \"offsetNode\",\n \"offsetParent\",\n \"offsetTop\",\n \"offsetWidth\",\n \"offsetX\",\n \"offsetY\",\n \"ok\",\n \"oldURL\",\n \"oldValue\",\n \"oldVersion\",\n \"olderShadowRoot\",\n \"onLine\",\n \"onabort\",\n \"onactivate\",\n \"onactive\",\n \"onaddstream\",\n \"onaddtrack\",\n \"onafterprint\",\n \"onafterscriptexecute\",\n \"onafterupdate\",\n \"onaudioend\",\n \"onaudioprocess\",\n \"onaudiostart\",\n \"onautocomplete\",\n \"onautocompleteerror\",\n \"onbeforeactivate\",\n \"onbeforecopy\",\n \"onbeforecut\",\n \"onbeforedeactivate\",\n \"onbeforeeditfocus\",\n \"onbeforepaste\",\n \"onbeforeprint\",\n \"onbeforescriptexecute\",\n \"onbeforeunload\",\n \"onbeforeupdate\",\n \"onblocked\",\n \"onblur\",\n \"onbounce\",\n \"onboundary\",\n \"oncached\",\n \"oncancel\",\n \"oncandidatewindowhide\",\n \"oncandidatewindowshow\",\n \"oncandidatewindowupdate\",\n \"oncanplay\",\n \"oncanplaythrough\",\n \"once\",\n \"oncellchange\",\n \"onchange\",\n \"onchargingchange\",\n \"onchargingtimechange\",\n \"onchecking\",\n \"onclick\",\n \"onclose\",\n \"oncompassneedscalibration\",\n \"oncomplete\",\n \"oncontextmenu\",\n \"oncontrolselect\",\n \"oncopy\",\n \"oncuechange\",\n \"oncut\",\n \"ondataavailable\",\n \"ondatachannel\",\n \"ondatasetchanged\",\n \"ondatasetcomplete\",\n \"ondblclick\",\n \"ondeactivate\",\n \"ondevicelight\",\n \"ondevicemotion\",\n \"ondeviceorientation\",\n \"ondeviceproximity\",\n \"ondischargingtimechange\",\n \"ondisplay\",\n \"ondownloading\",\n \"ondrag\",\n \"ondragend\",\n \"ondragenter\",\n \"ondragleave\",\n \"ondragover\",\n \"ondragstart\",\n \"ondrop\",\n \"ondurationchange\",\n \"onemptied\",\n \"onencrypted\",\n \"onend\",\n \"onended\",\n \"onenter\",\n \"onerror\",\n \"onerrorupdate\",\n \"onexit\",\n \"onfilterchange\",\n \"onfinish\",\n \"onfocus\",\n \"onfocusin\",\n \"onfocusout\",\n \"onfullscreenchange\",\n \"onfullscreenerror\",\n \"ongesturechange\",\n \"ongestureend\",\n \"ongesturestart\",\n \"ongotpointercapture\",\n \"onhashchange\",\n \"onhelp\",\n \"onicecandidate\",\n \"oniceconnectionstatechange\",\n \"oninactive\",\n \"oninput\",\n \"oninvalid\",\n \"onkeydown\",\n \"onkeypress\",\n \"onkeyup\",\n \"onlanguagechange\",\n \"onlayoutcomplete\",\n \"onlevelchange\",\n \"onload\",\n \"onloadeddata\",\n \"onloadedmetadata\",\n \"onloadend\",\n \"onloadstart\",\n \"onlosecapture\",\n \"onlostpointercapture\",\n \"only\",\n \"onmark\",\n \"onmessage\",\n \"onmousedown\",\n \"onmouseenter\",\n \"onmouseleave\",\n \"onmousemove\",\n \"onmouseout\",\n \"onmouseover\",\n \"onmouseup\",\n \"onmousewheel\",\n \"onmove\",\n \"onmoveend\",\n \"onmovestart\",\n \"onmozfullscreenchange\",\n \"onmozfullscreenerror\",\n \"onmozorientationchange\",\n \"onmozpointerlockchange\",\n \"onmozpointerlockerror\",\n \"onmscontentzoom\",\n \"onmsfullscreenchange\",\n \"onmsfullscreenerror\",\n \"onmsgesturechange\",\n \"onmsgesturedoubletap\",\n \"onmsgestureend\",\n \"onmsgesturehold\",\n \"onmsgesturestart\",\n \"onmsgesturetap\",\n \"onmsgotpointercapture\",\n \"onmsinertiastart\",\n \"onmslostpointercapture\",\n \"onmsmanipulationstatechanged\",\n \"onmsneedkey\",\n \"onmsorientationchange\",\n \"onmspointercancel\",\n \"onmspointerdown\",\n \"onmspointerenter\",\n \"onmspointerhover\",\n \"onmspointerleave\",\n \"onmspointermove\",\n \"onmspointerout\",\n \"onmspointerover\",\n \"onmspointerup\",\n \"onmssitemodejumplistitemremoved\",\n \"onmsthumbnailclick\",\n \"onnegotiationneeded\",\n \"onnomatch\",\n \"onnoupdate\",\n \"onobsolete\",\n \"onoffline\",\n \"ononline\",\n \"onopen\",\n \"onorientationchange\",\n \"onpagechange\",\n \"onpagehide\",\n \"onpageshow\",\n \"onpaste\",\n \"onpause\",\n \"onplay\",\n \"onplaying\",\n \"onpluginstreamstart\",\n \"onpointercancel\",\n \"onpointerdown\",\n \"onpointerenter\",\n \"onpointerleave\",\n \"onpointerlockchange\",\n \"onpointerlockerror\",\n \"onpointermove\",\n \"onpointerout\",\n \"onpointerover\",\n \"onpointerup\",\n \"onpopstate\",\n \"onprogress\",\n \"onpropertychange\",\n \"onratechange\",\n \"onreadystatechange\",\n \"onremovestream\",\n \"onremovetrack\",\n \"onreset\",\n \"onresize\",\n \"onresizeend\",\n \"onresizestart\",\n \"onresourcetimingbufferfull\",\n \"onresult\",\n \"onresume\",\n \"onrowenter\",\n \"onrowexit\",\n \"onrowsdelete\",\n \"onrowsinserted\",\n \"onscroll\",\n \"onsearch\",\n \"onseeked\",\n \"onseeking\",\n \"onselect\",\n \"onselectionchange\",\n \"onselectstart\",\n \"onshow\",\n \"onsignalingstatechange\",\n \"onsoundend\",\n \"onsoundstart\",\n \"onspeechend\",\n \"onspeechstart\",\n \"onstalled\",\n \"onstart\",\n \"onstatechange\",\n \"onstop\",\n \"onstorage\",\n \"onstoragecommit\",\n \"onsubmit\",\n \"onsuccess\",\n \"onsuspend\",\n \"ontextinput\",\n \"ontimeout\",\n \"ontimeupdate\",\n \"ontoggle\",\n \"ontouchcancel\",\n \"ontouchend\",\n \"ontouchmove\",\n \"ontouchstart\",\n \"ontransitionend\",\n \"onunload\",\n \"onupdateready\",\n \"onupgradeneeded\",\n \"onuserproximity\",\n \"onversionchange\",\n \"onvoiceschanged\",\n \"onvolumechange\",\n \"onwaiting\",\n \"onwarning\",\n \"onwebkitanimationend\",\n \"onwebkitanimationiteration\",\n \"onwebkitanimationstart\",\n \"onwebkitcurrentplaybacktargetiswirelesschanged\",\n \"onwebkitfullscreenchange\",\n \"onwebkitfullscreenerror\",\n \"onwebkitkeyadded\",\n \"onwebkitkeyerror\",\n \"onwebkitkeymessage\",\n \"onwebkitneedkey\",\n \"onwebkitorientationchange\",\n \"onwebkitplaybacktargetavailabilitychanged\",\n \"onwebkitpointerlockchange\",\n \"onwebkitpointerlockerror\",\n \"onwebkitresourcetimingbufferfull\",\n \"onwebkittransitionend\",\n \"onwheel\",\n \"onzoom\",\n \"opacity\",\n \"open\",\n \"openCursor\",\n \"openDatabase\",\n \"openKeyCursor\",\n \"opener\",\n \"opera\",\n \"operationType\",\n \"operator\",\n \"opr\",\n \"optimum\",\n \"options\",\n \"order\",\n \"orderX\",\n \"orderY\",\n \"ordered\",\n \"org\",\n \"orient\",\n \"orientAngle\",\n \"orientType\",\n \"orientation\",\n \"origin\",\n \"originalTarget\",\n \"orphans\",\n \"oscpu\",\n \"outerHTML\",\n \"outerHeight\",\n \"outerText\",\n \"outerWidth\",\n \"outline\",\n \"outline-color\",\n \"outline-offset\",\n \"outline-style\",\n \"outline-width\",\n \"outlineColor\",\n \"outlineOffset\",\n \"outlineStyle\",\n \"outlineWidth\",\n \"outputBuffer\",\n \"overflow\",\n \"overflow-x\",\n \"overflow-y\",\n \"overflowX\",\n \"overflowY\",\n \"overrideMimeType\",\n \"oversample\",\n \"ownerDocument\",\n \"ownerElement\",\n \"ownerNode\",\n \"ownerRule\",\n \"ownerSVGElement\",\n \"owningElement\",\n \"p1\",\n \"p2\",\n \"p3\",\n \"p4\",\n \"pad\",\n \"padding\",\n \"padding-bottom\",\n \"padding-left\",\n \"padding-right\",\n \"padding-top\",\n \"paddingBottom\",\n \"paddingLeft\",\n \"paddingRight\",\n \"paddingTop\",\n \"page\",\n \"page-break-after\",\n \"page-break-before\",\n \"page-break-inside\",\n \"pageBreakAfter\",\n \"pageBreakBefore\",\n \"pageBreakInside\",\n \"pageCount\",\n \"pageX\",\n \"pageXOffset\",\n \"pageY\",\n \"pageYOffset\",\n \"pages\",\n \"paint-order\",\n \"paintOrder\",\n \"paintRequests\",\n \"paintType\",\n \"palette\",\n \"panningModel\",\n \"parent\",\n \"parentElement\",\n \"parentNode\",\n \"parentRule\",\n \"parentStyleSheet\",\n \"parentTextEdit\",\n \"parentWindow\",\n \"parse\",\n \"parseFloat\",\n \"parseFromString\",\n \"parseInt\",\n \"participants\",\n \"passive\",\n \"password\",\n \"pasteHTML\",\n \"path\",\n \"pathLength\",\n \"pathSegList\",\n \"pathSegType\",\n \"pathSegTypeAsLetter\",\n \"pathname\",\n \"pattern\",\n \"patternContentUnits\",\n \"patternMismatch\",\n \"patternTransform\",\n \"patternUnits\",\n \"pause\",\n \"pauseAnimations\",\n \"pauseOnExit\",\n \"paused\",\n \"pending\",\n \"performance\",\n \"permission\",\n \"persisted\",\n \"personalbar\",\n \"perspective\",\n \"perspective-origin\",\n \"perspectiveOrigin\",\n \"phoneticFamilyName\",\n \"phoneticGivenName\",\n \"photo\",\n \"ping\",\n \"pitch\",\n \"pixelBottom\",\n \"pixelDepth\",\n \"pixelHeight\",\n \"pixelLeft\",\n \"pixelRight\",\n \"pixelStorei\",\n \"pixelTop\",\n \"pixelUnitToMillimeterX\",\n \"pixelUnitToMillimeterY\",\n \"pixelWidth\",\n \"placeholder\",\n \"platform\",\n \"play\",\n \"playbackRate\",\n \"playbackState\",\n \"playbackTime\",\n \"played\",\n \"plugins\",\n \"pluginspage\",\n \"pname\",\n \"pointer-events\",\n \"pointerBeforeReferenceNode\",\n \"pointerEnabled\",\n \"pointerEvents\",\n \"pointerId\",\n \"pointerLockElement\",\n \"pointerType\",\n \"points\",\n \"pointsAtX\",\n \"pointsAtY\",\n \"pointsAtZ\",\n \"polygonOffset\",\n \"pop\",\n \"popupWindowFeatures\",\n \"popupWindowName\",\n \"popupWindowURI\",\n \"port\",\n \"port1\",\n \"port2\",\n \"ports\",\n \"posBottom\",\n \"posHeight\",\n \"posLeft\",\n \"posRight\",\n \"posTop\",\n \"posWidth\",\n \"position\",\n \"positionAlign\",\n \"postError\",\n \"postMessage\",\n \"poster\",\n \"pow\",\n \"powerOff\",\n \"preMultiplySelf\",\n \"precision\",\n \"preferredStyleSheetSet\",\n \"preferredStylesheetSet\",\n \"prefix\",\n \"preload\",\n \"prepend\",\n \"preserveAlpha\",\n \"preserveAspectRatio\",\n \"preserveAspectRatioString\",\n \"pressed\",\n \"pressure\",\n \"prevValue\",\n \"preventDefault\",\n \"preventExtensions\",\n \"previousElementSibling\",\n \"previousNode\",\n \"previousPage\",\n \"previousScale\",\n \"previousSibling\",\n \"previousTranslate\",\n \"primaryKey\",\n \"primitiveType\",\n \"primitiveUnits\",\n \"principals\",\n \"print\",\n \"privateKey\",\n \"probablySupportsContext\",\n \"process\",\n \"processIceMessage\",\n \"product\",\n \"productSub\",\n \"profile\",\n \"profileEnd\",\n \"profiles\",\n \"prompt\",\n \"properties\",\n \"propertyIsEnumerable\",\n \"propertyName\",\n \"protocol\",\n \"protocolLong\",\n \"prototype\",\n \"pseudoClass\",\n \"pseudoElement\",\n \"publicId\",\n \"publicKey\",\n \"published\",\n \"push\",\n \"pushNotification\",\n \"pushState\",\n \"put\",\n \"putImageData\",\n \"quadraticCurveTo\",\n \"qualifier\",\n \"queryCommandEnabled\",\n \"queryCommandIndeterm\",\n \"queryCommandState\",\n \"queryCommandSupported\",\n \"queryCommandText\",\n \"queryCommandValue\",\n \"querySelector\",\n \"querySelectorAll\",\n \"quote\",\n \"quotes\",\n \"r\",\n \"r1\",\n \"r2\",\n \"race\",\n \"radiogroup\",\n \"radiusX\",\n \"radiusY\",\n \"random\",\n \"range\",\n \"rangeCount\",\n \"rangeMax\",\n \"rangeMin\",\n \"rangeOffset\",\n \"rangeOverflow\",\n \"rangeParent\",\n \"rangeUnderflow\",\n \"rate\",\n \"ratio\",\n \"raw\",\n \"read\",\n \"readAsArrayBuffer\",\n \"readAsBinaryString\",\n \"readAsBlob\",\n \"readAsDataURL\",\n \"readAsText\",\n \"readOnly\",\n \"readPixels\",\n \"readReportRequested\",\n \"readyState\",\n \"reason\",\n \"reboot\",\n \"receiver\",\n \"receivers\",\n \"recordNumber\",\n \"recordset\",\n \"rect\",\n \"red\",\n \"redirectCount\",\n \"redirectEnd\",\n \"redirectStart\",\n \"reduce\",\n \"reduceRight\",\n \"reduction\",\n \"refDistance\",\n \"refX\",\n \"refY\",\n \"referenceNode\",\n \"referrer\",\n \"refresh\",\n \"region\",\n \"regionAnchorX\",\n \"regionAnchorY\",\n \"regionId\",\n \"regions\",\n \"register\",\n \"registerContentHandler\",\n \"registerElement\",\n \"registerProtocolHandler\",\n \"reject\",\n \"rel\",\n \"relList\",\n \"relatedNode\",\n \"relatedTarget\",\n \"release\",\n \"releaseCapture\",\n \"releaseEvents\",\n \"releasePointerCapture\",\n \"releaseShaderCompiler\",\n \"reliable\",\n \"reload\",\n \"remainingSpace\",\n \"remoteDescription\",\n \"remove\",\n \"removeAllRanges\",\n \"removeAttribute\",\n \"removeAttributeNS\",\n \"removeAttributeNode\",\n \"removeBehavior\",\n \"removeChild\",\n \"removeCue\",\n \"removeEventListener\",\n \"removeFilter\",\n \"removeImport\",\n \"removeItem\",\n \"removeListener\",\n \"removeNamedItem\",\n \"removeNamedItemNS\",\n \"removeNode\",\n \"removeParameter\",\n \"removeProperty\",\n \"removeRange\",\n \"removeRegion\",\n \"removeRule\",\n \"removeSiteSpecificTrackingException\",\n \"removeSourceBuffer\",\n \"removeStream\",\n \"removeTrack\",\n \"removeVariable\",\n \"removeWakeLockListener\",\n \"removeWebWideTrackingException\",\n \"removedNodes\",\n \"renderbufferStorage\",\n \"renderedBuffer\",\n \"renderingMode\",\n \"repeat\",\n \"replace\",\n \"replaceAdjacentText\",\n \"replaceChild\",\n \"replaceData\",\n \"replaceId\",\n \"replaceItem\",\n \"replaceNode\",\n \"replaceState\",\n \"replaceTrack\",\n \"replaceWholeText\",\n \"reportValidity\",\n \"requestAnimationFrame\",\n \"requestAutocomplete\",\n \"requestData\",\n \"requestFullscreen\",\n \"requestMediaKeySystemAccess\",\n \"requestPermission\",\n \"requestPointerLock\",\n \"requestStart\",\n \"requestingWindow\",\n \"required\",\n \"requiredExtensions\",\n \"requiredFeatures\",\n \"reset\",\n \"resetTransform\",\n \"resize\",\n \"resizeBy\",\n \"resizeTo\",\n \"resolve\",\n \"response\",\n \"responseBody\",\n \"responseEnd\",\n \"responseStart\",\n \"responseText\",\n \"responseType\",\n \"responseURL\",\n \"responseXML\",\n \"restore\",\n \"result\",\n \"resultType\",\n \"resume\",\n \"returnValue\",\n \"rev\",\n \"reverse\",\n \"reversed\",\n \"revocable\",\n \"revokeObjectURL\",\n \"rgbColor\",\n \"right\",\n \"rightContext\",\n \"rightMargin\",\n \"rolloffFactor\",\n \"root\",\n \"rootElement\",\n \"rotate\",\n \"rotateAxisAngle\",\n \"rotateAxisAngleSelf\",\n \"rotateFromVector\",\n \"rotateFromVectorSelf\",\n \"rotateSelf\",\n \"rotation\",\n \"rotationRate\",\n \"round\",\n \"rowIndex\",\n \"rowSpan\",\n \"rows\",\n \"rubyAlign\",\n \"rubyOverhang\",\n \"rubyPosition\",\n \"rules\",\n \"runtime\",\n \"runtimeStyle\",\n \"rx\",\n \"ry\",\n \"safari\",\n \"sampleCoverage\",\n \"sampleRate\",\n \"sandbox\",\n \"save\",\n \"scale\",\n \"scale3d\",\n \"scale3dSelf\",\n \"scaleNonUniform\",\n \"scaleNonUniformSelf\",\n \"scaleSelf\",\n \"scheme\",\n \"scissor\",\n \"scope\",\n \"scopeName\",\n \"scoped\",\n \"screen\",\n \"screenBrightness\",\n \"screenEnabled\",\n \"screenLeft\",\n \"screenPixelToMillimeterX\",\n \"screenPixelToMillimeterY\",\n \"screenTop\",\n \"screenX\",\n \"screenY\",\n \"scripts\",\n \"scroll\",\n \"scroll-behavior\",\n \"scrollAmount\",\n \"scrollBehavior\",\n \"scrollBy\",\n \"scrollByLines\",\n \"scrollByPages\",\n \"scrollDelay\",\n \"scrollHeight\",\n \"scrollIntoView\",\n \"scrollIntoViewIfNeeded\",\n \"scrollLeft\",\n \"scrollLeftMax\",\n \"scrollMaxX\",\n \"scrollMaxY\",\n \"scrollTo\",\n \"scrollTop\",\n \"scrollTopMax\",\n \"scrollWidth\",\n \"scrollX\",\n \"scrollY\",\n \"scrollbar3dLightColor\",\n \"scrollbarArrowColor\",\n \"scrollbarBaseColor\",\n \"scrollbarDarkShadowColor\",\n \"scrollbarFaceColor\",\n \"scrollbarHighlightColor\",\n \"scrollbarShadowColor\",\n \"scrollbarTrackColor\",\n \"scrollbars\",\n \"scrolling\",\n \"sdp\",\n \"sdpMLineIndex\",\n \"sdpMid\",\n \"seal\",\n \"search\",\n \"searchBox\",\n \"searchBoxJavaBridge_\",\n \"searchParams\",\n \"sectionRowIndex\",\n \"secureConnectionStart\",\n \"security\",\n \"seed\",\n \"seekable\",\n \"seeking\",\n \"select\",\n \"selectAllChildren\",\n \"selectNode\",\n \"selectNodeContents\",\n \"selectNodes\",\n \"selectSingleNode\",\n \"selectSubString\",\n \"selected\",\n \"selectedIndex\",\n \"selectedOptions\",\n \"selectedStyleSheetSet\",\n \"selectedStylesheetSet\",\n \"selection\",\n \"selectionDirection\",\n \"selectionEnd\",\n \"selectionStart\",\n \"selector\",\n \"selectorText\",\n \"self\",\n \"send\",\n \"sendAsBinary\",\n \"sendBeacon\",\n \"sender\",\n \"sentTimestamp\",\n \"separator\",\n \"serializeToString\",\n \"serviceWorker\",\n \"sessionId\",\n \"sessionStorage\",\n \"set\",\n \"setActive\",\n \"setAlpha\",\n \"setAttribute\",\n \"setAttributeNS\",\n \"setAttributeNode\",\n \"setAttributeNodeNS\",\n \"setBaseAndExtent\",\n \"setBingCurrentSearchDefault\",\n \"setCapture\",\n \"setColor\",\n \"setCompositeOperation\",\n \"setCurrentTime\",\n \"setCustomValidity\",\n \"setData\",\n \"setDate\",\n \"setDragImage\",\n \"setEnd\",\n \"setEndAfter\",\n \"setEndBefore\",\n \"setEndPoint\",\n \"setFillColor\",\n \"setFilterRes\",\n \"setFloat32\",\n \"setFloat64\",\n \"setFloatValue\",\n \"setFullYear\",\n \"setHours\",\n \"setImmediate\",\n \"setInt16\",\n \"setInt32\",\n \"setInt8\",\n \"setInterval\",\n \"setItem\",\n \"setLineCap\",\n \"setLineDash\",\n \"setLineJoin\",\n \"setLineWidth\",\n \"setLocalDescription\",\n \"setMatrix\",\n \"setMatrixValue\",\n \"setMediaKeys\",\n \"setMilliseconds\",\n \"setMinutes\",\n \"setMiterLimit\",\n \"setMonth\",\n \"setNamedItem\",\n \"setNamedItemNS\",\n \"setNonUserCodeExceptions\",\n \"setOrientToAngle\",\n \"setOrientToAuto\",\n \"setOrientation\",\n \"setOverrideHistoryNavigationMode\",\n \"setPaint\",\n \"setParameter\",\n \"setPeriodicWave\",\n \"setPointerCapture\",\n \"setPosition\",\n \"setPreference\",\n \"setProperty\",\n \"setPrototypeOf\",\n \"setRGBColor\",\n \"setRGBColorICCColor\",\n \"setRadius\",\n \"setRangeText\",\n \"setRemoteDescription\",\n \"setRequestHeader\",\n \"setResizable\",\n \"setResourceTimingBufferSize\",\n \"setRotate\",\n \"setScale\",\n \"setSeconds\",\n \"setSelectionRange\",\n \"setServerCertificate\",\n \"setShadow\",\n \"setSkewX\",\n \"setSkewY\",\n \"setStart\",\n \"setStartAfter\",\n \"setStartBefore\",\n \"setStdDeviation\",\n \"setStringValue\",\n \"setStrokeColor\",\n \"setSuggestResult\",\n \"setTargetAtTime\",\n \"setTargetValueAtTime\",\n \"setTime\",\n \"setTimeout\",\n \"setTransform\",\n \"setTranslate\",\n \"setUTCDate\",\n \"setUTCFullYear\",\n \"setUTCHours\",\n \"setUTCMilliseconds\",\n \"setUTCMinutes\",\n \"setUTCMonth\",\n \"setUTCSeconds\",\n \"setUint16\",\n \"setUint32\",\n \"setUint8\",\n \"setUri\",\n \"setValueAtTime\",\n \"setValueCurveAtTime\",\n \"setVariable\",\n \"setVelocity\",\n \"setVersion\",\n \"setYear\",\n \"settingName\",\n \"settingValue\",\n \"sex\",\n \"shaderSource\",\n \"shadowBlur\",\n \"shadowColor\",\n \"shadowOffsetX\",\n \"shadowOffsetY\",\n \"shadowRoot\",\n \"shape\",\n \"shape-rendering\",\n \"shapeRendering\",\n \"sheet\",\n \"shift\",\n \"shiftKey\",\n \"shiftLeft\",\n \"show\",\n \"showHelp\",\n \"showModal\",\n \"showModalDialog\",\n \"showModelessDialog\",\n \"showNotification\",\n \"sidebar\",\n \"sign\",\n \"signalingState\",\n \"sin\",\n \"singleNodeValue\",\n \"sinh\",\n \"size\",\n \"sizeToContent\",\n \"sizes\",\n \"skewX\",\n \"skewXSelf\",\n \"skewY\",\n \"skewYSelf\",\n \"slice\",\n \"slope\",\n \"small\",\n \"smooth\",\n \"smil\",\n \"smoothingTimeConstant\",\n \"snapToLines\",\n \"snapshotItem\",\n \"snapshotLength\",\n \"some\",\n \"sort\",\n \"source\",\n \"sourceBuffer\",\n \"sourceBuffers\",\n \"sourceIndex\",\n \"spacing\",\n \"span\",\n \"speakAs\",\n \"speaking\",\n \"specified\",\n \"specularConstant\",\n \"specularExponent\",\n \"speechSynthesis\",\n \"speed\",\n \"speedOfSound\",\n \"spellcheck\",\n \"splice\",\n \"split\",\n \"splitText\",\n \"spreadMethod\",\n \"sqrt\",\n \"src\",\n \"srcElement\",\n \"srcFilter\",\n \"srcUrn\",\n \"srcdoc\",\n \"srclang\",\n \"srcset\",\n \"stack\",\n \"stackTraceLimit\",\n \"stacktrace\",\n \"standalone\",\n \"standby\",\n \"start\",\n \"startContainer\",\n \"startIce\",\n \"startOffset\",\n \"startRendering\",\n \"startTime\",\n \"startsWith\",\n \"state\",\n \"status\",\n \"statusMessage\",\n \"statusText\",\n \"statusbar\",\n \"stdDeviationX\",\n \"stdDeviationY\",\n \"stencilFunc\",\n \"stencilFuncSeparate\",\n \"stencilMask\",\n \"stencilMaskSeparate\",\n \"stencilOp\",\n \"stencilOpSeparate\",\n \"step\",\n \"stepDown\",\n \"stepMismatch\",\n \"stepUp\",\n \"sticky\",\n \"stitchTiles\",\n \"stop\",\n \"stop-color\",\n \"stop-opacity\",\n \"stopColor\",\n \"stopImmediatePropagation\",\n \"stopOpacity\",\n \"stopPropagation\",\n \"storageArea\",\n \"storageName\",\n \"storageStatus\",\n \"storeSiteSpecificTrackingException\",\n \"storeWebWideTrackingException\",\n \"stpVersion\",\n \"stream\",\n \"strike\",\n \"stringValue\",\n \"stringify\",\n \"stroke\",\n \"stroke-dasharray\",\n \"stroke-dashoffset\",\n \"stroke-linecap\",\n \"stroke-linejoin\",\n \"stroke-miterlimit\",\n \"stroke-opacity\",\n \"stroke-width\",\n \"strokeDasharray\",\n \"strokeDashoffset\",\n \"strokeLinecap\",\n \"strokeLinejoin\",\n \"strokeMiterlimit\",\n \"strokeOpacity\",\n \"strokeRect\",\n \"strokeStyle\",\n \"strokeText\",\n \"strokeWidth\",\n \"style\",\n \"styleFloat\",\n \"styleMedia\",\n \"styleSheet\",\n \"styleSheetSets\",\n \"styleSheets\",\n \"sub\",\n \"subarray\",\n \"subject\",\n \"submit\",\n \"subscribe\",\n \"substr\",\n \"substring\",\n \"substringData\",\n \"subtle\",\n \"subtree\",\n \"suffix\",\n \"suffixes\",\n \"summary\",\n \"sup\",\n \"supports\",\n \"surfaceScale\",\n \"surroundContents\",\n \"suspend\",\n \"suspendRedraw\",\n \"swapCache\",\n \"swapNode\",\n \"sweepFlag\",\n \"symbols\",\n \"system\",\n \"systemCode\",\n \"systemId\",\n \"systemLanguage\",\n \"systemXDPI\",\n \"systemYDPI\",\n \"tBodies\",\n \"tFoot\",\n \"tHead\",\n \"tabIndex\",\n \"table\",\n \"table-layout\",\n \"tableLayout\",\n \"tableValues\",\n \"tag\",\n \"tagName\",\n \"tagUrn\",\n \"tags\",\n \"taintEnabled\",\n \"takeRecords\",\n \"tan\",\n \"tanh\",\n \"target\",\n \"targetElement\",\n \"targetTouches\",\n \"targetX\",\n \"targetY\",\n \"tel\",\n \"terminate\",\n \"test\",\n \"texImage2D\",\n \"texParameterf\",\n \"texParameteri\",\n \"texSubImage2D\",\n \"text\",\n \"text-align\",\n \"text-anchor\",\n \"text-decoration\",\n \"text-decoration-color\",\n \"text-decoration-line\",\n \"text-decoration-style\",\n \"text-indent\",\n \"text-overflow\",\n \"text-rendering\",\n \"text-shadow\",\n \"text-transform\",\n \"textAlign\",\n \"textAlignLast\",\n \"textAnchor\",\n \"textAutospace\",\n \"textBaseline\",\n \"textContent\",\n \"textDecoration\",\n \"textDecorationBlink\",\n \"textDecorationColor\",\n \"textDecorationLine\",\n \"textDecorationLineThrough\",\n \"textDecorationNone\",\n \"textDecorationOverline\",\n \"textDecorationStyle\",\n \"textDecorationUnderline\",\n \"textIndent\",\n \"textJustify\",\n \"textJustifyTrim\",\n \"textKashida\",\n \"textKashidaSpace\",\n \"textLength\",\n \"textOverflow\",\n \"textRendering\",\n \"textShadow\",\n \"textTracks\",\n \"textTransform\",\n \"textUnderlinePosition\",\n \"then\",\n \"threadId\",\n \"threshold\",\n \"tiltX\",\n \"tiltY\",\n \"time\",\n \"timeEnd\",\n \"timeStamp\",\n \"timeout\",\n \"timestamp\",\n \"timestampOffset\",\n \"timing\",\n \"title\",\n \"toArray\",\n \"toBlob\",\n \"toDataURL\",\n \"toDateString\",\n \"toElement\",\n \"toExponential\",\n \"toFixed\",\n \"toFloat32Array\",\n \"toFloat64Array\",\n \"toGMTString\",\n \"toISOString\",\n \"toJSON\",\n \"toLocaleDateString\",\n \"toLocaleFormat\",\n \"toLocaleLowerCase\",\n \"toLocaleString\",\n \"toLocaleTimeString\",\n \"toLocaleUpperCase\",\n \"toLowerCase\",\n \"toMethod\",\n \"toPrecision\",\n \"toSdp\",\n \"toSource\",\n \"toStaticHTML\",\n \"toString\",\n \"toStringTag\",\n \"toTimeString\",\n \"toUTCString\",\n \"toUpperCase\",\n \"toggle\",\n \"toggleLongPressEnabled\",\n \"tooLong\",\n \"toolbar\",\n \"top\",\n \"topMargin\",\n \"total\",\n \"totalFrameDelay\",\n \"totalVideoFrames\",\n \"touchAction\",\n \"touches\",\n \"trace\",\n \"track\",\n \"transaction\",\n \"transactions\",\n \"transform\",\n \"transform-origin\",\n \"transform-style\",\n \"transformOrigin\",\n \"transformPoint\",\n \"transformString\",\n \"transformStyle\",\n \"transformToDocument\",\n \"transformToFragment\",\n \"transition\",\n \"transition-delay\",\n \"transition-duration\",\n \"transition-property\",\n \"transition-timing-function\",\n \"transitionDelay\",\n \"transitionDuration\",\n \"transitionProperty\",\n \"transitionTimingFunction\",\n \"translate\",\n \"translateSelf\",\n \"translationX\",\n \"translationY\",\n \"trim\",\n \"trimLeft\",\n \"trimRight\",\n \"trueSpeed\",\n \"trunc\",\n \"truncate\",\n \"type\",\n \"typeDetail\",\n \"typeMismatch\",\n \"typeMustMatch\",\n \"types\",\n \"ubound\",\n \"undefined\",\n \"unescape\",\n \"uneval\",\n \"unicode-bidi\",\n \"unicodeBidi\",\n \"uniform1f\",\n \"uniform1fv\",\n \"uniform1i\",\n \"uniform1iv\",\n \"uniform2f\",\n \"uniform2fv\",\n \"uniform2i\",\n \"uniform2iv\",\n \"uniform3f\",\n \"uniform3fv\",\n \"uniform3i\",\n \"uniform3iv\",\n \"uniform4f\",\n \"uniform4fv\",\n \"uniform4i\",\n \"uniform4iv\",\n \"uniformMatrix2fv\",\n \"uniformMatrix3fv\",\n \"uniformMatrix4fv\",\n \"unique\",\n \"uniqueID\",\n \"uniqueNumber\",\n \"unitType\",\n \"units\",\n \"unloadEventEnd\",\n \"unloadEventStart\",\n \"unlock\",\n \"unmount\",\n \"unobserve\",\n \"unpause\",\n \"unpauseAnimations\",\n \"unreadCount\",\n \"unregister\",\n \"unregisterContentHandler\",\n \"unregisterProtocolHandler\",\n \"unscopables\",\n \"unselectable\",\n \"unshift\",\n \"unsubscribe\",\n \"unsuspendRedraw\",\n \"unsuspendRedrawAll\",\n \"unwatch\",\n \"unwrapKey\",\n \"update\",\n \"updateCommands\",\n \"updateIce\",\n \"updateInterval\",\n \"updateSettings\",\n \"updated\",\n \"updating\",\n \"upload\",\n \"upper\",\n \"upperBound\",\n \"upperOpen\",\n \"uri\",\n \"url\",\n \"urn\",\n \"urns\",\n \"usages\",\n \"useCurrentView\",\n \"useMap\",\n \"useProgram\",\n \"usedSpace\",\n \"userAgent\",\n \"userLanguage\",\n \"username\",\n \"v8BreakIterator\",\n \"vAlign\",\n \"vLink\",\n \"valid\",\n \"validateProgram\",\n \"validationMessage\",\n \"validity\",\n \"value\",\n \"valueAsDate\",\n \"valueAsNumber\",\n \"valueAsString\",\n \"valueInSpecifiedUnits\",\n \"valueMissing\",\n \"valueOf\",\n \"valueText\",\n \"valueType\",\n \"values\",\n \"vector-effect\",\n \"vectorEffect\",\n \"velocityAngular\",\n \"velocityExpansion\",\n \"velocityX\",\n \"velocityY\",\n \"vendor\",\n \"vendorSub\",\n \"verify\",\n \"version\",\n \"vertexAttrib1f\",\n \"vertexAttrib1fv\",\n \"vertexAttrib2f\",\n \"vertexAttrib2fv\",\n \"vertexAttrib3f\",\n \"vertexAttrib3fv\",\n \"vertexAttrib4f\",\n \"vertexAttrib4fv\",\n \"vertexAttribDivisorANGLE\",\n \"vertexAttribPointer\",\n \"vertical\",\n \"vertical-align\",\n \"verticalAlign\",\n \"verticalOverflow\",\n \"vibrate\",\n \"videoHeight\",\n \"videoTracks\",\n \"videoWidth\",\n \"view\",\n \"viewBox\",\n \"viewBoxString\",\n \"viewTarget\",\n \"viewTargetString\",\n \"viewport\",\n \"viewportAnchorX\",\n \"viewportAnchorY\",\n \"viewportElement\",\n \"visibility\",\n \"visibilityState\",\n \"visible\",\n \"vlinkColor\",\n \"voice\",\n \"volume\",\n \"vrml\",\n \"vspace\",\n \"w\",\n \"wand\",\n \"warn\",\n \"wasClean\",\n \"watch\",\n \"watchPosition\",\n \"webdriver\",\n \"webkitAddKey\",\n \"webkitAnimation\",\n \"webkitAnimationDelay\",\n \"webkitAnimationDirection\",\n \"webkitAnimationDuration\",\n \"webkitAnimationFillMode\",\n \"webkitAnimationIterationCount\",\n \"webkitAnimationName\",\n \"webkitAnimationPlayState\",\n \"webkitAnimationTimingFunction\",\n \"webkitAppearance\",\n \"webkitAudioContext\",\n \"webkitAudioDecodedByteCount\",\n \"webkitAudioPannerNode\",\n \"webkitBackfaceVisibility\",\n \"webkitBackground\",\n \"webkitBackgroundAttachment\",\n \"webkitBackgroundClip\",\n \"webkitBackgroundColor\",\n \"webkitBackgroundImage\",\n \"webkitBackgroundOrigin\",\n \"webkitBackgroundPosition\",\n \"webkitBackgroundPositionX\",\n \"webkitBackgroundPositionY\",\n \"webkitBackgroundRepeat\",\n \"webkitBackgroundSize\",\n \"webkitBackingStorePixelRatio\",\n \"webkitBorderImage\",\n \"webkitBorderImageOutset\",\n \"webkitBorderImageRepeat\",\n \"webkitBorderImageSlice\",\n \"webkitBorderImageSource\",\n \"webkitBorderImageWidth\",\n \"webkitBoxAlign\",\n \"webkitBoxDirection\",\n \"webkitBoxFlex\",\n \"webkitBoxOrdinalGroup\",\n \"webkitBoxOrient\",\n \"webkitBoxPack\",\n \"webkitBoxSizing\",\n \"webkitCancelAnimationFrame\",\n \"webkitCancelFullScreen\",\n \"webkitCancelKeyRequest\",\n \"webkitCancelRequestAnimationFrame\",\n \"webkitClearResourceTimings\",\n \"webkitClosedCaptionsVisible\",\n \"webkitConvertPointFromNodeToPage\",\n \"webkitConvertPointFromPageToNode\",\n \"webkitCreateShadowRoot\",\n \"webkitCurrentFullScreenElement\",\n \"webkitCurrentPlaybackTargetIsWireless\",\n \"webkitDirectionInvertedFromDevice\",\n \"webkitDisplayingFullscreen\",\n \"webkitEnterFullScreen\",\n \"webkitEnterFullscreen\",\n \"webkitExitFullScreen\",\n \"webkitExitFullscreen\",\n \"webkitExitPointerLock\",\n \"webkitFullScreenKeyboardInputAllowed\",\n \"webkitFullscreenElement\",\n \"webkitFullscreenEnabled\",\n \"webkitGenerateKeyRequest\",\n \"webkitGetAsEntry\",\n \"webkitGetDatabaseNames\",\n \"webkitGetEntries\",\n \"webkitGetEntriesByName\",\n \"webkitGetEntriesByType\",\n \"webkitGetFlowByName\",\n \"webkitGetGamepads\",\n \"webkitGetImageDataHD\",\n \"webkitGetNamedFlows\",\n \"webkitGetRegionFlowRanges\",\n \"webkitGetUserMedia\",\n \"webkitHasClosedCaptions\",\n \"webkitHidden\",\n \"webkitIDBCursor\",\n \"webkitIDBDatabase\",\n \"webkitIDBDatabaseError\",\n \"webkitIDBDatabaseException\",\n \"webkitIDBFactory\",\n \"webkitIDBIndex\",\n \"webkitIDBKeyRange\",\n \"webkitIDBObjectStore\",\n \"webkitIDBRequest\",\n \"webkitIDBTransaction\",\n \"webkitImageSmoothingEnabled\",\n \"webkitIndexedDB\",\n \"webkitInitMessageEvent\",\n \"webkitIsFullScreen\",\n \"webkitKeys\",\n \"webkitLineDashOffset\",\n \"webkitLockOrientation\",\n \"webkitMatchesSelector\",\n \"webkitMediaStream\",\n \"webkitNotifications\",\n \"webkitOfflineAudioContext\",\n \"webkitOrientation\",\n \"webkitPeerConnection00\",\n \"webkitPersistentStorage\",\n \"webkitPointerLockElement\",\n \"webkitPostMessage\",\n \"webkitPreservesPitch\",\n \"webkitPutImageDataHD\",\n \"webkitRTCPeerConnection\",\n \"webkitRegionOverset\",\n \"webkitRequestAnimationFrame\",\n \"webkitRequestFileSystem\",\n \"webkitRequestFullScreen\",\n \"webkitRequestFullscreen\",\n \"webkitRequestPointerLock\",\n \"webkitResolveLocalFileSystemURL\",\n \"webkitSetMediaKeys\",\n \"webkitSetResourceTimingBufferSize\",\n \"webkitShadowRoot\",\n \"webkitShowPlaybackTargetPicker\",\n \"webkitSlice\",\n \"webkitSpeechGrammar\",\n \"webkitSpeechGrammarList\",\n \"webkitSpeechRecognition\",\n \"webkitSpeechRecognitionError\",\n \"webkitSpeechRecognitionEvent\",\n \"webkitStorageInfo\",\n \"webkitSupportsFullscreen\",\n \"webkitTemporaryStorage\",\n \"webkitTextSizeAdjust\",\n \"webkitTransform\",\n \"webkitTransformOrigin\",\n \"webkitTransition\",\n \"webkitTransitionDelay\",\n \"webkitTransitionDuration\",\n \"webkitTransitionProperty\",\n \"webkitTransitionTimingFunction\",\n \"webkitURL\",\n \"webkitUnlockOrientation\",\n \"webkitUserSelect\",\n \"webkitVideoDecodedByteCount\",\n \"webkitVisibilityState\",\n \"webkitWirelessVideoPlaybackDisabled\",\n \"webkitdropzone\",\n \"webstore\",\n \"weight\",\n \"whatToShow\",\n \"wheelDelta\",\n \"wheelDeltaX\",\n \"wheelDeltaY\",\n \"which\",\n \"white-space\",\n \"whiteSpace\",\n \"wholeText\",\n \"widows\",\n \"width\",\n \"will-change\",\n \"willChange\",\n \"willValidate\",\n \"window\",\n \"withCredentials\",\n \"word-break\",\n \"word-spacing\",\n \"word-wrap\",\n \"wordBreak\",\n \"wordSpacing\",\n \"wordWrap\",\n \"wrap\",\n \"wrapKey\",\n \"write\",\n \"writeln\",\n \"writingMode\",\n \"x\",\n \"x1\",\n \"x2\",\n \"xChannelSelector\",\n \"xmlEncoding\",\n \"xmlStandalone\",\n \"xmlVersion\",\n \"xmlbase\",\n \"xmllang\",\n \"xmlspace\",\n \"y\",\n \"y1\",\n \"y2\",\n \"yChannelSelector\",\n \"yandex\",\n \"z\",\n \"z-index\",\n \"zIndex\",\n \"zoom\",\n \"zoomAndPan\",\n \"zoomRectScreen\"\n];\n","/***********************************************************************\n\n A JavaScript tokenizer / parser / beautifier / compressor.\n https://github.com/mishoo/UglifyJS2\n\n -------------------------------- (C) ---------------------------------\n\n Author: Mihai Bazon\n \n http://mihai.bazon.net/blog\n\n Distributed under the BSD license:\n\n Copyright 2012 (c) Mihai Bazon \n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions\n are met:\n\n * Redistributions of source code must retain the above\n copyright notice, this list of conditions and the following\n disclaimer.\n\n * Redistributions in binary form must reproduce the above\n copyright notice, this list of conditions and the following\n disclaimer in the documentation and/or other materials\n provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY\n EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE\n LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,\n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR\n TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF\n THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n SUCH DAMAGE.\n\n ***********************************************************************/\n\n\"use strict\";\n/* global global, self */\n\nimport {\n defaults,\n push_uniq,\n} from \"./utils/index.js\";\nimport { base54 } from \"./scope\";\nimport {\n AST_Call,\n AST_Conditional,\n AST_Dot,\n AST_ObjectKeyVal,\n AST_ObjectProperty,\n AST_Sequence,\n AST_String,\n AST_Sub,\n TreeTransformer,\n TreeWalker,\n} from \"./ast.js\";\nimport { domprops } from \"../tools/domprops.js\";\n\nfunction find_builtins(reserved) {\n domprops.forEach(add);\n\n // Compatibility fix for some standard defined globals not defined on every js environment\n var new_globals = [\"Symbol\", \"Map\", \"Promise\", \"Proxy\", \"Reflect\", \"Set\", \"WeakMap\", \"WeakSet\"];\n var objects = {};\n var global_ref = typeof global === \"object\" ? global : self;\n\n new_globals.forEach(function (new_global) {\n objects[new_global] = global_ref[new_global] || new Function();\n });\n\n // NaN will be included due to Number.NaN\n [\n \"null\",\n \"true\",\n \"false\",\n \"Infinity\",\n \"-Infinity\",\n \"undefined\",\n ].forEach(add);\n [ Object, Array, Function, Number,\n String, Boolean, Error, Math,\n Date, RegExp, objects.Symbol, ArrayBuffer,\n DataView, decodeURI, decodeURIComponent,\n encodeURI, encodeURIComponent, eval, EvalError,\n Float32Array, Float64Array, Int8Array, Int16Array,\n Int32Array, isFinite, isNaN, JSON, objects.Map, parseFloat,\n parseInt, objects.Promise, objects.Proxy, RangeError, ReferenceError,\n objects.Reflect, objects.Set, SyntaxError, TypeError, Uint8Array,\n Uint8ClampedArray, Uint16Array, Uint32Array, URIError,\n objects.WeakMap, objects.WeakSet\n ].forEach(function(ctor) {\n Object.getOwnPropertyNames(ctor).map(add);\n if (ctor.prototype) {\n Object.getOwnPropertyNames(ctor.prototype).map(add);\n }\n });\n function add(name) {\n reserved.add(name);\n }\n}\n\nfunction reserve_quoted_keys(ast, reserved) {\n function add(name) {\n push_uniq(reserved, name);\n }\n\n ast.walk(new TreeWalker(function(node) {\n if (node instanceof AST_ObjectKeyVal && node.quote) {\n add(node.key);\n } else if (node instanceof AST_ObjectProperty && node.quote) {\n add(node.key.name);\n } else if (node instanceof AST_Sub) {\n addStrings(node.property, add);\n }\n }));\n}\n\nfunction addStrings(node, add) {\n node.walk(new TreeWalker(function(node) {\n if (node instanceof AST_Sequence) {\n addStrings(node.tail_node(), add);\n } else if (node instanceof AST_String) {\n add(node.value);\n } else if (node instanceof AST_Conditional) {\n addStrings(node.consequent, add);\n addStrings(node.alternative, add);\n }\n return true;\n }));\n}\n\nfunction mangle_properties(ast, options) {\n options = defaults(options, {\n builtins: false,\n cache: null,\n debug: false,\n keep_quoted: false,\n only_cache: false,\n regex: null,\n reserved: null,\n undeclared: false,\n }, true);\n\n var reserved_option = options.reserved;\n if (!Array.isArray(reserved_option)) reserved_option = [reserved_option];\n var reserved = new Set(reserved_option);\n if (!options.builtins) find_builtins(reserved);\n\n var cname = -1;\n var cache;\n if (options.cache) {\n cache = options.cache.props;\n cache.forEach(function(mangled_name) {\n reserved.add(mangled_name);\n });\n } else {\n cache = new Map();\n }\n\n var regex = options.regex && new RegExp(options.regex);\n\n // note debug is either false (disabled), or a string of the debug suffix to use (enabled).\n // note debug may be enabled as an empty string, which is falsey. Also treat passing 'true'\n // the same as passing an empty string.\n var debug = options.debug !== false;\n var debug_name_suffix;\n if (debug) {\n debug_name_suffix = (options.debug === true ? \"\" : options.debug);\n }\n\n var names_to_mangle = new Set();\n var unmangleable = new Set();\n\n var keep_quoted_strict = options.keep_quoted === \"strict\";\n\n // step 1: find candidates to mangle\n ast.walk(new TreeWalker(function(node) {\n if (node instanceof AST_ObjectKeyVal) {\n if (typeof node.key == \"string\" &&\n (!keep_quoted_strict || !node.quote)) {\n add(node.key);\n }\n } else if (node instanceof AST_ObjectProperty) {\n // setter or getter, since KeyVal is handled above\n if (!keep_quoted_strict || !node.key.end.quote) {\n add(node.key.name);\n }\n } else if (node instanceof AST_Dot) {\n var declared = !!options.undeclared;\n if (!declared) {\n var root = node;\n while (root.expression) {\n root = root.expression;\n }\n declared = !(root.thedef && root.thedef.undeclared);\n }\n if (declared &&\n (!keep_quoted_strict || !node.quote)) {\n add(node.property);\n }\n } else if (node instanceof AST_Sub) {\n if (!keep_quoted_strict) {\n addStrings(node.property, add);\n }\n } else if (node instanceof AST_Call\n && node.expression.print_to_string() == \"Object.defineProperty\") {\n addStrings(node.args[1], add);\n }\n }));\n\n // step 2: transform the tree, renaming properties\n return ast.transform(new TreeTransformer(function(node) {\n if (node instanceof AST_ObjectKeyVal) {\n if (typeof node.key == \"string\" &&\n (!keep_quoted_strict || !node.quote)) {\n node.key = mangle(node.key);\n }\n } else if (node instanceof AST_ObjectProperty) {\n // setter or getter\n if (!keep_quoted_strict || !node.key.end.quote) {\n node.key.name = mangle(node.key.name);\n }\n } else if (node instanceof AST_Dot) {\n if (!keep_quoted_strict || !node.quote) {\n node.property = mangle(node.property);\n }\n } else if (!options.keep_quoted && node instanceof AST_Sub) {\n node.property = mangleStrings(node.property);\n } else if (node instanceof AST_Call\n && node.expression.print_to_string() == \"Object.defineProperty\") {\n node.args[1] = mangleStrings(node.args[1]);\n }\n }));\n\n // only function declarations after this line\n\n function can_mangle(name) {\n if (unmangleable.has(name)) return false;\n if (reserved.has(name)) return false;\n if (options.only_cache) {\n return cache.has(name);\n }\n if (/^-?[0-9]+(\\.[0-9]+)?(e[+-][0-9]+)?$/.test(name)) return false;\n return true;\n }\n\n function should_mangle(name) {\n if (regex && !regex.test(name)) return false;\n if (reserved.has(name)) return false;\n return cache.has(name)\n || names_to_mangle.has(name);\n }\n\n function add(name) {\n if (can_mangle(name))\n names_to_mangle.add(name);\n\n if (!should_mangle(name)) {\n unmangleable.add(name);\n }\n }\n\n function mangle(name) {\n if (!should_mangle(name)) {\n return name;\n }\n\n var mangled = cache.get(name);\n if (!mangled) {\n if (debug) {\n // debug mode: use a prefix and suffix to preserve readability, e.g. o.foo -> o._$foo$NNN_.\n var debug_mangled = \"_$\" + name + \"$\" + debug_name_suffix + \"_\";\n\n if (can_mangle(debug_mangled)) {\n mangled = debug_mangled;\n }\n }\n\n // either debug mode is off, or it is on and we could not use the mangled name\n if (!mangled) {\n do {\n mangled = base54(++cname);\n } while (!can_mangle(mangled));\n }\n\n cache.set(name, mangled);\n }\n return mangled;\n }\n\n function mangleStrings(node) {\n return node.transform(new TreeTransformer(function(node) {\n if (node instanceof AST_Sequence) {\n var last = node.expressions.length - 1;\n node.expressions[last] = mangleStrings(node.expressions[last]);\n } else if (node instanceof AST_String) {\n node.value = mangle(node.value);\n } else if (node instanceof AST_Conditional) {\n node.consequent = mangleStrings(node.consequent);\n node.alternative = mangleStrings(node.alternative);\n }\n return node;\n }));\n }\n}\n\nexport {\n reserve_quoted_keys,\n mangle_properties,\n};\n","\"use strict\";\n/* eslint-env browser, es6, node */\n\nimport {\n defaults,\n map_from_object,\n map_to_object,\n HOP,\n} from \"./utils/index.js\";\nimport {\n AST_Node,\n AST_Toplevel,\n} from \"./ast.js\";\nimport { parse } from \"./parse.js\";\nimport { OutputStream } from \"./output.js\";\nimport { Compressor } from \"./compress/index.js\";\nimport { base54 } from \"./scope.js\";\nimport { SourceMap } from \"./sourcemap.js\";\nimport {\n mangle_properties,\n reserve_quoted_keys,\n} from \"./propmangle.js\";\n\nvar to_ascii = typeof atob == \"undefined\" ? function(b64) {\n return Buffer.from(b64, \"base64\").toString();\n} : atob;\nvar to_base64 = typeof btoa == \"undefined\" ? function(str) {\n return Buffer.from(str).toString(\"base64\");\n} : btoa;\n\nfunction read_source_map(code) {\n var match = /(?:^|[^.])\\/\\/# sourceMappingURL=data:application\\/json(;[\\w=-]*)?;base64,([+/0-9A-Za-z]*=*)\\s*$/.exec(code);\n if (!match) {\n AST_Node.warn(\"inline source map not found\");\n return null;\n }\n return to_ascii(match[2]);\n}\n\nfunction set_shorthand(name, options, keys) {\n if (options[name]) {\n keys.forEach(function(key) {\n if (options[key]) {\n if (typeof options[key] != \"object\") options[key] = {};\n if (!(name in options[key])) options[key][name] = options[name];\n }\n });\n }\n}\n\nfunction init_cache(cache) {\n if (!cache) return;\n if (!(\"props\" in cache)) {\n cache.props = new Map();\n } else if (!(cache.props instanceof Map)) {\n cache.props = map_from_object(cache.props);\n }\n}\n\nfunction cache_to_json(cache) {\n return {\n props: map_to_object(cache.props)\n };\n}\n\nfunction minify(files, options) {\n var warn_function = AST_Node.warn_function;\n try {\n options = defaults(options, {\n compress: {},\n ecma: undefined,\n enclose: false,\n ie8: false,\n keep_classnames: undefined,\n keep_fnames: false,\n mangle: {},\n module: false,\n nameCache: null,\n output: {},\n parse: {},\n rename: undefined,\n safari10: false,\n sourceMap: false,\n timings: false,\n toplevel: false,\n warnings: false,\n wrap: false,\n }, true);\n var timings = options.timings && {\n start: Date.now()\n };\n if (options.keep_classnames === undefined) {\n options.keep_classnames = options.keep_fnames;\n }\n if (options.rename === undefined) {\n options.rename = options.compress && options.mangle;\n }\n set_shorthand(\"ecma\", options, [ \"parse\", \"compress\", \"output\" ]);\n set_shorthand(\"ie8\", options, [ \"compress\", \"mangle\", \"output\" ]);\n set_shorthand(\"keep_classnames\", options, [ \"compress\", \"mangle\" ]);\n set_shorthand(\"keep_fnames\", options, [ \"compress\", \"mangle\" ]);\n set_shorthand(\"module\", options, [ \"parse\", \"compress\", \"mangle\" ]);\n set_shorthand(\"safari10\", options, [ \"mangle\", \"output\" ]);\n set_shorthand(\"toplevel\", options, [ \"compress\", \"mangle\" ]);\n set_shorthand(\"warnings\", options, [ \"compress\" ]);\n var quoted_props;\n if (options.mangle) {\n options.mangle = defaults(options.mangle, {\n cache: options.nameCache && (options.nameCache.vars || {}),\n eval: false,\n ie8: false,\n keep_classnames: false,\n keep_fnames: false,\n module: false,\n properties: false,\n reserved: [],\n safari10: false,\n toplevel: false,\n }, true);\n if (options.mangle.properties) {\n if (typeof options.mangle.properties != \"object\") {\n options.mangle.properties = {};\n }\n if (options.mangle.properties.keep_quoted) {\n quoted_props = options.mangle.properties.reserved;\n if (!Array.isArray(quoted_props)) quoted_props = [];\n options.mangle.properties.reserved = quoted_props;\n }\n if (options.nameCache && !(\"cache\" in options.mangle.properties)) {\n options.mangle.properties.cache = options.nameCache.props || {};\n }\n }\n init_cache(options.mangle.cache);\n init_cache(options.mangle.properties.cache);\n }\n if (options.sourceMap) {\n options.sourceMap = defaults(options.sourceMap, {\n asObject: false,\n content: null,\n filename: null,\n includeSources: false,\n root: null,\n url: null,\n }, true);\n }\n var warnings = [];\n if (options.warnings && !AST_Node.warn_function) {\n AST_Node.warn_function = function(warning) {\n warnings.push(warning);\n };\n }\n if (timings) timings.parse = Date.now();\n var toplevel;\n if (files instanceof AST_Toplevel) {\n toplevel = files;\n } else {\n if (typeof files == \"string\") {\n files = [ files ];\n }\n options.parse = options.parse || {};\n options.parse.toplevel = null;\n for (var name in files) if (HOP(files, name)) {\n options.parse.filename = name;\n options.parse.toplevel = parse(files[name], options.parse);\n if (options.sourceMap && options.sourceMap.content == \"inline\") {\n if (Object.keys(files).length > 1)\n throw new Error(\"inline source map only works with singular input\");\n options.sourceMap.content = read_source_map(files[name]);\n }\n }\n toplevel = options.parse.toplevel;\n }\n if (quoted_props && options.mangle.properties.keep_quoted !== \"strict\") {\n reserve_quoted_keys(toplevel, quoted_props);\n }\n if (options.wrap) {\n toplevel = toplevel.wrap_commonjs(options.wrap);\n }\n if (options.enclose) {\n toplevel = toplevel.wrap_enclose(options.enclose);\n }\n if (timings) timings.rename = Date.now();\n // disable rename on harmony due to expand_names bug in for-of loops\n // https://github.com/mishoo/UglifyJS2/issues/2794\n if (0 && options.rename) {\n toplevel.figure_out_scope(options.mangle);\n toplevel.expand_names(options.mangle);\n }\n if (timings) timings.compress = Date.now();\n if (options.compress) toplevel = new Compressor(options.compress).compress(toplevel);\n if (timings) timings.scope = Date.now();\n if (options.mangle) toplevel.figure_out_scope(options.mangle);\n if (timings) timings.mangle = Date.now();\n if (options.mangle) {\n base54.reset();\n toplevel.compute_char_frequency(options.mangle);\n toplevel.mangle_names(options.mangle);\n }\n if (timings) timings.properties = Date.now();\n if (options.mangle && options.mangle.properties) {\n toplevel = mangle_properties(toplevel, options.mangle.properties);\n }\n if (timings) timings.output = Date.now();\n var result = {};\n if (options.output.ast) {\n result.ast = toplevel;\n }\n if (!HOP(options.output, \"code\") || options.output.code) {\n if (options.sourceMap) {\n if (typeof options.sourceMap.content == \"string\") {\n options.sourceMap.content = JSON.parse(options.sourceMap.content);\n }\n options.output.source_map = SourceMap({\n file: options.sourceMap.filename,\n orig: options.sourceMap.content,\n root: options.sourceMap.root\n });\n if (options.sourceMap.includeSources) {\n if (files instanceof AST_Toplevel) {\n throw new Error(\"original source content unavailable\");\n } else for (var name in files) if (HOP(files, name)) {\n options.output.source_map.get().setSourceContent(name, files[name]);\n }\n }\n }\n delete options.output.ast;\n delete options.output.code;\n var stream = OutputStream(options.output);\n toplevel.print(stream);\n result.code = stream.get();\n if (options.sourceMap) {\n if(options.sourceMap.asObject) {\n result.map = options.output.source_map.get().toJSON();\n } else {\n result.map = options.output.source_map.toString();\n }\n if (options.sourceMap.url == \"inline\") {\n var sourceMap = typeof result.map === \"object\" ? JSON.stringify(result.map) : result.map;\n result.code += \"\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,\" + to_base64(sourceMap);\n } else if (options.sourceMap.url) {\n result.code += \"\\n//# sourceMappingURL=\" + options.sourceMap.url;\n }\n }\n }\n if (options.nameCache && options.mangle) {\n if (options.mangle.cache) options.nameCache.vars = cache_to_json(options.mangle.cache);\n if (options.mangle.properties && options.mangle.properties.cache) {\n options.nameCache.props = cache_to_json(options.mangle.properties.cache);\n }\n }\n if (timings) {\n timings.end = Date.now();\n result.timings = {\n parse: 1e-3 * (timings.rename - timings.parse),\n rename: 1e-3 * (timings.compress - timings.rename),\n compress: 1e-3 * (timings.scope - timings.compress),\n scope: 1e-3 * (timings.mangle - timings.scope),\n mangle: 1e-3 * (timings.properties - timings.mangle),\n properties: 1e-3 * (timings.output - timings.properties),\n output: 1e-3 * (timings.end - timings.output),\n total: 1e-3 * (timings.end - timings.start)\n };\n }\n if (warnings.length) {\n result.warnings = warnings;\n }\n return result;\n } catch (ex) {\n return { error: ex };\n } finally {\n AST_Node.warn_function = warn_function;\n }\n}\n\nexport {\n minify,\n to_ascii,\n};\n","/***********************************************************************\n\n A JavaScript tokenizer / parser / beautifier / compressor.\n https://github.com/mishoo/UglifyJS2\n\n -------------------------------- (C) ---------------------------------\n\n Author: Mihai Bazon\n \n http://mihai.bazon.net/blog\n\n Distributed under the BSD license:\n\n Copyright 2012 (c) Mihai Bazon \n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions\n are met:\n\n * Redistributions of source code must retain the above\n copyright notice, this list of conditions and the following\n disclaimer.\n\n * Redistributions in binary form must reproduce the above\n copyright notice, this list of conditions and the following\n disclaimer in the documentation and/or other materials\n provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY\n EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE\n LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,\n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR\n TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF\n THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n SUCH DAMAGE.\n\n ***********************************************************************/\n\n\"use strict\";\n\nimport MOZ_SourceMap from \"source-map\";\nimport {\n defaults,\n} from \"./utils/index.js\";\n\n// a small wrapper around fitzgen's source-map library\nfunction SourceMap(options) {\n options = defaults(options, {\n file : null,\n root : null,\n orig : null,\n\n orig_line_diff : 0,\n dest_line_diff : 0,\n });\n var generator = new MOZ_SourceMap.SourceMapGenerator({\n file : options.file,\n sourceRoot : options.root\n });\n var orig_map = options.orig && new MOZ_SourceMap.SourceMapConsumer(options.orig);\n\n if (orig_map) {\n orig_map.sources.forEach(function(source) {\n var sourceContent = orig_map.sourceContentFor(source, true);\n if (sourceContent) {\n generator.setSourceContent(source, sourceContent);\n }\n });\n }\n\n function add(source, gen_line, gen_col, orig_line, orig_col, name) {\n if (orig_map) {\n var info = orig_map.originalPositionFor({\n line: orig_line,\n column: orig_col\n });\n if (info.source === null) {\n return;\n }\n source = info.source;\n orig_line = info.line;\n orig_col = info.column;\n name = info.name || name;\n }\n generator.addMapping({\n generated : { line: gen_line + options.dest_line_diff, column: gen_col },\n original : { line: orig_line + options.orig_line_diff, column: orig_col },\n source : source,\n name : name\n });\n }\n return {\n add : add,\n get : function() { return generator; },\n toString : function() { return JSON.stringify(generator.toJSON()); }\n };\n}\n\nexport {\n SourceMap,\n};\n","import { minify } from \"../lib/minify\";\n\nexport function default_options() {\n const defs = {};\n\n Object.keys(infer_options({ 0: 0 })).forEach((component) => {\n const options = infer_options({\n [component]: {0: 0}\n });\n\n if (options) defs[component] = options;\n });\n return defs;\n}\n\nfunction infer_options(options) {\n var result = minify(\"\", options);\n return result.error && result.error.defs;\n}\n","/***********************************************************************\n\n A JavaScript tokenizer / parser / beautifier / compressor.\n https://github.com/mishoo/UglifyJS2\n\n -------------------------------- (C) ---------------------------------\n\n Author: Mihai Bazon\n \n http://mihai.bazon.net/blog\n\n Distributed under the BSD license:\n\n Copyright 2012 (c) Mihai Bazon \n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions\n are met:\n\n * Redistributions of source code must retain the above\n copyright notice, this list of conditions and the following\n disclaimer.\n\n * Redistributions in binary form must reproduce the above\n copyright notice, this list of conditions and the following\n disclaimer in the documentation and/or other materials\n provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY\n EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE\n LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,\n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR\n TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF\n THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n SUCH DAMAGE.\n\n ***********************************************************************/\n\n\"use strict\";\n\nimport * as ast from \"./ast.js\";\nimport { make_node } from \"./utils/index.js\";\nimport {\n AST_Accessor,\n AST_Array,\n AST_Arrow,\n AST_Assign,\n AST_Atom,\n AST_Await,\n AST_BigInt,\n AST_Binary,\n AST_Block,\n AST_BlockStatement,\n AST_Boolean,\n AST_Break,\n AST_Call,\n AST_Case,\n AST_Catch,\n AST_Class,\n AST_ClassExpression,\n AST_ConciseMethod,\n AST_Conditional,\n AST_Const,\n AST_Constant,\n AST_Continue,\n AST_Debugger,\n AST_Default,\n AST_DefaultAssign,\n AST_DefClass,\n AST_Definitions,\n AST_Defun,\n AST_Destructuring,\n AST_Directive,\n AST_Do,\n AST_Dot,\n AST_EmptyStatement,\n AST_Expansion,\n AST_Export,\n AST_False,\n AST_Finally,\n AST_For,\n AST_ForIn,\n AST_ForOf,\n AST_Function,\n AST_Hole,\n AST_If,\n AST_Import,\n AST_Label,\n AST_LabeledStatement,\n AST_LabelRef,\n AST_Lambda,\n AST_Let,\n AST_NameMapping,\n AST_New,\n AST_NewTarget,\n AST_Node,\n AST_Null,\n AST_Number,\n AST_Object,\n AST_ObjectGetter,\n AST_ObjectKeyVal,\n AST_ObjectProperty,\n AST_ObjectSetter,\n AST_PrefixedTemplateString,\n AST_PropAccess,\n AST_RegExp,\n AST_Return,\n AST_Sequence,\n AST_SimpleStatement,\n AST_Statement,\n AST_String,\n AST_Sub,\n AST_Super,\n AST_Switch,\n AST_SwitchBranch,\n AST_Symbol,\n AST_SymbolCatch,\n AST_SymbolClass,\n AST_SymbolConst,\n AST_SymbolDefClass,\n AST_SymbolDefun,\n AST_SymbolExport,\n AST_SymbolExportForeign,\n AST_SymbolFunarg,\n AST_SymbolImport,\n AST_SymbolImportForeign,\n AST_SymbolLambda,\n AST_SymbolLet,\n AST_SymbolMethod,\n AST_SymbolRef,\n AST_SymbolVar,\n AST_TemplateSegment,\n AST_TemplateString,\n AST_This,\n AST_Throw,\n AST_Token,\n AST_Toplevel,\n AST_True,\n AST_Try,\n AST_Unary,\n AST_UnaryPostfix,\n AST_UnaryPrefix,\n AST_Var,\n AST_VarDef,\n AST_While,\n AST_With,\n AST_Yield,\n} from \"./ast.js\";\n\n(function() {\n\n var normalize_directives = function(body) {\n var in_directive = true;\n\n for (var i = 0; i < body.length; i++) {\n if (in_directive && body[i] instanceof AST_Statement && body[i].body instanceof AST_String) {\n body[i] = new AST_Directive({\n start: body[i].start,\n end: body[i].end,\n value: body[i].body.value\n });\n } else if (in_directive && !(body[i] instanceof AST_Statement && body[i].body instanceof AST_String)) {\n in_directive = false;\n }\n }\n\n return body;\n };\n\n var MOZ_TO_ME = {\n Program: function(M) {\n return new AST_Toplevel({\n start: my_start_token(M),\n end: my_end_token(M),\n body: normalize_directives(M.body.map(from_moz))\n });\n },\n ArrayPattern: function(M) {\n return new AST_Destructuring({\n start: my_start_token(M),\n end: my_end_token(M),\n names: M.elements.map(function(elm) {\n if (elm === null) {\n return new AST_Hole();\n }\n return from_moz(elm);\n }),\n is_array: true\n });\n },\n ObjectPattern: function(M) {\n return new AST_Destructuring({\n start: my_start_token(M),\n end: my_end_token(M),\n names: M.properties.map(from_moz),\n is_array: false\n });\n },\n AssignmentPattern: function(M) {\n var Type = AST_Binary;\n if(FROM_MOZ_STACK.length > 2) {\n var p = FROM_MOZ_STACK[FROM_MOZ_STACK.length - 2];\n if(p.type === \"FunctionDeclaration\"\n || p.type === \"FunctionExpression\"\n || p.type === \"ArrowFunctionExpression\") {\n Type = AST_DefaultAssign;\n }\n }\n return new Type({\n start: my_start_token(M),\n end: my_end_token(M),\n left: from_moz(M.left),\n operator: \"=\",\n right: from_moz(M.right)\n });\n },\n SpreadElement: function(M) {\n return new AST_Expansion({\n start: my_start_token(M),\n end: my_end_token(M),\n expression: from_moz(M.argument)\n });\n },\n RestElement: function(M) {\n return new AST_Expansion({\n start: my_start_token(M),\n end: my_end_token(M),\n expression: from_moz(M.argument)\n });\n },\n TemplateElement: function(M) {\n return new AST_TemplateSegment({\n start: my_start_token(M),\n end: my_end_token(M),\n value: M.value.cooked,\n raw: M.value.raw\n });\n },\n TemplateLiteral: function(M) {\n var segments = [];\n for (var i = 0; i < M.quasis.length; i++) {\n segments.push(from_moz(M.quasis[i]));\n if (M.expressions[i]) {\n segments.push(from_moz(M.expressions[i]));\n }\n }\n return new AST_TemplateString({\n start: my_start_token(M),\n end: my_end_token(M),\n segments: segments\n });\n },\n TaggedTemplateExpression: function(M) {\n return new AST_PrefixedTemplateString({\n start: my_start_token(M),\n end: my_end_token(M),\n template_string: from_moz(M.quasi),\n prefix: from_moz(M.tag)\n });\n },\n FunctionDeclaration: function(M) {\n return new AST_Defun({\n start: my_start_token(M),\n end: my_end_token(M),\n name: from_moz(M.id),\n argnames: M.params.map(from_moz),\n is_generator: M.generator,\n async: M.async,\n body: normalize_directives(from_moz(M.body).body)\n });\n },\n FunctionExpression: function(M) {\n return new AST_Function({\n start: my_start_token(M),\n end: my_end_token(M),\n name: from_moz(M.id),\n argnames: M.params.map(from_moz),\n is_generator: M.generator,\n async: M.async,\n body: normalize_directives(from_moz(M.body).body)\n });\n },\n ArrowFunctionExpression: function(M) {\n const body = M.body.type === \"BlockStatement\"\n ? from_moz(M.body).body\n : [make_node(AST_Return, {}, { value: from_moz(M.body) })];\n return new AST_Arrow({\n start: my_start_token(M),\n end: my_end_token(M),\n argnames: M.params.map(from_moz),\n body,\n async: M.async,\n });\n },\n ExpressionStatement: function(M) {\n return new AST_SimpleStatement({\n start: my_start_token(M),\n end: my_end_token(M),\n body: from_moz(M.expression)\n });\n },\n TryStatement: function(M) {\n var handlers = M.handlers || [M.handler];\n if (handlers.length > 1 || M.guardedHandlers && M.guardedHandlers.length) {\n throw new Error(\"Multiple catch clauses are not supported.\");\n }\n return new AST_Try({\n start : my_start_token(M),\n end : my_end_token(M),\n body : from_moz(M.block).body,\n bcatch : from_moz(handlers[0]),\n bfinally : M.finalizer ? new AST_Finally(from_moz(M.finalizer)) : null\n });\n },\n Property: function(M) {\n var key = M.key;\n var args = {\n start : my_start_token(key || M.value),\n end : my_end_token(M.value),\n key : key.type == \"Identifier\" ? key.name : key.value,\n value : from_moz(M.value)\n };\n if (M.computed) {\n args.key = from_moz(M.key);\n }\n if (M.method) {\n args.is_generator = M.value.generator;\n args.async = M.value.async;\n if (!M.computed) {\n args.key = new AST_SymbolMethod({ name: args.key });\n } else {\n args.key = from_moz(M.key);\n }\n return new AST_ConciseMethod(args);\n }\n if (M.kind == \"init\") {\n if (key.type != \"Identifier\" && key.type != \"Literal\") {\n args.key = from_moz(key);\n }\n return new AST_ObjectKeyVal(args);\n }\n if (typeof args.key === \"string\" || typeof args.key === \"number\") {\n args.key = new AST_SymbolMethod({\n name: args.key\n });\n }\n args.value = new AST_Accessor(args.value);\n if (M.kind == \"get\") return new AST_ObjectGetter(args);\n if (M.kind == \"set\") return new AST_ObjectSetter(args);\n if (M.kind == \"method\") {\n args.async = M.value.async;\n args.is_generator = M.value.generator;\n args.quote = M.computed ? \"\\\"\" : null;\n return new AST_ConciseMethod(args);\n }\n },\n MethodDefinition: function(M) {\n var args = {\n start : my_start_token(M),\n end : my_end_token(M),\n key : M.computed ? from_moz(M.key) : new AST_SymbolMethod({ name: M.key.name || M.key.value }),\n value : from_moz(M.value),\n static : M.static,\n };\n if (M.kind == \"get\") {\n return new AST_ObjectGetter(args);\n }\n if (M.kind == \"set\") {\n return new AST_ObjectSetter(args);\n }\n args.is_generator = M.value.generator;\n args.async = M.value.async;\n return new AST_ConciseMethod(args);\n },\n ArrayExpression: function(M) {\n return new AST_Array({\n start : my_start_token(M),\n end : my_end_token(M),\n elements : M.elements.map(function(elem) {\n return elem === null ? new AST_Hole() : from_moz(elem);\n })\n });\n },\n ObjectExpression: function(M) {\n return new AST_Object({\n start : my_start_token(M),\n end : my_end_token(M),\n properties : M.properties.map(function(prop) {\n if (prop.type === \"SpreadElement\") {\n return from_moz(prop);\n }\n prop.type = \"Property\";\n return from_moz(prop);\n })\n });\n },\n SequenceExpression: function(M) {\n return new AST_Sequence({\n start : my_start_token(M),\n end : my_end_token(M),\n expressions: M.expressions.map(from_moz)\n });\n },\n MemberExpression: function(M) {\n return new (M.computed ? AST_Sub : AST_Dot)({\n start : my_start_token(M),\n end : my_end_token(M),\n property : M.computed ? from_moz(M.property) : M.property.name,\n expression : from_moz(M.object)\n });\n },\n SwitchCase: function(M) {\n return new (M.test ? AST_Case : AST_Default)({\n start : my_start_token(M),\n end : my_end_token(M),\n expression : from_moz(M.test),\n body : M.consequent.map(from_moz)\n });\n },\n VariableDeclaration: function(M) {\n return new (M.kind === \"const\" ? AST_Const :\n M.kind === \"let\" ? AST_Let : AST_Var)({\n start : my_start_token(M),\n end : my_end_token(M),\n definitions : M.declarations.map(from_moz)\n });\n },\n\n ImportDeclaration: function(M) {\n var imported_name = null;\n var imported_names = null;\n M.specifiers.forEach(function (specifier) {\n if (specifier.type === \"ImportSpecifier\") {\n if (!imported_names) { imported_names = []; }\n imported_names.push(new AST_NameMapping({\n start: my_start_token(specifier),\n end: my_end_token(specifier),\n foreign_name: from_moz(specifier.imported),\n name: from_moz(specifier.local)\n }));\n } else if (specifier.type === \"ImportDefaultSpecifier\") {\n imported_name = from_moz(specifier.local);\n } else if (specifier.type === \"ImportNamespaceSpecifier\") {\n if (!imported_names) { imported_names = []; }\n imported_names.push(new AST_NameMapping({\n start: my_start_token(specifier),\n end: my_end_token(specifier),\n foreign_name: new AST_SymbolImportForeign({ name: \"*\" }),\n name: from_moz(specifier.local)\n }));\n }\n });\n return new AST_Import({\n start : my_start_token(M),\n end : my_end_token(M),\n imported_name: imported_name,\n imported_names : imported_names,\n module_name : from_moz(M.source)\n });\n },\n ExportAllDeclaration: function(M) {\n return new AST_Export({\n start: my_start_token(M),\n end: my_end_token(M),\n exported_names: [\n new AST_NameMapping({\n name: new AST_SymbolExportForeign({ name: \"*\" }),\n foreign_name: new AST_SymbolExportForeign({ name: \"*\" })\n })\n ],\n module_name: from_moz(M.source)\n });\n },\n ExportNamedDeclaration: function(M) {\n return new AST_Export({\n start: my_start_token(M),\n end: my_end_token(M),\n exported_definition: from_moz(M.declaration),\n exported_names: M.specifiers && M.specifiers.length ? M.specifiers.map(function (specifier) {\n return new AST_NameMapping({\n foreign_name: from_moz(specifier.exported),\n name: from_moz(specifier.local)\n });\n }) : null,\n module_name: from_moz(M.source)\n });\n },\n ExportDefaultDeclaration: function(M) {\n return new AST_Export({\n start: my_start_token(M),\n end: my_end_token(M),\n exported_value: from_moz(M.declaration),\n is_default: true\n });\n },\n Literal: function(M) {\n var val = M.value, args = {\n start : my_start_token(M),\n end : my_end_token(M)\n };\n var rx = M.regex;\n if (rx && rx.pattern) {\n // RegExpLiteral as per ESTree AST spec\n args.value = {\n source: rx.pattern,\n flags: rx.flags\n };\n return new AST_RegExp(args);\n } else if (rx) {\n // support legacy RegExp\n const rx_source = M.raw || val;\n const match = rx_source.match(/^\\/(.*)\\/(\\w*)$/);\n if (!match) throw new Error(\"Invalid regex source \" + rx_source);\n const [_, source, flags] = match;\n args.value = { source, flags };\n return new AST_RegExp(args);\n }\n if (val === null) return new AST_Null(args);\n switch (typeof val) {\n case \"string\":\n args.value = val;\n return new AST_String(args);\n case \"number\":\n args.value = val;\n return new AST_Number(args);\n case \"boolean\":\n return new (val ? AST_True : AST_False)(args);\n }\n },\n MetaProperty: function(M) {\n if (M.meta.name === \"new\" && M.property.name === \"target\") {\n return new AST_NewTarget({\n start: my_start_token(M),\n end: my_end_token(M)\n });\n }\n },\n Identifier: function(M) {\n var p = FROM_MOZ_STACK[FROM_MOZ_STACK.length - 2];\n return new ( p.type == \"LabeledStatement\" ? AST_Label\n : p.type == \"VariableDeclarator\" && p.id === M ? (p.kind == \"const\" ? AST_SymbolConst : p.kind == \"let\" ? AST_SymbolLet : AST_SymbolVar)\n : /Import.*Specifier/.test(p.type) ? (p.local === M ? AST_SymbolImport : AST_SymbolImportForeign)\n : p.type == \"ExportSpecifier\" ? (p.local === M ? AST_SymbolExport : AST_SymbolExportForeign)\n : p.type == \"FunctionExpression\" ? (p.id === M ? AST_SymbolLambda : AST_SymbolFunarg)\n : p.type == \"FunctionDeclaration\" ? (p.id === M ? AST_SymbolDefun : AST_SymbolFunarg)\n : p.type == \"ArrowFunctionExpression\" ? (p.params.includes(M)) ? AST_SymbolFunarg : AST_SymbolRef\n : p.type == \"ClassExpression\" ? (p.id === M ? AST_SymbolClass : AST_SymbolRef)\n : p.type == \"Property\" ? (p.key === M && p.computed || p.value === M ? AST_SymbolRef : AST_SymbolMethod)\n : p.type == \"ClassDeclaration\" ? (p.id === M ? AST_SymbolDefClass : AST_SymbolRef)\n : p.type == \"MethodDefinition\" ? (p.computed ? AST_SymbolRef : AST_SymbolMethod)\n : p.type == \"CatchClause\" ? AST_SymbolCatch\n : p.type == \"BreakStatement\" || p.type == \"ContinueStatement\" ? AST_LabelRef\n : AST_SymbolRef)({\n start : my_start_token(M),\n end : my_end_token(M),\n name : M.name\n });\n },\n BigIntLiteral(M) {\n return new AST_BigInt({\n start : my_start_token(M),\n end : my_end_token(M),\n value : M.value\n });\n }\n };\n\n MOZ_TO_ME.UpdateExpression =\n MOZ_TO_ME.UnaryExpression = function To_Moz_Unary(M) {\n var prefix = \"prefix\" in M ? M.prefix\n : M.type == \"UnaryExpression\" ? true : false;\n return new (prefix ? AST_UnaryPrefix : AST_UnaryPostfix)({\n start : my_start_token(M),\n end : my_end_token(M),\n operator : M.operator,\n expression : from_moz(M.argument)\n });\n };\n\n MOZ_TO_ME.ClassDeclaration =\n MOZ_TO_ME.ClassExpression = function From_Moz_Class(M) {\n return new (M.type === \"ClassDeclaration\" ? AST_DefClass : AST_ClassExpression)({\n start : my_start_token(M),\n end : my_end_token(M),\n name : from_moz(M.id),\n extends : from_moz(M.superClass),\n properties: M.body.body.map(from_moz)\n });\n };\n\n map(\"EmptyStatement\", AST_EmptyStatement);\n map(\"BlockStatement\", AST_BlockStatement, \"body@body\");\n map(\"IfStatement\", AST_If, \"test>condition, consequent>body, alternate>alternative\");\n map(\"LabeledStatement\", AST_LabeledStatement, \"label>label, body>body\");\n map(\"BreakStatement\", AST_Break, \"label>label\");\n map(\"ContinueStatement\", AST_Continue, \"label>label\");\n map(\"WithStatement\", AST_With, \"object>expression, body>body\");\n map(\"SwitchStatement\", AST_Switch, \"discriminant>expression, cases@body\");\n map(\"ReturnStatement\", AST_Return, \"argument>value\");\n map(\"ThrowStatement\", AST_Throw, \"argument>value\");\n map(\"WhileStatement\", AST_While, \"test>condition, body>body\");\n map(\"DoWhileStatement\", AST_Do, \"test>condition, body>body\");\n map(\"ForStatement\", AST_For, \"init>init, test>condition, update>step, body>body\");\n map(\"ForInStatement\", AST_ForIn, \"left>init, right>object, body>body\");\n map(\"ForOfStatement\", AST_ForOf, \"left>init, right>object, body>body, await=await\");\n map(\"AwaitExpression\", AST_Await, \"argument>expression\");\n map(\"YieldExpression\", AST_Yield, \"argument>expression, delegate=is_star\");\n map(\"DebuggerStatement\", AST_Debugger);\n map(\"VariableDeclarator\", AST_VarDef, \"id>name, init>value\");\n map(\"CatchClause\", AST_Catch, \"param>argname, body%body\");\n\n map(\"ThisExpression\", AST_This);\n map(\"Super\", AST_Super);\n map(\"BinaryExpression\", AST_Binary, \"operator=operator, left>left, right>right\");\n map(\"LogicalExpression\", AST_Binary, \"operator=operator, left>left, right>right\");\n map(\"AssignmentExpression\", AST_Assign, \"operator=operator, left>left, right>right\");\n map(\"ConditionalExpression\", AST_Conditional, \"test>condition, consequent>consequent, alternate>alternative\");\n map(\"NewExpression\", AST_New, \"callee>expression, arguments@args\");\n map(\"CallExpression\", AST_Call, \"callee>expression, arguments@args\");\n\n def_to_moz(AST_Toplevel, function To_Moz_Program(M) {\n return to_moz_scope(\"Program\", M);\n });\n\n def_to_moz(AST_Expansion, function To_Moz_Spread(M, parent) {\n return {\n type: to_moz_in_destructuring() ? \"RestElement\" : \"SpreadElement\",\n argument: to_moz(M.expression)\n };\n });\n\n def_to_moz(AST_PrefixedTemplateString, function To_Moz_TaggedTemplateExpression(M) {\n return {\n type: \"TaggedTemplateExpression\",\n tag: to_moz(M.prefix),\n quasi: to_moz(M.template_string)\n };\n });\n\n def_to_moz(AST_TemplateString, function To_Moz_TemplateLiteral(M) {\n var quasis = [];\n var expressions = [];\n for (var i = 0; i < M.segments.length; i++) {\n if (i % 2 !== 0) {\n expressions.push(to_moz(M.segments[i]));\n } else {\n quasis.push({\n type: \"TemplateElement\",\n value: {\n raw: M.segments[i].raw,\n cooked: M.segments[i].value\n },\n tail: i === M.segments.length - 1\n });\n }\n }\n return {\n type: \"TemplateLiteral\",\n quasis: quasis,\n expressions: expressions\n };\n });\n\n def_to_moz(AST_Defun, function To_Moz_FunctionDeclaration(M) {\n return {\n type: \"FunctionDeclaration\",\n id: to_moz(M.name),\n params: M.argnames.map(to_moz),\n generator: M.is_generator,\n async: M.async,\n body: to_moz_scope(\"BlockStatement\", M)\n };\n });\n\n def_to_moz(AST_Function, function To_Moz_FunctionExpression(M, parent) {\n var is_generator = parent.is_generator !== undefined ?\n parent.is_generator : M.is_generator;\n return {\n type: \"FunctionExpression\",\n id: to_moz(M.name),\n params: M.argnames.map(to_moz),\n generator: is_generator,\n async: M.async,\n body: to_moz_scope(\"BlockStatement\", M)\n };\n });\n\n def_to_moz(AST_Arrow, function To_Moz_ArrowFunctionExpression(M) {\n var body = {\n type: \"BlockStatement\",\n body: M.body.map(to_moz)\n };\n return {\n type: \"ArrowFunctionExpression\",\n params: M.argnames.map(to_moz),\n async: M.async,\n body: body\n };\n });\n\n def_to_moz(AST_Destructuring, function To_Moz_ObjectPattern(M) {\n if (M.is_array) {\n return {\n type: \"ArrayPattern\",\n elements: M.names.map(to_moz)\n };\n }\n return {\n type: \"ObjectPattern\",\n properties: M.names.map(to_moz)\n };\n });\n\n def_to_moz(AST_Directive, function To_Moz_Directive(M) {\n return {\n type: \"ExpressionStatement\",\n expression: {\n type: \"Literal\",\n value: M.value\n }\n };\n });\n\n def_to_moz(AST_SimpleStatement, function To_Moz_ExpressionStatement(M) {\n return {\n type: \"ExpressionStatement\",\n expression: to_moz(M.body)\n };\n });\n\n def_to_moz(AST_SwitchBranch, function To_Moz_SwitchCase(M) {\n return {\n type: \"SwitchCase\",\n test: to_moz(M.expression),\n consequent: M.body.map(to_moz)\n };\n });\n\n def_to_moz(AST_Try, function To_Moz_TryStatement(M) {\n return {\n type: \"TryStatement\",\n block: to_moz_block(M),\n handler: to_moz(M.bcatch),\n guardedHandlers: [],\n finalizer: to_moz(M.bfinally)\n };\n });\n\n def_to_moz(AST_Catch, function To_Moz_CatchClause(M) {\n return {\n type: \"CatchClause\",\n param: to_moz(M.argname),\n guard: null,\n body: to_moz_block(M)\n };\n });\n\n def_to_moz(AST_Definitions, function To_Moz_VariableDeclaration(M) {\n return {\n type: \"VariableDeclaration\",\n kind:\n M instanceof AST_Const ? \"const\" :\n M instanceof AST_Let ? \"let\" : \"var\",\n declarations: M.definitions.map(to_moz)\n };\n });\n\n def_to_moz(AST_Export, function To_Moz_ExportDeclaration(M) {\n if (M.exported_names) {\n if (M.exported_names[0].name.name === \"*\") {\n return {\n type: \"ExportAllDeclaration\",\n source: to_moz(M.module_name)\n };\n }\n return {\n type: \"ExportNamedDeclaration\",\n specifiers: M.exported_names.map(function (name_mapping) {\n return {\n type: \"ExportSpecifier\",\n exported: to_moz(name_mapping.foreign_name),\n local: to_moz(name_mapping.name)\n };\n }),\n declaration: to_moz(M.exported_definition),\n source: to_moz(M.module_name)\n };\n }\n return {\n type: M.is_default ? \"ExportDefaultDeclaration\" : \"ExportNamedDeclaration\",\n declaration: to_moz(M.exported_value || M.exported_definition)\n };\n });\n\n def_to_moz(AST_Import, function To_Moz_ImportDeclaration(M) {\n var specifiers = [];\n if (M.imported_name) {\n specifiers.push({\n type: \"ImportDefaultSpecifier\",\n local: to_moz(M.imported_name)\n });\n }\n if (M.imported_names && M.imported_names[0].foreign_name.name === \"*\") {\n specifiers.push({\n type: \"ImportNamespaceSpecifier\",\n local: to_moz(M.imported_names[0].name)\n });\n } else if (M.imported_names) {\n M.imported_names.forEach(function(name_mapping) {\n specifiers.push({\n type: \"ImportSpecifier\",\n local: to_moz(name_mapping.name),\n imported: to_moz(name_mapping.foreign_name)\n });\n });\n }\n return {\n type: \"ImportDeclaration\",\n specifiers: specifiers,\n source: to_moz(M.module_name)\n };\n });\n\n def_to_moz(AST_Sequence, function To_Moz_SequenceExpression(M) {\n return {\n type: \"SequenceExpression\",\n expressions: M.expressions.map(to_moz)\n };\n });\n\n def_to_moz(AST_PropAccess, function To_Moz_MemberExpression(M) {\n var isComputed = M instanceof AST_Sub;\n return {\n type: \"MemberExpression\",\n object: to_moz(M.expression),\n computed: isComputed,\n property: isComputed ? to_moz(M.property) : {type: \"Identifier\", name: M.property}\n };\n });\n\n def_to_moz(AST_Unary, function To_Moz_Unary(M) {\n return {\n type: M.operator == \"++\" || M.operator == \"--\" ? \"UpdateExpression\" : \"UnaryExpression\",\n operator: M.operator,\n prefix: M instanceof AST_UnaryPrefix,\n argument: to_moz(M.expression)\n };\n });\n\n def_to_moz(AST_Binary, function To_Moz_BinaryExpression(M) {\n if (M.operator == \"=\" && to_moz_in_destructuring()) {\n return {\n type: \"AssignmentPattern\",\n left: to_moz(M.left),\n right: to_moz(M.right)\n };\n }\n return {\n type: M.operator == \"&&\" || M.operator == \"||\" ? \"LogicalExpression\" : \"BinaryExpression\",\n left: to_moz(M.left),\n operator: M.operator,\n right: to_moz(M.right)\n };\n });\n\n def_to_moz(AST_Array, function To_Moz_ArrayExpression(M) {\n return {\n type: \"ArrayExpression\",\n elements: M.elements.map(to_moz)\n };\n });\n\n def_to_moz(AST_Object, function To_Moz_ObjectExpression(M) {\n return {\n type: \"ObjectExpression\",\n properties: M.properties.map(to_moz)\n };\n });\n\n def_to_moz(AST_ObjectProperty, function To_Moz_Property(M, parent) {\n var key = M.key instanceof AST_Node ? to_moz(M.key) : {\n type: \"Identifier\",\n value: M.key\n };\n if (typeof M.key === \"number\") {\n key = {\n type: \"Literal\",\n value: Number(M.key)\n };\n }\n if (typeof M.key === \"string\") {\n key = {\n type: \"Identifier\",\n name: M.key\n };\n }\n var kind;\n var string_or_num = typeof M.key === \"string\" || typeof M.key === \"number\";\n var computed = string_or_num ? false : !(M.key instanceof AST_Symbol) || M.key instanceof AST_SymbolRef;\n if (M instanceof AST_ObjectKeyVal) {\n kind = \"init\";\n computed = !string_or_num;\n } else\n if (M instanceof AST_ObjectGetter) {\n kind = \"get\";\n } else\n if (M instanceof AST_ObjectSetter) {\n kind = \"set\";\n }\n if (parent instanceof AST_Class) {\n return {\n type: \"MethodDefinition\",\n computed: computed,\n kind: kind,\n static: M.static,\n key: to_moz(M.key),\n value: to_moz(M.value)\n };\n }\n return {\n type: \"Property\",\n computed: computed,\n kind: kind,\n key: key,\n value: to_moz(M.value)\n };\n });\n\n def_to_moz(AST_ConciseMethod, function To_Moz_MethodDefinition(M, parent) {\n if (parent instanceof AST_Object) {\n return {\n type: \"Property\",\n computed: !(M.key instanceof AST_Symbol) || M.key instanceof AST_SymbolRef,\n kind: \"init\",\n method: true,\n shorthand: false,\n key: to_moz(M.key),\n value: to_moz(M.value)\n };\n }\n return {\n type: \"MethodDefinition\",\n computed: !(M.key instanceof AST_Symbol) || M.key instanceof AST_SymbolRef,\n kind: M.key === \"constructor\" ? \"constructor\" : \"method\",\n static: M.static,\n key: to_moz(M.key),\n value: to_moz(M.value)\n };\n });\n\n def_to_moz(AST_Class, function To_Moz_Class(M) {\n var type = M instanceof AST_ClassExpression ? \"ClassExpression\" : \"ClassDeclaration\";\n return {\n type: type,\n superClass: to_moz(M.extends),\n id: M.name ? to_moz(M.name) : null,\n body: {\n type: \"ClassBody\",\n body: M.properties.map(to_moz)\n }\n };\n });\n\n def_to_moz(AST_NewTarget, function To_Moz_MetaProperty(M) {\n return {\n type: \"MetaProperty\",\n meta: {\n type: \"Identifier\",\n name: \"new\"\n },\n property: {\n type: \"Identifier\",\n name: \"target\"\n }\n };\n });\n\n def_to_moz(AST_Symbol, function To_Moz_Identifier(M, parent) {\n if (M instanceof AST_SymbolMethod && parent.quote) {\n return {\n type: \"Literal\",\n value: M.name\n };\n }\n var def = M.definition();\n return {\n type: \"Identifier\",\n name: def ? def.mangled_name || def.name : M.name\n };\n });\n\n def_to_moz(AST_RegExp, function To_Moz_RegExpLiteral(M) {\n const pattern = M.value.source;\n const flags = M.value.flags;\n return {\n type: \"Literal\",\n value: null,\n raw: M.print_to_string(),\n regex: { pattern, flags }\n };\n });\n\n def_to_moz(AST_Constant, function To_Moz_Literal(M) {\n var value = M.value;\n if (typeof value === \"number\" && (value < 0 || (value === 0 && 1 / value < 0))) {\n return {\n type: \"UnaryExpression\",\n operator: \"-\",\n prefix: true,\n argument: {\n type: \"Literal\",\n value: -value,\n raw: M.start.raw\n }\n };\n }\n return {\n type: \"Literal\",\n value: value,\n raw: M.start.raw\n };\n });\n\n def_to_moz(AST_Atom, function To_Moz_Atom(M) {\n return {\n type: \"Identifier\",\n name: String(M.value)\n };\n });\n\n def_to_moz(AST_BigInt, M => ({\n type: \"BigIntLiteral\",\n value: M.value\n }));\n\n AST_Boolean.DEFMETHOD(\"to_mozilla_ast\", AST_Constant.prototype.to_mozilla_ast);\n AST_Null.DEFMETHOD(\"to_mozilla_ast\", AST_Constant.prototype.to_mozilla_ast);\n AST_Hole.DEFMETHOD(\"to_mozilla_ast\", function To_Moz_ArrayHole() { return null; });\n\n AST_Block.DEFMETHOD(\"to_mozilla_ast\", AST_BlockStatement.prototype.to_mozilla_ast);\n AST_Lambda.DEFMETHOD(\"to_mozilla_ast\", AST_Function.prototype.to_mozilla_ast);\n\n /* -----[ tools ]----- */\n\n function raw_token(moznode) {\n if (moznode.type == \"Literal\") {\n return moznode.raw != null ? moznode.raw : moznode.value + \"\";\n }\n }\n\n function my_start_token(moznode) {\n var loc = moznode.loc, start = loc && loc.start;\n var range = moznode.range;\n return new AST_Token({\n file : loc && loc.source,\n line : start && start.line,\n col : start && start.column,\n pos : range ? range[0] : moznode.start,\n endline : start && start.line,\n endcol : start && start.column,\n endpos : range ? range[0] : moznode.start,\n raw : raw_token(moznode),\n });\n }\n\n function my_end_token(moznode) {\n var loc = moznode.loc, end = loc && loc.end;\n var range = moznode.range;\n return new AST_Token({\n file : loc && loc.source,\n line : end && end.line,\n col : end && end.column,\n pos : range ? range[1] : moznode.end,\n endline : end && end.line,\n endcol : end && end.column,\n endpos : range ? range[1] : moznode.end,\n raw : raw_token(moznode),\n });\n }\n\n function map(moztype, mytype, propmap) {\n var moz_to_me = \"function From_Moz_\" + moztype + \"(M){\\n\";\n moz_to_me += \"return new U2.\" + mytype.name + \"({\\n\" +\n \"start: my_start_token(M),\\n\" +\n \"end: my_end_token(M)\";\n\n var me_to_moz = \"function To_Moz_\" + moztype + \"(M){\\n\";\n me_to_moz += \"return {\\n\" +\n \"type: \" + JSON.stringify(moztype);\n\n if (propmap) propmap.split(/\\s*,\\s*/).forEach(function(prop) {\n var m = /([a-z0-9$_]+)([=@>%])([a-z0-9$_]+)/i.exec(prop);\n if (!m) throw new Error(\"Can't understand property map: \" + prop);\n var moz = m[1], how = m[2], my = m[3];\n moz_to_me += \",\\n\" + my + \": \";\n me_to_moz += \",\\n\" + moz + \": \";\n switch (how) {\n case \"@\":\n moz_to_me += \"M.\" + moz + \".map(from_moz)\";\n me_to_moz += \"M.\" + my + \".map(to_moz)\";\n break;\n case \">\":\n moz_to_me += \"from_moz(M.\" + moz + \")\";\n me_to_moz += \"to_moz(M.\" + my + \")\";\n break;\n case \"=\":\n moz_to_me += \"M.\" + moz;\n me_to_moz += \"M.\" + my;\n break;\n case \"%\":\n moz_to_me += \"from_moz(M.\" + moz + \").body\";\n me_to_moz += \"to_moz_block(M)\";\n break;\n default:\n throw new Error(\"Can't understand operator in propmap: \" + prop);\n }\n });\n\n moz_to_me += \"\\n})\\n}\";\n me_to_moz += \"\\n}\\n}\";\n\n moz_to_me = new Function(\"U2\", \"my_start_token\", \"my_end_token\", \"from_moz\", \"return(\" + moz_to_me + \")\")(\n ast, my_start_token, my_end_token, from_moz\n );\n me_to_moz = new Function(\"to_moz\", \"to_moz_block\", \"to_moz_scope\", \"return(\" + me_to_moz + \")\")(\n to_moz, to_moz_block, to_moz_scope\n );\n MOZ_TO_ME[moztype] = moz_to_me;\n def_to_moz(mytype, me_to_moz);\n }\n\n var FROM_MOZ_STACK = null;\n\n function from_moz(node) {\n FROM_MOZ_STACK.push(node);\n var ret = node != null ? MOZ_TO_ME[node.type](node) : null;\n FROM_MOZ_STACK.pop();\n return ret;\n }\n\n AST_Node.from_mozilla_ast = function(node) {\n var save_stack = FROM_MOZ_STACK;\n FROM_MOZ_STACK = [];\n var ast = from_moz(node);\n FROM_MOZ_STACK = save_stack;\n return ast;\n };\n\n function set_moz_loc(mynode, moznode, myparent) {\n var start = mynode.start;\n var end = mynode.end;\n if (!(start && end)) {\n return moznode;\n }\n if (start.pos != null && end.endpos != null) {\n moznode.range = [start.pos, end.endpos];\n }\n if (start.line) {\n moznode.loc = {\n start: {line: start.line, column: start.col},\n end: end.endline ? {line: end.endline, column: end.endcol} : null\n };\n if (start.file) {\n moznode.loc.source = start.file;\n }\n }\n return moznode;\n }\n\n function def_to_moz(mytype, handler) {\n mytype.DEFMETHOD(\"to_mozilla_ast\", function(parent) {\n return set_moz_loc(this, handler(this, parent));\n });\n }\n\n var TO_MOZ_STACK = null;\n\n function to_moz(node) {\n if (TO_MOZ_STACK === null) { TO_MOZ_STACK = []; }\n TO_MOZ_STACK.push(node);\n var ast = node != null ? node.to_mozilla_ast(TO_MOZ_STACK[TO_MOZ_STACK.length - 2]) : null;\n TO_MOZ_STACK.pop();\n if (TO_MOZ_STACK.length === 0) { TO_MOZ_STACK = null; }\n return ast;\n }\n\n function to_moz_in_destructuring() {\n var i = TO_MOZ_STACK.length;\n while (i--) {\n if (TO_MOZ_STACK[i] instanceof AST_Destructuring) {\n return true;\n }\n }\n return false;\n }\n\n function to_moz_block(node) {\n return {\n type: \"BlockStatement\",\n body: node.body.map(to_moz)\n };\n }\n\n function to_moz_scope(type, node) {\n var body = node.body.map(to_moz);\n if (node.body[0] instanceof AST_SimpleStatement && node.body[0].body instanceof AST_String) {\n body.unshift(to_moz(new AST_EmptyStatement(node.body[0])));\n }\n return {\n type: type,\n body: body\n };\n }\n})();\n"],"names":["characters","str","split","member","name","array","includes","DefaultsError","Error","[object Object]","msg","defs","super","this","message","defaults","args","croak","ret","i","HOP","ecma","noop","return_false","return_true","return_this","return_null","MAP","a","f","backwards","top","doit","val","is_last","Last","v","AtTop","Splice","push","apply","slice","reverse","skip","Array","isArray","length","concat","at_top","splice","last","make_node","ctor","orig","props","start","end","push_uniq","el","string_template","text","replace","p","remove","mergeSort","cmp","_ms","m","Math","floor","left","right","b","r","ai","bi","merge","makePredicate","words","Set","map_add","map","key","value","has","get","set","obj","prop","Object","prototype","hasOwnProperty","call","keep_name","keep_setting","RegExp","test","lineTerminatorEscape","\n","\r","
","
","regexp_source_fix","source","match","offset","all_flags","has_annotation","node","annotation","_annotations","set_annotation","KEYWORDS","KEYWORDS_ATOM","RESERVED_WORDS","KEYWORDS_BEFORE_EXPRESSION","OPERATOR_CHARS","RE_NUM_LITERAL","RE_HEX_NUMBER","RE_OCT_NUMBER","RE_ES6_OCT_NUMBER","RE_BIN_NUMBER","RE_DEC_NUMBER","RE_BIG_INT","OPERATORS","WHITESPACE_CHARS","NEWLINE_CHARS","PUNC_AFTER_EXPRESSION","PUNC_BEFORE_EXPRESSION","PUNC_CHARS","UNICODE","ID_Start","ID_Continue","get_full_char","pos","char","charAt","is_surrogate_pair_head","next","is_surrogate_pair_tail","prev","code","charCodeAt","is_digit","is_identifier_start","ch","is_identifier_char","is_identifier_string","parse_js_number","num","allow_e","NaN","parseInt","substr","parseFloat","JS_Parse_Error","filename","line","col","js_error","is_token","token","type","EX_EOF","tokenizer","$TEXT","html5_comments","shebang","S","tokpos","tokline","tokcol","newline_before","regex_allowed","brace_counter","template_braces","comments_before","directives","directive_stack","peek","signal_eof","in_string","forward","looking_at","find","what","indexOf","start_token","prev_was_dot","previous_token","is_comment","UNARY_POSTFIX","endline","endcol","endpos","nlb","file","raw","substring","comments_after","AST_Token","skip_whitespace","parse_error","err","read_num","prefix","has_e","after_e","has_x","has_dot","is_big_int","pred","read_while","next_token","has_directive","endsWith","without_n","valid","isNaN","is_octal","read_escaped_char","strict_hex","template_string","String","fromCharCode","hex_bytes","result","strict_octal","read_octal_escape_sequence","n","digit","read_string","with_eof_error","quote","tok","read_template_characters","begin","content","tmp","pop","skip_line_comment","find_eol","skip_multiline_comment","surrogates","get_full_char_length","read_name","escaped","read_escaped_identifier_char","read_regexp","prev_backslash","in_class","flags","read_operator","grow","op","bigger","handle_slash","eof_error","cont","x","ex","force_regexp","word","context","nc","add_directive","directive","undefined","push_directives_stack","pop_directives_stack","UNARY_PREFIX","ASSIGNMENT","PRECEDENCE","j","ATOMIC_START_TOKEN","parse","options","outer_comments_before_counts","Map","bare_returns","expression","module","strict","toplevel","input","peeked","in_function","in_async","in_generator","in_directives","in_loop","labels","is","ctx","token_error","unexpected","expect_token","expect","punc","has_newline_before","every","comment","can_insert_semicolon","is_in_generator","is_in_async","semicolon","optional","parenthesised","exp","embed_tokens","parser","expr","handle_regexp","statement","is_export_default","is_for_body","is_if_body","dir","stat","simple_statement","body","AST_String","AST_Directive","function_","AST_Defun","imported_name","imported_names","as_symbol","AST_SymbolImport","map_names","mod_str","AST_Import","module_name","import_","label","AST_Label","some","l","AST_IterationStatement","references","forEach","ref","AST_Continue","AST_LabeledStatement","labeled_statement","AST_BlockStatement","block_","AST_EmptyStatement","break_cont","AST_Break","AST_Debugger","condition","AST_Do","AST_While","for_await_error","await_tok","init","var_","let_","const_","is_in","is_of","AST_Definitions","definitions","is_assignable","to_destructuring","AST_Destructuring","AST_ForIn","object","for_in","is_await","lhs","AST_ForOf","await","for_of","step","AST_For","regular_for","for_","class_","AST_DefClass","cond","belse","AST_If","alternative","if_","AST_Return","AST_Switch","switch_body_","AST_Throw","bcatch","bfinally","parameter","AST_SymbolCatch","AST_Catch","argname","AST_Finally","AST_Try","try_","AST_With","is_default","exported_names","exported_value","exported_definition","AST_Export","AST_Lambda","AST_SimpleStatement","export_","ldef","AST_LabelRef","thedef","TYPE","arrow_function","argnames","is_async","_function_body","AST_Arrow","async","is_generator_property","in_statement","is_generator","AST_SymbolDefun","AST_SymbolLambda","AST_Function","AST_Accessor","AST_SymbolDeclaration","track_used_binding_identifiers","is_parameter","parameters","duplicate","default_assignment","spread","strict_mode","tracker","add_parameter","check_strict","add","mark_default_assignment","mark_spread","mark_strict_mode","is_strict","used_parameters","symbol_type","param","expand","binding_element","AST_DefaultAssign","operator","AST_Expansion","expand_token","elements","first","is_expand","first_token","AST_SymbolFunarg","AST_Hole","names","is_array","AST_ObjectKeyVal","property_token","property","as_property_name","block","generator","loop","current_generator","current_async","params","_verify_symbol","cur","branch","AST_Case","AST_Default","vardefs","no_in","kind","def","sym_type","AST_SymbolVar","AST_SymbolConst","AST_SymbolLet","AST_VarDef","AST_Var","AST_Let","AST_Const","as_atom_node","_make_symbol","AST_SymbolRef","AST_Number","AST_BigInt","AST_RegExp","AST_False","AST_True","AST_Null","to_fun_args","_","__","default_seen_above","insert_default","default_value","AST_Object","properties","AST_Array","AST_Assign","expr_atom","allow_calls","allow_arrows","subscripts","AST_NewTarget","newexp","expr_list","AST_New","annotate","new_","exprs","maybe_sequence","spread_token","invalid_sequence","trailing_comma","params_or_seq_","AST_Call","AST_Sequence","expressions","outer_comments_before","unshift","array_","object_or_destructuring_","func","cls","AST_ClassExpression","tagged","segments","AST_TemplateSegment","AST_TemplateString","closing","allow_trailing_comma","allow_empty","create_accessor","concise","concise_method_or_getset","AST_Node","KindOfClass","method","class_name","extends_","AST_SymbolDefClass","AST_SymbolClass","extends","is_class","get_ast","AST_SymbolMethod","is_static","AST_ConciseMethod","static","AST_ObjectGetter","AST_ObjectSetter","map_name","is_import","make_symbol","foreign_name","foreign_type","AST_SymbolImportForeign","AST_SymbolExportForeign","AST_SymbolExport","AST_NameMapping","map_nameAsterisk","AST_This","AST_Super","sym","noerror","comments","comments_outside_parens","_PURE","_INLINE","_NOINLINE","AST_Dot","AST_Sub","call_args","AST_PrefixedTemplateString","maybe_unary","AST_Await","make_unary","AST_UnaryPrefix","AST_UnaryPostfix","expr_op","min_prec","prec","AST_Binary","maybe_conditional","expr_ops","yes","AST_Conditional","consequent","AST_PropAccess","AST_ObjectProperty","maybe_assign","star","has_expression","AST_Yield","is_star","_yield_expression","commas","AST_Toplevel","DEFNODE","methods","base","self_props","PROPS","proto","create","initialize","Function","BASE","SUBCLASSES","CTOR","SELF_PROPS","DEFMETHOD","_clone","deep","self","clone","transform","TreeTransformer","$documentation","$propdoc","_walk","visitor","_visit","walk","warn_function","warn","txt","AST_Statement","walk_body","len","clone_block_scope","block_scope","AST_Block","AST_StatementWithBody","TreeWalker","AST_LoopControl","AST_DWLoop","AST_Scope","variables","functions","uses_with","uses_eval","parent_scope","enclosed","cname","get_defun_scope","is_block_scope","pinned","globals","wrap_commonjs","wrapped_tl","wrap_enclose","args_values","index","join","uses_arguments","args_as_names","out","all_symbols","AST_Symbol","seg","AST_Jump","AST_Exit","AST_SwitchBranch","name_import","name_export","AST_Unary","AST_Class","scope","AST_SymbolBlockDeclaration","AST_Constant","getValue","literal","AST_Atom","AST_NaN","AST_Undefined","AST_Infinity","AST_Boolean","callback","visit","stack","descend","getPrototypeOf","st","before","after","def_transform","tw","in_list","transformed","after_ret","do_list","list","first_in_statement","parent","EXPECT_DIRECTIVE","CODE_LINE_BREAK","CODE_SPACE","r_annotation","is_some_comments","OutputStream","readonly","ascii_only","beautify","braces","ie8","indent_level","indent_start","inline_script","keep_numbers","keep_quoted_props","max_line_len","preamble","quote_keys","quote_style","safari10","semicolons","shorthand","source_map","webkit","width","wrap_iife","wrap_func_args","comment_filter","regex_pos","lastIndexOf","indentation","current_col","current_line","current_pos","OUTPUT","printed_comments","to_utf8","identifier","get_full_char_code","toString","s","encode_string","dq","sq","quote_single","quote_double","make_string","mapping_token","mapping_name","has_parens","might_need_space","might_need_semicolon","might_add_newline","need_newline_indented","need_space","newline_insert","mappings","do_add_mapping","mapping","cline","ccol","ensure_line_len","delta","requireSemicolonChars","print","indent","space","half","back","repeat","with_indent","next_indent","save_indentation","newline","force_semicolon","has_nlb","in_directive","use_asm","active_scope","current_width","should_break","comma","colon","print_name","make_name","print_string","escape_directive","encoded","print_template_string_chars","with_block","with_parens","with_square","add_mapping","option","opt","prepend_comments","shift","filter","c","last_nlb","append_comments","tail","insert","push_node","pop_node","DEFPRINT","nodetype","PARENS","display_body","is_toplevel","output","allow_directives","stmt","print_braced_empty","print_braced","parenthesize_for_noin","noin","parens","print_property_name","make_num","force_statement","make_block","digits","candidates","toLowerCase","exec","best","best_of","DEFMAP","force_parens","_codegen","add_source_map","needs_parens","po","pp","so","sp","p1","startsWith","_do_print_body","nokeyword","arg","_do_print","tag","parenthesize_tag","is_tagged","first_statement","returned","left_is_object","e","make_then","definition","mangled_name","get_name","allowShortHand","_print_getter_setter","existing_flags","flag","delete","size","sort_regexp_flags","MASK_EXPORT_DONT_MANGLE","MASK_EXPORT_WANT_MANGLE","function_defs","unmangleable_names","SymbolDef","eliminated","assignments","replaced","global","export","undeclared","id","next_id","chained","direct_access","recursive_refs","should_replace","single_use","fixed","seal","keep_fnames","eval","keep_classnames","cache","unmangleable","redefinition","redefined_catch_def","next_mangled","ext","base54","reserved","defun","in_destructuring","for_scopes","save_scope","init_scope_vars","the_block_scope","save_destructuring","save_defun","save_labels","def_function","mark_export","def_variable","mark_enclosed","find_variable","reference","level","exported","def_global","refs","g","_var_name_cache","varNames","var_names","_added_var_names","add_var_name","new_scope_enclosed_set","scope_ancestry","ancestry","to_enclose","scope_topdown","values","arguments","symbol","mangled_names","tricky_def","tricky_name","_default_mangler_options","lname","to_mangle","collect","save_nesting","mangle","avoid","to_avoid","add_def","reset","sort","find_colliding_names","rename","next_name","stream","_print","consider","skip_string","tail_node","print_to_string","leading","chars","frequency","compare","UNUSED","UNDEFINED","INLINED","WRITE_ONLY","SQUEEZED","OPTIMIZED","TOP","CLEAR_BETWEEN_PASSES","has_flag","set_flag","clear_flag","Compressor","false_by_default","arrows","booleans","booleans_as_integers","collapse_vars","comparisons","computed_props","conditionals","dead_code","drop_console","drop_debugger","evaluate","global_defs","hoist_funs","hoist_props","hoist_vars","if_return","inline","join_vars","keep_fargs","keep_infinity","loops","negate_iife","passes","pure_getters","pure_funcs","reduce_funcs","reduce_vars","sequences","side_effects","switches","top_retain","typeofs","unsafe","unsafe_arrows","unsafe_comps","unsafe_Function","unsafe_math","unsafe_methods","unsafe_proto","unsafe_regexp","unsafe_undefined","unused","warnings","funcs","vars","sequences_limit","warnings_produced","evaluated_regexps","resolve_defines","process_expression","min_count","stopping","pass","figure_out_scope","reset_opt_flags","count","info","was_scope","hoist_properties","hoist_declarations","optimize","drop_unused","def_optimize","optimizer","compressor","read_property","get_value","make_node_from_constant","fixed_value","is_modified","immutable","is_lhs","is_expr_pure","contains_this","is_func_expr","is_lhs_read_only","is_immutable","is_ref_of","find_scope","toplevel_ok","make_sequence","reduce","merge_sequence","isFinite","maintain_this_binding","as_statement_array","thing","is_empty","can_be_evicted_from_block","loop_body","is_iife_call","is_undeclared_ref","tt","drop_side_effect_free","def_reduce_vars","reset_def","exposed","reset_variables","defs_to_safe_ids","safe_ids","mark","loop_ids","reset_block_variables","safe","safe_to_read","safe_to_assign","def_safe_ids","mark_escaped","d","depth","is_constant","is_constant_expression","lazy_op","suppressor","eq","iife","arg_name","saved_loop","has_break_or_continue","recursive_ref","ref_once","pulled_scope","limit_scope","child_names","scope_encloses_variables_in_this_scope","preparation","global_names","def_is_string","identifier_atom","is_identifier_atom","tighten_body","statements","in_try","find_parent","find_loop_scope_try","CHANGED","max_iter","eliminate_spurious_blocks","eliminate_dead_code","handle_if_return","sequencesize","sequencesize_2","join_consecutive_vars","collapse","stat_index","scanner","abort","hit","hit_stack","hit_index","handle_custom_scan_order","stop_after","find_stop","write_only","lvalues","equivalent_to","replace_all","is_declared","pure_prop_access_globals","stop_if_hit","lhs_local","can_replace","value_def","candidate","funarg","may_modify","may_throw_on_access","may_throw","has_side_effects","side_effects_external","multi_replacer","extract_args","extract_candidates","get_lhs","get_lvalues","is_lhs_local","value_has_side_effects","replace_all_symbols","remove_candidate","has_overlapping_symbol","fn","fn_strict","found","scan_this","cur_scope","redefined_within_scope","referenced","var_def","mangleable_var","get_rvalue","min","unary_side_effects","seen_dirs","multiple_if_returns","has_multiple_if_returns","in_lambda","next_index","ab","can_merge_flow","aborts","negate","as_statement_array_with_return","extract_functions","prev_index","lct","loopcontrol_target","is_return_void","declarations_only","has_quit","extract_declarations_from_unreachable_code","seq","push_seq","to_simple_statement","decls","cons_seq","alt","join_object_assignments","defn","trimmed","diff","extract_object_assignments","target","remove_initializers","is_undefined","def_may_throw_on_access","_dot_throw","def_is_boolean","unary_bool","binary_bool","is_boolean","def_is_number","unary","binary","is_number","is_string","best_of_expression","ast1","ast2","best_of_statement","convert_to_predicate","keys","def_find_defs","_find_defs","child","suffix","defines","to_node","object_fns","native_fns","Boolean","Number","static_fns","def_eval","_eval","unaryPrefix","evaluated","element","non_converting_unary","non_converting_binary","pow","global_objs","static_values","aa","first_arg","static_value","static_fn","native_fn","constructor","def_negate","basic_negation","negated","global_pure_fns","def_has_side_effects","any","is_call_pure","def_may_throw","def_is_constant_expression","all_refs_local","scope_def","def_aborts","block_aborts","opt_AST_Lambda","r_keep_assign","retain_top_func","drop_funcs","drop_vars","assign_as_unused","in_use_ids","fixed_ids","var_defs_by_id","initializations","node_def","in_export","scan_ref_scoped","in_use","trim","unreferenced","template","drop_block","head","is_destructure","var_defs","assign","redef","dirs","hoisted","vars_found","var_decl","to_assignments","is_lambda","defs_by_id","hoister","make_sym","new_var","make_var_name","def_drop_side_effect_free","nodes","changed","if_break_in_loop","is_break","drop_it","rest","self_condition_length","negated_length","negated_is_best","default_branch","exact_match","decl","eliminate_branch","default_index","has_break","varDef","inline_array_like_spread","simple_args","is_func","rx","EXIT","separator","consts","ast","fun","comp","compute_char_frequency","mangle_names","is_regular_func","can_inline","returned_value","return_value","can_flatten_body","block_scoped","variable","safe_to_inject","can_inject_vars","can_inject_args","arg_vals_outer_refs","value_walker","scope_outer_refs","can_inject_args_values","is_reachable","can_inject_symbols","add_child_scope","append_var","flatten_args","lines","flatten_vars","flatten_fn","ev","trim_right_for_undefined","lift_sequences","in_boolean_context","commutativeOperators","is_atomic","reachable","find_ref","scan_scope","reversible","is_strict_comparison","combined","ll","rr","lr","associative","reversed","within_array_or_object_literal","defun_def","lambda_def","value_length","name_length","overhead","undef","ASSIGN_OPS","ASSIGN_OPS_COMMUTATIVE","safe_to_flatten","literals_in_boolean_context","lift_key","evaluateRight","arg_index","single_arg_diff","in_bool","is_true","is_false","booleanize","OPT_ARGUMENTS","sub","flatten_object","retValue","FLATTEN","flatten","k","optimized","has_special_symbol","segment","arrow","ancestors","is_destructuring_export_decl","keep","elem","should_retain","domprops","reserve_quoted_keys","addStrings","mangle_properties","reserved_option","builtins","debug","keep_quoted","only_cache","regex","objects","global_ref","new_global","Date","Symbol","ArrayBuffer","DataView","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","EvalError","Float32Array","Float64Array","Int8Array","Int16Array","Int32Array","JSON","Promise","Proxy","RangeError","ReferenceError","Reflect","SyntaxError","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","URIError","WeakMap","WeakSet","getOwnPropertyNames","find_builtins","debug_name_suffix","names_to_mangle","keep_quoted_strict","declared","root","mangleStrings","can_mangle","should_mangle","mangled","debug_mangled","to_ascii","atob","b64","Buffer","from","to_base64","btoa","set_shorthand","init_cache","map_from_object","cache_to_json","minify","files","quoted_props","timings","compress","enclose","nameCache","sourceMap","wrap","now","asObject","includeSources","url","warning","orig_line_diff","dest_line_diff","MOZ_SourceMap","SourceMapGenerator","sourceRoot","orig_map","SourceMapConsumer","sources","sourceContent","sourceContentFor","setSourceContent","gen_line","gen_col","orig_line","orig_col","originalPositionFor","column","addMapping","generated","original","stringify","toJSON","SourceMap","total","error","infer_options","normalize_directives","MOZ_TO_ME","Program","M","my_start_token","my_end_token","from_moz","ArrayPattern","elm","ObjectPattern","AssignmentPattern","Type","FROM_MOZ_STACK","SpreadElement","argument","RestElement","TemplateElement","cooked","TemplateLiteral","quasis","TaggedTemplateExpression","quasi","FunctionDeclaration","FunctionExpression","ArrowFunctionExpression","ExpressionStatement","TryStatement","handlers","handler","guardedHandlers","finalizer","Property","computed","MethodDefinition","ArrayExpression","ObjectExpression","SequenceExpression","MemberExpression","SwitchCase","VariableDeclaration","declarations","ImportDeclaration","specifiers","specifier","imported","local","ExportAllDeclaration","ExportNamedDeclaration","declaration","ExportDefaultDeclaration","Literal","pattern","rx_source","MetaProperty","meta","Identifier","BigIntLiteral","raw_token","moznode","loc","range","moztype","mytype","propmap","moz_to_me","me_to_moz","moz","how","my","to_moz","to_moz_block","to_moz_scope","def_to_moz","UpdateExpression","UnaryExpression","ClassDeclaration","ClassExpression","superClass","to_moz_in_destructuring","guard","name_mapping","isComputed","string_or_num","to_mozilla_ast","mynode","from_mozilla_ast","save_stack","TO_MOZ_STACK","0","component"],"mappings":"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BACA,WACA,QACA,cACA,kBACA,gBACA,iBACA,uBACA,qBACA,kBACA,gBACA,YACA,OACA,OACA,eACA,YACA,YACA,YACA,OACA,wBACA,iBACA,cACA,eACA,OACA,oBACA,UACA,WACA,iBACA,kBACA,oBACA,mBACA,OACA,YACA,UACA,kBACA,MACA,eACA,qBACA,SACA,eACA,WACA,gBACA,QACA,SACA,UACA,oBACA,mBACA,oBACA,kBACA,eACA,iBACA,gCACA,gCACA,gCACA,+BACA,6BACA,aACA,iBACA,iBACA,iBACA,qBACA,eACA,qBACA,MACA,iBACA,iBACA,mBACA,sBACA,kBACA,2BACA,kBACA,gBACA,kBACA,mBACA,eACA,qBACA,mBACA,cACA,oBACA,UACA,cACA,sBACA,eACA,gBACA,kBACA,iBACA,WACA,eACA,0BACA,mBACA,kBACA,WACA,SACA,cACA,aACA,UACA,gBACA,UACA,UACA,kBACA,wBACA,sBACA,oBACA,yBACA,uBACA,wBACA,oBACA,qBACA,uBACA,sBACA,mBACA,WACA,SACA,YACA,SACA,cACA,UACA,aACA,eACA,SACA,SACA,aACA,SACA,iBACA,kBACA,sBACA,SACA,SACA,UACA,WACA,eACA,aACA,eACA,cACA,cACA,cACA,QACA,YACA,cACA,aACA,aACA,aACA,WACA,YACA,YACA,aACA,gBACA,kBACA,iBACA,iBACA,iBACA,cACA,UACA,iBACA,SACA,WACA,WACA,SACA,YACA,iBACA,kBACA,wBACA,SACA,KACA,iBACA,gBACA,2BACA,gBACA,oBACA,sBACA,gBACA,aACA,iBACA,YACA,iBACA,aACA,WACA,eACA,UACA,mBACA,UACA,cACA,gBACA,UACA,SACA,YACA,cACA,eACA,iBACA,WACA,WACA,OACA,YACA,gBACA,mBACA,aACA,mBACA,oBACA,kBACA,oBACA,aACA,cACA,gBACA,2BACA,aACA,kBACA,iBACA,iBACA,kBACA,eACA,WACA,uBACA,SACA,yBACA,gBACA,iCACA,6BACA,iCACA,8BACA,4CACA,8BACA,qBACA,YACA,WACA,eACA,oBACA,sBACA,YACA,oBACA,YACA,WACA,mBACA,UACA,UACA,cACA,kBACA,aACA,qBACA,uBACA,gBACA,eACA,eACA,sBACA,iBACA,iBACA,kBACA,wBACA,+BACA,uBACA,4BACA,8BACA,0BACA,yBACA,0BACA,2BACA,yBACA,4BACA,wBACA,0BACA,0BACA,yBACA,4BACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,gBACA,aACA,aACA,eACA,mBACA,kBACA,YACA,cACA,WACA,mBACA,oBACA,oBACA,oBACA,WACA,gBACA,mBACA,oBACA,eACA,uBACA,6BACA,qBACA,eACA,eACA,sBACA,iBACA,iBACA,eACA,cACA,WACA,iBACA,gBACA,gBACA,gBACA,sBACA,cACA,WACA,cACA,aACA,eACA,gBACA,eACA,gBACA,qBACA,iBACA,eACA,WACA,YACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,YACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,YACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,YACA,YACA,YACA,YACA,YACA,YACA,eACA,eACA,WACA,sBACA,WACA,gBACA,eACA,cACA,cACA,mBACA,cACA,sBACA,WACA,gBACA,WACA,eACA,WACA,cACA,eACA,WACA,cACA,kBACA,mBACA,WACA,cACA,oBACA,kBACA,WACA,oBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,kBACA,WACA,eACA,iBACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,mBACA,mBACA,oBACA,kBACA,sBACA,4BACA,oBACA,WACA,aACA,kBACA,gBACA,mBACA,iBACA,eACA,iBACA,gBACA,cACA,cACA,cACA,eACA,qBACA,oBACA,oBACA,WACA,uBACA,eACA,WACA,cACA,gBACA,eACA,WACA,qBACA,gBACA,mBACA,mBACA,eACA,eACA,eACA,eACA,kBACA,WACA,aACA,eACA,WACA,oBACA,cACA,iBACA,YACA,WACA,qBACA,qBACA,mBACA,WACA,aACA,gBACA,oBACA,uBACA,sBACA,sBACA,sBACA,yBACA,uBACA,sBACA,uBACA,sBACA,wBACA,0BACA,yBACA,4BACA,yBACA,4BACA,sBACA,qBACA,qBACA,qBACA,uBACA,wBACA,WACA,6BACA,iCACA,kCACA,kCACA,8BACA,mCACA,4BACA,2BACA,2BACA,4BACA,2BACA,2BACA,mCACA,kCACA,6BACA,6BACA,6BACA,2BACA,qBACA,qBACA,6BACA,wBACA,qBACA,0BACA,qBACA,kCACA,2BACA,yBACA,mBACA,sBACA,0BACA,gCACA,qBACA,oBACA,4BACA,wBACA,0BACA,oBACA,sBACA,sBACA,yBACA,0BACA,wBACA,wBACA,2BACA,8BACA,qBACA,mBACA,sBACA,0BACA,wBACA,0BACA,0BACA,wBACA,oCACA,kCACA,iCACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,2BACA,wBACA,qBACA,6BACA,uBACA,wBACA,qBACA,wBACA,wBACA,0BACA,oCACA,kCACA,sBACA,4BACA,yBACA,oBACA,qBACA,4BACA,qBACA,yBACA,uBACA,sBACA,sBACA,yBACA,2BACA,0BACA,oBACA,wBACA,uBACA,sBACA,4BACA,6BACA,0BACA,+BACA,4BACA,4BACA,qBACA,6BACA,6BACA,4BACA,0BACA,uBACA,qBACA,qBACA,sBACA,6BACA,wBACA,sBACA,qBACA,yBACA,wBACA,wBACA,0BACA,yBACA,qBACA,sBACA,yBACA,2BACA,uBACA,wBACA,wBACA,wBACA,oBACA,4BACA,sBACA,qBACA,wBACA,wBACA,6BACA,qBACA,qBACA,oBACA,qBACA,uBACA,wBACA,yBACA,WACA,WACA,cACA,OACA,YACA,cACA,WACA,YACA,YACA,eACA,cACA,eACA,mBACA,uBACA,WACA,OACA,iBACA,YACA,sBACA,4BACA,mBACA,oBACA,yBACA,uBACA,gBACA,2BACA,WACA,mBACA,eACA,YACA,yBACA,IACA,uBACA,+BACA,eACA,QACA,eACA,QACA,aACA,eACA,cACA,wBACA,UACA,QACA,aACA,QACA,uBACA,UACA,eACA,SACA,kBACA,QACA,aACA,YACA,QACA,iBACA,cACA,cACA,WACA,UACA,UACA,gBACA,mBACA,gBACA,cACA,iBACA,0BACA,QACA,aACA,aACA,aACA,aACA,aACA,aACA,QACA,iBACA,2BACA,kBACA,sCACA,cACA,qCACA,qCACA,+CACA,uCACA,sBACA,uBACA,oCACA,oCACA,4CACA,0BACA,QACA,iBACA,aACA,WACA,wBACA,gBACA,OACA,YACA,OACA,YACA,WACA,aACA,aACA,eACA,eACA,aACA,WACA,WACA,WACA,uBACA,SACA,UACA,aACA,WACA,UACA,gBACA,eACA,eACA,oBACA,mBACA,mBACA,gBACA,eACA,mBACA,SACA,wBACA,WACA,YACA,aACA,WACA,aACA,kBACA,OACA,oBACA,oBACA,oBACA,kBACA,mBACA,gBACA,kBACA,sBACA,wBACA,kBACA,oBACA,oBACA,iBACA,qBACA,qBACA,mBACA,kBACA,sBACA,qBACA,oBACA,uBACA,iBACA,eACA,cACA,mBACA,sBACA,kBACA,6BACA,kBACA,mBACA,sBACA,gBACA,kBACA,qBACA,kBACA,oBACA,mBACA,mBACA,qBACA,oBACA,gBACA,mBACA,oBACA,kBACA,iBACA,qBACA,mBACA,kBACA,sBACA,kBACA,mBACA,iBACA,mBACA,oBACA,sBACA,oBACA,wBACA,oBACA,uBACA,mBACA,qBACA,iBACA,sBACA,2BACA,mBACA,oBACA,oBACA,oBACA,oBACA,kBACA,mBACA,0BACA,uBACA,sBACA,mBACA,sBACA,0BACA,sBACA,sBACA,kBACA,mBACA,mBACA,mBACA,qBACA,mBACA,kBACA,UACA,UACA,eACA,aACA,gBACA,gBACA,aACA,gBACA,cACA,YACA,qBACA,cACA,uBACA,aACA,gBACA,iBACA,WACA,cACA,iBACA,iBACA,mBACA,aACA,iBACA,wBACA,OACA,mCACA,iCACA,cACA,OACA,YACA,iBACA,MACA,WACA,WACA,WACA,sBACA,qBACA,wBACA,eACA,yBACA,gCACA,2BACA,wBACA,oBACA,oBACA,gBACA,mBACA,SACA,eACA,QACA,cACA,YACA,WACA,aACA,qBACA,iBACA,aACA,aACA,YACA,SACA,gBACA,OACA,4BACA,WACA,OACA,OACA,UACA,iBACA,gBACA,WACA,QACA,WACA,gBACA,uBACA,gCACA,uBACA,SACA,OACA,SACA,kBACA,uBACA,wBACA,QACA,YACA,aACA,aACA,cACA,OACA,OACA,MACA,SACA,UACA,SACA,QACA,UACA,WACA,YACA,UACA,cACA,iBACA,YACA,kBACA,mBACA,WACA,mCACA,4BACA,+BACA,wBACA,mBACA,0BACA,iCACA,mBACA,YACA,sBACA,qBACA,iCACA,6BACA,oBACA,oBACA,mBACA,sBACA,oBACA,8BACA,sBACA,sBACA,8BACA,sBACA,uBACA,uBACA,aACA,eACA,aACA,YACA,mBACA,YACA,kBACA,oBACA,mBACA,eACA,YACA,YACA,YACA,WACA,YACA,UACA,qBACA,oBACA,oBACA,oBACA,sBACA,mBACA,iBACA,mBACA,qBACA,uBACA,wBACA,qBACA,yBACA,sBACA,uBACA,qBACA,uBACA,2CACA,kCACA,qCACA,iCACA,gCACA,8BACA,2BACA,6BACA,+BACA,kCACA,kCACA,iCACA,gCACA,kCACA,kCACA,gCACA,yBACA,yBACA,yBACA,iCACA,yBACA,0BACA,0BACA,MACA,OACA,kBACA,eACA,8BACA,sBACA,aACA,gBACA,gBACA,uBACA,sBACA,kBACA,oBACA,uBACA,YACA,YACA,iBACA,sBACA,gBACA,cACA,cACA,kCACA,6BACA,mBACA,mBACA,wBACA,iBACA,eACA,cACA,UACA,WACA,gBACA,aACA,mBACA,eACA,oBACA,wBACA,uBACA,uBACA,6BACA,mBACA,wBACA,6BACA,gBACA,wBACA,aACA,wBACA,eACA,oBACA,oBACA,oBACA,iBACA,sBACA,uBACA,iBACA,sBACA,sBACA,sBACA,qBACA,cACA,kBACA,aACA,qBACA,eACA,aACA,eACA,qBACA,sBACA,iBACA,gBACA,eACA,gBACA,qBACA,qBACA,qBACA,iBACA,aACA,wBACA,eACA,yBACA,0BACA,0BACA,aACA,iBACA,eACA,iBACA,cACA,gBACA,yBACA,sBACA,YACA,mBACA,6BACA,8BACA,0BACA,2BACA,gBACA,kBACA,iBACA,uBACA,kBACA,mBACA,cACA,gBACA,iBACA,aACA,mBACA,yBACA,wBACA,yBACA,oBACA,eACA,qBACA,oBACA,gBACA,qBACA,wBACA,wBACA,8BACA,eACA,eACA,gBACA,gBACA,oBACA,kBACA,gBACA,mBACA,iBACA,gBACA,iBACA,UACA,wBACA,yBACA,oBACA,gBACA,cACA,eACA,iBACA,kBACA,oBACA,QACA,MACA,OACA,oBACA,SACA,aACA,cACA,wBACA,cACA,OACA,oBACA,gBACA,QACA,WACA,kBACA,gBACA,mBACA,oBACA,sBACA,SACA,WACA,8BACA,cACA,iCACA,MACA,eACA,YACA,cACA,qBACA,OACA,aACA,eACA,WACA,WACA,eACA,mBACA,SACA,eACA,WACA,MACA,2BACA,2BACA,sBACA,sBACA,sBACA,sBACA,OACA,SACA,UACA,6BACA,6BACA,gBACA,SACA,8BACA,sBACA,sBACA,SACA,iBACA,gBACA,iBACA,YACA,YACA,kBACA,kBACA,oBACA,4BACA,4BACA,mCACA,mCACA,gCACA,gCACA,uCACA,uCACA,qBACA,gCACA,gCACA,qBACA,8BACA,8BACA,qBACA,qBACA,kBACA,kBACA,UACA,oBACA,aACA,KACA,gBACA,SACA,wBACA,sBACA,uBACA,uBACA,oBACA,OACA,oBACA,8BACA,kBACA,sBACA,eACA,mBACA,aACA,SACA,cACA,mBACA,kBACA,qBACA,wBACA,4BACA,oBACA,eACA,SACA,cACA,gBACA,oBACA,wBACA,gBACA,UACA,mBACA,QACA,cACA,mBACA,IACA,YACA,qBACA,iBACA,YACA,gBACA,aACA,WACA,UACA,eACA,0BACA,uBACA,yBACA,0BACA,0BACA,sBACA,+BACA,wBACA,4BACA,qBACA,WACA,yCACA,wBACA,8BACA,yCACA,8BACA,2BACA,SACA,UACA,MACA,SACA,UACA,OACA,QACA,WACA,qBACA,4BACA,sBACA,kBACA,4BACA,iBACA,eACA,wBACA,iBACA,gBACA,QACA,aACA,iBACA,mBACA,OACA,iBACA,SACA,UACA,WACA,aACA,eACA,UACA,2BACA,iBACA,kBACA,yBACA,wBACA,WACA,kBACA,cACA,eACA,mBACA,iBACA,aACA,YACA,eACA,eACA,SACA,gBACA,iBACA,uBACA,mBACA,kBACA,cACA,2BACA,aACA,QACA,UACA,WACA,iBACA,qBACA,eACA,gBACA,yBACA,qBACA,eACA,cACA,wBACA,gBACA,8BACA,YACA,OACA,aACA,eACA,UACA,QACA,SACA,YACA,qBACA,YACA,eACA,iBACA,cACA,qBACA,oBACA,oBACA,+BACA,+BACA,mBACA,0BACA,yBACA,eACA,qBACA,sBACA,eACA,eACA,gBACA,iBACA,0BACA,0BACA,cACA,eACA,qBACA,oBACA,cACA,cACA,aACA,gBACA,gBACA,cACA,wBACA,qBACA,yBACA,WACA,yBACA,oBACA,0BACA,6BACA,mBACA,qBACA,yBACA,qBACA,oBACA,wBACA,oBACA,wBACA,iCACA,kBACA,oBACA,2BACA,sBACA,mBACA,qBACA,WACA,sCACA,mBACA,iBACA,iBACA,oBACA,cACA,aACA,qBACA,yBACA,oBACA,eACA,oBACA,0BACA,gCACA,wBACA,6BACA,8BACA,8BACA,2BACA,yBACA,oBACA,oBACA,oBACA,oBACA,oBACA,2BACA,oBACA,oBACA,wBACA,yBACA,qBACA,yBACA,+BACA,wBACA,mBACA,yBACA,mBACA,iBACA,qBACA,2BACA,yBACA,wBACA,wBACA,0BACA,cACA,qBACA,kBACA,qBACA,qBACA,qBACA,kBACA,kBACA,YACA,gBACA,iBACA,2BACA,kBACA,mBACA,iBACA,YACA,qBACA,yBACA,YACA,gBACA,WACA,iBACA,aACA,mBACA,mBACA,sBACA,4BACA,4BACA,kCACA,kCACA,gCACA,gCACA,sCACA,sCACA,sBACA,gCACA,gCACA,sBACA,8BACA,8BACA,iBACA,sBACA,sBACA,oBACA,WACA,eACA,oBACA,qBACA,yBACA,2BACA,UACA,iBACA,qBACA,gBACA,mBACA,gBACA,iBACA,gBACA,kBACA,mBACA,mBACA,iBACA,kBACA,wBACA,iBACA,qBACA,4BACA,kBACA,eACA,mBACA,eACA,gBACA,kBACA,iBACA,cACA,gBACA,eACA,oBACA,qBACA,oBACA,wBACA,4BACA,gBACA,gBACA,gBACA,gBACA,sBACA,6BACA,yBACA,kCACA,wBACA,yBACA,oBACA,uBACA,oBACA,yBACA,8BACA,+BACA,0BACA,8BACA,6BACA,8BACA,uBACA,2BACA,8BACA,4BACA,0BACA,2BACA,8BACA,0BACA,8BACA,2BACA,mCACA,0CACA,gCACA,kCACA,iCACA,wCACA,qCACA,wCACA,sCACA,qCACA,uCACA,sCACA,gCACA,8BACA,+BACA,gCACA,mCACA,+BACA,wBACA,oBACA,qBACA,qBACA,oBACA,oBACA,wBACA,oBACA,4BACA,oBACA,oBACA,yBACA,8BACA,0BACA,iCACA,0BACA,yBACA,4BACA,qBACA,yBACA,4BACA,uBACA,wBACA,0BACA,iCACA,gCACA,kCACA,6BACA,qBACA,yBACA,kCACA,wBACA,oBACA,iCACA,yBACA,6BACA,sCACA,+BACA,kCACA,mCACA,mCACA,mCACA,mCACA,mCACA,mCACA,mCACA,mCACA,mCACA,uBACA,2BACA,0BACA,2BACA,0BACA,wBACA,yBACA,uBACA,uBACA,sBACA,sBACA,sBACA,0BACA,wBACA,mCACA,iCACA,8BACA,kCACA,wBACA,+BACA,qBACA,yBACA,yBACA,yBACA,aACA,aACA,SACA,oBACA,SACA,sBACA,kBACA,+BACA,YACA,gBACA,yBACA,4BACA,qBACA,MACA,aACA,eACA,qBACA,uBACA,2BACA,gBACA,UACA,eACA,SACA,aACA,iBACA,eACA,SACA,cACA,YACA,4BACA,8BACA,8BACA,4BACA,6BACA,+BACA,UACA,WACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,WACA,YACA,YACA,WACA,WACA,WACA,WACA,WACA,WACA,aACA,qBACA,2BACA,mBACA,8BACA,8BACA,8BACA,8BACA,8BACA,8BACA,qBACA,6BACA,qBACA,iBACA,iBACA,YACA,UACA,cACA,gBACA,2BACA,WACA,YACA,eACA,iBACA,oBACA,WACA,oBACA,gBACA,cACA,gBACA,OACA,cACA,cACA,YACA,cACA,YACA,eACA,mBACA,gBACA,YACA,aACA,QACA,aACA,YACA,aACA,kBACA,aACA,YACA,UACA,WACA,cACA,eACA,0BACA,wBACA,+BACA,+BACA,mBACA,qCACA,sBACA,iCACA,oBACA,SACA,gBACA,eACA,iBACA,yBACA,yBACA,uBACA,6BACA,cACA,WACA,MACA,kBACA,eACA,mBACA,MACA,cACA,cACA,aACA,oBACA,qBACA,+BACA,qBACA,kBACA,iBACA,iBACA,SACA,UACA,iBACA,cACA,qCACA,oCACA,8BACA,iCACA,8BACA,2BACA,6BACA,2BACA,gBACA,WACA,gBACA,UACA,WACA,gBACA,SACA,YACA,gBACA,mBACA,qBACA,wBACA,uBACA,qBACA,qBACA,iBACA,UACA,UACA,kBACA,cACA,oBACA,mBACA,eACA,oBACA,wBACA,cACA,6BACA,eACA,uBACA,mBACA,uBACA,oBACA,sBACA,uBACA,wBACA,yBACA,kBACA,sBACA,0BACA,gBACA,gBACA,sBACA,6BACA,wBACA,kBACA,oBACA,yBACA,kBACA,wCACA,cACA,mBACA,qBACA,yBACA,wBACA,YACA,aACA,SACA,SACA,cACA,iBACA,4BACA,0BACA,8BACA,uBACA,gBACA,qCACA,iBACA,iBACA,kBACA,kBACA,cACA,gBACA,OACA,SACA,SACA,mBACA,mBACA,mBACA,mBACA,UACA,YACA,gBACA,IACA,QACA,OACA,QACA,MACA,WACA,eACA,+BACA,cACA,SACA,gBACA,aACA,YACA,iBACA,WACA,OACA,QACA,SACA,YACA,SACA,aACA,gBACA,sBACA,oBACA,gBACA,MACA,cACA,eACA,eACA,SACA,aACA,mBACA,YACA,gBACA,aACA,kBACA,YACA,cACA,WACA,cACA,UACA,aACA,WACA,YACA,UACA,kBACA,kBACA,YACA,eACA,WACA,sBACA,aACA,iBACA,kBACA,SACA,YACA,MACA,UACA,QACA,YACA,QACA,gBACA,cACA,aACA,eACA,aACA,YACA,oBACA,aACA,MACA,aACA,kBACA,oBACA,QACA,MACA,cACA,UACA,SACA,UACA,WACA,mBACA,YACA,kBACA,SACA,aACA,eACA,UACA,QACA,UACA,UACA,uBACA,gCACA,sBACA,iBACA,YACA,kBACA,sBACA,qBACA,sBACA,4BACA,iBACA,uBACA,4BACA,iBACA,qBACA,oBACA,oBACA,0BACA,gBACA,qBACA,qBACA,0BACA,mBACA,cACA,MACA,MACA,cACA,kBACA,UACA,mBACA,aACA,SACA,eACA,cACA,aACA,aACA,eACA,cACA,aACA,eACA,kBACA,oBACA,UACA,mBACA,QACA,eACA,MACA,QACA,UACA,QACA,YACA,cACA,OACA,QACA,SACA,SACA,QACA,QACA,OACA,QACA,QACA,OACA,cACA,eACA,eACA,cACA,SACA,aACA,WACA,kBACA,gBACA,qBACA,oBACA,aACA,cACA,gBACA,aACA,iBACA,eACA,cACA,YACA,WACA,cACA,YACA,WACA,aACA,eACA,YACA,WACA,OACA,OACA,UACA,IACA,OACA,sBACA,qBACA,aACA,wBACA,wBACA,kBACA,mBACA,mBACA,oBACA,sBACA,oBACA,kBACA,uBACA,sBACA,iBACA,kBACA,kBACA,mBACA,qBACA,sBACA,sBACA,mBACA,iBACA,WACA,UACA,iBACA,iBACA,WACA,aACA,UACA,UACA,gBACA,UACA,OACA,eACA,iBACA,YACA,WACA,iBACA,eACA,eACA,OACA,gBACA,UACA,eACA,OACA,MACA,aACA,OACA,qBACA,aACA,kBACA,mBACA,cACA,aACA,gBACA,wBACA,YACA,oBACA,QACA,OACA,iBACA,OACA,OACA,OACA,WACA,OACA,YACA,eACA,SACA,gBACA,sBACA,4BACA,6BACA,sBACA,sBACA,kBACA,eACA,eACA,sBACA,sBACA,qBACA,sBACA,qBACA,cACA,oBACA,oBACA,oBACA,gBACA,eACA,qBACA,qBACA,qBACA,iBACA,eACA,aACA,mBACA,yBACA,0BACA,mBACA,mBACA,eACA,eACA,oBACA,yBACA,0BACA,oBACA,oBACA,iBACA,cACA,kBACA,mBACA,cACA,oBACA,oBACA,mBACA,oBACA,mBACA,aACA,kBACA,kBACA,kBACA,eACA,cACA,mBACA,mBACA,mBACA,gBACA,cACA,YACA,iBACA,sBACA,uBACA,iBACA,iBACA,cACA,SACA,eACA,QACA,gBACA,qBACA,iBACA,eACA,cACA,gBACA,SACA,uBACA,aACA,aACA,qBACA,YACA,YACA,aACA,cACA,cACA,kBACA,OACA,UACA,SACA,aACA,cACA,aACA,gBACA,WACA,iBACA,UACA,cACA,SACA,WACA,UACA,aACA,aACA,IACA,OACA,SACA,iBACA,eACA,cACA,kBACA,cACA,cACA,SACA,uBACA,eACA,wBACA,aACA,YACA,SACA,UACA,eACA,cACA,UACA,gBACA,oBACA,yBACA,sBACA,OACA,QACA,WACA,OACA,KACA,OACA,YACA,cACA,cACA,QACA,KACA,QACA,QACA,YACA,iBACA,UACA,eACA,mBACA,wBACA,OACA,SACA,WACA,aACA,YACA,eACA,gBACA,wBACA,WACA,eACA,UACA,iBACA,yBACA,oBACA,gBACA,UACA,oBACA,YACA,aACA,WACA,SACA,aACA,OACA,YACA,YACA,UACA,QACA,kBACA,aACA,YACA,aACA,iBACA,gBACA,aACA,gBACA,kBACA,YACA,uBACA,cACA,eACA,eACA,aACA,QACA,aACA,eACA,oBACA,aACA,aACA,cACA,YACA,cACA,UACA,UACA,OACA,YACA,YACA,aACA,WACA,WACA,gBACA,YACA,WACA,UACA,gBACA,QACA,gBACA,YACA,aACA,QACA,YACA,SACA,UACA,MACA,QACA,MACA,OACA,WACA,cACA,WACA,UACA,WACA,gBACA,kBACA,YACA,UACA,QACA,QACA,sBACA,8BACA,aACA,qBACA,4BACA,YACA,YACA,OACA,cACA,aACA,YACA,eACA,aACA,kBACA,kBACA,kBACA,aACA,cACA,UACA,UACA,oBACA,0BACA,UACA,wBACA,0BACA,mBACA,cACA,eACA,aACA,aACA,UACA,gBACA,WACA,qBACA,uBACA,yBACA,uBACA,0BACA,SACA,gBACA,iBACA,iBACA,gBACA,UACA,qBACA,uCACA,kCACA,UACA,aACA,eACA,YACA,aACA,kBACA,UACA,cACA,qBACA,cACA,YACA,WACA,eACA,UACA,kBACA,kBACA,kBACA,oBACA,mBACA,cACA,gBACA,UACA,cACA,cACA,WACA,aACA,UACA,aACA,WACA,0BACA,SACA,gBACA,SACA,kBACA,iBACA,oBACA,gBACA,aACA,uBACA,0BACA,MACA,OACA,QACA,oBACA,gBACA,mBACA,eACA,WACA,kBACA,SACA,iBACA,eACA,kBACA,oBACA,qBACA,eACA,qBACA,qBACA,sBACA,gBACA,sBACA,wBACA,gBACA,2BACA,qBACA,kBACA,mBACA,oBACA,cACA,kBACA,iBACA,yBACA,qBACA,2BACA,gBACA,kBACA,wBACA,cACA,oBACA,mBACA,oBACA,iBACA,aACA,iBACA,qBACA,oBACA,kBACA,cACA,uBACA,uBACA,2BACA,kBACA,+BACA,0BACA,oBACA,mBACA,qBACA,qBACA,oBACA,kBACA,cACA,mBACA,eACA,gBACA,qBACA,cACA,8BACA,gBACA,uBACA,cACA,wBACA,qBACA,iBACA,kBACA,kBACA,kBACA,yBACA,yBACA,4BACA,kCACA,kCACA,wCACA,wCACA,sCACA,sCACA,4CACA,4CACA,4BACA,sCACA,sCACA,4BACA,oCACA,oCACA,4BACA,4BACA,iBACA,gBACA,qBACA,+BACA,wBACA,gBACA,eACA,mBACA,qBACA,mBACA,cACA,cACA,cACA,iBACA,kBACA,gBACA,cACA,kBACA,mBACA,mBACA,eACA,cACA,SACA,MACA,WACA,WACA,UACA,eACA,UACA,WACA,OACA,WACA,cACA,cACA,eACA,gBACA,aACA,eACA,eACA,gBACA,cACA,mBACA,cACA,SACA,QACA,cACA,KACA,KACA,IACA,OACA,UACA,eACA,eACA,UACA,eACA,WACA,UACA,WACA,KACA,QACA,kBACA,UACA,SACA,kBACA,eACA,YACA,qBACA,UACA,UACA,iBACA,iBACA,eACA,sBACA,mBACA,kBACA,gBACA,aACA,eACA,cACA,gBACA,QACA,sBACA,sBACA,mBACA,iBACA,YACA,SACA,eACA,gBACA,aACA,iBACA,aACA,iBACA,oBACA,qBACA,cACA,eACA,oBACA,gBACA,qBACA,YACA,aACA,eACA,cACA,cACA,gBACA,uBACA,WACA,eACA,iBACA,oBACA,QACA,YACA,SACA,SACA,SACA,YACA,YACA,aACA,aACA,YACA,cACA,cACA,aACA,cACA,iBACA,SACA,cACA,eACA,SACA,SACA,mBACA,aACA,aACA,kBACA,SACA,aACA,MACA,UACA,YACA,SACA,UACA,2BACA,WACA,kBACA,aACA,gBACA,UACA,gBACA,UACA,SACA,WACA,WACA,aACA,WACA,UACA,WACA,kBACA,eACA,cACA,UACA,oBACA,cACA,cACA,cACA,2BACA,6BACA,iBACA,aACA,SACA,kBACA,oBACA,oBACA,mBACA,OACA,gBACA,WACA,WACA,YACA,aACA,2BACA,sBACA,eACA,6BACA,oBACA,YACA,oBACA,sBACA,sBACA,qBACA,aACA,qBACA,WACA,OACA,YACA,WACA,SACA,QACA,KACA,KACA,SACA,IACA,WACA,gBACA,cACA,mBACA,WACA,YACA,UACA,QACA,SACA,QACA,cACA,aACA,SACA,mBACA,0BACA,0BACA,UACA,gBACA,SACA,YACA,qBACA,WACA,UACA,UACA,MACA,eACA,aACA,eACA,cACA,YACA,UACA,QACA,WACA,WACA,UACA,YACA,YACA,oBACA,QACA,YACA,SACA,OACA,WACA,QACA,aACA,QACA,YACA,OACA,cACA,sBACA,aACA,iBACA,kBACA,MACA,SACA,yBACA,UACA,YACA,aACA,yBACA,QACA,WACA,+BACA,YACA,SACA,aACA,aACA,eACA,WACA,4BACA,kBACA,cACA,IACA,OACA,eACA,WACA,aACA,0BACA,WACA,QACA,QACA,aACA,UACA,UACA,kBACA,aACA,mBACA,WACA,WACA,kBACA,WACA,QACA,OACA,eACA,YACA,cACA,WACA,WACA,YACA,WACA,SACA,aACA,aACA,cACA,UACA,UACA,OACA,YACA,WACA,WACA,SACA,YACA,aACA,oBACA,YACA,QACA,OACA,aACA,iBACA,YACA,YACA,cACA,YACA,YACA,gBACA,WACA,WACA,aACA,WACA,QACA,QACA,QACA,cACA,gBACA,aACA,eACA,QACA,QACA,QACA,YACA,cACA,OACA,cACA,wBACA,eACA,yBACA,YACA,mBACA,eACA,aACA,iBACA,eACA,0BACA,oBACA,0BACA,yBACA,uBACA,wBACA,cACA,aACA,sBACA,cACA,uBACA,WACA,iBACA,uBACA,cACA,YACA,gBACA,cACA,wBACA,kBACA,uBACA,uBACA,qBACA,sBACA,aACA,YACA,QACA,WACA,MACA,UACA,cACA,OACA,aACA,cACA,aACA,iBACA,aACA,SACA,gBACA,QACA,UACA,KACA,QACA,cACA,eACA,eACA,0BACA,uBACA,SACA,YACA,SACA,YACA,oBACA,OACA,eACA,gBACA,cACA,YACA,SACA,aACA,oBACA,oBACA,KACA,KACA,OACA,UACA,QACA,iBACA,cACA,iBACA,kBACA,cACA,gBACA,MACA,kBACA,mBACA,kBACA,SACA,wBACA,YACA,cACA,qBACA,oBACA,eACA,iBACA,mBACA,qBACA,iBACA,UACA,aACA,UACA,cACA,wBACA,qBACA,uBACA,wBACA,sBACA,SACA,+BACA,iBACA,uBACA,gBACA,iBACA,6BACA,mBACA,wBACA,mBACA,aACA,uBACA,kBACA,eACA,aACA,qBACA,iBACA,UACA,mBACA,UACA,SACA,0BACA,gCACA,sBACA,cACA,iBACA,yBACA,oBACA,uBACA,yBACA,mBACA,uBACA,aACA,mBACA,mBACA,WACA,eACA,kBACA,aACA,UACA,aACA,aACA,wBACA,yBACA,gBACA,oCACA,uBACA,cACA,cACA,WACA,eACA,WACA,WACA,UACA,sBACA,UACA,WACA,SACA,cACA,kBACA,WACA,qBACA,cACA,cACA,kBACA,aACA,mBACA,WACA,eACA,iBACA,cACA,mBACA,mCACA,mBACA,2BACA,sBACA,wBACA,eACA,qBACA,mBACA,gBACA,uBACA,2BACA,oBACA,oBACA,sBACA,sBACA,sBACA,uBACA,mBACA,iBACA,mBACA,kBACA,aACA,eACA,eACA,kBACA,mBACA,2BACA,oBACA,UACA,oBACA,iBACA,eACA,aACA,eACA,aACA,mBACA,qBACA,2BACA,kBACA,oBACA,eACA,aACA,2BACA,yBACA,eACA,WACA,oBACA,gBACA,iBACA,qBACA,kBACA,yBACA,kBACA,UACA,oBACA,iBACA,eACA,YACA,wBACA,aACA,YACA,iBACA,cACA,qBACA,gBACA,cACA,gBACA,YACA,YACA,WACA,aACA,qBACA,eACA,YACA,aACA,mBACA,kBACA,wBACA,0BACA,iBACA,mBACA,UACA,YACA,SACA,cACA,2BACA,6BACA,2BACA,WACA,KACA,oBACA,gBACA,WACA,QACA,QACA,iBACA,WACA,sBACA,MACA,eACA,iBACA,gBACA,gBACA,iBACA,eACA,aACA,WACA,YACA,iBACA,OACA,OACA,UACA,UACA,SACA,SACA,OACA,YACA,OACA,OACA,UACA,kBACA,kBACA,qBACA,OACA,WACA,OACA,WACA,SACA,wBACA,UACA,WACA,YACA,cACA,QACA,QACA,qBACA,oBACA,OACA,KACA,aACA,WACA,YACA,aACA,oBACA,kBACA,mBACA,iBACA,SACA,WACA,UACA,iBACA,YACA,aACA,mBACA,UACA,OACA,OACA,MACA,MACA,kCACA,UACA,WACA,cACA,gBACA,QACA,aACA,UACA,YACA,sBACA,sBACA,OACA,OACA,qBACA,sBACA,qBACA,iBACA,mBACA,uBACA,kBACA,WACA,wBACA,6BACA,gBACA,iBACA,YACA,iBACA,mBACA,sBACA,eACA,oBACA,0BACA,mBACA,iBACA,uBACA,sBACA,oBACA,mBACA,oBACA,gBACA,0BACA,mBACA,oBACA,oBACA,sBACA,yBACA,mBACA,gBACA,gBACA,iBACA,sBACA,cACA,2BACA,4BACA,uBACA,iBACA,cACA,aACA,gBACA,QACA,YACA,cACA,YACA,aACA,QACA,cACA,gBACA,cACA,wBACA,qBACA,qBACA,eACA,aACA,aACA,mBACA,aACA,YACA,aACA,eACA,YACA,iBACA,iBACA,iBACA,WACA,uBACA,UACA,aACA,KACA,OACA,cACA,UACA,6BACA,WACA,2BACA,SACA,cACA,cACA,oBACA,6BACA,gBACA,qBACA,aACA,YACA,UACA,cACA,eACA,WACA,gBACA,WACA,cACA,OACA,aACA,YACA,QACA,cACA,QACA,SACA,gBACA,gBACA,iBACA,kBACA,kBACA,YACA,YACA,qBACA,8BACA,gBACA,iBACA,gBACA,aACA,WACA,WACA,cACA,aACA,YACA,YACA,kBACA,SACA,YACA,UACA,OACA,SACA,WACA,UACA,YACA,WACA,YACA,cACA,WACA,cACA,WACA,OACA,OACA,kBACA,iBACA,KACA,KACA,KACA,KACA,eACA,oBACA,oBACA,UACA,MACA,UACA,SACA,gBACA,kBACA,cACA,UACA,YACA,UACA,WACA,OACA,UACA,OACA,OACA,QACA,SACA,OACA,WACA,YACA,eACA,YACA,mBACA,cACA,YACA,cACA,YACA,qBACA,kBACA,eACA,mBACA,WACA,YACA,YACA,oBACA,WACA,SACA,SACA,aACA,aACA,iBACA,iBACA,iBACA,iBACA,SACA,OACA,cACA,aACA,SACA,eACA,mBACA,iBACA,gBACA,QACA,iBACA,gBACA,oBACA,OACA,cACA,YACA,YACA,UACA,iBACA,aACA,WACA,aACA,SACA,YACA,0BACA,SACA,OACA,YACA,cACA,QACA,OACA,aACA,mBACA,sBACA,kBACA,YACA,iBACA,oBACA,gBACA,WACA,OACA,eACA,iBACA,YACA,SACA,mBACA,YACA,eACA,SACA,gBACA,WACA,cACA,OACA,aACA,MACA,QACA,QACA,OACA,cACA,cACA,WACA,YACA,qBACA,eACA,OACA,UACA,YACA,UACA,MACA,QACA,aACA,YACA,SACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,WACA,MACA,UACA,SACA,gBACA,cACA,eACA,aACA,eACA,eACA,aACA,cACA,YACA,cACA,OACA,SACA,aACA,aACA,gBACA,eACA,YACA,eACA,YACA,eACA,cACA,cACA,cACA,QACA,OACA,YACA,mBACA,WACA,YACA,QACA,aACA,cACA,UACA,SACA,kBACA,MACA,aACA,YACA,kBACA,kBACA,0BACA,cACA,cACA,YACA,YACA,iBACA,WACA,WACA,UACA,cACA,QACA,oBACA,eACA,eACA,aACA,YACA,YACA,cACA,SACA,UACA,kBACA,UACA,eACA,kBACA,UACA,SACA,WACA,YACA,MACA,aACA,YACA,cACA,YACA,WACA,WACA,aACA,iBACA,eACA,OACA,SACA,QACA,OACA,SACA,UACA,YACA,gBACA,gBACA,iBACA,cACA,WACA,UACA,YACA,SACA,iBACA,oBACA,cACA,SACA,wBACA,UACA,UACA,mBACA,sBACA,qBACA,0BACA,sBACA,iCACA,mBACA,6BACA,iBACA,aACA,cACA,sBACA,sBACA,6BACA,YACA,UACA,gBACA,mBACA,qBACA,cACA,iBACA,gBACA,gBACA,uBACA,uBACA,YACA,gBACA,eACA,eACA,iBACA,kBACA,cACA,aACA,YACA,2BACA,eACA,kBACA,kBACA,iBACA,iBACA,UACA,eACA,WACA,YACA,qBACA,qBACA,eACA,eACA,YACA,iBACA,gBACA,mBACA,kBACA,SACA,wBACA,qBACA,oBACA,cACA,mBACA,qBACA,uBACA,2BACA,YACA,2BACA,uBACA,wBACA,eACA,qBACA,gBACA,eACA,YACA,eACA,eACA,aACA,uBACA,mBACA,qBACA,cACA,mBACA,uBACA,sBACA,sBACA,4BACA,kBACA,uBACA,uBACA,4BACA,uBACA,qBACA,6BACA,YACA,mBACA,gCACA,uBACA,mBACA,UACA,wBACA,sBACA,qBACA,wBACA,wBACA,oBACA,0BACA,wBACA,mBACA,eACA,WACA,eACA,sBACA,qBACA,mBACA,iBACA,aACA,eACA,SACA,cACA,kBACA,aACA,kBACA,iBACA,iBACA,cACA,aACA,iBACA,sBACA,aACA,aACA,aACA,wBACA,sBACA,sBACA,oBACA,qBACA,2BACA,wBACA,eACA,oBACA,mBACA,gBACA,YACA,iBACA,gBACA,aACA,WACA,uBACA,wBACA,wBACA,uBACA,YACA,0BACA,aACA,cACA,sBACA,iBACA,cACA,SACA,cACA,oBACA,6BACA,eACA,oBACA,mBACA,gBACA,kBACA,gBACA,sBACA,mBACA,6BACA,kBACA,mBACA,mBACA,0BACA,0BACA,sBACA,aACA,mBACA,mBACA,gBACA,oBACA,oBACA,oBACA,oBACA,gBACA,sBACA,sBACA,mBACA,gBACA,gBACA,sBACA,iBACA,iBACA,sBACA,0BACA,mBACA,WACA,gBACA,gBACA,gCACA,+BACA,iCACA,gCACA,cACA,oBACA,mBACA,eACA,oBACA,uBACA,uBACA,6BACA,sBACA,gCACA,eACA,oBACA,aACA,eACA,gBACA,sBACA,SACA,WACA,KACA,aACA,oBACA,YACA,WACA,WACA,eACA,cACA,QACA,IACA,OACA,WACA,YACA,iBACA,QACA,eACA,aACA,gBACA,eACA,WACA,aACA,iBACA,kBACA,YACA,OACA,yBACA,WACA,WACA,eACA,WACA,eACA,SACA,WACA,yBACA,aACA,UACA,OACA,qBACA,WACA,WACA,cACA,WACA,SACA,WACA,UACA,aACA,SACA,WACA,WACA,YACA,YACA,wBACA,eACA,YACA,OACA,cACA,UACA,SACA,MACA,aACA,SACA,mBACA,iBACA,gBACA,kBACA,cACA,mBACA,SACA,aACA,kBACA,YACA,iBACA,cACA,mBACA,UACA,KACA,qBACA,SACA,eACA,aACA,aACA,eACA,YACA,cACA,UACA,UACA,KACA,SACA,WACA,aACA,kBACA,SACA,UACA,aACA,WACA,cACA,aACA,eACA,uBACA,gBACA,aACA,iBACA,eACA,iBACA,sBACA,mBACA,eACA,cACA,qBACA,oBACA,gBACA,gBACA,wBACA,iBACA,iBACA,YACA,SACA,WACA,aACA,WACA,WACA,wBACA,wBACA,0BACA,YACA,mBACA,OACA,eACA,WACA,mBACA,uBACA,aACA,UACA,UACA,4BACA,aACA,gBACA,kBACA,SACA,cACA,QACA,kBACA,gBACA,mBACA,oBACA,aACA,eACA,gBACA,iBACA,sBACA,oBACA,0BACA,YACA,gBACA,SACA,YACA,cACA,cACA,aACA,cACA,SACA,mBACA,YACA,cACA,QACA,UACA,UACA,UACA,gBACA,SACA,iBACA,WACA,UACA,YACA,aACA,qBACA,oBACA,kBACA,eACA,iBACA,sBACA,eACA,SACA,iBACA,6BACA,aACA,UACA,YACA,YACA,aACA,UACA,mBACA,mBACA,gBACA,SACA,eACA,mBACA,YACA,cACA,gBACA,uBACA,OACA,SACA,YACA,cACA,eACA,eACA,cACA,aACA,cACA,YACA,eACA,SACA,YACA,cACA,wBACA,uBACA,yBACA,yBACA,wBACA,kBACA,uBACA,sBACA,oBACA,uBACA,iBACA,kBACA,mBACA,iBACA,wBACA,mBACA,yBACA,+BACA,cACA,wBACA,oBACA,kBACA,mBACA,mBACA,mBACA,kBACA,iBACA,kBACA,gBACA,kCACA,qBACA,sBACA,YACA,aACA,aACA,YACA,WACA,SACA,sBACA,eACA,aACA,aACA,UACA,UACA,SACA,YACA,sBACA,kBACA,gBACA,iBACA,iBACA,sBACA,qBACA,gBACA,eACA,gBACA,cACA,aACA,aACA,mBACA,eACA,qBACA,iBACA,gBACA,UACA,WACA,cACA,gBACA,6BACA,WACA,WACA,aACA,YACA,eACA,iBACA,WACA,WACA,WACA,YACA,WACA,oBACA,gBACA,SACA,yBACA,aACA,eACA,cACA,gBACA,YACA,UACA,gBACA,SACA,YACA,kBACA,WACA,YACA,YACA,cACA,YACA,eACA,WACA,gBACA,aACA,cACA,eACA,kBACA,WACA,gBACA,kBACA,kBACA,kBACA,kBACA,iBACA,YACA,YACA,uBACA,6BACA,yBACA,iDACA,2BACA,0BACA,mBACA,mBACA,qBACA,kBACA,4BACA,4CACA,4BACA,2BACA,mCACA,wBACA,UACA,SACA,UACA,OACA,aACA,eACA,gBACA,SACA,QACA,gBACA,WACA,MACA,UACA,UACA,QACA,SACA,SACA,UACA,MACA,SACA,cACA,aACA,cACA,SACA,iBACA,UACA,QACA,YACA,cACA,YACA,aACA,UACA,gBACA,iBACA,gBACA,gBACA,eACA,gBACA,eACA,eACA,eACA,WACA,aACA,aACA,YACA,YACA,mBACA,aACA,gBACA,eACA,YACA,YACA,kBACA,gBACA,KACA,KACA,KACA,KACA,MACA,UACA,iBACA,eACA,gBACA,cACA,gBACA,cACA,eACA,aACA,OACA,mBACA,oBACA,oBACA,iBACA,kBACA,kBACA,YACA,QACA,cACA,QACA,cACA,QACA,cACA,aACA,gBACA,YACA,UACA,eACA,SACA,gBACA,aACA,aACA,mBACA,iBACA,eACA,QACA,aACA,kBACA,WACA,eACA,UACA,WACA,YACA,OACA,aACA,cACA,cACA,sBACA,WACA,UACA,sBACA,kBACA,mBACA,eACA,QACA,kBACA,cACA,SACA,UACA,cACA,aACA,YACA,cACA,cACA,qBACA,oBACA,qBACA,oBACA,QACA,OACA,QACA,cACA,aACA,cACA,YACA,aACA,cACA,WACA,yBACA,yBACA,aACA,cACA,WACA,OACA,eACA,gBACA,eACA,SACA,UACA,cACA,QACA,iBACA,6BACA,iBACA,gBACA,YACA,qBACA,cACA,SACA,YACA,YACA,YACA,gBACA,MACA,sBACA,kBACA,iBACA,OACA,QACA,QACA,QACA,YACA,YACA,UACA,WACA,SACA,WACA,WACA,gBACA,YACA,cACA,SACA,MACA,WACA,kBACA,YACA,yBACA,yBACA,SACA,UACA,UACA,gBACA,sBACA,4BACA,UACA,WACA,YACA,iBACA,oBACA,yBACA,eACA,eACA,gBACA,kBACA,oBACA,aACA,gBACA,iBACA,aACA,QACA,aACA,0BACA,UACA,oBACA,UACA,aACA,UACA,aACA,WACA,SACA,aACA,uBACA,eACA,WACA,eACA,YACA,cACA,gBACA,WACA,YACA,YACA,OACA,mBACA,YACA,MACA,eACA,mBACA,YACA,sBACA,uBACA,oBACA,wBACA,mBACA,oBACA,gBACA,mBACA,QACA,SACA,IACA,KACA,KACA,OACA,aACA,UACA,UACA,SACA,QACA,aACA,WACA,WACA,cACA,gBACA,cACA,iBACA,OACA,QACA,MACA,OACA,oBACA,qBACA,aACA,gBACA,aACA,WACA,aACA,sBACA,aACA,SACA,SACA,WACA,YACA,eACA,YACA,OACA,MACA,gBACA,cACA,gBACA,SACA,cACA,YACA,cACA,OACA,OACA,gBACA,WACA,UACA,SACA,gBACA,gBACA,WACA,UACA,WACA,yBACA,kBACA,0BACA,SACA,MACA,UACA,cACA,gBACA,UACA,iBACA,gBACA,wBACA,wBACA,WACA,SACA,iBACA,oBACA,SACA,kBACA,kBACA,oBACA,sBACA,iBACA,cACA,YACA,sBACA,eACA,eACA,aACA,iBACA,kBACA,oBACA,aACA,kBACA,iBACA,cACA,eACA,aACA,sCACA,qBACA,eACA,cACA,iBACA,yBACA,iCACA,eACA,sBACA,iBACA,gBACA,SACA,UACA,sBACA,eACA,cACA,YACA,cACA,cACA,eACA,eACA,mBACA,iBACA,wBACA,sBACA,cACA,oBACA,8BACA,oBACA,qBACA,eACA,mBACA,WACA,qBACA,mBACA,QACA,iBACA,SACA,WACA,WACA,UACA,WACA,eACA,cACA,gBACA,eACA,eACA,cACA,cACA,UACA,SACA,aACA,SACA,cACA,MACA,UACA,WACA,YACA,kBACA,WACA,QACA,eACA,cACA,gBACA,OACA,cACA,SACA,kBACA,sBACA,mBACA,uBACA,aACA,WACA,eACA,QACA,WACA,UACA,OACA,YACA,eACA,eACA,QACA,UACA,eACA,KACA,KACA,SACA,iBACA,aACA,UACA,OACA,QACA,UACA,cACA,kBACA,sBACA,YACA,SACA,UACA,QACA,YACA,SACA,SACA,mBACA,gBACA,aACA,2BACA,2BACA,YACA,UACA,UACA,UACA,SACA,kBACA,eACA,iBACA,WACA,gBACA,gBACA,cACA,eACA,iBACA,yBACA,aACA,gBACA,aACA,aACA,WACA,YACA,eACA,cACA,UACA,UACA,wBACA,sBACA,qBACA,2BACA,qBACA,0BACA,uBACA,sBACA,aACA,YACA,MACA,gBACA,SACA,OACA,SACA,YACA,uBACA,eACA,kBACA,wBACA,WACA,OACA,WACA,UACA,SACA,oBACA,aACA,qBACA,cACA,mBACA,kBACA,WACA,gBACA,kBACA,wBACA,wBACA,YACA,qBACA,eACA,iBACA,WACA,eACA,OACA,OACA,eACA,aACA,SACA,gBACA,YACA,oBACA,gBACA,YACA,iBACA,MACA,YACA,WACA,eACA,iBACA,mBACA,qBACA,mBACA,8BACA,aACA,WACA,wBACA,iBACA,oBACA,UACA,UACA,eACA,SACA,cACA,eACA,cACA,eACA,eACA,aACA,aACA,gBACA,cACA,WACA,eACA,WACA,WACA,UACA,cACA,UACA,aACA,cACA,cACA,eACA,sBACA,YACA,iBACA,eACA,kBACA,aACA,gBACA,WACA,eACA,iBACA,2BACA,mBACA,kBACA,iBACA,mCACA,WACA,eACA,kBACA,oBACA,cACA,gBACA,cACA,iBACA,cACA,sBACA,YACA,eACA,uBACA,mBACA,eACA,8BACA,YACA,WACA,aACA,oBACA,uBACA,YACA,WACA,WACA,WACA,gBACA,iBACA,kBACA,iBACA,iBACA,mBACA,kBACA,uBACA,UACA,aACA,eACA,eACA,aACA,iBACA,cACA,qBACA,gBACA,cACA,gBACA,YACA,YACA,WACA,SACA,iBACA,sBACA,cACA,cACA,aACA,UACA,cACA,eACA,MACA,eACA,aACA,cACA,gBACA,gBACA,aACA,QACA,kBACA,iBACA,QACA,QACA,WACA,YACA,OACA,WACA,YACA,kBACA,qBACA,mBACA,UACA,OACA,iBACA,MACA,kBACA,OACA,OACA,gBACA,QACA,QACA,YACA,QACA,YACA,QACA,QACA,QACA,SACA,OACA,wBACA,cACA,eACA,iBACA,OACA,OACA,SACA,eACA,gBACA,cACA,UACA,OACA,UACA,WACA,YACA,mBACA,mBACA,kBACA,QACA,eACA,aACA,SACA,QACA,YACA,eACA,OACA,MACA,aACA,YACA,SACA,SACA,UACA,SACA,QACA,kBACA,aACA,aACA,UACA,QACA,iBACA,WACA,cACA,iBACA,YACA,aACA,QACA,SACA,gBACA,aACA,YACA,gBACA,gBACA,cACA,sBACA,cACA,sBACA,YACA,oBACA,OACA,WACA,eACA,SACA,SACA,cACA,OACA,aACA,eACA,YACA,2BACA,cACA,kBACA,cACA,cACA,gBACA,qCACA,gCACA,aACA,SACA,SACA,cACA,YACA,SACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,eACA,kBACA,mBACA,gBACA,iBACA,mBACA,gBACA,aACA,cACA,aACA,cACA,QACA,aACA,aACA,aACA,iBACA,cACA,MACA,WACA,UACA,SACA,YACA,SACA,YACA,gBACA,SACA,UACA,SACA,WACA,UACA,MACA,WACA,eACA,mBACA,UACA,gBACA,YACA,WACA,YACA,UACA,SACA,aACA,WACA,iBACA,aACA,aACA,UACA,QACA,QACA,WACA,QACA,eACA,cACA,cACA,MACA,UACA,SACA,OACA,eACA,cACA,MACA,OACA,SACA,gBACA,gBACA,UACA,UACA,MACA,YACA,OACA,aACA,gBACA,gBACA,gBACA,OACA,aACA,cACA,kBACA,wBACA,uBACA,wBACA,cACA,gBACA,iBACA,cACA,iBACA,YACA,gBACA,aACA,gBACA,eACA,cACA,iBACA,sBACA,sBACA,qBACA,4BACA,qBACA,yBACA,sBACA,0BACA,aACA,cACA,kBACA,cACA,mBACA,aACA,eACA,gBACA,aACA,aACA,gBACA,wBACA,OACA,WACA,YACA,QACA,QACA,OACA,UACA,YACA,UACA,YACA,kBACA,SACA,QACA,UACA,SACA,YACA,eACA,YACA,gBACA,UACA,iBACA,iBACA,cACA,cACA,SACA,qBACA,iBACA,oBACA,iBACA,qBACA,oBACA,cACA,WACA,cACA,QACA,WACA,eACA,WACA,cACA,eACA,cACA,cACA,SACA,yBACA,UACA,UACA,MACA,YACA,QACA,kBACA,mBACA,cACA,UACA,QACA,QACA,cACA,eACA,YACA,mBACA,kBACA,kBACA,iBACA,kBACA,iBACA,sBACA,sBACA,aACA,mBACA,sBACA,sBACA,6BACA,kBACA,qBACA,qBACA,2BACA,YACA,gBACA,eACA,eACA,OACA,WACA,YACA,YACA,QACA,WACA,OACA,aACA,eACA,gBACA,QACA,SACA,YACA,WACA,SACA,eACA,cACA,YACA,aACA,YACA,aACA,YACA,aACA,YACA,aACA,YACA,aACA,YACA,aACA,YACA,aACA,YACA,aACA,mBACA,mBACA,mBACA,SACA,WACA,eACA,WACA,QACA,iBACA,mBACA,SACA,UACA,YACA,UACA,oBACA,cACA,aACA,2BACA,4BACA,cACA,eACA,UACA,cACA,kBACA,qBACA,UACA,YACA,SACA,iBACA,YACA,iBACA,iBACA,UACA,WACA,SACA,QACA,aACA,YACA,MACA,MACA,MACA,OACA,SACA,iBACA,SACA,aACA,YACA,YACA,eACA,WACA,kBACA,SACA,QACA,QACA,kBACA,oBACA,WACA,QACA,cACA,gBACA,gBACA,wBACA,eACA,UACA,YACA,YACA,SACA,gBACA,eACA,kBACA,oBACA,YACA,YACA,SACA,YACA,SACA,UACA,iBACA,kBACA,iBACA,kBACA,iBACA,kBACA,iBACA,kBACA,2BACA,sBACA,WACA,iBACA,gBACA,mBACA,UACA,cACA,cACA,aACA,OACA,UACA,gBACA,aACA,mBACA,WACA,kBACA,kBACA,kBACA,aACA,kBACA,UACA,aACA,QACA,SACA,OACA,SACA,IACA,OACA,OACA,WACA,QACA,gBACA,YACA,eACA,kBACA,uBACA,2BACA,0BACA,0BACA,gCACA,sBACA,2BACA,gCACA,mBACA,qBACA,8BACA,wBACA,2BACA,mBACA,6BACA,uBACA,wBACA,wBACA,yBACA,2BACA,4BACA,4BACA,yBACA,uBACA,+BACA,oBACA,0BACA,0BACA,yBACA,0BACA,yBACA,iBACA,qBACA,gBACA,wBACA,kBACA,gBACA,kBACA,6BACA,yBACA,yBACA,oCACA,6BACA,8BACA,mCACA,mCACA,yBACA,iCACA,wCACA,oCACA,6BACA,wBACA,wBACA,uBACA,uBACA,wBACA,uCACA,0BACA,0BACA,2BACA,mBACA,yBACA,mBACA,yBACA,yBACA,sBACA,oBACA,uBACA,sBACA,4BACA,qBACA,0BACA,eACA,kBACA,oBACA,yBACA,6BACA,mBACA,iBACA,oBACA,uBACA,mBACA,uBACA,8BACA,kBACA,yBACA,qBACA,aACA,uBACA,wBACA,wBACA,oBACA,sBACA,4BACA,oBACA,yBACA,0BACA,2BACA,oBACA,uBACA,uBACA,0BACA,sBACA,8BACA,0BACA,0BACA,0BACA,2BACA,kCACA,qBACA,oCACA,mBACA,iCACA,cACA,sBACA,0BACA,0BACA,+BACA,+BACA,oBACA,2BACA,yBACA,uBACA,kBACA,wBACA,mBACA,wBACA,2BACA,2BACA,iCACA,YACA,0BACA,mBACA,8BACA,wBACA,sCACA,iBACA,WACA,SACA,aACA,aACA,cACA,cACA,QACA,cACA,aACA,YACA,SACA,QACA,cACA,aACA,eACA,SACA,kBACA,aACA,eACA,YACA,YACA,cACA,WACA,OACA,UACA,QACA,UACA,cACA,IACA,KACA,KACA,mBACA,cACA,gBACA,aACA,UACA,UACA,WACA,IACA,KACA,KACA,mBACA,SACA,IACA,UACA,SACA,OACA,aACA,kBCr4KJ,SAASC,GAAoBhF,EAAK7Z,GAC9B,SAASxc,EAAIhb,GACTqD,EAAUm0B,EAAUx3B,GAGxBqxC,EAAIrqB,KAAK,IAAIW,IAAW,SAASnhB,GACzBA,aAAgB8V,IAAoB9V,EAAK6H,MACzC2M,EAAIxU,EAAK1B,KACF0B,aAAgBse,IAAsBte,EAAK6H,MAClD2M,EAAIxU,EAAK1B,IAAI9E,MACNwG,aAAgBod,IACvB0yB,GAAW9vC,EAAKgW,SAAUxB,OAKtC,SAASs7B,GAAW9vC,EAAMwU,GACtBxU,EAAKwgB,KAAK,IAAIW,IAAW,SAASnhB,GAS9B,OARIA,aAAgB6Z,GAChBi2B,GAAW9vC,EAAKu0B,YAAa/f,GACtBxU,aAAgBqN,GACvBmH,EAAIxU,EAAKzB,OACFyB,aAAgBme,KACvB2xB,GAAW9vC,EAAKoe,WAAY5J,GAC5Bs7B,GAAW9vC,EAAKoR,YAAaoD,KAE1B,MAIf,SAASu7B,GAAkBlF,EAAKrgC,GAY5B,IAAIwlC,GAXJxlC,EAAUrQ,EAASqQ,EAAS,CACxBylC,UAAU,EACVxf,MAAO,KACPyf,OAAO,EACPC,aAAa,EACbC,YAAY,EACZC,MAAO,KACPrf,SAA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"}