UNPKG

1.84 MBSource Map (JSON)View Raw
1{"version":3,"file":"compiler.mjs","sources":["src/compiler/Stats.ts","node_modules/acorn/dist/acorn.mjs","node_modules/estree-walker/src/estree-walker.js","node_modules/is-reference/dist/is-reference.es.js","node_modules/periscopic/dist/periscopic.mjs","node_modules/sourcemap-codec/dist/sourcemap-codec.es.js","node_modules/code-red/dist/code-red.mjs","src/compiler/parse/acorn.ts","src/compiler/utils/patterns.ts","src/compiler/parse/read/expression.ts","src/compiler/parse/read/script.ts","node_modules/css-tree/lib/tokenizer/error.js","node_modules/css-tree/lib/tokenizer/const.js","node_modules/css-tree/lib/tokenizer/utils.js","node_modules/css-tree/lib/tokenizer/Tokenizer.js","node_modules/css-tree/lib/tokenizer/index.js","node_modules/css-tree/lib/utils/list.js","node_modules/css-tree/lib/parser/sequence.js","node_modules/css-tree/lib/parser/create.js","node_modules/css-tree/lib/syntax/scope/default.js","node_modules/css-tree/lib/syntax/scope/atruleExpression.js","node_modules/css-tree/lib/syntax/scope/selector.js","node_modules/css-tree/lib/syntax/function/element.js","node_modules/css-tree/lib/syntax/function/expression.js","node_modules/css-tree/lib/syntax/function/var.js","node_modules/css-tree/lib/syntax/scope/value.js","node_modules/css-tree/lib/syntax/scope/index.js","node_modules/css-tree/lib/syntax/atrule/font-face.js","node_modules/css-tree/lib/syntax/atrule/import.js","node_modules/css-tree/lib/syntax/atrule/media.js","node_modules/css-tree/lib/syntax/atrule/page.js","node_modules/css-tree/lib/syntax/atrule/supports.js","node_modules/css-tree/lib/syntax/atrule/index.js","node_modules/css-tree/lib/syntax/pseudo/dir.js","node_modules/css-tree/lib/syntax/pseudo/has.js","node_modules/css-tree/lib/syntax/pseudo/lang.js","node_modules/css-tree/lib/syntax/pseudo/common/selectorList.js","node_modules/css-tree/lib/syntax/pseudo/matches.js","node_modules/css-tree/lib/syntax/pseudo/not.js","node_modules/css-tree/lib/syntax/pseudo/common/nthWithOfClause.js","node_modules/css-tree/lib/syntax/pseudo/nth-child.js","node_modules/css-tree/lib/syntax/pseudo/nth-last-child.js","node_modules/css-tree/lib/syntax/pseudo/common/nth.js","node_modules/css-tree/lib/syntax/pseudo/nth-last-of-type.js","node_modules/css-tree/lib/syntax/pseudo/nth-of-type.js","node_modules/css-tree/lib/syntax/pseudo/slotted.js","node_modules/css-tree/lib/syntax/pseudo/index.js","node_modules/css-tree/lib/syntax/node/AnPlusB.js","node_modules/css-tree/lib/syntax/node/Atrule.js","node_modules/css-tree/lib/syntax/node/AtruleExpression.js","node_modules/css-tree/lib/syntax/node/AttributeSelector.js","node_modules/css-tree/lib/syntax/node/Block.js","node_modules/css-tree/lib/syntax/node/Brackets.js","node_modules/css-tree/lib/syntax/node/CDC.js","node_modules/css-tree/lib/syntax/node/CDO.js","node_modules/css-tree/lib/syntax/node/ClassSelector.js","node_modules/css-tree/lib/syntax/node/Combinator.js","node_modules/css-tree/lib/syntax/node/Comment.js","node_modules/css-tree/lib/syntax/node/Declaration.js","node_modules/css-tree/lib/syntax/node/DeclarationList.js","node_modules/css-tree/lib/syntax/node/Dimension.js","node_modules/css-tree/lib/syntax/node/Function.js","node_modules/css-tree/lib/syntax/node/HexColor.js","node_modules/css-tree/lib/syntax/node/Identifier.js","node_modules/css-tree/lib/syntax/node/IdSelector.js","node_modules/css-tree/lib/syntax/node/MediaFeature.js","node_modules/css-tree/lib/syntax/node/MediaQuery.js","node_modules/css-tree/lib/syntax/node/MediaQueryList.js","node_modules/css-tree/lib/syntax/node/Nth.js","node_modules/css-tree/lib/syntax/node/Number.js","node_modules/css-tree/lib/syntax/node/Operator.js","node_modules/css-tree/lib/syntax/node/Parentheses.js","node_modules/css-tree/lib/syntax/node/Percentage.js","node_modules/css-tree/lib/syntax/node/PseudoClassSelector.js","node_modules/css-tree/lib/syntax/node/PseudoElementSelector.js","node_modules/css-tree/lib/syntax/node/Ratio.js","node_modules/css-tree/lib/syntax/node/Raw.js","node_modules/css-tree/lib/syntax/node/Rule.js","node_modules/css-tree/lib/syntax/node/Selector.js","node_modules/css-tree/lib/syntax/node/SelectorList.js","node_modules/css-tree/lib/syntax/node/String.js","node_modules/css-tree/lib/syntax/node/StyleSheet.js","node_modules/css-tree/lib/syntax/node/TypeSelector.js","node_modules/css-tree/lib/syntax/node/UnicodeRange.js","node_modules/css-tree/lib/syntax/node/Url.js","node_modules/css-tree/lib/syntax/node/Value.js","node_modules/css-tree/lib/syntax/node/WhiteSpace.js","node_modules/css-tree/lib/syntax/node/index.js","node_modules/css-tree/lib/syntax/config/parser.js","node_modules/css-tree/lib/parser/index.js","src/compiler/parse/read/style.ts","src/compiler/parse/utils/entities.ts","src/compiler/parse/utils/html.ts","src/compiler/utils/full_char_code_at.ts","src/compiler/utils/names.ts","src/compiler/utils/fuzzymatch.ts","src/compiler/utils/list.ts","src/compiler/parse/state/tag.ts","src/compiler/parse/utils/bracket.ts","src/compiler/parse/read/context.ts","src/compiler/utils/trim.ts","src/compiler/parse/utils/node.ts","src/compiler/parse/state/mustache.ts","src/compiler/parse/state/text.ts","src/compiler/parse/state/fragment.ts","node_modules/locate-character/dist/locate-character.es.js","src/compiler/utils/get_code_frame.ts","src/compiler/utils/error.ts","src/compiler/parse/index.ts","src/compiler/compile/render_dom/wrappers/shared/is_head.ts","src/compiler/compile/render_dom/Block.ts","src/compiler/compile/render_dom/wrappers/shared/Wrapper.ts","src/compiler/compile/render_dom/wrappers/shared/create_debugging_comment.ts","src/compiler/compile/render_dom/wrappers/AwaitBlock.ts","src/compiler/compile/render_dom/wrappers/Element/EventHandler.ts","src/compiler/compile/render_dom/wrappers/shared/add_event_handlers.ts","src/compiler/compile/render_dom/wrappers/Body.ts","src/compiler/compile/utils/add_to_set.ts","src/compiler/compile/render_dom/wrappers/DebugTag.ts","src/compiler/compile/utils/get_object.ts","src/compiler/compile/render_dom/wrappers/EachBlock.ts","src/compiler/compile/utils/stringify.ts","src/compiler/compile/render_dom/wrappers/Text.ts","src/compiler/compile/render_dom/wrappers/Element/fix_attribute_casing.ts","src/compiler/utils/namespaces.ts","src/compiler/compile/render_dom/wrappers/Element/handle_select_value_binding.ts","src/compiler/compile/render_dom/wrappers/Element/Attribute.ts","src/compiler/compile/render_dom/wrappers/Element/StyleAttribute.ts","src/compiler/compile/render_dom/wrappers/Element/SpreadAttribute.ts","src/compiler/compile/utils/replace_object.ts","src/compiler/compile/utils/flatten_reference.ts","src/compiler/compile/render_dom/wrappers/shared/mark_each_block_bindings.ts","src/compiler/compile/render_dom/wrappers/Element/Binding.ts","src/compiler/compile/render_dom/wrappers/shared/add_actions.ts","src/compiler/compile/utils/compare_node.ts","src/compiler/compile/render_dom/wrappers/shared/bind_this.ts","src/compiler/compile/nodes/shared/Node.ts","src/compiler/compile/utils/scope.ts","src/compiler/compile/utils/reserved_keywords.ts","src/compiler/compile/render_dom/wrappers/shared/is_dynamic.ts","src/compiler/utils/nodes_match.ts","src/compiler/compile/render_dom/invalidate.ts","src/compiler/compile/nodes/shared/Expression.ts","src/compiler/compile/nodes/Action.ts","src/compiler/compile/render_dom/wrappers/shared/Tag.ts","src/compiler/compile/render_dom/wrappers/MustacheTag.ts","src/compiler/compile/render_dom/wrappers/RawMustacheTag.ts","src/compiler/compile/render_dom/wrappers/shared/get_slot_definition.ts","src/compiler/compile/render_dom/wrappers/Element/create_slot_block.ts","src/compiler/compile/render_dom/wrappers/Element/index.ts","src/compiler/compile/render_dom/wrappers/Head.ts","src/compiler/compile/render_dom/wrappers/IfBlock.ts","src/compiler/compile/render_dom/wrappers/KeyBlock.ts","src/compiler/compile/utils/string_to_member_expression.ts","src/compiler/compile/render_dom/wrappers/InlineComponent/index.ts","src/compiler/compile/utils/get_slot_data.ts","src/compiler/compile/render_dom/wrappers/Slot.ts","src/compiler/compile/render_dom/wrappers/Title.ts","src/compiler/compile/render_dom/wrappers/Window.ts","src/compiler/utils/link.ts","src/compiler/compile/render_dom/wrappers/Fragment.ts","src/compiler/compile/render_dom/Renderer.ts","src/compiler/compile/render_dom/index.ts","src/compiler/compile/render_ssr/handlers/AwaitBlock.ts","src/compiler/compile/render_ssr/handlers/Comment.ts","src/compiler/compile/render_ssr/handlers/DebugTag.ts","src/compiler/compile/render_ssr/handlers/EachBlock.ts","src/compiler/compile/render_ssr/handlers/shared/get_attribute_value.ts","src/compiler/compile/render_ssr/handlers/shared/get_slot_scope.ts","src/compiler/compile/render_ssr/handlers/shared/boolean_attributes.ts","src/compiler/compile/render_ssr/handlers/utils/remove_whitespace_children.ts","src/compiler/compile/render_ssr/handlers/Element.ts","src/compiler/compile/render_ssr/handlers/Head.ts","src/compiler/compile/render_ssr/handlers/HtmlTag.ts","src/compiler/compile/render_ssr/handlers/IfBlock.ts","src/compiler/compile/render_ssr/handlers/InlineComponent.ts","src/compiler/compile/render_ssr/handlers/KeyBlock.ts","src/compiler/compile/render_ssr/handlers/Slot.ts","src/compiler/compile/render_ssr/handlers/Tag.ts","src/compiler/compile/render_ssr/handlers/Text.ts","src/compiler/compile/render_ssr/handlers/Title.ts","src/compiler/compile/render_ssr/Renderer.ts","src/compiler/compile/render_ssr/index.ts","src/compiler/compile/create_module.ts","node_modules/magic-string/dist/magic-string.es.js","src/compiler/compile/css/gather_possible_values.ts","src/compiler/compile/css/Selector.ts","src/compiler/compile/utils/hash.ts","src/compiler/compile/css/Stylesheet.ts","src/compiler/config.ts","src/compiler/compile/nodes/shared/AbstractBlock.ts","src/compiler/compile/nodes/PendingBlock.ts","src/compiler/compile/nodes/ThenBlock.ts","src/compiler/compile/nodes/CatchBlock.ts","src/compiler/compile/nodes/shared/Context.ts","src/compiler/compile/nodes/AwaitBlock.ts","src/compiler/compile/nodes/EventHandler.ts","src/compiler/compile/nodes/Body.ts","src/compiler/compile/nodes/Comment.ts","src/compiler/compile/nodes/ElseBlock.ts","src/compiler/compile/nodes/EachBlock.ts","src/compiler/compile/nodes/Attribute.ts","src/compiler/compile/nodes/Binding.ts","src/compiler/compile/nodes/Transition.ts","src/compiler/compile/nodes/Animation.ts","src/compiler/compile/nodes/Class.ts","src/compiler/compile/nodes/Text.ts","src/compiler/compile/nodes/Let.ts","src/compiler/compile/nodes/Element.ts","src/compiler/compile/nodes/Head.ts","src/compiler/compile/nodes/IfBlock.ts","src/compiler/compile/nodes/InlineComponent.ts","src/compiler/compile/nodes/KeyBlock.ts","src/compiler/compile/nodes/shared/Tag.ts","src/compiler/compile/nodes/MustacheTag.ts","src/compiler/compile/nodes/Options.ts","src/compiler/compile/nodes/RawMustacheTag.ts","src/compiler/compile/nodes/DebugTag.ts","src/compiler/compile/nodes/Slot.ts","src/compiler/compile/nodes/Title.ts","src/compiler/compile/nodes/Window.ts","src/compiler/compile/nodes/shared/map_children.ts","src/compiler/compile/nodes/shared/TemplateScope.ts","src/compiler/compile/nodes/Fragment.ts","src/compiler/compile/internal_exports.ts","src/compiler/compile/utils/is_used_as_reference.ts","src/compiler/compile/utils/check_graph_for_cycles.ts","src/compiler/compile/Component.ts","src/compiler/compile/utils/get_name_from_filename.ts","src/compiler/compile/index.ts","src/compiler/preprocess/index.ts","src/compiler/index.ts"],"sourcesContent":["const now = (typeof process !== 'undefined' && process.hrtime)\n\t? () => {\n\t\tconst t = process.hrtime();\n\t\treturn t[0] * 1e3 + t[1] / 1e6;\n\t}\n\t: () => self.performance.now();\n\ninterface Timing {\n\tlabel: string;\n\tstart: number;\n\tend: number;\n\tchildren: Timing[];\n}\n\nfunction collapse_timings(timings) {\n\tconst result = {};\n\ttimings.forEach(timing => {\n\t\tresult[timing.label] = Object.assign({\n\t\t\ttotal: timing.end - timing.start\n\t\t}, timing.children && collapse_timings(timing.children));\n\t});\n\treturn result;\n}\n\nexport default class Stats {\n\tstart_time: number;\n\tcurrent_timing: Timing;\n\tcurrent_children: Timing[];\n\ttimings: Timing[];\n\tstack: Timing[];\n\n\tconstructor() {\n\t\tthis.start_time = now();\n\t\tthis.stack = [];\n\t\tthis.current_children = this.timings = [];\n\t}\n\n\tstart(label) {\n\t\tconst timing = {\n\t\t\tlabel,\n\t\t\tstart: now(),\n\t\t\tend: null,\n\t\t\tchildren: []\n\t\t};\n\n\t\tthis.current_children.push(timing);\n\t\tthis.stack.push(timing);\n\n\t\tthis.current_timing = timing;\n\t\tthis.current_children = timing.children;\n\t}\n\n\tstop(label) {\n\t\tif (label !== this.current_timing.label) {\n\t\t\tthrow new Error(`Mismatched timing labels (expected ${this.current_timing.label}, got ${label})`);\n\t\t}\n\n\t\tthis.current_timing.end = now();\n\t\tthis.stack.pop();\n\t\tthis.current_timing = this.stack[this.stack.length - 1];\n\t\tthis.current_children = this.current_timing ? this.current_timing.children : this.timings;\n\t}\n\n\trender() {\n\t\tconst timings = Object.assign({\n\t\t\ttotal: now() - this.start_time\n\t\t}, collapse_timings(this.timings));\n\n\t\treturn {\n\t\t\ttimings\n\t\t};\n\t}\n}\n","// Reserved word lists for various dialects of the language\n\nvar reservedWords = {\n 3: \"abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile\",\n 5: \"class enum extends super const export import\",\n 6: \"enum\",\n strict: \"implements interface let package private protected public static yield\",\n strictBind: \"eval arguments\"\n};\n\n// And the keywords\n\nvar ecma5AndLessKeywords = \"break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this\";\n\nvar keywords = {\n 5: ecma5AndLessKeywords,\n \"5module\": ecma5AndLessKeywords + \" export import\",\n 6: ecma5AndLessKeywords + \" const class extends export import super\"\n};\n\nvar keywordRelationalOperator = /^in(stanceof)?$/;\n\n// ## Character categories\n\n// Big ugly regular expressions that match characters in the\n// whitespace, identifier, and identifier-start categories. These\n// are only applied when a character is found to actually have a\n// code point above 128.\n// Generated by `bin/generate-identifier-regex.js`.\nvar nonASCIIidentifierStartChars = \"\\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\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\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\\u0860-\\u086a\\u08a0-\\u08b4\\u08b6-\\u08c7\\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\\u09fc\\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\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\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-\\u1878\\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\\u1c80-\\u1c88\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\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-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\u9ffc\\ua000-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7bf\\ua7c2-\\ua7ca\\ua7f5-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\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-\\uab69\\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\";\nvar nonASCIIidentifierChars = \"\\u200c\\u200d\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u08d3-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ecd\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u1810-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf\\u1ac0\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1df9\\u1dfb-\\u1dff\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\";\n\nvar nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\");\nvar nonASCIIidentifier = new RegExp(\"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\");\n\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null;\n\n// These are a run-length and offset encoded representation of the\n// >0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range. They were\n// generated by bin/generate-identifier-regex.js\n\n// eslint-disable-next-line comma-spacing\nvar astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,157,310,10,21,11,7,153,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,349,41,7,1,79,28,11,0,9,21,107,20,28,22,13,52,76,44,33,24,27,35,30,0,3,0,9,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,21,2,31,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,230,43,117,63,32,7,3,0,3,7,2,1,2,23,16,0,2,0,95,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,35,56,264,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,328,18,190,0,80,921,103,110,18,195,2749,1070,4050,582,8634,568,8,30,114,29,19,47,17,3,32,20,6,18,689,63,129,74,6,0,67,12,65,1,2,0,29,6135,9,1237,43,8,8952,286,50,2,18,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,2357,44,11,6,17,0,370,43,1301,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42717,35,4148,12,221,3,5761,15,7472,3104,541,1507,4938];\n\n// eslint-disable-next-line comma-spacing\nvar astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,370,1,154,10,176,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,2,11,83,11,7,0,161,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,243,14,166,9,71,5,2,1,3,3,2,0,2,1,13,9,120,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,406,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,330,3,19306,9,135,4,60,6,26,9,1014,0,2,54,8,3,82,0,12,1,19628,1,5319,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,262,6,10,9,419,13,1495,6,110,6,6,9,4759,9,787719,239];\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up astral identifier characters is\n// rare.\nfunction isInAstralSet(code, set) {\n var pos = 0x10000;\n for (var i = 0; i < set.length; i += 2) {\n pos += set[i];\n if (pos > code) { return false }\n pos += set[i + 1];\n if (pos >= code) { return true }\n }\n}\n\n// Test whether a given character code starts an identifier.\n\nfunction isIdentifierStart(code, astral) {\n if (code < 65) { return code === 36 }\n if (code < 91) { return true }\n if (code < 97) { return code === 95 }\n if (code < 123) { return true }\n if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)) }\n if (astral === false) { return false }\n return isInAstralSet(code, astralIdentifierStartCodes)\n}\n\n// Test whether a given character is part of an identifier.\n\nfunction isIdentifierChar(code, astral) {\n if (code < 48) { return code === 36 }\n if (code < 58) { return true }\n if (code < 65) { return false }\n if (code < 91) { return true }\n if (code < 97) { return code === 95 }\n if (code < 123) { return true }\n if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)) }\n if (astral === false) { return false }\n return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes)\n}\n\n// ## Token types\n\n// The assignment of fine-grained, information-carrying type objects\n// allows the tokenizer to store the information it has about a\n// token in a way that is very cheap for the parser to look up.\n\n// All token type variables start with an underscore, to make them\n// easy to recognize.\n\n// The `beforeExpr` property is used to disambiguate between regular\n// expressions and divisions. It is set on all token types that can\n// be followed by an expression (thus, a slash after them would be a\n// regular expression).\n//\n// The `startsExpr` property is used to check if the token ends a\n// `yield` expression. It is set on all token types that either can\n// directly start an expression (like a quotation mark) or can\n// continue an expression (like the body of a string).\n//\n// `isLoop` marks a keyword as starting a loop, which is important\n// to know when parsing a label, in order to allow or disallow\n// continue jumps to that label.\n\nvar TokenType = function TokenType(label, conf) {\n if ( conf === void 0 ) conf = {};\n\n this.label = label;\n this.keyword = conf.keyword;\n this.beforeExpr = !!conf.beforeExpr;\n this.startsExpr = !!conf.startsExpr;\n this.isLoop = !!conf.isLoop;\n this.isAssign = !!conf.isAssign;\n this.prefix = !!conf.prefix;\n this.postfix = !!conf.postfix;\n this.binop = conf.binop || null;\n this.updateContext = null;\n};\n\nfunction binop(name, prec) {\n return new TokenType(name, {beforeExpr: true, binop: prec})\n}\nvar beforeExpr = {beforeExpr: true}, startsExpr = {startsExpr: true};\n\n// Map keyword names to token types.\n\nvar keywords$1 = {};\n\n// Succinct definitions of keyword token types\nfunction kw(name, options) {\n if ( options === void 0 ) options = {};\n\n options.keyword = name;\n return keywords$1[name] = new TokenType(name, options)\n}\n\nvar types = {\n num: new TokenType(\"num\", startsExpr),\n regexp: new TokenType(\"regexp\", startsExpr),\n string: new TokenType(\"string\", startsExpr),\n name: new TokenType(\"name\", startsExpr),\n eof: new TokenType(\"eof\"),\n\n // Punctuation token types.\n bracketL: new TokenType(\"[\", {beforeExpr: true, startsExpr: true}),\n bracketR: new TokenType(\"]\"),\n braceL: new TokenType(\"{\", {beforeExpr: true, startsExpr: true}),\n braceR: new TokenType(\"}\"),\n parenL: new TokenType(\"(\", {beforeExpr: true, startsExpr: true}),\n parenR: new TokenType(\")\"),\n comma: new TokenType(\",\", beforeExpr),\n semi: new TokenType(\";\", beforeExpr),\n colon: new TokenType(\":\", beforeExpr),\n dot: new TokenType(\".\"),\n question: new TokenType(\"?\", beforeExpr),\n questionDot: new TokenType(\"?.\"),\n arrow: new TokenType(\"=>\", beforeExpr),\n template: new TokenType(\"template\"),\n invalidTemplate: new TokenType(\"invalidTemplate\"),\n ellipsis: new TokenType(\"...\", beforeExpr),\n backQuote: new TokenType(\"`\", startsExpr),\n dollarBraceL: new TokenType(\"${\", {beforeExpr: true, startsExpr: true}),\n\n // Operators. These carry several kinds of properties to help the\n // parser use them properly (the presence of these properties is\n // what categorizes them as operators).\n //\n // `binop`, when present, specifies that this operator is a binary\n // operator, and will refer to its precedence.\n //\n // `prefix` and `postfix` mark the operator as a prefix or postfix\n // unary operator.\n //\n // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as\n // binary operators with a very low precedence, that should result\n // in AssignmentExpression nodes.\n\n eq: new TokenType(\"=\", {beforeExpr: true, isAssign: true}),\n assign: new TokenType(\"_=\", {beforeExpr: true, isAssign: true}),\n incDec: new TokenType(\"++/--\", {prefix: true, postfix: true, startsExpr: true}),\n prefix: new TokenType(\"!/~\", {beforeExpr: true, prefix: true, startsExpr: true}),\n logicalOR: binop(\"||\", 1),\n logicalAND: binop(\"&&\", 2),\n bitwiseOR: binop(\"|\", 3),\n bitwiseXOR: binop(\"^\", 4),\n bitwiseAND: binop(\"&\", 5),\n equality: binop(\"==/!=/===/!==\", 6),\n relational: binop(\"</>/<=/>=\", 7),\n bitShift: binop(\"<</>>/>>>\", 8),\n plusMin: new TokenType(\"+/-\", {beforeExpr: true, binop: 9, prefix: true, startsExpr: true}),\n modulo: binop(\"%\", 10),\n star: binop(\"*\", 10),\n slash: binop(\"/\", 10),\n starstar: new TokenType(\"**\", {beforeExpr: true}),\n coalesce: binop(\"??\", 1),\n\n // Keyword token types.\n _break: kw(\"break\"),\n _case: kw(\"case\", beforeExpr),\n _catch: kw(\"catch\"),\n _continue: kw(\"continue\"),\n _debugger: kw(\"debugger\"),\n _default: kw(\"default\", beforeExpr),\n _do: kw(\"do\", {isLoop: true, beforeExpr: true}),\n _else: kw(\"else\", beforeExpr),\n _finally: kw(\"finally\"),\n _for: kw(\"for\", {isLoop: true}),\n _function: kw(\"function\", startsExpr),\n _if: kw(\"if\"),\n _return: kw(\"return\", beforeExpr),\n _switch: kw(\"switch\"),\n _throw: kw(\"throw\", beforeExpr),\n _try: kw(\"try\"),\n _var: kw(\"var\"),\n _const: kw(\"const\"),\n _while: kw(\"while\", {isLoop: true}),\n _with: kw(\"with\"),\n _new: kw(\"new\", {beforeExpr: true, startsExpr: true}),\n _this: kw(\"this\", startsExpr),\n _super: kw(\"super\", startsExpr),\n _class: kw(\"class\", startsExpr),\n _extends: kw(\"extends\", beforeExpr),\n _export: kw(\"export\"),\n _import: kw(\"import\", startsExpr),\n _null: kw(\"null\", startsExpr),\n _true: kw(\"true\", startsExpr),\n _false: kw(\"false\", startsExpr),\n _in: kw(\"in\", {beforeExpr: true, binop: 7}),\n _instanceof: kw(\"instanceof\", {beforeExpr: true, binop: 7}),\n _typeof: kw(\"typeof\", {beforeExpr: true, prefix: true, startsExpr: true}),\n _void: kw(\"void\", {beforeExpr: true, prefix: true, startsExpr: true}),\n _delete: kw(\"delete\", {beforeExpr: true, prefix: true, startsExpr: true})\n};\n\n// Matches a whole line break (where CRLF is considered a single\n// line break). Used to count lines.\n\nvar lineBreak = /\\r\\n?|\\n|\\u2028|\\u2029/;\nvar lineBreakG = new RegExp(lineBreak.source, \"g\");\n\nfunction isNewLine(code, ecma2019String) {\n return code === 10 || code === 13 || (!ecma2019String && (code === 0x2028 || code === 0x2029))\n}\n\nvar nonASCIIwhitespace = /[\\u1680\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff]/;\n\nvar skipWhiteSpace = /(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g;\n\nvar ref = Object.prototype;\nvar hasOwnProperty = ref.hasOwnProperty;\nvar toString = ref.toString;\n\n// Checks if an object has a property.\n\nfunction has(obj, propName) {\n return hasOwnProperty.call(obj, propName)\n}\n\nvar isArray = Array.isArray || (function (obj) { return (\n toString.call(obj) === \"[object Array]\"\n); });\n\nfunction wordsRegexp(words) {\n return new RegExp(\"^(?:\" + words.replace(/ /g, \"|\") + \")$\")\n}\n\n// These are used when `options.locations` is on, for the\n// `startLoc` and `endLoc` properties.\n\nvar Position = function Position(line, col) {\n this.line = line;\n this.column = col;\n};\n\nPosition.prototype.offset = function offset (n) {\n return new Position(this.line, this.column + n)\n};\n\nvar SourceLocation = function SourceLocation(p, start, end) {\n this.start = start;\n this.end = end;\n if (p.sourceFile !== null) { this.source = p.sourceFile; }\n};\n\n// The `getLineInfo` function is mostly useful when the\n// `locations` option is off (for performance reasons) and you\n// want to find the line/column position for a given character\n// offset. `input` should be the code string that the offset refers\n// into.\n\nfunction getLineInfo(input, offset) {\n for (var line = 1, cur = 0;;) {\n lineBreakG.lastIndex = cur;\n var match = lineBreakG.exec(input);\n if (match && match.index < offset) {\n ++line;\n cur = match.index + match[0].length;\n } else {\n return new Position(line, offset - cur)\n }\n }\n}\n\n// A second optional argument can be given to further configure\n// the parser process. These options are recognized:\n\nvar defaultOptions = {\n // `ecmaVersion` indicates the ECMAScript version to parse. Must be\n // either 3, 5, 6 (2015), 7 (2016), 8 (2017), 9 (2018), or 10\n // (2019). This influences support for strict mode, the set of\n // reserved words, and support for new syntax features. The default\n // is 10.\n ecmaVersion: 10,\n // `sourceType` indicates the mode the code should be parsed in.\n // Can be either `\"script\"` or `\"module\"`. This influences global\n // strict mode and parsing of `import` and `export` declarations.\n sourceType: \"script\",\n // `onInsertedSemicolon` can be a callback that will be called\n // when a semicolon is automatically inserted. It will be passed\n // the position of the comma as an offset, and if `locations` is\n // enabled, it is given the location as a `{line, column}` object\n // as second argument.\n onInsertedSemicolon: null,\n // `onTrailingComma` is similar to `onInsertedSemicolon`, but for\n // trailing commas.\n onTrailingComma: null,\n // By default, reserved words are only enforced if ecmaVersion >= 5.\n // Set `allowReserved` to a boolean value to explicitly turn this on\n // an off. When this option has the value \"never\", reserved words\n // and keywords can also not be used as property names.\n allowReserved: null,\n // When enabled, a return at the top level is not considered an\n // error.\n allowReturnOutsideFunction: false,\n // When enabled, import/export statements are not constrained to\n // appearing at the top of the program.\n allowImportExportEverywhere: false,\n // When enabled, await identifiers are allowed to appear at the top-level scope,\n // but they are still not allowed in non-async functions.\n allowAwaitOutsideFunction: false,\n // When enabled, hashbang directive in the beginning of file\n // is allowed and treated as a line comment.\n allowHashBang: false,\n // When `locations` is on, `loc` properties holding objects with\n // `start` and `end` properties in `{line, column}` form (with\n // line being 1-based and column 0-based) will be attached to the\n // nodes.\n locations: false,\n // A function can be passed as `onToken` option, which will\n // cause Acorn to call that function with object in the same\n // format as tokens returned from `tokenizer().getToken()`. Note\n // that you are not allowed to call the parser from the\n // callback—that will corrupt its internal state.\n onToken: null,\n // A function can be passed as `onComment` option, which will\n // cause Acorn to call that function with `(block, text, start,\n // end)` parameters whenever a comment is skipped. `block` is a\n // boolean indicating whether this is a block (`/* */`) comment,\n // `text` is the content of the comment, and `start` and `end` are\n // character offsets that denote the start and end of the comment.\n // When the `locations` option is on, two more parameters are\n // passed, the full `{line, column}` locations of the start and\n // end of the comments. Note that you are not allowed to call the\n // parser from the callback—that will corrupt its internal state.\n onComment: null,\n // Nodes have their start and end characters offsets recorded in\n // `start` and `end` properties (directly on the node, rather than\n // the `loc` object, which holds line/column data. To also add a\n // [semi-standardized][range] `range` property holding a `[start,\n // end]` array with the same numbers, set the `ranges` option to\n // `true`.\n //\n // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678\n ranges: false,\n // It is possible to parse multiple files into a single AST by\n // passing the tree produced by parsing the first file as\n // `program` option in subsequent parses. This will add the\n // toplevel forms of the parsed file to the `Program` (top) node\n // of an existing parse tree.\n program: null,\n // When `locations` is on, you can pass this to record the source\n // file in every node's `loc` object.\n sourceFile: null,\n // This value, if given, is stored in every node, whether\n // `locations` is on or off.\n directSourceFile: null,\n // When enabled, parenthesized expressions are represented by\n // (non-standard) ParenthesizedExpression nodes\n preserveParens: false\n};\n\n// Interpret and default an options object\n\nfunction getOptions(opts) {\n var options = {};\n\n for (var opt in defaultOptions)\n { options[opt] = opts && has(opts, opt) ? opts[opt] : defaultOptions[opt]; }\n\n if (options.ecmaVersion >= 2015)\n { options.ecmaVersion -= 2009; }\n\n if (options.allowReserved == null)\n { options.allowReserved = options.ecmaVersion < 5; }\n\n if (isArray(options.onToken)) {\n var tokens = options.onToken;\n options.onToken = function (token) { return tokens.push(token); };\n }\n if (isArray(options.onComment))\n { options.onComment = pushComment(options, options.onComment); }\n\n return options\n}\n\nfunction pushComment(options, array) {\n return function(block, text, start, end, startLoc, endLoc) {\n var comment = {\n type: block ? \"Block\" : \"Line\",\n value: text,\n start: start,\n end: end\n };\n if (options.locations)\n { comment.loc = new SourceLocation(this, startLoc, endLoc); }\n if (options.ranges)\n { comment.range = [start, end]; }\n array.push(comment);\n }\n}\n\n// Each scope gets a bitset that may contain these flags\nvar\n SCOPE_TOP = 1,\n SCOPE_FUNCTION = 2,\n SCOPE_VAR = SCOPE_TOP | SCOPE_FUNCTION,\n SCOPE_ASYNC = 4,\n SCOPE_GENERATOR = 8,\n SCOPE_ARROW = 16,\n SCOPE_SIMPLE_CATCH = 32,\n SCOPE_SUPER = 64,\n SCOPE_DIRECT_SUPER = 128;\n\nfunction functionFlags(async, generator) {\n return SCOPE_FUNCTION | (async ? SCOPE_ASYNC : 0) | (generator ? SCOPE_GENERATOR : 0)\n}\n\n// Used in checkLVal and declareName to determine the type of a binding\nvar\n BIND_NONE = 0, // Not a binding\n BIND_VAR = 1, // Var-style binding\n BIND_LEXICAL = 2, // Let- or const-style binding\n BIND_FUNCTION = 3, // Function declaration\n BIND_SIMPLE_CATCH = 4, // Simple (identifier pattern) catch binding\n BIND_OUTSIDE = 5; // Special case for function names as bound inside the function\n\nvar Parser = function Parser(options, input, startPos) {\n this.options = options = getOptions(options);\n this.sourceFile = options.sourceFile;\n this.keywords = wordsRegexp(keywords[options.ecmaVersion >= 6 ? 6 : options.sourceType === \"module\" ? \"5module\" : 5]);\n var reserved = \"\";\n if (options.allowReserved !== true) {\n for (var v = options.ecmaVersion;; v--)\n { if (reserved = reservedWords[v]) { break } }\n if (options.sourceType === \"module\") { reserved += \" await\"; }\n }\n this.reservedWords = wordsRegexp(reserved);\n var reservedStrict = (reserved ? reserved + \" \" : \"\") + reservedWords.strict;\n this.reservedWordsStrict = wordsRegexp(reservedStrict);\n this.reservedWordsStrictBind = wordsRegexp(reservedStrict + \" \" + reservedWords.strictBind);\n this.input = String(input);\n\n // Used to signal to callers of `readWord1` whether the word\n // contained any escape sequences. This is needed because words with\n // escape sequences must not be interpreted as keywords.\n this.containsEsc = false;\n\n // Set up token state\n\n // The current position of the tokenizer in the input.\n if (startPos) {\n this.pos = startPos;\n this.lineStart = this.input.lastIndexOf(\"\\n\", startPos - 1) + 1;\n this.curLine = this.input.slice(0, this.lineStart).split(lineBreak).length;\n } else {\n this.pos = this.lineStart = 0;\n this.curLine = 1;\n }\n\n // Properties of the current token:\n // Its type\n this.type = types.eof;\n // For tokens that include more information than their type, the value\n this.value = null;\n // Its start and end offset\n this.start = this.end = this.pos;\n // And, if locations are used, the {line, column} object\n // corresponding to those offsets\n this.startLoc = this.endLoc = this.curPosition();\n\n // Position information for the previous token\n this.lastTokEndLoc = this.lastTokStartLoc = null;\n this.lastTokStart = this.lastTokEnd = this.pos;\n\n // The context stack is used to superficially track syntactic\n // context to predict whether a regular expression is allowed in a\n // given position.\n this.context = this.initialContext();\n this.exprAllowed = true;\n\n // Figure out if it's a module code.\n this.inModule = options.sourceType === \"module\";\n this.strict = this.inModule || this.strictDirective(this.pos);\n\n // Used to signify the start of a potential arrow function\n this.potentialArrowAt = -1;\n\n // Positions to delayed-check that yield/await does not exist in default parameters.\n this.yieldPos = this.awaitPos = this.awaitIdentPos = 0;\n // Labels in scope.\n this.labels = [];\n // Thus-far undefined exports.\n this.undefinedExports = {};\n\n // If enabled, skip leading hashbang line.\n if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === \"#!\")\n { this.skipLineComment(2); }\n\n // Scope tracking for duplicate variable names (see scope.js)\n this.scopeStack = [];\n this.enterScope(SCOPE_TOP);\n\n // For RegExp validation\n this.regexpState = null;\n};\n\nvar prototypeAccessors = { inFunction: { configurable: true },inGenerator: { configurable: true },inAsync: { configurable: true },allowSuper: { configurable: true },allowDirectSuper: { configurable: true },treatFunctionsAsVar: { configurable: true } };\n\nParser.prototype.parse = function parse () {\n var node = this.options.program || this.startNode();\n this.nextToken();\n return this.parseTopLevel(node)\n};\n\nprototypeAccessors.inFunction.get = function () { return (this.currentVarScope().flags & SCOPE_FUNCTION) > 0 };\nprototypeAccessors.inGenerator.get = function () { return (this.currentVarScope().flags & SCOPE_GENERATOR) > 0 };\nprototypeAccessors.inAsync.get = function () { return (this.currentVarScope().flags & SCOPE_ASYNC) > 0 };\nprototypeAccessors.allowSuper.get = function () { return (this.currentThisScope().flags & SCOPE_SUPER) > 0 };\nprototypeAccessors.allowDirectSuper.get = function () { return (this.currentThisScope().flags & SCOPE_DIRECT_SUPER) > 0 };\nprototypeAccessors.treatFunctionsAsVar.get = function () { return this.treatFunctionsAsVarInScope(this.currentScope()) };\n\n// Switch to a getter for 7.0.0.\nParser.prototype.inNonArrowFunction = function inNonArrowFunction () { return (this.currentThisScope().flags & SCOPE_FUNCTION) > 0 };\n\nParser.extend = function extend () {\n var plugins = [], len = arguments.length;\n while ( len-- ) plugins[ len ] = arguments[ len ];\n\n var cls = this;\n for (var i = 0; i < plugins.length; i++) { cls = plugins[i](cls); }\n return cls\n};\n\nParser.parse = function parse (input, options) {\n return new this(options, input).parse()\n};\n\nParser.parseExpressionAt = function parseExpressionAt (input, pos, options) {\n var parser = new this(options, input, pos);\n parser.nextToken();\n return parser.parseExpression()\n};\n\nParser.tokenizer = function tokenizer (input, options) {\n return new this(options, input)\n};\n\nObject.defineProperties( Parser.prototype, prototypeAccessors );\n\nvar pp = Parser.prototype;\n\n// ## Parser utilities\n\nvar literal = /^(?:'((?:\\\\.|[^'])*?)'|\"((?:\\\\.|[^\"])*?)\")/;\npp.strictDirective = function(start) {\n for (;;) {\n // Try to find string literal.\n skipWhiteSpace.lastIndex = start;\n start += skipWhiteSpace.exec(this.input)[0].length;\n var match = literal.exec(this.input.slice(start));\n if (!match) { return false }\n if ((match[1] || match[2]) === \"use strict\") {\n skipWhiteSpace.lastIndex = start + match[0].length;\n var spaceAfter = skipWhiteSpace.exec(this.input), end = spaceAfter.index + spaceAfter[0].length;\n var next = this.input.charAt(end);\n return next === \";\" || next === \"}\" ||\n (lineBreak.test(spaceAfter[0]) &&\n !(/[(`.[+\\-/*%<>=,?^&]/.test(next) || next === \"!\" && this.input.charAt(end + 1) === \"=\"))\n }\n start += match[0].length;\n\n // Skip semicolon, if any.\n skipWhiteSpace.lastIndex = start;\n start += skipWhiteSpace.exec(this.input)[0].length;\n if (this.input[start] === \";\")\n { start++; }\n }\n};\n\n// Predicate that tests whether the next token is of the given\n// type, and if yes, consumes it as a side effect.\n\npp.eat = function(type) {\n if (this.type === type) {\n this.next();\n return true\n } else {\n return false\n }\n};\n\n// Tests whether parsed token is a contextual keyword.\n\npp.isContextual = function(name) {\n return this.type === types.name && this.value === name && !this.containsEsc\n};\n\n// Consumes contextual keyword if possible.\n\npp.eatContextual = function(name) {\n if (!this.isContextual(name)) { return false }\n this.next();\n return true\n};\n\n// Asserts that following token is given contextual keyword.\n\npp.expectContextual = function(name) {\n if (!this.eatContextual(name)) { this.unexpected(); }\n};\n\n// Test whether a semicolon can be inserted at the current position.\n\npp.canInsertSemicolon = function() {\n return this.type === types.eof ||\n this.type === types.braceR ||\n lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n};\n\npp.insertSemicolon = function() {\n if (this.canInsertSemicolon()) {\n if (this.options.onInsertedSemicolon)\n { this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc); }\n return true\n }\n};\n\n// Consume a semicolon, or, failing that, see if we are allowed to\n// pretend that there is a semicolon at this position.\n\npp.semicolon = function() {\n if (!this.eat(types.semi) && !this.insertSemicolon()) { this.unexpected(); }\n};\n\npp.afterTrailingComma = function(tokType, notNext) {\n if (this.type === tokType) {\n if (this.options.onTrailingComma)\n { this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc); }\n if (!notNext)\n { this.next(); }\n return true\n }\n};\n\n// Expect a token of a given type. If found, consume it, otherwise,\n// raise an unexpected token error.\n\npp.expect = function(type) {\n this.eat(type) || this.unexpected();\n};\n\n// Raise an unexpected token error.\n\npp.unexpected = function(pos) {\n this.raise(pos != null ? pos : this.start, \"Unexpected token\");\n};\n\nfunction DestructuringErrors() {\n this.shorthandAssign =\n this.trailingComma =\n this.parenthesizedAssign =\n this.parenthesizedBind =\n this.doubleProto =\n -1;\n}\n\npp.checkPatternErrors = function(refDestructuringErrors, isAssign) {\n if (!refDestructuringErrors) { return }\n if (refDestructuringErrors.trailingComma > -1)\n { this.raiseRecoverable(refDestructuringErrors.trailingComma, \"Comma is not permitted after the rest element\"); }\n var parens = isAssign ? refDestructuringErrors.parenthesizedAssign : refDestructuringErrors.parenthesizedBind;\n if (parens > -1) { this.raiseRecoverable(parens, \"Parenthesized pattern\"); }\n};\n\npp.checkExpressionErrors = function(refDestructuringErrors, andThrow) {\n if (!refDestructuringErrors) { return false }\n var shorthandAssign = refDestructuringErrors.shorthandAssign;\n var doubleProto = refDestructuringErrors.doubleProto;\n if (!andThrow) { return shorthandAssign >= 0 || doubleProto >= 0 }\n if (shorthandAssign >= 0)\n { this.raise(shorthandAssign, \"Shorthand property assignments are valid only in destructuring patterns\"); }\n if (doubleProto >= 0)\n { this.raiseRecoverable(doubleProto, \"Redefinition of __proto__ property\"); }\n};\n\npp.checkYieldAwaitInDefaultParams = function() {\n if (this.yieldPos && (!this.awaitPos || this.yieldPos < this.awaitPos))\n { this.raise(this.yieldPos, \"Yield expression cannot be a default value\"); }\n if (this.awaitPos)\n { this.raise(this.awaitPos, \"Await expression cannot be a default value\"); }\n};\n\npp.isSimpleAssignTarget = function(expr) {\n if (expr.type === \"ParenthesizedExpression\")\n { return this.isSimpleAssignTarget(expr.expression) }\n return expr.type === \"Identifier\" || expr.type === \"MemberExpression\"\n};\n\nvar pp$1 = Parser.prototype;\n\n// ### Statement parsing\n\n// Parse a program. Initializes the parser, reads any number of\n// statements, and wraps them in a Program node. Optionally takes a\n// `program` argument. If present, the statements will be appended\n// to its body instead of creating a new node.\n\npp$1.parseTopLevel = function(node) {\n var exports = {};\n if (!node.body) { node.body = []; }\n while (this.type !== types.eof) {\n var stmt = this.parseStatement(null, true, exports);\n node.body.push(stmt);\n }\n if (this.inModule)\n { for (var i = 0, list = Object.keys(this.undefinedExports); i < list.length; i += 1)\n {\n var name = list[i];\n\n this.raiseRecoverable(this.undefinedExports[name].start, (\"Export '\" + name + \"' is not defined\"));\n } }\n this.adaptDirectivePrologue(node.body);\n this.next();\n node.sourceType = this.options.sourceType;\n return this.finishNode(node, \"Program\")\n};\n\nvar loopLabel = {kind: \"loop\"}, switchLabel = {kind: \"switch\"};\n\npp$1.isLet = function(context) {\n if (this.options.ecmaVersion < 6 || !this.isContextual(\"let\")) { return false }\n skipWhiteSpace.lastIndex = this.pos;\n var skip = skipWhiteSpace.exec(this.input);\n var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next);\n // For ambiguous cases, determine if a LexicalDeclaration (or only a\n // Statement) is allowed here. If context is not empty then only a Statement\n // is allowed. However, `let [` is an explicit negative lookahead for\n // ExpressionStatement, so special-case it first.\n if (nextCh === 91) { return true } // '['\n if (context) { return false }\n\n if (nextCh === 123) { return true } // '{'\n if (isIdentifierStart(nextCh, true)) {\n var pos = next + 1;\n while (isIdentifierChar(this.input.charCodeAt(pos), true)) { ++pos; }\n var ident = this.input.slice(next, pos);\n if (!keywordRelationalOperator.test(ident)) { return true }\n }\n return false\n};\n\n// check 'async [no LineTerminator here] function'\n// - 'async /*foo*/ function' is OK.\n// - 'async /*\\n*/ function' is invalid.\npp$1.isAsyncFunction = function() {\n if (this.options.ecmaVersion < 8 || !this.isContextual(\"async\"))\n { return false }\n\n skipWhiteSpace.lastIndex = this.pos;\n var skip = skipWhiteSpace.exec(this.input);\n var next = this.pos + skip[0].length;\n return !lineBreak.test(this.input.slice(this.pos, next)) &&\n this.input.slice(next, next + 8) === \"function\" &&\n (next + 8 === this.input.length || !isIdentifierChar(this.input.charAt(next + 8)))\n};\n\n// Parse a single statement.\n//\n// If expecting a statement and finding a slash operator, parse a\n// regular expression literal. This is to handle cases like\n// `if (foo) /blah/.exec(foo)`, where looking at the previous token\n// does not help.\n\npp$1.parseStatement = function(context, topLevel, exports) {\n var starttype = this.type, node = this.startNode(), kind;\n\n if (this.isLet(context)) {\n starttype = types._var;\n kind = \"let\";\n }\n\n // Most types of statements are recognized by the keyword they\n // start with. Many are trivial to parse, some require a bit of\n // complexity.\n\n switch (starttype) {\n case types._break: case types._continue: return this.parseBreakContinueStatement(node, starttype.keyword)\n case types._debugger: return this.parseDebuggerStatement(node)\n case types._do: return this.parseDoStatement(node)\n case types._for: return this.parseForStatement(node)\n case types._function:\n // Function as sole body of either an if statement or a labeled statement\n // works, but not when it is part of a labeled statement that is the sole\n // body of an if statement.\n if ((context && (this.strict || context !== \"if\" && context !== \"label\")) && this.options.ecmaVersion >= 6) { this.unexpected(); }\n return this.parseFunctionStatement(node, false, !context)\n case types._class:\n if (context) { this.unexpected(); }\n return this.parseClass(node, true)\n case types._if: return this.parseIfStatement(node)\n case types._return: return this.parseReturnStatement(node)\n case types._switch: return this.parseSwitchStatement(node)\n case types._throw: return this.parseThrowStatement(node)\n case types._try: return this.parseTryStatement(node)\n case types._const: case types._var:\n kind = kind || this.value;\n if (context && kind !== \"var\") { this.unexpected(); }\n return this.parseVarStatement(node, kind)\n case types._while: return this.parseWhileStatement(node)\n case types._with: return this.parseWithStatement(node)\n case types.braceL: return this.parseBlock(true, node)\n case types.semi: return this.parseEmptyStatement(node)\n case types._export:\n case types._import:\n if (this.options.ecmaVersion > 10 && starttype === types._import) {\n skipWhiteSpace.lastIndex = this.pos;\n var skip = skipWhiteSpace.exec(this.input);\n var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next);\n if (nextCh === 40 || nextCh === 46) // '(' or '.'\n { return this.parseExpressionStatement(node, this.parseExpression()) }\n }\n\n if (!this.options.allowImportExportEverywhere) {\n if (!topLevel)\n { this.raise(this.start, \"'import' and 'export' may only appear at the top level\"); }\n if (!this.inModule)\n { this.raise(this.start, \"'import' and 'export' may appear only with 'sourceType: module'\"); }\n }\n return starttype === types._import ? this.parseImport(node) : this.parseExport(node, exports)\n\n // If the statement does not start with a statement keyword or a\n // brace, it's an ExpressionStatement or LabeledStatement. We\n // simply start parsing an expression, and afterwards, if the\n // next token is a colon and the expression was a simple\n // Identifier node, we switch to interpreting it as a label.\n default:\n if (this.isAsyncFunction()) {\n if (context) { this.unexpected(); }\n this.next();\n return this.parseFunctionStatement(node, true, !context)\n }\n\n var maybeName = this.value, expr = this.parseExpression();\n if (starttype === types.name && expr.type === \"Identifier\" && this.eat(types.colon))\n { return this.parseLabeledStatement(node, maybeName, expr, context) }\n else { return this.parseExpressionStatement(node, expr) }\n }\n};\n\npp$1.parseBreakContinueStatement = function(node, keyword) {\n var isBreak = keyword === \"break\";\n this.next();\n if (this.eat(types.semi) || this.insertSemicolon()) { node.label = null; }\n else if (this.type !== types.name) { this.unexpected(); }\n else {\n node.label = this.parseIdent();\n this.semicolon();\n }\n\n // Verify that there is an actual destination to break or\n // continue to.\n var i = 0;\n for (; i < this.labels.length; ++i) {\n var lab = this.labels[i];\n if (node.label == null || lab.name === node.label.name) {\n if (lab.kind != null && (isBreak || lab.kind === \"loop\")) { break }\n if (node.label && isBreak) { break }\n }\n }\n if (i === this.labels.length) { this.raise(node.start, \"Unsyntactic \" + keyword); }\n return this.finishNode(node, isBreak ? \"BreakStatement\" : \"ContinueStatement\")\n};\n\npp$1.parseDebuggerStatement = function(node) {\n this.next();\n this.semicolon();\n return this.finishNode(node, \"DebuggerStatement\")\n};\n\npp$1.parseDoStatement = function(node) {\n this.next();\n this.labels.push(loopLabel);\n node.body = this.parseStatement(\"do\");\n this.labels.pop();\n this.expect(types._while);\n node.test = this.parseParenExpression();\n if (this.options.ecmaVersion >= 6)\n { this.eat(types.semi); }\n else\n { this.semicolon(); }\n return this.finishNode(node, \"DoWhileStatement\")\n};\n\n// Disambiguating between a `for` and a `for`/`in` or `for`/`of`\n// loop is non-trivial. Basically, we have to parse the init `var`\n// statement or expression, disallowing the `in` operator (see\n// the second parameter to `parseExpression`), and then check\n// whether the next token is `in` or `of`. When there is no init\n// part (semicolon immediately after the opening parenthesis), it\n// is a regular `for` loop.\n\npp$1.parseForStatement = function(node) {\n this.next();\n var awaitAt = (this.options.ecmaVersion >= 9 && (this.inAsync || (!this.inFunction && this.options.allowAwaitOutsideFunction)) && this.eatContextual(\"await\")) ? this.lastTokStart : -1;\n this.labels.push(loopLabel);\n this.enterScope(0);\n this.expect(types.parenL);\n if (this.type === types.semi) {\n if (awaitAt > -1) { this.unexpected(awaitAt); }\n return this.parseFor(node, null)\n }\n var isLet = this.isLet();\n if (this.type === types._var || this.type === types._const || isLet) {\n var init$1 = this.startNode(), kind = isLet ? \"let\" : this.value;\n this.next();\n this.parseVar(init$1, true, kind);\n this.finishNode(init$1, \"VariableDeclaration\");\n if ((this.type === types._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) && init$1.declarations.length === 1) {\n if (this.options.ecmaVersion >= 9) {\n if (this.type === types._in) {\n if (awaitAt > -1) { this.unexpected(awaitAt); }\n } else { node.await = awaitAt > -1; }\n }\n return this.parseForIn(node, init$1)\n }\n if (awaitAt > -1) { this.unexpected(awaitAt); }\n return this.parseFor(node, init$1)\n }\n var refDestructuringErrors = new DestructuringErrors;\n var init = this.parseExpression(true, refDestructuringErrors);\n if (this.type === types._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) {\n if (this.options.ecmaVersion >= 9) {\n if (this.type === types._in) {\n if (awaitAt > -1) { this.unexpected(awaitAt); }\n } else { node.await = awaitAt > -1; }\n }\n this.toAssignable(init, false, refDestructuringErrors);\n this.checkLVal(init);\n return this.parseForIn(node, init)\n } else {\n this.checkExpressionErrors(refDestructuringErrors, true);\n }\n if (awaitAt > -1) { this.unexpected(awaitAt); }\n return this.parseFor(node, init)\n};\n\npp$1.parseFunctionStatement = function(node, isAsync, declarationPosition) {\n this.next();\n return this.parseFunction(node, FUNC_STATEMENT | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT), false, isAsync)\n};\n\npp$1.parseIfStatement = function(node) {\n this.next();\n node.test = this.parseParenExpression();\n // allow function declarations in branches, but only in non-strict mode\n node.consequent = this.parseStatement(\"if\");\n node.alternate = this.eat(types._else) ? this.parseStatement(\"if\") : null;\n return this.finishNode(node, \"IfStatement\")\n};\n\npp$1.parseReturnStatement = function(node) {\n if (!this.inFunction && !this.options.allowReturnOutsideFunction)\n { this.raise(this.start, \"'return' outside of function\"); }\n this.next();\n\n // In `return` (and `break`/`continue`), the keywords with\n // optional arguments, we eagerly look for a semicolon or the\n // possibility to insert one.\n\n if (this.eat(types.semi) || this.insertSemicolon()) { node.argument = null; }\n else { node.argument = this.parseExpression(); this.semicolon(); }\n return this.finishNode(node, \"ReturnStatement\")\n};\n\npp$1.parseSwitchStatement = function(node) {\n this.next();\n node.discriminant = this.parseParenExpression();\n node.cases = [];\n this.expect(types.braceL);\n this.labels.push(switchLabel);\n this.enterScope(0);\n\n // Statements under must be grouped (by label) in SwitchCase\n // nodes. `cur` is used to keep the node that we are currently\n // adding statements to.\n\n var cur;\n for (var sawDefault = false; this.type !== types.braceR;) {\n if (this.type === types._case || this.type === types._default) {\n var isCase = this.type === types._case;\n if (cur) { this.finishNode(cur, \"SwitchCase\"); }\n node.cases.push(cur = this.startNode());\n cur.consequent = [];\n this.next();\n if (isCase) {\n cur.test = this.parseExpression();\n } else {\n if (sawDefault) { this.raiseRecoverable(this.lastTokStart, \"Multiple default clauses\"); }\n sawDefault = true;\n cur.test = null;\n }\n this.expect(types.colon);\n } else {\n if (!cur) { this.unexpected(); }\n cur.consequent.push(this.parseStatement(null));\n }\n }\n this.exitScope();\n if (cur) { this.finishNode(cur, \"SwitchCase\"); }\n this.next(); // Closing brace\n this.labels.pop();\n return this.finishNode(node, \"SwitchStatement\")\n};\n\npp$1.parseThrowStatement = function(node) {\n this.next();\n if (lineBreak.test(this.input.slice(this.lastTokEnd, this.start)))\n { this.raise(this.lastTokEnd, \"Illegal newline after throw\"); }\n node.argument = this.parseExpression();\n this.semicolon();\n return this.finishNode(node, \"ThrowStatement\")\n};\n\n// Reused empty array added for node fields that are always empty.\n\nvar empty = [];\n\npp$1.parseTryStatement = function(node) {\n this.next();\n node.block = this.parseBlock();\n node.handler = null;\n if (this.type === types._catch) {\n var clause = this.startNode();\n this.next();\n if (this.eat(types.parenL)) {\n clause.param = this.parseBindingAtom();\n var simple = clause.param.type === \"Identifier\";\n this.enterScope(simple ? SCOPE_SIMPLE_CATCH : 0);\n this.checkLVal(clause.param, simple ? BIND_SIMPLE_CATCH : BIND_LEXICAL);\n this.expect(types.parenR);\n } else {\n if (this.options.ecmaVersion < 10) { this.unexpected(); }\n clause.param = null;\n this.enterScope(0);\n }\n clause.body = this.parseBlock(false);\n this.exitScope();\n node.handler = this.finishNode(clause, \"CatchClause\");\n }\n node.finalizer = this.eat(types._finally) ? this.parseBlock() : null;\n if (!node.handler && !node.finalizer)\n { this.raise(node.start, \"Missing catch or finally clause\"); }\n return this.finishNode(node, \"TryStatement\")\n};\n\npp$1.parseVarStatement = function(node, kind) {\n this.next();\n this.parseVar(node, false, kind);\n this.semicolon();\n return this.finishNode(node, \"VariableDeclaration\")\n};\n\npp$1.parseWhileStatement = function(node) {\n this.next();\n node.test = this.parseParenExpression();\n this.labels.push(loopLabel);\n node.body = this.parseStatement(\"while\");\n this.labels.pop();\n return this.finishNode(node, \"WhileStatement\")\n};\n\npp$1.parseWithStatement = function(node) {\n if (this.strict) { this.raise(this.start, \"'with' in strict mode\"); }\n this.next();\n node.object = this.parseParenExpression();\n node.body = this.parseStatement(\"with\");\n return this.finishNode(node, \"WithStatement\")\n};\n\npp$1.parseEmptyStatement = function(node) {\n this.next();\n return this.finishNode(node, \"EmptyStatement\")\n};\n\npp$1.parseLabeledStatement = function(node, maybeName, expr, context) {\n for (var i$1 = 0, list = this.labels; i$1 < list.length; i$1 += 1)\n {\n var label = list[i$1];\n\n if (label.name === maybeName)\n { this.raise(expr.start, \"Label '\" + maybeName + \"' is already declared\");\n } }\n var kind = this.type.isLoop ? \"loop\" : this.type === types._switch ? \"switch\" : null;\n for (var i = this.labels.length - 1; i >= 0; i--) {\n var label$1 = this.labels[i];\n if (label$1.statementStart === node.start) {\n // Update information about previous labels on this node\n label$1.statementStart = this.start;\n label$1.kind = kind;\n } else { break }\n }\n this.labels.push({name: maybeName, kind: kind, statementStart: this.start});\n node.body = this.parseStatement(context ? context.indexOf(\"label\") === -1 ? context + \"label\" : context : \"label\");\n this.labels.pop();\n node.label = expr;\n return this.finishNode(node, \"LabeledStatement\")\n};\n\npp$1.parseExpressionStatement = function(node, expr) {\n node.expression = expr;\n this.semicolon();\n return this.finishNode(node, \"ExpressionStatement\")\n};\n\n// Parse a semicolon-enclosed block of statements, handling `\"use\n// strict\"` declarations when `allowStrict` is true (used for\n// function bodies).\n\npp$1.parseBlock = function(createNewLexicalScope, node, exitStrict) {\n if ( createNewLexicalScope === void 0 ) createNewLexicalScope = true;\n if ( node === void 0 ) node = this.startNode();\n\n node.body = [];\n this.expect(types.braceL);\n if (createNewLexicalScope) { this.enterScope(0); }\n while (this.type !== types.braceR) {\n var stmt = this.parseStatement(null);\n node.body.push(stmt);\n }\n if (exitStrict) { this.strict = false; }\n this.next();\n if (createNewLexicalScope) { this.exitScope(); }\n return this.finishNode(node, \"BlockStatement\")\n};\n\n// Parse a regular `for` loop. The disambiguation code in\n// `parseStatement` will already have parsed the init statement or\n// expression.\n\npp$1.parseFor = function(node, init) {\n node.init = init;\n this.expect(types.semi);\n node.test = this.type === types.semi ? null : this.parseExpression();\n this.expect(types.semi);\n node.update = this.type === types.parenR ? null : this.parseExpression();\n this.expect(types.parenR);\n node.body = this.parseStatement(\"for\");\n this.exitScope();\n this.labels.pop();\n return this.finishNode(node, \"ForStatement\")\n};\n\n// Parse a `for`/`in` and `for`/`of` loop, which are almost\n// same from parser's perspective.\n\npp$1.parseForIn = function(node, init) {\n var isForIn = this.type === types._in;\n this.next();\n\n if (\n init.type === \"VariableDeclaration\" &&\n init.declarations[0].init != null &&\n (\n !isForIn ||\n this.options.ecmaVersion < 8 ||\n this.strict ||\n init.kind !== \"var\" ||\n init.declarations[0].id.type !== \"Identifier\"\n )\n ) {\n this.raise(\n init.start,\n ((isForIn ? \"for-in\" : \"for-of\") + \" loop variable declaration may not have an initializer\")\n );\n } else if (init.type === \"AssignmentPattern\") {\n this.raise(init.start, \"Invalid left-hand side in for-loop\");\n }\n node.left = init;\n node.right = isForIn ? this.parseExpression() : this.parseMaybeAssign();\n this.expect(types.parenR);\n node.body = this.parseStatement(\"for\");\n this.exitScope();\n this.labels.pop();\n return this.finishNode(node, isForIn ? \"ForInStatement\" : \"ForOfStatement\")\n};\n\n// Parse a list of variable declarations.\n\npp$1.parseVar = function(node, isFor, kind) {\n node.declarations = [];\n node.kind = kind;\n for (;;) {\n var decl = this.startNode();\n this.parseVarId(decl, kind);\n if (this.eat(types.eq)) {\n decl.init = this.parseMaybeAssign(isFor);\n } else if (kind === \"const\" && !(this.type === types._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\")))) {\n this.unexpected();\n } else if (decl.id.type !== \"Identifier\" && !(isFor && (this.type === types._in || this.isContextual(\"of\")))) {\n this.raise(this.lastTokEnd, \"Complex binding patterns require an initialization value\");\n } else {\n decl.init = null;\n }\n node.declarations.push(this.finishNode(decl, \"VariableDeclarator\"));\n if (!this.eat(types.comma)) { break }\n }\n return node\n};\n\npp$1.parseVarId = function(decl, kind) {\n decl.id = this.parseBindingAtom();\n this.checkLVal(decl.id, kind === \"var\" ? BIND_VAR : BIND_LEXICAL, false);\n};\n\nvar FUNC_STATEMENT = 1, FUNC_HANGING_STATEMENT = 2, FUNC_NULLABLE_ID = 4;\n\n// Parse a function declaration or literal (depending on the\n// `statement & FUNC_STATEMENT`).\n\n// Remove `allowExpressionBody` for 7.0.0, as it is only called with false\npp$1.parseFunction = function(node, statement, allowExpressionBody, isAsync) {\n this.initFunction(node);\n if (this.options.ecmaVersion >= 9 || this.options.ecmaVersion >= 6 && !isAsync) {\n if (this.type === types.star && (statement & FUNC_HANGING_STATEMENT))\n { this.unexpected(); }\n node.generator = this.eat(types.star);\n }\n if (this.options.ecmaVersion >= 8)\n { node.async = !!isAsync; }\n\n if (statement & FUNC_STATEMENT) {\n node.id = (statement & FUNC_NULLABLE_ID) && this.type !== types.name ? null : this.parseIdent();\n if (node.id && !(statement & FUNC_HANGING_STATEMENT))\n // If it is a regular function declaration in sloppy mode, then it is\n // subject to Annex B semantics (BIND_FUNCTION). Otherwise, the binding\n // mode depends on properties of the current scope (see\n // treatFunctionsAsVar).\n { this.checkLVal(node.id, (this.strict || node.generator || node.async) ? this.treatFunctionsAsVar ? BIND_VAR : BIND_LEXICAL : BIND_FUNCTION); }\n }\n\n var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n this.yieldPos = 0;\n this.awaitPos = 0;\n this.awaitIdentPos = 0;\n this.enterScope(functionFlags(node.async, node.generator));\n\n if (!(statement & FUNC_STATEMENT))\n { node.id = this.type === types.name ? this.parseIdent() : null; }\n\n this.parseFunctionParams(node);\n this.parseFunctionBody(node, allowExpressionBody, false);\n\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n this.awaitIdentPos = oldAwaitIdentPos;\n return this.finishNode(node, (statement & FUNC_STATEMENT) ? \"FunctionDeclaration\" : \"FunctionExpression\")\n};\n\npp$1.parseFunctionParams = function(node) {\n this.expect(types.parenL);\n node.params = this.parseBindingList(types.parenR, false, this.options.ecmaVersion >= 8);\n this.checkYieldAwaitInDefaultParams();\n};\n\n// Parse a class declaration or literal (depending on the\n// `isStatement` parameter).\n\npp$1.parseClass = function(node, isStatement) {\n this.next();\n\n // ecma-262 14.6 Class Definitions\n // A class definition is always strict mode code.\n var oldStrict = this.strict;\n this.strict = true;\n\n this.parseClassId(node, isStatement);\n this.parseClassSuper(node);\n var classBody = this.startNode();\n var hadConstructor = false;\n classBody.body = [];\n this.expect(types.braceL);\n while (this.type !== types.braceR) {\n var element = this.parseClassElement(node.superClass !== null);\n if (element) {\n classBody.body.push(element);\n if (element.type === \"MethodDefinition\" && element.kind === \"constructor\") {\n if (hadConstructor) { this.raise(element.start, \"Duplicate constructor in the same class\"); }\n hadConstructor = true;\n }\n }\n }\n this.strict = oldStrict;\n this.next();\n node.body = this.finishNode(classBody, \"ClassBody\");\n return this.finishNode(node, isStatement ? \"ClassDeclaration\" : \"ClassExpression\")\n};\n\npp$1.parseClassElement = function(constructorAllowsSuper) {\n var this$1 = this;\n\n if (this.eat(types.semi)) { return null }\n\n var method = this.startNode();\n var tryContextual = function (k, noLineBreak) {\n if ( noLineBreak === void 0 ) noLineBreak = false;\n\n var start = this$1.start, startLoc = this$1.startLoc;\n if (!this$1.eatContextual(k)) { return false }\n if (this$1.type !== types.parenL && (!noLineBreak || !this$1.canInsertSemicolon())) { return true }\n if (method.key) { this$1.unexpected(); }\n method.computed = false;\n method.key = this$1.startNodeAt(start, startLoc);\n method.key.name = k;\n this$1.finishNode(method.key, \"Identifier\");\n return false\n };\n\n method.kind = \"method\";\n method.static = tryContextual(\"static\");\n var isGenerator = this.eat(types.star);\n var isAsync = false;\n if (!isGenerator) {\n if (this.options.ecmaVersion >= 8 && tryContextual(\"async\", true)) {\n isAsync = true;\n isGenerator = this.options.ecmaVersion >= 9 && this.eat(types.star);\n } else if (tryContextual(\"get\")) {\n method.kind = \"get\";\n } else if (tryContextual(\"set\")) {\n method.kind = \"set\";\n }\n }\n if (!method.key) { this.parsePropertyName(method); }\n var key = method.key;\n var allowsDirectSuper = false;\n if (!method.computed && !method.static && (key.type === \"Identifier\" && key.name === \"constructor\" ||\n key.type === \"Literal\" && key.value === \"constructor\")) {\n if (method.kind !== \"method\") { this.raise(key.start, \"Constructor can't have get/set modifier\"); }\n if (isGenerator) { this.raise(key.start, \"Constructor can't be a generator\"); }\n if (isAsync) { this.raise(key.start, \"Constructor can't be an async method\"); }\n method.kind = \"constructor\";\n allowsDirectSuper = constructorAllowsSuper;\n } else if (method.static && key.type === \"Identifier\" && key.name === \"prototype\") {\n this.raise(key.start, \"Classes may not have a static property named prototype\");\n }\n this.parseClassMethod(method, isGenerator, isAsync, allowsDirectSuper);\n if (method.kind === \"get\" && method.value.params.length !== 0)\n { this.raiseRecoverable(method.value.start, \"getter should have no params\"); }\n if (method.kind === \"set\" && method.value.params.length !== 1)\n { this.raiseRecoverable(method.value.start, \"setter should have exactly one param\"); }\n if (method.kind === \"set\" && method.value.params[0].type === \"RestElement\")\n { this.raiseRecoverable(method.value.params[0].start, \"Setter cannot use rest params\"); }\n return method\n};\n\npp$1.parseClassMethod = function(method, isGenerator, isAsync, allowsDirectSuper) {\n method.value = this.parseMethod(isGenerator, isAsync, allowsDirectSuper);\n return this.finishNode(method, \"MethodDefinition\")\n};\n\npp$1.parseClassId = function(node, isStatement) {\n if (this.type === types.name) {\n node.id = this.parseIdent();\n if (isStatement)\n { this.checkLVal(node.id, BIND_LEXICAL, false); }\n } else {\n if (isStatement === true)\n { this.unexpected(); }\n node.id = null;\n }\n};\n\npp$1.parseClassSuper = function(node) {\n node.superClass = this.eat(types._extends) ? this.parseExprSubscripts() : null;\n};\n\n// Parses module export declaration.\n\npp$1.parseExport = function(node, exports) {\n this.next();\n // export * from '...'\n if (this.eat(types.star)) {\n if (this.options.ecmaVersion >= 11) {\n if (this.eatContextual(\"as\")) {\n node.exported = this.parseIdent(true);\n this.checkExport(exports, node.exported.name, this.lastTokStart);\n } else {\n node.exported = null;\n }\n }\n this.expectContextual(\"from\");\n if (this.type !== types.string) { this.unexpected(); }\n node.source = this.parseExprAtom();\n this.semicolon();\n return this.finishNode(node, \"ExportAllDeclaration\")\n }\n if (this.eat(types._default)) { // export default ...\n this.checkExport(exports, \"default\", this.lastTokStart);\n var isAsync;\n if (this.type === types._function || (isAsync = this.isAsyncFunction())) {\n var fNode = this.startNode();\n this.next();\n if (isAsync) { this.next(); }\n node.declaration = this.parseFunction(fNode, FUNC_STATEMENT | FUNC_NULLABLE_ID, false, isAsync);\n } else if (this.type === types._class) {\n var cNode = this.startNode();\n node.declaration = this.parseClass(cNode, \"nullableID\");\n } else {\n node.declaration = this.parseMaybeAssign();\n this.semicolon();\n }\n return this.finishNode(node, \"ExportDefaultDeclaration\")\n }\n // export var|const|let|function|class ...\n if (this.shouldParseExportStatement()) {\n node.declaration = this.parseStatement(null);\n if (node.declaration.type === \"VariableDeclaration\")\n { this.checkVariableExport(exports, node.declaration.declarations); }\n else\n { this.checkExport(exports, node.declaration.id.name, node.declaration.id.start); }\n node.specifiers = [];\n node.source = null;\n } else { // export { x, y as z } [from '...']\n node.declaration = null;\n node.specifiers = this.parseExportSpecifiers(exports);\n if (this.eatContextual(\"from\")) {\n if (this.type !== types.string) { this.unexpected(); }\n node.source = this.parseExprAtom();\n } else {\n for (var i = 0, list = node.specifiers; i < list.length; i += 1) {\n // check for keywords used as local names\n var spec = list[i];\n\n this.checkUnreserved(spec.local);\n // check if export is defined\n this.checkLocalExport(spec.local);\n }\n\n node.source = null;\n }\n this.semicolon();\n }\n return this.finishNode(node, \"ExportNamedDeclaration\")\n};\n\npp$1.checkExport = function(exports, name, pos) {\n if (!exports) { return }\n if (has(exports, name))\n { this.raiseRecoverable(pos, \"Duplicate export '\" + name + \"'\"); }\n exports[name] = true;\n};\n\npp$1.checkPatternExport = function(exports, pat) {\n var type = pat.type;\n if (type === \"Identifier\")\n { this.checkExport(exports, pat.name, pat.start); }\n else if (type === \"ObjectPattern\")\n { for (var i = 0, list = pat.properties; i < list.length; i += 1)\n {\n var prop = list[i];\n\n this.checkPatternExport(exports, prop);\n } }\n else if (type === \"ArrayPattern\")\n { for (var i$1 = 0, list$1 = pat.elements; i$1 < list$1.length; i$1 += 1) {\n var elt = list$1[i$1];\n\n if (elt) { this.checkPatternExport(exports, elt); }\n } }\n else if (type === \"Property\")\n { this.checkPatternExport(exports, pat.value); }\n else if (type === \"AssignmentPattern\")\n { this.checkPatternExport(exports, pat.left); }\n else if (type === \"RestElement\")\n { this.checkPatternExport(exports, pat.argument); }\n else if (type === \"ParenthesizedExpression\")\n { this.checkPatternExport(exports, pat.expression); }\n};\n\npp$1.checkVariableExport = function(exports, decls) {\n if (!exports) { return }\n for (var i = 0, list = decls; i < list.length; i += 1)\n {\n var decl = list[i];\n\n this.checkPatternExport(exports, decl.id);\n }\n};\n\npp$1.shouldParseExportStatement = function() {\n return this.type.keyword === \"var\" ||\n this.type.keyword === \"const\" ||\n this.type.keyword === \"class\" ||\n this.type.keyword === \"function\" ||\n this.isLet() ||\n this.isAsyncFunction()\n};\n\n// Parses a comma-separated list of module exports.\n\npp$1.parseExportSpecifiers = function(exports) {\n var nodes = [], first = true;\n // export { x, y as z } [from '...']\n this.expect(types.braceL);\n while (!this.eat(types.braceR)) {\n if (!first) {\n this.expect(types.comma);\n if (this.afterTrailingComma(types.braceR)) { break }\n } else { first = false; }\n\n var node = this.startNode();\n node.local = this.parseIdent(true);\n node.exported = this.eatContextual(\"as\") ? this.parseIdent(true) : node.local;\n this.checkExport(exports, node.exported.name, node.exported.start);\n nodes.push(this.finishNode(node, \"ExportSpecifier\"));\n }\n return nodes\n};\n\n// Parses import declaration.\n\npp$1.parseImport = function(node) {\n this.next();\n // import '...'\n if (this.type === types.string) {\n node.specifiers = empty;\n node.source = this.parseExprAtom();\n } else {\n node.specifiers = this.parseImportSpecifiers();\n this.expectContextual(\"from\");\n node.source = this.type === types.string ? this.parseExprAtom() : this.unexpected();\n }\n this.semicolon();\n return this.finishNode(node, \"ImportDeclaration\")\n};\n\n// Parses a comma-separated list of module imports.\n\npp$1.parseImportSpecifiers = function() {\n var nodes = [], first = true;\n if (this.type === types.name) {\n // import defaultObj, { x, y as z } from '...'\n var node = this.startNode();\n node.local = this.parseIdent();\n this.checkLVal(node.local, BIND_LEXICAL);\n nodes.push(this.finishNode(node, \"ImportDefaultSpecifier\"));\n if (!this.eat(types.comma)) { return nodes }\n }\n if (this.type === types.star) {\n var node$1 = this.startNode();\n this.next();\n this.expectContextual(\"as\");\n node$1.local = this.parseIdent();\n this.checkLVal(node$1.local, BIND_LEXICAL);\n nodes.push(this.finishNode(node$1, \"ImportNamespaceSpecifier\"));\n return nodes\n }\n this.expect(types.braceL);\n while (!this.eat(types.braceR)) {\n if (!first) {\n this.expect(types.comma);\n if (this.afterTrailingComma(types.braceR)) { break }\n } else { first = false; }\n\n var node$2 = this.startNode();\n node$2.imported = this.parseIdent(true);\n if (this.eatContextual(\"as\")) {\n node$2.local = this.parseIdent();\n } else {\n this.checkUnreserved(node$2.imported);\n node$2.local = node$2.imported;\n }\n this.checkLVal(node$2.local, BIND_LEXICAL);\n nodes.push(this.finishNode(node$2, \"ImportSpecifier\"));\n }\n return nodes\n};\n\n// Set `ExpressionStatement#directive` property for directive prologues.\npp$1.adaptDirectivePrologue = function(statements) {\n for (var i = 0; i < statements.length && this.isDirectiveCandidate(statements[i]); ++i) {\n statements[i].directive = statements[i].expression.raw.slice(1, -1);\n }\n};\npp$1.isDirectiveCandidate = function(statement) {\n return (\n statement.type === \"ExpressionStatement\" &&\n statement.expression.type === \"Literal\" &&\n typeof statement.expression.value === \"string\" &&\n // Reject parenthesized strings.\n (this.input[statement.start] === \"\\\"\" || this.input[statement.start] === \"'\")\n )\n};\n\nvar pp$2 = Parser.prototype;\n\n// Convert existing expression atom to assignable pattern\n// if possible.\n\npp$2.toAssignable = function(node, isBinding, refDestructuringErrors) {\n if (this.options.ecmaVersion >= 6 && node) {\n switch (node.type) {\n case \"Identifier\":\n if (this.inAsync && node.name === \"await\")\n { this.raise(node.start, \"Cannot use 'await' as identifier inside an async function\"); }\n break\n\n case \"ObjectPattern\":\n case \"ArrayPattern\":\n case \"RestElement\":\n break\n\n case \"ObjectExpression\":\n node.type = \"ObjectPattern\";\n if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n for (var i = 0, list = node.properties; i < list.length; i += 1) {\n var prop = list[i];\n\n this.toAssignable(prop, isBinding);\n // Early error:\n // AssignmentRestProperty[Yield, Await] :\n // `...` DestructuringAssignmentTarget[Yield, Await]\n //\n // It is a Syntax Error if |DestructuringAssignmentTarget| is an |ArrayLiteral| or an |ObjectLiteral|.\n if (\n prop.type === \"RestElement\" &&\n (prop.argument.type === \"ArrayPattern\" || prop.argument.type === \"ObjectPattern\")\n ) {\n this.raise(prop.argument.start, \"Unexpected token\");\n }\n }\n break\n\n case \"Property\":\n // AssignmentProperty has type === \"Property\"\n if (node.kind !== \"init\") { this.raise(node.key.start, \"Object pattern can't contain getter or setter\"); }\n this.toAssignable(node.value, isBinding);\n break\n\n case \"ArrayExpression\":\n node.type = \"ArrayPattern\";\n if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n this.toAssignableList(node.elements, isBinding);\n break\n\n case \"SpreadElement\":\n node.type = \"RestElement\";\n this.toAssignable(node.argument, isBinding);\n if (node.argument.type === \"AssignmentPattern\")\n { this.raise(node.argument.start, \"Rest elements cannot have a default value\"); }\n break\n\n case \"AssignmentExpression\":\n if (node.operator !== \"=\") { this.raise(node.left.end, \"Only '=' operator can be used for specifying default value.\"); }\n node.type = \"AssignmentPattern\";\n delete node.operator;\n this.toAssignable(node.left, isBinding);\n // falls through to AssignmentPattern\n\n case \"AssignmentPattern\":\n break\n\n case \"ParenthesizedExpression\":\n this.toAssignable(node.expression, isBinding, refDestructuringErrors);\n break\n\n case \"ChainExpression\":\n this.raiseRecoverable(node.start, \"Optional chaining cannot appear in left-hand side\");\n break\n\n case \"MemberExpression\":\n if (!isBinding) { break }\n\n default:\n this.raise(node.start, \"Assigning to rvalue\");\n }\n } else if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n return node\n};\n\n// Convert list of expression atoms to binding list.\n\npp$2.toAssignableList = function(exprList, isBinding) {\n var end = exprList.length;\n for (var i = 0; i < end; i++) {\n var elt = exprList[i];\n if (elt) { this.toAssignable(elt, isBinding); }\n }\n if (end) {\n var last = exprList[end - 1];\n if (this.options.ecmaVersion === 6 && isBinding && last && last.type === \"RestElement\" && last.argument.type !== \"Identifier\")\n { this.unexpected(last.argument.start); }\n }\n return exprList\n};\n\n// Parses spread element.\n\npp$2.parseSpread = function(refDestructuringErrors) {\n var node = this.startNode();\n this.next();\n node.argument = this.parseMaybeAssign(false, refDestructuringErrors);\n return this.finishNode(node, \"SpreadElement\")\n};\n\npp$2.parseRestBinding = function() {\n var node = this.startNode();\n this.next();\n\n // RestElement inside of a function parameter must be an identifier\n if (this.options.ecmaVersion === 6 && this.type !== types.name)\n { this.unexpected(); }\n\n node.argument = this.parseBindingAtom();\n\n return this.finishNode(node, \"RestElement\")\n};\n\n// Parses lvalue (assignable) atom.\n\npp$2.parseBindingAtom = function() {\n if (this.options.ecmaVersion >= 6) {\n switch (this.type) {\n case types.bracketL:\n var node = this.startNode();\n this.next();\n node.elements = this.parseBindingList(types.bracketR, true, true);\n return this.finishNode(node, \"ArrayPattern\")\n\n case types.braceL:\n return this.parseObj(true)\n }\n }\n return this.parseIdent()\n};\n\npp$2.parseBindingList = function(close, allowEmpty, allowTrailingComma) {\n var elts = [], first = true;\n while (!this.eat(close)) {\n if (first) { first = false; }\n else { this.expect(types.comma); }\n if (allowEmpty && this.type === types.comma) {\n elts.push(null);\n } else if (allowTrailingComma && this.afterTrailingComma(close)) {\n break\n } else if (this.type === types.ellipsis) {\n var rest = this.parseRestBinding();\n this.parseBindingListItem(rest);\n elts.push(rest);\n if (this.type === types.comma) { this.raise(this.start, \"Comma is not permitted after the rest element\"); }\n this.expect(close);\n break\n } else {\n var elem = this.parseMaybeDefault(this.start, this.startLoc);\n this.parseBindingListItem(elem);\n elts.push(elem);\n }\n }\n return elts\n};\n\npp$2.parseBindingListItem = function(param) {\n return param\n};\n\n// Parses assignment pattern around given atom if possible.\n\npp$2.parseMaybeDefault = function(startPos, startLoc, left) {\n left = left || this.parseBindingAtom();\n if (this.options.ecmaVersion < 6 || !this.eat(types.eq)) { return left }\n var node = this.startNodeAt(startPos, startLoc);\n node.left = left;\n node.right = this.parseMaybeAssign();\n return this.finishNode(node, \"AssignmentPattern\")\n};\n\n// Verify that a node is an lval — something that can be assigned\n// to.\n// bindingType can be either:\n// 'var' indicating that the lval creates a 'var' binding\n// 'let' indicating that the lval creates a lexical ('let' or 'const') binding\n// 'none' indicating that the binding should be checked for illegal identifiers, but not for duplicate references\n\npp$2.checkLVal = function(expr, bindingType, checkClashes) {\n if ( bindingType === void 0 ) bindingType = BIND_NONE;\n\n switch (expr.type) {\n case \"Identifier\":\n if (bindingType === BIND_LEXICAL && expr.name === \"let\")\n { this.raiseRecoverable(expr.start, \"let is disallowed as a lexically bound name\"); }\n if (this.strict && this.reservedWordsStrictBind.test(expr.name))\n { this.raiseRecoverable(expr.start, (bindingType ? \"Binding \" : \"Assigning to \") + expr.name + \" in strict mode\"); }\n if (checkClashes) {\n if (has(checkClashes, expr.name))\n { this.raiseRecoverable(expr.start, \"Argument name clash\"); }\n checkClashes[expr.name] = true;\n }\n if (bindingType !== BIND_NONE && bindingType !== BIND_OUTSIDE) { this.declareName(expr.name, bindingType, expr.start); }\n break\n\n case \"ChainExpression\":\n this.raiseRecoverable(expr.start, \"Optional chaining cannot appear in left-hand side\");\n break\n\n case \"MemberExpression\":\n if (bindingType) { this.raiseRecoverable(expr.start, \"Binding member expression\"); }\n break\n\n case \"ObjectPattern\":\n for (var i = 0, list = expr.properties; i < list.length; i += 1)\n {\n var prop = list[i];\n\n this.checkLVal(prop, bindingType, checkClashes);\n }\n break\n\n case \"Property\":\n // AssignmentProperty has type === \"Property\"\n this.checkLVal(expr.value, bindingType, checkClashes);\n break\n\n case \"ArrayPattern\":\n for (var i$1 = 0, list$1 = expr.elements; i$1 < list$1.length; i$1 += 1) {\n var elem = list$1[i$1];\n\n if (elem) { this.checkLVal(elem, bindingType, checkClashes); }\n }\n break\n\n case \"AssignmentPattern\":\n this.checkLVal(expr.left, bindingType, checkClashes);\n break\n\n case \"RestElement\":\n this.checkLVal(expr.argument, bindingType, checkClashes);\n break\n\n case \"ParenthesizedExpression\":\n this.checkLVal(expr.expression, bindingType, checkClashes);\n break\n\n default:\n this.raise(expr.start, (bindingType ? \"Binding\" : \"Assigning to\") + \" rvalue\");\n }\n};\n\n// A recursive descent parser operates by defining functions for all\n\nvar pp$3 = Parser.prototype;\n\n// Check if property name clashes with already added.\n// Object/class getters and setters are not allowed to clash —\n// either with each other or with an init property — and in\n// strict mode, init properties are also not allowed to be repeated.\n\npp$3.checkPropClash = function(prop, propHash, refDestructuringErrors) {\n if (this.options.ecmaVersion >= 9 && prop.type === \"SpreadElement\")\n { return }\n if (this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand))\n { return }\n var key = prop.key;\n var name;\n switch (key.type) {\n case \"Identifier\": name = key.name; break\n case \"Literal\": name = String(key.value); break\n default: return\n }\n var kind = prop.kind;\n if (this.options.ecmaVersion >= 6) {\n if (name === \"__proto__\" && kind === \"init\") {\n if (propHash.proto) {\n if (refDestructuringErrors) {\n if (refDestructuringErrors.doubleProto < 0)\n { refDestructuringErrors.doubleProto = key.start; }\n // Backwards-compat kludge. Can be removed in version 6.0\n } else { this.raiseRecoverable(key.start, \"Redefinition of __proto__ property\"); }\n }\n propHash.proto = true;\n }\n return\n }\n name = \"$\" + name;\n var other = propHash[name];\n if (other) {\n var redefinition;\n if (kind === \"init\") {\n redefinition = this.strict && other.init || other.get || other.set;\n } else {\n redefinition = other.init || other[kind];\n }\n if (redefinition)\n { this.raiseRecoverable(key.start, \"Redefinition of property\"); }\n } else {\n other = propHash[name] = {\n init: false,\n get: false,\n set: false\n };\n }\n other[kind] = true;\n};\n\n// ### Expression parsing\n\n// These nest, from the most general expression type at the top to\n// 'atomic', nondivisible expression types at the bottom. Most of\n// the functions will simply let the function(s) below them parse,\n// and, *if* the syntactic construct they handle is present, wrap\n// the AST node that the inner parser gave them in another node.\n\n// Parse a full expression. The optional arguments are used to\n// forbid the `in` operator (in for loops initalization expressions)\n// and provide reference for storing '=' operator inside shorthand\n// property assignment in contexts where both object expression\n// and object pattern might appear (so it's possible to raise\n// delayed syntax error at correct position).\n\npp$3.parseExpression = function(noIn, refDestructuringErrors) {\n var startPos = this.start, startLoc = this.startLoc;\n var expr = this.parseMaybeAssign(noIn, refDestructuringErrors);\n if (this.type === types.comma) {\n var node = this.startNodeAt(startPos, startLoc);\n node.expressions = [expr];\n while (this.eat(types.comma)) { node.expressions.push(this.parseMaybeAssign(noIn, refDestructuringErrors)); }\n return this.finishNode(node, \"SequenceExpression\")\n }\n return expr\n};\n\n// Parse an assignment expression. This includes applications of\n// operators like `+=`.\n\npp$3.parseMaybeAssign = function(noIn, refDestructuringErrors, afterLeftParse) {\n if (this.isContextual(\"yield\")) {\n if (this.inGenerator) { return this.parseYield(noIn) }\n // The tokenizer will assume an expression is allowed after\n // `yield`, but this isn't that kind of yield\n else { this.exprAllowed = false; }\n }\n\n var ownDestructuringErrors = false, oldParenAssign = -1, oldTrailingComma = -1;\n if (refDestructuringErrors) {\n oldParenAssign = refDestructuringErrors.parenthesizedAssign;\n oldTrailingComma = refDestructuringErrors.trailingComma;\n refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = -1;\n } else {\n refDestructuringErrors = new DestructuringErrors;\n ownDestructuringErrors = true;\n }\n\n var startPos = this.start, startLoc = this.startLoc;\n if (this.type === types.parenL || this.type === types.name)\n { this.potentialArrowAt = this.start; }\n var left = this.parseMaybeConditional(noIn, refDestructuringErrors);\n if (afterLeftParse) { left = afterLeftParse.call(this, left, startPos, startLoc); }\n if (this.type.isAssign) {\n var node = this.startNodeAt(startPos, startLoc);\n node.operator = this.value;\n node.left = this.type === types.eq ? this.toAssignable(left, false, refDestructuringErrors) : left;\n if (!ownDestructuringErrors) {\n refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = refDestructuringErrors.doubleProto = -1;\n }\n if (refDestructuringErrors.shorthandAssign >= node.left.start)\n { refDestructuringErrors.shorthandAssign = -1; } // reset because shorthand default was used correctly\n this.checkLVal(left);\n this.next();\n node.right = this.parseMaybeAssign(noIn);\n return this.finishNode(node, \"AssignmentExpression\")\n } else {\n if (ownDestructuringErrors) { this.checkExpressionErrors(refDestructuringErrors, true); }\n }\n if (oldParenAssign > -1) { refDestructuringErrors.parenthesizedAssign = oldParenAssign; }\n if (oldTrailingComma > -1) { refDestructuringErrors.trailingComma = oldTrailingComma; }\n return left\n};\n\n// Parse a ternary conditional (`?:`) operator.\n\npp$3.parseMaybeConditional = function(noIn, refDestructuringErrors) {\n var startPos = this.start, startLoc = this.startLoc;\n var expr = this.parseExprOps(noIn, refDestructuringErrors);\n if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n if (this.eat(types.question)) {\n var node = this.startNodeAt(startPos, startLoc);\n node.test = expr;\n node.consequent = this.parseMaybeAssign();\n this.expect(types.colon);\n node.alternate = this.parseMaybeAssign(noIn);\n return this.finishNode(node, \"ConditionalExpression\")\n }\n return expr\n};\n\n// Start the precedence parser.\n\npp$3.parseExprOps = function(noIn, refDestructuringErrors) {\n var startPos = this.start, startLoc = this.startLoc;\n var expr = this.parseMaybeUnary(refDestructuringErrors, false);\n if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n return expr.start === startPos && expr.type === \"ArrowFunctionExpression\" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, noIn)\n};\n\n// Parse binary operators with the operator precedence parsing\n// algorithm. `left` is the left-hand side of the operator.\n// `minPrec` provides context that allows the function to stop and\n// defer further parser to one of its callers when it encounters an\n// operator that has a lower precedence than the set it is parsing.\n\npp$3.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, noIn) {\n var prec = this.type.binop;\n if (prec != null && (!noIn || this.type !== types._in)) {\n if (prec > minPrec) {\n var logical = this.type === types.logicalOR || this.type === types.logicalAND;\n var coalesce = this.type === types.coalesce;\n if (coalesce) {\n // Handle the precedence of `tt.coalesce` as equal to the range of logical expressions.\n // In other words, `node.right` shouldn't contain logical expressions in order to check the mixed error.\n prec = types.logicalAND.binop;\n }\n var op = this.value;\n this.next();\n var startPos = this.start, startLoc = this.startLoc;\n var right = this.parseExprOp(this.parseMaybeUnary(null, false), startPos, startLoc, prec, noIn);\n var node = this.buildBinary(leftStartPos, leftStartLoc, left, right, op, logical || coalesce);\n if ((logical && this.type === types.coalesce) || (coalesce && (this.type === types.logicalOR || this.type === types.logicalAND))) {\n this.raiseRecoverable(this.start, \"Logical expressions and coalesce expressions cannot be mixed. Wrap either by parentheses\");\n }\n return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, noIn)\n }\n }\n return left\n};\n\npp$3.buildBinary = function(startPos, startLoc, left, right, op, logical) {\n var node = this.startNodeAt(startPos, startLoc);\n node.left = left;\n node.operator = op;\n node.right = right;\n return this.finishNode(node, logical ? \"LogicalExpression\" : \"BinaryExpression\")\n};\n\n// Parse unary operators, both prefix and postfix.\n\npp$3.parseMaybeUnary = function(refDestructuringErrors, sawUnary) {\n var startPos = this.start, startLoc = this.startLoc, expr;\n if (this.isContextual(\"await\") && (this.inAsync || (!this.inFunction && this.options.allowAwaitOutsideFunction))) {\n expr = this.parseAwait();\n sawUnary = true;\n } else if (this.type.prefix) {\n var node = this.startNode(), update = this.type === types.incDec;\n node.operator = this.value;\n node.prefix = true;\n this.next();\n node.argument = this.parseMaybeUnary(null, true);\n this.checkExpressionErrors(refDestructuringErrors, true);\n if (update) { this.checkLVal(node.argument); }\n else if (this.strict && node.operator === \"delete\" &&\n node.argument.type === \"Identifier\")\n { this.raiseRecoverable(node.start, \"Deleting local variable in strict mode\"); }\n else { sawUnary = true; }\n expr = this.finishNode(node, update ? \"UpdateExpression\" : \"UnaryExpression\");\n } else {\n expr = this.parseExprSubscripts(refDestructuringErrors);\n if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n while (this.type.postfix && !this.canInsertSemicolon()) {\n var node$1 = this.startNodeAt(startPos, startLoc);\n node$1.operator = this.value;\n node$1.prefix = false;\n node$1.argument = expr;\n this.checkLVal(expr);\n this.next();\n expr = this.finishNode(node$1, \"UpdateExpression\");\n }\n }\n\n if (!sawUnary && this.eat(types.starstar))\n { return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, false), \"**\", false) }\n else\n { return expr }\n};\n\n// Parse call, dot, and `[]`-subscript expressions.\n\npp$3.parseExprSubscripts = function(refDestructuringErrors) {\n var startPos = this.start, startLoc = this.startLoc;\n var expr = this.parseExprAtom(refDestructuringErrors);\n if (expr.type === \"ArrowFunctionExpression\" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== \")\")\n { return expr }\n var result = this.parseSubscripts(expr, startPos, startLoc);\n if (refDestructuringErrors && result.type === \"MemberExpression\") {\n if (refDestructuringErrors.parenthesizedAssign >= result.start) { refDestructuringErrors.parenthesizedAssign = -1; }\n if (refDestructuringErrors.parenthesizedBind >= result.start) { refDestructuringErrors.parenthesizedBind = -1; }\n }\n return result\n};\n\npp$3.parseSubscripts = function(base, startPos, startLoc, noCalls) {\n var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === \"Identifier\" && base.name === \"async\" &&\n this.lastTokEnd === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 &&\n this.potentialArrowAt === base.start;\n var optionalChained = false;\n\n while (true) {\n var element = this.parseSubscript(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained);\n\n if (element.optional) { optionalChained = true; }\n if (element === base || element.type === \"ArrowFunctionExpression\") {\n if (optionalChained) {\n var chainNode = this.startNodeAt(startPos, startLoc);\n chainNode.expression = element;\n element = this.finishNode(chainNode, \"ChainExpression\");\n }\n return element\n }\n\n base = element;\n }\n};\n\npp$3.parseSubscript = function(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained) {\n var optionalSupported = this.options.ecmaVersion >= 11;\n var optional = optionalSupported && this.eat(types.questionDot);\n if (noCalls && optional) { this.raise(this.lastTokStart, \"Optional chaining cannot appear in the callee of new expressions\"); }\n\n var computed = this.eat(types.bracketL);\n if (computed || (optional && this.type !== types.parenL && this.type !== types.backQuote) || this.eat(types.dot)) {\n var node = this.startNodeAt(startPos, startLoc);\n node.object = base;\n node.property = computed ? this.parseExpression() : this.parseIdent(this.options.allowReserved !== \"never\");\n node.computed = !!computed;\n if (computed) { this.expect(types.bracketR); }\n if (optionalSupported) {\n node.optional = optional;\n }\n base = this.finishNode(node, \"MemberExpression\");\n } else if (!noCalls && this.eat(types.parenL)) {\n var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n this.yieldPos = 0;\n this.awaitPos = 0;\n this.awaitIdentPos = 0;\n var exprList = this.parseExprList(types.parenR, this.options.ecmaVersion >= 8, false, refDestructuringErrors);\n if (maybeAsyncArrow && !optional && !this.canInsertSemicolon() && this.eat(types.arrow)) {\n this.checkPatternErrors(refDestructuringErrors, false);\n this.checkYieldAwaitInDefaultParams();\n if (this.awaitIdentPos > 0)\n { this.raise(this.awaitIdentPos, \"Cannot use 'await' as identifier inside an async function\"); }\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n this.awaitIdentPos = oldAwaitIdentPos;\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, true)\n }\n this.checkExpressionErrors(refDestructuringErrors, true);\n this.yieldPos = oldYieldPos || this.yieldPos;\n this.awaitPos = oldAwaitPos || this.awaitPos;\n this.awaitIdentPos = oldAwaitIdentPos || this.awaitIdentPos;\n var node$1 = this.startNodeAt(startPos, startLoc);\n node$1.callee = base;\n node$1.arguments = exprList;\n if (optionalSupported) {\n node$1.optional = optional;\n }\n base = this.finishNode(node$1, \"CallExpression\");\n } else if (this.type === types.backQuote) {\n if (optional || optionalChained) {\n this.raise(this.start, \"Optional chaining cannot appear in the tag of tagged template expressions\");\n }\n var node$2 = this.startNodeAt(startPos, startLoc);\n node$2.tag = base;\n node$2.quasi = this.parseTemplate({isTagged: true});\n base = this.finishNode(node$2, \"TaggedTemplateExpression\");\n }\n return base\n};\n\n// Parse an atomic expression — either a single token that is an\n// expression, an expression started by a keyword like `function` or\n// `new`, or an expression wrapped in punctuation like `()`, `[]`,\n// or `{}`.\n\npp$3.parseExprAtom = function(refDestructuringErrors) {\n // If a division operator appears in an expression position, the\n // tokenizer got confused, and we force it to read a regexp instead.\n if (this.type === types.slash) { this.readRegexp(); }\n\n var node, canBeArrow = this.potentialArrowAt === this.start;\n switch (this.type) {\n case types._super:\n if (!this.allowSuper)\n { this.raise(this.start, \"'super' keyword outside a method\"); }\n node = this.startNode();\n this.next();\n if (this.type === types.parenL && !this.allowDirectSuper)\n { this.raise(node.start, \"super() call outside constructor of a subclass\"); }\n // The `super` keyword can appear at below:\n // SuperProperty:\n // super [ Expression ]\n // super . IdentifierName\n // SuperCall:\n // super ( Arguments )\n if (this.type !== types.dot && this.type !== types.bracketL && this.type !== types.parenL)\n { this.unexpected(); }\n return this.finishNode(node, \"Super\")\n\n case types._this:\n node = this.startNode();\n this.next();\n return this.finishNode(node, \"ThisExpression\")\n\n case types.name:\n var startPos = this.start, startLoc = this.startLoc, containsEsc = this.containsEsc;\n var id = this.parseIdent(false);\n if (this.options.ecmaVersion >= 8 && !containsEsc && id.name === \"async\" && !this.canInsertSemicolon() && this.eat(types._function))\n { return this.parseFunction(this.startNodeAt(startPos, startLoc), 0, false, true) }\n if (canBeArrow && !this.canInsertSemicolon()) {\n if (this.eat(types.arrow))\n { return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false) }\n if (this.options.ecmaVersion >= 8 && id.name === \"async\" && this.type === types.name && !containsEsc) {\n id = this.parseIdent(false);\n if (this.canInsertSemicolon() || !this.eat(types.arrow))\n { this.unexpected(); }\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], true)\n }\n }\n return id\n\n case types.regexp:\n var value = this.value;\n node = this.parseLiteral(value.value);\n node.regex = {pattern: value.pattern, flags: value.flags};\n return node\n\n case types.num: case types.string:\n return this.parseLiteral(this.value)\n\n case types._null: case types._true: case types._false:\n node = this.startNode();\n node.value = this.type === types._null ? null : this.type === types._true;\n node.raw = this.type.keyword;\n this.next();\n return this.finishNode(node, \"Literal\")\n\n case types.parenL:\n var start = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow);\n if (refDestructuringErrors) {\n if (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr))\n { refDestructuringErrors.parenthesizedAssign = start; }\n if (refDestructuringErrors.parenthesizedBind < 0)\n { refDestructuringErrors.parenthesizedBind = start; }\n }\n return expr\n\n case types.bracketL:\n node = this.startNode();\n this.next();\n node.elements = this.parseExprList(types.bracketR, true, true, refDestructuringErrors);\n return this.finishNode(node, \"ArrayExpression\")\n\n case types.braceL:\n return this.parseObj(false, refDestructuringErrors)\n\n case types._function:\n node = this.startNode();\n this.next();\n return this.parseFunction(node, 0)\n\n case types._class:\n return this.parseClass(this.startNode(), false)\n\n case types._new:\n return this.parseNew()\n\n case types.backQuote:\n return this.parseTemplate()\n\n case types._import:\n if (this.options.ecmaVersion >= 11) {\n return this.parseExprImport()\n } else {\n return this.unexpected()\n }\n\n default:\n this.unexpected();\n }\n};\n\npp$3.parseExprImport = function() {\n var node = this.startNode();\n\n // Consume `import` as an identifier for `import.meta`.\n // Because `this.parseIdent(true)` doesn't check escape sequences, it needs the check of `this.containsEsc`.\n if (this.containsEsc) { this.raiseRecoverable(this.start, \"Escape sequence in keyword import\"); }\n var meta = this.parseIdent(true);\n\n switch (this.type) {\n case types.parenL:\n return this.parseDynamicImport(node)\n case types.dot:\n node.meta = meta;\n return this.parseImportMeta(node)\n default:\n this.unexpected();\n }\n};\n\npp$3.parseDynamicImport = function(node) {\n this.next(); // skip `(`\n\n // Parse node.source.\n node.source = this.parseMaybeAssign();\n\n // Verify ending.\n if (!this.eat(types.parenR)) {\n var errorPos = this.start;\n if (this.eat(types.comma) && this.eat(types.parenR)) {\n this.raiseRecoverable(errorPos, \"Trailing comma is not allowed in import()\");\n } else {\n this.unexpected(errorPos);\n }\n }\n\n return this.finishNode(node, \"ImportExpression\")\n};\n\npp$3.parseImportMeta = function(node) {\n this.next(); // skip `.`\n\n var containsEsc = this.containsEsc;\n node.property = this.parseIdent(true);\n\n if (node.property.name !== \"meta\")\n { this.raiseRecoverable(node.property.start, \"The only valid meta property for import is 'import.meta'\"); }\n if (containsEsc)\n { this.raiseRecoverable(node.start, \"'import.meta' must not contain escaped characters\"); }\n if (this.options.sourceType !== \"module\")\n { this.raiseRecoverable(node.start, \"Cannot use 'import.meta' outside a module\"); }\n\n return this.finishNode(node, \"MetaProperty\")\n};\n\npp$3.parseLiteral = function(value) {\n var node = this.startNode();\n node.value = value;\n node.raw = this.input.slice(this.start, this.end);\n if (node.raw.charCodeAt(node.raw.length - 1) === 110) { node.bigint = node.raw.slice(0, -1).replace(/_/g, \"\"); }\n this.next();\n return this.finishNode(node, \"Literal\")\n};\n\npp$3.parseParenExpression = function() {\n this.expect(types.parenL);\n var val = this.parseExpression();\n this.expect(types.parenR);\n return val\n};\n\npp$3.parseParenAndDistinguishExpression = function(canBeArrow) {\n var startPos = this.start, startLoc = this.startLoc, val, allowTrailingComma = this.options.ecmaVersion >= 8;\n if (this.options.ecmaVersion >= 6) {\n this.next();\n\n var innerStartPos = this.start, innerStartLoc = this.startLoc;\n var exprList = [], first = true, lastIsComma = false;\n var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart;\n this.yieldPos = 0;\n this.awaitPos = 0;\n // Do not save awaitIdentPos to allow checking awaits nested in parameters\n while (this.type !== types.parenR) {\n first ? first = false : this.expect(types.comma);\n if (allowTrailingComma && this.afterTrailingComma(types.parenR, true)) {\n lastIsComma = true;\n break\n } else if (this.type === types.ellipsis) {\n spreadStart = this.start;\n exprList.push(this.parseParenItem(this.parseRestBinding()));\n if (this.type === types.comma) { this.raise(this.start, \"Comma is not permitted after the rest element\"); }\n break\n } else {\n exprList.push(this.parseMaybeAssign(false, refDestructuringErrors, this.parseParenItem));\n }\n }\n var innerEndPos = this.start, innerEndLoc = this.startLoc;\n this.expect(types.parenR);\n\n if (canBeArrow && !this.canInsertSemicolon() && this.eat(types.arrow)) {\n this.checkPatternErrors(refDestructuringErrors, false);\n this.checkYieldAwaitInDefaultParams();\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n return this.parseParenArrowList(startPos, startLoc, exprList)\n }\n\n if (!exprList.length || lastIsComma) { this.unexpected(this.lastTokStart); }\n if (spreadStart) { this.unexpected(spreadStart); }\n this.checkExpressionErrors(refDestructuringErrors, true);\n this.yieldPos = oldYieldPos || this.yieldPos;\n this.awaitPos = oldAwaitPos || this.awaitPos;\n\n if (exprList.length > 1) {\n val = this.startNodeAt(innerStartPos, innerStartLoc);\n val.expressions = exprList;\n this.finishNodeAt(val, \"SequenceExpression\", innerEndPos, innerEndLoc);\n } else {\n val = exprList[0];\n }\n } else {\n val = this.parseParenExpression();\n }\n\n if (this.options.preserveParens) {\n var par = this.startNodeAt(startPos, startLoc);\n par.expression = val;\n return this.finishNode(par, \"ParenthesizedExpression\")\n } else {\n return val\n }\n};\n\npp$3.parseParenItem = function(item) {\n return item\n};\n\npp$3.parseParenArrowList = function(startPos, startLoc, exprList) {\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList)\n};\n\n// New's precedence is slightly tricky. It must allow its argument to\n// be a `[]` or dot subscript expression, but not a call — at least,\n// not without wrapping it in parentheses. Thus, it uses the noCalls\n// argument to parseSubscripts to prevent it from consuming the\n// argument list.\n\nvar empty$1 = [];\n\npp$3.parseNew = function() {\n if (this.containsEsc) { this.raiseRecoverable(this.start, \"Escape sequence in keyword new\"); }\n var node = this.startNode();\n var meta = this.parseIdent(true);\n if (this.options.ecmaVersion >= 6 && this.eat(types.dot)) {\n node.meta = meta;\n var containsEsc = this.containsEsc;\n node.property = this.parseIdent(true);\n if (node.property.name !== \"target\")\n { this.raiseRecoverable(node.property.start, \"The only valid meta property for new is 'new.target'\"); }\n if (containsEsc)\n { this.raiseRecoverable(node.start, \"'new.target' must not contain escaped characters\"); }\n if (!this.inNonArrowFunction())\n { this.raiseRecoverable(node.start, \"'new.target' can only be used in functions\"); }\n return this.finishNode(node, \"MetaProperty\")\n }\n var startPos = this.start, startLoc = this.startLoc, isImport = this.type === types._import;\n node.callee = this.parseSubscripts(this.parseExprAtom(), startPos, startLoc, true);\n if (isImport && node.callee.type === \"ImportExpression\") {\n this.raise(startPos, \"Cannot use new with import()\");\n }\n if (this.eat(types.parenL)) { node.arguments = this.parseExprList(types.parenR, this.options.ecmaVersion >= 8, false); }\n else { node.arguments = empty$1; }\n return this.finishNode(node, \"NewExpression\")\n};\n\n// Parse template expression.\n\npp$3.parseTemplateElement = function(ref) {\n var isTagged = ref.isTagged;\n\n var elem = this.startNode();\n if (this.type === types.invalidTemplate) {\n if (!isTagged) {\n this.raiseRecoverable(this.start, \"Bad escape sequence in untagged template literal\");\n }\n elem.value = {\n raw: this.value,\n cooked: null\n };\n } else {\n elem.value = {\n raw: this.input.slice(this.start, this.end).replace(/\\r\\n?/g, \"\\n\"),\n cooked: this.value\n };\n }\n this.next();\n elem.tail = this.type === types.backQuote;\n return this.finishNode(elem, \"TemplateElement\")\n};\n\npp$3.parseTemplate = function(ref) {\n if ( ref === void 0 ) ref = {};\n var isTagged = ref.isTagged; if ( isTagged === void 0 ) isTagged = false;\n\n var node = this.startNode();\n this.next();\n node.expressions = [];\n var curElt = this.parseTemplateElement({isTagged: isTagged});\n node.quasis = [curElt];\n while (!curElt.tail) {\n if (this.type === types.eof) { this.raise(this.pos, \"Unterminated template literal\"); }\n this.expect(types.dollarBraceL);\n node.expressions.push(this.parseExpression());\n this.expect(types.braceR);\n node.quasis.push(curElt = this.parseTemplateElement({isTagged: isTagged}));\n }\n this.next();\n return this.finishNode(node, \"TemplateLiteral\")\n};\n\npp$3.isAsyncProp = function(prop) {\n return !prop.computed && prop.key.type === \"Identifier\" && prop.key.name === \"async\" &&\n (this.type === types.name || this.type === types.num || this.type === types.string || this.type === types.bracketL || this.type.keyword || (this.options.ecmaVersion >= 9 && this.type === types.star)) &&\n !lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n};\n\n// Parse an object literal or binding pattern.\n\npp$3.parseObj = function(isPattern, refDestructuringErrors) {\n var node = this.startNode(), first = true, propHash = {};\n node.properties = [];\n this.next();\n while (!this.eat(types.braceR)) {\n if (!first) {\n this.expect(types.comma);\n if (this.options.ecmaVersion >= 5 && this.afterTrailingComma(types.braceR)) { break }\n } else { first = false; }\n\n var prop = this.parseProperty(isPattern, refDestructuringErrors);\n if (!isPattern) { this.checkPropClash(prop, propHash, refDestructuringErrors); }\n node.properties.push(prop);\n }\n return this.finishNode(node, isPattern ? \"ObjectPattern\" : \"ObjectExpression\")\n};\n\npp$3.parseProperty = function(isPattern, refDestructuringErrors) {\n var prop = this.startNode(), isGenerator, isAsync, startPos, startLoc;\n if (this.options.ecmaVersion >= 9 && this.eat(types.ellipsis)) {\n if (isPattern) {\n prop.argument = this.parseIdent(false);\n if (this.type === types.comma) {\n this.raise(this.start, \"Comma is not permitted after the rest element\");\n }\n return this.finishNode(prop, \"RestElement\")\n }\n // To disallow parenthesized identifier via `this.toAssignable()`.\n if (this.type === types.parenL && refDestructuringErrors) {\n if (refDestructuringErrors.parenthesizedAssign < 0) {\n refDestructuringErrors.parenthesizedAssign = this.start;\n }\n if (refDestructuringErrors.parenthesizedBind < 0) {\n refDestructuringErrors.parenthesizedBind = this.start;\n }\n }\n // Parse argument.\n prop.argument = this.parseMaybeAssign(false, refDestructuringErrors);\n // To disallow trailing comma via `this.toAssignable()`.\n if (this.type === types.comma && refDestructuringErrors && refDestructuringErrors.trailingComma < 0) {\n refDestructuringErrors.trailingComma = this.start;\n }\n // Finish\n return this.finishNode(prop, \"SpreadElement\")\n }\n if (this.options.ecmaVersion >= 6) {\n prop.method = false;\n prop.shorthand = false;\n if (isPattern || refDestructuringErrors) {\n startPos = this.start;\n startLoc = this.startLoc;\n }\n if (!isPattern)\n { isGenerator = this.eat(types.star); }\n }\n var containsEsc = this.containsEsc;\n this.parsePropertyName(prop);\n if (!isPattern && !containsEsc && this.options.ecmaVersion >= 8 && !isGenerator && this.isAsyncProp(prop)) {\n isAsync = true;\n isGenerator = this.options.ecmaVersion >= 9 && this.eat(types.star);\n this.parsePropertyName(prop, refDestructuringErrors);\n } else {\n isAsync = false;\n }\n this.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc);\n return this.finishNode(prop, \"Property\")\n};\n\npp$3.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc) {\n if ((isGenerator || isAsync) && this.type === types.colon)\n { this.unexpected(); }\n\n if (this.eat(types.colon)) {\n prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(false, refDestructuringErrors);\n prop.kind = \"init\";\n } else if (this.options.ecmaVersion >= 6 && this.type === types.parenL) {\n if (isPattern) { this.unexpected(); }\n prop.kind = \"init\";\n prop.method = true;\n prop.value = this.parseMethod(isGenerator, isAsync);\n } else if (!isPattern && !containsEsc &&\n this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === \"Identifier\" &&\n (prop.key.name === \"get\" || prop.key.name === \"set\") &&\n (this.type !== types.comma && this.type !== types.braceR && this.type !== types.eq)) {\n if (isGenerator || isAsync) { this.unexpected(); }\n prop.kind = prop.key.name;\n this.parsePropertyName(prop);\n prop.value = this.parseMethod(false);\n var paramCount = prop.kind === \"get\" ? 0 : 1;\n if (prop.value.params.length !== paramCount) {\n var start = prop.value.start;\n if (prop.kind === \"get\")\n { this.raiseRecoverable(start, \"getter should have no params\"); }\n else\n { this.raiseRecoverable(start, \"setter should have exactly one param\"); }\n } else {\n if (prop.kind === \"set\" && prop.value.params[0].type === \"RestElement\")\n { this.raiseRecoverable(prop.value.params[0].start, \"Setter cannot use rest params\"); }\n }\n } else if (this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === \"Identifier\") {\n if (isGenerator || isAsync) { this.unexpected(); }\n this.checkUnreserved(prop.key);\n if (prop.key.name === \"await\" && !this.awaitIdentPos)\n { this.awaitIdentPos = startPos; }\n prop.kind = \"init\";\n if (isPattern) {\n prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key);\n } else if (this.type === types.eq && refDestructuringErrors) {\n if (refDestructuringErrors.shorthandAssign < 0)\n { refDestructuringErrors.shorthandAssign = this.start; }\n prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key);\n } else {\n prop.value = prop.key;\n }\n prop.shorthand = true;\n } else { this.unexpected(); }\n};\n\npp$3.parsePropertyName = function(prop) {\n if (this.options.ecmaVersion >= 6) {\n if (this.eat(types.bracketL)) {\n prop.computed = true;\n prop.key = this.parseMaybeAssign();\n this.expect(types.bracketR);\n return prop.key\n } else {\n prop.computed = false;\n }\n }\n return prop.key = this.type === types.num || this.type === types.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== \"never\")\n};\n\n// Initialize empty function node.\n\npp$3.initFunction = function(node) {\n node.id = null;\n if (this.options.ecmaVersion >= 6) { node.generator = node.expression = false; }\n if (this.options.ecmaVersion >= 8) { node.async = false; }\n};\n\n// Parse object or class method.\n\npp$3.parseMethod = function(isGenerator, isAsync, allowDirectSuper) {\n var node = this.startNode(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n\n this.initFunction(node);\n if (this.options.ecmaVersion >= 6)\n { node.generator = isGenerator; }\n if (this.options.ecmaVersion >= 8)\n { node.async = !!isAsync; }\n\n this.yieldPos = 0;\n this.awaitPos = 0;\n this.awaitIdentPos = 0;\n this.enterScope(functionFlags(isAsync, node.generator) | SCOPE_SUPER | (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0));\n\n this.expect(types.parenL);\n node.params = this.parseBindingList(types.parenR, false, this.options.ecmaVersion >= 8);\n this.checkYieldAwaitInDefaultParams();\n this.parseFunctionBody(node, false, true);\n\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n this.awaitIdentPos = oldAwaitIdentPos;\n return this.finishNode(node, \"FunctionExpression\")\n};\n\n// Parse arrow function expression with given parameters.\n\npp$3.parseArrowExpression = function(node, params, isAsync) {\n var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n\n this.enterScope(functionFlags(isAsync, false) | SCOPE_ARROW);\n this.initFunction(node);\n if (this.options.ecmaVersion >= 8) { node.async = !!isAsync; }\n\n this.yieldPos = 0;\n this.awaitPos = 0;\n this.awaitIdentPos = 0;\n\n node.params = this.toAssignableList(params, true);\n this.parseFunctionBody(node, true, false);\n\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n this.awaitIdentPos = oldAwaitIdentPos;\n return this.finishNode(node, \"ArrowFunctionExpression\")\n};\n\n// Parse function body and check parameters.\n\npp$3.parseFunctionBody = function(node, isArrowFunction, isMethod) {\n var isExpression = isArrowFunction && this.type !== types.braceL;\n var oldStrict = this.strict, useStrict = false;\n\n if (isExpression) {\n node.body = this.parseMaybeAssign();\n node.expression = true;\n this.checkParams(node, false);\n } else {\n var nonSimple = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node.params);\n if (!oldStrict || nonSimple) {\n useStrict = this.strictDirective(this.end);\n // If this is a strict mode function, verify that argument names\n // are not repeated, and it does not try to bind the words `eval`\n // or `arguments`.\n if (useStrict && nonSimple)\n { this.raiseRecoverable(node.start, \"Illegal 'use strict' directive in function with non-simple parameter list\"); }\n }\n // Start a new scope with regard to labels and the `inFunction`\n // flag (restore them to their old value afterwards).\n var oldLabels = this.labels;\n this.labels = [];\n if (useStrict) { this.strict = true; }\n\n // Add the params to varDeclaredNames to ensure that an error is thrown\n // if a let/const declaration in the function clashes with one of the params.\n this.checkParams(node, !oldStrict && !useStrict && !isArrowFunction && !isMethod && this.isSimpleParamList(node.params));\n // Ensure the function name isn't a forbidden identifier in strict mode, e.g. 'eval'\n if (this.strict && node.id) { this.checkLVal(node.id, BIND_OUTSIDE); }\n node.body = this.parseBlock(false, undefined, useStrict && !oldStrict);\n node.expression = false;\n this.adaptDirectivePrologue(node.body.body);\n this.labels = oldLabels;\n }\n this.exitScope();\n};\n\npp$3.isSimpleParamList = function(params) {\n for (var i = 0, list = params; i < list.length; i += 1)\n {\n var param = list[i];\n\n if (param.type !== \"Identifier\") { return false\n } }\n return true\n};\n\n// Checks function params for various disallowed patterns such as using \"eval\"\n// or \"arguments\" and duplicate parameters.\n\npp$3.checkParams = function(node, allowDuplicates) {\n var nameHash = {};\n for (var i = 0, list = node.params; i < list.length; i += 1)\n {\n var param = list[i];\n\n this.checkLVal(param, BIND_VAR, allowDuplicates ? null : nameHash);\n }\n};\n\n// Parses a comma-separated list of expressions, and returns them as\n// an array. `close` is the token type that ends the list, and\n// `allowEmpty` can be turned on to allow subsequent commas with\n// nothing in between them to be parsed as `null` (which is needed\n// for array literals).\n\npp$3.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestructuringErrors) {\n var elts = [], first = true;\n while (!this.eat(close)) {\n if (!first) {\n this.expect(types.comma);\n if (allowTrailingComma && this.afterTrailingComma(close)) { break }\n } else { first = false; }\n\n var elt = (void 0);\n if (allowEmpty && this.type === types.comma)\n { elt = null; }\n else if (this.type === types.ellipsis) {\n elt = this.parseSpread(refDestructuringErrors);\n if (refDestructuringErrors && this.type === types.comma && refDestructuringErrors.trailingComma < 0)\n { refDestructuringErrors.trailingComma = this.start; }\n } else {\n elt = this.parseMaybeAssign(false, refDestructuringErrors);\n }\n elts.push(elt);\n }\n return elts\n};\n\npp$3.checkUnreserved = function(ref) {\n var start = ref.start;\n var end = ref.end;\n var name = ref.name;\n\n if (this.inGenerator && name === \"yield\")\n { this.raiseRecoverable(start, \"Cannot use 'yield' as identifier inside a generator\"); }\n if (this.inAsync && name === \"await\")\n { this.raiseRecoverable(start, \"Cannot use 'await' as identifier inside an async function\"); }\n if (this.keywords.test(name))\n { this.raise(start, (\"Unexpected keyword '\" + name + \"'\")); }\n if (this.options.ecmaVersion < 6 &&\n this.input.slice(start, end).indexOf(\"\\\\\") !== -1) { return }\n var re = this.strict ? this.reservedWordsStrict : this.reservedWords;\n if (re.test(name)) {\n if (!this.inAsync && name === \"await\")\n { this.raiseRecoverable(start, \"Cannot use keyword 'await' outside an async function\"); }\n this.raiseRecoverable(start, (\"The keyword '\" + name + \"' is reserved\"));\n }\n};\n\n// Parse the next token as an identifier. If `liberal` is true (used\n// when parsing properties), it will also convert keywords into\n// identifiers.\n\npp$3.parseIdent = function(liberal, isBinding) {\n var node = this.startNode();\n if (this.type === types.name) {\n node.name = this.value;\n } else if (this.type.keyword) {\n node.name = this.type.keyword;\n\n // To fix https://github.com/acornjs/acorn/issues/575\n // `class` and `function` keywords push new context into this.context.\n // But there is no chance to pop the context if the keyword is consumed as an identifier such as a property name.\n // If the previous token is a dot, this does not apply because the context-managing code already ignored the keyword\n if ((node.name === \"class\" || node.name === \"function\") &&\n (this.lastTokEnd !== this.lastTokStart + 1 || this.input.charCodeAt(this.lastTokStart) !== 46)) {\n this.context.pop();\n }\n } else {\n this.unexpected();\n }\n this.next(!!liberal);\n this.finishNode(node, \"Identifier\");\n if (!liberal) {\n this.checkUnreserved(node);\n if (node.name === \"await\" && !this.awaitIdentPos)\n { this.awaitIdentPos = node.start; }\n }\n return node\n};\n\n// Parses yield expression inside generator.\n\npp$3.parseYield = function(noIn) {\n if (!this.yieldPos) { this.yieldPos = this.start; }\n\n var node = this.startNode();\n this.next();\n if (this.type === types.semi || this.canInsertSemicolon() || (this.type !== types.star && !this.type.startsExpr)) {\n node.delegate = false;\n node.argument = null;\n } else {\n node.delegate = this.eat(types.star);\n node.argument = this.parseMaybeAssign(noIn);\n }\n return this.finishNode(node, \"YieldExpression\")\n};\n\npp$3.parseAwait = function() {\n if (!this.awaitPos) { this.awaitPos = this.start; }\n\n var node = this.startNode();\n this.next();\n node.argument = this.parseMaybeUnary(null, false);\n return this.finishNode(node, \"AwaitExpression\")\n};\n\nvar pp$4 = Parser.prototype;\n\n// This function is used to raise exceptions on parse errors. It\n// takes an offset integer (into the current `input`) to indicate\n// the location of the error, attaches the position to the end\n// of the error message, and then raises a `SyntaxError` with that\n// message.\n\npp$4.raise = function(pos, message) {\n var loc = getLineInfo(this.input, pos);\n message += \" (\" + loc.line + \":\" + loc.column + \")\";\n var err = new SyntaxError(message);\n err.pos = pos; err.loc = loc; err.raisedAt = this.pos;\n throw err\n};\n\npp$4.raiseRecoverable = pp$4.raise;\n\npp$4.curPosition = function() {\n if (this.options.locations) {\n return new Position(this.curLine, this.pos - this.lineStart)\n }\n};\n\nvar pp$5 = Parser.prototype;\n\nvar Scope = function Scope(flags) {\n this.flags = flags;\n // A list of var-declared names in the current lexical scope\n this.var = [];\n // A list of lexically-declared names in the current lexical scope\n this.lexical = [];\n // A list of lexically-declared FunctionDeclaration names in the current lexical scope\n this.functions = [];\n};\n\n// The functions in this module keep track of declared variables in the current scope in order to detect duplicate variable names.\n\npp$5.enterScope = function(flags) {\n this.scopeStack.push(new Scope(flags));\n};\n\npp$5.exitScope = function() {\n this.scopeStack.pop();\n};\n\n// The spec says:\n// > At the top level of a function, or script, function declarations are\n// > treated like var declarations rather than like lexical declarations.\npp$5.treatFunctionsAsVarInScope = function(scope) {\n return (scope.flags & SCOPE_FUNCTION) || !this.inModule && (scope.flags & SCOPE_TOP)\n};\n\npp$5.declareName = function(name, bindingType, pos) {\n var redeclared = false;\n if (bindingType === BIND_LEXICAL) {\n var scope = this.currentScope();\n redeclared = scope.lexical.indexOf(name) > -1 || scope.functions.indexOf(name) > -1 || scope.var.indexOf(name) > -1;\n scope.lexical.push(name);\n if (this.inModule && (scope.flags & SCOPE_TOP))\n { delete this.undefinedExports[name]; }\n } else if (bindingType === BIND_SIMPLE_CATCH) {\n var scope$1 = this.currentScope();\n scope$1.lexical.push(name);\n } else if (bindingType === BIND_FUNCTION) {\n var scope$2 = this.currentScope();\n if (this.treatFunctionsAsVar)\n { redeclared = scope$2.lexical.indexOf(name) > -1; }\n else\n { redeclared = scope$2.lexical.indexOf(name) > -1 || scope$2.var.indexOf(name) > -1; }\n scope$2.functions.push(name);\n } else {\n for (var i = this.scopeStack.length - 1; i >= 0; --i) {\n var scope$3 = this.scopeStack[i];\n if (scope$3.lexical.indexOf(name) > -1 && !((scope$3.flags & SCOPE_SIMPLE_CATCH) && scope$3.lexical[0] === name) ||\n !this.treatFunctionsAsVarInScope(scope$3) && scope$3.functions.indexOf(name) > -1) {\n redeclared = true;\n break\n }\n scope$3.var.push(name);\n if (this.inModule && (scope$3.flags & SCOPE_TOP))\n { delete this.undefinedExports[name]; }\n if (scope$3.flags & SCOPE_VAR) { break }\n }\n }\n if (redeclared) { this.raiseRecoverable(pos, (\"Identifier '\" + name + \"' has already been declared\")); }\n};\n\npp$5.checkLocalExport = function(id) {\n // scope.functions must be empty as Module code is always strict.\n if (this.scopeStack[0].lexical.indexOf(id.name) === -1 &&\n this.scopeStack[0].var.indexOf(id.name) === -1) {\n this.undefinedExports[id.name] = id;\n }\n};\n\npp$5.currentScope = function() {\n return this.scopeStack[this.scopeStack.length - 1]\n};\n\npp$5.currentVarScope = function() {\n for (var i = this.scopeStack.length - 1;; i--) {\n var scope = this.scopeStack[i];\n if (scope.flags & SCOPE_VAR) { return scope }\n }\n};\n\n// Could be useful for `this`, `new.target`, `super()`, `super.property`, and `super[property]`.\npp$5.currentThisScope = function() {\n for (var i = this.scopeStack.length - 1;; i--) {\n var scope = this.scopeStack[i];\n if (scope.flags & SCOPE_VAR && !(scope.flags & SCOPE_ARROW)) { return scope }\n }\n};\n\nvar Node = function Node(parser, pos, loc) {\n this.type = \"\";\n this.start = pos;\n this.end = 0;\n if (parser.options.locations)\n { this.loc = new SourceLocation(parser, loc); }\n if (parser.options.directSourceFile)\n { this.sourceFile = parser.options.directSourceFile; }\n if (parser.options.ranges)\n { this.range = [pos, 0]; }\n};\n\n// Start an AST node, attaching a start offset.\n\nvar pp$6 = Parser.prototype;\n\npp$6.startNode = function() {\n return new Node(this, this.start, this.startLoc)\n};\n\npp$6.startNodeAt = function(pos, loc) {\n return new Node(this, pos, loc)\n};\n\n// Finish an AST node, adding `type` and `end` properties.\n\nfunction finishNodeAt(node, type, pos, loc) {\n node.type = type;\n node.end = pos;\n if (this.options.locations)\n { node.loc.end = loc; }\n if (this.options.ranges)\n { node.range[1] = pos; }\n return node\n}\n\npp$6.finishNode = function(node, type) {\n return finishNodeAt.call(this, node, type, this.lastTokEnd, this.lastTokEndLoc)\n};\n\n// Finish node at given position\n\npp$6.finishNodeAt = function(node, type, pos, loc) {\n return finishNodeAt.call(this, node, type, pos, loc)\n};\n\n// The algorithm used to determine whether a regexp can appear at a\n\nvar TokContext = function TokContext(token, isExpr, preserveSpace, override, generator) {\n this.token = token;\n this.isExpr = !!isExpr;\n this.preserveSpace = !!preserveSpace;\n this.override = override;\n this.generator = !!generator;\n};\n\nvar types$1 = {\n b_stat: new TokContext(\"{\", false),\n b_expr: new TokContext(\"{\", true),\n b_tmpl: new TokContext(\"${\", false),\n p_stat: new TokContext(\"(\", false),\n p_expr: new TokContext(\"(\", true),\n q_tmpl: new TokContext(\"`\", true, true, function (p) { return p.tryReadTemplateToken(); }),\n f_stat: new TokContext(\"function\", false),\n f_expr: new TokContext(\"function\", true),\n f_expr_gen: new TokContext(\"function\", true, false, null, true),\n f_gen: new TokContext(\"function\", false, false, null, true)\n};\n\nvar pp$7 = Parser.prototype;\n\npp$7.initialContext = function() {\n return [types$1.b_stat]\n};\n\npp$7.braceIsBlock = function(prevType) {\n var parent = this.curContext();\n if (parent === types$1.f_expr || parent === types$1.f_stat)\n { return true }\n if (prevType === types.colon && (parent === types$1.b_stat || parent === types$1.b_expr))\n { return !parent.isExpr }\n\n // The check for `tt.name && exprAllowed` detects whether we are\n // after a `yield` or `of` construct. See the `updateContext` for\n // `tt.name`.\n if (prevType === types._return || prevType === types.name && this.exprAllowed)\n { return lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) }\n if (prevType === types._else || prevType === types.semi || prevType === types.eof || prevType === types.parenR || prevType === types.arrow)\n { return true }\n if (prevType === types.braceL)\n { return parent === types$1.b_stat }\n if (prevType === types._var || prevType === types._const || prevType === types.name)\n { return false }\n return !this.exprAllowed\n};\n\npp$7.inGeneratorContext = function() {\n for (var i = this.context.length - 1; i >= 1; i--) {\n var context = this.context[i];\n if (context.token === \"function\")\n { return context.generator }\n }\n return false\n};\n\npp$7.updateContext = function(prevType) {\n var update, type = this.type;\n if (type.keyword && prevType === types.dot)\n { this.exprAllowed = false; }\n else if (update = type.updateContext)\n { update.call(this, prevType); }\n else\n { this.exprAllowed = type.beforeExpr; }\n};\n\n// Token-specific context update code\n\ntypes.parenR.updateContext = types.braceR.updateContext = function() {\n if (this.context.length === 1) {\n this.exprAllowed = true;\n return\n }\n var out = this.context.pop();\n if (out === types$1.b_stat && this.curContext().token === \"function\") {\n out = this.context.pop();\n }\n this.exprAllowed = !out.isExpr;\n};\n\ntypes.braceL.updateContext = function(prevType) {\n this.context.push(this.braceIsBlock(prevType) ? types$1.b_stat : types$1.b_expr);\n this.exprAllowed = true;\n};\n\ntypes.dollarBraceL.updateContext = function() {\n this.context.push(types$1.b_tmpl);\n this.exprAllowed = true;\n};\n\ntypes.parenL.updateContext = function(prevType) {\n var statementParens = prevType === types._if || prevType === types._for || prevType === types._with || prevType === types._while;\n this.context.push(statementParens ? types$1.p_stat : types$1.p_expr);\n this.exprAllowed = true;\n};\n\ntypes.incDec.updateContext = function() {\n // tokExprAllowed stays unchanged\n};\n\ntypes._function.updateContext = types._class.updateContext = function(prevType) {\n if (prevType.beforeExpr && prevType !== types.semi && prevType !== types._else &&\n !(prevType === types._return && lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) &&\n !((prevType === types.colon || prevType === types.braceL) && this.curContext() === types$1.b_stat))\n { this.context.push(types$1.f_expr); }\n else\n { this.context.push(types$1.f_stat); }\n this.exprAllowed = false;\n};\n\ntypes.backQuote.updateContext = function() {\n if (this.curContext() === types$1.q_tmpl)\n { this.context.pop(); }\n else\n { this.context.push(types$1.q_tmpl); }\n this.exprAllowed = false;\n};\n\ntypes.star.updateContext = function(prevType) {\n if (prevType === types._function) {\n var index = this.context.length - 1;\n if (this.context[index] === types$1.f_expr)\n { this.context[index] = types$1.f_expr_gen; }\n else\n { this.context[index] = types$1.f_gen; }\n }\n this.exprAllowed = true;\n};\n\ntypes.name.updateContext = function(prevType) {\n var allowed = false;\n if (this.options.ecmaVersion >= 6 && prevType !== types.dot) {\n if (this.value === \"of\" && !this.exprAllowed ||\n this.value === \"yield\" && this.inGeneratorContext())\n { allowed = true; }\n }\n this.exprAllowed = allowed;\n};\n\n// This file contains Unicode properties extracted from the ECMAScript\n// specification. The lists are extracted like so:\n// $$('#table-binary-unicode-properties > figure > table > tbody > tr > td:nth-child(1) code').map(el => el.innerText)\n\n// #table-binary-unicode-properties\nvar ecma9BinaryProperties = \"ASCII ASCII_Hex_Digit AHex Alphabetic Alpha Any Assigned Bidi_Control Bidi_C Bidi_Mirrored Bidi_M Case_Ignorable CI Cased Changes_When_Casefolded CWCF Changes_When_Casemapped CWCM Changes_When_Lowercased CWL Changes_When_NFKC_Casefolded CWKCF Changes_When_Titlecased CWT Changes_When_Uppercased CWU Dash Default_Ignorable_Code_Point DI Deprecated Dep Diacritic Dia Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Extender Ext Grapheme_Base Gr_Base Grapheme_Extend Gr_Ext Hex_Digit Hex IDS_Binary_Operator IDSB IDS_Trinary_Operator IDST ID_Continue IDC ID_Start IDS Ideographic Ideo Join_Control Join_C Logical_Order_Exception LOE Lowercase Lower Math Noncharacter_Code_Point NChar Pattern_Syntax Pat_Syn Pattern_White_Space Pat_WS Quotation_Mark QMark Radical Regional_Indicator RI Sentence_Terminal STerm Soft_Dotted SD Terminal_Punctuation Term Unified_Ideograph UIdeo Uppercase Upper Variation_Selector VS White_Space space XID_Continue XIDC XID_Start XIDS\";\nvar ecma10BinaryProperties = ecma9BinaryProperties + \" Extended_Pictographic\";\nvar ecma11BinaryProperties = ecma10BinaryProperties;\nvar unicodeBinaryProperties = {\n 9: ecma9BinaryProperties,\n 10: ecma10BinaryProperties,\n 11: ecma11BinaryProperties\n};\n\n// #table-unicode-general-category-values\nvar unicodeGeneralCategoryValues = \"Cased_Letter LC Close_Punctuation Pe Connector_Punctuation Pc Control Cc cntrl Currency_Symbol Sc Dash_Punctuation Pd Decimal_Number Nd digit Enclosing_Mark Me Final_Punctuation Pf Format Cf Initial_Punctuation Pi Letter L Letter_Number Nl Line_Separator Zl Lowercase_Letter Ll Mark M Combining_Mark Math_Symbol Sm Modifier_Letter Lm Modifier_Symbol Sk Nonspacing_Mark Mn Number N Open_Punctuation Ps Other C Other_Letter Lo Other_Number No Other_Punctuation Po Other_Symbol So Paragraph_Separator Zp Private_Use Co Punctuation P punct Separator Z Space_Separator Zs Spacing_Mark Mc Surrogate Cs Symbol S Titlecase_Letter Lt Unassigned Cn Uppercase_Letter Lu\";\n\n// #table-unicode-script-values\nvar ecma9ScriptValues = \"Adlam Adlm Ahom Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb\";\nvar ecma10ScriptValues = ecma9ScriptValues + \" Dogra Dogr Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Old_Sogdian Sogo Sogdian Sogd\";\nvar ecma11ScriptValues = ecma10ScriptValues + \" Elymaic Elym Nandinagari Nand Nyiakeng_Puachue_Hmong Hmnp Wancho Wcho\";\nvar unicodeScriptValues = {\n 9: ecma9ScriptValues,\n 10: ecma10ScriptValues,\n 11: ecma11ScriptValues\n};\n\nvar data = {};\nfunction buildUnicodeData(ecmaVersion) {\n var d = data[ecmaVersion] = {\n binary: wordsRegexp(unicodeBinaryProperties[ecmaVersion] + \" \" + unicodeGeneralCategoryValues),\n nonBinary: {\n General_Category: wordsRegexp(unicodeGeneralCategoryValues),\n Script: wordsRegexp(unicodeScriptValues[ecmaVersion])\n }\n };\n d.nonBinary.Script_Extensions = d.nonBinary.Script;\n\n d.nonBinary.gc = d.nonBinary.General_Category;\n d.nonBinary.sc = d.nonBinary.Script;\n d.nonBinary.scx = d.nonBinary.Script_Extensions;\n}\nbuildUnicodeData(9);\nbuildUnicodeData(10);\nbuildUnicodeData(11);\n\nvar pp$8 = Parser.prototype;\n\nvar RegExpValidationState = function RegExpValidationState(parser) {\n this.parser = parser;\n this.validFlags = \"gim\" + (parser.options.ecmaVersion >= 6 ? \"uy\" : \"\") + (parser.options.ecmaVersion >= 9 ? \"s\" : \"\");\n this.unicodeProperties = data[parser.options.ecmaVersion >= 11 ? 11 : parser.options.ecmaVersion];\n this.source = \"\";\n this.flags = \"\";\n this.start = 0;\n this.switchU = false;\n this.switchN = false;\n this.pos = 0;\n this.lastIntValue = 0;\n this.lastStringValue = \"\";\n this.lastAssertionIsQuantifiable = false;\n this.numCapturingParens = 0;\n this.maxBackReference = 0;\n this.groupNames = [];\n this.backReferenceNames = [];\n};\n\nRegExpValidationState.prototype.reset = function reset (start, pattern, flags) {\n var unicode = flags.indexOf(\"u\") !== -1;\n this.start = start | 0;\n this.source = pattern + \"\";\n this.flags = flags;\n this.switchU = unicode && this.parser.options.ecmaVersion >= 6;\n this.switchN = unicode && this.parser.options.ecmaVersion >= 9;\n};\n\nRegExpValidationState.prototype.raise = function raise (message) {\n this.parser.raiseRecoverable(this.start, (\"Invalid regular expression: /\" + (this.source) + \"/: \" + message));\n};\n\n// If u flag is given, this returns the code point at the index (it combines a surrogate pair).\n// Otherwise, this returns the code unit of the index (can be a part of a surrogate pair).\nRegExpValidationState.prototype.at = function at (i, forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n var s = this.source;\n var l = s.length;\n if (i >= l) {\n return -1\n }\n var c = s.charCodeAt(i);\n if (!(forceU || this.switchU) || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l) {\n return c\n }\n var next = s.charCodeAt(i + 1);\n return next >= 0xDC00 && next <= 0xDFFF ? (c << 10) + next - 0x35FDC00 : c\n};\n\nRegExpValidationState.prototype.nextIndex = function nextIndex (i, forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n var s = this.source;\n var l = s.length;\n if (i >= l) {\n return l\n }\n var c = s.charCodeAt(i), next;\n if (!(forceU || this.switchU) || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l ||\n (next = s.charCodeAt(i + 1)) < 0xDC00 || next > 0xDFFF) {\n return i + 1\n }\n return i + 2\n};\n\nRegExpValidationState.prototype.current = function current (forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n return this.at(this.pos, forceU)\n};\n\nRegExpValidationState.prototype.lookahead = function lookahead (forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n return this.at(this.nextIndex(this.pos, forceU), forceU)\n};\n\nRegExpValidationState.prototype.advance = function advance (forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n this.pos = this.nextIndex(this.pos, forceU);\n};\n\nRegExpValidationState.prototype.eat = function eat (ch, forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n if (this.current(forceU) === ch) {\n this.advance(forceU);\n return true\n }\n return false\n};\n\nfunction codePointToString(ch) {\n if (ch <= 0xFFFF) { return String.fromCharCode(ch) }\n ch -= 0x10000;\n return String.fromCharCode((ch >> 10) + 0xD800, (ch & 0x03FF) + 0xDC00)\n}\n\n/**\n * Validate the flags part of a given RegExpLiteral.\n *\n * @param {RegExpValidationState} state The state to validate RegExp.\n * @returns {void}\n */\npp$8.validateRegExpFlags = function(state) {\n var validFlags = state.validFlags;\n var flags = state.flags;\n\n for (var i = 0; i < flags.length; i++) {\n var flag = flags.charAt(i);\n if (validFlags.indexOf(flag) === -1) {\n this.raise(state.start, \"Invalid regular expression flag\");\n }\n if (flags.indexOf(flag, i + 1) > -1) {\n this.raise(state.start, \"Duplicate regular expression flag\");\n }\n }\n};\n\n/**\n * Validate the pattern part of a given RegExpLiteral.\n *\n * @param {RegExpValidationState} state The state to validate RegExp.\n * @returns {void}\n */\npp$8.validateRegExpPattern = function(state) {\n this.regexp_pattern(state);\n\n // The goal symbol for the parse is |Pattern[~U, ~N]|. If the result of\n // parsing contains a |GroupName|, reparse with the goal symbol\n // |Pattern[~U, +N]| and use this result instead. Throw a *SyntaxError*\n // exception if _P_ did not conform to the grammar, if any elements of _P_\n // were not matched by the parse, or if any Early Error conditions exist.\n if (!state.switchN && this.options.ecmaVersion >= 9 && state.groupNames.length > 0) {\n state.switchN = true;\n this.regexp_pattern(state);\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Pattern\npp$8.regexp_pattern = function(state) {\n state.pos = 0;\n state.lastIntValue = 0;\n state.lastStringValue = \"\";\n state.lastAssertionIsQuantifiable = false;\n state.numCapturingParens = 0;\n state.maxBackReference = 0;\n state.groupNames.length = 0;\n state.backReferenceNames.length = 0;\n\n this.regexp_disjunction(state);\n\n if (state.pos !== state.source.length) {\n // Make the same messages as V8.\n if (state.eat(0x29 /* ) */)) {\n state.raise(\"Unmatched ')'\");\n }\n if (state.eat(0x5D /* ] */) || state.eat(0x7D /* } */)) {\n state.raise(\"Lone quantifier brackets\");\n }\n }\n if (state.maxBackReference > state.numCapturingParens) {\n state.raise(\"Invalid escape\");\n }\n for (var i = 0, list = state.backReferenceNames; i < list.length; i += 1) {\n var name = list[i];\n\n if (state.groupNames.indexOf(name) === -1) {\n state.raise(\"Invalid named capture referenced\");\n }\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Disjunction\npp$8.regexp_disjunction = function(state) {\n this.regexp_alternative(state);\n while (state.eat(0x7C /* | */)) {\n this.regexp_alternative(state);\n }\n\n // Make the same message as V8.\n if (this.regexp_eatQuantifier(state, true)) {\n state.raise(\"Nothing to repeat\");\n }\n if (state.eat(0x7B /* { */)) {\n state.raise(\"Lone quantifier brackets\");\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Alternative\npp$8.regexp_alternative = function(state) {\n while (state.pos < state.source.length && this.regexp_eatTerm(state))\n { }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Term\npp$8.regexp_eatTerm = function(state) {\n if (this.regexp_eatAssertion(state)) {\n // Handle `QuantifiableAssertion Quantifier` alternative.\n // `state.lastAssertionIsQuantifiable` is true if the last eaten Assertion\n // is a QuantifiableAssertion.\n if (state.lastAssertionIsQuantifiable && this.regexp_eatQuantifier(state)) {\n // Make the same message as V8.\n if (state.switchU) {\n state.raise(\"Invalid quantifier\");\n }\n }\n return true\n }\n\n if (state.switchU ? this.regexp_eatAtom(state) : this.regexp_eatExtendedAtom(state)) {\n this.regexp_eatQuantifier(state);\n return true\n }\n\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Assertion\npp$8.regexp_eatAssertion = function(state) {\n var start = state.pos;\n state.lastAssertionIsQuantifiable = false;\n\n // ^, $\n if (state.eat(0x5E /* ^ */) || state.eat(0x24 /* $ */)) {\n return true\n }\n\n // \\b \\B\n if (state.eat(0x5C /* \\ */)) {\n if (state.eat(0x42 /* B */) || state.eat(0x62 /* b */)) {\n return true\n }\n state.pos = start;\n }\n\n // Lookahead / Lookbehind\n if (state.eat(0x28 /* ( */) && state.eat(0x3F /* ? */)) {\n var lookbehind = false;\n if (this.options.ecmaVersion >= 9) {\n lookbehind = state.eat(0x3C /* < */);\n }\n if (state.eat(0x3D /* = */) || state.eat(0x21 /* ! */)) {\n this.regexp_disjunction(state);\n if (!state.eat(0x29 /* ) */)) {\n state.raise(\"Unterminated group\");\n }\n state.lastAssertionIsQuantifiable = !lookbehind;\n return true\n }\n }\n\n state.pos = start;\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Quantifier\npp$8.regexp_eatQuantifier = function(state, noError) {\n if ( noError === void 0 ) noError = false;\n\n if (this.regexp_eatQuantifierPrefix(state, noError)) {\n state.eat(0x3F /* ? */);\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-QuantifierPrefix\npp$8.regexp_eatQuantifierPrefix = function(state, noError) {\n return (\n state.eat(0x2A /* * */) ||\n state.eat(0x2B /* + */) ||\n state.eat(0x3F /* ? */) ||\n this.regexp_eatBracedQuantifier(state, noError)\n )\n};\npp$8.regexp_eatBracedQuantifier = function(state, noError) {\n var start = state.pos;\n if (state.eat(0x7B /* { */)) {\n var min = 0, max = -1;\n if (this.regexp_eatDecimalDigits(state)) {\n min = state.lastIntValue;\n if (state.eat(0x2C /* , */) && this.regexp_eatDecimalDigits(state)) {\n max = state.lastIntValue;\n }\n if (state.eat(0x7D /* } */)) {\n // SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-term\n if (max !== -1 && max < min && !noError) {\n state.raise(\"numbers out of order in {} quantifier\");\n }\n return true\n }\n }\n if (state.switchU && !noError) {\n state.raise(\"Incomplete quantifier\");\n }\n state.pos = start;\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Atom\npp$8.regexp_eatAtom = function(state) {\n return (\n this.regexp_eatPatternCharacters(state) ||\n state.eat(0x2E /* . */) ||\n this.regexp_eatReverseSolidusAtomEscape(state) ||\n this.regexp_eatCharacterClass(state) ||\n this.regexp_eatUncapturingGroup(state) ||\n this.regexp_eatCapturingGroup(state)\n )\n};\npp$8.regexp_eatReverseSolidusAtomEscape = function(state) {\n var start = state.pos;\n if (state.eat(0x5C /* \\ */)) {\n if (this.regexp_eatAtomEscape(state)) {\n return true\n }\n state.pos = start;\n }\n return false\n};\npp$8.regexp_eatUncapturingGroup = function(state) {\n var start = state.pos;\n if (state.eat(0x28 /* ( */)) {\n if (state.eat(0x3F /* ? */) && state.eat(0x3A /* : */)) {\n this.regexp_disjunction(state);\n if (state.eat(0x29 /* ) */)) {\n return true\n }\n state.raise(\"Unterminated group\");\n }\n state.pos = start;\n }\n return false\n};\npp$8.regexp_eatCapturingGroup = function(state) {\n if (state.eat(0x28 /* ( */)) {\n if (this.options.ecmaVersion >= 9) {\n this.regexp_groupSpecifier(state);\n } else if (state.current() === 0x3F /* ? */) {\n state.raise(\"Invalid group\");\n }\n this.regexp_disjunction(state);\n if (state.eat(0x29 /* ) */)) {\n state.numCapturingParens += 1;\n return true\n }\n state.raise(\"Unterminated group\");\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedAtom\npp$8.regexp_eatExtendedAtom = function(state) {\n return (\n state.eat(0x2E /* . */) ||\n this.regexp_eatReverseSolidusAtomEscape(state) ||\n this.regexp_eatCharacterClass(state) ||\n this.regexp_eatUncapturingGroup(state) ||\n this.regexp_eatCapturingGroup(state) ||\n this.regexp_eatInvalidBracedQuantifier(state) ||\n this.regexp_eatExtendedPatternCharacter(state)\n )\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-InvalidBracedQuantifier\npp$8.regexp_eatInvalidBracedQuantifier = function(state) {\n if (this.regexp_eatBracedQuantifier(state, true)) {\n state.raise(\"Nothing to repeat\");\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-SyntaxCharacter\npp$8.regexp_eatSyntaxCharacter = function(state) {\n var ch = state.current();\n if (isSyntaxCharacter(ch)) {\n state.lastIntValue = ch;\n state.advance();\n return true\n }\n return false\n};\nfunction isSyntaxCharacter(ch) {\n return (\n ch === 0x24 /* $ */ ||\n ch >= 0x28 /* ( */ && ch <= 0x2B /* + */ ||\n ch === 0x2E /* . */ ||\n ch === 0x3F /* ? */ ||\n ch >= 0x5B /* [ */ && ch <= 0x5E /* ^ */ ||\n ch >= 0x7B /* { */ && ch <= 0x7D /* } */\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-PatternCharacter\n// But eat eager.\npp$8.regexp_eatPatternCharacters = function(state) {\n var start = state.pos;\n var ch = 0;\n while ((ch = state.current()) !== -1 && !isSyntaxCharacter(ch)) {\n state.advance();\n }\n return state.pos !== start\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedPatternCharacter\npp$8.regexp_eatExtendedPatternCharacter = function(state) {\n var ch = state.current();\n if (\n ch !== -1 &&\n ch !== 0x24 /* $ */ &&\n !(ch >= 0x28 /* ( */ && ch <= 0x2B /* + */) &&\n ch !== 0x2E /* . */ &&\n ch !== 0x3F /* ? */ &&\n ch !== 0x5B /* [ */ &&\n ch !== 0x5E /* ^ */ &&\n ch !== 0x7C /* | */\n ) {\n state.advance();\n return true\n }\n return false\n};\n\n// GroupSpecifier ::\n// [empty]\n// `?` GroupName\npp$8.regexp_groupSpecifier = function(state) {\n if (state.eat(0x3F /* ? */)) {\n if (this.regexp_eatGroupName(state)) {\n if (state.groupNames.indexOf(state.lastStringValue) !== -1) {\n state.raise(\"Duplicate capture group name\");\n }\n state.groupNames.push(state.lastStringValue);\n return\n }\n state.raise(\"Invalid group\");\n }\n};\n\n// GroupName ::\n// `<` RegExpIdentifierName `>`\n// Note: this updates `state.lastStringValue` property with the eaten name.\npp$8.regexp_eatGroupName = function(state) {\n state.lastStringValue = \"\";\n if (state.eat(0x3C /* < */)) {\n if (this.regexp_eatRegExpIdentifierName(state) && state.eat(0x3E /* > */)) {\n return true\n }\n state.raise(\"Invalid capture group name\");\n }\n return false\n};\n\n// RegExpIdentifierName ::\n// RegExpIdentifierStart\n// RegExpIdentifierName RegExpIdentifierPart\n// Note: this updates `state.lastStringValue` property with the eaten name.\npp$8.regexp_eatRegExpIdentifierName = function(state) {\n state.lastStringValue = \"\";\n if (this.regexp_eatRegExpIdentifierStart(state)) {\n state.lastStringValue += codePointToString(state.lastIntValue);\n while (this.regexp_eatRegExpIdentifierPart(state)) {\n state.lastStringValue += codePointToString(state.lastIntValue);\n }\n return true\n }\n return false\n};\n\n// RegExpIdentifierStart ::\n// UnicodeIDStart\n// `$`\n// `_`\n// `\\` RegExpUnicodeEscapeSequence[+U]\npp$8.regexp_eatRegExpIdentifierStart = function(state) {\n var start = state.pos;\n var forceU = this.options.ecmaVersion >= 11;\n var ch = state.current(forceU);\n state.advance(forceU);\n\n if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU)) {\n ch = state.lastIntValue;\n }\n if (isRegExpIdentifierStart(ch)) {\n state.lastIntValue = ch;\n return true\n }\n\n state.pos = start;\n return false\n};\nfunction isRegExpIdentifierStart(ch) {\n return isIdentifierStart(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */\n}\n\n// RegExpIdentifierPart ::\n// UnicodeIDContinue\n// `$`\n// `_`\n// `\\` RegExpUnicodeEscapeSequence[+U]\n// <ZWNJ>\n// <ZWJ>\npp$8.regexp_eatRegExpIdentifierPart = function(state) {\n var start = state.pos;\n var forceU = this.options.ecmaVersion >= 11;\n var ch = state.current(forceU);\n state.advance(forceU);\n\n if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU)) {\n ch = state.lastIntValue;\n }\n if (isRegExpIdentifierPart(ch)) {\n state.lastIntValue = ch;\n return true\n }\n\n state.pos = start;\n return false\n};\nfunction isRegExpIdentifierPart(ch) {\n return isIdentifierChar(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */ || ch === 0x200C /* <ZWNJ> */ || ch === 0x200D /* <ZWJ> */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-AtomEscape\npp$8.regexp_eatAtomEscape = function(state) {\n if (\n this.regexp_eatBackReference(state) ||\n this.regexp_eatCharacterClassEscape(state) ||\n this.regexp_eatCharacterEscape(state) ||\n (state.switchN && this.regexp_eatKGroupName(state))\n ) {\n return true\n }\n if (state.switchU) {\n // Make the same message as V8.\n if (state.current() === 0x63 /* c */) {\n state.raise(\"Invalid unicode escape\");\n }\n state.raise(\"Invalid escape\");\n }\n return false\n};\npp$8.regexp_eatBackReference = function(state) {\n var start = state.pos;\n if (this.regexp_eatDecimalEscape(state)) {\n var n = state.lastIntValue;\n if (state.switchU) {\n // For SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-atomescape\n if (n > state.maxBackReference) {\n state.maxBackReference = n;\n }\n return true\n }\n if (n <= state.numCapturingParens) {\n return true\n }\n state.pos = start;\n }\n return false\n};\npp$8.regexp_eatKGroupName = function(state) {\n if (state.eat(0x6B /* k */)) {\n if (this.regexp_eatGroupName(state)) {\n state.backReferenceNames.push(state.lastStringValue);\n return true\n }\n state.raise(\"Invalid named reference\");\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-CharacterEscape\npp$8.regexp_eatCharacterEscape = function(state) {\n return (\n this.regexp_eatControlEscape(state) ||\n this.regexp_eatCControlLetter(state) ||\n this.regexp_eatZero(state) ||\n this.regexp_eatHexEscapeSequence(state) ||\n this.regexp_eatRegExpUnicodeEscapeSequence(state, false) ||\n (!state.switchU && this.regexp_eatLegacyOctalEscapeSequence(state)) ||\n this.regexp_eatIdentityEscape(state)\n )\n};\npp$8.regexp_eatCControlLetter = function(state) {\n var start = state.pos;\n if (state.eat(0x63 /* c */)) {\n if (this.regexp_eatControlLetter(state)) {\n return true\n }\n state.pos = start;\n }\n return false\n};\npp$8.regexp_eatZero = function(state) {\n if (state.current() === 0x30 /* 0 */ && !isDecimalDigit(state.lookahead())) {\n state.lastIntValue = 0;\n state.advance();\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlEscape\npp$8.regexp_eatControlEscape = function(state) {\n var ch = state.current();\n if (ch === 0x74 /* t */) {\n state.lastIntValue = 0x09; /* \\t */\n state.advance();\n return true\n }\n if (ch === 0x6E /* n */) {\n state.lastIntValue = 0x0A; /* \\n */\n state.advance();\n return true\n }\n if (ch === 0x76 /* v */) {\n state.lastIntValue = 0x0B; /* \\v */\n state.advance();\n return true\n }\n if (ch === 0x66 /* f */) {\n state.lastIntValue = 0x0C; /* \\f */\n state.advance();\n return true\n }\n if (ch === 0x72 /* r */) {\n state.lastIntValue = 0x0D; /* \\r */\n state.advance();\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlLetter\npp$8.regexp_eatControlLetter = function(state) {\n var ch = state.current();\n if (isControlLetter(ch)) {\n state.lastIntValue = ch % 0x20;\n state.advance();\n return true\n }\n return false\n};\nfunction isControlLetter(ch) {\n return (\n (ch >= 0x41 /* A */ && ch <= 0x5A /* Z */) ||\n (ch >= 0x61 /* a */ && ch <= 0x7A /* z */)\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-RegExpUnicodeEscapeSequence\npp$8.regexp_eatRegExpUnicodeEscapeSequence = function(state, forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n var start = state.pos;\n var switchU = forceU || state.switchU;\n\n if (state.eat(0x75 /* u */)) {\n if (this.regexp_eatFixedHexDigits(state, 4)) {\n var lead = state.lastIntValue;\n if (switchU && lead >= 0xD800 && lead <= 0xDBFF) {\n var leadSurrogateEnd = state.pos;\n if (state.eat(0x5C /* \\ */) && state.eat(0x75 /* u */) && this.regexp_eatFixedHexDigits(state, 4)) {\n var trail = state.lastIntValue;\n if (trail >= 0xDC00 && trail <= 0xDFFF) {\n state.lastIntValue = (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000;\n return true\n }\n }\n state.pos = leadSurrogateEnd;\n state.lastIntValue = lead;\n }\n return true\n }\n if (\n switchU &&\n state.eat(0x7B /* { */) &&\n this.regexp_eatHexDigits(state) &&\n state.eat(0x7D /* } */) &&\n isValidUnicode(state.lastIntValue)\n ) {\n return true\n }\n if (switchU) {\n state.raise(\"Invalid unicode escape\");\n }\n state.pos = start;\n }\n\n return false\n};\nfunction isValidUnicode(ch) {\n return ch >= 0 && ch <= 0x10FFFF\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-IdentityEscape\npp$8.regexp_eatIdentityEscape = function(state) {\n if (state.switchU) {\n if (this.regexp_eatSyntaxCharacter(state)) {\n return true\n }\n if (state.eat(0x2F /* / */)) {\n state.lastIntValue = 0x2F; /* / */\n return true\n }\n return false\n }\n\n var ch = state.current();\n if (ch !== 0x63 /* c */ && (!state.switchN || ch !== 0x6B /* k */)) {\n state.lastIntValue = ch;\n state.advance();\n return true\n }\n\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalEscape\npp$8.regexp_eatDecimalEscape = function(state) {\n state.lastIntValue = 0;\n var ch = state.current();\n if (ch >= 0x31 /* 1 */ && ch <= 0x39 /* 9 */) {\n do {\n state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */);\n state.advance();\n } while ((ch = state.current()) >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */)\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClassEscape\npp$8.regexp_eatCharacterClassEscape = function(state) {\n var ch = state.current();\n\n if (isCharacterClassEscape(ch)) {\n state.lastIntValue = -1;\n state.advance();\n return true\n }\n\n if (\n state.switchU &&\n this.options.ecmaVersion >= 9 &&\n (ch === 0x50 /* P */ || ch === 0x70 /* p */)\n ) {\n state.lastIntValue = -1;\n state.advance();\n if (\n state.eat(0x7B /* { */) &&\n this.regexp_eatUnicodePropertyValueExpression(state) &&\n state.eat(0x7D /* } */)\n ) {\n return true\n }\n state.raise(\"Invalid property name\");\n }\n\n return false\n};\nfunction isCharacterClassEscape(ch) {\n return (\n ch === 0x64 /* d */ ||\n ch === 0x44 /* D */ ||\n ch === 0x73 /* s */ ||\n ch === 0x53 /* S */ ||\n ch === 0x77 /* w */ ||\n ch === 0x57 /* W */\n )\n}\n\n// UnicodePropertyValueExpression ::\n// UnicodePropertyName `=` UnicodePropertyValue\n// LoneUnicodePropertyNameOrValue\npp$8.regexp_eatUnicodePropertyValueExpression = function(state) {\n var start = state.pos;\n\n // UnicodePropertyName `=` UnicodePropertyValue\n if (this.regexp_eatUnicodePropertyName(state) && state.eat(0x3D /* = */)) {\n var name = state.lastStringValue;\n if (this.regexp_eatUnicodePropertyValue(state)) {\n var value = state.lastStringValue;\n this.regexp_validateUnicodePropertyNameAndValue(state, name, value);\n return true\n }\n }\n state.pos = start;\n\n // LoneUnicodePropertyNameOrValue\n if (this.regexp_eatLoneUnicodePropertyNameOrValue(state)) {\n var nameOrValue = state.lastStringValue;\n this.regexp_validateUnicodePropertyNameOrValue(state, nameOrValue);\n return true\n }\n return false\n};\npp$8.regexp_validateUnicodePropertyNameAndValue = function(state, name, value) {\n if (!has(state.unicodeProperties.nonBinary, name))\n { state.raise(\"Invalid property name\"); }\n if (!state.unicodeProperties.nonBinary[name].test(value))\n { state.raise(\"Invalid property value\"); }\n};\npp$8.regexp_validateUnicodePropertyNameOrValue = function(state, nameOrValue) {\n if (!state.unicodeProperties.binary.test(nameOrValue))\n { state.raise(\"Invalid property name\"); }\n};\n\n// UnicodePropertyName ::\n// UnicodePropertyNameCharacters\npp$8.regexp_eatUnicodePropertyName = function(state) {\n var ch = 0;\n state.lastStringValue = \"\";\n while (isUnicodePropertyNameCharacter(ch = state.current())) {\n state.lastStringValue += codePointToString(ch);\n state.advance();\n }\n return state.lastStringValue !== \"\"\n};\nfunction isUnicodePropertyNameCharacter(ch) {\n return isControlLetter(ch) || ch === 0x5F /* _ */\n}\n\n// UnicodePropertyValue ::\n// UnicodePropertyValueCharacters\npp$8.regexp_eatUnicodePropertyValue = function(state) {\n var ch = 0;\n state.lastStringValue = \"\";\n while (isUnicodePropertyValueCharacter(ch = state.current())) {\n state.lastStringValue += codePointToString(ch);\n state.advance();\n }\n return state.lastStringValue !== \"\"\n};\nfunction isUnicodePropertyValueCharacter(ch) {\n return isUnicodePropertyNameCharacter(ch) || isDecimalDigit(ch)\n}\n\n// LoneUnicodePropertyNameOrValue ::\n// UnicodePropertyValueCharacters\npp$8.regexp_eatLoneUnicodePropertyNameOrValue = function(state) {\n return this.regexp_eatUnicodePropertyValue(state)\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClass\npp$8.regexp_eatCharacterClass = function(state) {\n if (state.eat(0x5B /* [ */)) {\n state.eat(0x5E /* ^ */);\n this.regexp_classRanges(state);\n if (state.eat(0x5D /* ] */)) {\n return true\n }\n // Unreachable since it threw \"unterminated regular expression\" error before.\n state.raise(\"Unterminated character class\");\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassRanges\n// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRanges\n// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRangesNoDash\npp$8.regexp_classRanges = function(state) {\n while (this.regexp_eatClassAtom(state)) {\n var left = state.lastIntValue;\n if (state.eat(0x2D /* - */) && this.regexp_eatClassAtom(state)) {\n var right = state.lastIntValue;\n if (state.switchU && (left === -1 || right === -1)) {\n state.raise(\"Invalid character class\");\n }\n if (left !== -1 && right !== -1 && left > right) {\n state.raise(\"Range out of order in character class\");\n }\n }\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtom\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtomNoDash\npp$8.regexp_eatClassAtom = function(state) {\n var start = state.pos;\n\n if (state.eat(0x5C /* \\ */)) {\n if (this.regexp_eatClassEscape(state)) {\n return true\n }\n if (state.switchU) {\n // Make the same message as V8.\n var ch$1 = state.current();\n if (ch$1 === 0x63 /* c */ || isOctalDigit(ch$1)) {\n state.raise(\"Invalid class escape\");\n }\n state.raise(\"Invalid escape\");\n }\n state.pos = start;\n }\n\n var ch = state.current();\n if (ch !== 0x5D /* ] */) {\n state.lastIntValue = ch;\n state.advance();\n return true\n }\n\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassEscape\npp$8.regexp_eatClassEscape = function(state) {\n var start = state.pos;\n\n if (state.eat(0x62 /* b */)) {\n state.lastIntValue = 0x08; /* <BS> */\n return true\n }\n\n if (state.switchU && state.eat(0x2D /* - */)) {\n state.lastIntValue = 0x2D; /* - */\n return true\n }\n\n if (!state.switchU && state.eat(0x63 /* c */)) {\n if (this.regexp_eatClassControlLetter(state)) {\n return true\n }\n state.pos = start;\n }\n\n return (\n this.regexp_eatCharacterClassEscape(state) ||\n this.regexp_eatCharacterEscape(state)\n )\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassControlLetter\npp$8.regexp_eatClassControlLetter = function(state) {\n var ch = state.current();\n if (isDecimalDigit(ch) || ch === 0x5F /* _ */) {\n state.lastIntValue = ch % 0x20;\n state.advance();\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence\npp$8.regexp_eatHexEscapeSequence = function(state) {\n var start = state.pos;\n if (state.eat(0x78 /* x */)) {\n if (this.regexp_eatFixedHexDigits(state, 2)) {\n return true\n }\n if (state.switchU) {\n state.raise(\"Invalid escape\");\n }\n state.pos = start;\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalDigits\npp$8.regexp_eatDecimalDigits = function(state) {\n var start = state.pos;\n var ch = 0;\n state.lastIntValue = 0;\n while (isDecimalDigit(ch = state.current())) {\n state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */);\n state.advance();\n }\n return state.pos !== start\n};\nfunction isDecimalDigit(ch) {\n return ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigits\npp$8.regexp_eatHexDigits = function(state) {\n var start = state.pos;\n var ch = 0;\n state.lastIntValue = 0;\n while (isHexDigit(ch = state.current())) {\n state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch);\n state.advance();\n }\n return state.pos !== start\n};\nfunction isHexDigit(ch) {\n return (\n (ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */) ||\n (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) ||\n (ch >= 0x61 /* a */ && ch <= 0x66 /* f */)\n )\n}\nfunction hexToInt(ch) {\n if (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) {\n return 10 + (ch - 0x41 /* A */)\n }\n if (ch >= 0x61 /* a */ && ch <= 0x66 /* f */) {\n return 10 + (ch - 0x61 /* a */)\n }\n return ch - 0x30 /* 0 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-LegacyOctalEscapeSequence\n// Allows only 0-377(octal) i.e. 0-255(decimal).\npp$8.regexp_eatLegacyOctalEscapeSequence = function(state) {\n if (this.regexp_eatOctalDigit(state)) {\n var n1 = state.lastIntValue;\n if (this.regexp_eatOctalDigit(state)) {\n var n2 = state.lastIntValue;\n if (n1 <= 3 && this.regexp_eatOctalDigit(state)) {\n state.lastIntValue = n1 * 64 + n2 * 8 + state.lastIntValue;\n } else {\n state.lastIntValue = n1 * 8 + n2;\n }\n } else {\n state.lastIntValue = n1;\n }\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-OctalDigit\npp$8.regexp_eatOctalDigit = function(state) {\n var ch = state.current();\n if (isOctalDigit(ch)) {\n state.lastIntValue = ch - 0x30; /* 0 */\n state.advance();\n return true\n }\n state.lastIntValue = 0;\n return false\n};\nfunction isOctalDigit(ch) {\n return ch >= 0x30 /* 0 */ && ch <= 0x37 /* 7 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Hex4Digits\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigit\n// And HexDigit HexDigit in https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence\npp$8.regexp_eatFixedHexDigits = function(state, length) {\n var start = state.pos;\n state.lastIntValue = 0;\n for (var i = 0; i < length; ++i) {\n var ch = state.current();\n if (!isHexDigit(ch)) {\n state.pos = start;\n return false\n }\n state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch);\n state.advance();\n }\n return true\n};\n\n// Object type used to represent tokens. Note that normally, tokens\n// simply exist as properties on the parser object. This is only\n// used for the onToken callback and the external tokenizer.\n\nvar Token = function Token(p) {\n this.type = p.type;\n this.value = p.value;\n this.start = p.start;\n this.end = p.end;\n if (p.options.locations)\n { this.loc = new SourceLocation(p, p.startLoc, p.endLoc); }\n if (p.options.ranges)\n { this.range = [p.start, p.end]; }\n};\n\n// ## Tokenizer\n\nvar pp$9 = Parser.prototype;\n\n// Move to the next token\n\npp$9.next = function(ignoreEscapeSequenceInKeyword) {\n if (!ignoreEscapeSequenceInKeyword && this.type.keyword && this.containsEsc)\n { this.raiseRecoverable(this.start, \"Escape sequence in keyword \" + this.type.keyword); }\n if (this.options.onToken)\n { this.options.onToken(new Token(this)); }\n\n this.lastTokEnd = this.end;\n this.lastTokStart = this.start;\n this.lastTokEndLoc = this.endLoc;\n this.lastTokStartLoc = this.startLoc;\n this.nextToken();\n};\n\npp$9.getToken = function() {\n this.next();\n return new Token(this)\n};\n\n// If we're in an ES6 environment, make parsers iterable\nif (typeof Symbol !== \"undefined\")\n { pp$9[Symbol.iterator] = function() {\n var this$1 = this;\n\n return {\n next: function () {\n var token = this$1.getToken();\n return {\n done: token.type === types.eof,\n value: token\n }\n }\n }\n }; }\n\n// Toggle strict mode. Re-reads the next number or string to please\n// pedantic tests (`\"use strict\"; 010;` should fail).\n\npp$9.curContext = function() {\n return this.context[this.context.length - 1]\n};\n\n// Read a single token, updating the parser object's token-related\n// properties.\n\npp$9.nextToken = function() {\n var curContext = this.curContext();\n if (!curContext || !curContext.preserveSpace) { this.skipSpace(); }\n\n this.start = this.pos;\n if (this.options.locations) { this.startLoc = this.curPosition(); }\n if (this.pos >= this.input.length) { return this.finishToken(types.eof) }\n\n if (curContext.override) { return curContext.override(this) }\n else { this.readToken(this.fullCharCodeAtPos()); }\n};\n\npp$9.readToken = function(code) {\n // Identifier or keyword. '\\uXXXX' sequences are allowed in\n // identifiers, so '\\' also dispatches to that.\n if (isIdentifierStart(code, this.options.ecmaVersion >= 6) || code === 92 /* '\\' */)\n { return this.readWord() }\n\n return this.getTokenFromCode(code)\n};\n\npp$9.fullCharCodeAtPos = function() {\n var code = this.input.charCodeAt(this.pos);\n if (code <= 0xd7ff || code >= 0xe000) { return code }\n var next = this.input.charCodeAt(this.pos + 1);\n return (code << 10) + next - 0x35fdc00\n};\n\npp$9.skipBlockComment = function() {\n var startLoc = this.options.onComment && this.curPosition();\n var start = this.pos, end = this.input.indexOf(\"*/\", this.pos += 2);\n if (end === -1) { this.raise(this.pos - 2, \"Unterminated comment\"); }\n this.pos = end + 2;\n if (this.options.locations) {\n lineBreakG.lastIndex = start;\n var match;\n while ((match = lineBreakG.exec(this.input)) && match.index < this.pos) {\n ++this.curLine;\n this.lineStart = match.index + match[0].length;\n }\n }\n if (this.options.onComment)\n { this.options.onComment(true, this.input.slice(start + 2, end), start, this.pos,\n startLoc, this.curPosition()); }\n};\n\npp$9.skipLineComment = function(startSkip) {\n var start = this.pos;\n var startLoc = this.options.onComment && this.curPosition();\n var ch = this.input.charCodeAt(this.pos += startSkip);\n while (this.pos < this.input.length && !isNewLine(ch)) {\n ch = this.input.charCodeAt(++this.pos);\n }\n if (this.options.onComment)\n { this.options.onComment(false, this.input.slice(start + startSkip, this.pos), start, this.pos,\n startLoc, this.curPosition()); }\n};\n\n// Called at the start of the parse and after every token. Skips\n// whitespace and comments, and.\n\npp$9.skipSpace = function() {\n loop: while (this.pos < this.input.length) {\n var ch = this.input.charCodeAt(this.pos);\n switch (ch) {\n case 32: case 160: // ' '\n ++this.pos;\n break\n case 13:\n if (this.input.charCodeAt(this.pos + 1) === 10) {\n ++this.pos;\n }\n case 10: case 8232: case 8233:\n ++this.pos;\n if (this.options.locations) {\n ++this.curLine;\n this.lineStart = this.pos;\n }\n break\n case 47: // '/'\n switch (this.input.charCodeAt(this.pos + 1)) {\n case 42: // '*'\n this.skipBlockComment();\n break\n case 47:\n this.skipLineComment(2);\n break\n default:\n break loop\n }\n break\n default:\n if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) {\n ++this.pos;\n } else {\n break loop\n }\n }\n }\n};\n\n// Called at the end of every token. Sets `end`, `val`, and\n// maintains `context` and `exprAllowed`, and skips the space after\n// the token, so that the next one's `start` will point at the\n// right position.\n\npp$9.finishToken = function(type, val) {\n this.end = this.pos;\n if (this.options.locations) { this.endLoc = this.curPosition(); }\n var prevType = this.type;\n this.type = type;\n this.value = val;\n\n this.updateContext(prevType);\n};\n\n// ### Token reading\n\n// This is the function that is called to fetch the next token. It\n// is somewhat obscure, because it works in character codes rather\n// than characters, and because operator parsing has been inlined\n// into it.\n//\n// All in the name of speed.\n//\npp$9.readToken_dot = function() {\n var next = this.input.charCodeAt(this.pos + 1);\n if (next >= 48 && next <= 57) { return this.readNumber(true) }\n var next2 = this.input.charCodeAt(this.pos + 2);\n if (this.options.ecmaVersion >= 6 && next === 46 && next2 === 46) { // 46 = dot '.'\n this.pos += 3;\n return this.finishToken(types.ellipsis)\n } else {\n ++this.pos;\n return this.finishToken(types.dot)\n }\n};\n\npp$9.readToken_slash = function() { // '/'\n var next = this.input.charCodeAt(this.pos + 1);\n if (this.exprAllowed) { ++this.pos; return this.readRegexp() }\n if (next === 61) { return this.finishOp(types.assign, 2) }\n return this.finishOp(types.slash, 1)\n};\n\npp$9.readToken_mult_modulo_exp = function(code) { // '%*'\n var next = this.input.charCodeAt(this.pos + 1);\n var size = 1;\n var tokentype = code === 42 ? types.star : types.modulo;\n\n // exponentiation operator ** and **=\n if (this.options.ecmaVersion >= 7 && code === 42 && next === 42) {\n ++size;\n tokentype = types.starstar;\n next = this.input.charCodeAt(this.pos + 2);\n }\n\n if (next === 61) { return this.finishOp(types.assign, size + 1) }\n return this.finishOp(tokentype, size)\n};\n\npp$9.readToken_pipe_amp = function(code) { // '|&'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === code) {\n if (this.options.ecmaVersion >= 12) {\n var next2 = this.input.charCodeAt(this.pos + 2);\n if (next2 === 61) { return this.finishOp(types.assign, 3) }\n }\n return this.finishOp(code === 124 ? types.logicalOR : types.logicalAND, 2)\n }\n if (next === 61) { return this.finishOp(types.assign, 2) }\n return this.finishOp(code === 124 ? types.bitwiseOR : types.bitwiseAND, 1)\n};\n\npp$9.readToken_caret = function() { // '^'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 61) { return this.finishOp(types.assign, 2) }\n return this.finishOp(types.bitwiseXOR, 1)\n};\n\npp$9.readToken_plus_min = function(code) { // '+-'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === code) {\n if (next === 45 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 62 &&\n (this.lastTokEnd === 0 || lineBreak.test(this.input.slice(this.lastTokEnd, this.pos)))) {\n // A `-->` line comment\n this.skipLineComment(3);\n this.skipSpace();\n return this.nextToken()\n }\n return this.finishOp(types.incDec, 2)\n }\n if (next === 61) { return this.finishOp(types.assign, 2) }\n return this.finishOp(types.plusMin, 1)\n};\n\npp$9.readToken_lt_gt = function(code) { // '<>'\n var next = this.input.charCodeAt(this.pos + 1);\n var size = 1;\n if (next === code) {\n size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2;\n if (this.input.charCodeAt(this.pos + size) === 61) { return this.finishOp(types.assign, size + 1) }\n return this.finishOp(types.bitShift, size)\n }\n if (next === 33 && code === 60 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 45 &&\n this.input.charCodeAt(this.pos + 3) === 45) {\n // `<!--`, an XML-style comment that should be interpreted as a line comment\n this.skipLineComment(4);\n this.skipSpace();\n return this.nextToken()\n }\n if (next === 61) { size = 2; }\n return this.finishOp(types.relational, size)\n};\n\npp$9.readToken_eq_excl = function(code) { // '=!'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 61) { return this.finishOp(types.equality, this.input.charCodeAt(this.pos + 2) === 61 ? 3 : 2) }\n if (code === 61 && next === 62 && this.options.ecmaVersion >= 6) { // '=>'\n this.pos += 2;\n return this.finishToken(types.arrow)\n }\n return this.finishOp(code === 61 ? types.eq : types.prefix, 1)\n};\n\npp$9.readToken_question = function() { // '?'\n var ecmaVersion = this.options.ecmaVersion;\n if (ecmaVersion >= 11) {\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 46) {\n var next2 = this.input.charCodeAt(this.pos + 2);\n if (next2 < 48 || next2 > 57) { return this.finishOp(types.questionDot, 2) }\n }\n if (next === 63) {\n if (ecmaVersion >= 12) {\n var next2$1 = this.input.charCodeAt(this.pos + 2);\n if (next2$1 === 61) { return this.finishOp(types.assign, 3) }\n }\n return this.finishOp(types.coalesce, 2)\n }\n }\n return this.finishOp(types.question, 1)\n};\n\npp$9.getTokenFromCode = function(code) {\n switch (code) {\n // The interpretation of a dot depends on whether it is followed\n // by a digit or another two dots.\n case 46: // '.'\n return this.readToken_dot()\n\n // Punctuation tokens.\n case 40: ++this.pos; return this.finishToken(types.parenL)\n case 41: ++this.pos; return this.finishToken(types.parenR)\n case 59: ++this.pos; return this.finishToken(types.semi)\n case 44: ++this.pos; return this.finishToken(types.comma)\n case 91: ++this.pos; return this.finishToken(types.bracketL)\n case 93: ++this.pos; return this.finishToken(types.bracketR)\n case 123: ++this.pos; return this.finishToken(types.braceL)\n case 125: ++this.pos; return this.finishToken(types.braceR)\n case 58: ++this.pos; return this.finishToken(types.colon)\n\n case 96: // '`'\n if (this.options.ecmaVersion < 6) { break }\n ++this.pos;\n return this.finishToken(types.backQuote)\n\n case 48: // '0'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 120 || next === 88) { return this.readRadixNumber(16) } // '0x', '0X' - hex number\n if (this.options.ecmaVersion >= 6) {\n if (next === 111 || next === 79) { return this.readRadixNumber(8) } // '0o', '0O' - octal number\n if (next === 98 || next === 66) { return this.readRadixNumber(2) } // '0b', '0B' - binary number\n }\n\n // Anything else beginning with a digit is an integer, octal\n // number, or float.\n case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: // 1-9\n return this.readNumber(false)\n\n // Quotes produce strings.\n case 34: case 39: // '\"', \"'\"\n return this.readString(code)\n\n // Operators are parsed inline in tiny state machines. '=' (61) is\n // often referred to. `finishOp` simply skips the amount of\n // characters it is given as second argument, and returns a token\n // of the type given by its first argument.\n\n case 47: // '/'\n return this.readToken_slash()\n\n case 37: case 42: // '%*'\n return this.readToken_mult_modulo_exp(code)\n\n case 124: case 38: // '|&'\n return this.readToken_pipe_amp(code)\n\n case 94: // '^'\n return this.readToken_caret()\n\n case 43: case 45: // '+-'\n return this.readToken_plus_min(code)\n\n case 60: case 62: // '<>'\n return this.readToken_lt_gt(code)\n\n case 61: case 33: // '=!'\n return this.readToken_eq_excl(code)\n\n case 63: // '?'\n return this.readToken_question()\n\n case 126: // '~'\n return this.finishOp(types.prefix, 1)\n }\n\n this.raise(this.pos, \"Unexpected character '\" + codePointToString$1(code) + \"'\");\n};\n\npp$9.finishOp = function(type, size) {\n var str = this.input.slice(this.pos, this.pos + size);\n this.pos += size;\n return this.finishToken(type, str)\n};\n\npp$9.readRegexp = function() {\n var escaped, inClass, start = this.pos;\n for (;;) {\n if (this.pos >= this.input.length) { this.raise(start, \"Unterminated regular expression\"); }\n var ch = this.input.charAt(this.pos);\n if (lineBreak.test(ch)) { this.raise(start, \"Unterminated regular expression\"); }\n if (!escaped) {\n if (ch === \"[\") { inClass = true; }\n else if (ch === \"]\" && inClass) { inClass = false; }\n else if (ch === \"/\" && !inClass) { break }\n escaped = ch === \"\\\\\";\n } else { escaped = false; }\n ++this.pos;\n }\n var pattern = this.input.slice(start, this.pos);\n ++this.pos;\n var flagsStart = this.pos;\n var flags = this.readWord1();\n if (this.containsEsc) { this.unexpected(flagsStart); }\n\n // Validate pattern\n var state = this.regexpState || (this.regexpState = new RegExpValidationState(this));\n state.reset(start, pattern, flags);\n this.validateRegExpFlags(state);\n this.validateRegExpPattern(state);\n\n // Create Literal#value property value.\n var value = null;\n try {\n value = new RegExp(pattern, flags);\n } catch (e) {\n // ESTree requires null if it failed to instantiate RegExp object.\n // https://github.com/estree/estree/blob/a27003adf4fd7bfad44de9cef372a2eacd527b1c/es5.md#regexpliteral\n }\n\n return this.finishToken(types.regexp, {pattern: pattern, flags: flags, value: value})\n};\n\n// Read an integer in the given radix. Return null if zero digits\n// were read, the integer value otherwise. When `len` is given, this\n// will return `null` unless the integer has exactly `len` digits.\n\npp$9.readInt = function(radix, len, maybeLegacyOctalNumericLiteral) {\n // `len` is used for character escape sequences. In that case, disallow separators.\n var allowSeparators = this.options.ecmaVersion >= 12 && len === undefined;\n\n // `maybeLegacyOctalNumericLiteral` is true if it doesn't have prefix (0x,0o,0b)\n // and isn't fraction part nor exponent part. In that case, if the first digit\n // is zero then disallow separators.\n var isLegacyOctalNumericLiteral = maybeLegacyOctalNumericLiteral && this.input.charCodeAt(this.pos) === 48;\n\n var start = this.pos, total = 0, lastCode = 0;\n for (var i = 0, e = len == null ? Infinity : len; i < e; ++i, ++this.pos) {\n var code = this.input.charCodeAt(this.pos), val = (void 0);\n\n if (allowSeparators && code === 95) {\n if (isLegacyOctalNumericLiteral) { this.raiseRecoverable(this.pos, \"Numeric separator is not allowed in legacy octal numeric literals\"); }\n if (lastCode === 95) { this.raiseRecoverable(this.pos, \"Numeric separator must be exactly one underscore\"); }\n if (i === 0) { this.raiseRecoverable(this.pos, \"Numeric separator is not allowed at the first of digits\"); }\n lastCode = code;\n continue\n }\n\n if (code >= 97) { val = code - 97 + 10; } // a\n else if (code >= 65) { val = code - 65 + 10; } // A\n else if (code >= 48 && code <= 57) { val = code - 48; } // 0-9\n else { val = Infinity; }\n if (val >= radix) { break }\n lastCode = code;\n total = total * radix + val;\n }\n\n if (allowSeparators && lastCode === 95) { this.raiseRecoverable(this.pos - 1, \"Numeric separator is not allowed at the last of digits\"); }\n if (this.pos === start || len != null && this.pos - start !== len) { return null }\n\n return total\n};\n\nfunction stringToNumber(str, isLegacyOctalNumericLiteral) {\n if (isLegacyOctalNumericLiteral) {\n return parseInt(str, 8)\n }\n\n // `parseFloat(value)` stops parsing at the first numeric separator then returns a wrong value.\n return parseFloat(str.replace(/_/g, \"\"))\n}\n\nfunction stringToBigInt(str) {\n if (typeof BigInt !== \"function\") {\n return null\n }\n\n // `BigInt(value)` throws syntax error if the string contains numeric separators.\n return BigInt(str.replace(/_/g, \"\"))\n}\n\npp$9.readRadixNumber = function(radix) {\n var start = this.pos;\n this.pos += 2; // 0x\n var val = this.readInt(radix);\n if (val == null) { this.raise(this.start + 2, \"Expected number in radix \" + radix); }\n if (this.options.ecmaVersion >= 11 && this.input.charCodeAt(this.pos) === 110) {\n val = stringToBigInt(this.input.slice(start, this.pos));\n ++this.pos;\n } else if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n return this.finishToken(types.num, val)\n};\n\n// Read an integer, octal integer, or floating-point number.\n\npp$9.readNumber = function(startsWithDot) {\n var start = this.pos;\n if (!startsWithDot && this.readInt(10, undefined, true) === null) { this.raise(start, \"Invalid number\"); }\n var octal = this.pos - start >= 2 && this.input.charCodeAt(start) === 48;\n if (octal && this.strict) { this.raise(start, \"Invalid number\"); }\n var next = this.input.charCodeAt(this.pos);\n if (!octal && !startsWithDot && this.options.ecmaVersion >= 11 && next === 110) {\n var val$1 = stringToBigInt(this.input.slice(start, this.pos));\n ++this.pos;\n if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n return this.finishToken(types.num, val$1)\n }\n if (octal && /[89]/.test(this.input.slice(start, this.pos))) { octal = false; }\n if (next === 46 && !octal) { // '.'\n ++this.pos;\n this.readInt(10);\n next = this.input.charCodeAt(this.pos);\n }\n if ((next === 69 || next === 101) && !octal) { // 'eE'\n next = this.input.charCodeAt(++this.pos);\n if (next === 43 || next === 45) { ++this.pos; } // '+-'\n if (this.readInt(10) === null) { this.raise(start, \"Invalid number\"); }\n }\n if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n\n var val = stringToNumber(this.input.slice(start, this.pos), octal);\n return this.finishToken(types.num, val)\n};\n\n// Read a string value, interpreting backslash-escapes.\n\npp$9.readCodePoint = function() {\n var ch = this.input.charCodeAt(this.pos), code;\n\n if (ch === 123) { // '{'\n if (this.options.ecmaVersion < 6) { this.unexpected(); }\n var codePos = ++this.pos;\n code = this.readHexChar(this.input.indexOf(\"}\", this.pos) - this.pos);\n ++this.pos;\n if (code > 0x10FFFF) { this.invalidStringToken(codePos, \"Code point out of bounds\"); }\n } else {\n code = this.readHexChar(4);\n }\n return code\n};\n\nfunction codePointToString$1(code) {\n // UTF-16 Decoding\n if (code <= 0xFFFF) { return String.fromCharCode(code) }\n code -= 0x10000;\n return String.fromCharCode((code >> 10) + 0xD800, (code & 1023) + 0xDC00)\n}\n\npp$9.readString = function(quote) {\n var out = \"\", chunkStart = ++this.pos;\n for (;;) {\n if (this.pos >= this.input.length) { this.raise(this.start, \"Unterminated string constant\"); }\n var ch = this.input.charCodeAt(this.pos);\n if (ch === quote) { break }\n if (ch === 92) { // '\\'\n out += this.input.slice(chunkStart, this.pos);\n out += this.readEscapedChar(false);\n chunkStart = this.pos;\n } else {\n if (isNewLine(ch, this.options.ecmaVersion >= 10)) { this.raise(this.start, \"Unterminated string constant\"); }\n ++this.pos;\n }\n }\n out += this.input.slice(chunkStart, this.pos++);\n return this.finishToken(types.string, out)\n};\n\n// Reads template string tokens.\n\nvar INVALID_TEMPLATE_ESCAPE_ERROR = {};\n\npp$9.tryReadTemplateToken = function() {\n this.inTemplateElement = true;\n try {\n this.readTmplToken();\n } catch (err) {\n if (err === INVALID_TEMPLATE_ESCAPE_ERROR) {\n this.readInvalidTemplateToken();\n } else {\n throw err\n }\n }\n\n this.inTemplateElement = false;\n};\n\npp$9.invalidStringToken = function(position, message) {\n if (this.inTemplateElement && this.options.ecmaVersion >= 9) {\n throw INVALID_TEMPLATE_ESCAPE_ERROR\n } else {\n this.raise(position, message);\n }\n};\n\npp$9.readTmplToken = function() {\n var out = \"\", chunkStart = this.pos;\n for (;;) {\n if (this.pos >= this.input.length) { this.raise(this.start, \"Unterminated template\"); }\n var ch = this.input.charCodeAt(this.pos);\n if (ch === 96 || ch === 36 && this.input.charCodeAt(this.pos + 1) === 123) { // '`', '${'\n if (this.pos === this.start && (this.type === types.template || this.type === types.invalidTemplate)) {\n if (ch === 36) {\n this.pos += 2;\n return this.finishToken(types.dollarBraceL)\n } else {\n ++this.pos;\n return this.finishToken(types.backQuote)\n }\n }\n out += this.input.slice(chunkStart, this.pos);\n return this.finishToken(types.template, out)\n }\n if (ch === 92) { // '\\'\n out += this.input.slice(chunkStart, this.pos);\n out += this.readEscapedChar(true);\n chunkStart = this.pos;\n } else if (isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.pos);\n ++this.pos;\n switch (ch) {\n case 13:\n if (this.input.charCodeAt(this.pos) === 10) { ++this.pos; }\n case 10:\n out += \"\\n\";\n break\n default:\n out += String.fromCharCode(ch);\n break\n }\n if (this.options.locations) {\n ++this.curLine;\n this.lineStart = this.pos;\n }\n chunkStart = this.pos;\n } else {\n ++this.pos;\n }\n }\n};\n\n// Reads a template token to search for the end, without validating any escape sequences\npp$9.readInvalidTemplateToken = function() {\n for (; this.pos < this.input.length; this.pos++) {\n switch (this.input[this.pos]) {\n case \"\\\\\":\n ++this.pos;\n break\n\n case \"$\":\n if (this.input[this.pos + 1] !== \"{\") {\n break\n }\n // falls through\n\n case \"`\":\n return this.finishToken(types.invalidTemplate, this.input.slice(this.start, this.pos))\n\n // no default\n }\n }\n this.raise(this.start, \"Unterminated template\");\n};\n\n// Used to read escaped characters\n\npp$9.readEscapedChar = function(inTemplate) {\n var ch = this.input.charCodeAt(++this.pos);\n ++this.pos;\n switch (ch) {\n case 110: return \"\\n\" // 'n' -> '\\n'\n case 114: return \"\\r\" // 'r' -> '\\r'\n case 120: return String.fromCharCode(this.readHexChar(2)) // 'x'\n case 117: return codePointToString$1(this.readCodePoint()) // 'u'\n case 116: return \"\\t\" // 't' -> '\\t'\n case 98: return \"\\b\" // 'b' -> '\\b'\n case 118: return \"\\u000b\" // 'v' -> '\\u000b'\n case 102: return \"\\f\" // 'f' -> '\\f'\n case 13: if (this.input.charCodeAt(this.pos) === 10) { ++this.pos; } // '\\r\\n'\n case 10: // ' \\n'\n if (this.options.locations) { this.lineStart = this.pos; ++this.curLine; }\n return \"\"\n case 56:\n case 57:\n if (inTemplate) {\n var codePos = this.pos - 1;\n\n this.invalidStringToken(\n codePos,\n \"Invalid escape sequence in template string\"\n );\n\n return null\n }\n default:\n if (ch >= 48 && ch <= 55) {\n var octalStr = this.input.substr(this.pos - 1, 3).match(/^[0-7]+/)[0];\n var octal = parseInt(octalStr, 8);\n if (octal > 255) {\n octalStr = octalStr.slice(0, -1);\n octal = parseInt(octalStr, 8);\n }\n this.pos += octalStr.length - 1;\n ch = this.input.charCodeAt(this.pos);\n if ((octalStr !== \"0\" || ch === 56 || ch === 57) && (this.strict || inTemplate)) {\n this.invalidStringToken(\n this.pos - 1 - octalStr.length,\n inTemplate\n ? \"Octal literal in template string\"\n : \"Octal literal in strict mode\"\n );\n }\n return String.fromCharCode(octal)\n }\n if (isNewLine(ch)) {\n // Unicode new line characters after \\ get removed from output in both\n // template literals and strings\n return \"\"\n }\n return String.fromCharCode(ch)\n }\n};\n\n// Used to read character escape sequences ('\\x', '\\u', '\\U').\n\npp$9.readHexChar = function(len) {\n var codePos = this.pos;\n var n = this.readInt(16, len);\n if (n === null) { this.invalidStringToken(codePos, \"Bad character escape sequence\"); }\n return n\n};\n\n// Read an identifier, and return it as a string. Sets `this.containsEsc`\n// to whether the word contained a '\\u' escape.\n//\n// Incrementally adds only escaped chars, adding other chunks as-is\n// as a micro-optimization.\n\npp$9.readWord1 = function() {\n this.containsEsc = false;\n var word = \"\", first = true, chunkStart = this.pos;\n var astral = this.options.ecmaVersion >= 6;\n while (this.pos < this.input.length) {\n var ch = this.fullCharCodeAtPos();\n if (isIdentifierChar(ch, astral)) {\n this.pos += ch <= 0xffff ? 1 : 2;\n } else if (ch === 92) { // \"\\\"\n this.containsEsc = true;\n word += this.input.slice(chunkStart, this.pos);\n var escStart = this.pos;\n if (this.input.charCodeAt(++this.pos) !== 117) // \"u\"\n { this.invalidStringToken(this.pos, \"Expecting Unicode escape sequence \\\\uXXXX\"); }\n ++this.pos;\n var esc = this.readCodePoint();\n if (!(first ? isIdentifierStart : isIdentifierChar)(esc, astral))\n { this.invalidStringToken(escStart, \"Invalid Unicode escape\"); }\n word += codePointToString$1(esc);\n chunkStart = this.pos;\n } else {\n break\n }\n first = false;\n }\n return word + this.input.slice(chunkStart, this.pos)\n};\n\n// Read an identifier or keyword token. Will check for reserved\n// words when necessary.\n\npp$9.readWord = function() {\n var word = this.readWord1();\n var type = types.name;\n if (this.keywords.test(word)) {\n type = keywords$1[word];\n }\n return this.finishToken(type, word)\n};\n\n// Acorn is a tiny, fast JavaScript parser written in JavaScript.\n\nvar version = \"7.4.0\";\n\nParser.acorn = {\n Parser: Parser,\n version: version,\n defaultOptions: defaultOptions,\n Position: Position,\n SourceLocation: SourceLocation,\n getLineInfo: getLineInfo,\n Node: Node,\n TokenType: TokenType,\n tokTypes: types,\n keywordTypes: keywords$1,\n TokContext: TokContext,\n tokContexts: types$1,\n isIdentifierChar: isIdentifierChar,\n isIdentifierStart: isIdentifierStart,\n Token: Token,\n isNewLine: isNewLine,\n lineBreak: lineBreak,\n lineBreakG: lineBreakG,\n nonASCIIwhitespace: nonASCIIwhitespace\n};\n\n// The main exported interface (under `self.acorn` when in the\n// browser) is a `parse` function that takes a code string and\n// returns an abstract syntax tree as specified by [Mozilla parser\n// API][api].\n//\n// [api]: https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API\n\nfunction parse(input, options) {\n return Parser.parse(input, options)\n}\n\n// This function tries to parse a single expression at a given\n// offset in a string. Useful for parsing mixed-language formats\n// that embed JavaScript expressions.\n\nfunction parseExpressionAt(input, pos, options) {\n return Parser.parseExpressionAt(input, pos, options)\n}\n\n// Acorn is organized as a tokenizer and a recursive-descent parser.\n// The `tokenizer` export provides an interface to the tokenizer.\n\nfunction tokenizer(input, options) {\n return Parser.tokenizer(input, options)\n}\n\nexport { Node, Parser, Position, SourceLocation, TokContext, Token, TokenType, defaultOptions, getLineInfo, isIdentifierChar, isIdentifierStart, isNewLine, keywords$1 as keywordTypes, lineBreak, lineBreakG, nonASCIIwhitespace, parse, parseExpressionAt, types$1 as tokContexts, types as tokTypes, tokenizer, version };\n","function walk(ast, { enter, leave }) {\n\treturn visit(ast, null, enter, leave);\n}\n\nlet should_skip = false;\nlet should_remove = false;\nlet replacement = null;\nconst context = {\n\tskip: () => should_skip = true,\n\tremove: () => should_remove = true,\n\treplace: (node) => replacement = node\n};\n\nfunction replace(parent, prop, index, node) {\n\tif (parent) {\n\t\tif (index !== null) {\n\t\t\tparent[prop][index] = node;\n\t\t} else {\n\t\t\tparent[prop] = node;\n\t\t}\n\t}\n}\n\nfunction remove(parent, prop, index) {\n\tif (parent) {\n\t\tif (index !== null) {\n\t\t\tparent[prop].splice(index, 1);\n\t\t} else {\n\t\t\tdelete parent[prop];\n\t\t}\n\t}\n}\n\nfunction visit(\n\tnode,\n\tparent,\n\tenter,\n\tleave,\n\tprop,\n\tindex\n) {\n\tif (node) {\n\t\tif (enter) {\n\t\t\tconst _should_skip = should_skip;\n\t\t\tconst _should_remove = should_remove;\n\t\t\tconst _replacement = replacement;\n\t\t\tshould_skip = false;\n\t\t\tshould_remove = false;\n\t\t\treplacement = null;\n\n\t\t\tenter.call(context, node, parent, prop, index);\n\n\t\t\tif (replacement) {\n\t\t\t\tnode = replacement;\n\t\t\t\treplace(parent, prop, index, node);\n\t\t\t}\n\n\t\t\tif (should_remove) {\n\t\t\t\tremove(parent, prop, index);\n\t\t\t}\n\n\t\t\tconst skipped = should_skip;\n\t\t\tconst removed = should_remove;\n\n\t\t\tshould_skip = _should_skip;\n\t\t\tshould_remove = _should_remove;\n\t\t\treplacement = _replacement;\n\n\t\t\tif (skipped) return node;\n\t\t\tif (removed) return null;\n\t\t}\n\n\t\tfor (const key in node) {\n\t\t\tconst value = (node )[key];\n\n\t\t\tif (typeof value !== 'object') {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\telse if (Array.isArray(value)) {\n\t\t\t\tfor (let j = 0, k = 0; j < value.length; j += 1, k += 1) {\n\t\t\t\t\tif (value[j] !== null && typeof value[j].type === 'string') {\n\t\t\t\t\t\tif (!visit(value[j], node, enter, leave, key, k)) {\n\t\t\t\t\t\t\t// removed\n\t\t\t\t\t\t\tj--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\telse if (value !== null && typeof value.type === 'string') {\n\t\t\t\tvisit(value, node, enter, leave, key, null);\n\t\t\t}\n\t\t}\n\n\t\tif (leave) {\n\t\t\tconst _replacement = replacement;\n\t\t\tconst _should_remove = should_remove;\n\t\t\treplacement = null;\n\t\t\tshould_remove = false;\n\n\t\t\tleave.call(context, node, parent, prop, index);\n\n\t\t\tif (replacement) {\n\t\t\t\tnode = replacement;\n\t\t\t\treplace(parent, prop, index, node);\n\t\t\t}\n\n\t\t\tif (should_remove) {\n\t\t\t\tremove(parent, prop, index);\n\t\t\t}\n\n\t\t\tconst removed = should_remove;\n\n\t\t\treplacement = _replacement;\n\t\t\tshould_remove = _should_remove;\n\n\t\t\tif (removed) return null;\n\t\t}\n\t}\n\n\treturn node;\n}\n\nexport { walk };\n","function isReference(node, parent) {\n if (node.type === 'MemberExpression') {\n return !node.computed && isReference(node.object, node);\n }\n if (node.type === 'Identifier') {\n if (!parent)\n return true;\n switch (parent.type) {\n // disregard `bar` in `foo.bar`\n case 'MemberExpression': return parent.computed || node === parent.object;\n // disregard the `foo` in `class {foo(){}}` but keep it in `class {[foo](){}}`\n case 'MethodDefinition': return parent.computed;\n // disregard the `foo` in `class {foo=bar}` but keep it in `class {[foo]=bar}` and `class {bar=foo}`\n case 'FieldDefinition': return parent.computed || node === parent.value;\n // disregard the `bar` in `{ bar: foo }`, but keep it in `{ [bar]: foo }`\n case 'Property': return parent.computed || node === parent.value;\n // disregard the `bar` in `export { foo as bar }` or\n // the foo in `import { foo as bar }`\n case 'ExportSpecifier':\n case 'ImportSpecifier': return node === parent.local;\n // disregard the `foo` in `foo: while (...) { ... break foo; ... continue foo;}`\n case 'LabeledStatement':\n case 'BreakStatement':\n case 'ContinueStatement': return false;\n default: return true;\n }\n }\n return false;\n}\n\nexport default isReference;\n","import { walk } from 'estree-walker';\nimport is_reference from 'is-reference';\n\nfunction analyze(expression) {\n\tconst map = new WeakMap();\n\n\tlet scope = new Scope(null, false);\n\n\twalk(expression, {\n\t\tenter(node, parent) {\n\t\t\tif (node.type === 'ImportDeclaration') {\n\t\t\t\tnode.specifiers.forEach((specifier) => {\n\t\t\t\t\tscope.declarations.set(specifier.local.name, specifier);\n\t\t\t\t});\n\t\t\t} else if (/(Function(Declaration|Expression)|ArrowFunctionExpression)/.test(node.type)) {\n\t\t\t\tif (node.type === 'FunctionDeclaration') {\n\t\t\t\t\tscope.declarations.set(node.id.name, node);\n\t\t\t\t\tmap.set(node, scope = new Scope(scope, false));\n\t\t\t\t} else {\n\t\t\t\t\tmap.set(node, scope = new Scope(scope, false));\n\t\t\t\t\tif (node.type === 'FunctionExpression' && node.id) scope.declarations.set(node.id.name, node);\n\t\t\t\t}\n\n\t\t\t\tnode.params.forEach((param) => {\n\t\t\t\t\textract_names(param).forEach(name => {\n\t\t\t\t\t\tscope.declarations.set(name, node);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t} else if (/For(?:In|Of)?Statement/.test(node.type)) {\n\t\t\t\tmap.set(node, scope = new Scope(scope, true));\n\t\t\t} else if (node.type === 'BlockStatement') {\n\t\t\t\tmap.set(node, scope = new Scope(scope, true));\n\t\t\t} else if (/(Class|Variable)Declaration/.test(node.type)) {\n\t\t\t\tscope.add_declaration(node);\n\t\t\t} else if (node.type === 'CatchClause') {\n\t\t\t\tmap.set(node, scope = new Scope(scope, true));\n\n\t\t\t\tif (node.param) {\n\t\t\t\t\textract_names(node.param).forEach(name => {\n\t\t\t\t\t\tscope.declarations.set(name, node.param);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tleave(node) {\n\t\t\tif (map.has(node)) {\n\t\t\t\tscope = scope.parent;\n\t\t\t}\n\t\t}\n\t});\n\n\tconst globals = new Map();\n\n\twalk(expression, {\n\t\tenter(node, parent) {\n\t\t\tif (map.has(node)) scope = map.get(node);\n\n\t\t\tif (node.type === 'Identifier' && is_reference(node, parent)) {\n\t\t\t\tconst owner = scope.find_owner(node.name);\n\t\t\t\tif (!owner) globals.set(node.name, node);\n\n\t\t\t\tadd_reference(scope, node.name);\n\t\t\t}\n\t\t},\n\t\tleave(node) {\n\t\t\tif (map.has(node)) {\n\t\t\t\tscope = scope.parent;\n\t\t\t}\n\t\t}\n\t});\n\n\treturn { map, scope, globals };\n}\n\nfunction add_reference(scope, name) {\n\tscope.references.add(name);\n\tif (scope.parent) add_reference(scope.parent, name);\n}\n\nclass Scope {\n\t\n\t\n\t__init() {this.declarations = new Map();}\n\t__init2() {this.initialised_declarations = new Set();}\n\t__init3() {this.references = new Set();}\n\n\tconstructor(parent, block) {Scope.prototype.__init.call(this);Scope.prototype.__init2.call(this);Scope.prototype.__init3.call(this);\n\t\tthis.parent = parent;\n\t\tthis.block = block;\n\t}\n\n\n\tadd_declaration(node) {\n\t\tif (node.type === 'VariableDeclaration') {\n\t\t\tif (node.kind === 'var' && this.block && this.parent) {\n\t\t\t\tthis.parent.add_declaration(node);\n\t\t\t} else if (node.type === 'VariableDeclaration') {\n\t\t\t\tnode.declarations.forEach((declarator) => {\n\t\t\t\t\textract_names(declarator.id).forEach(name => {\n\t\t\t\t\t\tthis.declarations.set(name, node);\n\t\t\t\t\t\tif (declarator.init) this.initialised_declarations.add(name);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tthis.declarations.set(node.id.name, node);\n\t\t}\n\t}\n\n\tfind_owner(name) {\n\t\tif (this.declarations.has(name)) return this;\n\t\treturn this.parent && this.parent.find_owner(name);\n\t}\n\n\thas(name) {\n\t\treturn (\n\t\t\tthis.declarations.has(name) || (this.parent && this.parent.has(name))\n\t\t);\n\t}\n}\n\nfunction extract_names(param) {\n\treturn extract_identifiers(param).map(node => node.name);\n}\n\nfunction extract_identifiers(param) {\n\tconst nodes = [];\n\textractors[param.type] && extractors[param.type](nodes, param);\n\treturn nodes;\n}\n\nconst extractors = {\n\tIdentifier(nodes, param) {\n\t\tnodes.push(param);\n\t},\n\n\tMemberExpression(nodes, param) {\n\t\tlet object = param;\n\t\twhile (object.type === 'MemberExpression') object = object.object;\n\t\tnodes.push(object);\n\t},\n\n\tObjectPattern(nodes, param) {\n\t\tparam.properties.forEach((prop) => {\n\t\t\tif (prop.type === 'RestElement') {\n\t\t\t\tnodes.push(prop.argument);\n\t\t\t} else {\n\t\t\t\textractors[prop.value.type](nodes, prop.value);\n\t\t\t}\n\t\t});\n\t},\n\n\tArrayPattern(nodes, param) {\n\t\tparam.elements.forEach((element) => {\n\t\t\tif (element) extractors[element.type](nodes, element);\n\t\t});\n\t},\n\n\tRestElement(nodes, param) {\n\t\textractors[param.argument.type](nodes, param.argument);\n\t},\n\n\tAssignmentPattern(nodes, param) {\n\t\textractors[param.left.type](nodes, param.left);\n\t}\n};\n\nexport { analyze, Scope, extract_names, extract_identifiers };\n","var charToInteger = {};\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\nfor (var i = 0; i < chars.length; i++) {\n charToInteger[chars.charCodeAt(i)] = i;\n}\nfunction decode(mappings) {\n var generatedCodeColumn = 0; // first field\n var sourceFileIndex = 0; // second field\n var sourceCodeLine = 0; // third field\n var sourceCodeColumn = 0; // fourth field\n var nameIndex = 0; // fifth field\n var decoded = [];\n var line = [];\n var segment = [];\n for (var i = 0, j = 0, shift = 0, value = 0, len = mappings.length; i < len; i++) {\n var c = mappings.charCodeAt(i);\n if (c === 44) { // \",\"\n if (segment.length)\n line.push(segment);\n segment = [];\n j = 0;\n }\n else if (c === 59) { // \";\"\n if (segment.length)\n line.push(segment);\n segment = [];\n j = 0;\n decoded.push(line);\n line = [];\n generatedCodeColumn = 0;\n }\n else {\n var integer = charToInteger[c];\n if (integer === undefined) {\n throw new Error('Invalid character (' + String.fromCharCode(c) + ')');\n }\n var hasContinuationBit = integer & 32;\n integer &= 31;\n value += integer << shift;\n if (hasContinuationBit) {\n shift += 5;\n }\n else {\n var shouldNegate = value & 1;\n value >>>= 1;\n if (shouldNegate) {\n value = -value;\n if (value === 0)\n value = -0x80000000;\n }\n if (j == 0) {\n generatedCodeColumn += value;\n segment.push(generatedCodeColumn);\n }\n else if (j === 1) {\n sourceFileIndex += value;\n segment.push(sourceFileIndex);\n }\n else if (j === 2) {\n sourceCodeLine += value;\n segment.push(sourceCodeLine);\n }\n else if (j === 3) {\n sourceCodeColumn += value;\n segment.push(sourceCodeColumn);\n }\n else if (j === 4) {\n nameIndex += value;\n segment.push(nameIndex);\n }\n j++;\n value = shift = 0; // reset\n }\n }\n }\n if (segment.length)\n line.push(segment);\n decoded.push(line);\n return decoded;\n}\nfunction encode(decoded) {\n var sourceFileIndex = 0; // second field\n var sourceCodeLine = 0; // third field\n var sourceCodeColumn = 0; // fourth field\n var nameIndex = 0; // fifth field\n var mappings = '';\n for (var i = 0; i < decoded.length; i++) {\n var line = decoded[i];\n if (i > 0)\n mappings += ';';\n if (line.length === 0)\n continue;\n var generatedCodeColumn = 0; // first field\n var lineMappings = [];\n for (var _i = 0, line_1 = line; _i < line_1.length; _i++) {\n var segment = line_1[_i];\n var segmentMappings = encodeInteger(segment[0] - generatedCodeColumn);\n generatedCodeColumn = segment[0];\n if (segment.length > 1) {\n segmentMappings +=\n encodeInteger(segment[1] - sourceFileIndex) +\n encodeInteger(segment[2] - sourceCodeLine) +\n encodeInteger(segment[3] - sourceCodeColumn);\n sourceFileIndex = segment[1];\n sourceCodeLine = segment[2];\n sourceCodeColumn = segment[3];\n }\n if (segment.length === 5) {\n segmentMappings += encodeInteger(segment[4] - nameIndex);\n nameIndex = segment[4];\n }\n lineMappings.push(segmentMappings);\n }\n mappings += lineMappings.join(',');\n }\n return mappings;\n}\nfunction encodeInteger(num) {\n var result = '';\n num = num < 0 ? (-num << 1) | 1 : num << 1;\n do {\n var clamped = num & 31;\n num >>>= 5;\n if (num > 0) {\n clamped |= 32;\n }\n result += chars[clamped];\n } while (num > 0);\n return result;\n}\n\nexport { decode, encode };\n//# sourceMappingURL=sourcemap-codec.es.js.map\n","import { parse as parse$1, parseExpressionAt as parseExpressionAt$1 } from 'acorn';\nimport { walk } from 'estree-walker';\nimport { analyze } from 'periscopic';\nimport { encode } from 'sourcemap-codec';\n\n// generate an ID that is, to all intents and purposes, unique\nconst id = (Math.round(Math.random() * 1e20)).toString(36);\nconst re = new RegExp(`_${id}_(?:(\\\\d+)|(AT)|(HASH))_(\\\\w+)?`, 'g');\n\nconst get_comment_handlers = (comments, raw) => ({\n\n\t// pass to acorn options\n\tonComment: (block, value, start, end) => {\n\t\tif (block && /\\n/.test(value)) {\n\t\t\tlet a = start;\n\t\t\twhile (a > 0 && raw[a - 1] !== '\\n') a -= 1;\n\n\t\t\tlet b = a;\n\t\t\twhile (/[ \\t]/.test(raw[b])) b += 1;\n\n\t\t\tconst indentation = raw.slice(a, b);\n\t\t\tvalue = value.replace(new RegExp(`^${indentation}`, 'gm'), '');\n\t\t}\n\n\t\tcomments.push({ type: block ? 'Block' : 'Line', value, start, end });\n\t},\n\n\t// pass to estree-walker options\n\tenter(node) {\n\t\tlet comment;\n\n\t\twhile (comments[0] && comments[0].start < (node ).start) {\n\t\t\tcomment = comments.shift();\n\n\t\t\tcomment.value = comment.value.replace(re, (match, id, at, hash, value) => {\n\t\t\t\tif (hash) return `#${value}`;\n\t\t\t\tif (at) return `@${value}`;\n\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\tconst next = comments[0] || node;\n\t\t\t(comment ).has_trailing_newline = (\n\t\t\t\tcomment.type === 'Line' ||\n\t\t\t\t/\\n/.test(raw.slice(comment.end, (next ).start))\n\t\t\t);\n\n\t\t\t(node.leadingComments || (node.leadingComments = [])).push(comment);\n\t\t}\n\t},\n\tleave(node) {\n\t\tif (comments[0]) {\n\t\t\tconst slice = raw.slice((node ).end, comments[0].start);\n\n\t\t\tif (/^[,) \\t]*$/.test(slice)) {\n\t\t\t\tnode.trailingComments = [comments.shift()];\n\t\t\t}\n\t\t}\n\t}\n\n});\n\nfunction handle(node, state) {\n\tconst handler = handlers[node.type];\n\n\tif (!handler) {\n\t\tthrow new Error(`Not implemented ${node.type}`);\n\t}\n\n\tconst result = handler(node, state);\n\n\tif (node.leadingComments) {\n\t\tresult.unshift(c(node.leadingComments.map(comment => comment.type === 'Block'\n\t\t\t? `/*${comment.value}*/${(comment ).has_trailing_newline ? `\\n${state.indent}` : ` `}`\n\t\t\t: `//${comment.value}${(comment ).has_trailing_newline ? `\\n${state.indent}` : ` `}`).join(``)));\n\t}\n\n\tif (node.trailingComments) {\n\t\tstate.comments.push(node.trailingComments[0]); // there is only ever one\n\t}\n\n\treturn result;\n}\n\nfunction c(content, node) {\n\treturn {\n\t\tcontent,\n\t\tloc: node && node.loc,\n\t\thas_newline: /\\n/.test(content)\n\t};\n}\n\nconst OPERATOR_PRECEDENCE = {\n\t'||': 2,\n\t'&&': 3,\n\t'??': 4,\n\t'|': 5,\n\t'^': 6,\n\t'&': 7,\n\t'==': 8,\n\t'!=': 8,\n\t'===': 8,\n\t'!==': 8,\n\t'<': 9,\n\t'>': 9,\n\t'<=': 9,\n\t'>=': 9,\n\tin: 9,\n\tinstanceof: 9,\n\t'<<': 10,\n\t'>>': 10,\n\t'>>>': 10,\n\t'+': 11,\n\t'-': 11,\n\t'*': 12,\n\t'%': 12,\n\t'/': 12,\n\t'**': 13,\n};\n\nconst EXPRESSIONS_PRECEDENCE = {\n\tArrayExpression: 20,\n\tTaggedTemplateExpression: 20,\n\tThisExpression: 20,\n\tIdentifier: 20,\n\tLiteral: 18,\n\tTemplateLiteral: 20,\n\tSuper: 20,\n\tSequenceExpression: 20,\n\tMemberExpression: 19,\n\tCallExpression: 19,\n\tNewExpression: 19,\n\tAwaitExpression: 17,\n\tClassExpression: 17,\n\tFunctionExpression: 17,\n\tObjectExpression: 17,\n\tUpdateExpression: 16,\n\tUnaryExpression: 15,\n\tBinaryExpression: 14,\n\tLogicalExpression: 13,\n\tConditionalExpression: 4,\n\tArrowFunctionExpression: 3,\n\tAssignmentExpression: 3,\n\tYieldExpression: 2,\n\tRestElement: 1\n};\n\nfunction needs_parens(node, parent, is_right) {\n\t// special case where logical expressions and coalesce expressions cannot be mixed,\n\t// either of them need to be wrapped with parentheses\n\tif (\n\t\tnode.type === 'LogicalExpression' &&\n\t\tparent.type === 'LogicalExpression' &&\n\t\t((parent.operator === '??' && node.operator !== '??') ||\n\t\t\t(parent.operator !== '??' && node.operator === '??'))\n\t) {\n\t\treturn true;\n\t}\n\n\tconst precedence = EXPRESSIONS_PRECEDENCE[node.type];\n\tconst parent_precedence = EXPRESSIONS_PRECEDENCE[parent.type];\n\n\tif (precedence !== parent_precedence) {\n\t\t// Different node types\n\t\treturn (\n\t\t\t(!is_right &&\n\t\t\t\tprecedence === 15 &&\n\t\t\t\tparent_precedence === 14 &&\n\t\t\t\tparent.operator === '**') ||\n\t\t\tprecedence < parent_precedence\n\t\t);\n\t}\n\n\tif (precedence !== 13 && precedence !== 14) {\n\t\t// Not a `LogicalExpression` or `BinaryExpression`\n\t\treturn false;\n\t}\n\n\tif ((node ).operator === '**' && parent.operator === '**') {\n\t\t// Exponentiation operator has right-to-left associativity\n\t\treturn !is_right;\n\t}\n\n\tif (is_right) {\n\t\t// Parenthesis are used if both operators have the same precedence\n\t\treturn (\n\t\t\tOPERATOR_PRECEDENCE[(node ).operator] <=\n\t\t\tOPERATOR_PRECEDENCE[parent.operator]\n\t\t);\n\t}\n\n\treturn (\n\t\tOPERATOR_PRECEDENCE[(node ).operator] <\n\t\tOPERATOR_PRECEDENCE[parent.operator]\n\t);\n}\n\nfunction has_call_expression(node) {\n\twhile (node) {\n\t\tif (node.type[0] === 'CallExpression') {\n\t\t\treturn true;\n\t\t} else if (node.type === 'MemberExpression') {\n\t\t\tnode = node.object;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n}\n\nconst has_newline = (chunks) => {\n\tfor (let i = 0; i < chunks.length; i += 1) {\n\t\tif (chunks[i].has_newline) return true;\n\t}\n\treturn false;\n};\n\nconst get_length = (chunks) => {\n\tlet total = 0;\n\tfor (let i = 0; i < chunks.length; i += 1) {\n\t\ttotal += chunks[i].content.length;\n\t}\n\treturn total;\n};\n\nconst sum = (a, b) => a + b;\n\nconst join = (nodes, separator) => {\n\tif (nodes.length === 0) return [];\n\tconst joined = [...nodes[0]];\n\tfor (let i = 1; i < nodes.length; i += 1) {\n\t\tjoined.push(separator, ...nodes[i] );\n\t}\n\treturn joined;\n};\n\nconst scoped = (fn) => {\n\treturn (node, state) => {\n\t\treturn fn(node, {\n\t\t\t...state,\n\t\t\tscope: state.scope_map.get(node)\n\t\t});\n\t};\n};\n\nconst deconflict = (name, names) => {\n\tconst original = name;\n\tlet i = 1;\n\n\twhile (names.has(name)) {\n\t\tname = `${original}$${i++}`;\n\t}\n\n\treturn name;\n};\n\nconst handle_body = (nodes, state) => {\n\tconst chunks = [];\n\n\tconst body = nodes.map(statement => {\n\t\tconst chunks = handle(statement, {\n\t\t\t...state,\n\t\t\tindent: state.indent\n\t\t});\n\n\t\tlet add_newline = false;\n\n\t\twhile (state.comments.length) {\n\t\t\tconst comment = state.comments.shift();\n\t\t\tconst prefix = add_newline ? `\\n${state.indent}` : ` `;\n\n\t\t\tchunks.push(c(comment.type === 'Block'\n\t\t\t\t? `${prefix}/*${comment.value}*/`\n\t\t\t\t: `${prefix}//${comment.value}`));\n\n\t\t\tadd_newline = (comment.type === 'Line');\n\t\t}\n\n\t\treturn chunks;\n\t});\n\n\tlet needed_padding = false;\n\n\tfor (let i = 0; i < body.length; i += 1) {\n\t\tconst needs_padding = has_newline(body[i]);\n\n\t\tif (i > 0) {\n\t\t\tchunks.push(\n\t\t\t\tc(needs_padding || needed_padding ? `\\n\\n${state.indent}` : `\\n${state.indent}`)\n\t\t\t);\n\t\t}\n\n\t\tchunks.push(\n\t\t\t...body[i]\n\t\t);\n\n\t\tneeded_padding = needs_padding;\n\t}\n\n\treturn chunks;\n};\n\nconst handle_var_declaration = (node, state) => {\n\tconst chunks = [c(`${node.kind} `)];\n\n\tconst declarators = node.declarations.map(d => handle(d, {\n\t\t...state,\n\t\tindent: state.indent + (node.declarations.length === 1 ? '' : '\\t')\n\t}));\n\n\tconst multiple_lines = (\n\t\tdeclarators.some(has_newline) ||\n\t\t(declarators.map(get_length).reduce(sum, 0) + (state.indent.length + declarators.length - 1) * 2) > 80\n\t);\n\n\tconst separator = c(multiple_lines ? `,\\n${state.indent}\\t` : ', ');\n\n\tif (multiple_lines) {\n\t\tchunks.push(...join(declarators, separator));\n\t} else {\n\t\tchunks.push(\n\t\t\t...join(declarators, separator)\n\t\t);\n\t}\n\n\treturn chunks;\n};\n\nconst handlers = {\n\tProgram(node, state) {\n\t\treturn handle_body(node.body, state);\n\t},\n\n\tBlockStatement: scoped((node, state) => {\n\t\treturn [\n\t\t\tc(`{\\n${state.indent}\\t`),\n\t\t\t...handle_body(node.body, { ...state, indent: state.indent + '\\t' }),\n\t\t\tc(`\\n${state.indent}}`)\n\t\t];\n\t}),\n\n\tEmptyStatement(node, state) {\n\t\treturn [];\n\t},\n\n\tParenthesizedExpression(node, state) {\n\t\treturn handle(node.expression, state);\n\t},\n\n\tExpressionStatement(node, state) {\n\t\tif (\n\t\t\tnode.expression.type === 'AssignmentExpression' &&\n\t\t\tnode.expression.left.type === 'ObjectPattern'\n\t\t) {\n\t\t\t// is an AssignmentExpression to an ObjectPattern\n\t\t\treturn [\n\t\t\t\tc('('),\n\t\t\t\t...handle(node.expression, state),\n\t\t\t\tc(');')\n\t\t\t];\n\t\t}\n\n\t\treturn [\n\t\t\t...handle(node.expression, state),\n\t\t\tc(';')\n\t\t];\n\t},\n\n\tIfStatement(node, state) {\n\t\tconst chunks = [\n\t\t\tc('if ('),\n\t\t\t...handle(node.test, state),\n\t\t\tc(') '),\n\t\t\t...handle(node.consequent, state)\n\t\t];\n\n\t\tif (node.alternate) {\n\t\t\tchunks.push(\n\t\t\t\tc(' else '),\n\t\t\t\t...handle(node.alternate, state)\n\t\t\t);\n\t\t}\n\n\t\treturn chunks;\n\t},\n\n\tLabeledStatement(node, state) {\n\t\treturn [\n\t\t\t...handle(node.label, state),\n\t\t\tc(': '),\n\t\t\t...handle(node.body, state)\n\t\t];\n\t},\n\n\tBreakStatement(node, state) {\n\t\treturn node.label\n\t\t\t? [c('break '), ...handle(node.label, state), c(';')]\n\t\t\t: [c('break;')];\n\t},\n\n\tContinueStatement(node, state) {\n\t\treturn node.label\n\t\t\t? [c('continue '), ...handle(node.label, state), c(';')]\n\t\t\t: [c('continue;')];\n\t},\n\n\tWithStatement(node, state) {\n\t\treturn [\n\t\t\tc('with ('),\n\t\t\t...handle(node.object, state),\n\t\t\tc(') '),\n\t\t\t...handle(node.body, state)\n\t\t];\n\t},\n\n\tSwitchStatement(node, state) {\n\t\tconst chunks = [\n\t\t\tc('switch ('),\n\t\t\t...handle(node.discriminant, state),\n\t\t\tc(') {')\n\t\t];\n\n\t\tnode.cases.forEach(block => {\n\t\t\tif (block.test) {\n\t\t\t\tchunks.push(\n\t\t\t\t\tc(`\\n${state.indent}\\tcase `),\n\t\t\t\t\t...handle(block.test, { ...state, indent: `${state.indent}\\t` }),\n\t\t\t\t\tc(':')\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tchunks.push(c(`\\n${state.indent}\\tdefault:`));\n\t\t\t}\n\n\t\t\tblock.consequent.forEach(statement => {\n\t\t\t\tchunks.push(\n\t\t\t\t\tc(`\\n${state.indent}\\t\\t`),\n\t\t\t\t\t...handle(statement, { ...state, indent: `${state.indent}\\t\\t` })\n\t\t\t\t);\n\t\t\t});\n\t\t});\n\n\t\tchunks.push(c(`\\n${state.indent}}`));\n\n\t\treturn chunks;\n\t},\n\n\tReturnStatement(node, state) {\n\t\tif (node.argument) {\n\t\t\treturn [\n\t\t\t\tc('return '),\n\t\t\t\t...handle(node.argument, state),\n\t\t\t\tc(';')\n\t\t\t];\n\t\t} else {\n\t\t\treturn [c('return;')];\n\t\t}\n\t},\n\n\tThrowStatement(node, state) {\n\t\treturn [\n\t\t\tc('throw '),\n\t\t\t...handle(node.argument, state),\n\t\t\tc(';')\n\t\t];\n\t},\n\n\tTryStatement(node, state) {\n\t\tconst chunks = [\n\t\t\tc('try '),\n\t\t\t...handle(node.block, state)\n\t\t];\n\n\t\tif (node.handler) {\n\t\t\tif (node.handler.param) {\n\t\t\t\tchunks.push(\n\t\t\t\t\tc(' catch('),\n\t\t\t\t\t...handle(node.handler.param, state),\n\t\t\t\t\tc(') ')\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tchunks.push(c(' catch '));\n\t\t\t}\n\n\t\t\tchunks.push(...handle(node.handler.body, state));\n\t\t}\n\n\t\tif (node.finalizer) {\n\t\t\tchunks.push(c(' finally '), ...handle(node.finalizer, state));\n\t\t}\n\n\t\treturn chunks;\n\t},\n\n\tWhileStatement(node, state) {\n\t\treturn [\n\t\t\tc('while ('),\n\t\t\t...handle(node.test, state),\n\t\t\tc(') '),\n\t\t\t...handle(node.body, state)\n\t\t];\n\t},\n\n\tDoWhileStatement(node, state) {\n\t\treturn [\n\t\t\tc('do '),\n\t\t\t...handle(node.body, state),\n\t\t\tc(' while ('),\n\t\t\t...handle(node.test, state),\n\t\t\tc(');')\n\t\t];\n\t},\n\n\tForStatement: scoped((node, state) => {\n\t\tconst chunks = [c('for (')];\n\n\t\tif (node.init) {\n\t\t\tif ((node.init ).type === 'VariableDeclaration') {\n\t\t\t\tchunks.push(...handle_var_declaration(node.init , state));\n\t\t\t} else {\n\t\t\t\tchunks.push(...handle(node.init, state));\n\t\t\t}\n\t\t}\n\n\t\tchunks.push(c('; '));\n\t\tif (node.test) chunks.push(...handle(node.test, state));\n\t\tchunks.push(c('; '));\n\t\tif (node.update) chunks.push(...handle(node.update, state));\n\n\t\tchunks.push(\n\t\t\tc(') '),\n\t\t\t...handle(node.body, state)\n\t\t);\n\n\t\treturn chunks;\n\t}),\n\n\tForInStatement: scoped((node, state) => {\n\t\tconst chunks = [\n\t\t\tc(`for ${(node ).await ? 'await ' : ''}(`)\n\t\t];\n\n\t\tif ((node.left ).type === 'VariableDeclaration') {\n\t\t\tchunks.push(...handle_var_declaration(node.left , state));\n\t\t} else {\n\t\t\tchunks.push(...handle(node.left, state));\n\t\t}\n\n\t\tchunks.push(\n\t\t\tc(node.type === 'ForInStatement' ? ` in ` : ` of `),\n\t\t\t...handle(node.right, state),\n\t\t\tc(') '),\n\t\t\t...handle(node.body, state)\n\t\t);\n\n\t\treturn chunks;\n\t}),\n\n\tDebuggerStatement(node, state) {\n\t\treturn [c('debugger', node), c(';')];\n\t},\n\n\tFunctionDeclaration: scoped((node, state) => {\n\t\tconst chunks = [];\n\n\t\tif (node.async) chunks.push(c('async '));\n\t\tchunks.push(c(node.generator ? 'function* ' : 'function '));\n\t\tif (node.id) chunks.push(...handle(node.id, state));\n\t\tchunks.push(c('('));\n\n\t\tconst params = node.params.map(p => handle(p, {\n\t\t\t...state,\n\t\t\tindent: state.indent + '\\t'\n\t\t}));\n\n\t\tconst multiple_lines = (\n\t\t\tparams.some(has_newline) ||\n\t\t\t(params.map(get_length).reduce(sum, 0) + (state.indent.length + params.length - 1) * 2) > 80\n\t\t);\n\n\t\tconst separator = c(multiple_lines ? `,\\n${state.indent}` : ', ');\n\n\t\tif (multiple_lines) {\n\t\t\tchunks.push(\n\t\t\t\tc(`\\n${state.indent}\\t`),\n\t\t\t\t...join(params, separator),\n\t\t\t\tc(`\\n${state.indent}`)\n\t\t\t);\n\t\t} else {\n\t\t\tchunks.push(\n\t\t\t\t...join(params, separator)\n\t\t\t);\n\t\t}\n\n\t\tchunks.push(\n\t\t\tc(') '),\n\t\t\t...handle(node.body, state)\n\t\t);\n\n\t\treturn chunks;\n\t}),\n\n\tVariableDeclaration(node, state) {\n\t\treturn handle_var_declaration(node, state).concat(c(';'));\n\t},\n\n\tVariableDeclarator(node, state) {\n\t\tif (node.init) {\n\t\t\treturn [\n\t\t\t\t...handle(node.id, state),\n\t\t\t\tc(' = '),\n\t\t\t\t...handle(node.init, state)\n\t\t\t];\n\t\t} else {\n\t\t\treturn handle(node.id, state);\n\t\t}\n\t},\n\n\tClassDeclaration(node, state) {\n\t\tconst chunks = [c('class ')];\n\n\t\tif (node.id) chunks.push(...handle(node.id, state), c(' '));\n\n\t\tif (node.superClass) {\n\t\t\tchunks.push(\n\t\t\t\tc('extends '),\n\t\t\t\t...handle(node.superClass, state),\n\t\t\t\tc(' ')\n\t\t\t);\n\t\t}\n\n\t\tchunks.push(...handle(node.body, state));\n\n\t\treturn chunks;\n\t},\n\n\tImportDeclaration(node, state) {\n\t\tconst chunks = [c('import ')];\n\n\t\tconst { length } = node.specifiers;\n\t\tconst source = handle(node.source, state);\n\n\t\tif (length > 0) {\n\t\t\tlet i = 0;\n\n\t\t\twhile (i < length) {\n\t\t\t\tif (i > 0) {\n\t\t\t\t\tchunks.push(c(', '));\n\t\t\t\t}\n\n\t\t\t\tconst specifier = node.specifiers[i];\n\n\t\t\t\tif (specifier.type === 'ImportDefaultSpecifier') {\n\t\t\t\t\tchunks.push(c(specifier.local.name, specifier));\n\t\t\t\t\ti += 1;\n\t\t\t\t} else if (specifier.type === 'ImportNamespaceSpecifier') {\n\t\t\t\t\tchunks.push(c('* as ' + specifier.local.name, specifier));\n\t\t\t\t\ti += 1;\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (i < length) {\n\t\t\t\t// we have named specifiers\n\t\t\t\tconst specifiers = node.specifiers.slice(i).map((specifier) => {\n\t\t\t\t\tconst name = handle(specifier.imported, state)[0];\n\t\t\t\t\tconst as = handle(specifier.local, state)[0];\n\n\t\t\t\t\tif (name.content === as.content) {\n\t\t\t\t\t\treturn [as];\n\t\t\t\t\t}\n\n\t\t\t\t\treturn [name, c(' as '), as];\n\t\t\t\t});\n\n\t\t\t\tconst width = get_length(chunks) + specifiers.map(get_length).reduce(sum, 0) + (2 * specifiers.length) + 6 + get_length(source);\n\n\t\t\t\tif (width > 80) {\n\t\t\t\t\tchunks.push(\n\t\t\t\t\t\tc(`{\\n\\t`),\n\t\t\t\t\t\t...join(specifiers, c(',\\n\\t')),\n\t\t\t\t\t\tc('\\n}')\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tchunks.push(\n\t\t\t\t\t\tc(`{ `),\n\t\t\t\t\t\t...join(specifiers, c(', ')),\n\t\t\t\t\t\tc(' }')\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tchunks.push(c(' from '));\n\t\t}\n\n\t\tchunks.push(\n\t\t\t...source,\n\t\t\tc(';')\n\t\t);\n\n\t\treturn chunks;\n\t},\n\n\tImportExpression(node, state) {\n\t\treturn [c('import('), ...handle(node.source, state), c(')')];\n\t},\n\n\tExportDefaultDeclaration(node, state) {\n\t\tconst chunks = [\n\t\t\tc(`export default `),\n\t\t\t...handle(node.declaration, state)\n\t\t];\n\n\t\tif (node.declaration.type !== 'FunctionDeclaration') {\n\t\t\tchunks.push(c(';'));\n\t\t}\n\n\t\treturn chunks;\n\t},\n\n\tExportNamedDeclaration(node, state) {\n\t\tconst chunks = [c('export ')];\n\n\t\tif (node.declaration) {\n\t\t\tchunks.push(...handle(node.declaration, state));\n\t\t} else {\n\t\t\tconst specifiers = node.specifiers.map(specifier => {\n\t\t\t\tconst name = handle(specifier.local, state)[0];\n\t\t\t\tconst as = handle(specifier.exported, state)[0];\n\n\t\t\t\tif (name.content === as.content) {\n\t\t\t\t\treturn [name];\n\t\t\t\t}\n\n\t\t\t\treturn [name, c(' as '), as];\n\t\t\t});\n\n\t\t\tconst width = 7 + specifiers.map(get_length).reduce(sum, 0) + 2 * specifiers.length;\n\n\t\t\tif (width > 80) {\n\t\t\t\tchunks.push(\n\t\t\t\t\tc('{\\n\\t'),\n\t\t\t\t\t...join(specifiers, c(',\\n\\t')),\n\t\t\t\t\tc('\\n}')\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tchunks.push(\n\t\t\t\t\tc('{ '),\n\t\t\t\t\t...join(specifiers, c(', ')),\n\t\t\t\t\tc(' }')\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (node.source) {\n\t\t\t\tchunks.push(\n\t\t\t\t\tc(' from '),\n\t\t\t\t\t...handle(node.source, state)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tchunks.push(c(';'));\n\n\t\treturn chunks;\n\t},\n\n\tExportAllDeclaration(node, state) {\n\t\treturn [\n\t\t\tc(`export * from `),\n\t\t\t...handle(node.source, state),\n\t\t\tc(`;`)\n\t\t];\n\t},\n\n\tMethodDefinition(node, state) {\n\t\tconst chunks = [];\n\n\t\tif (node.static) {\n\t\t\tchunks.push(c('static '));\n\t\t}\n\n\t\tif (node.kind === 'get' || node.kind === 'set') {\n\t\t\t// Getter or setter\n\t\t\tchunks.push(c(node.kind + ' '));\n\t\t}\n\n\t\tif (node.value.async) {\n\t\t\tchunks.push(c('async '));\n\t\t}\n\n\t\tif (node.value.generator) {\n\t\t\tchunks.push(c('*'));\n\t\t}\n\n\t\tif (node.computed) {\n\t\t\tchunks.push(\n\t\t\t\tc('['),\n\t\t\t\t...handle(node.key, state),\n\t\t\t\tc(']')\n\t\t\t);\n\t\t} else {\n\t\t\tchunks.push(...handle(node.key, state));\n\t\t}\n\n\t\tchunks.push(c('('));\n\n\t\tconst { params } = node.value;\n\t\tfor (let i = 0; i < params.length; i += 1) {\n\t\t\tchunks.push(...handle(params[i], state));\n\t\t\tif (i < params.length - 1) chunks.push(c(', '));\n\t\t}\n\n\t\tchunks.push(\n\t\t\tc(') '),\n\t\t\t...handle(node.value.body, state)\n\t\t);\n\n\t\treturn chunks;\n\t},\n\n\tArrowFunctionExpression: scoped((node, state) => {\n\t\tconst chunks = [];\n\n\t\tif (node.async) chunks.push(c('async '));\n\n\t\tif (node.params.length === 1 && node.params[0].type === 'Identifier') {\n\t\t\tchunks.push(...handle(node.params[0], state));\n\t\t} else {\n\t\t\tconst params = node.params.map(param => handle(param, {\n\t\t\t\t...state,\n\t\t\t\tindent: state.indent + '\\t'\n\t\t\t}));\n\n\t\t\tchunks.push(\n\t\t\t\tc('('),\n\t\t\t\t...join(params, c(', ')),\n\t\t\t\tc(')')\n\t\t\t);\n\t\t}\n\n\t\tchunks.push(c(' => '));\n\n\t\tif (node.body.type === 'ObjectExpression') {\n\t\t\tchunks.push(\n\t\t\t\tc('('),\n\t\t\t\t...handle(node.body, state),\n\t\t\t\tc(')')\n\t\t\t);\n\t\t} else {\n\t\t\tchunks.push(...handle(node.body, state));\n\t\t}\n\n\t\treturn chunks;\n\t}),\n\n\tThisExpression(node, state) {\n\t\treturn [c('this', node)];\n\t},\n\n\tSuper(node, state) {\n\t\treturn [c('super', node)];\n\t},\n\n\tRestElement(node, state) {\n\t\treturn [c('...'), ...handle(node.argument, state)];\n\t},\n\n\tYieldExpression(node, state) {\n\t\tif (node.argument) {\n\t\t\treturn [c(node.delegate ? `yield* ` : `yield `), ...handle(node.argument, state)];\n\t\t}\n\n\t\treturn [c(node.delegate ? `yield*` : `yield`)];\n\t},\n\n\tAwaitExpression(node, state) {\n\t\tif (node.argument) {\n\t\t\tconst precedence = EXPRESSIONS_PRECEDENCE[node.argument.type];\n\n\t\t\tif (precedence && (precedence < EXPRESSIONS_PRECEDENCE.AwaitExpression)) {\n\t\t\t\treturn [c('await ('), ...handle(node.argument, state), c(')')];\n\t\t\t} else {\n\t\t\t\treturn [c('await '), ...handle(node.argument, state)];\n\t\t\t}\n\t\t}\n\n\t\treturn [c('await')];\n\t},\n\n\tTemplateLiteral(node, state) {\n\t\tconst chunks = [c('`')];\n\n\t\tconst { quasis, expressions } = node;\n\n\t\tfor (let i = 0; i < expressions.length; i++) {\n\t\t\tchunks.push(\n\t\t\t\tc(quasis[i].value.raw),\n\t\t\t\tc('${'),\n\t\t\t\t...handle(expressions[i], state),\n\t\t\t\tc('}')\n\t\t\t);\n\t\t}\n\n\t\tchunks.push(\n\t\t\tc(quasis[quasis.length - 1].value.raw),\n\t\t\tc('`')\n\t\t);\n\n\t\treturn chunks;\n\t},\n\n\tTaggedTemplateExpression(node, state) {\n\t\treturn handle(node.tag, state).concat(handle(node.quasi, state));\n\t},\n\n\tArrayExpression(node, state) {\n\t\tconst chunks = [c('[')];\n\n\t\tconst elements = [];\n\t\tlet sparse_commas = [];\n\n\t\tfor (let i = 0; i < node.elements.length; i += 1) {\n\t\t\t// can't use map/forEach because of sparse arrays\n\t\t\tconst element = node.elements[i];\n\t\t\tif (element) {\n\t\t\t\telements.push([...sparse_commas, ...handle(element, {\n\t\t\t\t\t...state,\n\t\t\t\t\tindent: state.indent + '\\t'\n\t\t\t\t})]);\n\t\t\t\tsparse_commas = [];\n\t\t\t} else {\n\t\t\t\tsparse_commas.push(c(','));\n\t\t\t}\n\t\t}\n\n\t\tconst multiple_lines = (\n\t\t\telements.some(has_newline) ||\n\t\t\t(elements.map(get_length).reduce(sum, 0) + (state.indent.length + elements.length - 1) * 2) > 80\n\t\t);\n\n\t\tif (multiple_lines) {\n\t\t\tchunks.push(\n\t\t\t\tc(`\\n${state.indent}\\t`),\n\t\t\t\t...join(elements, c(`,\\n${state.indent}\\t`)),\n\t\t\t\tc(`\\n${state.indent}`),\n\t\t\t\t...sparse_commas\n\t\t\t);\n\t\t} else {\n\t\t\tchunks.push(...join(elements, c(', ')), ...sparse_commas);\n\t\t}\n\n\t\tchunks.push(c(']'));\n\n\t\treturn chunks;\n\t},\n\n\tObjectExpression(node, state) {\n\t\tif (node.properties.length === 0) {\n\t\t\treturn [c('{}')];\n\t\t}\n\n\t\tlet has_inline_comment = false;\n\n\t\tconst chunks = [];\n\t\tconst separator = c(', ');\n\n\t\tnode.properties.forEach((p, i) => {\n\t\t\tchunks.push(...handle(p, {\n\t\t\t\t...state,\n\t\t\t\tindent: state.indent + '\\t'\n\t\t\t}));\n\n\t\t\tif (state.comments.length) {\n\t\t\t\t// TODO generalise this, so it works with ArrayExpressions and other things.\n\t\t\t\t// At present, stuff will just get appended to the closest statement/declaration\n\t\t\t\tchunks.push(c(', '));\n\n\t\t\t\twhile (state.comments.length) {\n\t\t\t\t\tconst comment = state.comments.shift();\n\n\t\t\t\t\tchunks.push(c(comment.type === 'Block'\n\t\t\t\t\t\t? `/*${comment.value}*/\\n${state.indent}\\t`\n\t\t\t\t\t\t: `//${comment.value}\\n${state.indent}\\t`));\n\n\t\t\t\t\tif (comment.type === 'Line') {\n\t\t\t\t\t\thas_inline_comment = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (i < node.properties.length - 1) {\n\t\t\t\t\tchunks.push(separator);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tconst multiple_lines = (\n\t\t\thas_inline_comment ||\n\t\t\thas_newline(chunks) ||\n\t\t\tget_length(chunks) > 40\n\t\t);\n\n\t\tif (multiple_lines) {\n\t\t\tseparator.content = `,\\n${state.indent}\\t`;\n\t\t}\n\n\t\treturn [\n\t\t\tc(multiple_lines ? `{\\n${state.indent}\\t` : `{ `),\n\t\t\t...chunks,\n\t\t\tc(multiple_lines ? `\\n${state.indent}}` : ` }`)\n\t\t];\n\t},\n\n\tProperty(node, state) {\n\t\tconst value = handle(node.value, state);\n\n\t\tif (node.key === node.value) {\n\t\t\treturn value;\n\t\t}\n\n\t\t// special case\n\t\tif (\n\t\t\t!node.computed &&\n\t\t\tnode.value.type === 'AssignmentPattern' &&\n\t\t\tnode.value.left.type === 'Identifier' &&\n\t\t\tnode.value.left.name === (node.key ).name\n\t\t) {\n\t\t\treturn value;\n\t\t}\n\n\t\tif (node.value.type === 'Identifier' && (\n\t\t\t(node.key.type === 'Identifier' && node.key.name === value[0].content) ||\n\t\t\t(node.key.type === 'Literal' && node.key.value === value[0].content)\n\t\t)) {\n\t\t\treturn value;\n\t\t}\n\n\t\tconst key = handle(node.key, state);\n\n\t\tif (node.value.type === 'FunctionExpression' && !node.value.id) {\n\t\t\tstate = {\n\t\t\t\t...state,\n\t\t\t\tscope: state.scope_map.get(node.value)\n\t\t\t};\n\n\t\t\tconst chunks = node.kind !== 'init'\n\t\t\t\t? [c(`${node.kind} `)]\n\t\t\t\t: [];\n\n\t\t\tif (node.value.async) {\n\t\t\t\tchunks.push(c('async '));\n\t\t\t}\n\t\t\tif (node.value.generator) {\n\t\t\t\tchunks.push(c('*'));\n\t\t\t}\n\n\t\t\tchunks.push(\n\t\t\t\t...(node.computed ? [c('['), ...key, c(']')] : key),\n\t\t\t\tc('('),\n\t\t\t\t...join((node.value ).params.map(param => handle(param, state)), c(', ')),\n\t\t\t\tc(') '),\n\t\t\t\t...handle((node.value ).body, state)\n\t\t\t);\n\n\t\t\treturn chunks;\n\t\t}\n\n\t\tif (node.computed) {\n\t\t\treturn [\n\t\t\t\tc('['),\n\t\t\t\t...key,\n\t\t\t\tc(']: '),\n\t\t\t\t...value\n\t\t\t];\n\t\t}\n\n\t\treturn [\n\t\t\t...key,\n\t\t\tc(': '),\n\t\t\t...value\n\t\t];\n\t},\n\n\tObjectPattern(node, state) {\n\t\tconst chunks = [c('{ ')];\n\n\t\tfor (let i = 0; i < node.properties.length; i += 1) {\n\t\t\tchunks.push(...handle(node.properties[i], state));\n\t\t\tif (i < node.properties.length - 1) chunks.push(c(', '));\n\t\t}\n\n\t\tchunks.push(c(' }'));\n\n\t\treturn chunks;\n\t},\n\n\tSequenceExpression(node, state) {\n\t\tconst expressions = node.expressions.map(e => handle(e, state));\n\n\t\treturn [\n\t\t\tc('('),\n\t\t\t...join(expressions, c(', ')),\n\t\t\tc(')')\n\t\t];\n\t},\n\n\tUnaryExpression(node, state) {\n\t\tconst chunks = [c(node.operator)];\n\n\t\tif (node.operator.length > 1) {\n\t\t\tchunks.push(c(' '));\n\t\t}\n\n\t\tif (\n\t\t\tEXPRESSIONS_PRECEDENCE[node.argument.type] <\n\t\t\tEXPRESSIONS_PRECEDENCE.UnaryExpression\n\t\t) {\n\t\t\tchunks.push(\n\t\t\t\tc('('),\n\t\t\t\t...handle(node.argument, state),\n\t\t\t\tc(')')\n\t\t\t);\n\t\t} else {\n\t\t\tchunks.push(...handle(node.argument, state));\n\t\t}\n\n\t\treturn chunks;\n\t},\n\n\tUpdateExpression(node, state) {\n\t\treturn node.prefix\n\t\t\t? [c(node.operator), ...handle(node.argument, state)]\n\t\t\t: [...handle(node.argument, state), c(node.operator)];\n\t},\n\n\tAssignmentExpression(node, state) {\n\t\treturn [\n\t\t\t...handle(node.left, state),\n\t\t\tc(` ${node.operator || '='} `),\n\t\t\t...handle(node.right, state)\n\t\t];\n\t},\n\n\tBinaryExpression(node, state) {\n\t\tconst chunks = [];\n\n\t\t// TODO\n\t\t// const is_in = node.operator === 'in';\n\t\t// if (is_in) {\n\t\t// \t// Avoids confusion in `for` loops initializers\n\t\t// \tchunks.push(c('('));\n\t\t// }\n\n\t\tif (needs_parens(node.left, node, false)) {\n\t\t\tchunks.push(\n\t\t\t\tc('('),\n\t\t\t\t...handle(node.left, state),\n\t\t\t\tc(')')\n\t\t\t);\n\t\t} else {\n\t\t\tchunks.push(...handle(node.left, state));\n\t\t}\n\n\t\tchunks.push(c(` ${node.operator} `));\n\n\t\tif (needs_parens(node.right, node, true)) {\n\t\t\tchunks.push(\n\t\t\t\tc('('),\n\t\t\t\t...handle(node.right, state),\n\t\t\t\tc(')')\n\t\t\t);\n\t\t} else {\n\t\t\tchunks.push(...handle(node.right, state));\n\t\t}\n\n\t\treturn chunks;\n\t},\n\n\tConditionalExpression(node, state) {\n\t\tconst chunks = [];\n\n\t\tif (\n\t\t\tEXPRESSIONS_PRECEDENCE[node.test.type] >\n\t\t\tEXPRESSIONS_PRECEDENCE.ConditionalExpression\n\t\t) {\n\t\t\tchunks.push(...handle(node.test, state));\n\t\t} else {\n\t\t\tchunks.push(\n\t\t\t\tc('('),\n\t\t\t\t...handle(node.test, state),\n\t\t\t\tc(')')\n\t\t\t);\n\t\t}\n\n\t\tconst child_state = { ...state, indent: state.indent + '\\t' };\n\n\t\tconst consequent = handle(node.consequent, child_state);\n\t\tconst alternate = handle(node.alternate, child_state);\n\n\t\tconst multiple_lines = (\n\t\t\thas_newline(consequent) || has_newline(alternate) ||\n\t\t\tget_length(chunks) + get_length(consequent) + get_length(alternate) > 50\n\t\t);\n\n\t\tif (multiple_lines) {\n\t\t\tchunks.push(\n\t\t\t\tc(`\\n${state.indent}? `),\n\t\t\t\t...consequent,\n\t\t\t\tc(`\\n${state.indent}: `),\n\t\t\t\t...alternate\n\t\t\t);\n\t\t} else {\n\t\t\tchunks.push(\n\t\t\t\tc(` ? `),\n\t\t\t\t...consequent,\n\t\t\t\tc(` : `),\n\t\t\t\t...alternate\n\t\t\t);\n\t\t}\n\n\t\treturn chunks;\n\t},\n\n\tNewExpression(node, state) {\n\t\tconst chunks = [c('new ')];\n\n\t\tif (\n\t\t\tEXPRESSIONS_PRECEDENCE[node.callee.type] <\n\t\t\tEXPRESSIONS_PRECEDENCE.CallExpression || has_call_expression(node.callee)\n\t\t) {\n\t\t\tchunks.push(\n\t\t\t\tc('('),\n\t\t\t\t...handle(node.callee, state),\n\t\t\t\tc(')')\n\t\t\t);\n\t\t} else {\n\t\t\tchunks.push(...handle(node.callee, state));\n\t\t}\n\n\t\t// TODO this is copied from CallExpression — DRY it out\n\t\tconst args = node.arguments.map(arg => handle(arg, {\n\t\t\t...state,\n\t\t\tindent: state.indent + '\\t'\n\t\t}));\n\n\t\tconst separator = args.some(has_newline) // TODO or length exceeds 80\n\t\t\t? c(',\\n' + state.indent)\n\t\t\t: c(', ');\n\n\t\tchunks.push(\n\t\t\tc('('),\n\t\t\t...join(args, separator) ,\n\t\t\tc(')')\n\t\t);\n\n\t\treturn chunks;\n\t},\n\n\tChainExpression(node, state) {\n\t\treturn handle(node.expression, state);\n\t},\n\n\tCallExpression(node, state) {\n\t\tconst chunks = [];\n\n\t\tif (\n\t\t\tEXPRESSIONS_PRECEDENCE[node.callee.type] <\n\t\t\tEXPRESSIONS_PRECEDENCE.CallExpression\n\t\t) {\n\t\t\tchunks.push(\n\t\t\t\tc('('),\n\t\t\t\t...handle(node.callee, state),\n\t\t\t\tc(')')\n\t\t\t);\n\t\t} else {\n\t\t\tchunks.push(...handle(node.callee, state));\n\t\t}\n\n\t\tif ((node ).optional) {\n\t\t\tchunks.push(c('?.'));\n\t\t}\n\n\t\tconst args = node.arguments.map(arg => handle(arg, state));\n\n\t\tconst multiple_lines = args.slice(0, -1).some(has_newline); // TODO or length exceeds 80\n\n\t\tif (multiple_lines) {\n\t\t\t// need to handle args again. TODO find alternative approach?\n\t\t\tconst args = node.arguments.map(arg => handle(arg, {\n\t\t\t\t...state,\n\t\t\t\tindent: `${state.indent}\\t`\n\t\t\t}));\n\n\t\t\tchunks.push(\n\t\t\t\tc(`(\\n${state.indent}\\t`),\n\t\t\t\t...join(args, c(`,\\n${state.indent}\\t`)),\n\t\t\t\tc(`\\n${state.indent})`)\n\t\t\t);\n\t\t} else {\n\t\t\tchunks.push(\n\t\t\t\tc('('),\n\t\t\t\t...join(args, c(', ')),\n\t\t\t\tc(')')\n\t\t\t);\n\t\t}\n\n\t\treturn chunks;\n\t},\n\n\tMemberExpression(node, state) {\n\t\tconst chunks = [];\n\n\t\tif (EXPRESSIONS_PRECEDENCE[node.object.type] < EXPRESSIONS_PRECEDENCE.MemberExpression) {\n\t\t\tchunks.push(\n\t\t\t\tc('('),\n\t\t\t\t...handle(node.object, state),\n\t\t\t\tc(')')\n\t\t\t);\n\t\t} else {\n\t\t\tchunks.push(...handle(node.object, state));\n\t\t}\n\n\t\tif (node.computed) {\n\t\t\tif (node.optional) {\n\t\t\t\tchunks.push(c('?.'));\n\t\t\t}\n\t\t\tchunks.push(\n\t\t\t\tc('['),\n\t\t\t\t...handle(node.property, state),\n\t\t\t\tc(']')\n\t\t\t);\n\t\t} else {\n\t\t\tchunks.push(\n\t\t\t\tc(node.optional ? '?.' : '.'),\n\t\t\t\t...handle(node.property, state)\n\t\t\t);\n\t\t}\n\n\t\treturn chunks;\n\t},\n\n\tMetaProperty(node, state) {\n\t\treturn [...handle(node.meta, state), c('.'), ...handle(node.property, state)];\n\t},\n\n\tIdentifier(node, state) {\n\t\tlet name = node.name;\n\n\t\tif (name[0] === '@') {\n\t\t\tname = state.getName(name.slice(1));\n\t\t} else if (node.name[0] === '#') {\n\t\t\tconst owner = state.scope.find_owner(node.name);\n\n\t\t\tif (!owner) {\n\t\t\t\tthrow new Error(`Could not find owner for node`);\n\t\t\t}\n\n\t\t\tif (!state.deconflicted.has(owner)) {\n\t\t\t\tstate.deconflicted.set(owner, new Map());\n\t\t\t}\n\n\t\t\tconst deconflict_map = state.deconflicted.get(owner);\n\n\t\t\tif (!deconflict_map.has(node.name)) {\n\t\t\t\tdeconflict_map.set(node.name, deconflict(node.name.slice(1), owner.references));\n\t\t\t}\n\n\t\t\tname = deconflict_map.get(node.name);\n\t\t}\n\n\t\treturn [c(name, node)];\n\t},\n\n\tLiteral(node, state) {\n\t\tif (typeof node.value === 'string') {\n\t\t\treturn [\n\t\t\t\t// TODO do we need to handle weird unicode characters somehow?\n\t\t\t\t// str.replace(/\\\\u(\\d{4})/g, (m, n) => String.fromCharCode(+n))\n\t\t\t\tc(JSON.stringify(node.value).replace(re, (_m, _i, at, hash, name) => {\n\t\t\t\t\tif (at)\treturn '@' + name;\n\t\t\t\t\tif (hash) return '#' + name;\n\t\t\t\t\tthrow new Error(`this shouldn't happen`);\n\t\t\t\t}), node)\n\t\t\t];\n\t\t}\n\n\t\tconst { regex } = node ; // TODO is this right?\n\t\tif (regex) {\n\t\t\treturn [c(`/${regex.pattern}/${regex.flags}`, node)];\n\t\t}\n\n\t\treturn [c(String(node.value), node)];\n\t}\n};\n\nhandlers.ForOfStatement = handlers.ForInStatement;\nhandlers.FunctionExpression = handlers.FunctionDeclaration;\nhandlers.ClassExpression = handlers.ClassDeclaration;\nhandlers.ClassBody = handlers.BlockStatement;\nhandlers.SpreadElement = handlers.RestElement;\nhandlers.ArrayPattern = handlers.ArrayExpression;\nhandlers.LogicalExpression = handlers.BinaryExpression;\nhandlers.AssignmentPattern = handlers.AssignmentExpression;\n\nlet btoa = () => {\n\tthrow new Error('Unsupported environment: `window.btoa` or `Buffer` should be supported.');\n};\nif (typeof window !== 'undefined' && typeof window.btoa === 'function') {\n\tbtoa = (str) => window.btoa(unescape(encodeURIComponent(str)));\n} else if (typeof Buffer === 'function') {\n\tbtoa = (str) => Buffer.from(str, 'utf-8').toString('base64');\n}\n\n\n\n\n\n\n\n\nfunction print(node, opts = {}) {\n\tif (Array.isArray(node)) {\n\t\treturn print({\n\t\t\ttype: 'Program',\n\t\t\tbody: node\n\t\t} , opts);\n\t}\n\n\tconst {\n\t\tgetName = (x) => {\n\t\t\tthrow new Error(`Unhandled sigil @${x}`);\n\t\t}\n\t} = opts;\n\n\tlet { map: scope_map, scope } = analyze(node);\n\tconst deconflicted = new WeakMap();\n\n\tconst chunks = handle(node, {\n\t\tindent: '',\n\t\tgetName,\n\t\tscope,\n\t\tscope_map,\n\t\tdeconflicted,\n\t\tcomments: []\n\t});\n\n\t\n\n\tlet code = '';\n\tlet mappings = [];\n\tlet current_line = [];\n\tlet current_column = 0;\n\n\tfor (let i = 0; i < chunks.length; i += 1) {\n\t\tconst chunk = chunks[i];\n\n\t\tcode += chunk.content;\n\n\t\tif (chunk.loc) {\n\t\t\tcurrent_line.push([\n\t\t\t\tcurrent_column,\n\t\t\t\t0, // source index is always zero\n\t\t\t\tchunk.loc.start.line - 1,\n\t\t\t\tchunk.loc.start.column,\n\t\t\t]);\n\t\t}\n\n\t\tfor (let i = 0; i < chunk.content.length; i += 1) {\n\t\t\tif (chunk.content[i] === '\\n') {\n\t\t\t\tmappings.push(current_line);\n\t\t\t\tcurrent_line = [];\n\t\t\t\tcurrent_column = 0;\n\t\t\t} else {\n\t\t\t\tcurrent_column += 1;\n\t\t\t}\n\t\t}\n\n\t\tif (chunk.loc) {\n\t\t\tcurrent_line.push([\n\t\t\t\tcurrent_column,\n\t\t\t\t0, // source index is always zero\n\t\t\t\tchunk.loc.end.line - 1,\n\t\t\t\tchunk.loc.end.column,\n\t\t\t]);\n\t\t}\n\t}\n\n\tmappings.push(current_line);\n\n\tconst map = {\n\t\tversion: 3,\n\t\tnames: [] ,\n\t\tsources: [opts.sourceMapSource || null],\n\t\tsourcesContent: [opts.sourceMapContent || null],\n\t\tmappings: encode(mappings)\n\t};\n\n\tObject.defineProperties(map, {\n\t\ttoString: {\n\t\t\tenumerable: false,\n\t\t\tvalue: function toString() {\n\t\t\t\treturn JSON.stringify(this);\n\t\t\t}\n\t\t},\n\t\ttoUrl: {\n\t\t\tenumerable: false,\n\t\t\tvalue: function toUrl() {\n\t\t\t\treturn 'data:application/json;charset=utf-8;base64,' + btoa(this.toString());\n\t\t\t}\n\t\t}\n\t});\n\n\treturn {\n\t\tcode,\n\t\tmap\n\t};\n}\n\nconst sigils = {\n\t'@': 'AT',\n\t'#': 'HASH'\n};\n\nconst join$1 = (strings) => {\n\tlet str = strings[0];\n\tfor (let i = 1; i < strings.length; i += 1) {\n\t\tstr += `_${id}_${i - 1}_${strings[i]}`;\n\t}\n\treturn str.replace(/([@#])(\\w+)/g, (_m, sigil, name) => `_${id}_${sigils[sigil]}_${name}`);\n};\n\nconst flatten_body = (array, target) => {\n\tfor (let i = 0; i < array.length; i += 1) {\n\t\tconst statement = array[i];\n\t\tif (Array.isArray(statement)) {\n\t\t\tflatten_body(statement, target);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (statement.type === 'ExpressionStatement') {\n\t\t\tif (statement.expression === EMPTY) continue;\n\n\t\t\tif (Array.isArray(statement.expression)) {\n\t\t\t\t// TODO this is hacktacular\n\t\t\t\tlet node = statement.expression[0];\n\t\t\t\twhile (Array.isArray(node)) node = node[0];\n\t\t\t\tif (node) node.leadingComments = statement.leadingComments;\n\n\t\t\t\tflatten_body(statement.expression, target);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (/(Expression|Literal)$/.test(statement.expression.type)) {\n\t\t\t\ttarget.push(statement);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (statement.leadingComments) statement.expression.leadingComments = statement.leadingComments;\n\t\t\tif (statement.trailingComments) statement.expression.trailingComments = statement.trailingComments;\n\n\t\t\ttarget.push(statement.expression);\n\t\t\tcontinue;\n\t\t}\n\n\t\ttarget.push(statement);\n\t}\n\n\treturn target;\n};\n\nconst flatten_properties = (array, target) => {\n\tfor (let i = 0; i < array.length; i += 1) {\n\t\tconst property = array[i];\n\n\t\tif (property.value === EMPTY) continue;\n\n\t\tif (property.key === property.value && Array.isArray(property.key)) {\n\t\t\tflatten_properties(property.key, target);\n\t\t\tcontinue;\n\t\t}\n\n\t\ttarget.push(property);\n\t}\n\n\treturn target;\n};\n\nconst flatten = (nodes, target) => {\n\tfor (let i = 0; i < nodes.length; i += 1) {\n\t\tconst node = nodes[i];\n\n\t\tif (node === EMPTY) continue;\n\n\t\tif (Array.isArray(node)) {\n\t\t\tflatten(node, target);\n\t\t\tcontinue;\n\t\t}\n\n\t\ttarget.push(node);\n\t}\n\n\treturn target;\n};\n\nconst EMPTY = { type: 'Empty' };\n\nconst acorn_opts = (comments, raw) => {\n\tconst { onComment } = get_comment_handlers(comments, raw);\n\treturn {\n\t\tecmaVersion: 2020,\n\t\tsourceType: 'module',\n\t\tallowAwaitOutsideFunction: true,\n\t\tallowImportExportEverywhere: true,\n\t\tallowReturnOutsideFunction: true,\n\t\tonComment\n\t} ;\n};\n\nconst inject = (raw, node, values, comments) => {\n\tcomments.forEach(comment => {\n\t\tcomment.value = comment.value.replace(re, (m, i) => +i in values ? values[+i] : m);\n\t});\n\n\tconst { enter, leave } = get_comment_handlers(comments, raw);\n\n\twalk(node, {\n\t\tenter,\n\n\t\tleave(node, parent, key, index) {\n\t\t\tif (node.type === 'Identifier') {\n\t\t\t\tre.lastIndex = 0;\n\t\t\t\tconst match = re.exec(node.name);\n\n\t\t\t\tif (match) {\n\t\t\t\t\tif (match[1]) {\n\t\t\t\t\t\tif (+match[1] in values) {\n\t\t\t\t\t\t\tlet value = values[+match[1]];\n\n\t\t\t\t\t\t\tif (typeof value === 'string') {\n\t\t\t\t\t\t\t\tvalue = { type: 'Identifier', name: value, leadingComments: node.leadingComments, trailingComments: node.trailingComments };\n\t\t\t\t\t\t\t} else if (typeof value === 'number') {\n\t\t\t\t\t\t\t\tvalue = { type: 'Literal', value, leadingComments: node.leadingComments, trailingComments: node.trailingComments };\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthis.replace(value || EMPTY);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnode.name = `${match[2] ? `@` : `#`}${match[4]}`;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (node.type === 'Literal') {\n\t\t\t\tif (typeof node.value === 'string') {\n\t\t\t\t\tre.lastIndex = 0;\n\t\t\t\t\tnode.value = node.value.replace(re, (m, i) => +i in values ? values[+i] : m);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (node.type === 'TemplateElement') {\n\t\t\t\tre.lastIndex = 0;\n\t\t\t\tnode.value.raw = (node.value.raw ).replace(re, (m, i) => +i in values ? values[+i] : m);\n\t\t\t}\n\n\t\t\tif (node.type === 'Program' || node.type === 'BlockStatement') {\n\t\t\t\tnode.body = flatten_body(node.body, []);\n\t\t\t}\n\n\t\t\tif (node.type === 'ObjectExpression' || node.type === 'ObjectPattern') {\n\t\t\t\tnode.properties = flatten_properties(node.properties, []);\n\t\t\t}\n\n\t\t\tif (node.type === 'ArrayExpression' || node.type === 'ArrayPattern') {\n\t\t\t\tnode.elements = flatten(node.elements, []);\n\t\t\t}\n\n\t\t\tif (node.type === 'FunctionExpression' || node.type === 'FunctionDeclaration' || node.type === 'ArrowFunctionExpression') {\n\t\t\t\tnode.params = flatten(node.params, []);\n\t\t\t}\n\n\t\t\tif (node.type === 'CallExpression' || node.type === 'NewExpression') {\n\t\t\t\tnode.arguments = flatten(node.arguments, []);\n\t\t\t}\n\n\t\t\tif (node.type === 'ImportDeclaration' || node.type === 'ExportNamedDeclaration') {\n\t\t\t\tnode.specifiers = flatten(node.specifiers, []);\n\t\t\t}\n\n\t\t\tif (node.type === 'ForStatement') {\n\t\t\t\tnode.init = node.init === EMPTY ? null : node.init;\n\t\t\t\tnode.test = node.test === EMPTY ? null : node.test;\n\t\t\t\tnode.update = node.update === EMPTY ? null : node.update;\n\t\t\t}\n\n\t\t\tleave(node);\n\t\t}\n\t});\n};\n\nfunction b(strings, ...values) {\n\tconst str = join$1(strings);\n\tconst comments = [];\n\n\ttry {\n\t\tconst ast = parse$1(str, acorn_opts(comments, str));\n\n\t\tinject(str, ast, values, comments);\n\n\t\treturn ast.body;\n\t} catch (err) {\n\t\thandle_error(str, err);\n\t}\n}\n\nfunction x(strings, ...values) {\n\tconst str = join$1(strings);\n\tconst comments = [];\n\n\ttry {\n\t\tconst expression = parseExpressionAt$1(str, 0, acorn_opts(comments, str)) ;\n\t\tconst match = /\\S+/.exec(str.slice((expression ).end));\n\t\tif (match) {\n\t\t\tthrow new Error(`Unexpected token '${match[0]}'`);\n\t\t}\n\n\t\tinject(str, expression, values, comments);\n\n\t\treturn expression;\n\t} catch (err) {\n\t\thandle_error(str, err);\n\t}\n}\n\nfunction p(strings, ...values) {\n\tconst str = `{${join$1(strings)}}`;\n\tconst comments = [];\n\n\ttry {\n\t\tconst expression = parseExpressionAt$1(str, 0, acorn_opts(comments, str)) ;\n\n\t\tinject(str, expression, values, comments);\n\n\t\treturn expression.properties[0];\n\t} catch (err) {\n\t\thandle_error(str, err);\n\t}\n}\n\nfunction handle_error(str, err) {\n\t// TODO location/code frame\n\n\tre.lastIndex = 0;\n\n\tstr = str.replace(re, (m, i, at, hash, name) => {\n\t\tif (at) return `@${name}`;\n\t\tif (hash) return `#${name}`;\n\n\t\treturn '${...}';\n\t});\n\n\tconsole.log(`failed to parse:\\n${str}`);\n\tthrow err;\n}\n\nconst parse = (source, opts) => {\n\tconst comments = [];\n\tconst { onComment, enter, leave } = get_comment_handlers(comments, source);\n\tconst ast = parse$1(source, { onComment, ...opts });\n\twalk(ast , { enter, leave });\n\treturn ast;\n};\n\nconst parseExpressionAt = (source, index, opts) => {\n\tconst comments = [];\n\tconst { onComment, enter, leave } = get_comment_handlers(comments, source);\n\tconst ast = parseExpressionAt$1(source, index, { onComment, ...opts });\n\twalk(ast , { enter, leave });\n\treturn ast;\n};\n\nexport { b, p, parse, parseExpressionAt, print, x };\n","import { Node } from 'acorn';\nimport * as code_red from 'code-red';\n\nexport const parse = (source: string): Node => code_red.parse(source, {\n\tsourceType: 'module',\n\tecmaVersion: 12,\n\tlocations: true\n});\n\nexport const parse_expression_at = (source: string, index: number): Node => code_red.parseExpressionAt(source, index, {\n\tsourceType: 'module',\n\tecmaVersion: 12,\n\tlocations: true\n});\n","export const whitespace = /[ \\t\\r\\n]/;\n\nexport const dimensions = /^(?:offset|client)(?:Width|Height)$/;\n","import { parse_expression_at } from '../acorn';\nimport { Parser } from '../index';\nimport { Node } from 'estree';\nimport { whitespace } from '../../utils/patterns';\n\nexport default function read_expression(parser: Parser): Node {\n\ttry {\n\t\tconst node = parse_expression_at(parser.template, parser.index);\n\n\t\tlet num_parens = 0;\n\n\t\tfor (let i = parser.index; i < node.start; i += 1) {\n\t\t\tif (parser.template[i] === '(') num_parens += 1;\n\t\t}\n\n\t\tlet index = node.end;\n\t\twhile (num_parens > 0) {\n\t\t\tconst char = parser.template[index];\n\n\t\t\tif (char === ')') {\n\t\t\t\tnum_parens -= 1;\n\t\t\t} else if (!whitespace.test(char)) {\n\t\t\t\tparser.error({\n\t\t\t\t\tcode: 'unexpected-token',\n\t\t\t\t\tmessage: 'Expected )'\n\t\t\t\t}, index);\n\t\t\t}\n\n\t\t\tindex += 1;\n\t\t}\n\n\t\tparser.index = index;\n\n\t\treturn node as Node;\n\t} catch (err) {\n\t\tparser.acorn_error(err);\n\t}\n}\n","import * as acorn from '../acorn';\nimport { Parser } from '../index';\nimport { Script } from '../../interfaces';\nimport { Node, Program } from 'estree';\n\nconst script_closing_tag = '</script>';\n\nfunction get_context(parser: Parser, attributes: any[], start: number): string {\n\tconst context = attributes.find(attribute => attribute.name === 'context');\n\tif (!context) return 'default';\n\n\tif (context.value.length !== 1 || context.value[0].type !== 'Text') {\n\t\tparser.error({\n\t\t\tcode: 'invalid-script',\n\t\t\tmessage: 'context attribute must be static'\n\t\t}, start);\n\t}\n\n\tconst value = context.value[0].data;\n\n\tif (value !== 'module') {\n\t\tparser.error({\n\t\t\tcode: 'invalid-script',\n\t\t\tmessage: 'If the context attribute is supplied, its value must be \"module\"'\n\t\t}, context.start);\n\t}\n\n\treturn value;\n}\n\nexport default function read_script(parser: Parser, start: number, attributes: Node[]): Script {\n\tconst script_start = parser.index;\n\tconst script_end = parser.template.indexOf(script_closing_tag, script_start);\n\n\tif (script_end === -1) {\n\t\tparser.error({\n\t\t\tcode: 'unclosed-script',\n\t\t\tmessage: '<script> must have a closing tag'\n\t\t});\n\t}\n\n\tconst source = parser.template.slice(0, script_start).replace(/[^\\n]/g, ' ') +\n\t\tparser.template.slice(script_start, script_end);\n\tparser.index = script_end + script_closing_tag.length;\n\n\tlet ast: Program;\n\n\ttry {\n\t\tast = acorn.parse(source) as any as Program;\n\t} catch (err) {\n\t\tparser.acorn_error(err);\n\t}\n\n\t// TODO is this necessary?\n\t(ast as any).start = script_start;\n\n\treturn {\n\t\ttype: 'Script',\n\t\tstart,\n\t\tend: parser.index,\n\t\tcontext: get_context(parser, attributes, start),\n\t\tcontent: ast\n\t};\n}\n","'use strict';\n\nvar MAX_LINE_LENGTH = 100;\nvar OFFSET_CORRECTION = 60;\nvar TAB_REPLACEMENT = ' ';\n\nfunction sourceFragment(error, extraLines) {\n function processLines(start, end) {\n return lines.slice(start, end).map(function(line, idx) {\n var num = String(start + idx + 1);\n\n while (num.length < maxNumLength) {\n num = ' ' + num;\n }\n\n return num + ' |' + line;\n }).join('\\n');\n }\n\n var lines = error.source.split(/\\n|\\r\\n?|\\f/);\n var line = error.line;\n var column = error.column;\n var startLine = Math.max(1, line - extraLines) - 1;\n var endLine = Math.min(line + extraLines, lines.length + 1);\n var maxNumLength = Math.max(4, String(endLine).length) + 1;\n var cutLeft = 0;\n\n // correct column according to replaced tab before column\n column += (TAB_REPLACEMENT.length - 1) * (lines[line - 1].substr(0, column - 1).match(/\\t/g) || []).length;\n\n if (column > MAX_LINE_LENGTH) {\n cutLeft = column - OFFSET_CORRECTION + 3;\n column = OFFSET_CORRECTION - 2;\n }\n\n for (var i = startLine; i <= endLine; i++) {\n if (i >= 0 && i < lines.length) {\n lines[i] = lines[i].replace(/\\t/g, TAB_REPLACEMENT);\n lines[i] =\n (cutLeft > 0 && lines[i].length > cutLeft ? '\\u2026' : '') +\n lines[i].substr(cutLeft, MAX_LINE_LENGTH - 2) +\n (lines[i].length > cutLeft + MAX_LINE_LENGTH - 1 ? '\\u2026' : '');\n }\n }\n\n return [\n processLines(startLine, line),\n new Array(column + maxNumLength + 2).join('-') + '^',\n processLines(line, endLine)\n ].join('\\n');\n}\n\nvar CssSyntaxError = function(message, source, offset, line, column) {\n // some VMs prevent setting line/column otherwise (iOS Safari 10 even throw an exception)\n var error = Object.create(SyntaxError.prototype);\n\n error.name = 'CssSyntaxError';\n error.message = message;\n error.stack = (new Error().stack || '').replace(/^.+\\n/, error.name + ': ' + error.message + '\\n');\n error.source = source;\n error.offset = offset;\n error.line = line;\n error.column = column;\n\n error.sourceFragment = function(extraLines) {\n return sourceFragment(error, isNaN(extraLines) ? 0 : extraLines);\n };\n Object.defineProperty(error, 'formattedMessage', {\n get: function() {\n return (\n 'Parse error: ' + error.message + '\\n' +\n sourceFragment(error, 2)\n );\n }\n });\n\n // for backward capability\n error.parseError = {\n offset: offset,\n line: line,\n column: column\n };\n\n return error;\n};\n\nmodule.exports = CssSyntaxError;\n","'use strict';\n\n// token types (note: value shouldn't intersect with used char codes)\nvar WHITESPACE = 1;\nvar IDENTIFIER = 2;\nvar NUMBER = 3;\nvar STRING = 4;\nvar COMMENT = 5;\nvar PUNCTUATOR = 6;\nvar CDO = 7;\nvar CDC = 8;\nvar ATRULE = 14;\nvar FUNCTION = 15;\nvar URL = 16;\nvar RAW = 17;\n\nvar TAB = 9;\nvar N = 10;\nvar F = 12;\nvar R = 13;\nvar SPACE = 32;\n\nvar TYPE = {\n WhiteSpace: WHITESPACE,\n Identifier: IDENTIFIER,\n Number: NUMBER,\n String: STRING,\n Comment: COMMENT,\n Punctuator: PUNCTUATOR,\n CDO: CDO,\n CDC: CDC,\n Atrule: ATRULE,\n Function: FUNCTION,\n Url: URL,\n Raw: RAW,\n\n ExclamationMark: 33, // !\n QuotationMark: 34, // \"\n NumberSign: 35, // #\n DollarSign: 36, // $\n PercentSign: 37, // %\n Ampersand: 38, // &\n Apostrophe: 39, // '\n LeftParenthesis: 40, // (\n RightParenthesis: 41, // )\n Asterisk: 42, // *\n PlusSign: 43, // +\n Comma: 44, // ,\n HyphenMinus: 45, // -\n FullStop: 46, // .\n Solidus: 47, // /\n Colon: 58, // :\n Semicolon: 59, // ;\n LessThanSign: 60, // <\n EqualsSign: 61, // =\n GreaterThanSign: 62, // >\n QuestionMark: 63, // ?\n CommercialAt: 64, // @\n LeftSquareBracket: 91, // [\n Backslash: 92, // \\\n RightSquareBracket: 93, // ]\n CircumflexAccent: 94, // ^\n LowLine: 95, // _\n GraveAccent: 96, // `\n LeftCurlyBracket: 123, // {\n VerticalLine: 124, // |\n RightCurlyBracket: 125, // }\n Tilde: 126 // ~\n};\n\nvar NAME = Object.keys(TYPE).reduce(function(result, key) {\n result[TYPE[key]] = key;\n return result;\n}, {});\n\n// https://drafts.csswg.org/css-syntax/#tokenizer-definitions\n// > non-ASCII code point\n// > A code point with a value equal to or greater than U+0080 <control>\n// > name-start code point\n// > A letter, a non-ASCII code point, or U+005F LOW LINE (_).\n// > name code point\n// > A name-start code point, a digit, or U+002D HYPHEN-MINUS (-)\n// That means only ASCII code points has a special meaning and we a maps for 0..127 codes only\nvar SafeUint32Array = typeof Uint32Array !== 'undefined' ? Uint32Array : Array; // fallback on Array when TypedArray is not supported\nvar SYMBOL_TYPE = new SafeUint32Array(0x80);\nvar PUNCTUATION = new SafeUint32Array(0x80);\nvar STOP_URL_RAW = new SafeUint32Array(0x80);\n\nfor (var i = 0; i < SYMBOL_TYPE.length; i++) {\n SYMBOL_TYPE[i] = IDENTIFIER;\n}\n\n// fill categories\n[\n TYPE.ExclamationMark, // !\n TYPE.QuotationMark, // \"\n TYPE.NumberSign, // #\n TYPE.DollarSign, // $\n TYPE.PercentSign, // %\n TYPE.Ampersand, // &\n TYPE.Apostrophe, // '\n TYPE.LeftParenthesis, // (\n TYPE.RightParenthesis, // )\n TYPE.Asterisk, // *\n TYPE.PlusSign, // +\n TYPE.Comma, // ,\n TYPE.HyphenMinus, // -\n TYPE.FullStop, // .\n TYPE.Solidus, // /\n TYPE.Colon, // :\n TYPE.Semicolon, // ;\n TYPE.LessThanSign, // <\n TYPE.EqualsSign, // =\n TYPE.GreaterThanSign, // >\n TYPE.QuestionMark, // ?\n TYPE.CommercialAt, // @\n TYPE.LeftSquareBracket, // [\n // TYPE.Backslash, // \\\n TYPE.RightSquareBracket, // ]\n TYPE.CircumflexAccent, // ^\n // TYPE.LowLine, // _\n TYPE.GraveAccent, // `\n TYPE.LeftCurlyBracket, // {\n TYPE.VerticalLine, // |\n TYPE.RightCurlyBracket, // }\n TYPE.Tilde // ~\n].forEach(function(key) {\n SYMBOL_TYPE[Number(key)] = PUNCTUATOR;\n PUNCTUATION[Number(key)] = PUNCTUATOR;\n});\n\nfor (var i = 48; i <= 57; i++) {\n SYMBOL_TYPE[i] = NUMBER;\n}\n\nSYMBOL_TYPE[SPACE] = WHITESPACE;\nSYMBOL_TYPE[TAB] = WHITESPACE;\nSYMBOL_TYPE[N] = WHITESPACE;\nSYMBOL_TYPE[R] = WHITESPACE;\nSYMBOL_TYPE[F] = WHITESPACE;\n\nSYMBOL_TYPE[TYPE.Apostrophe] = STRING;\nSYMBOL_TYPE[TYPE.QuotationMark] = STRING;\n\nSTOP_URL_RAW[SPACE] = 1;\nSTOP_URL_RAW[TAB] = 1;\nSTOP_URL_RAW[N] = 1;\nSTOP_URL_RAW[R] = 1;\nSTOP_URL_RAW[F] = 1;\nSTOP_URL_RAW[TYPE.Apostrophe] = 1;\nSTOP_URL_RAW[TYPE.QuotationMark] = 1;\nSTOP_URL_RAW[TYPE.LeftParenthesis] = 1;\nSTOP_URL_RAW[TYPE.RightParenthesis] = 1;\n\n// whitespace is punctuation ...\nPUNCTUATION[SPACE] = PUNCTUATOR;\nPUNCTUATION[TAB] = PUNCTUATOR;\nPUNCTUATION[N] = PUNCTUATOR;\nPUNCTUATION[R] = PUNCTUATOR;\nPUNCTUATION[F] = PUNCTUATOR;\n// ... hyper minus is not\nPUNCTUATION[TYPE.HyphenMinus] = 0;\n\nmodule.exports = {\n TYPE: TYPE,\n NAME: NAME,\n\n SYMBOL_TYPE: SYMBOL_TYPE,\n PUNCTUATION: PUNCTUATION,\n STOP_URL_RAW: STOP_URL_RAW\n};\n","'use strict';\n\nvar constants = require('./const');\nvar PUNCTUATION = constants.PUNCTUATION;\nvar STOP_URL_RAW = constants.STOP_URL_RAW;\nvar TYPE = constants.TYPE;\nvar FULLSTOP = TYPE.FullStop;\nvar PLUSSIGN = TYPE.PlusSign;\nvar HYPHENMINUS = TYPE.HyphenMinus;\nvar PUNCTUATOR = TYPE.Punctuator;\nvar TAB = 9;\nvar N = 10;\nvar F = 12;\nvar R = 13;\nvar SPACE = 32;\nvar BACK_SLASH = 92;\nvar E = 101; // 'e'.charCodeAt(0)\n\nfunction firstCharOffset(source) {\n // detect BOM (https://en.wikipedia.org/wiki/Byte_order_mark)\n if (source.charCodeAt(0) === 0xFEFF || // UTF-16BE\n source.charCodeAt(0) === 0xFFFE) { // UTF-16LE\n return 1;\n }\n\n return 0;\n}\n\nfunction isHex(code) {\n return (code >= 48 && code <= 57) || // 0 .. 9\n (code >= 65 && code <= 70) || // A .. F\n (code >= 97 && code <= 102); // a .. f\n}\n\nfunction isNumber(code) {\n return code >= 48 && code <= 57;\n}\n\nfunction isNewline(source, offset, code) {\n if (code === N || code === F || code === R) {\n if (code === R && offset + 1 < source.length && source.charCodeAt(offset + 1) === N) {\n return 2;\n }\n\n return 1;\n }\n\n return 0;\n}\n\nfunction cmpChar(testStr, offset, referenceCode) {\n var code = testStr.charCodeAt(offset);\n\n // code.toLowerCase()\n if (code >= 65 && code <= 90) {\n code = code | 32;\n }\n\n return code === referenceCode;\n}\n\nfunction cmpStr(testStr, start, end, referenceStr) {\n if (end - start !== referenceStr.length) {\n return false;\n }\n\n if (start < 0 || end > testStr.length) {\n return false;\n }\n\n for (var i = start; i < end; i++) {\n var testCode = testStr.charCodeAt(i);\n var refCode = referenceStr.charCodeAt(i - start);\n\n // testStr[i].toLowerCase()\n if (testCode >= 65 && testCode <= 90) {\n testCode = testCode | 32;\n }\n\n if (testCode !== refCode) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction endsWith(testStr, referenceStr) {\n return cmpStr(testStr, testStr.length - referenceStr.length, testStr.length, referenceStr);\n}\n\nfunction findLastNonSpaceLocation(scanner) {\n for (var i = scanner.source.length - 1; i >= 0; i--) {\n var code = scanner.source.charCodeAt(i);\n\n if (code !== SPACE && code !== TAB && code !== R && code !== N && code !== F) {\n break;\n }\n }\n\n return scanner.getLocation(i + 1);\n}\n\nfunction findWhiteSpaceEnd(source, offset) {\n for (; offset < source.length; offset++) {\n var code = source.charCodeAt(offset);\n\n if (code !== SPACE && code !== TAB && code !== R && code !== N && code !== F) {\n break;\n }\n }\n\n return offset;\n}\n\nfunction findCommentEnd(source, offset) {\n var commentEnd = source.indexOf('*/', offset);\n\n if (commentEnd === -1) {\n return source.length;\n }\n\n return commentEnd + 2;\n}\n\nfunction findStringEnd(source, offset, quote) {\n for (; offset < source.length; offset++) {\n var code = source.charCodeAt(offset);\n\n // TODO: bad string\n if (code === BACK_SLASH) {\n offset++;\n } else if (code === quote) {\n offset++;\n break;\n }\n }\n\n return offset;\n}\n\nfunction findDecimalNumberEnd(source, offset) {\n for (; offset < source.length; offset++) {\n var code = source.charCodeAt(offset);\n\n if (code < 48 || code > 57) { // not a 0 .. 9\n break;\n }\n }\n\n return offset;\n}\n\nfunction findNumberEnd(source, offset, allowFraction) {\n var code;\n\n offset = findDecimalNumberEnd(source, offset);\n\n // fraction: .\\d+\n if (allowFraction && offset + 1 < source.length && source.charCodeAt(offset) === FULLSTOP) {\n code = source.charCodeAt(offset + 1);\n\n if (isNumber(code)) {\n offset = findDecimalNumberEnd(source, offset + 1);\n }\n }\n\n // exponent: e[+-]\\d+\n if (offset + 1 < source.length) {\n if ((source.charCodeAt(offset) | 32) === E) { // case insensitive check for `e`\n code = source.charCodeAt(offset + 1);\n\n if (code === PLUSSIGN || code === HYPHENMINUS) {\n if (offset + 2 < source.length) {\n code = source.charCodeAt(offset + 2);\n }\n }\n\n if (isNumber(code)) {\n offset = findDecimalNumberEnd(source, offset + 2);\n }\n }\n }\n\n return offset;\n}\n\n// skip escaped unicode sequence that can ends with space\n// [0-9a-f]{1,6}(\\r\\n|[ \\n\\r\\t\\f])?\nfunction findEscaseEnd(source, offset) {\n for (var i = 0; i < 7 && offset + i < source.length; i++) {\n var code = source.charCodeAt(offset + i);\n\n if (i !== 6 && isHex(code)) {\n continue;\n }\n\n if (i > 0) {\n offset += i - 1 + isNewline(source, offset + i, code);\n if (code === SPACE || code === TAB) {\n offset++;\n }\n }\n\n break;\n }\n\n return offset;\n}\n\nfunction findIdentifierEnd(source, offset) {\n for (; offset < source.length; offset++) {\n var code = source.charCodeAt(offset);\n\n if (code === BACK_SLASH) {\n offset = findEscaseEnd(source, offset + 1);\n } else if (code < 0x80 && PUNCTUATION[code] === PUNCTUATOR) {\n break;\n }\n }\n\n return offset;\n}\n\nfunction findUrlRawEnd(source, offset) {\n for (; offset < source.length; offset++) {\n var code = source.charCodeAt(offset);\n\n if (code === BACK_SLASH) {\n offset = findEscaseEnd(source, offset + 1);\n } else if (code < 0x80 && STOP_URL_RAW[code] === 1) {\n break;\n }\n }\n\n return offset;\n}\n\nmodule.exports = {\n firstCharOffset: firstCharOffset,\n\n isHex: isHex,\n isNumber: isNumber,\n isNewline: isNewline,\n\n cmpChar: cmpChar,\n cmpStr: cmpStr,\n endsWith: endsWith,\n\n findLastNonSpaceLocation: findLastNonSpaceLocation,\n findWhiteSpaceEnd: findWhiteSpaceEnd,\n findCommentEnd: findCommentEnd,\n findStringEnd: findStringEnd,\n findDecimalNumberEnd: findDecimalNumberEnd,\n findNumberEnd: findNumberEnd,\n findEscaseEnd: findEscaseEnd,\n findIdentifierEnd: findIdentifierEnd,\n findUrlRawEnd: findUrlRawEnd\n};\n","'use strict';\n\nvar CssSyntaxError = require('./error');\n\nvar constants = require('./const');\nvar TYPE = constants.TYPE;\nvar NAME = constants.NAME;\nvar SYMBOL_TYPE = constants.SYMBOL_TYPE;\n\nvar utils = require('./utils');\nvar firstCharOffset = utils.firstCharOffset;\nvar cmpStr = utils.cmpStr;\nvar isNumber = utils.isNumber;\nvar findLastNonSpaceLocation = utils.findLastNonSpaceLocation;\nvar findWhiteSpaceEnd = utils.findWhiteSpaceEnd;\nvar findCommentEnd = utils.findCommentEnd;\nvar findStringEnd = utils.findStringEnd;\nvar findNumberEnd = utils.findNumberEnd;\nvar findIdentifierEnd = utils.findIdentifierEnd;\nvar findUrlRawEnd = utils.findUrlRawEnd;\n\nvar NULL = 0;\nvar WHITESPACE = TYPE.WhiteSpace;\nvar IDENTIFIER = TYPE.Identifier;\nvar NUMBER = TYPE.Number;\nvar STRING = TYPE.String;\nvar COMMENT = TYPE.Comment;\nvar PUNCTUATOR = TYPE.Punctuator;\nvar CDO = TYPE.CDO;\nvar CDC = TYPE.CDC;\nvar ATRULE = TYPE.Atrule;\nvar FUNCTION = TYPE.Function;\nvar URL = TYPE.Url;\nvar RAW = TYPE.Raw;\n\nvar N = 10;\nvar F = 12;\nvar R = 13;\nvar STAR = TYPE.Asterisk;\nvar SLASH = TYPE.Solidus;\nvar FULLSTOP = TYPE.FullStop;\nvar PLUSSIGN = TYPE.PlusSign;\nvar HYPHENMINUS = TYPE.HyphenMinus;\nvar GREATERTHANSIGN = TYPE.GreaterThanSign;\nvar LESSTHANSIGN = TYPE.LessThanSign;\nvar EXCLAMATIONMARK = TYPE.ExclamationMark;\nvar COMMERCIALAT = TYPE.CommercialAt;\nvar QUOTATIONMARK = TYPE.QuotationMark;\nvar APOSTROPHE = TYPE.Apostrophe;\nvar LEFTPARENTHESIS = TYPE.LeftParenthesis;\nvar RIGHTPARENTHESIS = TYPE.RightParenthesis;\nvar LEFTCURLYBRACKET = TYPE.LeftCurlyBracket;\nvar RIGHTCURLYBRACKET = TYPE.RightCurlyBracket;\nvar LEFTSQUAREBRACKET = TYPE.LeftSquareBracket;\nvar RIGHTSQUAREBRACKET = TYPE.RightSquareBracket;\n\nvar MIN_BUFFER_SIZE = 16 * 1024;\nvar OFFSET_MASK = 0x00FFFFFF;\nvar TYPE_SHIFT = 24;\nvar SafeUint32Array = typeof Uint32Array !== 'undefined' ? Uint32Array : Array; // fallback on Array when TypedArray is not supported\n\nfunction computeLinesAndColumns(tokenizer, source) {\n var sourceLength = source.length;\n var start = firstCharOffset(source);\n var lines = tokenizer.lines;\n var line = tokenizer.startLine;\n var columns = tokenizer.columns;\n var column = tokenizer.startColumn;\n\n if (lines === null || lines.length < sourceLength + 1) {\n lines = new SafeUint32Array(Math.max(sourceLength + 1024, MIN_BUFFER_SIZE));\n columns = new SafeUint32Array(lines.length);\n }\n\n for (var i = start; i < sourceLength; i++) {\n var code = source.charCodeAt(i);\n\n lines[i] = line;\n columns[i] = column++;\n\n if (code === N || code === R || code === F) {\n if (code === R && i + 1 < sourceLength && source.charCodeAt(i + 1) === N) {\n i++;\n lines[i] = line;\n columns[i] = column;\n }\n\n line++;\n column = 1;\n }\n }\n\n lines[i] = line;\n columns[i] = column;\n\n tokenizer.linesAnsColumnsComputed = true;\n tokenizer.lines = lines;\n tokenizer.columns = columns;\n}\n\nfunction tokenLayout(tokenizer, source, startPos) {\n var sourceLength = source.length;\n var offsetAndType = tokenizer.offsetAndType;\n var balance = tokenizer.balance;\n var tokenCount = 0;\n var prevType = 0;\n var offset = startPos;\n var anchor = 0;\n var balanceCloseCode = 0;\n var balanceStart = 0;\n var balancePrev = 0;\n\n if (offsetAndType === null || offsetAndType.length < sourceLength + 1) {\n offsetAndType = new SafeUint32Array(sourceLength + 1024);\n balance = new SafeUint32Array(sourceLength + 1024);\n }\n\n while (offset < sourceLength) {\n var code = source.charCodeAt(offset);\n var type = code < 0x80 ? SYMBOL_TYPE[code] : IDENTIFIER;\n\n balance[tokenCount] = sourceLength;\n\n switch (type) {\n case WHITESPACE:\n offset = findWhiteSpaceEnd(source, offset + 1);\n break;\n\n case PUNCTUATOR:\n switch (code) {\n case balanceCloseCode:\n balancePrev = balanceStart & OFFSET_MASK;\n balanceStart = balance[balancePrev];\n balanceCloseCode = balanceStart >> TYPE_SHIFT;\n balance[tokenCount] = balancePrev;\n balance[balancePrev++] = tokenCount;\n for (; balancePrev < tokenCount; balancePrev++) {\n if (balance[balancePrev] === sourceLength) {\n balance[balancePrev] = tokenCount;\n }\n }\n break;\n\n case LEFTSQUAREBRACKET:\n balance[tokenCount] = balanceStart;\n balanceCloseCode = RIGHTSQUAREBRACKET;\n balanceStart = (balanceCloseCode << TYPE_SHIFT) | tokenCount;\n break;\n\n case LEFTCURLYBRACKET:\n balance[tokenCount] = balanceStart;\n balanceCloseCode = RIGHTCURLYBRACKET;\n balanceStart = (balanceCloseCode << TYPE_SHIFT) | tokenCount;\n break;\n\n case LEFTPARENTHESIS:\n balance[tokenCount] = balanceStart;\n balanceCloseCode = RIGHTPARENTHESIS;\n balanceStart = (balanceCloseCode << TYPE_SHIFT) | tokenCount;\n break;\n }\n\n // /*\n if (code === STAR && prevType === SLASH) {\n type = COMMENT;\n offset = findCommentEnd(source, offset + 1);\n tokenCount--; // rewrite prev token\n break;\n }\n\n // edge case for -.123 and +.123\n if (code === FULLSTOP && (prevType === PLUSSIGN || prevType === HYPHENMINUS)) {\n if (offset + 1 < sourceLength && isNumber(source.charCodeAt(offset + 1))) {\n type = NUMBER;\n offset = findNumberEnd(source, offset + 2, false);\n tokenCount--; // rewrite prev token\n break;\n }\n }\n\n // <!--\n if (code === EXCLAMATIONMARK && prevType === LESSTHANSIGN) {\n if (offset + 2 < sourceLength &&\n source.charCodeAt(offset + 1) === HYPHENMINUS &&\n source.charCodeAt(offset + 2) === HYPHENMINUS) {\n type = CDO;\n offset = offset + 3;\n tokenCount--; // rewrite prev token\n break;\n }\n }\n\n // -->\n if (code === HYPHENMINUS && prevType === HYPHENMINUS) {\n if (offset + 1 < sourceLength && source.charCodeAt(offset + 1) === GREATERTHANSIGN) {\n type = CDC;\n offset = offset + 2;\n tokenCount--; // rewrite prev token\n break;\n }\n }\n\n // ident(\n if (code === LEFTPARENTHESIS && prevType === IDENTIFIER) {\n offset = offset + 1;\n tokenCount--; // rewrite prev token\n balance[tokenCount] = balance[tokenCount + 1];\n balanceStart--;\n\n // 4 char length identifier and equal to `url(` (case insensitive)\n if (offset - anchor === 4 && cmpStr(source, anchor, offset, 'url(')) {\n // special case for url() because it can contain any symbols sequence with few exceptions\n anchor = findWhiteSpaceEnd(source, offset);\n code = source.charCodeAt(anchor);\n if (code !== LEFTPARENTHESIS &&\n code !== RIGHTPARENTHESIS &&\n code !== QUOTATIONMARK &&\n code !== APOSTROPHE) {\n // url(\n offsetAndType[tokenCount++] = (URL << TYPE_SHIFT) | offset;\n balance[tokenCount] = sourceLength;\n\n // ws*\n if (anchor !== offset) {\n offsetAndType[tokenCount++] = (WHITESPACE << TYPE_SHIFT) | anchor;\n balance[tokenCount] = sourceLength;\n }\n\n // raw\n type = RAW;\n offset = findUrlRawEnd(source, anchor);\n } else {\n type = URL;\n }\n } else {\n type = FUNCTION;\n }\n break;\n }\n\n type = code;\n offset = offset + 1;\n break;\n\n case NUMBER:\n offset = findNumberEnd(source, offset + 1, prevType !== FULLSTOP);\n\n // merge number with a preceding dot, dash or plus\n if (prevType === FULLSTOP ||\n prevType === HYPHENMINUS ||\n prevType === PLUSSIGN) {\n tokenCount--; // rewrite prev token\n }\n\n break;\n\n case STRING:\n offset = findStringEnd(source, offset + 1, code);\n break;\n\n default:\n anchor = offset;\n offset = findIdentifierEnd(source, offset);\n\n // merge identifier with a preceding dash\n if (prevType === HYPHENMINUS) {\n // rewrite prev token\n tokenCount--;\n // restore prev prev token type\n // for case @-prefix-ident\n prevType = tokenCount === 0 ? 0 : offsetAndType[tokenCount - 1] >> TYPE_SHIFT;\n }\n\n if (prevType === COMMERCIALAT) {\n // rewrite prev token and change type to <at-keyword-token>\n tokenCount--;\n type = ATRULE;\n }\n }\n\n offsetAndType[tokenCount++] = (type << TYPE_SHIFT) | offset;\n prevType = type;\n }\n\n // finalize arrays\n offsetAndType[tokenCount] = offset;\n balance[tokenCount] = sourceLength;\n while (balanceStart !== 0) {\n balancePrev = balanceStart & OFFSET_MASK;\n balanceStart = balance[balancePrev];\n balance[balancePrev] = sourceLength;\n }\n\n tokenizer.offsetAndType = offsetAndType;\n tokenizer.tokenCount = tokenCount;\n tokenizer.balance = balance;\n}\n\n//\n// tokenizer\n//\n\nvar Tokenizer = function(source, startOffset, startLine, startColumn) {\n this.offsetAndType = null;\n this.balance = null;\n this.lines = null;\n this.columns = null;\n\n this.setSource(source, startOffset, startLine, startColumn);\n};\n\nTokenizer.prototype = {\n setSource: function(source, startOffset, startLine, startColumn) {\n var safeSource = String(source || '');\n var start = firstCharOffset(safeSource);\n\n this.source = safeSource;\n this.firstCharOffset = start;\n this.startOffset = typeof startOffset === 'undefined' ? 0 : startOffset;\n this.startLine = typeof startLine === 'undefined' ? 1 : startLine;\n this.startColumn = typeof startColumn === 'undefined' ? 1 : startColumn;\n this.linesAnsColumnsComputed = false;\n\n this.eof = false;\n this.currentToken = -1;\n this.tokenType = 0;\n this.tokenStart = start;\n this.tokenEnd = start;\n\n tokenLayout(this, safeSource, start);\n this.next();\n },\n\n lookupType: function(offset) {\n offset += this.currentToken;\n\n if (offset < this.tokenCount) {\n return this.offsetAndType[offset] >> TYPE_SHIFT;\n }\n\n return NULL;\n },\n lookupNonWSType: function(offset) {\n offset += this.currentToken;\n\n for (var type; offset < this.tokenCount; offset++) {\n type = this.offsetAndType[offset] >> TYPE_SHIFT;\n\n if (type !== WHITESPACE) {\n return type;\n }\n }\n\n return NULL;\n },\n lookupValue: function(offset, referenceStr) {\n offset += this.currentToken;\n\n if (offset < this.tokenCount) {\n return cmpStr(\n this.source,\n this.offsetAndType[offset - 1] & OFFSET_MASK,\n this.offsetAndType[offset] & OFFSET_MASK,\n referenceStr\n );\n }\n\n return false;\n },\n getTokenStart: function(tokenNum) {\n if (tokenNum === this.currentToken) {\n return this.tokenStart;\n }\n\n if (tokenNum > 0) {\n return tokenNum < this.tokenCount\n ? this.offsetAndType[tokenNum - 1] & OFFSET_MASK\n : this.offsetAndType[this.tokenCount] & OFFSET_MASK;\n }\n\n return this.firstCharOffset;\n },\n getOffsetExcludeWS: function() {\n if (this.currentToken > 0) {\n if ((this.offsetAndType[this.currentToken - 1] >> TYPE_SHIFT) === WHITESPACE) {\n return this.currentToken > 1\n ? this.offsetAndType[this.currentToken - 2] & OFFSET_MASK\n : this.firstCharOffset;\n }\n }\n return this.tokenStart;\n },\n getRawLength: function(startToken, endTokenType1, endTokenType2, includeTokenType2) {\n var cursor = startToken;\n var balanceEnd;\n\n loop:\n for (; cursor < this.tokenCount; cursor++) {\n balanceEnd = this.balance[cursor];\n\n // belance end points to offset before start\n if (balanceEnd < startToken) {\n break loop;\n }\n\n // check token is stop type\n switch (this.offsetAndType[cursor] >> TYPE_SHIFT) {\n case endTokenType1:\n break loop;\n\n case endTokenType2:\n if (includeTokenType2) {\n cursor++;\n }\n break loop;\n\n default:\n // fast forward to the end of balanced block\n if (this.balance[balanceEnd] === cursor) {\n cursor = balanceEnd;\n }\n }\n\n }\n\n return cursor - this.currentToken;\n },\n\n getTokenValue: function() {\n return this.source.substring(this.tokenStart, this.tokenEnd);\n },\n substrToCursor: function(start) {\n return this.source.substring(start, this.tokenStart);\n },\n\n skipWS: function() {\n for (var i = this.currentToken, skipTokenCount = 0; i < this.tokenCount; i++, skipTokenCount++) {\n if ((this.offsetAndType[i] >> TYPE_SHIFT) !== WHITESPACE) {\n break;\n }\n }\n\n if (skipTokenCount > 0) {\n this.skip(skipTokenCount);\n }\n },\n skipSC: function() {\n while (this.tokenType === WHITESPACE || this.tokenType === COMMENT) {\n this.next();\n }\n },\n skip: function(tokenCount) {\n var next = this.currentToken + tokenCount;\n\n if (next < this.tokenCount) {\n this.currentToken = next;\n this.tokenStart = this.offsetAndType[next - 1] & OFFSET_MASK;\n next = this.offsetAndType[next];\n this.tokenType = next >> TYPE_SHIFT;\n this.tokenEnd = next & OFFSET_MASK;\n } else {\n this.currentToken = this.tokenCount;\n this.next();\n }\n },\n next: function() {\n var next = this.currentToken + 1;\n\n if (next < this.tokenCount) {\n this.currentToken = next;\n this.tokenStart = this.tokenEnd;\n next = this.offsetAndType[next];\n this.tokenType = next >> TYPE_SHIFT;\n this.tokenEnd = next & OFFSET_MASK;\n } else {\n this.currentToken = this.tokenCount;\n this.eof = true;\n this.tokenType = NULL;\n this.tokenStart = this.tokenEnd = this.source.length;\n }\n },\n\n eat: function(tokenType) {\n if (this.tokenType !== tokenType) {\n var offset = this.tokenStart;\n var message = NAME[tokenType] + ' is expected';\n\n // tweak message and offset\n if (tokenType === IDENTIFIER) {\n // when identifier is expected but there is a function or url\n if (this.tokenType === FUNCTION || this.tokenType === URL) {\n offset = this.tokenEnd - 1;\n message += ' but function found';\n }\n } else {\n // when test type is part of another token show error for current position + 1\n // e.g. eat(HYPHENMINUS) will fail on \"-foo\", but pointing on \"-\" is odd\n if (this.source.charCodeAt(this.tokenStart) === tokenType) {\n offset = offset + 1;\n }\n }\n\n this.error(message, offset);\n }\n\n this.next();\n },\n eatNonWS: function(tokenType) {\n this.skipWS();\n this.eat(tokenType);\n },\n\n consume: function(tokenType) {\n var value = this.getTokenValue();\n\n this.eat(tokenType);\n\n return value;\n },\n consumeFunctionName: function() {\n var name = this.source.substring(this.tokenStart, this.tokenEnd - 1);\n\n this.eat(FUNCTION);\n\n return name;\n },\n consumeNonWS: function(tokenType) {\n this.skipWS();\n\n return this.consume(tokenType);\n },\n\n expectIdentifier: function(name) {\n if (this.tokenType !== IDENTIFIER || cmpStr(this.source, this.tokenStart, this.tokenEnd, name) === false) {\n this.error('Identifier `' + name + '` is expected');\n }\n\n this.next();\n },\n\n getLocation: function(offset, filename) {\n if (!this.linesAnsColumnsComputed) {\n computeLinesAndColumns(this, this.source);\n }\n\n return {\n source: filename,\n offset: this.startOffset + offset,\n line: this.lines[offset],\n column: this.columns[offset]\n };\n },\n\n getLocationRange: function(start, end, filename) {\n if (!this.linesAnsColumnsComputed) {\n computeLinesAndColumns(this, this.source);\n }\n\n return {\n source: filename,\n start: {\n offset: this.startOffset + start,\n line: this.lines[start],\n column: this.columns[start]\n },\n end: {\n offset: this.startOffset + end,\n line: this.lines[end],\n column: this.columns[end]\n }\n };\n },\n\n error: function(message, offset) {\n var location = typeof offset !== 'undefined' && offset < this.source.length\n ? this.getLocation(offset)\n : this.eof\n ? findLastNonSpaceLocation(this)\n : this.getLocation(this.tokenStart);\n\n throw new CssSyntaxError(\n message || 'Unexpected input',\n this.source,\n location.offset,\n location.line,\n location.column\n );\n },\n\n dump: function() {\n var offset = 0;\n\n return Array.prototype.slice.call(this.offsetAndType, 0, this.tokenCount).map(function(item, idx) {\n var start = offset;\n var end = item & OFFSET_MASK;\n\n offset = end;\n\n return {\n idx: idx,\n type: NAME[item >> TYPE_SHIFT],\n chunk: this.source.substring(start, end),\n balance: this.balance[idx]\n };\n }, this);\n }\n};\n\n// extend with error class\nTokenizer.CssSyntaxError = CssSyntaxError;\n\n// extend tokenizer with constants\nObject.keys(constants).forEach(function(key) {\n Tokenizer[key] = constants[key];\n});\n\n// extend tokenizer with static methods from utils\nObject.keys(utils).forEach(function(key) {\n Tokenizer[key] = utils[key];\n});\n\n// warm up tokenizer to elimitate code branches that never execute\n// fix soft deoptimizations (insufficient type feedback)\nnew Tokenizer('\\n\\r\\r\\n\\f<!---->//\"\"\\'\\'/*\\r\\n\\f*/1a;.\\\\31\\t\\+2{url(a);func();+1.2e3 -.4e-5 .6e+7}').getLocation();\n\nmodule.exports = Tokenizer;\n","module.exports = require('./Tokenizer');\n","'use strict';\n\n//\n// item item item item\n// /------\\ /------\\ /------\\ /------\\\n// | data | | data | | data | | data |\n// null <--+-prev |<---+-prev |<---+-prev |<---+-prev |\n// | next-+--->| next-+--->| next-+--->| next-+--> null\n// \\------/ \\------/ \\------/ \\------/\n// ^ ^\n// | list |\n// | /------\\ |\n// \\--------------+-head | |\n// | tail-+--------------/\n// \\------/\n//\n\nfunction createItem(data) {\n return {\n prev: null,\n next: null,\n data: data\n };\n}\n\nvar cursors = null;\nvar List = function() {\n this.cursor = null;\n this.head = null;\n this.tail = null;\n};\n\nList.createItem = createItem;\nList.prototype.createItem = createItem;\n\nList.prototype.getSize = function() {\n var size = 0;\n var cursor = this.head;\n\n while (cursor) {\n size++;\n cursor = cursor.next;\n }\n\n return size;\n};\n\nList.prototype.fromArray = function(array) {\n var cursor = null;\n\n this.head = null;\n\n for (var i = 0; i < array.length; i++) {\n var item = createItem(array[i]);\n\n if (cursor !== null) {\n cursor.next = item;\n } else {\n this.head = item;\n }\n\n item.prev = cursor;\n cursor = item;\n }\n\n this.tail = cursor;\n\n return this;\n};\n\nList.prototype.toArray = function() {\n var cursor = this.head;\n var result = [];\n\n while (cursor) {\n result.push(cursor.data);\n cursor = cursor.next;\n }\n\n return result;\n};\n\nList.prototype.toJSON = List.prototype.toArray;\n\nList.prototype.isEmpty = function() {\n return this.head === null;\n};\n\nList.prototype.first = function() {\n return this.head && this.head.data;\n};\n\nList.prototype.last = function() {\n return this.tail && this.tail.data;\n};\n\nfunction allocateCursor(node, prev, next) {\n var cursor;\n\n if (cursors !== null) {\n cursor = cursors;\n cursors = cursors.cursor;\n cursor.prev = prev;\n cursor.next = next;\n cursor.cursor = node.cursor;\n } else {\n cursor = {\n prev: prev,\n next: next,\n cursor: node.cursor\n };\n }\n\n node.cursor = cursor;\n\n return cursor;\n}\n\nfunction releaseCursor(node) {\n var cursor = node.cursor;\n\n node.cursor = cursor.cursor;\n cursor.prev = null;\n cursor.next = null;\n cursor.cursor = cursors;\n cursors = cursor;\n}\n\nList.prototype.each = function(fn, context) {\n var item;\n\n if (context === undefined) {\n context = this;\n }\n\n // push cursor\n var cursor = allocateCursor(this, null, this.head);\n\n while (cursor.next !== null) {\n item = cursor.next;\n cursor.next = item.next;\n\n fn.call(context, item.data, item, this);\n }\n\n // pop cursor\n releaseCursor(this);\n};\n\nList.prototype.eachRight = function(fn, context) {\n var item;\n\n if (context === undefined) {\n context = this;\n }\n\n // push cursor\n var cursor = allocateCursor(this, this.tail, null);\n\n while (cursor.prev !== null) {\n item = cursor.prev;\n cursor.prev = item.prev;\n\n fn.call(context, item.data, item, this);\n }\n\n // pop cursor\n releaseCursor(this);\n};\n\nList.prototype.nextUntil = function(start, fn, context) {\n if (start === null) {\n return;\n }\n\n var item;\n\n if (context === undefined) {\n context = this;\n }\n\n // push cursor\n var cursor = allocateCursor(this, null, start);\n\n while (cursor.next !== null) {\n item = cursor.next;\n cursor.next = item.next;\n\n if (fn.call(context, item.data, item, this)) {\n break;\n }\n }\n\n // pop cursor\n releaseCursor(this);\n};\n\nList.prototype.prevUntil = function(start, fn, context) {\n if (start === null) {\n return;\n }\n\n var item;\n\n if (context === undefined) {\n context = this;\n }\n\n // push cursor\n var cursor = allocateCursor(this, start, null);\n\n while (cursor.prev !== null) {\n item = cursor.prev;\n cursor.prev = item.prev;\n\n if (fn.call(context, item.data, item, this)) {\n break;\n }\n }\n\n // pop cursor\n releaseCursor(this);\n};\n\nList.prototype.some = function(fn, context) {\n var cursor = this.head;\n\n if (context === undefined) {\n context = this;\n }\n\n while (cursor !== null) {\n if (fn.call(context, cursor.data, cursor, this)) {\n return true;\n }\n\n cursor = cursor.next;\n }\n\n return false;\n};\n\nList.prototype.map = function(fn, context) {\n var result = [];\n var cursor = this.head;\n\n if (context === undefined) {\n context = this;\n }\n\n while (cursor !== null) {\n result.push(fn.call(context, cursor.data, cursor, this));\n cursor = cursor.next;\n }\n\n return result;\n};\n\nList.prototype.clear = function() {\n this.head = null;\n this.tail = null;\n};\n\nList.prototype.copy = function() {\n var result = new List();\n var cursor = this.head;\n\n while (cursor !== null) {\n result.insert(createItem(cursor.data));\n cursor = cursor.next;\n }\n\n return result;\n};\n\nList.prototype.updateCursors = function(prevOld, prevNew, nextOld, nextNew) {\n var cursor = this.cursor;\n\n while (cursor !== null) {\n if (cursor.prev === prevOld) {\n cursor.prev = prevNew;\n }\n\n if (cursor.next === nextOld) {\n cursor.next = nextNew;\n }\n\n cursor = cursor.cursor;\n }\n};\n\nList.prototype.prepend = function(item) {\n // head\n // ^\n // item\n this.updateCursors(null, item, this.head, item);\n\n // insert to the beginning of the list\n if (this.head !== null) {\n // new item <- first item\n this.head.prev = item;\n\n // new item -> first item\n item.next = this.head;\n } else {\n // if list has no head, then it also has no tail\n // in this case tail points to the new item\n this.tail = item;\n }\n\n // head always points to new item\n this.head = item;\n\n return this;\n};\n\nList.prototype.prependData = function(data) {\n return this.prepend(createItem(data));\n};\n\nList.prototype.append = function(item) {\n // tail\n // ^\n // item\n this.updateCursors(this.tail, item, null, item);\n\n // insert to the ending of the list\n if (this.tail !== null) {\n // last item -> new item\n this.tail.next = item;\n\n // last item <- new item\n item.prev = this.tail;\n } else {\n // if list has no tail, then it also has no head\n // in this case head points to new item\n this.head = item;\n }\n\n // tail always points to new item\n this.tail = item;\n\n return this;\n};\n\nList.prototype.appendData = function(data) {\n return this.append(createItem(data));\n};\n\nList.prototype.insert = function(item, before) {\n if (before !== undefined && before !== null) {\n // prev before\n // ^\n // item\n this.updateCursors(before.prev, item, before, item);\n\n if (before.prev === null) {\n // insert to the beginning of list\n if (this.head !== before) {\n throw new Error('before doesn\\'t belong to list');\n }\n\n // since head points to before therefore list doesn't empty\n // no need to check tail\n this.head = item;\n before.prev = item;\n item.next = before;\n\n this.updateCursors(null, item);\n } else {\n\n // insert between two items\n before.prev.next = item;\n item.prev = before.prev;\n\n before.prev = item;\n item.next = before;\n }\n } else {\n this.append(item);\n }\n};\n\nList.prototype.insertData = function(data, before) {\n this.insert(createItem(data), before);\n};\n\nList.prototype.remove = function(item) {\n // item\n // ^\n // prev next\n this.updateCursors(item, item.prev, item, item.next);\n\n if (item.prev !== null) {\n item.prev.next = item.next;\n } else {\n if (this.head !== item) {\n throw new Error('item doesn\\'t belong to list');\n }\n\n this.head = item.next;\n }\n\n if (item.next !== null) {\n item.next.prev = item.prev;\n } else {\n if (this.tail !== item) {\n throw new Error('item doesn\\'t belong to list');\n }\n\n this.tail = item.prev;\n }\n\n item.prev = null;\n item.next = null;\n\n return item;\n};\n\nList.prototype.appendList = function(list) {\n // ignore empty lists\n if (list.head === null) {\n return;\n }\n\n this.updateCursors(this.tail, list.tail, null, list.head);\n\n // insert to end of the list\n if (this.tail !== null) {\n // if destination list has a tail, then it also has a head,\n // but head doesn't change\n\n // dest tail -> source head\n this.tail.next = list.head;\n\n // dest tail <- source head\n list.head.prev = this.tail;\n } else {\n // if list has no a tail, then it also has no a head\n // in this case points head to new item\n this.head = list.head;\n }\n\n // tail always start point to new item\n this.tail = list.tail;\n\n list.head = null;\n list.tail = null;\n};\n\nList.prototype.insertList = function(list, before) {\n if (before !== undefined && before !== null) {\n // ignore empty lists\n if (list.head === null) {\n return;\n }\n\n this.updateCursors(before.prev, list.tail, before, list.head);\n\n // insert in the middle of dist list\n if (before.prev !== null) {\n // before.prev <-> list.head\n before.prev.next = list.head;\n list.head.prev = before.prev;\n } else {\n this.head = list.head;\n }\n\n before.prev = list.tail;\n list.tail.next = before;\n\n list.head = null;\n list.tail = null;\n } else {\n this.appendList(list);\n }\n};\n\nList.prototype.replace = function(oldItem, newItemOrList) {\n if ('head' in newItemOrList) {\n this.insertList(newItemOrList, oldItem);\n } else {\n this.insert(newItemOrList, oldItem);\n }\n this.remove(oldItem);\n};\n\nmodule.exports = List;\n","var List = require('../utils/list');\nvar TYPE = require('../tokenizer').TYPE;\nvar WHITESPACE = TYPE.WhiteSpace;\nvar COMMENT = TYPE.Comment;\n\nmodule.exports = function readSequence(recognizer) {\n var children = new List();\n var child = null;\n var context = {\n recognizer: recognizer,\n space: null,\n ignoreWS: false,\n ignoreWSAfter: false\n };\n\n this.scanner.skipSC();\n\n while (!this.scanner.eof) {\n switch (this.scanner.tokenType) {\n case COMMENT:\n this.scanner.next();\n continue;\n\n case WHITESPACE:\n if (context.ignoreWS) {\n this.scanner.next();\n } else {\n context.space = this.WhiteSpace();\n }\n continue;\n }\n\n child = recognizer.getNode.call(this, context);\n\n if (child === undefined) {\n break;\n }\n\n if (context.space !== null) {\n children.appendData(context.space);\n context.space = null;\n }\n\n children.appendData(child);\n\n if (context.ignoreWSAfter) {\n context.ignoreWSAfter = false;\n context.ignoreWS = true;\n } else {\n context.ignoreWS = false;\n }\n }\n\n return children;\n};\n","'use strict';\n\nvar Tokenizer = require('../tokenizer');\nvar sequence = require('./sequence');\nvar noop = function() {};\n\nfunction createParseContext(name) {\n return function() {\n return this[name]();\n };\n}\n\nfunction processConfig(config) {\n var parserConfig = {\n context: {},\n scope: {},\n atrule: {},\n pseudo: {}\n };\n\n if (config.parseContext) {\n for (var name in config.parseContext) {\n switch (typeof config.parseContext[name]) {\n case 'function':\n parserConfig.context[name] = config.parseContext[name];\n break;\n\n case 'string':\n parserConfig.context[name] = createParseContext(config.parseContext[name]);\n break;\n }\n }\n }\n\n if (config.scope) {\n for (var name in config.scope) {\n parserConfig.scope[name] = config.scope[name];\n }\n }\n\n if (config.atrule) {\n for (var name in config.atrule) {\n var atrule = config.atrule[name];\n\n if (atrule.parse) {\n parserConfig.atrule[name] = atrule.parse;\n }\n }\n }\n\n if (config.pseudo) {\n for (var name in config.pseudo) {\n var pseudo = config.pseudo[name];\n\n if (pseudo.parse) {\n parserConfig.pseudo[name] = pseudo.parse;\n }\n }\n }\n\n if (config.node) {\n for (var name in config.node) {\n parserConfig[name] = config.node[name].parse;\n }\n }\n\n return parserConfig;\n}\n\nmodule.exports = function createParser(config) {\n var parser = {\n scanner: new Tokenizer(),\n filename: '<unknown>',\n needPositions: false,\n tolerant: false,\n onParseError: noop,\n parseAtruleExpression: true,\n parseSelector: true,\n parseValue: true,\n parseCustomProperty: false,\n\n readSequence: sequence,\n\n tolerantParse: function(consumer, fallback) {\n if (this.tolerant) {\n var start = this.scanner.currentToken;\n\n try {\n return consumer.call(this);\n } catch (e) {\n this.onParseError(e);\n return fallback.call(this, start);\n }\n } else {\n return consumer.call(this);\n }\n },\n\n getLocation: function(start, end) {\n if (this.needPositions) {\n return this.scanner.getLocationRange(\n start,\n end,\n this.filename\n );\n }\n\n return null;\n },\n getLocationFromList: function(list) {\n if (this.needPositions) {\n return this.scanner.getLocationRange(\n list.head !== null ? list.first().loc.start.offset - this.scanner.startOffset : this.scanner.tokenStart,\n list.head !== null ? list.last().loc.end.offset - this.scanner.startOffset : this.scanner.tokenStart,\n this.filename\n );\n }\n\n return null;\n }\n };\n\n config = processConfig(config || {});\n for (var key in config) {\n parser[key] = config[key];\n }\n\n return function(source, options) {\n options = options || {};\n\n var context = options.context || 'default';\n var ast;\n\n parser.scanner.setSource(source, options.offset, options.line, options.column);\n parser.filename = options.filename || '<unknown>';\n parser.needPositions = Boolean(options.positions);\n parser.tolerant = Boolean(options.tolerant);\n parser.onParseError = typeof options.onParseError === 'function' ? options.onParseError : noop;\n parser.parseAtruleExpression = 'parseAtruleExpression' in options ? Boolean(options.parseAtruleExpression) : true;\n parser.parseSelector = 'parseSelector' in options ? Boolean(options.parseSelector) : true;\n parser.parseValue = 'parseValue' in options ? Boolean(options.parseValue) : true;\n parser.parseCustomProperty = 'parseCustomProperty' in options ? Boolean(options.parseCustomProperty) : false;\n\n if (!parser.context.hasOwnProperty(context)) {\n throw new Error('Unknown context `' + context + '`');\n }\n\n ast = parser.context[context].call(parser, options);\n\n if (!parser.scanner.eof) {\n parser.scanner.error();\n }\n\n // console.log(JSON.stringify(ast, null, 4));\n return ast;\n };\n};\n","var cmpChar = require('../../tokenizer').cmpChar;\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar IDENTIFIER = TYPE.Identifier;\nvar STRING = TYPE.String;\nvar NUMBER = TYPE.Number;\nvar FUNCTION = TYPE.Function;\nvar URL = TYPE.Url;\nvar NUMBERSIGN = TYPE.NumberSign;\nvar LEFTPARENTHESIS = TYPE.LeftParenthesis;\nvar LEFTSQUAREBRACKET = TYPE.LeftSquareBracket;\nvar PLUSSIGN = TYPE.PlusSign;\nvar HYPHENMINUS = TYPE.HyphenMinus;\nvar COMMA = TYPE.Comma;\nvar SOLIDUS = TYPE.Solidus;\nvar ASTERISK = TYPE.Asterisk;\nvar PERCENTSIGN = TYPE.PercentSign;\nvar BACKSLASH = TYPE.Backslash;\nvar U = 117; // 'u'.charCodeAt(0)\n\nmodule.exports = function defaultRecognizer(context) {\n switch (this.scanner.tokenType) {\n case NUMBERSIGN:\n return this.HexColor();\n\n case COMMA:\n context.space = null;\n context.ignoreWSAfter = true;\n return this.Operator();\n\n case SOLIDUS:\n case ASTERISK:\n case PLUSSIGN:\n case HYPHENMINUS:\n return this.Operator();\n\n case LEFTPARENTHESIS:\n return this.Parentheses(this.readSequence, context.recognizer);\n\n case LEFTSQUAREBRACKET:\n return this.Brackets(this.readSequence, context.recognizer);\n\n case STRING:\n return this.String();\n\n case NUMBER:\n switch (this.scanner.lookupType(1)) {\n case PERCENTSIGN:\n return this.Percentage();\n\n case IDENTIFIER:\n // edge case: number with folowing \\0 and \\9 hack shouldn't to be a Dimension\n if (cmpChar(this.scanner.source, this.scanner.tokenEnd, BACKSLASH)) {\n return this.Number();\n } else {\n return this.Dimension();\n }\n\n default:\n return this.Number();\n }\n\n case FUNCTION:\n return this.Function(this.readSequence, context.recognizer);\n\n case URL:\n return this.Url();\n\n case IDENTIFIER:\n // check for unicode range, it should start with u+ or U+\n if (cmpChar(this.scanner.source, this.scanner.tokenStart, U) &&\n cmpChar(this.scanner.source, this.scanner.tokenStart + 1, PLUSSIGN)) {\n return this.UnicodeRange();\n } else {\n return this.Identifier();\n }\n }\n};\n","module.exports = {\n getNode: require('./default')\n};\n","var TYPE = require('../../tokenizer').TYPE;\n\nvar IDENTIFIER = TYPE.Identifier;\nvar NUMBER = TYPE.Number;\nvar NUMBERSIGN = TYPE.NumberSign;\nvar LEFTSQUAREBRACKET = TYPE.LeftSquareBracket;\nvar PLUSSIGN = TYPE.PlusSign;\nvar SOLIDUS = TYPE.Solidus;\nvar ASTERISK = TYPE.Asterisk;\nvar FULLSTOP = TYPE.FullStop;\nvar COLON = TYPE.Colon;\nvar GREATERTHANSIGN = TYPE.GreaterThanSign;\nvar VERTICALLINE = TYPE.VerticalLine;\nvar TILDE = TYPE.Tilde;\n\nfunction getNode(context) {\n switch (this.scanner.tokenType) {\n case PLUSSIGN:\n case GREATERTHANSIGN:\n case TILDE:\n context.space = null;\n context.ignoreWSAfter = true;\n return this.Combinator();\n\n case SOLIDUS: // /deep/\n return this.Combinator();\n\n case FULLSTOP:\n return this.ClassSelector();\n\n case LEFTSQUAREBRACKET:\n return this.AttributeSelector();\n\n case NUMBERSIGN:\n return this.IdSelector();\n\n case COLON:\n if (this.scanner.lookupType(1) === COLON) {\n return this.PseudoElementSelector();\n } else {\n return this.PseudoClassSelector();\n }\n\n case IDENTIFIER:\n case ASTERISK:\n case VERTICALLINE:\n return this.TypeSelector();\n\n case NUMBER:\n return this.Percentage();\n }\n};\n\nmodule.exports = {\n getNode: getNode\n};\n","var List = require('../../utils/list');\n\n// https://drafts.csswg.org/css-images-4/#element-notation\n// https://developer.mozilla.org/en-US/docs/Web/CSS/element\nmodule.exports = function() {\n this.scanner.skipSC();\n\n var id = this.IdSelector();\n\n this.scanner.skipSC();\n\n return new List().appendData(\n id\n );\n};\n","var List = require('../../utils/list');\n\n// legacy IE function\n// expression '(' raw ')'\nmodule.exports = function() {\n return new List().appendData(\n this.Raw(this.scanner.currentToken, 0, 0, false, false)\n );\n};\n","var List = require('../../utils/list');\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar IDENTIFIER = TYPE.Identifier;\nvar COMMA = TYPE.Comma;\nvar SEMICOLON = TYPE.Semicolon;\nvar HYPHENMINUS = TYPE.HyphenMinus;\nvar EXCLAMATIONMARK = TYPE.ExclamationMark;\n\n// var '(' ident (',' <value>? )? ')'\nmodule.exports = function() {\n var children = new List();\n\n this.scanner.skipSC();\n\n var identStart = this.scanner.tokenStart;\n\n this.scanner.eat(HYPHENMINUS);\n if (this.scanner.source.charCodeAt(this.scanner.tokenStart) !== HYPHENMINUS) {\n this.scanner.error('HyphenMinus is expected');\n }\n this.scanner.eat(IDENTIFIER);\n\n children.appendData({\n type: 'Identifier',\n loc: this.getLocation(identStart, this.scanner.tokenStart),\n name: this.scanner.substrToCursor(identStart)\n });\n\n this.scanner.skipSC();\n\n if (this.scanner.tokenType === COMMA) {\n children.appendData(this.Operator());\n children.appendData(this.parseCustomProperty\n ? this.Value(null)\n : this.Raw(this.scanner.currentToken, EXCLAMATIONMARK, SEMICOLON, false, false)\n );\n }\n\n return children;\n};\n","module.exports = {\n getNode: require('./default'),\n '-moz-element': require('../function/element'),\n 'element': require('../function/element'),\n 'expression': require('../function/expression'),\n 'var': require('../function/var')\n};\n","module.exports = {\n AtruleExpression: require('./atruleExpression'),\n Selector: require('./selector'),\n Value: require('./value')\n};\n","module.exports = {\n parse: {\n expression: null,\n block: function() {\n return this.Block(this.Declaration);\n }\n }\n};\n","var List = require('../../utils/list');\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar STRING = TYPE.String;\nvar IDENTIFIER = TYPE.Identifier;\nvar URL = TYPE.Url;\nvar LEFTPARENTHESIS = TYPE.LeftParenthesis;\n\nmodule.exports = {\n parse: {\n expression: function() {\n var children = new List();\n\n this.scanner.skipSC();\n\n switch (this.scanner.tokenType) {\n case STRING:\n children.appendData(this.String());\n break;\n\n case URL:\n children.appendData(this.Url());\n break;\n\n default:\n this.scanner.error('String or url() is expected');\n }\n\n if (this.scanner.lookupNonWSType(0) === IDENTIFIER ||\n this.scanner.lookupNonWSType(0) === LEFTPARENTHESIS) {\n children.appendData(this.WhiteSpace());\n children.appendData(this.MediaQueryList());\n }\n\n return children;\n },\n block: null\n }\n};\n","var List = require('../../utils/list');\n\nmodule.exports = {\n parse: {\n expression: function() {\n return new List().appendData(\n this.MediaQueryList()\n );\n },\n block: function() {\n return this.Block(this.Rule);\n }\n }\n};\n","var List = require('../../utils/list');\nvar TYPE = require('../../tokenizer').TYPE;\nvar LEFTCURLYBRACKET = TYPE.LeftCurlyBracket;\n\nmodule.exports = {\n parse: {\n expression: function() {\n if (this.scanner.lookupNonWSType(0) === LEFTCURLYBRACKET) {\n return null;\n }\n\n return new List().appendData(\n this.SelectorList()\n );\n },\n block: function() {\n return this.Block(this.Declaration);\n }\n }\n};\n","var List = require('../../utils/list');\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar WHITESPACE = TYPE.WhiteSpace;\nvar COMMENT = TYPE.Comment;\nvar IDENTIFIER = TYPE.Identifier;\nvar FUNCTION = TYPE.Function;\nvar LEFTPARENTHESIS = TYPE.LeftParenthesis;\nvar HYPHENMINUS = TYPE.HyphenMinus;\nvar COLON = TYPE.Colon;\n\nfunction consumeRaw() {\n return new List().appendData(\n this.Raw(this.scanner.currentToken, 0, 0, false, false)\n );\n}\n\nfunction parentheses() {\n var index = 0;\n\n this.scanner.skipSC();\n\n // TODO: make it simplier\n if (this.scanner.tokenType === IDENTIFIER) {\n index = 1;\n } else if (this.scanner.tokenType === HYPHENMINUS &&\n this.scanner.lookupType(1) === IDENTIFIER) {\n index = 2;\n }\n\n if (index !== 0 && this.scanner.lookupNonWSType(index) === COLON) {\n return new List().appendData(\n this.Declaration()\n );\n }\n\n return readSequence.call(this);\n}\n\nfunction readSequence() {\n var children = new List();\n var space = null;\n var child;\n\n this.scanner.skipSC();\n\n scan:\n while (!this.scanner.eof) {\n switch (this.scanner.tokenType) {\n case WHITESPACE:\n space = this.WhiteSpace();\n continue;\n\n case COMMENT:\n this.scanner.next();\n continue;\n\n case FUNCTION:\n child = this.Function(consumeRaw, this.scope.AtruleExpression);\n break;\n\n case IDENTIFIER:\n child = this.Identifier();\n break;\n\n case LEFTPARENTHESIS:\n child = this.Parentheses(parentheses, this.scope.AtruleExpression);\n break;\n\n default:\n break scan;\n }\n\n if (space !== null) {\n children.appendData(space);\n space = null;\n }\n\n children.appendData(child);\n }\n\n return children;\n}\n\nmodule.exports = {\n parse: {\n expression: function() {\n var children = readSequence.call(this);\n\n if (children.isEmpty()) {\n this.scanner.error('Condition is expected');\n }\n\n return children;\n },\n block: function() {\n return this.Block(this.Rule);\n }\n }\n};\n","module.exports = {\n 'font-face': require('./font-face'),\n 'import': require('./import'),\n 'media': require('./media'),\n 'page': require('./page'),\n 'supports': require('./supports')\n};\n","var List = require('../../utils/list');\n\nmodule.exports = {\n parse: function() {\n return new List().appendData(\n this.Identifier()\n );\n }\n};\n","var List = require('../../utils/list');\n\nmodule.exports = {\n parse: function() {\n return new List().appendData(\n this.SelectorList()\n );\n }\n};\n","var List = require('../../utils/list');\n\nmodule.exports = {\n parse: function() {\n return new List().appendData(\n this.Identifier()\n );\n }\n};\n","var List = require('../../../utils/list');\n\nmodule.exports = {\n parse: function selectorList() {\n return new List().appendData(\n this.SelectorList()\n );\n }\n};\n","module.exports = require('./common/selectorList');\n","module.exports = require('./common/selectorList');\n","var List = require('../../../utils/list');\nvar ALLOW_OF_CLAUSE = true;\n\nmodule.exports = {\n parse: function() {\n return new List().appendData(\n this.Nth(ALLOW_OF_CLAUSE)\n );\n }\n};\n","module.exports = require('./common/nthWithOfClause');\n","module.exports = require('./common/nthWithOfClause');\n","var List = require('../../../utils/list');\nvar DISALLOW_OF_CLAUSE = false;\n\nmodule.exports = {\n parse: function nth() {\n return new List().appendData(\n this.Nth(DISALLOW_OF_CLAUSE)\n );\n }\n};\n","module.exports = require('./common/nth');\n","module.exports = require('./common/nth');\n","var List = require('../../utils/list');\n\nmodule.exports = {\n parse: function compoundSelector() {\n return new List().appendData(\n this.Selector()\n );\n }\n};\n","module.exports = {\n 'dir': require('./dir'),\n 'has': require('./has'),\n 'lang': require('./lang'),\n 'matches': require('./matches'),\n 'not': require('./not'),\n 'nth-child': require('./nth-child'),\n 'nth-last-child': require('./nth-last-child'),\n 'nth-last-of-type': require('./nth-last-of-type'),\n 'nth-of-type': require('./nth-of-type'),\n 'slotted': require('./slotted')\n};\n","var cmpChar = require('../../tokenizer').cmpChar;\nvar isNumber = require('../../tokenizer').isNumber;\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar IDENTIFIER = TYPE.Identifier;\nvar NUMBER = TYPE.Number;\nvar PLUSSIGN = TYPE.PlusSign;\nvar HYPHENMINUS = TYPE.HyphenMinus;\nvar N = 110; // 'n'.charCodeAt(0)\nvar DISALLOW_SIGN = true;\nvar ALLOW_SIGN = false;\n\nfunction checkTokenIsInteger(scanner, disallowSign) {\n var pos = scanner.tokenStart;\n\n if (scanner.source.charCodeAt(pos) === PLUSSIGN ||\n scanner.source.charCodeAt(pos) === HYPHENMINUS) {\n if (disallowSign) {\n scanner.error();\n }\n pos++;\n }\n\n for (; pos < scanner.tokenEnd; pos++) {\n if (!isNumber(scanner.source.charCodeAt(pos))) {\n scanner.error('Unexpected input', pos);\n }\n }\n}\n\n// An+B microsyntax https://www.w3.org/TR/css-syntax-3/#anb\nmodule.exports = {\n name: 'AnPlusB',\n structure: {\n a: [String, null],\n b: [String, null]\n },\n parse: function() {\n var start = this.scanner.tokenStart;\n var end = start;\n var prefix = '';\n var a = null;\n var b = null;\n\n if (this.scanner.tokenType === NUMBER ||\n this.scanner.tokenType === PLUSSIGN) {\n checkTokenIsInteger(this.scanner, ALLOW_SIGN);\n prefix = this.scanner.getTokenValue();\n this.scanner.next();\n end = this.scanner.tokenStart;\n }\n\n if (this.scanner.tokenType === IDENTIFIER) {\n var bStart = this.scanner.tokenStart;\n\n if (cmpChar(this.scanner.source, bStart, HYPHENMINUS)) {\n if (prefix === '') {\n prefix = '-';\n bStart++;\n } else {\n this.scanner.error('Unexpected hyphen minus');\n }\n }\n\n if (!cmpChar(this.scanner.source, bStart, N)) {\n this.scanner.error();\n }\n\n a = prefix === '' ? '1' :\n prefix === '+' ? '+1' :\n prefix === '-' ? '-1' :\n prefix;\n\n var len = this.scanner.tokenEnd - bStart;\n if (len > 1) {\n // ..n-..\n if (this.scanner.source.charCodeAt(bStart + 1) !== HYPHENMINUS) {\n this.scanner.error('Unexpected input', bStart + 1);\n }\n\n if (len > 2) {\n // ..n-{number}..\n this.scanner.tokenStart = bStart + 2;\n } else {\n // ..n- {number}\n this.scanner.next();\n this.scanner.skipSC();\n }\n\n checkTokenIsInteger(this.scanner, DISALLOW_SIGN);\n b = '-' + this.scanner.getTokenValue();\n this.scanner.next();\n end = this.scanner.tokenStart;\n } else {\n prefix = '';\n this.scanner.next();\n end = this.scanner.tokenStart;\n this.scanner.skipSC();\n\n if (this.scanner.tokenType === HYPHENMINUS ||\n this.scanner.tokenType === PLUSSIGN) {\n prefix = this.scanner.getTokenValue();\n this.scanner.next();\n this.scanner.skipSC();\n }\n\n if (this.scanner.tokenType === NUMBER) {\n checkTokenIsInteger(this.scanner, prefix !== '');\n\n if (!isNumber(this.scanner.source.charCodeAt(this.scanner.tokenStart))) {\n prefix = this.scanner.source.charAt(this.scanner.tokenStart);\n this.scanner.tokenStart++;\n }\n\n if (prefix === '') {\n // should be an operator before number\n this.scanner.error();\n } else if (prefix === '+') {\n // plus is using by default\n prefix = '';\n }\n\n b = prefix + this.scanner.getTokenValue();\n\n this.scanner.next();\n end = this.scanner.tokenStart;\n } else {\n if (prefix) {\n this.scanner.eat(NUMBER);\n }\n }\n }\n } else {\n if (prefix === '' || prefix === '+') { // no number\n this.scanner.error(\n 'Number or identifier is expected',\n this.scanner.tokenStart + (\n this.scanner.tokenType === PLUSSIGN ||\n this.scanner.tokenType === HYPHENMINUS\n )\n );\n }\n\n b = prefix;\n }\n\n return {\n type: 'AnPlusB',\n loc: this.getLocation(start, end),\n a: a,\n b: b\n };\n },\n generate: function(processChunk, node) {\n var a = node.a !== null && node.a !== undefined;\n var b = node.b !== null && node.b !== undefined;\n\n if (a) {\n processChunk(\n node.a === '+1' ? '+n' :\n node.a === '1' ? 'n' :\n node.a === '-1' ? '-n' :\n node.a + 'n'\n );\n\n if (b) {\n b = String(node.b);\n if (b.charAt(0) === '-' || b.charAt(0) === '+') {\n processChunk(b.charAt(0));\n processChunk(b.substr(1));\n } else {\n processChunk('+');\n processChunk(b);\n }\n }\n } else {\n processChunk(String(node.b));\n }\n }\n};\n","var TYPE = require('../../tokenizer').TYPE;\n\nvar ATRULE = TYPE.Atrule;\nvar SEMICOLON = TYPE.Semicolon;\nvar LEFTCURLYBRACKET = TYPE.LeftCurlyBracket;\nvar RIGHTCURLYBRACKET = TYPE.RightCurlyBracket;\n\nfunction isBlockAtrule() {\n for (var offset = 1, type; type = this.scanner.lookupType(offset); offset++) {\n if (type === RIGHTCURLYBRACKET) {\n return true;\n }\n\n if (type === LEFTCURLYBRACKET ||\n type === ATRULE) {\n return false;\n }\n }\n\n this.scanner.skip(offset);\n this.scanner.eat(RIGHTCURLYBRACKET);\n}\n\nmodule.exports = {\n name: 'Atrule',\n structure: {\n name: String,\n expression: ['AtruleExpression', null],\n block: ['Block', null]\n },\n parse: function() {\n var start = this.scanner.tokenStart;\n var name;\n var nameLowerCase;\n var expression = null;\n var block = null;\n\n this.scanner.eat(ATRULE);\n\n name = this.scanner.substrToCursor(start + 1);\n nameLowerCase = name.toLowerCase();\n this.scanner.skipSC();\n\n expression = this.AtruleExpression(name);\n\n // turn empty AtruleExpression into null\n if (expression.children.head === null) {\n expression = null;\n }\n\n this.scanner.skipSC();\n\n if (this.atrule.hasOwnProperty(nameLowerCase)) {\n if (typeof this.atrule[nameLowerCase].block === 'function') {\n if (this.scanner.tokenType !== LEFTCURLYBRACKET) {\n // FIXME: make tolerant\n this.scanner.error('Curly bracket is expected');\n }\n\n block = this.atrule[nameLowerCase].block.call(this);\n } else {\n if (!this.tolerant || !this.scanner.eof) {\n this.scanner.eat(SEMICOLON);\n }\n }\n } else {\n switch (this.scanner.tokenType) {\n case SEMICOLON:\n this.scanner.next();\n break;\n\n case LEFTCURLYBRACKET:\n // TODO: should consume block content as Raw?\n block = this.Block(isBlockAtrule.call(this) ? this.Declaration : this.Rule);\n break;\n\n default:\n if (!this.tolerant) {\n this.scanner.error('Semicolon or block is expected');\n }\n }\n }\n\n return {\n type: 'Atrule',\n loc: this.getLocation(start, this.scanner.tokenStart),\n name: name,\n expression: expression,\n block: block\n };\n },\n generate: function(processChunk, node) {\n processChunk('@');\n processChunk(node.name);\n\n if (node.expression !== null) {\n processChunk(' ');\n this.generate(processChunk, node.expression);\n }\n\n if (node.block) {\n this.generate(processChunk, node.block);\n } else {\n processChunk(';');\n }\n },\n walkContext: 'atrule'\n};\n","var List = require('../../utils/list');\n\nvar TYPE = require('../../tokenizer').TYPE;\nvar SEMICOLON = TYPE.Semicolon;\nvar LEFTCURLYBRACKET = TYPE.LeftCurlyBracket;\n\nfunction consumeRaw(startToken) {\n return new List().appendData(\n this.Raw(startToken, SEMICOLON, LEFTCURLYBRACKET, false, true)\n );\n}\n\nfunction consumeDefaultSequence() {\n return this.readSequence(this.scope.AtruleExpression);\n}\n\nmodule.exports = {\n name: 'AtruleExpression',\n structure: {\n children: [[]]\n },\n parse: function(name) {\n var children = null;\n var startToken = this.scanner.currentToken;\n\n if (name !== null) {\n name = name.toLowerCase();\n }\n\n if (this.parseAtruleExpression) {\n // custom consumer\n if (this.atrule.hasOwnProperty(name)) {\n if (typeof this.atrule[name].expression === 'function') {\n children = this.tolerantParse(this.atrule[name].expression, consumeRaw);\n }\n } else {\n // default consumer\n this.scanner.skipSC();\n children = this.tolerantParse(consumeDefaultSequence, consumeRaw);\n }\n\n if (this.tolerant) {\n if (this.scanner.eof || (this.scanner.tokenType !== SEMICOLON && this.scanner.tokenType !== LEFTCURLYBRACKET)) {\n children = consumeRaw.call(this, startToken);\n }\n }\n } else {\n children = consumeRaw.call(this, startToken);\n }\n\n if (children === null) {\n children = new List();\n }\n\n return {\n type: 'AtruleExpression',\n loc: this.getLocationFromList(children),\n children: children\n };\n },\n generate: function(processChunk, node) {\n this.each(processChunk, node);\n },\n walkContext: 'atruleExpression'\n};\n","var TYPE = require('../../tokenizer').TYPE;\n\nvar IDENTIFIER = TYPE.Identifier;\nvar STRING = TYPE.String;\nvar DOLLARSIGN = TYPE.DollarSign;\nvar ASTERISK = TYPE.Asterisk;\nvar COLON = TYPE.Colon;\nvar EQUALSSIGN = TYPE.EqualsSign;\nvar LEFTSQUAREBRACKET = TYPE.LeftSquareBracket;\nvar RIGHTSQUAREBRACKET = TYPE.RightSquareBracket;\nvar CIRCUMFLEXACCENT = TYPE.CircumflexAccent;\nvar VERTICALLINE = TYPE.VerticalLine;\nvar TILDE = TYPE.Tilde;\n\nfunction getAttributeName() {\n if (this.scanner.eof) {\n this.scanner.error('Unexpected end of input');\n }\n\n var start = this.scanner.tokenStart;\n var expectIdentifier = false;\n var checkColon = true;\n\n if (this.scanner.tokenType === ASTERISK) {\n expectIdentifier = true;\n checkColon = false;\n this.scanner.next();\n } else if (this.scanner.tokenType !== VERTICALLINE) {\n this.scanner.eat(IDENTIFIER);\n }\n\n if (this.scanner.tokenType === VERTICALLINE) {\n if (this.scanner.lookupType(1) !== EQUALSSIGN) {\n this.scanner.next();\n this.scanner.eat(IDENTIFIER);\n } else if (expectIdentifier) {\n this.scanner.error('Identifier is expected', this.scanner.tokenEnd);\n }\n } else if (expectIdentifier) {\n this.scanner.error('Vertical line is expected');\n }\n\n if (checkColon && this.scanner.tokenType === COLON) {\n this.scanner.next();\n this.scanner.eat(IDENTIFIER);\n }\n\n return {\n type: 'Identifier',\n loc: this.getLocation(start, this.scanner.tokenStart),\n name: this.scanner.substrToCursor(start)\n };\n}\n\nfunction getOperator() {\n var start = this.scanner.tokenStart;\n var tokenType = this.scanner.tokenType;\n\n if (tokenType !== EQUALSSIGN && // =\n tokenType !== TILDE && // ~=\n tokenType !== CIRCUMFLEXACCENT && // ^=\n tokenType !== DOLLARSIGN && // $=\n tokenType !== ASTERISK && // *=\n tokenType !== VERTICALLINE // |=\n ) {\n this.scanner.error('Attribute selector (=, ~=, ^=, $=, *=, |=) is expected');\n }\n\n if (tokenType === EQUALSSIGN) {\n this.scanner.next();\n } else {\n this.scanner.next();\n this.scanner.eat(EQUALSSIGN);\n }\n\n return this.scanner.substrToCursor(start);\n}\n\n// '[' S* attrib_name ']'\n// '[' S* attrib_name S* attrib_matcher S* [ IDENT | STRING ] S* attrib_flags? S* ']'\nmodule.exports = {\n name: 'AttributeSelector',\n structure: {\n name: 'Identifier',\n matcher: [String, null],\n value: ['String', 'Identifier', null],\n flags: [String, null]\n },\n parse: function() {\n var start = this.scanner.tokenStart;\n var name;\n var matcher = null;\n var value = null;\n var flags = null;\n\n this.scanner.eat(LEFTSQUAREBRACKET);\n this.scanner.skipSC();\n\n name = getAttributeName.call(this);\n this.scanner.skipSC();\n\n if (this.scanner.tokenType !== RIGHTSQUAREBRACKET) {\n // avoid case `[name i]`\n if (this.scanner.tokenType !== IDENTIFIER) {\n matcher = getOperator.call(this);\n\n this.scanner.skipSC();\n\n value = this.scanner.tokenType === STRING\n ? this.String()\n : this.Identifier();\n\n this.scanner.skipSC();\n }\n\n // attribute flags\n if (this.scanner.tokenType === IDENTIFIER) {\n flags = this.scanner.getTokenValue();\n this.scanner.next();\n\n this.scanner.skipSC();\n }\n }\n\n this.scanner.eat(RIGHTSQUAREBRACKET);\n\n return {\n type: 'AttributeSelector',\n loc: this.getLocation(start, this.scanner.tokenStart),\n name: name,\n matcher: matcher,\n value: value,\n flags: flags\n };\n },\n generate: function(processChunk, node) {\n var flagsPrefix = ' ';\n\n processChunk('[');\n this.generate(processChunk, node.name);\n\n if (node.matcher !== null) {\n processChunk(node.matcher);\n\n if (node.value !== null) {\n this.generate(processChunk, node.value);\n\n // space between string and flags is not required\n if (node.value.type === 'String') {\n flagsPrefix = '';\n }\n }\n }\n\n if (node.flags !== null) {\n processChunk(flagsPrefix);\n processChunk(node.flags);\n }\n\n processChunk(']');\n }\n};\n","var List = require('../../utils/list');\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar WHITESPACE = TYPE.WhiteSpace;\nvar COMMENT = TYPE.Comment;\nvar SEMICOLON = TYPE.Semicolon;\nvar ATRULE = TYPE.Atrule;\nvar LEFTCURLYBRACKET = TYPE.LeftCurlyBracket;\nvar RIGHTCURLYBRACKET = TYPE.RightCurlyBracket;\n\nfunction consumeRaw(startToken) {\n return this.Raw(startToken, 0, SEMICOLON, true, true);\n}\n\nmodule.exports = {\n name: 'Block',\n structure: {\n children: [['Atrule', 'Rule', 'Declaration']]\n },\n parse: function(defaultConsumer) {\n if (!defaultConsumer) {\n defaultConsumer = this.Declaration;\n }\n\n var start = this.scanner.tokenStart;\n var children = new List();\n\n this.scanner.eat(LEFTCURLYBRACKET);\n\n scan:\n while (!this.scanner.eof) {\n switch (this.scanner.tokenType) {\n case RIGHTCURLYBRACKET:\n break scan;\n\n case WHITESPACE:\n case COMMENT:\n case SEMICOLON:\n this.scanner.next();\n break;\n\n case ATRULE:\n children.appendData(this.tolerantParse(this.Atrule, consumeRaw));\n break;\n\n default:\n children.appendData(this.tolerantParse(defaultConsumer, consumeRaw));\n }\n }\n\n if (!this.tolerant || !this.scanner.eof) {\n this.scanner.eat(RIGHTCURLYBRACKET);\n }\n\n return {\n type: 'Block',\n loc: this.getLocation(start, this.scanner.tokenStart),\n children: children\n };\n },\n generate: function(processChunk, node) {\n processChunk('{');\n this.each(processChunk, node);\n processChunk('}');\n },\n walkContext: 'block'\n};\n","var TYPE = require('../../tokenizer').TYPE;\nvar LEFTSQUAREBRACKET = TYPE.LeftSquareBracket;\nvar RIGHTSQUAREBRACKET = TYPE.RightSquareBracket;\n\n// currently only Grid Layout uses square brackets, but left it universal\n// https://drafts.csswg.org/css-grid/#track-sizing\n// [ ident* ]\nmodule.exports = {\n name: 'Brackets',\n structure: {\n children: [[]]\n },\n parse: function(readSequence, recognizer) {\n var start = this.scanner.tokenStart;\n var children = null;\n\n this.scanner.eat(LEFTSQUAREBRACKET);\n children = readSequence.call(this, recognizer);\n this.scanner.eat(RIGHTSQUAREBRACKET);\n\n return {\n type: 'Brackets',\n loc: this.getLocation(start, this.scanner.tokenStart),\n children: children\n };\n },\n generate: function(processChunk, node) {\n processChunk('[');\n this.each(processChunk, node);\n processChunk(']');\n }\n};\n","var CDC = require('../../tokenizer').TYPE.CDC;\n\nmodule.exports = {\n name: 'CDC',\n structure: [],\n parse: function() {\n var start = this.scanner.tokenStart;\n\n this.scanner.eat(CDC); // -->\n\n return {\n type: 'CDC',\n loc: this.getLocation(start, this.scanner.tokenStart)\n };\n },\n generate: function(processChunk) {\n processChunk('-->');\n }\n};\n","var CDO = require('../../tokenizer').TYPE.CDO;\n\nmodule.exports = {\n name: 'CDO',\n structure: [],\n parse: function() {\n var start = this.scanner.tokenStart;\n\n this.scanner.eat(CDO); // <!--\n\n return {\n type: 'CDO',\n loc: this.getLocation(start, this.scanner.tokenStart)\n };\n },\n generate: function(processChunk) {\n processChunk('<!--');\n }\n};\n","var TYPE = require('../../tokenizer').TYPE;\nvar IDENTIFIER = TYPE.Identifier;\nvar FULLSTOP = TYPE.FullStop;\n\n// '.' ident\nmodule.exports = {\n name: 'ClassSelector',\n structure: {\n name: String\n },\n parse: function() {\n this.scanner.eat(FULLSTOP);\n\n return {\n type: 'ClassSelector',\n loc: this.getLocation(this.scanner.tokenStart - 1, this.scanner.tokenEnd),\n name: this.scanner.consume(IDENTIFIER)\n };\n },\n generate: function(processChunk, node) {\n processChunk('.');\n processChunk(node.name);\n }\n};\n","var TYPE = require('../../tokenizer').TYPE;\n\nvar PLUSSIGN = TYPE.PlusSign;\nvar SOLIDUS = TYPE.Solidus;\nvar GREATERTHANSIGN = TYPE.GreaterThanSign;\nvar TILDE = TYPE.Tilde;\n\n// + | > | ~ | /deep/\nmodule.exports = {\n name: 'Combinator',\n structure: {\n name: String\n },\n parse: function() {\n var start = this.scanner.tokenStart;\n\n switch (this.scanner.tokenType) {\n case GREATERTHANSIGN:\n case PLUSSIGN:\n case TILDE:\n this.scanner.next();\n break;\n\n case SOLIDUS:\n this.scanner.next();\n this.scanner.expectIdentifier('deep');\n this.scanner.eat(SOLIDUS);\n break;\n\n default:\n this.scanner.error('Combinator is expected');\n }\n\n return {\n type: 'Combinator',\n loc: this.getLocation(start, this.scanner.tokenStart),\n name: this.scanner.substrToCursor(start)\n };\n },\n generate: function(processChunk, node) {\n processChunk(node.name);\n }\n};\n","var TYPE = require('../../tokenizer').TYPE;\n\nvar ASTERISK = TYPE.Asterisk;\nvar SOLIDUS = TYPE.Solidus;\n\n// '/*' .* '*/'\nmodule.exports = {\n name: 'Comment',\n structure: {\n value: String\n },\n parse: function() {\n var start = this.scanner.tokenStart;\n var end = this.scanner.tokenEnd;\n\n if ((end - start + 2) >= 2 &&\n this.scanner.source.charCodeAt(end - 2) === ASTERISK &&\n this.scanner.source.charCodeAt(end - 1) === SOLIDUS) {\n end -= 2;\n }\n\n this.scanner.next();\n\n return {\n type: 'Comment',\n loc: this.getLocation(start, this.scanner.tokenStart),\n value: this.scanner.source.substring(start + 2, end)\n };\n },\n generate: function(processChunk, node) {\n processChunk('/*');\n processChunk(node.value);\n processChunk('*/');\n }\n};\n","var TYPE = require('../../tokenizer').TYPE;\n\nvar IDENTIFIER = TYPE.Identifier;\nvar COLON = TYPE.Colon;\nvar EXCLAMATIONMARK = TYPE.ExclamationMark;\nvar SOLIDUS = TYPE.Solidus;\nvar ASTERISK = TYPE.Asterisk;\nvar DOLLARSIGN = TYPE.DollarSign;\nvar HYPHENMINUS = TYPE.HyphenMinus;\nvar SEMICOLON = TYPE.Semicolon;\nvar RIGHTCURLYBRACKET = TYPE.RightCurlyBracket;\nvar RIGHTPARENTHESIS = TYPE.RightParenthesis;\nvar PLUSSIGN = TYPE.PlusSign;\nvar NUMBERSIGN = TYPE.NumberSign;\n\nmodule.exports = {\n name: 'Declaration',\n structure: {\n important: [Boolean, String],\n property: String,\n value: ['Value', 'Raw']\n },\n parse: function() {\n var start = this.scanner.tokenStart;\n var property = readProperty.call(this);\n var important = false;\n var value;\n\n this.scanner.skipSC();\n this.scanner.eat(COLON);\n\n if (isCustomProperty(property) ? this.parseCustomProperty : this.parseValue) {\n value = this.Value(property);\n } else {\n value = this.Raw(this.scanner.currentToken, EXCLAMATIONMARK, SEMICOLON, false, false);\n }\n\n if (this.scanner.tokenType === EXCLAMATIONMARK) {\n important = getImportant(this.scanner);\n this.scanner.skipSC();\n }\n\n // TODO: include or not to include semicolon to range?\n // if (this.scanner.tokenType === SEMICOLON) {\n // this.scanner.next();\n // }\n\n if (!this.scanner.eof &&\n this.scanner.tokenType !== SEMICOLON &&\n this.scanner.tokenType !== RIGHTPARENTHESIS &&\n this.scanner.tokenType !== RIGHTCURLYBRACKET) {\n this.scanner.error();\n }\n\n return {\n type: 'Declaration',\n loc: this.getLocation(start, this.scanner.tokenStart),\n important: important,\n property: property,\n value: value\n };\n },\n generate: function(processChunk, node, item) {\n processChunk(node.property);\n processChunk(':');\n this.generate(processChunk, node.value);\n\n if (node.important) {\n processChunk(node.important === true ? '!important' : '!' + node.important);\n }\n\n if (item && item.next) {\n processChunk(';');\n }\n },\n walkContext: 'declaration'\n};\n\nfunction isCustomProperty(name) {\n return name.length >= 2 &&\n name.charCodeAt(0) === HYPHENMINUS &&\n name.charCodeAt(1) === HYPHENMINUS;\n}\n\nfunction readProperty() {\n var start = this.scanner.tokenStart;\n var prefix = 0;\n\n // hacks\n switch (this.scanner.tokenType) {\n case ASTERISK:\n case DOLLARSIGN:\n case PLUSSIGN:\n case NUMBERSIGN:\n prefix = 1;\n break;\n\n // TODO: not sure we should support this hack\n case SOLIDUS:\n prefix = this.scanner.lookupType(1) === SOLIDUS ? 2 : 1;\n break;\n }\n\n if (this.scanner.lookupType(prefix) === HYPHENMINUS) {\n prefix++;\n }\n\n if (prefix) {\n this.scanner.skip(prefix);\n }\n\n this.scanner.eat(IDENTIFIER);\n\n return this.scanner.substrToCursor(start);\n}\n\n// ! ws* important\nfunction getImportant(scanner) {\n scanner.eat(EXCLAMATIONMARK);\n scanner.skipSC();\n\n var important = scanner.consume(IDENTIFIER);\n\n // store original value in case it differ from `important`\n // for better original source restoring and hacks like `!ie` support\n return important === 'important' ? true : important;\n}\n","var List = require('../../utils/list');\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar WHITESPACE = TYPE.WhiteSpace;\nvar COMMENT = TYPE.Comment;\nvar SEMICOLON = TYPE.Semicolon;\n\nfunction consumeRaw(startToken) {\n return this.Raw(startToken, 0, SEMICOLON, true, true);\n}\n\nmodule.exports = {\n name: 'DeclarationList',\n structure: {\n children: [['Declaration']]\n },\n parse: function() {\n var children = new List();\n\n scan:\n while (!this.scanner.eof) {\n switch (this.scanner.tokenType) {\n case WHITESPACE:\n case COMMENT:\n case SEMICOLON:\n this.scanner.next();\n break;\n\n default:\n children.appendData(this.tolerantParse(this.Declaration, consumeRaw));\n }\n }\n\n return {\n type: 'DeclarationList',\n loc: this.getLocationFromList(children),\n children: children\n };\n },\n generate: function(processChunk, node) {\n this.each(processChunk, node);\n }\n};\n","var NUMBER = require('../../tokenizer').TYPE.Number;\n\n// special reader for units to avoid adjoined IE hacks (i.e. '1px\\9')\nfunction readUnit(scanner) {\n var unit = scanner.getTokenValue();\n var backSlashPos = unit.indexOf('\\\\');\n\n if (backSlashPos > 0) {\n // patch token offset\n scanner.tokenStart += backSlashPos;\n\n // return part before backslash\n return unit.substring(0, backSlashPos);\n }\n\n // no backslash in unit name\n scanner.next();\n\n return unit;\n}\n\n// number ident\nmodule.exports = {\n name: 'Dimension',\n structure: {\n value: String,\n unit: String\n },\n parse: function() {\n var start = this.scanner.tokenStart;\n var value = this.scanner.consume(NUMBER);\n var unit = readUnit(this.scanner);\n\n return {\n type: 'Dimension',\n loc: this.getLocation(start, this.scanner.tokenStart),\n value: value,\n unit: unit\n };\n },\n generate: function(processChunk, node) {\n processChunk(node.value);\n processChunk(node.unit);\n }\n};\n","var TYPE = require('../../tokenizer').TYPE;\nvar RIGHTPARENTHESIS = TYPE.RightParenthesis;\n\n// <function-token> <sequence> ')'\nmodule.exports = {\n name: 'Function',\n structure: {\n name: String,\n children: [[]]\n },\n parse: function(readSequence, recognizer) {\n var start = this.scanner.tokenStart;\n var name = this.scanner.consumeFunctionName();\n var nameLowerCase = name.toLowerCase();\n var children;\n\n children = recognizer.hasOwnProperty(nameLowerCase)\n ? recognizer[nameLowerCase].call(this, recognizer)\n : readSequence.call(this, recognizer);\n\n this.scanner.eat(RIGHTPARENTHESIS);\n\n return {\n type: 'Function',\n loc: this.getLocation(start, this.scanner.tokenStart),\n name: name,\n children: children\n };\n },\n generate: function(processChunk, node) {\n processChunk(node.name);\n processChunk('(');\n this.each(processChunk, node);\n processChunk(')');\n },\n walkContext: 'function'\n};\n","var isHex = require('../../tokenizer').isHex;\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar IDENTIFIER = TYPE.Identifier;\nvar NUMBER = TYPE.Number;\nvar NUMBERSIGN = TYPE.NumberSign;\n\nfunction consumeHexSequence(scanner, required) {\n if (!isHex(scanner.source.charCodeAt(scanner.tokenStart))) {\n if (required) {\n scanner.error('Unexpected input', scanner.tokenStart);\n } else {\n return;\n }\n }\n\n for (var pos = scanner.tokenStart + 1; pos < scanner.tokenEnd; pos++) {\n var code = scanner.source.charCodeAt(pos);\n\n // break on non-hex char\n if (!isHex(code)) {\n // break token, exclude symbol\n scanner.tokenStart = pos;\n return;\n }\n }\n\n // token is full hex sequence, go to next token\n scanner.next();\n}\n\n// # ident\nmodule.exports = {\n name: 'HexColor',\n structure: {\n value: String\n },\n parse: function() {\n var start = this.scanner.tokenStart;\n\n this.scanner.eat(NUMBERSIGN);\n\n scan:\n switch (this.scanner.tokenType) {\n case NUMBER:\n consumeHexSequence(this.scanner, true);\n\n // if token is identifier then number consists of hex only,\n // try to add identifier to result\n if (this.scanner.tokenType === IDENTIFIER) {\n consumeHexSequence(this.scanner, false);\n }\n\n break;\n\n case IDENTIFIER:\n consumeHexSequence(this.scanner, true);\n break;\n\n default:\n this.scanner.error('Number or identifier is expected');\n }\n\n return {\n type: 'HexColor',\n loc: this.getLocation(start, this.scanner.tokenStart),\n value: this.scanner.substrToCursor(start + 1) // skip #\n };\n },\n generate: function(processChunk, node) {\n processChunk('#');\n processChunk(node.value);\n }\n};\n","var TYPE = require('../../tokenizer').TYPE;\nvar IDENTIFIER = TYPE.Identifier;\n\nmodule.exports = {\n name: 'Identifier',\n structure: {\n name: String\n },\n parse: function() {\n return {\n type: 'Identifier',\n loc: this.getLocation(this.scanner.tokenStart, this.scanner.tokenEnd),\n name: this.scanner.consume(IDENTIFIER)\n };\n },\n generate: function(processChunk, node) {\n processChunk(node.name);\n }\n};\n","var TYPE = require('../../tokenizer').TYPE;\nvar IDENTIFIER = TYPE.Identifier;\nvar NUMBERSIGN = TYPE.NumberSign;\n\n// '#' ident\nmodule.exports = {\n name: 'IdSelector',\n structure: {\n name: String\n },\n parse: function() {\n this.scanner.eat(NUMBERSIGN);\n\n return {\n type: 'IdSelector',\n loc: this.getLocation(this.scanner.tokenStart - 1, this.scanner.tokenEnd),\n name: this.scanner.consume(IDENTIFIER)\n };\n },\n generate: function(processChunk, node) {\n processChunk('#');\n processChunk(node.name);\n }\n};\n","var TYPE = require('../../tokenizer').TYPE;\n\nvar IDENTIFIER = TYPE.Identifier;\nvar NUMBER = TYPE.Number;\nvar LEFTPARENTHESIS = TYPE.LeftParenthesis;\nvar RIGHTPARENTHESIS = TYPE.RightParenthesis;\nvar COLON = TYPE.Colon;\nvar SOLIDUS = TYPE.Solidus;\n\nmodule.exports = {\n name: 'MediaFeature',\n structure: {\n name: String,\n value: ['Identifier', 'Number', 'Dimension', 'Ratio', null]\n },\n parse: function() {\n var start = this.scanner.tokenStart;\n var name;\n var value = null;\n\n this.scanner.eat(LEFTPARENTHESIS);\n this.scanner.skipSC();\n\n name = this.scanner.consume(IDENTIFIER);\n this.scanner.skipSC();\n\n if (this.scanner.tokenType !== RIGHTPARENTHESIS) {\n this.scanner.eat(COLON);\n this.scanner.skipSC();\n\n switch (this.scanner.tokenType) {\n case NUMBER:\n if (this.scanner.lookupType(1) === IDENTIFIER) {\n value = this.Dimension();\n } else if (this.scanner.lookupNonWSType(1) === SOLIDUS) {\n value = this.Ratio();\n } else {\n value = this.Number();\n }\n\n break;\n\n case IDENTIFIER:\n value = this.Identifier();\n\n break;\n\n default:\n this.scanner.error('Number, dimension, ratio or identifier is expected');\n }\n\n this.scanner.skipSC();\n }\n\n this.scanner.eat(RIGHTPARENTHESIS);\n\n return {\n type: 'MediaFeature',\n loc: this.getLocation(start, this.scanner.tokenStart),\n name: name,\n value: value\n };\n },\n generate: function(processChunk, node) {\n processChunk('(');\n processChunk(node.name);\n if (node.value !== null) {\n processChunk(':');\n this.generate(processChunk, node.value);\n }\n processChunk(')');\n }\n};\n","var List = require('../../utils/list');\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar WHITESPACE = TYPE.WhiteSpace;\nvar COMMENT = TYPE.Comment;\nvar IDENTIFIER = TYPE.Identifier;\nvar LEFTPARENTHESIS = TYPE.LeftParenthesis;\n\nmodule.exports = {\n name: 'MediaQuery',\n structure: {\n children: [['Identifier', 'MediaFeature', 'WhiteSpace']]\n },\n parse: function() {\n this.scanner.skipSC();\n\n var children = new List();\n var child = null;\n var space = null;\n\n scan:\n while (!this.scanner.eof) {\n switch (this.scanner.tokenType) {\n case COMMENT:\n this.scanner.next();\n continue;\n\n case WHITESPACE:\n space = this.WhiteSpace();\n continue;\n\n case IDENTIFIER:\n child = this.Identifier();\n break;\n\n case LEFTPARENTHESIS:\n child = this.MediaFeature();\n break;\n\n default:\n break scan;\n }\n\n if (space !== null) {\n children.appendData(space);\n space = null;\n }\n\n children.appendData(child);\n }\n\n if (child === null) {\n this.scanner.error('Identifier or parenthesis is expected');\n }\n\n return {\n type: 'MediaQuery',\n loc: this.getLocationFromList(children),\n children: children\n };\n },\n generate: function(processChunk, node) {\n this.each(processChunk, node);\n }\n};\n","var List = require('../../utils/list');\nvar COMMA = require('../../tokenizer').TYPE.Comma;\n\nmodule.exports = {\n name: 'MediaQueryList',\n structure: {\n children: [['MediaQuery']]\n },\n parse: function(relative) {\n var children = new List();\n\n this.scanner.skipSC();\n\n while (!this.scanner.eof) {\n children.appendData(this.MediaQuery(relative));\n\n if (this.scanner.tokenType !== COMMA) {\n break;\n }\n\n this.scanner.next();\n }\n\n return {\n type: 'MediaQueryList',\n loc: this.getLocationFromList(children),\n children: children\n };\n },\n generate: function(processChunk, node) {\n this.eachComma(processChunk, node);\n }\n};\n","// https://drafts.csswg.org/css-syntax-3/#the-anb-type\nmodule.exports = {\n name: 'Nth',\n structure: {\n nth: ['AnPlusB', 'Identifier'],\n selector: ['SelectorList', null]\n },\n parse: function(allowOfClause) {\n this.scanner.skipSC();\n\n var start = this.scanner.tokenStart;\n var end = start;\n var selector = null;\n var query;\n\n if (this.scanner.lookupValue(0, 'odd') || this.scanner.lookupValue(0, 'even')) {\n query = this.Identifier();\n } else {\n query = this.AnPlusB();\n }\n\n this.scanner.skipSC();\n\n if (allowOfClause && this.scanner.lookupValue(0, 'of')) {\n this.scanner.next();\n\n selector = this.SelectorList();\n\n if (this.needPositions) {\n end = selector.children.last().loc.end.offset;\n }\n } else {\n if (this.needPositions) {\n end = query.loc.end.offset;\n }\n }\n\n return {\n type: 'Nth',\n loc: this.getLocation(start, end),\n nth: query,\n selector: selector\n };\n },\n generate: function(processChunk, node) {\n this.generate(processChunk, node.nth);\n if (node.selector !== null) {\n processChunk(' of ');\n this.generate(processChunk, node.selector);\n }\n }\n};\n","var NUMBER = require('../../tokenizer').TYPE.Number;\n\nmodule.exports = {\n name: 'Number',\n structure: {\n value: String\n },\n parse: function() {\n return {\n type: 'Number',\n loc: this.getLocation(this.scanner.tokenStart, this.scanner.tokenEnd),\n value: this.scanner.consume(NUMBER)\n };\n },\n generate: function(processChunk, node) {\n processChunk(node.value);\n }\n};\n","// '/' | '*' | ',' | ':' | '+' | '-'\nmodule.exports = {\n name: 'Operator',\n structure: {\n value: String\n },\n parse: function() {\n var start = this.scanner.tokenStart;\n\n this.scanner.next();\n\n return {\n type: 'Operator',\n loc: this.getLocation(start, this.scanner.tokenStart),\n value: this.scanner.substrToCursor(start)\n };\n },\n generate: function(processChunk, node) {\n processChunk(node.value);\n }\n};\n","var TYPE = require('../../tokenizer').TYPE;\nvar LEFTPARENTHESIS = TYPE.LeftParenthesis;\nvar RIGHTPARENTHESIS = TYPE.RightParenthesis;\n\nmodule.exports = {\n name: 'Parentheses',\n structure: {\n children: [[]]\n },\n parse: function(readSequence, recognizer) {\n var start = this.scanner.tokenStart;\n var children = null;\n\n this.scanner.eat(LEFTPARENTHESIS);\n children = readSequence.call(this, recognizer);\n this.scanner.eat(RIGHTPARENTHESIS);\n\n return {\n type: 'Parentheses',\n loc: this.getLocation(start, this.scanner.tokenStart),\n children: children\n };\n },\n generate: function(processChunk, node) {\n processChunk('(');\n this.each(processChunk, node);\n processChunk(')');\n }\n};\n","var TYPE = require('../../tokenizer').TYPE;\n\nvar NUMBER = TYPE.Number;\nvar PERCENTSIGN = TYPE.PercentSign;\n\nmodule.exports = {\n name: 'Percentage',\n structure: {\n value: String\n },\n parse: function() {\n var start = this.scanner.tokenStart;\n var number = this.scanner.consume(NUMBER);\n\n this.scanner.eat(PERCENTSIGN);\n\n return {\n type: 'Percentage',\n loc: this.getLocation(start, this.scanner.tokenStart),\n value: number\n };\n },\n generate: function(processChunk, node) {\n processChunk(node.value);\n processChunk('%');\n }\n};\n","var List = require('../../utils/list');\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar IDENTIFIER = TYPE.Identifier;\nvar FUNCTION = TYPE.Function;\nvar COLON = TYPE.Colon;\nvar RIGHTPARENTHESIS = TYPE.RightParenthesis;\n\n// : ident [ '(' .. ')' ]?\nmodule.exports = {\n name: 'PseudoClassSelector',\n structure: {\n name: String,\n children: [['Raw'], null]\n },\n parse: function() {\n var start = this.scanner.tokenStart;\n var children = null;\n var name;\n var nameLowerCase;\n\n this.scanner.eat(COLON);\n\n if (this.scanner.tokenType === FUNCTION) {\n name = this.scanner.consumeFunctionName();\n nameLowerCase = name.toLowerCase();\n\n if (this.pseudo.hasOwnProperty(nameLowerCase)) {\n this.scanner.skipSC();\n children = this.pseudo[nameLowerCase].call(this);\n this.scanner.skipSC();\n } else {\n children = new List().appendData(\n this.Raw(this.scanner.currentToken, 0, 0, false, false)\n );\n }\n\n this.scanner.eat(RIGHTPARENTHESIS);\n } else {\n name = this.scanner.consume(IDENTIFIER);\n }\n\n return {\n type: 'PseudoClassSelector',\n loc: this.getLocation(start, this.scanner.tokenStart),\n name: name,\n children: children\n };\n },\n generate: function(processChunk, node) {\n processChunk(':');\n processChunk(node.name);\n\n if (node.children !== null) {\n processChunk('(');\n this.each(processChunk, node);\n processChunk(')');\n }\n },\n walkContext: 'function'\n};\n","var List = require('../../utils/list');\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar IDENTIFIER = TYPE.Identifier;\nvar FUNCTION = TYPE.Function;\nvar COLON = TYPE.Colon;\nvar RIGHTPARENTHESIS = TYPE.RightParenthesis;\n\n// :: ident [ '(' .. ')' ]?\nmodule.exports = {\n name: 'PseudoElementSelector',\n structure: {\n name: String,\n children: [['Raw'], null]\n },\n parse: function() {\n var start = this.scanner.tokenStart;\n var children = null;\n var name;\n var nameLowerCase;\n\n this.scanner.eat(COLON);\n this.scanner.eat(COLON);\n\n if (this.scanner.tokenType === FUNCTION) {\n name = this.scanner.consumeFunctionName();\n nameLowerCase = name.toLowerCase();\n\n if (this.pseudo.hasOwnProperty(nameLowerCase)) {\n this.scanner.skipSC();\n children = this.pseudo[nameLowerCase].call(this);\n this.scanner.skipSC();\n } else {\n children = new List().appendData(\n this.Raw(this.scanner.currentToken, 0, 0, false, false)\n );\n }\n\n this.scanner.eat(RIGHTPARENTHESIS);\n } else {\n name = this.scanner.consume(IDENTIFIER);\n }\n\n return {\n type: 'PseudoElementSelector',\n loc: this.getLocation(start, this.scanner.tokenStart),\n name: name,\n children: children\n };\n },\n generate: function(processChunk, node) {\n processChunk('::');\n processChunk(node.name);\n\n if (node.children !== null) {\n processChunk('(');\n this.each(processChunk, node);\n processChunk(')');\n }\n },\n walkContext: 'function'\n};\n","var isNumber = require('../../tokenizer').isNumber;\nvar TYPE = require('../../tokenizer').TYPE;\nvar NUMBER = TYPE.Number;\nvar SOLIDUS = TYPE.Solidus;\nvar FULLSTOP = TYPE.FullStop;\n\n// Terms of <ratio> should to be a positive number (not zero or negative)\n// (see https://drafts.csswg.org/mediaqueries-3/#values)\n// However, -o-min-device-pixel-ratio takes fractional values as a ratio's term\n// and this is using by various sites. Therefore we relax checking on parse\n// to test a term is unsigned number without exponent part.\n// Additional checks may to be applied on lexer validation.\nfunction consumeNumber(scanner) {\n var value = scanner.consumeNonWS(NUMBER);\n\n for (var i = 0; i < value.length; i++) {\n var code = value.charCodeAt(i);\n if (!isNumber(code) && code !== FULLSTOP) {\n scanner.error('Unsigned number is expected', scanner.tokenStart - value.length + i);\n }\n }\n\n if (Number(value) === 0) {\n scanner.error('Zero number is not allowed', scanner.tokenStart - value.length);\n }\n\n return value;\n}\n\n// <positive-integer> S* '/' S* <positive-integer>\nmodule.exports = {\n name: 'Ratio',\n structure: {\n left: String,\n right: String\n },\n parse: function() {\n var start = this.scanner.tokenStart;\n var left = consumeNumber(this.scanner);\n var right;\n\n this.scanner.eatNonWS(SOLIDUS);\n right = consumeNumber(this.scanner);\n\n return {\n type: 'Ratio',\n loc: this.getLocation(start, this.scanner.tokenStart),\n left: left,\n right: right\n };\n },\n generate: function(processChunk, node) {\n processChunk(node.left);\n processChunk('/');\n processChunk(node.right);\n }\n};\n","module.exports = {\n name: 'Raw',\n structure: {\n value: String\n },\n parse: function(startToken, endTokenType1, endTokenType2, includeTokenType2, excludeWhiteSpace) {\n var startOffset = this.scanner.getTokenStart(startToken);\n var endOffset;\n\n this.scanner.skip(\n this.scanner.getRawLength(\n startToken,\n endTokenType1,\n endTokenType2,\n includeTokenType2\n )\n );\n\n if (excludeWhiteSpace && this.scanner.tokenStart > startOffset) {\n endOffset = this.scanner.getOffsetExcludeWS();\n } else {\n endOffset = this.scanner.tokenStart;\n }\n\n return {\n type: 'Raw',\n loc: this.getLocation(startOffset, endOffset),\n value: this.scanner.source.substring(startOffset, endOffset)\n };\n },\n generate: function(processChunk, node) {\n processChunk(node.value);\n }\n};\n","var TYPE = require('../../tokenizer').TYPE;\n\nvar LEFTCURLYBRACKET = TYPE.LeftCurlyBracket;\n\nfunction consumeRaw(startToken) {\n return this.Raw(startToken, LEFTCURLYBRACKET, 0, false, true);\n}\n\nmodule.exports = {\n name: 'Rule',\n structure: {\n selector: ['SelectorList', 'Raw'],\n block: ['Block']\n },\n parse: function() {\n var startToken = this.scanner.currentToken;\n var startOffset = this.scanner.tokenStart;\n var selector = this.parseSelector\n ? this.tolerantParse(this.SelectorList, consumeRaw)\n : consumeRaw.call(this, startToken);\n var block = this.Block(this.Declaration);\n\n return {\n type: 'Rule',\n loc: this.getLocation(startOffset, this.scanner.tokenStart),\n selector: selector,\n block: block\n };\n },\n generate: function(processChunk, node) {\n this.generate(processChunk, node.selector);\n this.generate(processChunk, node.block);\n },\n walkContext: 'rule'\n};\n","module.exports = {\n name: 'Selector',\n structure: {\n children: [[\n 'TypeSelector',\n 'IdSelector',\n 'ClassSelector',\n 'AttributeSelector',\n 'PseudoClassSelector',\n 'PseudoElementSelector',\n 'Combinator',\n 'WhiteSpace'\n ]]\n },\n parse: function() {\n var children = this.readSequence(this.scope.Selector);\n\n // nothing were consumed\n if (children.isEmpty()) {\n this.scanner.error('Selector is expected');\n }\n\n return {\n type: 'Selector',\n loc: this.getLocationFromList(children),\n children: children\n };\n },\n generate: function(processChunk, node) {\n this.each(processChunk, node);\n }\n};\n","var List = require('../../utils/list');\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar COMMA = TYPE.Comma;\nvar LEFTCURLYBRACKET = TYPE.LeftCurlyBracket;\n\nmodule.exports = {\n name: 'SelectorList',\n structure: {\n children: [['Selector', 'Raw']]\n },\n parse: function() {\n var children = new List();\n\n while (!this.scanner.eof) {\n children.appendData(this.parseSelector\n ? this.Selector()\n : this.Raw(this.scanner.currentToken, COMMA, LEFTCURLYBRACKET, false, false)\n );\n\n if (this.scanner.tokenType === COMMA) {\n this.scanner.next();\n continue;\n }\n\n break;\n }\n\n return {\n type: 'SelectorList',\n loc: this.getLocationFromList(children),\n children: children\n };\n },\n generate: function(processChunk, node) {\n this.eachComma(processChunk, node);\n },\n walkContext: 'selector'\n};\n","var STRING = require('../../tokenizer').TYPE.String;\n\nmodule.exports = {\n name: 'String',\n structure: {\n value: String\n },\n parse: function() {\n return {\n type: 'String',\n loc: this.getLocation(this.scanner.tokenStart, this.scanner.tokenEnd),\n value: this.scanner.consume(STRING)\n };\n },\n generate: function(processChunk, node) {\n processChunk(node.value);\n }\n};\n","var List = require('../../utils/list');\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar WHITESPACE = TYPE.WhiteSpace;\nvar COMMENT = TYPE.Comment;\nvar EXCLAMATIONMARK = TYPE.ExclamationMark;\nvar ATRULE = TYPE.Atrule;\nvar CDO = TYPE.CDO;\nvar CDC = TYPE.CDC;\n\nfunction consumeRaw(startToken) {\n return this.Raw(startToken, 0, 0, false, false);\n}\n\nmodule.exports = {\n name: 'StyleSheet',\n structure: {\n children: [['Comment', 'Atrule', 'Rule', 'Raw']]\n },\n parse: function() {\n var start = this.scanner.tokenStart;\n var children = new List();\n var child;\n\n scan:\n while (!this.scanner.eof) {\n switch (this.scanner.tokenType) {\n case WHITESPACE:\n this.scanner.next();\n continue;\n\n case COMMENT:\n // ignore comments except exclamation comments (i.e. /*! .. */) on top level\n if (this.scanner.source.charCodeAt(this.scanner.tokenStart + 2) !== EXCLAMATIONMARK) {\n this.scanner.next();\n continue;\n }\n\n child = this.Comment();\n break;\n\n case CDO: // <!--\n child = this.CDO();\n break;\n\n case CDC: // -->\n child = this.CDC();\n break;\n\n // CSS Syntax Module Level 3\n // §2.2 Error handling\n // At the \"top level\" of a stylesheet, an <at-keyword-token> starts an at-rule.\n case ATRULE:\n child = this.Atrule();\n break;\n\n // Anything else starts a qualified rule ...\n default:\n child = this.tolerantParse(this.Rule, consumeRaw);\n }\n\n children.appendData(child);\n }\n\n return {\n type: 'StyleSheet',\n loc: this.getLocation(start, this.scanner.tokenStart),\n children: children\n };\n },\n generate: function(processChunk, node) {\n this.each(processChunk, node);\n },\n walkContext: 'stylesheet'\n};\n","var TYPE = require('../../tokenizer').TYPE;\n\nvar IDENTIFIER = TYPE.Identifier;\nvar ASTERISK = TYPE.Asterisk;\nvar VERTICALLINE = TYPE.VerticalLine;\n\nfunction eatIdentifierOrAsterisk() {\n if (this.scanner.tokenType !== IDENTIFIER &&\n this.scanner.tokenType !== ASTERISK) {\n this.scanner.error('Identifier or asterisk is expected');\n }\n\n this.scanner.next();\n}\n\n// ident\n// ident|ident\n// ident|*\n// *\n// *|ident\n// *|*\n// |ident\n// |*\nmodule.exports = {\n name: 'TypeSelector',\n structure: {\n name: String\n },\n parse: function() {\n var start = this.scanner.tokenStart;\n\n if (this.scanner.tokenType === VERTICALLINE) {\n this.scanner.next();\n eatIdentifierOrAsterisk.call(this);\n } else {\n eatIdentifierOrAsterisk.call(this);\n\n if (this.scanner.tokenType === VERTICALLINE) {\n this.scanner.next();\n eatIdentifierOrAsterisk.call(this);\n }\n }\n\n return {\n type: 'TypeSelector',\n loc: this.getLocation(start, this.scanner.tokenStart),\n name: this.scanner.substrToCursor(start)\n };\n },\n generate: function(processChunk, node) {\n processChunk(node.name);\n }\n};\n","var isHex = require('../../tokenizer').isHex;\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar IDENTIFIER = TYPE.Identifier;\nvar NUMBER = TYPE.Number;\nvar PLUSSIGN = TYPE.PlusSign;\nvar HYPHENMINUS = TYPE.HyphenMinus;\nvar FULLSTOP = TYPE.FullStop;\nvar QUESTIONMARK = TYPE.QuestionMark;\n\nfunction scanUnicodeNumber(scanner) {\n for (var pos = scanner.tokenStart + 1; pos < scanner.tokenEnd; pos++) {\n var code = scanner.source.charCodeAt(pos);\n\n // break on fullstop or hyperminus/plussign after exponent\n if (code === FULLSTOP || code === PLUSSIGN) {\n // break token, exclude symbol\n scanner.tokenStart = pos;\n return false;\n }\n }\n\n return true;\n}\n\n// https://drafts.csswg.org/css-syntax-3/#urange\nfunction scanUnicodeRange(scanner) {\n var hexStart = scanner.tokenStart + 1; // skip +\n var hexLength = 0;\n\n scan: {\n if (scanner.tokenType === NUMBER) {\n if (scanner.source.charCodeAt(scanner.tokenStart) !== FULLSTOP && scanUnicodeNumber(scanner)) {\n scanner.next();\n } else if (scanner.source.charCodeAt(scanner.tokenStart) !== HYPHENMINUS) {\n break scan;\n }\n } else {\n scanner.next(); // PLUSSIGN\n }\n\n if (scanner.tokenType === HYPHENMINUS) {\n scanner.next();\n }\n\n if (scanner.tokenType === NUMBER) {\n scanner.next();\n }\n\n if (scanner.tokenType === IDENTIFIER) {\n scanner.next();\n }\n\n if (scanner.tokenStart === hexStart) {\n scanner.error('Unexpected input', hexStart);\n }\n }\n\n // validate for U+x{1,6} or U+x{1,6}-x{1,6}\n // where x is [0-9a-fA-F]\n for (var i = hexStart, wasHyphenMinus = false; i < scanner.tokenStart; i++) {\n var code = scanner.source.charCodeAt(i);\n\n if (isHex(code) === false && (code !== HYPHENMINUS || wasHyphenMinus)) {\n scanner.error('Unexpected input', i);\n }\n\n if (code === HYPHENMINUS) {\n // hex sequence shouldn't be an empty\n if (hexLength === 0) {\n scanner.error('Unexpected input', i);\n }\n\n wasHyphenMinus = true;\n hexLength = 0;\n } else {\n hexLength++;\n\n // too long hex sequence\n if (hexLength > 6) {\n scanner.error('Too long hex sequence', i);\n }\n }\n\n }\n\n // check we have a non-zero sequence\n if (hexLength === 0) {\n scanner.error('Unexpected input', i - 1);\n }\n\n // U+abc???\n if (!wasHyphenMinus) {\n // consume as many U+003F QUESTION MARK (?) code points as possible\n for (; hexLength < 6 && !scanner.eof; scanner.next()) {\n if (scanner.tokenType !== QUESTIONMARK) {\n break;\n }\n\n hexLength++;\n }\n }\n}\n\nmodule.exports = {\n name: 'UnicodeRange',\n structure: {\n value: String\n },\n parse: function() {\n var start = this.scanner.tokenStart;\n\n this.scanner.next(); // U or u\n scanUnicodeRange(this.scanner);\n\n return {\n type: 'UnicodeRange',\n loc: this.getLocation(start, this.scanner.tokenStart),\n value: this.scanner.substrToCursor(start)\n };\n },\n generate: function(processChunk, node) {\n processChunk(node.value);\n }\n};\n","var TYPE = require('../../tokenizer').TYPE;\n\nvar STRING = TYPE.String;\nvar URL = TYPE.Url;\nvar RAW = TYPE.Raw;\nvar RIGHTPARENTHESIS = TYPE.RightParenthesis;\n\n// url '(' S* (string | raw) S* ')'\nmodule.exports = {\n name: 'Url',\n structure: {\n value: ['String', 'Raw']\n },\n parse: function() {\n var start = this.scanner.tokenStart;\n var value;\n\n this.scanner.eat(URL);\n this.scanner.skipSC();\n\n switch (this.scanner.tokenType) {\n case STRING:\n value = this.String();\n break;\n\n case RAW:\n value = this.Raw(this.scanner.currentToken, 0, RAW, true, false);\n break;\n\n default:\n this.scanner.error('String or Raw is expected');\n }\n\n this.scanner.skipSC();\n this.scanner.eat(RIGHTPARENTHESIS);\n\n return {\n type: 'Url',\n loc: this.getLocation(start, this.scanner.tokenStart),\n value: value\n };\n },\n generate: function(processChunk, node) {\n processChunk('url');\n processChunk('(');\n this.generate(processChunk, node.value);\n processChunk(')');\n }\n};\n","var endsWith = require('../../tokenizer').endsWith;\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar WHITESPACE = TYPE.WhiteSpace;\nvar COMMENT = TYPE.Comment;\nvar FUNCTION = TYPE.Function;\nvar COLON = TYPE.Colon;\nvar SEMICOLON = TYPE.Semicolon;\nvar EXCLAMATIONMARK = TYPE.ExclamationMark;\n\n// 'progid:' ws* 'DXImageTransform.Microsoft.' ident ws* '(' .* ')'\nfunction checkProgid(scanner) {\n var offset = 0;\n\n for (var type; type = scanner.lookupType(offset); offset++) {\n if (type !== WHITESPACE && type !== COMMENT) {\n break;\n }\n }\n\n if (scanner.lookupValue(offset, 'alpha(') ||\n scanner.lookupValue(offset, 'chroma(') ||\n scanner.lookupValue(offset, 'dropshadow(')) {\n if (scanner.lookupType(offset) !== FUNCTION) {\n return false;\n }\n } else {\n if (scanner.lookupValue(offset, 'progid') === false ||\n scanner.lookupType(offset + 1) !== COLON) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = {\n name: 'Value',\n structure: {\n children: [[]]\n },\n parse: function(property) {\n // special parser for filter property since it can contains non-standart syntax for old IE\n if (property !== null && endsWith(property, 'filter') && checkProgid(this.scanner)) {\n this.scanner.skipSC();\n return this.Raw(this.scanner.currentToken, EXCLAMATIONMARK, SEMICOLON, false, false);\n }\n\n var start = this.scanner.tokenStart;\n var children = this.readSequence(this.scope.Value);\n\n return {\n type: 'Value',\n loc: this.getLocation(start, this.scanner.tokenStart),\n children: children\n };\n },\n generate: function(processChunk, node) {\n this.each(processChunk, node);\n }\n};\n","var WHITESPACE = require('../../tokenizer').TYPE.WhiteSpace;\nvar SPACE = Object.freeze({\n type: 'WhiteSpace',\n loc: null,\n value: ' '\n});\n\nmodule.exports = {\n name: 'WhiteSpace',\n structure: {\n value: String\n },\n parse: function() {\n this.scanner.eat(WHITESPACE);\n return SPACE;\n\n // return {\n // type: 'WhiteSpace',\n // loc: this.getLocation(this.scanner.tokenStart, this.scanner.tokenEnd),\n // value: this.scanner.consume(WHITESPACE)\n // };\n },\n generate: function(processChunk, node) {\n processChunk(node.value);\n }\n};\n","module.exports = {\n AnPlusB: require('./AnPlusB'),\n Atrule: require('./Atrule'),\n AtruleExpression: require('./AtruleExpression'),\n AttributeSelector: require('./AttributeSelector'),\n Block: require('./Block'),\n Brackets: require('./Brackets'),\n CDC: require('./CDC'),\n CDO: require('./CDO'),\n ClassSelector: require('./ClassSelector'),\n Combinator: require('./Combinator'),\n Comment: require('./Comment'),\n Declaration: require('./Declaration'),\n DeclarationList: require('./DeclarationList'),\n Dimension: require('./Dimension'),\n Function: require('./Function'),\n HexColor: require('./HexColor'),\n Identifier: require('./Identifier'),\n IdSelector: require('./IdSelector'),\n MediaFeature: require('./MediaFeature'),\n MediaQuery: require('./MediaQuery'),\n MediaQueryList: require('./MediaQueryList'),\n Nth: require('./Nth'),\n Number: require('./Number'),\n Operator: require('./Operator'),\n Parentheses: require('./Parentheses'),\n Percentage: require('./Percentage'),\n PseudoClassSelector: require('./PseudoClassSelector'),\n PseudoElementSelector: require('./PseudoElementSelector'),\n Ratio: require('./Ratio'),\n Raw: require('./Raw'),\n Rule: require('./Rule'),\n Selector: require('./Selector'),\n SelectorList: require('./SelectorList'),\n String: require('./String'),\n StyleSheet: require('./StyleSheet'),\n TypeSelector: require('./TypeSelector'),\n UnicodeRange: require('./UnicodeRange'),\n Url: require('./Url'),\n Value: require('./Value'),\n WhiteSpace: require('./WhiteSpace')\n};\n","module.exports = {\n parseContext: {\n default: 'StyleSheet',\n stylesheet: 'StyleSheet',\n atrule: 'Atrule',\n atruleExpression: function(options) {\n return this.AtruleExpression(options.atrule ? String(options.atrule) : null);\n },\n mediaQueryList: 'MediaQueryList',\n mediaQuery: 'MediaQuery',\n rule: 'Rule',\n selectorList: 'SelectorList',\n selector: 'Selector',\n block: function() {\n return this.Block(this.Declaration);\n },\n declarationList: 'DeclarationList',\n declaration: 'Declaration',\n value: function(options) {\n return this.Value(options.property ? String(options.property) : null);\n }\n },\n scope: require('../scope'),\n atrule: require('../atrule'),\n pseudo: require('../pseudo'),\n node: require('../node')\n};\n","var createParser = require('./create');\nvar config = require('../syntax/config/parser');\n\nmodule.exports = createParser(config);\n","import parse from 'css-tree/lib/parser/index.js';\nimport { walk } from 'estree-walker';\nimport { Parser } from '../index';\nimport { Node } from 'estree';\nimport { Style } from '../../interfaces';\n\nexport default function read_style(parser: Parser, start: number, attributes: Node[]): Style {\n\tconst content_start = parser.index;\n\tconst styles = parser.read_until(/<\\/style>/);\n\tconst content_end = parser.index;\n\n\tlet ast;\n\n\ttry {\n\t\tast = parse(styles, {\n\t\t\tpositions: true,\n\t\t\toffset: content_start\n\t\t});\n\t} catch (err) {\n\t\tif (err.name === 'CssSyntaxError') {\n\t\t\tparser.error({\n\t\t\t\tcode: 'css-syntax-error',\n\t\t\t\tmessage: err.message\n\t\t\t}, err.offset);\n\t\t} else {\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\tast = JSON.parse(JSON.stringify(ast));\n\n\t// tidy up AST\n\twalk(ast, {\n\t\tenter: (node: any) => { // `any` because this isn't an ESTree node\n\t\t\t// replace `ref:a` nodes\n\t\t\tif (node.type === 'Selector') {\n\t\t\t\tfor (let i = 0; i < node.children.length; i += 1) {\n\t\t\t\t\tconst a = node.children[i];\n\t\t\t\t\tconst b = node.children[i + 1];\n\n\t\t\t\t\tif (is_ref_selector(a, b)) {\n\t\t\t\t\t\tparser.error({\n\t\t\t\t\t\t\tcode: 'invalid-ref-selector',\n\t\t\t\t\t\t\tmessage: 'ref selectors are no longer supported'\n\t\t\t\t\t\t}, a.loc.start.offset);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (node.type === 'Declaration' && node.value.type === 'Value' && node.value.children.length === 0) {\n\t\t\t\tparser.error({\n\t\t\t\t\tcode: 'invalid-declaration',\n\t\t\t\t\tmessage: 'Declaration cannot be empty'\n\t\t\t\t}, node.start);\n\t\t\t}\n\n\t\t\tif (node.type === 'PseudoClassSelector' && node.name === 'global' && node.children === null) {\n\t\t\t\tparser.error({\n\t\t\t\t\tcode: 'css-syntax-error',\n\t\t\t\t\tmessage: ':global() must contain a selector'\n\t\t\t\t}, node.loc.start.offset);\n\t\t\t}\n\n\t\t\tif (node.loc) {\n\t\t\t\tnode.start = node.loc.start.offset;\n\t\t\t\tnode.end = node.loc.end.offset;\n\t\t\t\tdelete node.loc;\n\t\t\t}\n\t\t}\n\t});\n\n\tparser.eat('</style>', true);\n\tconst end = parser.index;\n\n\treturn {\n\t\ttype: 'Style',\n\t\tstart,\n\t\tend,\n\t\tattributes,\n\t\tchildren: ast.children,\n\t\tcontent: {\n\t\t\tstart: content_start,\n\t\t\tend: content_end,\n\t\t\tstyles\n\t\t}\n\t};\n}\n\nfunction is_ref_selector(a: any, b: any) { // TODO add CSS node types\n\tif (!b) return false;\n\n\treturn (\n\t\ta.type === 'TypeSelector' &&\n\t\ta.name === 'ref' &&\n\t\tb.type === 'PseudoClassSelector'\n\t);\n}\n","// https://dev.w3.org/html5/html-author/charref\nexport default {\n\tCounterClockwiseContourIntegral: 8755,\n\tClockwiseContourIntegral: 8754,\n\tDoubleLongLeftRightArrow: 10234,\n\tDiacriticalDoubleAcute: 733,\n\tNotSquareSupersetEqual: 8931,\n\tCloseCurlyDoubleQuote: 8221,\n\tDoubleContourIntegral: 8751,\n\tFilledVerySmallSquare: 9642,\n\tNegativeVeryThinSpace: 8203,\n\tNotPrecedesSlantEqual: 8928,\n\tNotRightTriangleEqual: 8941,\n\tNotSucceedsSlantEqual: 8929,\n\tCapitalDifferentialD: 8517,\n\tDoubleLeftRightArrow: 8660,\n\tDoubleLongRightArrow: 10233,\n\tEmptyVerySmallSquare: 9643,\n\tNestedGreaterGreater: 8811,\n\tNotDoubleVerticalBar: 8742,\n\tNotLeftTriangleEqual: 8940,\n\tNotSquareSubsetEqual: 8930,\n\tOpenCurlyDoubleQuote: 8220,\n\tReverseUpEquilibrium: 10607,\n\tDoubleLongLeftArrow: 10232,\n\tDownLeftRightVector: 10576,\n\tLeftArrowRightArrow: 8646,\n\tNegativeMediumSpace: 8203,\n\tRightArrowLeftArrow: 8644,\n\tSquareSupersetEqual: 8850,\n\tleftrightsquigarrow: 8621,\n\tDownRightTeeVector: 10591,\n\tDownRightVectorBar: 10583,\n\tLongLeftRightArrow: 10231,\n\tLongleftrightarrow: 10234,\n\tNegativeThickSpace: 8203,\n\tPrecedesSlantEqual: 8828,\n\tReverseEquilibrium: 8651,\n\tRightDoubleBracket: 10215,\n\tRightDownTeeVector: 10589,\n\tRightDownVectorBar: 10581,\n\tRightTriangleEqual: 8885,\n\tSquareIntersection: 8851,\n\tSucceedsSlantEqual: 8829,\n\tblacktriangleright: 9656,\n\tlongleftrightarrow: 10231,\n\tDoubleUpDownArrow: 8661,\n\tDoubleVerticalBar: 8741,\n\tDownLeftTeeVector: 10590,\n\tDownLeftVectorBar: 10582,\n\tFilledSmallSquare: 9724,\n\tGreaterSlantEqual: 10878,\n\tLeftDoubleBracket: 10214,\n\tLeftDownTeeVector: 10593,\n\tLeftDownVectorBar: 10585,\n\tLeftTriangleEqual: 8884,\n\tNegativeThinSpace: 8203,\n\tNotReverseElement: 8716,\n\tNotTildeFullEqual: 8775,\n\tRightAngleBracket: 10217,\n\tRightUpDownVector: 10575,\n\tSquareSubsetEqual: 8849,\n\tVerticalSeparator: 10072,\n\tblacktriangledown: 9662,\n\tblacktriangleleft: 9666,\n\tleftrightharpoons: 8651,\n\trightleftharpoons: 8652,\n\ttwoheadrightarrow: 8608,\n\tDiacriticalAcute: 180,\n\tDiacriticalGrave: 96,\n\tDiacriticalTilde: 732,\n\tDoubleRightArrow: 8658,\n\tDownArrowUpArrow: 8693,\n\tEmptySmallSquare: 9723,\n\tGreaterEqualLess: 8923,\n\tGreaterFullEqual: 8807,\n\tLeftAngleBracket: 10216,\n\tLeftUpDownVector: 10577,\n\tLessEqualGreater: 8922,\n\tNonBreakingSpace: 160,\n\tNotRightTriangle: 8939,\n\tNotSupersetEqual: 8841,\n\tRightTriangleBar: 10704,\n\tRightUpTeeVector: 10588,\n\tRightUpVectorBar: 10580,\n\tUnderParenthesis: 9181,\n\tUpArrowDownArrow: 8645,\n\tcirclearrowright: 8635,\n\tdownharpoonright: 8642,\n\tntrianglerighteq: 8941,\n\trightharpoondown: 8641,\n\trightrightarrows: 8649,\n\ttwoheadleftarrow: 8606,\n\tvartriangleright: 8883,\n\tCloseCurlyQuote: 8217,\n\tContourIntegral: 8750,\n\tDoubleDownArrow: 8659,\n\tDoubleLeftArrow: 8656,\n\tDownRightVector: 8641,\n\tLeftRightVector: 10574,\n\tLeftTriangleBar: 10703,\n\tLeftUpTeeVector: 10592,\n\tLeftUpVectorBar: 10584,\n\tLowerRightArrow: 8600,\n\tNotGreaterEqual: 8817,\n\tNotGreaterTilde: 8821,\n\tNotLeftTriangle: 8938,\n\tOverParenthesis: 9180,\n\tRightDownVector: 8642,\n\tShortRightArrow: 8594,\n\tUpperRightArrow: 8599,\n\tbigtriangledown: 9661,\n\tcirclearrowleft: 8634,\n\tcurvearrowright: 8631,\n\tdownharpoonleft: 8643,\n\tleftharpoondown: 8637,\n\tleftrightarrows: 8646,\n\tnLeftrightarrow: 8654,\n\tnleftrightarrow: 8622,\n\tntrianglelefteq: 8940,\n\trightleftarrows: 8644,\n\trightsquigarrow: 8605,\n\trightthreetimes: 8908,\n\tstraightepsilon: 1013,\n\ttrianglerighteq: 8885,\n\tvartriangleleft: 8882,\n\tDiacriticalDot: 729,\n\tDoubleRightTee: 8872,\n\tDownLeftVector: 8637,\n\tGreaterGreater: 10914,\n\tHorizontalLine: 9472,\n\tInvisibleComma: 8291,\n\tInvisibleTimes: 8290,\n\tLeftDownVector: 8643,\n\tLeftRightArrow: 8596,\n\tLeftrightarrow: 8660,\n\tLessSlantEqual: 10877,\n\tLongRightArrow: 10230,\n\tLongrightarrow: 10233,\n\tLowerLeftArrow: 8601,\n\tNestedLessLess: 8810,\n\tNotGreaterLess: 8825,\n\tNotLessGreater: 8824,\n\tNotSubsetEqual: 8840,\n\tNotVerticalBar: 8740,\n\tOpenCurlyQuote: 8216,\n\tReverseElement: 8715,\n\tRightTeeVector: 10587,\n\tRightVectorBar: 10579,\n\tShortDownArrow: 8595,\n\tShortLeftArrow: 8592,\n\tSquareSuperset: 8848,\n\tTildeFullEqual: 8773,\n\tUpperLeftArrow: 8598,\n\tZeroWidthSpace: 8203,\n\tcurvearrowleft: 8630,\n\tdoublebarwedge: 8966,\n\tdowndownarrows: 8650,\n\thookrightarrow: 8618,\n\tleftleftarrows: 8647,\n\tleftrightarrow: 8596,\n\tleftthreetimes: 8907,\n\tlongrightarrow: 10230,\n\tlooparrowright: 8620,\n\tnshortparallel: 8742,\n\tntriangleright: 8939,\n\trightarrowtail: 8611,\n\trightharpoonup: 8640,\n\ttrianglelefteq: 8884,\n\tupharpoonright: 8638,\n\tApplyFunction: 8289,\n\tDifferentialD: 8518,\n\tDoubleLeftTee: 10980,\n\tDoubleUpArrow: 8657,\n\tLeftTeeVector: 10586,\n\tLeftVectorBar: 10578,\n\tLessFullEqual: 8806,\n\tLongLeftArrow: 10229,\n\tLongleftarrow: 10232,\n\tNotTildeEqual: 8772,\n\tNotTildeTilde: 8777,\n\tPoincareplane: 8460,\n\tPrecedesEqual: 10927,\n\tPrecedesTilde: 8830,\n\tRightArrowBar: 8677,\n\tRightTeeArrow: 8614,\n\tRightTriangle: 8883,\n\tRightUpVector: 8638,\n\tSucceedsEqual: 10928,\n\tSucceedsTilde: 8831,\n\tSupersetEqual: 8839,\n\tUpEquilibrium: 10606,\n\tVerticalTilde: 8768,\n\tVeryThinSpace: 8202,\n\tbigtriangleup: 9651,\n\tblacktriangle: 9652,\n\tdivideontimes: 8903,\n\tfallingdotseq: 8786,\n\thookleftarrow: 8617,\n\tleftarrowtail: 8610,\n\tleftharpoonup: 8636,\n\tlongleftarrow: 10229,\n\tlooparrowleft: 8619,\n\tmeasuredangle: 8737,\n\tntriangleleft: 8938,\n\tshortparallel: 8741,\n\tsmallsetminus: 8726,\n\ttriangleright: 9657,\n\tupharpoonleft: 8639,\n\tDownArrowBar: 10515,\n\tDownTeeArrow: 8615,\n\tExponentialE: 8519,\n\tGreaterEqual: 8805,\n\tGreaterTilde: 8819,\n\tHilbertSpace: 8459,\n\tHumpDownHump: 8782,\n\tIntersection: 8898,\n\tLeftArrowBar: 8676,\n\tLeftTeeArrow: 8612,\n\tLeftTriangle: 8882,\n\tLeftUpVector: 8639,\n\tNotCongruent: 8802,\n\tNotLessEqual: 8816,\n\tNotLessTilde: 8820,\n\tProportional: 8733,\n\tRightCeiling: 8969,\n\tRoundImplies: 10608,\n\tShortUpArrow: 8593,\n\tSquareSubset: 8847,\n\tUnderBracket: 9141,\n\tVerticalLine: 124,\n\tblacklozenge: 10731,\n\texponentiale: 8519,\n\trisingdotseq: 8787,\n\ttriangledown: 9663,\n\ttriangleleft: 9667,\n\tCircleMinus: 8854,\n\tCircleTimes: 8855,\n\tEquilibrium: 8652,\n\tGreaterLess: 8823,\n\tLeftCeiling: 8968,\n\tLessGreater: 8822,\n\tMediumSpace: 8287,\n\tNotPrecedes: 8832,\n\tNotSucceeds: 8833,\n\tOverBracket: 9140,\n\tRightVector: 8640,\n\tRrightarrow: 8667,\n\tRuleDelayed: 10740,\n\tSmallCircle: 8728,\n\tSquareUnion: 8852,\n\tSubsetEqual: 8838,\n\tUpDownArrow: 8597,\n\tUpdownarrow: 8661,\n\tVerticalBar: 8739,\n\tbackepsilon: 1014,\n\tblacksquare: 9642,\n\tcircledcirc: 8858,\n\tcircleddash: 8861,\n\tcurlyeqprec: 8926,\n\tcurlyeqsucc: 8927,\n\tdiamondsuit: 9830,\n\teqslantless: 10901,\n\texpectation: 8496,\n\tnRightarrow: 8655,\n\tnrightarrow: 8603,\n\tpreccurlyeq: 8828,\n\tprecnapprox: 10937,\n\tquaternions: 8461,\n\tstraightphi: 981,\n\tsucccurlyeq: 8829,\n\tsuccnapprox: 10938,\n\tthickapprox: 8776,\n\tupdownarrow: 8597,\n\tBernoullis: 8492,\n\tCirclePlus: 8853,\n\tEqualTilde: 8770,\n\tFouriertrf: 8497,\n\tImaginaryI: 8520,\n\tLaplacetrf: 8466,\n\tLeftVector: 8636,\n\tLleftarrow: 8666,\n\tNotElement: 8713,\n\tNotGreater: 8815,\n\tProportion: 8759,\n\tRightArrow: 8594,\n\tRightFloor: 8971,\n\tRightarrow: 8658,\n\tTildeEqual: 8771,\n\tTildeTilde: 8776,\n\tUnderBrace: 9183,\n\tUpArrowBar: 10514,\n\tUpTeeArrow: 8613,\n\tcircledast: 8859,\n\tcomplement: 8705,\n\tcurlywedge: 8911,\n\teqslantgtr: 10902,\n\tgtreqqless: 10892,\n\tlessapprox: 10885,\n\tlesseqqgtr: 10891,\n\tlmoustache: 9136,\n\tlongmapsto: 10236,\n\tmapstodown: 8615,\n\tmapstoleft: 8612,\n\tnLeftarrow: 8653,\n\tnleftarrow: 8602,\n\tprecapprox: 10935,\n\trightarrow: 8594,\n\trmoustache: 9137,\n\tsqsubseteq: 8849,\n\tsqsupseteq: 8850,\n\tsubsetneqq: 10955,\n\tsuccapprox: 10936,\n\tsupsetneqq: 10956,\n\tupuparrows: 8648,\n\tvarepsilon: 949,\n\tvarnothing: 8709,\n\tBackslash: 8726,\n\tCenterDot: 183,\n\tCircleDot: 8857,\n\tCongruent: 8801,\n\tCoproduct: 8720,\n\tDoubleDot: 168,\n\tDownArrow: 8595,\n\tDownBreve: 785,\n\tDownarrow: 8659,\n\tHumpEqual: 8783,\n\tLeftArrow: 8592,\n\tLeftFloor: 8970,\n\tLeftarrow: 8656,\n\tLessTilde: 8818,\n\tMellintrf: 8499,\n\tMinusPlus: 8723,\n\tNotCupCap: 8813,\n\tNotExists: 8708,\n\tOverBrace: 9182,\n\tPlusMinus: 177,\n\tTherefore: 8756,\n\tThinSpace: 8201,\n\tTripleDot: 8411,\n\tUnionPlus: 8846,\n\tbackprime: 8245,\n\tbacksimeq: 8909,\n\tbigotimes: 10754,\n\tcenterdot: 183,\n\tcheckmark: 10003,\n\tcomplexes: 8450,\n\tdotsquare: 8865,\n\tdownarrow: 8595,\n\tgtrapprox: 10886,\n\tgtreqless: 8923,\n\theartsuit: 9829,\n\tleftarrow: 8592,\n\tlesseqgtr: 8922,\n\tnparallel: 8742,\n\tnshortmid: 8740,\n\tnsubseteq: 8840,\n\tnsupseteq: 8841,\n\tpitchfork: 8916,\n\trationals: 8474,\n\tspadesuit: 9824,\n\tsubseteqq: 10949,\n\tsubsetneq: 8842,\n\tsupseteqq: 10950,\n\tsupsetneq: 8843,\n\ttherefore: 8756,\n\ttriangleq: 8796,\n\tvarpropto: 8733,\n\tDDotrahd: 10513,\n\tDotEqual: 8784,\n\tIntegral: 8747,\n\tLessLess: 10913,\n\tNotEqual: 8800,\n\tNotTilde: 8769,\n\tPartialD: 8706,\n\tPrecedes: 8826,\n\tRightTee: 8866,\n\tSucceeds: 8827,\n\tSuchThat: 8715,\n\tSuperset: 8835,\n\tUarrocir: 10569,\n\tUnderBar: 818,\n\tandslope: 10840,\n\tangmsdaa: 10664,\n\tangmsdab: 10665,\n\tangmsdac: 10666,\n\tangmsdad: 10667,\n\tangmsdae: 10668,\n\tangmsdaf: 10669,\n\tangmsdag: 10670,\n\tangmsdah: 10671,\n\tangrtvbd: 10653,\n\tapproxeq: 8778,\n\tawconint: 8755,\n\tbackcong: 8780,\n\tbarwedge: 8965,\n\tbbrktbrk: 9142,\n\tbigoplus: 10753,\n\tbigsqcup: 10758,\n\tbiguplus: 10756,\n\tbigwedge: 8896,\n\tboxminus: 8863,\n\tboxtimes: 8864,\n\tcapbrcup: 10825,\n\tcircledR: 174,\n\tcircledS: 9416,\n\tcirfnint: 10768,\n\tclubsuit: 9827,\n\tcupbrcap: 10824,\n\tcurlyvee: 8910,\n\tcwconint: 8754,\n\tdoteqdot: 8785,\n\tdotminus: 8760,\n\tdrbkarow: 10512,\n\tdzigrarr: 10239,\n\telinters: 9191,\n\temptyset: 8709,\n\teqvparsl: 10725,\n\tfpartint: 10765,\n\tgeqslant: 10878,\n\tgesdotol: 10884,\n\tgnapprox: 10890,\n\thksearow: 10533,\n\thkswarow: 10534,\n\timagline: 8464,\n\timagpart: 8465,\n\tinfintie: 10717,\n\tintegers: 8484,\n\tintercal: 8890,\n\tintlarhk: 10775,\n\tlaemptyv: 10676,\n\tldrushar: 10571,\n\tleqslant: 10877,\n\tlesdotor: 10883,\n\tllcorner: 8990,\n\tlnapprox: 10889,\n\tlrcorner: 8991,\n\tlurdshar: 10570,\n\tmapstoup: 8613,\n\tmultimap: 8888,\n\tnaturals: 8469,\n\totimesas: 10806,\n\tparallel: 8741,\n\tplusacir: 10787,\n\tpointint: 10773,\n\tprecneqq: 10933,\n\tprecnsim: 8936,\n\tprofalar: 9006,\n\tprofline: 8978,\n\tprofsurf: 8979,\n\traemptyv: 10675,\n\trealpart: 8476,\n\trppolint: 10770,\n\trtriltri: 10702,\n\tscpolint: 10771,\n\tsetminus: 8726,\n\tshortmid: 8739,\n\tsmeparsl: 10724,\n\tsqsubset: 8847,\n\tsqsupset: 8848,\n\tsubseteq: 8838,\n\tsuccneqq: 10934,\n\tsuccnsim: 8937,\n\tsupseteq: 8839,\n\tthetasym: 977,\n\tthicksim: 8764,\n\ttimesbar: 10801,\n\ttriangle: 9653,\n\ttriminus: 10810,\n\ttrpezium: 9186,\n\tulcorner: 8988,\n\turcorner: 8989,\n\tvarkappa: 1008,\n\tvarsigma: 962,\n\tvartheta: 977,\n\tBecause: 8757,\n\tCayleys: 8493,\n\tCconint: 8752,\n\tCedilla: 184,\n\tDiamond: 8900,\n\tDownTee: 8868,\n\tElement: 8712,\n\tEpsilon: 917,\n\tImplies: 8658,\n\tLeftTee: 8867,\n\tNewLine: 10,\n\tNoBreak: 8288,\n\tNotLess: 8814,\n\tOmicron: 927,\n\tOverBar: 175,\n\tProduct: 8719,\n\tUpArrow: 8593,\n\tUparrow: 8657,\n\tUpsilon: 933,\n\talefsym: 8501,\n\tangrtvb: 8894,\n\tangzarr: 9084,\n\tasympeq: 8781,\n\tbacksim: 8765,\n\tbecause: 8757,\n\tbemptyv: 10672,\n\tbetween: 8812,\n\tbigcirc: 9711,\n\tbigodot: 10752,\n\tbigstar: 9733,\n\tboxplus: 8862,\n\tccupssm: 10832,\n\tcemptyv: 10674,\n\tcirscir: 10690,\n\tcoloneq: 8788,\n\tcongdot: 10861,\n\tcudarrl: 10552,\n\tcudarrr: 10549,\n\tcularrp: 10557,\n\tcurarrm: 10556,\n\tdbkarow: 10511,\n\tddagger: 8225,\n\tddotseq: 10871,\n\tdemptyv: 10673,\n\tdiamond: 8900,\n\tdigamma: 989,\n\tdotplus: 8724,\n\tdwangle: 10662,\n\tepsilon: 949,\n\teqcolon: 8789,\n\tequivDD: 10872,\n\tgesdoto: 10882,\n\tgtquest: 10876,\n\tgtrless: 8823,\n\tharrcir: 10568,\n\tintprod: 10812,\n\tisindot: 8949,\n\tlarrbfs: 10527,\n\tlarrsim: 10611,\n\tlbrksld: 10639,\n\tlbrkslu: 10637,\n\tldrdhar: 10599,\n\tlesdoto: 10881,\n\tlessdot: 8918,\n\tlessgtr: 8822,\n\tlesssim: 8818,\n\tlotimes: 10804,\n\tlozenge: 9674,\n\tltquest: 10875,\n\tluruhar: 10598,\n\tmaltese: 10016,\n\tminusdu: 10794,\n\tnapprox: 8777,\n\tnatural: 9838,\n\tnearrow: 8599,\n\tnexists: 8708,\n\tnotinva: 8713,\n\tnotinvb: 8951,\n\tnotinvc: 8950,\n\tnotniva: 8716,\n\tnotnivb: 8958,\n\tnotnivc: 8957,\n\tnpolint: 10772,\n\tnsqsube: 8930,\n\tnsqsupe: 8931,\n\tnvinfin: 10718,\n\tnwarrow: 8598,\n\tolcross: 10683,\n\tomicron: 959,\n\torderof: 8500,\n\torslope: 10839,\n\tpertenk: 8241,\n\tplanckh: 8462,\n\tpluscir: 10786,\n\tplussim: 10790,\n\tplustwo: 10791,\n\tprecsim: 8830,\n\tquatint: 10774,\n\tquesteq: 8799,\n\trarrbfs: 10528,\n\trarrsim: 10612,\n\trbrksld: 10638,\n\trbrkslu: 10640,\n\trdldhar: 10601,\n\trealine: 8475,\n\trotimes: 10805,\n\truluhar: 10600,\n\tsearrow: 8600,\n\tsimplus: 10788,\n\tsimrarr: 10610,\n\tsubedot: 10947,\n\tsubmult: 10945,\n\tsubplus: 10943,\n\tsubrarr: 10617,\n\tsuccsim: 8831,\n\tsupdsub: 10968,\n\tsupedot: 10948,\n\tsuphsub: 10967,\n\tsuplarr: 10619,\n\tsupmult: 10946,\n\tsupplus: 10944,\n\tswarrow: 8601,\n\ttopfork: 10970,\n\ttriplus: 10809,\n\ttritime: 10811,\n\tuparrow: 8593,\n\tupsilon: 965,\n\tuwangle: 10663,\n\tvzigzag: 10650,\n\tzigrarr: 8669,\n\tAacute: 193,\n\tAbreve: 258,\n\tAgrave: 192,\n\tAssign: 8788,\n\tAtilde: 195,\n\tBarwed: 8966,\n\tBumpeq: 8782,\n\tCacute: 262,\n\tCcaron: 268,\n\tCcedil: 199,\n\tColone: 10868,\n\tConint: 8751,\n\tCupCap: 8781,\n\tDagger: 8225,\n\tDcaron: 270,\n\tDotDot: 8412,\n\tDstrok: 272,\n\tEacute: 201,\n\tEcaron: 282,\n\tEgrave: 200,\n\tExists: 8707,\n\tForAll: 8704,\n\tGammad: 988,\n\tGbreve: 286,\n\tGcedil: 290,\n\tHARDcy: 1066,\n\tHstrok: 294,\n\tIacute: 205,\n\tIgrave: 204,\n\tItilde: 296,\n\tJsercy: 1032,\n\tKcedil: 310,\n\tLacute: 313,\n\tLambda: 923,\n\tLcaron: 317,\n\tLcedil: 315,\n\tLmidot: 319,\n\tLstrok: 321,\n\tNacute: 323,\n\tNcaron: 327,\n\tNcedil: 325,\n\tNtilde: 209,\n\tOacute: 211,\n\tOdblac: 336,\n\tOgrave: 210,\n\tOslash: 216,\n\tOtilde: 213,\n\tOtimes: 10807,\n\tRacute: 340,\n\tRarrtl: 10518,\n\tRcaron: 344,\n\tRcedil: 342,\n\tSHCHcy: 1065,\n\tSOFTcy: 1068,\n\tSacute: 346,\n\tScaron: 352,\n\tScedil: 350,\n\tSquare: 9633,\n\tSubset: 8912,\n\tSupset: 8913,\n\tTcaron: 356,\n\tTcedil: 354,\n\tTstrok: 358,\n\tUacute: 218,\n\tUbreve: 364,\n\tUdblac: 368,\n\tUgrave: 217,\n\tUtilde: 360,\n\tVdashl: 10982,\n\tVerbar: 8214,\n\tVvdash: 8874,\n\tYacute: 221,\n\tZacute: 377,\n\tZcaron: 381,\n\taacute: 225,\n\tabreve: 259,\n\tagrave: 224,\n\tandand: 10837,\n\tangmsd: 8737,\n\tangsph: 8738,\n\tapacir: 10863,\n\tapprox: 8776,\n\tatilde: 227,\n\tbarvee: 8893,\n\tbarwed: 8965,\n\tbecaus: 8757,\n\tbernou: 8492,\n\tbigcap: 8898,\n\tbigcup: 8899,\n\tbigvee: 8897,\n\tbkarow: 10509,\n\tbottom: 8869,\n\tbowtie: 8904,\n\tboxbox: 10697,\n\tbprime: 8245,\n\tbrvbar: 166,\n\tbullet: 8226,\n\tbumpeq: 8783,\n\tcacute: 263,\n\tcapand: 10820,\n\tcapcap: 10827,\n\tcapcup: 10823,\n\tcapdot: 10816,\n\tccaron: 269,\n\tccedil: 231,\n\tcirceq: 8791,\n\tcirmid: 10991,\n\tcolone: 8788,\n\tcommat: 64,\n\tcompfn: 8728,\n\tconint: 8750,\n\tcoprod: 8720,\n\tcopysr: 8471,\n\tcularr: 8630,\n\tcupcap: 10822,\n\tcupcup: 10826,\n\tcupdot: 8845,\n\tcurarr: 8631,\n\tcurren: 164,\n\tcylcty: 9005,\n\tdagger: 8224,\n\tdaleth: 8504,\n\tdcaron: 271,\n\tdfisht: 10623,\n\tdivide: 247,\n\tdivonx: 8903,\n\tdlcorn: 8990,\n\tdlcrop: 8973,\n\tdollar: 36,\n\tdrcorn: 8991,\n\tdrcrop: 8972,\n\tdstrok: 273,\n\teacute: 233,\n\teaster: 10862,\n\tecaron: 283,\n\tecolon: 8789,\n\tegrave: 232,\n\tegsdot: 10904,\n\telsdot: 10903,\n\temptyv: 8709,\n\temsp13: 8196,\n\temsp14: 8197,\n\teparsl: 10723,\n\teqcirc: 8790,\n\tequals: 61,\n\tequest: 8799,\n\tfemale: 9792,\n\tffilig: 64259,\n\tffllig: 64260,\n\tforall: 8704,\n\tfrac12: 189,\n\tfrac13: 8531,\n\tfrac14: 188,\n\tfrac15: 8533,\n\tfrac16: 8537,\n\tfrac18: 8539,\n\tfrac23: 8532,\n\tfrac25: 8534,\n\tfrac34: 190,\n\tfrac35: 8535,\n\tfrac38: 8540,\n\tfrac45: 8536,\n\tfrac56: 8538,\n\tfrac58: 8541,\n\tfrac78: 8542,\n\tgacute: 501,\n\tgammad: 989,\n\tgbreve: 287,\n\tgesdot: 10880,\n\tgesles: 10900,\n\tgtlPar: 10645,\n\tgtrarr: 10616,\n\tgtrdot: 8919,\n\tgtrsim: 8819,\n\thairsp: 8202,\n\thamilt: 8459,\n\thardcy: 1098,\n\thearts: 9829,\n\thellip: 8230,\n\thercon: 8889,\n\thomtht: 8763,\n\thorbar: 8213,\n\thslash: 8463,\n\thstrok: 295,\n\thybull: 8259,\n\thyphen: 8208,\n\tiacute: 237,\n\tigrave: 236,\n\tiiiint: 10764,\n\tiinfin: 10716,\n\tincare: 8453,\n\tinodot: 305,\n\tintcal: 8890,\n\tiquest: 191,\n\tisinsv: 8947,\n\titilde: 297,\n\tjsercy: 1112,\n\tkappav: 1008,\n\tkcedil: 311,\n\tkgreen: 312,\n\tlAtail: 10523,\n\tlacute: 314,\n\tlagran: 8466,\n\tlambda: 955,\n\tlangle: 10216,\n\tlarrfs: 10525,\n\tlarrhk: 8617,\n\tlarrlp: 8619,\n\tlarrpl: 10553,\n\tlarrtl: 8610,\n\tlatail: 10521,\n\tlbrace: 123,\n\tlbrack: 91,\n\tlcaron: 318,\n\tlcedil: 316,\n\tldquor: 8222,\n\tlesdot: 10879,\n\tlesges: 10899,\n\tlfisht: 10620,\n\tlfloor: 8970,\n\tlharul: 10602,\n\tllhard: 10603,\n\tlmidot: 320,\n\tlmoust: 9136,\n\tloplus: 10797,\n\tlowast: 8727,\n\tlowbar: 95,\n\tlparlt: 10643,\n\tlrhard: 10605,\n\tlsaquo: 8249,\n\tlsquor: 8218,\n\tlstrok: 322,\n\tlthree: 8907,\n\tltimes: 8905,\n\tltlarr: 10614,\n\tltrPar: 10646,\n\tmapsto: 8614,\n\tmarker: 9646,\n\tmcomma: 10793,\n\tmidast: 42,\n\tmidcir: 10992,\n\tmiddot: 183,\n\tminusb: 8863,\n\tminusd: 8760,\n\tmnplus: 8723,\n\tmodels: 8871,\n\tmstpos: 8766,\n\tnVDash: 8879,\n\tnVdash: 8878,\n\tnacute: 324,\n\tncaron: 328,\n\tncedil: 326,\n\tnearhk: 10532,\n\tnequiv: 8802,\n\tnesear: 10536,\n\tnexist: 8708,\n\tnltrie: 8940,\n\tnprcue: 8928,\n\tnrtrie: 8941,\n\tnsccue: 8929,\n\tnsimeq: 8772,\n\tntilde: 241,\n\tnumero: 8470,\n\tnvDash: 8877,\n\tnvHarr: 10500,\n\tnvdash: 8876,\n\tnvlArr: 10498,\n\tnvrArr: 10499,\n\tnwarhk: 10531,\n\tnwnear: 10535,\n\toacute: 243,\n\todblac: 337,\n\todsold: 10684,\n\tograve: 242,\n\tominus: 8854,\n\torigof: 8886,\n\toslash: 248,\n\totilde: 245,\n\totimes: 8855,\n\tparsim: 10995,\n\tpercnt: 37,\n\tperiod: 46,\n\tpermil: 8240,\n\tphmmat: 8499,\n\tplanck: 8463,\n\tplankv: 8463,\n\tplusdo: 8724,\n\tplusdu: 10789,\n\tplusmn: 177,\n\tpreceq: 10927,\n\tprimes: 8473,\n\tprnsim: 8936,\n\tpropto: 8733,\n\tprurel: 8880,\n\tpuncsp: 8200,\n\tqprime: 8279,\n\trAtail: 10524,\n\tracute: 341,\n\trangle: 10217,\n\trarrap: 10613,\n\trarrfs: 10526,\n\trarrhk: 8618,\n\trarrlp: 8620,\n\trarrpl: 10565,\n\trarrtl: 8611,\n\tratail: 10522,\n\trbrace: 125,\n\trbrack: 93,\n\trcaron: 345,\n\trcedil: 343,\n\trdquor: 8221,\n\trfisht: 10621,\n\trfloor: 8971,\n\trharul: 10604,\n\trmoust: 9137,\n\troplus: 10798,\n\trpargt: 10644,\n\trsaquo: 8250,\n\trsquor: 8217,\n\trthree: 8908,\n\trtimes: 8906,\n\tsacute: 347,\n\tscaron: 353,\n\tscedil: 351,\n\tscnsim: 8937,\n\tsearhk: 10533,\n\tseswar: 10537,\n\tsfrown: 8994,\n\tshchcy: 1097,\n\tsigmaf: 962,\n\tsigmav: 962,\n\tsimdot: 10858,\n\tsmashp: 10803,\n\tsoftcy: 1100,\n\tsolbar: 9023,\n\tspades: 9824,\n\tsqsube: 8849,\n\tsqsupe: 8850,\n\tsquare: 9633,\n\tsquarf: 9642,\n\tssetmn: 8726,\n\tssmile: 8995,\n\tsstarf: 8902,\n\tsubdot: 10941,\n\tsubset: 8834,\n\tsubsim: 10951,\n\tsubsub: 10965,\n\tsubsup: 10963,\n\tsucceq: 10928,\n\tsupdot: 10942,\n\tsupset: 8835,\n\tsupsim: 10952,\n\tsupsub: 10964,\n\tsupsup: 10966,\n\tswarhk: 10534,\n\tswnwar: 10538,\n\ttarget: 8982,\n\ttcaron: 357,\n\ttcedil: 355,\n\ttelrec: 8981,\n\tthere4: 8756,\n\tthetav: 977,\n\tthinsp: 8201,\n\tthksim: 8764,\n\ttimesb: 8864,\n\ttimesd: 10800,\n\ttopbot: 9014,\n\ttopcir: 10993,\n\ttprime: 8244,\n\ttridot: 9708,\n\ttstrok: 359,\n\tuacute: 250,\n\tubreve: 365,\n\tudblac: 369,\n\tufisht: 10622,\n\tugrave: 249,\n\tulcorn: 8988,\n\tulcrop: 8975,\n\turcorn: 8989,\n\turcrop: 8974,\n\tutilde: 361,\n\tvangrt: 10652,\n\tvarphi: 966,\n\tvarrho: 1009,\n\tveebar: 8891,\n\tvellip: 8942,\n\tverbar: 124,\n\twedbar: 10847,\n\twedgeq: 8793,\n\tweierp: 8472,\n\twreath: 8768,\n\txoplus: 10753,\n\txotime: 10754,\n\txsqcup: 10758,\n\txuplus: 10756,\n\txwedge: 8896,\n\tyacute: 253,\n\tzacute: 378,\n\tzcaron: 382,\n\tzeetrf: 8488,\n\tAElig: 198,\n\tAcirc: 194,\n\tAlpha: 913,\n\tAmacr: 256,\n\tAogon: 260,\n\tAring: 197,\n\tBreve: 728,\n\tCcirc: 264,\n\tColon: 8759,\n\tCross: 10799,\n\tDashv: 10980,\n\tDelta: 916,\n\tEcirc: 202,\n\tEmacr: 274,\n\tEogon: 280,\n\tEqual: 10869,\n\tGamma: 915,\n\tGcirc: 284,\n\tHacek: 711,\n\tHcirc: 292,\n\tIJlig: 306,\n\tIcirc: 206,\n\tImacr: 298,\n\tIogon: 302,\n\tIukcy: 1030,\n\tJcirc: 308,\n\tJukcy: 1028,\n\tKappa: 922,\n\tOElig: 338,\n\tOcirc: 212,\n\tOmacr: 332,\n\tOmega: 937,\n\tPrime: 8243,\n\tRBarr: 10512,\n\tScirc: 348,\n\tSigma: 931,\n\tTHORN: 222,\n\tTRADE: 8482,\n\tTSHcy: 1035,\n\tTheta: 920,\n\tTilde: 8764,\n\tUbrcy: 1038,\n\tUcirc: 219,\n\tUmacr: 362,\n\tUnion: 8899,\n\tUogon: 370,\n\tUpTee: 8869,\n\tUring: 366,\n\tVDash: 8875,\n\tVdash: 8873,\n\tWcirc: 372,\n\tWedge: 8896,\n\tYcirc: 374,\n\tacirc: 226,\n\tacute: 180,\n\taelig: 230,\n\taleph: 8501,\n\talpha: 945,\n\tamacr: 257,\n\tamalg: 10815,\n\tangle: 8736,\n\tangrt: 8735,\n\tangst: 8491,\n\taogon: 261,\n\taring: 229,\n\tasymp: 8776,\n\tawint: 10769,\n\tbcong: 8780,\n\tbdquo: 8222,\n\tbepsi: 1014,\n\tblank: 9251,\n\tblk12: 9618,\n\tblk14: 9617,\n\tblk34: 9619,\n\tblock: 9608,\n\tboxDL: 9559,\n\tboxDR: 9556,\n\tboxDl: 9558,\n\tboxDr: 9555,\n\tboxHD: 9574,\n\tboxHU: 9577,\n\tboxHd: 9572,\n\tboxHu: 9575,\n\tboxUL: 9565,\n\tboxUR: 9562,\n\tboxUl: 9564,\n\tboxUr: 9561,\n\tboxVH: 9580,\n\tboxVL: 9571,\n\tboxVR: 9568,\n\tboxVh: 9579,\n\tboxVl: 9570,\n\tboxVr: 9567,\n\tboxdL: 9557,\n\tboxdR: 9554,\n\tboxdl: 9488,\n\tboxdr: 9484,\n\tboxhD: 9573,\n\tboxhU: 9576,\n\tboxhd: 9516,\n\tboxhu: 9524,\n\tboxuL: 9563,\n\tboxuR: 9560,\n\tboxul: 9496,\n\tboxur: 9492,\n\tboxvH: 9578,\n\tboxvL: 9569,\n\tboxvR: 9566,\n\tboxvh: 9532,\n\tboxvl: 9508,\n\tboxvr: 9500,\n\tbreve: 728,\n\tbsemi: 8271,\n\tbsime: 8909,\n\tbsolb: 10693,\n\tbumpE: 10926,\n\tbumpe: 8783,\n\tcaret: 8257,\n\tcaron: 711,\n\tccaps: 10829,\n\tccirc: 265,\n\tccups: 10828,\n\tcedil: 184,\n\tcheck: 10003,\n\tclubs: 9827,\n\tcolon: 58,\n\tcomma: 44,\n\tcrarr: 8629,\n\tcross: 10007,\n\tcsube: 10961,\n\tcsupe: 10962,\n\tctdot: 8943,\n\tcuepr: 8926,\n\tcuesc: 8927,\n\tcupor: 10821,\n\tcuvee: 8910,\n\tcuwed: 8911,\n\tcwint: 8753,\n\tdashv: 8867,\n\tdblac: 733,\n\tddarr: 8650,\n\tdelta: 948,\n\tdharl: 8643,\n\tdharr: 8642,\n\tdiams: 9830,\n\tdisin: 8946,\n\tdoteq: 8784,\n\tdtdot: 8945,\n\tdtrif: 9662,\n\tduarr: 8693,\n\tduhar: 10607,\n\teDDot: 10871,\n\tecirc: 234,\n\tefDot: 8786,\n\temacr: 275,\n\tempty: 8709,\n\teogon: 281,\n\teplus: 10865,\n\tepsiv: 949,\n\teqsim: 8770,\n\tequiv: 8801,\n\terDot: 8787,\n\terarr: 10609,\n\tesdot: 8784,\n\texist: 8707,\n\tfflig: 64256,\n\tfilig: 64257,\n\tfllig: 64258,\n\tfltns: 9649,\n\tforkv: 10969,\n\tfrasl: 8260,\n\tfrown: 8994,\n\tgamma: 947,\n\tgcirc: 285,\n\tgescc: 10921,\n\tgimel: 8503,\n\tgneqq: 8809,\n\tgnsim: 8935,\n\tgrave: 96,\n\tgsime: 10894,\n\tgsiml: 10896,\n\tgtcir: 10874,\n\tgtdot: 8919,\n\tharrw: 8621,\n\thcirc: 293,\n\thoarr: 8703,\n\ticirc: 238,\n\tiexcl: 161,\n\tiiint: 8749,\n\tiiota: 8489,\n\tijlig: 307,\n\timacr: 299,\n\timage: 8465,\n\timath: 305,\n\timped: 437,\n\tinfin: 8734,\n\tiogon: 303,\n\tiprod: 10812,\n\tisinE: 8953,\n\tisins: 8948,\n\tisinv: 8712,\n\tiukcy: 1110,\n\tjcirc: 309,\n\tjmath: 567,\n\tjukcy: 1108,\n\tkappa: 954,\n\tlAarr: 8666,\n\tlBarr: 10510,\n\tlangd: 10641,\n\tlaquo: 171,\n\tlarrb: 8676,\n\tlbarr: 10508,\n\tlbbrk: 10098,\n\tlbrke: 10635,\n\tlceil: 8968,\n\tldquo: 8220,\n\tlescc: 10920,\n\tlhard: 8637,\n\tlharu: 8636,\n\tlhblk: 9604,\n\tllarr: 8647,\n\tlltri: 9722,\n\tlneqq: 8808,\n\tlnsim: 8934,\n\tloang: 10220,\n\tloarr: 8701,\n\tlobrk: 10214,\n\tlopar: 10629,\n\tlrarr: 8646,\n\tlrhar: 8651,\n\tlrtri: 8895,\n\tlsime: 10893,\n\tlsimg: 10895,\n\tlsquo: 8216,\n\tltcir: 10873,\n\tltdot: 8918,\n\tltrie: 8884,\n\tltrif: 9666,\n\tmDDot: 8762,\n\tmdash: 8212,\n\tmicro: 181,\n\tminus: 8722,\n\tmumap: 8888,\n\tnabla: 8711,\n\tnapos: 329,\n\tnatur: 9838,\n\tncong: 8775,\n\tndash: 8211,\n\tneArr: 8663,\n\tnearr: 8599,\n\tngsim: 8821,\n\tnhArr: 8654,\n\tnharr: 8622,\n\tnhpar: 10994,\n\tnlArr: 8653,\n\tnlarr: 8602,\n\tnless: 8814,\n\tnlsim: 8820,\n\tnltri: 8938,\n\tnotin: 8713,\n\tnotni: 8716,\n\tnprec: 8832,\n\tnrArr: 8655,\n\tnrarr: 8603,\n\tnrtri: 8939,\n\tnsime: 8772,\n\tnsmid: 8740,\n\tnspar: 8742,\n\tnsube: 8840,\n\tnsucc: 8833,\n\tnsupe: 8841,\n\tnumsp: 8199,\n\tnwArr: 8662,\n\tnwarr: 8598,\n\tocirc: 244,\n\todash: 8861,\n\toelig: 339,\n\tofcir: 10687,\n\tohbar: 10677,\n\tolarr: 8634,\n\tolcir: 10686,\n\toline: 8254,\n\tomacr: 333,\n\tomega: 969,\n\toperp: 10681,\n\toplus: 8853,\n\torarr: 8635,\n\torder: 8500,\n\tovbar: 9021,\n\tparsl: 11005,\n\tphone: 9742,\n\tplusb: 8862,\n\tpluse: 10866,\n\tpound: 163,\n\tprcue: 8828,\n\tprime: 8242,\n\tprnap: 10937,\n\tprsim: 8830,\n\tquest: 63,\n\trAarr: 8667,\n\trBarr: 10511,\n\tradic: 8730,\n\trangd: 10642,\n\trange: 10661,\n\traquo: 187,\n\trarrb: 8677,\n\trarrc: 10547,\n\trarrw: 8605,\n\tratio: 8758,\n\trbarr: 10509,\n\trbbrk: 10099,\n\trbrke: 10636,\n\trceil: 8969,\n\trdquo: 8221,\n\treals: 8477,\n\trhard: 8641,\n\trharu: 8640,\n\trlarr: 8644,\n\trlhar: 8652,\n\trnmid: 10990,\n\troang: 10221,\n\troarr: 8702,\n\trobrk: 10215,\n\tropar: 10630,\n\trrarr: 8649,\n\trsquo: 8217,\n\trtrie: 8885,\n\trtrif: 9656,\n\tsbquo: 8218,\n\tsccue: 8829,\n\tscirc: 349,\n\tscnap: 10938,\n\tscsim: 8831,\n\tsdotb: 8865,\n\tsdote: 10854,\n\tseArr: 8664,\n\tsearr: 8600,\n\tsetmn: 8726,\n\tsharp: 9839,\n\tsigma: 963,\n\tsimeq: 8771,\n\tsimgE: 10912,\n\tsimlE: 10911,\n\tsimne: 8774,\n\tslarr: 8592,\n\tsmile: 8995,\n\tsqcap: 8851,\n\tsqcup: 8852,\n\tsqsub: 8847,\n\tsqsup: 8848,\n\tsrarr: 8594,\n\tstarf: 9733,\n\tstrns: 175,\n\tsubnE: 10955,\n\tsubne: 8842,\n\tsupnE: 10956,\n\tsupne: 8843,\n\tswArr: 8665,\n\tswarr: 8601,\n\tszlig: 223,\n\ttheta: 952,\n\tthkap: 8776,\n\tthorn: 254,\n\ttilde: 732,\n\ttimes: 215,\n\ttrade: 8482,\n\ttrisb: 10701,\n\ttshcy: 1115,\n\ttwixt: 8812,\n\tubrcy: 1118,\n\tucirc: 251,\n\tudarr: 8645,\n\tudhar: 10606,\n\tuharl: 8639,\n\tuharr: 8638,\n\tuhblk: 9600,\n\tultri: 9720,\n\tumacr: 363,\n\tuogon: 371,\n\tuplus: 8846,\n\tupsih: 978,\n\turing: 367,\n\turtri: 9721,\n\tutdot: 8944,\n\tutrif: 9652,\n\tuuarr: 8648,\n\tvBarv: 10985,\n\tvDash: 8872,\n\tvarpi: 982,\n\tvdash: 8866,\n\tveeeq: 8794,\n\tvltri: 8882,\n\tvprop: 8733,\n\tvrtri: 8883,\n\twcirc: 373,\n\twedge: 8743,\n\txcirc: 9711,\n\txdtri: 9661,\n\txhArr: 10234,\n\txharr: 10231,\n\txlArr: 10232,\n\txlarr: 10229,\n\txodot: 10752,\n\txrArr: 10233,\n\txrarr: 10230,\n\txutri: 9651,\n\tycirc: 375,\n\tAopf: 120120,\n\tAscr: 119964,\n\tAuml: 196,\n\tBarv: 10983,\n\tBeta: 914,\n\tBopf: 120121,\n\tBscr: 8492,\n\tCHcy: 1063,\n\tCOPY: 169,\n\tCdot: 266,\n\tCopf: 8450,\n\tCscr: 119966,\n\tDJcy: 1026,\n\tDScy: 1029,\n\tDZcy: 1039,\n\tDarr: 8609,\n\tDopf: 120123,\n\tDscr: 119967,\n\tEdot: 278,\n\tEopf: 120124,\n\tEscr: 8496,\n\tEsim: 10867,\n\tEuml: 203,\n\tFopf: 120125,\n\tFscr: 8497,\n\tGJcy: 1027,\n\tGdot: 288,\n\tGopf: 120126,\n\tGscr: 119970,\n\tHopf: 8461,\n\tHscr: 8459,\n\tIEcy: 1045,\n\tIOcy: 1025,\n\tIdot: 304,\n\tIopf: 120128,\n\tIota: 921,\n\tIscr: 8464,\n\tIuml: 207,\n\tJopf: 120129,\n\tJscr: 119973,\n\tKHcy: 1061,\n\tKJcy: 1036,\n\tKopf: 120130,\n\tKscr: 119974,\n\tLJcy: 1033,\n\tLang: 10218,\n\tLarr: 8606,\n\tLopf: 120131,\n\tLscr: 8466,\n\tMopf: 120132,\n\tMscr: 8499,\n\tNJcy: 1034,\n\tNopf: 8469,\n\tNscr: 119977,\n\tOopf: 120134,\n\tOscr: 119978,\n\tOuml: 214,\n\tPopf: 8473,\n\tPscr: 119979,\n\tQUOT: 34,\n\tQopf: 8474,\n\tQscr: 119980,\n\tRang: 10219,\n\tRarr: 8608,\n\tRopf: 8477,\n\tRscr: 8475,\n\tSHcy: 1064,\n\tSopf: 120138,\n\tSqrt: 8730,\n\tSscr: 119982,\n\tStar: 8902,\n\tTScy: 1062,\n\tTopf: 120139,\n\tTscr: 119983,\n\tUarr: 8607,\n\tUopf: 120140,\n\tUpsi: 978,\n\tUscr: 119984,\n\tUuml: 220,\n\tVbar: 10987,\n\tVert: 8214,\n\tVopf: 120141,\n\tVscr: 119985,\n\tWopf: 120142,\n\tWscr: 119986,\n\tXopf: 120143,\n\tXscr: 119987,\n\tYAcy: 1071,\n\tYIcy: 1031,\n\tYUcy: 1070,\n\tYopf: 120144,\n\tYscr: 119988,\n\tYuml: 376,\n\tZHcy: 1046,\n\tZdot: 379,\n\tZeta: 918,\n\tZopf: 8484,\n\tZscr: 119989,\n\tandd: 10844,\n\tandv: 10842,\n\tange: 10660,\n\taopf: 120146,\n\tapid: 8779,\n\tapos: 39,\n\tascr: 119990,\n\tauml: 228,\n\tbNot: 10989,\n\tbbrk: 9141,\n\tbeta: 946,\n\tbeth: 8502,\n\tbnot: 8976,\n\tbopf: 120147,\n\tboxH: 9552,\n\tboxV: 9553,\n\tboxh: 9472,\n\tboxv: 9474,\n\tbscr: 119991,\n\tbsim: 8765,\n\tbsol: 92,\n\tbull: 8226,\n\tbump: 8782,\n\tcdot: 267,\n\tcent: 162,\n\tchcy: 1095,\n\tcirE: 10691,\n\tcirc: 710,\n\tcire: 8791,\n\tcomp: 8705,\n\tcong: 8773,\n\tcopf: 120148,\n\tcopy: 169,\n\tcscr: 119992,\n\tcsub: 10959,\n\tcsup: 10960,\n\tdArr: 8659,\n\tdHar: 10597,\n\tdarr: 8595,\n\tdash: 8208,\n\tdiam: 8900,\n\tdjcy: 1106,\n\tdopf: 120149,\n\tdscr: 119993,\n\tdscy: 1109,\n\tdsol: 10742,\n\tdtri: 9663,\n\tdzcy: 1119,\n\teDot: 8785,\n\tecir: 8790,\n\tedot: 279,\n\temsp: 8195,\n\tensp: 8194,\n\teopf: 120150,\n\tepar: 8917,\n\tepsi: 1013,\n\tescr: 8495,\n\tesim: 8770,\n\teuml: 235,\n\teuro: 8364,\n\texcl: 33,\n\tflat: 9837,\n\tfnof: 402,\n\tfopf: 120151,\n\tfork: 8916,\n\tfscr: 119995,\n\tgdot: 289,\n\tgeqq: 8807,\n\tgjcy: 1107,\n\tgnap: 10890,\n\tgneq: 10888,\n\tgopf: 120152,\n\tgscr: 8458,\n\tgsim: 8819,\n\tgtcc: 10919,\n\thArr: 8660,\n\thalf: 189,\n\tharr: 8596,\n\thbar: 8463,\n\thopf: 120153,\n\thscr: 119997,\n\tiecy: 1077,\n\timof: 8887,\n\tiocy: 1105,\n\tiopf: 120154,\n\tiota: 953,\n\tiscr: 119998,\n\tisin: 8712,\n\tiuml: 239,\n\tjopf: 120155,\n\tjscr: 119999,\n\tkhcy: 1093,\n\tkjcy: 1116,\n\tkopf: 120156,\n\tkscr: 120000,\n\tlArr: 8656,\n\tlHar: 10594,\n\tlang: 10216,\n\tlarr: 8592,\n\tlate: 10925,\n\tlcub: 123,\n\tldca: 10550,\n\tldsh: 8626,\n\tleqq: 8806,\n\tljcy: 1113,\n\tlnap: 10889,\n\tlneq: 10887,\n\tlopf: 120157,\n\tlozf: 10731,\n\tlpar: 40,\n\tlscr: 120001,\n\tlsim: 8818,\n\tlsqb: 91,\n\tltcc: 10918,\n\tltri: 9667,\n\tmacr: 175,\n\tmale: 9794,\n\tmalt: 10016,\n\tmlcp: 10971,\n\tmldr: 8230,\n\tmopf: 120158,\n\tmscr: 120002,\n\tnbsp: 160,\n\tncap: 10819,\n\tncup: 10818,\n\tngeq: 8817,\n\tngtr: 8815,\n\tnisd: 8954,\n\tnjcy: 1114,\n\tnldr: 8229,\n\tnleq: 8816,\n\tnmid: 8740,\n\tnopf: 120159,\n\tnpar: 8742,\n\tnscr: 120003,\n\tnsim: 8769,\n\tnsub: 8836,\n\tnsup: 8837,\n\tntgl: 8825,\n\tntlg: 8824,\n\toast: 8859,\n\tocir: 8858,\n\todiv: 10808,\n\todot: 8857,\n\togon: 731,\n\toint: 8750,\n\tomid: 10678,\n\toopf: 120160,\n\topar: 10679,\n\tordf: 170,\n\tordm: 186,\n\toror: 10838,\n\toscr: 8500,\n\tosol: 8856,\n\touml: 246,\n\tpara: 182,\n\tpart: 8706,\n\tperp: 8869,\n\tphiv: 966,\n\tplus: 43,\n\tpopf: 120161,\n\tprap: 10935,\n\tprec: 8826,\n\tprnE: 10933,\n\tprod: 8719,\n\tprop: 8733,\n\tpscr: 120005,\n\tqint: 10764,\n\tqopf: 120162,\n\tqscr: 120006,\n\tquot: 34,\n\trArr: 8658,\n\trHar: 10596,\n\trace: 10714,\n\trang: 10217,\n\trarr: 8594,\n\trcub: 125,\n\trdca: 10551,\n\trdsh: 8627,\n\treal: 8476,\n\trect: 9645,\n\trhov: 1009,\n\tring: 730,\n\tropf: 120163,\n\trpar: 41,\n\trscr: 120007,\n\trsqb: 93,\n\trtri: 9657,\n\tscap: 10936,\n\tscnE: 10934,\n\tsdot: 8901,\n\tsect: 167,\n\tsemi: 59,\n\tsext: 10038,\n\tshcy: 1096,\n\tsime: 8771,\n\tsimg: 10910,\n\tsiml: 10909,\n\tsmid: 8739,\n\tsmte: 10924,\n\tsolb: 10692,\n\tsopf: 120164,\n\tspar: 8741,\n\tsquf: 9642,\n\tsscr: 120008,\n\tstar: 9734,\n\tsubE: 10949,\n\tsube: 8838,\n\tsucc: 8827,\n\tsung: 9834,\n\tsup1: 185,\n\tsup2: 178,\n\tsup3: 179,\n\tsupE: 10950,\n\tsupe: 8839,\n\ttbrk: 9140,\n\ttdot: 8411,\n\ttint: 8749,\n\ttoea: 10536,\n\ttopf: 120165,\n\ttosa: 10537,\n\ttrie: 8796,\n\ttscr: 120009,\n\ttscy: 1094,\n\tuArr: 8657,\n\tuHar: 10595,\n\tuarr: 8593,\n\tuopf: 120166,\n\tupsi: 965,\n\tuscr: 120010,\n\tutri: 9653,\n\tuuml: 252,\n\tvArr: 8661,\n\tvBar: 10984,\n\tvarr: 8597,\n\tvert: 124,\n\tvopf: 120167,\n\tvscr: 120011,\n\twopf: 120168,\n\twscr: 120012,\n\txcap: 8898,\n\txcup: 8899,\n\txmap: 10236,\n\txnis: 8955,\n\txopf: 120169,\n\txscr: 120013,\n\txvee: 8897,\n\tyacy: 1103,\n\tyicy: 1111,\n\tyopf: 120170,\n\tyscr: 120014,\n\tyucy: 1102,\n\tyuml: 255,\n\tzdot: 380,\n\tzeta: 950,\n\tzhcy: 1078,\n\tzopf: 120171,\n\tzscr: 120015,\n\tzwnj: 8204,\n\tAMP: 38,\n\tAcy: 1040,\n\tAfr: 120068,\n\tAnd: 10835,\n\tBcy: 1041,\n\tBfr: 120069,\n\tCap: 8914,\n\tCfr: 8493,\n\tChi: 935,\n\tCup: 8915,\n\tDcy: 1044,\n\tDel: 8711,\n\tDfr: 120071,\n\tDot: 168,\n\tENG: 330,\n\tETH: 208,\n\tEcy: 1069,\n\tEfr: 120072,\n\tEta: 919,\n\tFcy: 1060,\n\tFfr: 120073,\n\tGcy: 1043,\n\tGfr: 120074,\n\tHat: 94,\n\tHfr: 8460,\n\tIcy: 1048,\n\tIfr: 8465,\n\tInt: 8748,\n\tJcy: 1049,\n\tJfr: 120077,\n\tKcy: 1050,\n\tKfr: 120078,\n\tLcy: 1051,\n\tLfr: 120079,\n\tLsh: 8624,\n\tMap: 10501,\n\tMcy: 1052,\n\tMfr: 120080,\n\tNcy: 1053,\n\tNfr: 120081,\n\tNot: 10988,\n\tOcy: 1054,\n\tOfr: 120082,\n\tPcy: 1055,\n\tPfr: 120083,\n\tPhi: 934,\n\tPsi: 936,\n\tQfr: 120084,\n\tREG: 174,\n\tRcy: 1056,\n\tRfr: 8476,\n\tRho: 929,\n\tRsh: 8625,\n\tScy: 1057,\n\tSfr: 120086,\n\tSub: 8912,\n\tSum: 8721,\n\tSup: 8913,\n\tTab: 9,\n\tTau: 932,\n\tTcy: 1058,\n\tTfr: 120087,\n\tUcy: 1059,\n\tUfr: 120088,\n\tVcy: 1042,\n\tVee: 8897,\n\tVfr: 120089,\n\tWfr: 120090,\n\tXfr: 120091,\n\tYcy: 1067,\n\tYfr: 120092,\n\tZcy: 1047,\n\tZfr: 8488,\n\tacd: 8767,\n\tacy: 1072,\n\tafr: 120094,\n\tamp: 38,\n\tand: 8743,\n\tang: 8736,\n\tapE: 10864,\n\tape: 8778,\n\tast: 42,\n\tbcy: 1073,\n\tbfr: 120095,\n\tbot: 8869,\n\tcap: 8745,\n\tcfr: 120096,\n\tchi: 967,\n\tcir: 9675,\n\tcup: 8746,\n\tdcy: 1076,\n\tdeg: 176,\n\tdfr: 120097,\n\tdie: 168,\n\tdiv: 247,\n\tdot: 729,\n\tecy: 1101,\n\tefr: 120098,\n\tegs: 10902,\n\tell: 8467,\n\tels: 10901,\n\teng: 331,\n\teta: 951,\n\teth: 240,\n\tfcy: 1092,\n\tffr: 120099,\n\tgEl: 10892,\n\tgap: 10886,\n\tgcy: 1075,\n\tgel: 8923,\n\tgeq: 8805,\n\tges: 10878,\n\tgfr: 120100,\n\tggg: 8921,\n\tglE: 10898,\n\tgla: 10917,\n\tglj: 10916,\n\tgnE: 8809,\n\tgne: 10888,\n\thfr: 120101,\n\ticy: 1080,\n\tiff: 8660,\n\tifr: 120102,\n\tint: 8747,\n\tjcy: 1081,\n\tjfr: 120103,\n\tkcy: 1082,\n\tkfr: 120104,\n\tlEg: 10891,\n\tlap: 10885,\n\tlat: 10923,\n\tlcy: 1083,\n\tleg: 8922,\n\tleq: 8804,\n\tles: 10877,\n\tlfr: 120105,\n\tlgE: 10897,\n\tlnE: 8808,\n\tlne: 10887,\n\tloz: 9674,\n\tlrm: 8206,\n\tlsh: 8624,\n\tmap: 8614,\n\tmcy: 1084,\n\tmfr: 120106,\n\tmho: 8487,\n\tmid: 8739,\n\tnap: 8777,\n\tncy: 1085,\n\tnfr: 120107,\n\tnge: 8817,\n\tngt: 8815,\n\tnis: 8956,\n\tniv: 8715,\n\tnle: 8816,\n\tnlt: 8814,\n\tnot: 172,\n\tnpr: 8832,\n\tnsc: 8833,\n\tnum: 35,\n\tocy: 1086,\n\tofr: 120108,\n\togt: 10689,\n\tohm: 8486,\n\tolt: 10688,\n\tord: 10845,\n\torv: 10843,\n\tpar: 8741,\n\tpcy: 1087,\n\tpfr: 120109,\n\tphi: 966,\n\tpiv: 982,\n\tprE: 10931,\n\tpre: 10927,\n\tpsi: 968,\n\tqfr: 120110,\n\trcy: 1088,\n\treg: 174,\n\trfr: 120111,\n\trho: 961,\n\trlm: 8207,\n\trsh: 8625,\n\tscE: 10932,\n\tsce: 10928,\n\tscy: 1089,\n\tsfr: 120112,\n\tshy: 173,\n\tsim: 8764,\n\tsmt: 10922,\n\tsol: 47,\n\tsqu: 9633,\n\tsub: 8834,\n\tsum: 8721,\n\tsup: 8835,\n\ttau: 964,\n\ttcy: 1090,\n\ttfr: 120113,\n\ttop: 8868,\n\tucy: 1091,\n\tufr: 120114,\n\tuml: 168,\n\tvcy: 1074,\n\tvee: 8744,\n\tvfr: 120115,\n\twfr: 120116,\n\txfr: 120117,\n\tycy: 1099,\n\tyen: 165,\n\tyfr: 120118,\n\tzcy: 1079,\n\tzfr: 120119,\n\tzwj: 8205,\n\tDD: 8517,\n\tGT: 62,\n\tGg: 8921,\n\tGt: 8811,\n\tIm: 8465,\n\tLT: 60,\n\tLl: 8920,\n\tLt: 8810,\n\tMu: 924,\n\tNu: 925,\n\tOr: 10836,\n\tPi: 928,\n\tPr: 10939,\n\tRe: 8476,\n\tSc: 10940,\n\tXi: 926,\n\tac: 8766,\n\taf: 8289,\n\tap: 8776,\n\tdd: 8518,\n\tee: 8519,\n\teg: 10906,\n\tel: 10905,\n\tgE: 8807,\n\tge: 8805,\n\tgg: 8811,\n\tgl: 8823,\n\tgt: 62,\n\tic: 8291,\n\tii: 8520,\n\tin: 8712,\n\tit: 8290,\n\tlE: 8806,\n\tle: 8804,\n\tlg: 8822,\n\tll: 8810,\n\tlt: 60,\n\tmp: 8723,\n\tmu: 956,\n\tne: 8800,\n\tni: 8715,\n\tnu: 957,\n\toS: 9416,\n\tor: 8744,\n\tpi: 960,\n\tpm: 177,\n\tpr: 8826,\n\trx: 8478,\n\tsc: 8827,\n\twp: 8472,\n\twr: 8768,\n\txi: 958\n};\n","import entities from './entities';\n\nconst windows_1252 = [\n\t8364,\n\t129,\n\t8218,\n\t402,\n\t8222,\n\t8230,\n\t8224,\n\t8225,\n\t710,\n\t8240,\n\t352,\n\t8249,\n\t338,\n\t141,\n\t381,\n\t143,\n\t144,\n\t8216,\n\t8217,\n\t8220,\n\t8221,\n\t8226,\n\t8211,\n\t8212,\n\t732,\n\t8482,\n\t353,\n\t8250,\n\t339,\n\t157,\n\t382,\n\t376\n];\n\nconst entity_pattern = new RegExp(\n\t`&(#?(?:x[\\\\w\\\\d]+|\\\\d+|${Object.keys(entities).join('|')}))(?:;|\\\\b)`,\n\t'g'\n);\n\nexport function decode_character_references(html: string) {\n\treturn html.replace(entity_pattern, (match, entity) => {\n\t\tlet code;\n\n\t\t// Handle named entities\n\t\tif (entity[0] !== '#') {\n\t\t\tcode = entities[entity];\n\t\t} else if (entity[1] === 'x') {\n\t\t\tcode = parseInt(entity.substring(2), 16);\n\t\t} else {\n\t\t\tcode = parseInt(entity.substring(1), 10);\n\t\t}\n\n\t\tif (!code) {\n\t\t\treturn match;\n\t\t}\n\n\t\treturn String.fromCodePoint(validate_code(code));\n\t});\n}\n\nconst NUL = 0;\n\n// some code points are verboten. If we were inserting HTML, the browser would replace the illegal\n// code points with alternatives in some cases - since we're bypassing that mechanism, we need\n// to replace them ourselves\n//\n// Source: http://en.wikipedia.org/wiki/Character_encodings_in_HTML#Illegal_characters\nfunction validate_code(code: number) {\n\t// line feed becomes generic whitespace\n\tif (code === 10) {\n\t\treturn 32;\n\t}\n\n\t// ASCII range. (Why someone would use HTML entities for ASCII characters I don't know, but...)\n\tif (code < 128) {\n\t\treturn code;\n\t}\n\n\t// code points 128-159 are dealt with leniently by browsers, but they're incorrect. We need\n\t// to correct the mistake or we'll end up with missing € signs and so on\n\tif (code <= 159) {\n\t\treturn windows_1252[code - 128];\n\t}\n\n\t// basic multilingual plane\n\tif (code < 55296) {\n\t\treturn code;\n\t}\n\n\t// UTF-16 surrogate halves\n\tif (code <= 57343) {\n\t\treturn NUL;\n\t}\n\n\t// rest of the basic multilingual plane\n\tif (code <= 65535) {\n\t\treturn code;\n\t}\n\n\t// supplementary multilingual plane 0x10000 - 0x1ffff\n\tif (code >= 65536 && code <= 131071) {\n\t\treturn code;\n\t}\n\n\t// supplementary ideographic plane 0x20000 - 0x2ffff\n\tif (code >= 131072 && code <= 196607) {\n\t\treturn code;\n\t}\n\n\treturn NUL;\n}\n\n// based on http://developers.whatwg.org/syntax.html#syntax-tag-omission\nconst disallowed_contents = new Map([\n\t['li', new Set(['li'])],\n\t['dt', new Set(['dt', 'dd'])],\n\t['dd', new Set(['dt', 'dd'])],\n\t[\n\t\t'p',\n\t\tnew Set(\n\t\t\t'address article aside blockquote div dl fieldset footer form h1 h2 h3 h4 h5 h6 header hgroup hr main menu nav ol p pre section table ul'.split(\n\t\t\t\t' '\n\t\t\t)\n\t\t)\n\t],\n\t['rt', new Set(['rt', 'rp'])],\n\t['rp', new Set(['rt', 'rp'])],\n\t['optgroup', new Set(['optgroup'])],\n\t['option', new Set(['option', 'optgroup'])],\n\t['thead', new Set(['tbody', 'tfoot'])],\n\t['tbody', new Set(['tbody', 'tfoot'])],\n\t['tfoot', new Set(['tbody'])],\n\t['tr', new Set(['tr', 'tbody'])],\n\t['td', new Set(['td', 'th', 'tr'])],\n\t['th', new Set(['td', 'th', 'tr'])]\n]);\n\n// can this be a child of the parent element, or does it implicitly\n// close it, like `<li>one<li>two`?\nexport function closing_tag_omitted(current: string, next?: string) {\n\tif (disallowed_contents.has(current)) {\n\t\tif (!next || disallowed_contents.get(current).has(next)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n","// Adapted from https://github.com/acornjs/acorn/blob/6584815dca7440e00de841d1dad152302fdd7ca5/src/tokenize.js\n// Reproduced under MIT License https://github.com/acornjs/acorn/blob/master/LICENSE\n\nexport default function full_char_code_at(str: string, i: number): number {\n\tconst code = str.charCodeAt(i);\n\tif (code <= 0xd7ff || code >= 0xe000) return code;\n\n\tconst next = str.charCodeAt(i + 1);\n\treturn (code << 10) + next - 0x35fdc00;\n}\n","import { isIdentifierStart, isIdentifierChar } from 'acorn';\nimport full_char_code_at from './full_char_code_at';\n\nexport const globals = new Set([\n\t'alert',\n\t'Array',\n\t'Boolean',\n\t'clearInterval',\n\t'clearTimeout',\n\t'confirm',\n\t'console',\n\t'Date',\n\t'decodeURI',\n\t'decodeURIComponent',\n\t'document',\n\t'Element',\n\t'encodeURI',\n\t'encodeURIComponent',\n\t'Error',\n\t'EvalError',\n\t'Event',\n\t'EventSource',\n\t'fetch',\n\t'global',\n\t'globalThis',\n\t'history',\n\t'Infinity',\n\t'InternalError',\n\t'Intl',\n\t'isFinite',\n\t'isNaN',\n\t'JSON',\n\t'localStorage',\n\t'location',\n\t'Map',\n\t'Math',\n\t'NaN',\n\t'navigator',\n\t'Number',\n\t'Node',\n\t'Object',\n\t'parseFloat',\n\t'parseInt',\n\t'process',\n\t'Promise',\n\t'prompt',\n\t'RangeError',\n\t'ReferenceError',\n\t'RegExp',\n\t'sessionStorage',\n\t'Set',\n\t'setInterval',\n\t'setTimeout',\n\t'String',\n\t'SyntaxError',\n\t'TypeError',\n\t'undefined',\n\t'URIError',\n\t'URL',\n\t'window'\n]);\n\nexport const reserved = new Set([\n\t'arguments',\n\t'await',\n\t'break',\n\t'case',\n\t'catch',\n\t'class',\n\t'const',\n\t'continue',\n\t'debugger',\n\t'default',\n\t'delete',\n\t'do',\n\t'else',\n\t'enum',\n\t'eval',\n\t'export',\n\t'extends',\n\t'false',\n\t'finally',\n\t'for',\n\t'function',\n\t'if',\n\t'implements',\n\t'import',\n\t'in',\n\t'instanceof',\n\t'interface',\n\t'let',\n\t'new',\n\t'null',\n\t'package',\n\t'private',\n\t'protected',\n\t'public',\n\t'return',\n\t'static',\n\t'super',\n\t'switch',\n\t'this',\n\t'throw',\n\t'true',\n\t'try',\n\t'typeof',\n\t'var',\n\t'void',\n\t'while',\n\t'with',\n\t'yield'\n]);\n\nconst void_element_names = /^(?:area|base|br|col|command|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)$/;\n\nexport function is_void(name: string) {\n\treturn void_element_names.test(name) || name.toLowerCase() === '!doctype';\n}\n\nexport function is_valid(str: string): boolean {\n\tlet i = 0;\n\n\twhile (i < str.length) {\n\t\tconst code = full_char_code_at(str, i);\n\t\tif (!(i === 0 ? isIdentifierStart : isIdentifierChar)(code, true)) return false;\n\n\t\ti += code <= 0xffff ? 1 : 2;\n\t}\n\n\treturn true;\n}\n\nexport function sanitize(name: string) {\n\treturn name\n\t\t.replace(/[^a-zA-Z0-9_]+/g, '_')\n\t\t.replace(/^_/, '')\n\t\t.replace(/_$/, '')\n\t\t.replace(/^[0-9]/, '_$&');\n}\n","export default function fuzzymatch(name: string, names: string[]) {\n\tconst set = new FuzzySet(names);\n\tconst matches = set.get(name);\n\n\treturn matches && matches[0] && matches[0][0] > 0.7 ? matches[0][1] : null;\n}\n\n// adapted from https://github.com/Glench/fuzzyset.js/blob/master/lib/fuzzyset.js\n// BSD Licensed\n\nconst GRAM_SIZE_LOWER = 2;\nconst GRAM_SIZE_UPPER = 3;\n\n// return an edit distance from 0 to 1\nfunction _distance(str1: string, str2: string) {\n\tif (str1 === null && str2 === null) {\n\t\tthrow 'Trying to compare two null values';\n\t}\n\tif (str1 === null || str2 === null) return 0;\n\tstr1 = String(str1);\n\tstr2 = String(str2);\n\n\tconst distance = levenshtein(str1, str2);\n\tif (str1.length > str2.length) {\n\t\treturn 1 - distance / str1.length;\n\t} else {\n\t\treturn 1 - distance / str2.length;\n\t}\n}\n\n// helper functions\nfunction levenshtein(str1: string, str2: string) {\n\tconst current: number[] = [];\n\tlet prev;\n\tlet value;\n\n\tfor (let i = 0; i <= str2.length; i++) {\n\t\tfor (let j = 0; j <= str1.length; j++) {\n\t\t\tif (i && j) {\n\t\t\t\tif (str1.charAt(j - 1) === str2.charAt(i - 1)) {\n\t\t\t\t\tvalue = prev;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = Math.min(current[j], current[j - 1], prev) + 1;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvalue = i + j;\n\t\t\t}\n\n\t\t\tprev = current[j];\n\t\t\tcurrent[j] = value;\n\t\t}\n\t}\n\n\treturn current.pop();\n}\n\nconst non_word_regex = /[^\\w, ]+/;\n\nfunction iterate_grams(value: string, gram_size = 2) {\n\tconst simplified = '-' + value.toLowerCase().replace(non_word_regex, '') + '-';\n\tconst len_diff = gram_size - simplified.length;\n\tconst results = [];\n\n\tif (len_diff > 0) {\n\t\tfor (let i = 0; i < len_diff; ++i) {\n\t\t\tvalue += '-';\n\t\t}\n\t}\n\tfor (let i = 0; i < simplified.length - gram_size + 1; ++i) {\n\t\tresults.push(simplified.slice(i, i + gram_size));\n\t}\n\treturn results;\n}\n\nfunction gram_counter(value: string, gram_size = 2) {\n\t// return an object where key=gram, value=number of occurrences\n\tconst result = {};\n\tconst grams = iterate_grams(value, gram_size);\n\tlet i = 0;\n\n\tfor (i; i < grams.length; ++i) {\n\t\tif (grams[i] in result) {\n\t\t\tresult[grams[i]] += 1;\n\t\t} else {\n\t\t\tresult[grams[i]] = 1;\n\t\t}\n\t}\n\treturn result;\n}\n\nfunction sort_descending(a, b) {\n\treturn b[0] - a[0];\n}\n\nclass FuzzySet {\n\texact_set = {};\n\tmatch_dict = {};\n\titems = {};\n\n\tconstructor(arr: string[]) {\n\t\t// initialization\n\t\tfor (let i = GRAM_SIZE_LOWER; i < GRAM_SIZE_UPPER + 1; ++i) {\n\t\t\tthis.items[i] = [];\n\t\t}\n\n\t\t// add all the items to the set\n\t\tfor (let i = 0; i < arr.length; ++i) {\n\t\t\tthis.add(arr[i]);\n\t\t}\n\t}\n\n\tadd(value: string) {\n\t\tconst normalized_value = value.toLowerCase();\n\t\tif (normalized_value in this.exact_set) {\n\t\t\treturn false;\n\t\t}\n\n\t\tlet i = GRAM_SIZE_LOWER;\n\t\tfor (i; i < GRAM_SIZE_UPPER + 1; ++i) {\n\t\t\tthis._add(value, i);\n\t\t}\n\t}\n\n\t_add(value: string, gram_size: number) {\n\t\tconst normalized_value = value.toLowerCase();\n\t\tconst items = this.items[gram_size] || [];\n\t\tconst index = items.length;\n\n\t\titems.push(0);\n\t\tconst gram_counts = gram_counter(normalized_value, gram_size);\n\t\tlet sum_of_square_gram_counts = 0;\n\t\tlet gram;\n\t\tlet gram_count;\n\n\t\tfor (gram in gram_counts) {\n\t\t\tgram_count = gram_counts[gram];\n\t\t\tsum_of_square_gram_counts += Math.pow(gram_count, 2);\n\t\t\tif (gram in this.match_dict) {\n\t\t\t\tthis.match_dict[gram].push([index, gram_count]);\n\t\t\t} else {\n\t\t\t\tthis.match_dict[gram] = [[index, gram_count]];\n\t\t\t}\n\t\t}\n\t\tconst vector_normal = Math.sqrt(sum_of_square_gram_counts);\n\t\titems[index] = [vector_normal, normalized_value];\n\t\tthis.items[gram_size] = items;\n\t\tthis.exact_set[normalized_value] = value;\n\t}\n\n\tget(value: string) {\n\t\tconst normalized_value = value.toLowerCase();\n\t\tconst result = this.exact_set[normalized_value];\n\n\t\tif (result) {\n\t\t\treturn [[1, result]];\n\t\t}\n\n\t\tlet results = [];\n\t\t// start with high gram size and if there are no results, go to lower gram sizes\n\t\tfor (\n\t\t\tlet gram_size = GRAM_SIZE_UPPER;\n\t\t\tgram_size >= GRAM_SIZE_LOWER;\n\t\t\t--gram_size\n\t\t) {\n\t\t\tresults = this.__get(value, gram_size);\n\t\t\tif (results) {\n\t\t\t\treturn results;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\t__get(value: string, gram_size: number) {\n\t\tconst normalized_value = value.toLowerCase();\n\t\tconst matches = {};\n\t\tconst gram_counts = gram_counter(normalized_value, gram_size);\n\t\tconst items = this.items[gram_size];\n\t\tlet sum_of_square_gram_counts = 0;\n\t\tlet gram;\n\t\tlet gram_count;\n\t\tlet i;\n\t\tlet index;\n\t\tlet other_gram_count;\n\n\t\tfor (gram in gram_counts) {\n\t\t\tgram_count = gram_counts[gram];\n\t\t\tsum_of_square_gram_counts += Math.pow(gram_count, 2);\n\t\t\tif (gram in this.match_dict) {\n\t\t\t\tfor (i = 0; i < this.match_dict[gram].length; ++i) {\n\t\t\t\t\tindex = this.match_dict[gram][i][0];\n\t\t\t\t\tother_gram_count = this.match_dict[gram][i][1];\n\t\t\t\t\tif (index in matches) {\n\t\t\t\t\t\tmatches[index] += gram_count * other_gram_count;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmatches[index] = gram_count * other_gram_count;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst vector_normal = Math.sqrt(sum_of_square_gram_counts);\n\t\tlet results = [];\n\t\tlet match_score;\n\n\t\t// build a results list of [score, str]\n\t\tfor (const match_index in matches) {\n\t\t\tmatch_score = matches[match_index];\n\t\t\tresults.push([\n\t\t\t\tmatch_score / (vector_normal * items[match_index][0]),\n\t\t\t\titems[match_index][1]\n\t\t\t]);\n\t\t}\n\n\t\tresults.sort(sort_descending);\n\n\t\tlet new_results = [];\n\t\tconst end_index = Math.min(50, results.length);\n\t\t// truncate somewhat arbitrarily to 50\n\t\tfor (let i = 0; i < end_index; ++i) {\n\t\t\tnew_results.push([\n\t\t\t\t_distance(results[i][1], normalized_value),\n\t\t\t\tresults[i][1]\n\t\t\t]);\n\t\t}\n\t\tresults = new_results;\n\t\tresults.sort(sort_descending);\n\n\t\tnew_results = [];\n\t\tfor (let i = 0; i < results.length; ++i) {\n\t\t\tif (results[i][0] == results[0][0]) {\n\t\t\t\tnew_results.push([results[i][0], this.exact_set[results[i][1]]]);\n\t\t\t}\n\t\t}\n\n\t\treturn new_results;\n\t}\n}\n","export default function list(items: string[], conjunction = 'or') {\n\tif (items.length === 1) return items[0];\n\treturn `${items.slice(0, -1).join(', ')} ${conjunction} ${items[\n\t\titems.length - 1\n\t]}`;\n}\n","import read_expression from '../read/expression';\nimport read_script from '../read/script';\nimport read_style from '../read/style';\nimport { decode_character_references, closing_tag_omitted } from '../utils/html';\nimport { is_void } from '../../utils/names';\nimport { Parser } from '../index';\nimport { Directive, DirectiveType, TemplateNode, Text } from '../../interfaces';\nimport fuzzymatch from '../../utils/fuzzymatch';\nimport list from '../../utils/list';\n\n// eslint-disable-next-line no-useless-escape\nconst valid_tag_name = /^\\!?[a-zA-Z]{1,}:?[a-zA-Z0-9\\-]*/;\n\nconst meta_tags = new Map([\n\t['svelte:head', 'Head'],\n\t['svelte:options', 'Options'],\n\t['svelte:window', 'Window'],\n\t['svelte:body', 'Body']\n]);\n\nconst valid_meta_tags = Array.from(meta_tags.keys()).concat('svelte:self', 'svelte:component');\n\nconst specials = new Map([\n\t[\n\t\t'script',\n\t\t{\n\t\t\tread: read_script,\n\t\t\tproperty: 'js'\n\t\t}\n\t],\n\t[\n\t\t'style',\n\t\t{\n\t\t\tread: read_style,\n\t\t\tproperty: 'css'\n\t\t}\n\t]\n]);\n\nconst SELF = /^svelte:self(?=[\\s/>])/;\nconst COMPONENT = /^svelte:component(?=[\\s/>])/;\n\nfunction parent_is_head(stack) {\n\tlet i = stack.length;\n\twhile (i--) {\n\t\tconst { type } = stack[i];\n\t\tif (type === 'Head') return true;\n\t\tif (type === 'Element' || type === 'InlineComponent') return false;\n\t}\n\treturn false;\n}\n\nexport default function tag(parser: Parser) {\n\tconst start = parser.index++;\n\n\tlet parent = parser.current();\n\n\tif (parser.eat('!--')) {\n\t\tconst data = parser.read_until(/-->/);\n\t\tparser.eat('-->', true, 'comment was left open, expected -->');\n\n\t\tparser.current().children.push({\n\t\t\tstart,\n\t\t\tend: parser.index,\n\t\t\ttype: 'Comment',\n\t\t\tdata\n\t\t});\n\n\t\treturn;\n\t}\n\n\tconst is_closing_tag = parser.eat('/');\n\n\tconst name = read_tag_name(parser);\n\n\tif (meta_tags.has(name)) {\n\t\tconst slug = meta_tags.get(name).toLowerCase();\n\t\tif (is_closing_tag) {\n\t\t\tif (\n\t\t\t\t(name === 'svelte:window' || name === 'svelte:body') &&\n\t\t\t\tparser.current().children.length\n\t\t\t) {\n\t\t\t\tparser.error({\n\t\t\t\t\tcode: `invalid-${slug}-content`,\n\t\t\t\t\tmessage: `<${name}> cannot have children`\n\t\t\t\t}, parser.current().children[0].start);\n\t\t\t}\n\t\t} else {\n\t\t\tif (name in parser.meta_tags) {\n\t\t\t\tparser.error({\n\t\t\t\t\tcode: `duplicate-${slug}`,\n\t\t\t\t\tmessage: `A component can only have one <${name}> tag`\n\t\t\t\t}, start);\n\t\t\t}\n\n\t\t\tif (parser.stack.length > 1) {\n\t\t\t\tparser.error({\n\t\t\t\t\tcode: `invalid-${slug}-placement`,\n\t\t\t\t\tmessage: `<${name}> tags cannot be inside elements or blocks`\n\t\t\t\t}, start);\n\t\t\t}\n\n\t\t\tparser.meta_tags[name] = true;\n\t\t}\n\t}\n\n\tconst type = meta_tags.has(name)\n\t\t? meta_tags.get(name)\n\t\t: (/[A-Z]/.test(name[0]) || name === 'svelte:self' || name === 'svelte:component') ? 'InlineComponent'\n\t\t\t: name === 'title' && parent_is_head(parser.stack) ? 'Title'\n\t\t\t\t: name === 'slot' && !parser.customElement ? 'Slot' : 'Element';\n\n\tconst element: TemplateNode = {\n\t\tstart,\n\t\tend: null, // filled in later\n\t\ttype,\n\t\tname,\n\t\tattributes: [],\n\t\tchildren: []\n\t};\n\n\tparser.allow_whitespace();\n\n\tif (is_closing_tag) {\n\t\tif (is_void(name)) {\n\t\t\tparser.error({\n\t\t\t\tcode: 'invalid-void-content',\n\t\t\t\tmessage: `<${name}> is a void element and cannot have children, or a closing tag`\n\t\t\t}, start);\n\t\t}\n\n\t\tparser.eat('>', true);\n\n\t\t// close any elements that don't have their own closing tags, e.g. <div><p></div>\n\t\twhile (parent.name !== name) {\n\t\t\tif (parent.type !== 'Element') {\n\t\t\t\tconst message = parser.last_auto_closed_tag && parser.last_auto_closed_tag.tag === name\n\t\t\t\t\t? `</${name}> attempted to close <${name}> that was already automatically closed by <${parser.last_auto_closed_tag.reason}>`\n\t\t\t\t\t: `</${name}> attempted to close an element that was not open`;\n\t\t\t\tparser.error({\n\t\t\t\t\tcode: 'invalid-closing-tag',\n\t\t\t\t\tmessage\n\t\t\t\t}, start);\n\t\t\t}\n\n\t\t\tparent.end = start;\n\t\t\tparser.stack.pop();\n\n\t\t\tparent = parser.current();\n\t\t}\n\n\t\tparent.end = parser.index;\n\t\tparser.stack.pop();\n\n\t\tif (parser.last_auto_closed_tag && parser.stack.length < parser.last_auto_closed_tag.depth) {\n\t\t\tparser.last_auto_closed_tag = null;\n\t\t}\n\n\t\treturn;\n\t} else if (closing_tag_omitted(parent.name, name)) {\n\t\tparent.end = start;\n\t\tparser.stack.pop();\n\t\tparser.last_auto_closed_tag = {\n\t\t\ttag: parent.name,\n\t\t\treason: name,\n\t\t\tdepth: parser.stack.length\n\t\t};\n\t}\n\n\tconst unique_names: Set<string> = new Set();\n\n\tlet attribute;\n\twhile ((attribute = read_attribute(parser, unique_names))) {\n\t\telement.attributes.push(attribute);\n\t\tparser.allow_whitespace();\n\t}\n\n\tif (name === 'svelte:component') {\n\t\tconst index = element.attributes.findIndex(attr => attr.type === 'Attribute' && attr.name === 'this');\n\t\tif (!~index) {\n\t\t\tparser.error({\n\t\t\t\tcode: 'missing-component-definition',\n\t\t\t\tmessage: \"<svelte:component> must have a 'this' attribute\"\n\t\t\t}, start);\n\t\t}\n\n\t\tconst definition = element.attributes.splice(index, 1)[0];\n\t\tif (definition.value === true || definition.value.length !== 1 || definition.value[0].type === 'Text') {\n\t\t\tparser.error({\n\t\t\t\tcode: 'invalid-component-definition',\n\t\t\t\tmessage: 'invalid component definition'\n\t\t\t}, definition.start);\n\t\t}\n\n\t\telement.expression = definition.value[0].expression;\n\t}\n\n\t// special cases – top-level <script> and <style>\n\tif (specials.has(name) && parser.stack.length === 1) {\n\t\tconst special = specials.get(name);\n\n\t\tparser.eat('>', true);\n\t\tconst content = special.read(parser, start, element.attributes);\n\t\tif (content) parser[special.property].push(content);\n\t\treturn;\n\t}\n\n\tparser.current().children.push(element);\n\n\tconst self_closing = parser.eat('/') || is_void(name);\n\n\tparser.eat('>', true);\n\n\tif (self_closing) {\n\t\t// don't push self-closing elements onto the stack\n\t\telement.end = parser.index;\n\t} else if (name === 'textarea') {\n\t\t// special case\n\t\telement.children = read_sequence(\n\t\t\tparser,\n\t\t\t() =>\n\t\t\t\tparser.template.slice(parser.index, parser.index + 11) === '</textarea>'\n\t\t);\n\t\tparser.read(/<\\/textarea>/);\n\t\telement.end = parser.index;\n\t} else if (name === 'script' || name === 'style') {\n\t\t// special case\n\t\tconst start = parser.index;\n\t\tconst data = parser.read_until(new RegExp(`</${name}>`));\n\t\tconst end = parser.index;\n\t\telement.children.push({ start, end, type: 'Text', data });\n\t\tparser.eat(`</${name}>`, true);\n\t\telement.end = parser.index;\n\t} else {\n\t\tparser.stack.push(element);\n\t}\n}\n\nfunction read_tag_name(parser: Parser) {\n\tconst start = parser.index;\n\n\tif (parser.read(SELF)) {\n\t\t// check we're inside a block, otherwise this\n\t\t// will cause infinite recursion\n\t\tlet i = parser.stack.length;\n\t\tlet legal = false;\n\n\t\twhile (i--) {\n\t\t\tconst fragment = parser.stack[i];\n\t\t\tif (fragment.type === 'IfBlock' || fragment.type === 'EachBlock' || fragment.type === 'InlineComponent') {\n\t\t\t\tlegal = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (!legal) {\n\t\t\tparser.error({\n\t\t\t\tcode: 'invalid-self-placement',\n\t\t\t\tmessage: '<svelte:self> components can only exist inside {#if} blocks, {#each} blocks, or slots passed to components'\n\t\t\t}, start);\n\t\t}\n\n\t\treturn 'svelte:self';\n\t}\n\n\tif (parser.read(COMPONENT)) return 'svelte:component';\n\n\tconst name = parser.read_until(/(\\s|\\/|>)/);\n\n\tif (meta_tags.has(name)) return name;\n\n\tif (name.startsWith('svelte:')) {\n\t\tconst match = fuzzymatch(name.slice(7), valid_meta_tags);\n\n\t\tlet message = `Valid <svelte:...> tag names are ${list(valid_meta_tags)}`;\n\t\tif (match) message += ` (did you mean '${match}'?)`;\n\n\t\tparser.error({\n\t\t\tcode: 'invalid-tag-name',\n\t\t\tmessage\n\t\t}, start);\n\t}\n\n\tif (!valid_tag_name.test(name)) {\n\t\tparser.error({\n\t\t\tcode: 'invalid-tag-name',\n\t\t\tmessage: 'Expected valid tag name'\n\t\t}, start);\n\t}\n\n\treturn name;\n}\n\nfunction read_attribute(parser: Parser, unique_names: Set<string>) {\n\tconst start = parser.index;\n\n\tfunction check_unique(name: string) {\n\t\tif (unique_names.has(name)) {\n\t\t\tparser.error({\n\t\t\t\tcode: 'duplicate-attribute',\n\t\t\t\tmessage: 'Attributes need to be unique'\n\t\t\t}, start);\n\t\t}\n\t\tunique_names.add(name);\n\t}\n\n\tif (parser.eat('{')) {\n\t\tparser.allow_whitespace();\n\n\t\tif (parser.eat('...')) {\n\t\t\tconst expression = read_expression(parser);\n\n\t\t\tparser.allow_whitespace();\n\t\t\tparser.eat('}', true);\n\n\t\t\treturn {\n\t\t\t\tstart,\n\t\t\t\tend: parser.index,\n\t\t\t\ttype: 'Spread',\n\t\t\t\texpression\n\t\t\t};\n\t\t} else {\n\t\t\tconst value_start = parser.index;\n\n\t\t\tconst name = parser.read_identifier();\n\t\t\tparser.allow_whitespace();\n\t\t\tparser.eat('}', true);\n\n\t\t\tcheck_unique(name);\n\n\t\t\treturn {\n\t\t\t\tstart,\n\t\t\t\tend: parser.index,\n\t\t\t\ttype: 'Attribute',\n\t\t\t\tname,\n\t\t\t\tvalue: [{\n\t\t\t\t\tstart: value_start,\n\t\t\t\t\tend: value_start + name.length,\n\t\t\t\t\ttype: 'AttributeShorthand',\n\t\t\t\t\texpression: {\n\t\t\t\t\t\tstart: value_start,\n\t\t\t\t\t\tend: value_start + name.length,\n\t\t\t\t\t\ttype: 'Identifier',\n\t\t\t\t\t\tname\n\t\t\t\t\t}\n\t\t\t\t}]\n\t\t\t};\n\t\t}\n\t}\n\n\t// eslint-disable-next-line no-useless-escape\n\tconst name = parser.read_until(/[\\s=\\/>\"']/);\n\tif (!name) return null;\n\n\tlet end = parser.index;\n\n\tparser.allow_whitespace();\n\n\tconst colon_index = name.indexOf(':');\n\tconst type = colon_index !== -1 && get_directive_type(name.slice(0, colon_index));\n\n\tlet value: any[] | true = true;\n\tif (parser.eat('=')) {\n\t\tparser.allow_whitespace();\n\t\tvalue = read_attribute_value(parser);\n\t\tend = parser.index;\n\t} else if (parser.match_regex(/[\"']/)) {\n\t\tparser.error({\n\t\t\tcode: 'unexpected-token',\n\t\t\tmessage: 'Expected ='\n\t\t}, parser.index);\n\t}\n\n\tif (type) {\n\t\tconst [directive_name, ...modifiers] = name.slice(colon_index + 1).split('|');\n\n\t\tif (type === 'Binding' && directive_name !== 'this') {\n\t\t\tcheck_unique(directive_name);\n\t\t} else if (type !== 'EventHandler') {\n\t\t\tcheck_unique(name);\n\t\t}\n\n\t\tif (type === 'Ref') {\n\t\t\tparser.error({\n\t\t\t\tcode: 'invalid-ref-directive',\n\t\t\t\tmessage: `The ref directive is no longer supported — use \\`bind:this={${directive_name}}\\` instead`\n\t\t\t}, start);\n\t\t}\n\n\t\tif (value[0]) {\n\t\t\tif ((value as any[]).length > 1 || value[0].type === 'Text') {\n\t\t\t\tparser.error({\n\t\t\t\t\tcode: 'invalid-directive-value',\n\t\t\t\t\tmessage: 'Directive value must be a JavaScript expression enclosed in curly braces'\n\t\t\t\t}, value[0].start);\n\t\t\t}\n\t\t}\n\n\t\tconst directive: Directive = {\n\t\t\tstart,\n\t\t\tend,\n\t\t\ttype,\n\t\t\tname: directive_name,\n\t\t\tmodifiers,\n\t\t\texpression: (value[0] && value[0].expression) || null\n\t\t};\n\n\t\tif (type === 'Transition') {\n\t\t\tconst direction = name.slice(0, colon_index);\n\t\t\tdirective.intro = direction === 'in' || direction === 'transition';\n\t\t\tdirective.outro = direction === 'out' || direction === 'transition';\n\t\t}\n\n\t\tif (!directive.expression && (type === 'Binding' || type === 'Class')) {\n\t\t\tdirective.expression = {\n\t\t\t\tstart: directive.start + colon_index + 1,\n\t\t\t\tend: directive.end,\n\t\t\t\ttype: 'Identifier',\n\t\t\t\tname: directive.name\n\t\t\t} as any;\n\t\t}\n\n\t\treturn directive;\n\t}\n\n\tcheck_unique(name);\n\n\treturn {\n\t\tstart,\n\t\tend,\n\t\ttype: 'Attribute',\n\t\tname,\n\t\tvalue\n\t};\n}\n\nfunction get_directive_type(name: string): DirectiveType {\n\tif (name === 'use') return 'Action';\n\tif (name === 'animate') return 'Animation';\n\tif (name === 'bind') return 'Binding';\n\tif (name === 'class') return 'Class';\n\tif (name === 'on') return 'EventHandler';\n\tif (name === 'let') return 'Let';\n\tif (name === 'ref') return 'Ref';\n\tif (name === 'in' || name === 'out' || name === 'transition') return 'Transition';\n}\n\nfunction read_attribute_value(parser: Parser) {\n\tconst quote_mark = parser.eat(\"'\") ? \"'\" : parser.eat('\"') ? '\"' : null;\n\n\tconst regex = (\n\t\tquote_mark === \"'\" ? /'/ :\n\t\t\tquote_mark === '\"' ? /\"/ :\n\t\t\t\t/(\\/>|[\\s\"'=<>`])/\n\t);\n\n\tconst value = read_sequence(parser, () => !!parser.match_regex(regex));\n\n\tif (quote_mark) parser.index += 1;\n\treturn value;\n}\n\nfunction read_sequence(parser: Parser, done: () => boolean): TemplateNode[] {\n\tlet current_chunk: Text = {\n\t\tstart: parser.index,\n\t\tend: null,\n\t\ttype: 'Text',\n\t\traw: '',\n\t\tdata: null\n\t};\n\n\tfunction flush() {\n\t\tif (current_chunk.raw) {\n\t\t\tcurrent_chunk.data = decode_character_references(current_chunk.raw);\n\t\t\tcurrent_chunk.end = parser.index;\n\t\t\tchunks.push(current_chunk);\n\t\t}\n\t}\n\n\tconst chunks: TemplateNode[] = [];\n\n\twhile (parser.index < parser.template.length) {\n\t\tconst index = parser.index;\n\n\t\tif (done()) {\n\t\t\tflush();\n\t\t\treturn chunks;\n\t\t} else if (parser.eat('{')) {\n\t\t\tflush();\n\n\t\t\tparser.allow_whitespace();\n\t\t\tconst expression = read_expression(parser);\n\t\t\tparser.allow_whitespace();\n\t\t\tparser.eat('}', true);\n\n\t\t\tchunks.push({\n\t\t\t\tstart: index,\n\t\t\t\tend: parser.index,\n\t\t\t\ttype: 'MustacheTag',\n\t\t\t\texpression\n\t\t\t});\n\n\t\t\tcurrent_chunk = {\n\t\t\t\tstart: parser.index,\n\t\t\t\tend: null,\n\t\t\t\ttype: 'Text',\n\t\t\t\traw: '',\n\t\t\t\tdata: null\n\t\t\t};\n\t\t} else {\n\t\t\tcurrent_chunk.raw += parser.template[parser.index++];\n\t\t}\n\t}\n\n\tparser.error({\n\t\tcode: 'unexpected-eof',\n\t\tmessage: 'Unexpected end of input'\n\t});\n}\n","const SQUARE_BRACKET_OPEN = '['.charCodeAt(0);\nconst SQUARE_BRACKET_CLOSE = ']'.charCodeAt(0);\nconst CURLY_BRACKET_OPEN = '{'.charCodeAt(0);\nconst CURLY_BRACKET_CLOSE = '}'.charCodeAt(0);\n\nexport function is_bracket_open(code) {\n\treturn code === SQUARE_BRACKET_OPEN || code === CURLY_BRACKET_OPEN;\n}\n\nexport function is_bracket_close(code) {\n\treturn code === SQUARE_BRACKET_CLOSE || code === CURLY_BRACKET_CLOSE;\n}\n\nexport function is_bracket_pair(open, close) {\n\treturn (\n\t\t(open === SQUARE_BRACKET_OPEN && close === SQUARE_BRACKET_CLOSE) ||\n\t\t(open === CURLY_BRACKET_OPEN && close === CURLY_BRACKET_CLOSE)\n\t);\n}\n\nexport function get_bracket_close(open) {\n\tif (open === SQUARE_BRACKET_OPEN) {\n\t\treturn SQUARE_BRACKET_CLOSE;\n\t}\n\tif (open === CURLY_BRACKET_OPEN) {\n\t\treturn CURLY_BRACKET_CLOSE;\n\t}\n}\n","import { Parser } from '../index';\nimport { isIdentifierStart } from 'acorn';\nimport full_char_code_at from '../../utils/full_char_code_at';\nimport {\n\tis_bracket_open,\n\tis_bracket_close,\n\tis_bracket_pair,\n\tget_bracket_close\n} from '../utils/bracket';\nimport { parse_expression_at } from '../acorn';\nimport { Pattern } from 'estree';\n\nexport default function read_context(\n\tparser: Parser\n): Pattern & { start: number; end: number } {\n\tconst start = parser.index;\n\tlet i = parser.index;\n\n\tconst code = full_char_code_at(parser.template, i);\n\tif (isIdentifierStart(code, true)) {\n\t\treturn {\n\t\t\ttype: 'Identifier',\n\t\t\tname: parser.read_identifier(),\n\t\t\tstart,\n\t\t\tend: parser.index\n\t\t};\n\t}\n\n\tif (!is_bracket_open(code)) {\n\t\tparser.error({\n\t\t\tcode: 'unexpected-token',\n\t\t\tmessage: 'Expected identifier or destructure pattern'\n\t\t});\n\t}\n\n\tconst bracket_stack = [code];\n\ti += code <= 0xffff ? 1 : 2;\n\n\twhile (i < parser.template.length) {\n\t\tconst code = full_char_code_at(parser.template, i);\n\t\tif (is_bracket_open(code)) {\n\t\t\tbracket_stack.push(code);\n\t\t} else if (is_bracket_close(code)) {\n\t\t\tif (!is_bracket_pair(bracket_stack[bracket_stack.length - 1], code)) {\n\t\t\t\tparser.error({\n\t\t\t\t\tcode: 'unexpected-token',\n\t\t\t\t\tmessage: `Expected ${String.fromCharCode(\n\t\t\t\t\t\tget_bracket_close(bracket_stack[bracket_stack.length - 1])\n\t\t\t\t\t)}`\n\t\t\t\t});\n\t\t\t}\n\t\t\tbracket_stack.pop();\n\t\t\tif (bracket_stack.length === 0) {\n\t\t\t\ti += code <= 0xffff ? 1 : 2;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\ti += code <= 0xffff ? 1 : 2;\n\t}\n\n\tparser.index = i;\n\n\tconst pattern_string = parser.template.slice(start, i);\n\ttry {\n\t\t// the length of the `space_with_newline` has to be start - 1\n\t\t// because we added a `(` in front of the pattern_string,\n\t\t// which shifted the entire string to right by 1\n\t\t// so we offset it by removing 1 character in the `space_with_newline`\n\t\t// to achieve that, we remove the 1st space encountered,\n\t\t// so it will not affect the `column` of the node\n\t\tlet space_with_newline = parser.template.slice(0, start).replace(/[^\\n]/g, ' ');\n\t\tconst first_space = space_with_newline.indexOf(' ');\n\t\tspace_with_newline = space_with_newline.slice(0, first_space) + space_with_newline.slice(first_space + 1);\n\n\t\treturn (parse_expression_at(\n\t\t\t`${space_with_newline}(${pattern_string} = 1)`,\n\t\t\tstart - 1\n\t\t) as any).left;\n\t} catch (error) {\n\t\tparser.acorn_error(error);\n\t}\n}\n","import { whitespace } from './patterns';\n\nexport function trim_start(str: string) {\n\tlet i = 0;\n\twhile (whitespace.test(str[i])) i += 1;\n\n\treturn str.slice(i);\n}\n\nexport function trim_end(str: string) {\n\tlet i = str.length;\n\twhile (whitespace.test(str[i - 1])) i -= 1;\n\n\treturn str.slice(0, i);\n}\n","import { TemplateNode } from '../../interfaces';\n\nexport function to_string(node: TemplateNode) {\n\tswitch (node.type) {\n\t\tcase 'IfBlock':\n\t\t\treturn '{#if} block';\n\t\tcase 'ThenBlock':\n\t\t\treturn '{:then} block';\n\t\tcase 'ElseBlock':\n\t\t\treturn '{:else} block';\n\t\tcase 'PendingBlock':\n\t\tcase 'AwaitBlock':\n\t\t\treturn '{#await} block';\n\t\tcase 'CatchBlock':\n\t\t\treturn '{:catch} block';\n\t\tcase 'EachBlock':\n\t\t\treturn '{#each} block';\n\t\tcase 'RawMustacheTag':\n\t\t\treturn '{@html} block';\n\t\tcase 'DebugTag':\n\t\t\treturn '{@debug} block';\n\t\tcase 'Element':\n\t\tcase 'InlineComponent':\n\t\tcase 'Slot':\n\t\tcase 'Title':\n\t\t\treturn `<${node.name}> tag`;\n\t\tdefault:\n\t\t\treturn node.type;\n\t}\n}\n","import read_context from '../read/context';\nimport read_expression from '../read/expression';\nimport { closing_tag_omitted } from '../utils/html';\nimport { whitespace } from '../../utils/patterns';\nimport { trim_start, trim_end } from '../../utils/trim';\nimport { to_string } from '../utils/node';\nimport { Parser } from '../index';\nimport { TemplateNode } from '../../interfaces';\n\nfunction trim_whitespace(block: TemplateNode, trim_before: boolean, trim_after: boolean) {\n\tif (!block.children || block.children.length === 0) return; // AwaitBlock\n\n\tconst first_child = block.children[0];\n\tconst last_child = block.children[block.children.length - 1];\n\n\tif (first_child.type === 'Text' && trim_before) {\n\t\tfirst_child.data = trim_start(first_child.data);\n\t\tif (!first_child.data) block.children.shift();\n\t}\n\n\tif (last_child.type === 'Text' && trim_after) {\n\t\tlast_child.data = trim_end(last_child.data);\n\t\tif (!last_child.data) block.children.pop();\n\t}\n\n\tif (block.else) {\n\t\ttrim_whitespace(block.else, trim_before, trim_after);\n\t}\n\n\tif (first_child.elseif) {\n\t\ttrim_whitespace(first_child, trim_before, trim_after);\n\t}\n}\n\nexport default function mustache(parser: Parser) {\n\tconst start = parser.index;\n\tparser.index += 1;\n\n\tparser.allow_whitespace();\n\n\t// {/if}, {/each}, {/await} or {/key}\n\tif (parser.eat('/')) {\n\t\tlet block = parser.current();\n\t\tlet expected;\n\n\t\tif (closing_tag_omitted(block.name)) {\n\t\t\tblock.end = start;\n\t\t\tparser.stack.pop();\n\t\t\tblock = parser.current();\n\t\t}\n\n\t\tif (block.type === 'ElseBlock' || block.type === 'PendingBlock' || block.type === 'ThenBlock' || block.type === 'CatchBlock') {\n\t\t\tblock.end = start;\n\t\t\tparser.stack.pop();\n\t\t\tblock = parser.current();\n\n\t\t\texpected = 'await';\n\t\t}\n\n\t\tif (block.type === 'IfBlock') {\n\t\t\texpected = 'if';\n\t\t} else if (block.type === 'EachBlock') {\n\t\t\texpected = 'each';\n\t\t} else if (block.type === 'AwaitBlock') {\n\t\t\texpected = 'await';\n\t\t} else if (block.type === 'KeyBlock') {\n\t\t\texpected = 'key';\n\t\t} else {\n\t\t\tparser.error({\n\t\t\t\tcode: 'unexpected-block-close',\n\t\t\t\tmessage: 'Unexpected block closing tag'\n\t\t\t});\n\t\t}\n\n\t\tparser.eat(expected, true);\n\t\tparser.allow_whitespace();\n\t\tparser.eat('}', true);\n\n\t\twhile (block.elseif) {\n\t\t\tblock.end = parser.index;\n\t\t\tparser.stack.pop();\n\t\t\tblock = parser.current();\n\n\t\t\tif (block.else) {\n\t\t\t\tblock.else.end = start;\n\t\t\t}\n\t\t}\n\n\t\t// strip leading/trailing whitespace as necessary\n\t\tconst char_before = parser.template[block.start - 1];\n\t\tconst char_after = parser.template[parser.index];\n\t\tconst trim_before = !char_before || whitespace.test(char_before);\n\t\tconst trim_after = !char_after || whitespace.test(char_after);\n\n\t\ttrim_whitespace(block, trim_before, trim_after);\n\n\t\tblock.end = parser.index;\n\t\tparser.stack.pop();\n\t} else if (parser.eat(':else')) {\n\t\tif (parser.eat('if')) {\n\t\t\tparser.error({\n\t\t\t\tcode: 'invalid-elseif',\n\t\t\t\tmessage: \"'elseif' should be 'else if'\"\n\t\t\t});\n\t\t}\n\n\t\tparser.allow_whitespace();\n\n\t\t// :else if\n\t\tif (parser.eat('if')) {\n\t\t\tconst block = parser.current();\n\t\t\tif (block.type !== 'IfBlock') {\n\t\t\t\tparser.error({\n\t\t\t\t\tcode: 'invalid-elseif-placement',\n\t\t\t\t\tmessage: parser.stack.some(block => block.type === 'IfBlock')\n\t\t\t\t\t\t? `Expected to close ${to_string(block)} before seeing {:else if ...} block`\n\t\t\t\t\t\t: 'Cannot have an {:else if ...} block outside an {#if ...} block'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tparser.require_whitespace();\n\n\t\t\tconst expression = read_expression(parser);\n\n\t\t\tparser.allow_whitespace();\n\t\t\tparser.eat('}', true);\n\n\t\t\tblock.else = {\n\t\t\t\tstart: parser.index,\n\t\t\t\tend: null,\n\t\t\t\ttype: 'ElseBlock',\n\t\t\t\tchildren: [\n\t\t\t\t\t{\n\t\t\t\t\t\tstart: parser.index,\n\t\t\t\t\t\tend: null,\n\t\t\t\t\t\ttype: 'IfBlock',\n\t\t\t\t\t\telseif: true,\n\t\t\t\t\t\texpression,\n\t\t\t\t\t\tchildren: []\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t};\n\n\t\t\tparser.stack.push(block.else.children[0]);\n\t\t} else {\n\t\t\t// :else\n\t\t\tconst block = parser.current();\n\t\t\tif (block.type !== 'IfBlock' && block.type !== 'EachBlock') {\n\t\t\t\tparser.error({\n\t\t\t\t\tcode: 'invalid-else-placement',\n\t\t\t\t\tmessage: parser.stack.some(block => block.type === 'IfBlock' || block.type === 'EachBlock')\n\t\t\t\t\t\t? `Expected to close ${to_string(block)} before seeing {:else} block`\n\t\t\t\t\t\t: 'Cannot have an {:else} block outside an {#if ...} or {#each ...} block'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tparser.allow_whitespace();\n\t\t\tparser.eat('}', true);\n\n\t\t\tblock.else = {\n\t\t\t\tstart: parser.index,\n\t\t\t\tend: null,\n\t\t\t\ttype: 'ElseBlock',\n\t\t\t\tchildren: []\n\t\t\t};\n\n\t\t\tparser.stack.push(block.else);\n\t\t}\n\t} else if (parser.match(':then') || parser.match(':catch')) {\n\t\tconst block = parser.current();\n\t\tconst is_then = parser.eat(':then') || !parser.eat(':catch');\n\n\t\tif (is_then) {\n\t\t\tif (block.type !== 'PendingBlock') {\n\t\t\t\tparser.error({\n\t\t\t\t\tcode: 'invalid-then-placement',\n\t\t\t\t\tmessage: parser.stack.some(block => block.type === 'PendingBlock')\n\t\t\t\t\t\t? `Expected to close ${to_string(block)} before seeing {:then} block`\n\t\t\t\t\t\t: 'Cannot have an {:then} block outside an {#await ...} block'\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tif (block.type !== 'ThenBlock' && block.type !== 'PendingBlock') {\n\t\t\t\tparser.error({\n\t\t\t\t\tcode: 'invalid-catch-placement',\n\t\t\t\t\tmessage: parser.stack.some(block => block.type === 'ThenBlock' || block.type === 'PendingBlock')\n\t\t\t\t\t\t? `Expected to close ${to_string(block)} before seeing {:catch} block`\n\t\t\t\t\t\t: 'Cannot have an {:catch} block outside an {#await ...} block'\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tblock.end = start;\n\t\tparser.stack.pop();\n\t\tconst await_block = parser.current();\n\n\t\tif (!parser.eat('}')) {\n\t\t\tparser.require_whitespace();\n\t\t\tawait_block[is_then ? 'value': 'error'] = read_context(parser);\n\t\t\tparser.allow_whitespace();\n\t\t\tparser.eat('}', true);\n\t\t}\n\n\t\tconst new_block: TemplateNode = {\n\t\t\tstart,\n\t\t\tend: null,\n\t\t\ttype: is_then ? 'ThenBlock': 'CatchBlock',\n\t\t\tchildren: [],\n\t\t\tskip: false\n\t\t};\n\n\t\tawait_block[is_then ? 'then' : 'catch'] = new_block;\n\t\tparser.stack.push(new_block);\n\t} else if (parser.eat('#')) {\n\t\t// {#if foo}, {#each foo} or {#await foo}\n\t\tlet type;\n\n\t\tif (parser.eat('if')) {\n\t\t\ttype = 'IfBlock';\n\t\t} else if (parser.eat('each')) {\n\t\t\ttype = 'EachBlock';\n\t\t} else if (parser.eat('await')) {\n\t\t\ttype = 'AwaitBlock';\n\t\t} else if (parser.eat('key')) {\n\t\t\ttype = 'KeyBlock';\n\t\t} else {\n\t\t\tparser.error({\n\t\t\t\tcode: 'expected-block-type',\n\t\t\t\tmessage: 'Expected if, each, await or key'\n\t\t\t});\n\t\t}\n\n\t\tparser.require_whitespace();\n\n\t\tconst expression = read_expression(parser);\n\n\t\tconst block: TemplateNode = type === 'AwaitBlock' ?\n\t\t\t{\n\t\t\t\tstart,\n\t\t\t\tend: null,\n\t\t\t\ttype,\n\t\t\t\texpression,\n\t\t\t\tvalue: null,\n\t\t\t\terror: null,\n\t\t\t\tpending: {\n\t\t\t\t\tstart: null,\n\t\t\t\t\tend: null,\n\t\t\t\t\ttype: 'PendingBlock',\n\t\t\t\t\tchildren: [],\n\t\t\t\t\tskip: true\n\t\t\t\t},\n\t\t\t\tthen: {\n\t\t\t\t\tstart: null,\n\t\t\t\t\tend: null,\n\t\t\t\t\ttype: 'ThenBlock',\n\t\t\t\t\tchildren: [],\n\t\t\t\t\tskip: true\n\t\t\t\t},\n\t\t\t\tcatch: {\n\t\t\t\t\tstart: null,\n\t\t\t\t\tend: null,\n\t\t\t\t\ttype: 'CatchBlock',\n\t\t\t\t\tchildren: [],\n\t\t\t\t\tskip: true\n\t\t\t\t}\n\t\t\t} :\n\t\t\t{\n\t\t\t\tstart,\n\t\t\t\tend: null,\n\t\t\t\ttype,\n\t\t\t\texpression,\n\t\t\t\tchildren: []\n\t\t\t};\n\n\t\tparser.allow_whitespace();\n\n\t\t// {#each} blocks must declare a context – {#each list as item}\n\t\tif (type === 'EachBlock') {\n\t\t\tparser.eat('as', true);\n\t\t\tparser.require_whitespace();\n\n\t\t\tblock.context = read_context(parser);\n\n\t\t\tparser.allow_whitespace();\n\n\t\t\tif (parser.eat(',')) {\n\t\t\t\tparser.allow_whitespace();\n\t\t\t\tblock.index = parser.read_identifier();\n\t\t\t\tif (!block.index) {\n\t\t\t\t\tparser.error({\n\t\t\t\t\t\tcode: 'expected-name',\n\t\t\t\t\t\tmessage: 'Expected name'\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tparser.allow_whitespace();\n\t\t\t}\n\n\t\t\tif (parser.eat('(')) {\n\t\t\t\tparser.allow_whitespace();\n\n\t\t\t\tblock.key = read_expression(parser);\n\t\t\t\tparser.allow_whitespace();\n\t\t\t\tparser.eat(')', true);\n\t\t\t\tparser.allow_whitespace();\n\t\t\t}\n\t\t}\n\n\t\tconst await_block_shorthand = type === 'AwaitBlock' && parser.eat('then');\n\t\tif (await_block_shorthand) {\n\t\t\tparser.require_whitespace();\n\t\t\tblock.value = read_context(parser);\n\t\t\tparser.allow_whitespace();\n\t\t}\n\n\t\tconst await_block_catch_shorthand = !await_block_shorthand && type === 'AwaitBlock' && parser.eat('catch');\n\t\tif (await_block_catch_shorthand) {\n\t\t\tparser.require_whitespace();\n\t\t\tblock.error = read_context(parser);\n\t\t\tparser.allow_whitespace();\n\t\t}\n\n\t\tparser.eat('}', true);\n\n\t\tparser.current().children.push(block);\n\t\tparser.stack.push(block);\n\n\t\tif (type === 'AwaitBlock') {\n\t\t\tlet child_block;\n\t\t\tif (await_block_shorthand) {\n\t\t\t\tblock.then.skip = false;\n\t\t\t\tchild_block = block.then;\n\t\t\t} else if (await_block_catch_shorthand) {\n\t\t\t\tblock.catch.skip = false;\n\t\t\t\tchild_block = block.catch;\n\t\t\t} else {\n\t\t\t\tblock.pending.skip = false;\n\t\t\t\tchild_block = block.pending;\n\t\t\t}\n\n\t\t\tchild_block.start = parser.index;\n\t\t\tparser.stack.push(child_block);\n\t\t}\n\t} else if (parser.eat('@html')) {\n\t\t// {@html content} tag\n\t\tparser.require_whitespace();\n\n\t\tconst expression = read_expression(parser);\n\n\t\tparser.allow_whitespace();\n\t\tparser.eat('}', true);\n\n\t\tparser.current().children.push({\n\t\t\tstart,\n\t\t\tend: parser.index,\n\t\t\ttype: 'RawMustacheTag',\n\t\t\texpression\n\t\t});\n\t} else if (parser.eat('@debug')) {\n\t\tlet identifiers;\n\n\t\t// Implies {@debug} which indicates \"debug all\"\n\t\tif (parser.read(/\\s*}/)) {\n\t\t\tidentifiers = [];\n\t\t} else {\n\t\t\tconst expression = read_expression(parser);\n\n\t\t\tidentifiers = expression.type === 'SequenceExpression'\n\t\t\t\t? expression.expressions\n\t\t\t\t: [expression];\n\n\t\t\tidentifiers.forEach(node => {\n\t\t\t\tif (node.type !== 'Identifier') {\n\t\t\t\t\tparser.error({\n\t\t\t\t\t\tcode: 'invalid-debug-args',\n\t\t\t\t\t\tmessage: '{@debug ...} arguments must be identifiers, not arbitrary expressions'\n\t\t\t\t\t}, node.start);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tparser.allow_whitespace();\n\t\t\tparser.eat('}', true);\n\t\t}\n\n\t\tparser.current().children.push({\n\t\t\tstart,\n\t\t\tend: parser.index,\n\t\t\ttype: 'DebugTag',\n\t\t\tidentifiers\n\t\t});\n\t} else {\n\t\tconst expression = read_expression(parser);\n\n\t\tparser.allow_whitespace();\n\t\tparser.eat('}', true);\n\n\t\tparser.current().children.push({\n\t\t\tstart,\n\t\t\tend: parser.index,\n\t\t\ttype: 'MustacheTag',\n\t\t\texpression\n\t\t});\n\t}\n}\n","import { decode_character_references } from '../utils/html';\nimport { Parser } from '../index';\n\nexport default function text(parser: Parser) {\n\tconst start = parser.index;\n\n\tlet data = '';\n\n\twhile (\n\t\tparser.index < parser.template.length &&\n\t\t!parser.match('<') &&\n\t\t!parser.match('{')\n\t) {\n\t\tdata += parser.template[parser.index++];\n\t}\n\n\tconst node = {\n\t\tstart,\n\t\tend: parser.index,\n\t\ttype: 'Text',\n\t\traw: data,\n\t\tdata: decode_character_references(data)\n\t};\n\n\tparser.current().children.push(node);\n}\n","import tag from './tag';\nimport mustache from './mustache';\nimport text from './text';\nimport { Parser } from '../index';\n\nexport default function fragment(parser: Parser) {\n\tif (parser.match('<')) {\n\t\treturn tag;\n\t}\n\n\tif (parser.match('{')) {\n\t\treturn mustache;\n\t}\n\n\treturn text;\n}\n","function getLocator(source, options) {\n if (options === void 0) { options = {}; }\n var offsetLine = options.offsetLine || 0;\n var offsetColumn = options.offsetColumn || 0;\n var originalLines = source.split('\\n');\n var start = 0;\n var lineRanges = originalLines.map(function (line, i) {\n var end = start + line.length + 1;\n var range = { start: start, end: end, line: i };\n start = end;\n return range;\n });\n var i = 0;\n function rangeContains(range, index) {\n return range.start <= index && index < range.end;\n }\n function getLocation(range, index) {\n return { line: offsetLine + range.line, column: offsetColumn + index - range.start, character: index };\n }\n function locate(search, startIndex) {\n if (typeof search === 'string') {\n search = source.indexOf(search, startIndex || 0);\n }\n var range = lineRanges[i];\n var d = search >= range.end ? 1 : -1;\n while (range) {\n if (rangeContains(range, search))\n return getLocation(range, search);\n i += d;\n range = lineRanges[i];\n }\n }\n ;\n return locate;\n}\nfunction locate(source, search, options) {\n if (typeof options === 'number') {\n throw new Error('locate takes a { startIndex, offsetLine, offsetColumn } object as the third argument');\n }\n return getLocator(source, options)(search, options && options.startIndex);\n}\n\nexport { getLocator, locate };","function tabs_to_spaces(str: string) {\n\treturn str.replace(/^\\t+/, match => match.split('\\t').join(' '));\n}\n\nexport default function get_code_frame(\n\tsource: string,\n\tline: number,\n\tcolumn: number\n) {\n\tconst lines = source.split('\\n');\n\n\tconst frame_start = Math.max(0, line - 2);\n\tconst frame_end = Math.min(line + 3, lines.length);\n\n\tconst digits = String(frame_end + 1).length;\n\n\treturn lines\n\t\t.slice(frame_start, frame_end)\n\t\t.map((str, i) => {\n\t\t\tconst isErrorLine = frame_start + i === line;\n\t\t\tconst line_num = String(i + frame_start + 1).padStart(digits, ' ');\n\n\t\t\tif (isErrorLine) {\n\t\t\t\tconst indicator = ' '.repeat(digits + 2 + tabs_to_spaces(str.slice(0, column)).length) + '^';\n\t\t\t\treturn `${line_num}: ${tabs_to_spaces(str)}\\n${indicator}`;\n\t\t\t}\n\n\t\t\treturn `${line_num}: ${tabs_to_spaces(str)}`;\n\t\t})\n\t\t.join('\\n');\n}\n","import { locate } from 'locate-character';\nimport get_code_frame from './get_code_frame';\n\nclass CompileError extends Error {\n\tcode: string;\n\tstart: { line: number; column: number };\n\tend: { line: number; column: number };\n\tpos: number;\n\tfilename: string;\n\tframe: string;\n\n\ttoString() {\n\t\treturn `${this.message} (${this.start.line}:${this.start.column})\\n${this.frame}`;\n\t}\n}\n\nexport default function error(message: string, props: {\n\tname: string;\n\tcode: string;\n\tsource: string;\n\tfilename: string;\n\tstart: number;\n\tend?: number;\n}): never {\n\tconst error = new CompileError(message);\n\terror.name = props.name;\n\n\tconst start = locate(props.source, props.start, { offsetLine: 1 });\n\tconst end = locate(props.source, props.end || props.start, { offsetLine: 1 });\n\n\terror.code = props.code;\n\terror.start = start;\n\terror.end = end;\n\terror.pos = props.start;\n\terror.filename = props.filename;\n\n\terror.frame = get_code_frame(props.source, start.line - 1, start.column);\n\n\tthrow error;\n}\n","import { isIdentifierStart, isIdentifierChar } from 'acorn';\nimport fragment from './state/fragment';\nimport { whitespace } from '../utils/patterns';\nimport { reserved } from '../utils/names';\nimport full_char_code_at from '../utils/full_char_code_at';\nimport { TemplateNode, Ast, ParserOptions, Fragment, Style, Script } from '../interfaces';\nimport error from '../utils/error';\n\ntype ParserState = (parser: Parser) => (ParserState | void);\n\ninterface LastAutoClosedTag {\n\ttag: string;\n\treason: string;\n\tdepth: number;\n}\n\nexport class Parser {\n\treadonly template: string;\n\treadonly filename?: string;\n\treadonly customElement: boolean;\n\n\tindex = 0;\n\tstack: TemplateNode[] = [];\n\n\thtml: Fragment;\n\tcss: Style[] = [];\n\tjs: Script[] = [];\n\tmeta_tags = {};\n\tlast_auto_closed_tag?: LastAutoClosedTag;\n\n\tconstructor(template: string, options: ParserOptions) {\n\t\tif (typeof template !== 'string') {\n\t\t\tthrow new TypeError('Template must be a string');\n\t\t}\n\n\t\tthis.template = template.replace(/\\s+$/, '');\n\t\tthis.filename = options.filename;\n\t\tthis.customElement = options.customElement;\n\n\t\tthis.html = {\n\t\t\tstart: null,\n\t\t\tend: null,\n\t\t\ttype: 'Fragment',\n\t\t\tchildren: []\n\t\t};\n\n\t\tthis.stack.push(this.html);\n\n\t\tlet state: ParserState = fragment;\n\n\t\twhile (this.index < this.template.length) {\n\t\t\tstate = state(this) || fragment;\n\t\t}\n\n\t\tif (this.stack.length > 1) {\n\t\t\tconst current = this.current();\n\n\t\t\tconst type = current.type === 'Element' ? `<${current.name}>` : 'Block';\n\t\t\tconst slug = current.type === 'Element' ? 'element' : 'block';\n\n\t\t\tthis.error({\n\t\t\t\tcode: `unclosed-${slug}`,\n\t\t\t\tmessage: `${type} was left open`\n\t\t\t}, current.start);\n\t\t}\n\n\t\tif (state !== fragment) {\n\t\t\tthis.error({\n\t\t\t\tcode: 'unexpected-eof',\n\t\t\t\tmessage: 'Unexpected end of input'\n\t\t\t});\n\t\t}\n\n\t\tif (this.html.children.length) {\n\t\t\tlet start = this.html.children[0].start;\n\t\t\twhile (whitespace.test(template[start])) start += 1;\n\n\t\t\tlet end = this.html.children[this.html.children.length - 1].end;\n\t\t\twhile (whitespace.test(template[end - 1])) end -= 1;\n\n\t\t\tthis.html.start = start;\n\t\t\tthis.html.end = end;\n\t\t} else {\n\t\t\tthis.html.start = this.html.end = null;\n\t\t}\n\t}\n\n\tcurrent() {\n\t\treturn this.stack[this.stack.length - 1];\n\t}\n\n\tacorn_error(err: any) {\n\t\tthis.error({\n\t\t\tcode: 'parse-error',\n\t\t\tmessage: err.message.replace(/ \\(\\d+:\\d+\\)$/, '')\n\t\t}, err.pos);\n\t}\n\n\terror({ code, message }: { code: string; message: string }, index = this.index) {\n\t\terror(message, {\n\t\t\tname: 'ParseError',\n\t\t\tcode,\n\t\t\tsource: this.template,\n\t\t\tstart: index,\n\t\t\tfilename: this.filename\n\t\t});\n\t}\n\n\teat(str: string, required?: boolean, message?: string) {\n\t\tif (this.match(str)) {\n\t\t\tthis.index += str.length;\n\t\t\treturn true;\n\t\t}\n\n\t\tif (required) {\n\t\t\tthis.error({\n\t\t\t\tcode: `unexpected-${this.index === this.template.length ? 'eof' : 'token'}`,\n\t\t\t\tmessage: message || `Expected ${str}`\n\t\t\t});\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tmatch(str: string) {\n\t\treturn this.template.slice(this.index, this.index + str.length) === str;\n\t}\n\n\tmatch_regex(pattern: RegExp) {\n\t\tconst match = pattern.exec(this.template.slice(this.index));\n\t\tif (!match || match.index !== 0) return null;\n\n\t\treturn match[0];\n\t}\n\n\tallow_whitespace() {\n\t\twhile (\n\t\t\tthis.index < this.template.length &&\n\t\t\twhitespace.test(this.template[this.index])\n\t\t) {\n\t\t\tthis.index++;\n\t\t}\n\t}\n\n\tread(pattern: RegExp) {\n\t\tconst result = this.match_regex(pattern);\n\t\tif (result) this.index += result.length;\n\t\treturn result;\n\t}\n\n\tread_identifier(allow_reserved = false) {\n\t\tconst start = this.index;\n\n\t\tlet i = this.index;\n\n\t\tconst code = full_char_code_at(this.template, i);\n\t\tif (!isIdentifierStart(code, true)) return null;\n\n\t\ti += code <= 0xffff ? 1 : 2;\n\n\t\twhile (i < this.template.length) {\n\t\t\tconst code = full_char_code_at(this.template, i);\n\n\t\t\tif (!isIdentifierChar(code, true)) break;\n\t\t\ti += code <= 0xffff ? 1 : 2;\n\t\t}\n\n\t\tconst identifier = this.template.slice(this.index, this.index = i);\n\n\t\tif (!allow_reserved && reserved.has(identifier)) {\n\t\t\tthis.error({\n\t\t\t\tcode: 'unexpected-reserved-word',\n\t\t\t\tmessage: `'${identifier}' is a reserved word in JavaScript and cannot be used here`\n\t\t\t}, start);\n\t\t}\n\n\t\treturn identifier;\n\t}\n\n\tread_until(pattern: RegExp) {\n\t\tif (this.index >= this.template.length) {\n\t\t\tthis.error({\n\t\t\t\tcode: 'unexpected-eof',\n\t\t\t\tmessage: 'Unexpected end of input'\n\t\t\t});\n\t\t}\n\n\t\tconst start = this.index;\n\t\tconst match = pattern.exec(this.template.slice(start));\n\n\t\tif (match) {\n\t\t\tthis.index = start + match.index;\n\t\t\treturn this.template.slice(start, this.index);\n\t\t}\n\n\t\tthis.index = this.template.length;\n\t\treturn this.template.slice(start);\n\t}\n\n\trequire_whitespace() {\n\t\tif (!whitespace.test(this.template[this.index])) {\n\t\t\tthis.error({\n\t\t\t\tcode: 'missing-whitespace',\n\t\t\t\tmessage: 'Expected whitespace'\n\t\t\t});\n\t\t}\n\n\t\tthis.allow_whitespace();\n\t}\n}\n\nexport default function parse(\n\ttemplate: string,\n\toptions: ParserOptions = {}\n): Ast {\n\tconst parser = new Parser(template, options);\n\n\t// TODO we may want to allow multiple <style> tags —\n\t// one scoped, one global. for now, only allow one\n\tif (parser.css.length > 1) {\n\t\tparser.error({\n\t\t\tcode: 'duplicate-style',\n\t\t\tmessage: 'You can only have one top-level <style> tag per component'\n\t\t}, parser.css[1].start);\n\t}\n\n\tconst instance_scripts = parser.js.filter(script => script.context === 'default');\n\tconst module_scripts = parser.js.filter(script => script.context === 'module');\n\n\tif (instance_scripts.length > 1) {\n\t\tparser.error({\n\t\t\tcode: 'invalid-script',\n\t\t\tmessage: 'A component can only have one instance-level <script> element'\n\t\t}, instance_scripts[1].start);\n\t}\n\n\tif (module_scripts.length > 1) {\n\t\tparser.error({\n\t\t\tcode: 'invalid-script',\n\t\t\tmessage: 'A component can only have one <script context=\"module\"> element'\n\t\t}, module_scripts[1].start);\n\t}\n\n\treturn {\n\t\thtml: parser.html,\n\t\tcss: parser.css[0],\n\t\tinstance: instance_scripts[0],\n\t\tmodule: module_scripts[0]\n\t};\n}\n","export function is_head(node) {\n\treturn node && node.type === 'MemberExpression' && node.object.name === '@_document' && node.property.name === 'head';\n}\n","import Renderer from './Renderer';\nimport Wrapper from './wrappers/shared/Wrapper';\nimport { b, x } from 'code-red';\nimport { Node, Identifier, ArrayPattern } from 'estree';\nimport { is_head } from './wrappers/shared/is_head';\n\nexport interface Bindings {\n\tobject: Identifier;\n\tproperty: Identifier;\n\tsnippet: Node;\n\tstore: string;\n\ttail: Node;\n\tmodifier: (node: Node) => Node;\n}\n\nexport interface BlockOptions {\n\tparent?: Block;\n\tname: Identifier;\n\ttype: string;\n\trenderer?: Renderer;\n\tcomment?: string;\n\tkey?: Identifier;\n\tbindings?: Map<string, Bindings>;\n\tdependencies?: Set<string>;\n}\n\nexport default class Block {\n\tparent?: Block;\n\trenderer: Renderer;\n\tname: Identifier;\n\ttype: string;\n\tcomment?: string;\n\n\twrappers: Wrapper[];\n\n\tkey: Identifier;\n\tfirst: Identifier;\n\n\tdependencies: Set<string> = new Set();\n\n\tbindings: Map<string, Bindings>;\n\n\tchunks: {\n\t\tdeclarations: Array<Node | Node[]>;\n\t\tinit: Array<Node | Node[]>;\n\t\tcreate: Array<Node | Node[]>;\n\t\tclaim: Array<Node | Node[]>;\n\t\thydrate: Array<Node | Node[]>;\n\t\tmount: Array<Node | Node[]>;\n\t\tmeasure: Array<Node | Node[]>;\n\t\tfix: Array<Node | Node[]>;\n\t\tanimate: Array<Node | Node[]>;\n\t\tintro: Array<Node | Node[]>;\n\t\tupdate: Array<Node | Node[]>;\n\t\toutro: Array<Node | Node[]>;\n\t\tdestroy: Array<Node | Node[]>;\n\t};\n\n\tevent_listeners: Node[] = [];\n\n\tmaintain_context: boolean;\n\thas_animation: boolean;\n\thas_intros: boolean;\n\thas_outros: boolean;\n\thas_intro_method: boolean; // could have the method without the transition, due to siblings\n\thas_outro_method: boolean;\n\toutros: number;\n\n\taliases: Map<string, Identifier>;\n\tvariables: Map<string, { id: Identifier; init?: Node }> = new Map();\n\tget_unique_name: (name: string) => Identifier;\n\n\thas_update_method = false;\n\tautofocus: string;\n\n\tconstructor(options: BlockOptions) {\n\t\tthis.parent = options.parent;\n\t\tthis.renderer = options.renderer;\n\t\tthis.name = options.name;\n\t\tthis.type = options.type;\n\t\tthis.comment = options.comment;\n\n\t\tthis.wrappers = [];\n\n\t\t// for keyed each blocks\n\t\tthis.key = options.key;\n\t\tthis.first = null;\n\n\t\tthis.bindings = options.bindings;\n\n\t\tthis.chunks = {\n\t\t\tdeclarations: [],\n\t\t\tinit: [],\n\t\t\tcreate: [],\n\t\t\tclaim: [],\n\t\t\thydrate: [],\n\t\t\tmount: [],\n\t\t\tmeasure: [],\n\t\t\tfix: [],\n\t\t\tanimate: [],\n\t\t\tintro: [],\n\t\t\tupdate: [],\n\t\t\toutro: [],\n\t\t\tdestroy: []\n\t\t};\n\n\t\tthis.has_animation = false;\n\t\tthis.has_intro_method = false; // a block could have an intro method but not intro transitions, e.g. if a sibling block has intros\n\t\tthis.has_outro_method = false;\n\t\tthis.outros = 0;\n\n\t\tthis.get_unique_name = this.renderer.component.get_unique_name_maker();\n\n\t\tthis.aliases = new Map();\n\t\tif (this.key) this.aliases.set('key', this.get_unique_name('key'));\n\t}\n\n\tassign_variable_names() {\n\t\tconst seen: Set<string> = new Set();\n\t\tconst dupes: Set<string> = new Set();\n\n\t\tlet i = this.wrappers.length;\n\n\t\twhile (i--) {\n\t\t\tconst wrapper = this.wrappers[i];\n\n\t\t\tif (!wrapper.var) continue;\n\n\t\t\tif (seen.has(wrapper.var.name)) {\n\t\t\t\tdupes.add(wrapper.var.name);\n\t\t\t}\n\n\t\t\tseen.add(wrapper.var.name);\n\t\t}\n\n\t\tconst counts = new Map();\n\t\ti = this.wrappers.length;\n\n\t\twhile (i--) {\n\t\t\tconst wrapper = this.wrappers[i];\n\n\t\t\tif (!wrapper.var) continue;\n\n\t\t\tlet suffix = '';\n\t\t\tif (dupes.has(wrapper.var.name)) {\n\t\t\t\tconst i = counts.get(wrapper.var.name) || 0;\n\t\t\t\tcounts.set(wrapper.var.name, i + 1);\n\t\t\t\tsuffix = i;\n\t\t\t}\n\t\t\twrapper.var.name = this.get_unique_name(wrapper.var.name + suffix).name;\n\t\t}\n\t}\n\n\tadd_dependencies(dependencies: Set<string>) {\n\t\tdependencies.forEach(dependency => {\n\t\t\tthis.dependencies.add(dependency);\n\t\t});\n\n\t\tthis.has_update_method = true;\n\t\tif (this.parent) {\n\t\t\tthis.parent.add_dependencies(dependencies);\n\t\t}\n\t}\n\n\tadd_element(\n\t\tid: Identifier,\n\t\trender_statement: Node,\n\t\tclaim_statement: Node,\n\t\tparent_node: Node,\n\t\tno_detach?: boolean\n\t) {\n\t\tthis.add_variable(id);\n\t\tthis.chunks.create.push(b`${id} = ${render_statement};`);\n\n\t\tif (this.renderer.options.hydratable) {\n\t\t\tthis.chunks.claim.push(b`${id} = ${claim_statement || render_statement};`);\n\t\t}\n\n\t\tif (parent_node) {\n\t\t\tthis.chunks.mount.push(b`@append(${parent_node}, ${id});`);\n\t\t\tif (is_head(parent_node) && !no_detach) this.chunks.destroy.push(b`@detach(${id});`);\n\t\t} else {\n\t\t\tthis.chunks.mount.push(b`@insert(#target, ${id}, #anchor);`);\n\t\t\tif (!no_detach) this.chunks.destroy.push(b`if (detaching) @detach(${id});`);\n\t\t}\n\t}\n\n\tadd_intro(local?: boolean) {\n\t\tthis.has_intros = this.has_intro_method = true;\n\t\tif (!local && this.parent) this.parent.add_intro();\n\t}\n\n\tadd_outro(local?: boolean) {\n\t\tthis.has_outros = this.has_outro_method = true;\n\t\tthis.outros += 1;\n\t\tif (!local && this.parent) this.parent.add_outro();\n\t}\n\n\tadd_animation() {\n\t\tthis.has_animation = true;\n\t}\n\n\tadd_variable(id: Identifier, init?: Node) {\n\t\tif (this.variables.has(id.name)) {\n\t\t\tthrow new Error(\n\t\t\t\t`Variable '${id.name}' already initialised with a different value`\n\t\t\t);\n\t\t}\n\n\t\tthis.variables.set(id.name, { id, init });\n\t}\n\n\talias(name: string) {\n\t\tif (!this.aliases.has(name)) {\n\t\t\tthis.aliases.set(name, this.get_unique_name(name));\n\t\t}\n\n\t\treturn this.aliases.get(name);\n\t}\n\n\tchild(options: BlockOptions) {\n\t\treturn new Block(Object.assign({}, this, { key: null }, options, { parent: this }));\n\t}\n\n\tget_contents(key?: any) {\n\t\tconst { dev } = this.renderer.options;\n\n\t\tif (this.has_outros) {\n\t\t\tthis.add_variable({ type: 'Identifier', name: '#current' });\n\n\t\t\tif (this.chunks.intro.length > 0) {\n\t\t\t\tthis.chunks.intro.push(b`#current = true;`);\n\t\t\t\tthis.chunks.mount.push(b`#current = true;`);\n\t\t\t}\n\n\t\t\tif (this.chunks.outro.length > 0) {\n\t\t\t\tthis.chunks.outro.push(b`#current = false;`);\n\t\t\t}\n\t\t}\n\n\t\tif (this.autofocus) {\n\t\t\tthis.chunks.mount.push(b`${this.autofocus}.focus();`);\n\t\t}\n\n\t\tthis.render_listeners();\n\n\t\tconst properties: Record<string, any> = {};\n\n\t\tconst noop = x`@noop`;\n\n\t\tproperties.key = key;\n\n\t\tif (this.first) {\n\t\t\tproperties.first = x`null`;\n\t\t\tthis.chunks.hydrate.push(b`this.first = ${this.first};`);\n\t\t}\n\n\t\tif (this.chunks.create.length === 0 && this.chunks.hydrate.length === 0) {\n\t\t\tproperties.create = noop;\n\t\t} else {\n\t\t\tconst hydrate = this.chunks.hydrate.length > 0 && (\n\t\t\t\tthis.renderer.options.hydratable\n\t\t\t\t\t? b`this.h();`\n\t\t\t\t\t: this.chunks.hydrate\n\t\t\t);\n\n\t\t\tproperties.create = x`function #create() {\n\t\t\t\t${this.chunks.create}\n\t\t\t\t${hydrate}\n\t\t\t}`;\n\t\t}\n\n\t\tif (this.renderer.options.hydratable || this.chunks.claim.length > 0) {\n\t\t\tif (this.chunks.claim.length === 0 && this.chunks.hydrate.length === 0) {\n\t\t\t\tproperties.claim = noop;\n\t\t\t} else {\n\t\t\t\tproperties.claim = x`function #claim(#nodes) {\n\t\t\t\t\t${this.chunks.claim}\n\t\t\t\t\t${this.renderer.options.hydratable && this.chunks.hydrate.length > 0 && b`this.h();`}\n\t\t\t\t}`;\n\t\t\t}\n\t\t}\n\n\t\tif (this.renderer.options.hydratable && this.chunks.hydrate.length > 0) {\n\t\t\tproperties.hydrate = x`function #hydrate() {\n\t\t\t\t${this.chunks.hydrate}\n\t\t\t}`;\n\t\t}\n\n\t\tif (this.chunks.mount.length === 0) {\n\t\t\tproperties.mount = noop;\n\t\t} else if (this.event_listeners.length === 0) {\n\t\t\tproperties.mount = x`function #mount(#target, #anchor) {\n\t\t\t\t${this.chunks.mount}\n\t\t\t}`;\n\t\t} else {\n\t\t\tproperties.mount = x`function #mount(#target, #anchor) {\n\t\t\t\t${this.chunks.mount}\n\t\t\t}`;\n\t\t}\n\n\t\tif (this.has_update_method || this.maintain_context) {\n\t\t\tif (this.chunks.update.length === 0 && !this.maintain_context) {\n\t\t\t\tproperties.update = noop;\n\t\t\t} else {\n\t\t\t\tconst ctx = this.maintain_context ? x`#new_ctx` : x`#ctx`;\n\n\t\t\t\tlet dirty: Identifier | ArrayPattern = { type: 'Identifier', name: '#dirty' };\n\t\t\t\tif (!this.renderer.context_overflow && !this.parent) {\n\t\t\t\t\tdirty = { type: 'ArrayPattern', elements: [dirty] };\n\t\t\t\t}\n\n\t\t\t\tproperties.update = x`function #update(${ctx}, ${dirty}) {\n\t\t\t\t\t${this.maintain_context && b`#ctx = ${ctx};`}\n\t\t\t\t\t${this.chunks.update}\n\t\t\t\t}`;\n\t\t\t}\n\t\t}\n\n\t\tif (this.has_animation) {\n\t\t\tproperties.measure = x`function #measure() {\n\t\t\t\t${this.chunks.measure}\n\t\t\t}`;\n\n\t\t\tproperties.fix = x`function #fix() {\n\t\t\t\t${this.chunks.fix}\n\t\t\t}`;\n\n\t\t\tproperties.animate = x`function #animate() {\n\t\t\t\t${this.chunks.animate}\n\t\t\t}`;\n\t\t}\n\n\t\tif (this.has_intro_method || this.has_outro_method) {\n\t\t\tif (this.chunks.intro.length === 0) {\n\t\t\t\tproperties.intro = noop;\n\t\t\t} else {\n\t\t\t\tproperties.intro = x`function #intro(#local) {\n\t\t\t\t\t${this.has_outros && b`if (#current) return;`}\n\t\t\t\t\t${this.chunks.intro}\n\t\t\t\t}`;\n\t\t\t}\n\n\t\t\tif (this.chunks.outro.length === 0) {\n\t\t\t\tproperties.outro = noop;\n\t\t\t} else {\n\t\t\t\tproperties.outro = x`function #outro(#local) {\n\t\t\t\t\t${this.chunks.outro}\n\t\t\t\t}`;\n\t\t\t}\n\t\t}\n\n\t\tif (this.chunks.destroy.length === 0) {\n\t\t\tproperties.destroy = noop;\n\t\t} else {\n\t\t\tproperties.destroy = x`function #destroy(detaching) {\n\t\t\t\t${this.chunks.destroy}\n\t\t\t}`;\n\t\t}\n\n\t\tif (!this.renderer.component.compile_options.dev) {\n\t\t\t// allow shorthand names\n\t\t\tfor (const name in properties) {\n\t\t\t\tconst property = properties[name];\n\t\t\t\tif (property) property.id = null;\n\t\t\t}\n\t\t}\n\n\t\tconst return_value: any = x`{\n\t\t\tkey: ${properties.key},\n\t\t\tfirst: ${properties.first},\n\t\t\tc: ${properties.create},\n\t\t\tl: ${properties.claim},\n\t\t\th: ${properties.hydrate},\n\t\t\tm: ${properties.mount},\n\t\t\tp: ${properties.update},\n\t\t\tr: ${properties.measure},\n\t\t\tf: ${properties.fix},\n\t\t\ta: ${properties.animate},\n\t\t\ti: ${properties.intro},\n\t\t\to: ${properties.outro},\n\t\t\td: ${properties.destroy}\n\t\t}`;\n\n\t\tconst block = dev && this.get_unique_name('block');\n\n\t\tconst body = b`\n\t\t\t${this.chunks.declarations}\n\n\t\t\t${Array.from(this.variables.values()).map(({ id, init }) => {\n\t\t\t\treturn init\n\t\t\t\t\t? b`let ${id} = ${init}`\n\t\t\t\t\t: b`let ${id}`;\n\t\t\t})}\n\n\t\t\t${this.chunks.init}\n\n\t\t\t${dev\n\t\t\t\t? b`\n\t\t\t\t\tconst ${block} = ${return_value};\n\t\t\t\t\t@dispatch_dev(\"SvelteRegisterBlock\", {\n\t\t\t\t\t\tblock: ${block},\n\t\t\t\t\t\tid: ${this.name || 'create_fragment'}.name,\n\t\t\t\t\t\ttype: \"${this.type}\",\n\t\t\t\t\t\tsource: \"${this.comment ? this.comment.replace(/\"/g, '\\\\\"') : ''}\",\n\t\t\t\t\t\tctx: #ctx\n\t\t\t\t\t});\n\t\t\t\t\treturn ${block};`\n\t\t\t\t: b`\n\t\t\t\t\treturn ${return_value};`\n\t\t\t}\n\t\t`;\n\n\t\treturn body;\n\t}\n\n\thas_content(): boolean {\n\t\treturn !!this.first ||\n\t\t\tthis.event_listeners.length > 0 ||\n\t\t\tthis.chunks.intro.length > 0 ||\n\t\t\tthis.chunks.outro.length > 0 ||\n\t\t\tthis.chunks.create.length > 0 ||\n\t\t\tthis.chunks.hydrate.length > 0 ||\n\t\t\tthis.chunks.claim.length > 0 ||\n\t\t\tthis.chunks.mount.length > 0 ||\n\t\t\tthis.chunks.update.length > 0 ||\n\t\t\tthis.chunks.destroy.length > 0 ||\n\t\t\tthis.has_animation;\n\t}\n\n\trender() {\n\t\tconst key = this.key && this.get_unique_name('key');\n\n\t\tconst args: any[] = [x`#ctx`];\n\t\tif (key) args.unshift(key);\n\n\t\tconst fn = b`function ${this.name}(${args}) {\n\t\t\t${this.get_contents(key)}\n\t\t}`;\n\n\t\treturn this.comment\n\t\t\t? b`\n\t\t\t\t// ${this.comment}\n\t\t\t\t${fn}`\n\t\t\t: fn;\n\t}\n\n\trender_listeners(chunk: string = '') {\n\t\tif (this.event_listeners.length > 0) {\n\t\t\tthis.add_variable({ type: 'Identifier', name: '#mounted' });\n\t\t\tthis.chunks.destroy.push(b`#mounted = false`);\n\n\t\t\tconst dispose: Identifier = {\n\t\t\t\ttype: 'Identifier',\n\t\t\t\tname: `#dispose${chunk}`\n\t\t\t};\n\n\t\t\tthis.add_variable(dispose);\n\n\t\t\tif (this.event_listeners.length === 1) {\n\t\t\t\tthis.chunks.mount.push(\n\t\t\t\t\tb`\n\t\t\t\t\t\tif (!#mounted) {\n\t\t\t\t\t\t\t${dispose} = ${this.event_listeners[0]};\n\t\t\t\t\t\t\t#mounted = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t`\n\t\t\t\t);\n\n\t\t\t\tthis.chunks.destroy.push(\n\t\t\t\t\tb`${dispose}();`\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tthis.chunks.mount.push(b`\n\t\t\t\t\tif (!#mounted) {\n\t\t\t\t\t\t${dispose} = [\n\t\t\t\t\t\t\t${this.event_listeners}\n\t\t\t\t\t\t];\n\t\t\t\t\t\t#mounted = true;\n\t\t\t\t\t}\n\t\t\t\t`);\n\n\t\t\t\tthis.chunks.destroy.push(\n\t\t\t\t\tb`@run_all(${dispose});`\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n}\n","import Renderer from '../../Renderer';\nimport Block from '../../Block';\nimport { x } from 'code-red';\nimport { TemplateNode } from '../../../../interfaces';\nimport { Identifier } from 'estree';\n\nexport default class Wrapper {\n\trenderer: Renderer;\n\tparent: Wrapper;\n\tnode: TemplateNode;\n\n\tprev: Wrapper | null;\n\tnext: Wrapper | null;\n\n\tvar: Identifier;\n\tcan_use_innerhtml: boolean;\n\tis_static_content: boolean;\n\n\tconstructor(\n\t\trenderer: Renderer,\n\t\tblock: Block,\n\t\tparent: Wrapper,\n\t\tnode: TemplateNode\n\t) {\n\t\tthis.node = node;\n\n\t\t// make these non-enumerable so that they can be logged sensibly\n\t\t// (TODO in dev only?)\n\t\tObject.defineProperties(this, {\n\t\t\trenderer: {\n\t\t\t\tvalue: renderer\n\t\t\t},\n\t\t\tparent: {\n\t\t\t\tvalue: parent\n\t\t\t}\n\t\t});\n\n\t\tthis.can_use_innerhtml = !renderer.options.hydratable;\n\t\tthis.is_static_content = !renderer.options.hydratable;\n\n\t\tblock.wrappers.push(this);\n\t}\n\n\tcannot_use_innerhtml() {\n\t\tthis.can_use_innerhtml = false;\n\t\tif (this.parent) this.parent.cannot_use_innerhtml();\n\t}\n\n\tnot_static_content() {\n\t\tthis.is_static_content = false;\n\t\tif (this.parent) this.parent.not_static_content();\n\t}\n\n\tget_or_create_anchor(block: Block, parent_node: Identifier, parent_nodes: Identifier) {\n\t\t// TODO use this in EachBlock and IfBlock — tricky because\n\t\t// children need to be created first\n\t\tconst needs_anchor = this.next ? !this.next.is_dom_node() : !parent_node || !this.parent.is_dom_node();\n\t\tconst anchor = needs_anchor\n\t\t\t? block.get_unique_name(`${this.var.name}_anchor`)\n\t\t\t: (this.next && this.next.var) || { type: 'Identifier', name: 'null' };\n\n\t\tif (needs_anchor) {\n\t\t\tblock.add_element(\n\t\t\t\tanchor,\n\t\t\t\tx`@empty()`,\n\t\t\t\tparent_nodes && x`@empty()`,\n\t\t\t\tparent_node as Identifier\n\t\t\t);\n\t\t}\n\n\t\treturn anchor;\n\t}\n\n\tget_update_mount_node(anchor: Identifier): Identifier {\n\t\treturn ((this.parent && this.parent.is_dom_node())\n\t\t\t? this.parent.var\n\t\t\t: x`${anchor}.parentNode`) as Identifier;\n\t}\n\n\tis_dom_node() {\n\t\treturn (\n\t\t\tthis.node.type === 'Element' ||\n\t\t\tthis.node.type === 'Text' ||\n\t\t\tthis.node.type === 'MustacheTag'\n\t\t);\n\t}\n\n\trender(_block: Block, _parent_node: Identifier, _parent_nodes: Identifier) {\n\t\tthrow Error('Wrapper class is not renderable');\n\t}\n}\n","import Component from '../../../Component';\nimport { INode } from '../../../nodes/interfaces';\n\nexport default function create_debugging_comment(\n\tnode: INode,\n\tcomponent: Component\n) {\n\tconst { locate, source } = component;\n\n\tlet c = node.start;\n\tif (node.type === 'ElseBlock') {\n\t\twhile (source[c - 1] !== '{') c -= 1;\n\t\twhile (source[c - 1] === '{') c -= 1;\n\t}\n\n\tlet d;\n\n\tif (node.type === 'InlineComponent' || node.type === 'Element') {\n\t\tif (node.children.length) {\n\t\t\td = node.children[0].start;\n\t\t\twhile (source[d - 1] !== '>') d -= 1;\n\t\t} else {\n\t\t\td = node.start;\n\t\t\twhile (source[d] !== '>') d += 1;\n\t\t\td += 1;\n\t\t}\n\t} else if (node.type === 'Text' || node.type === 'Comment') {\n\t\td = node.end;\n\t} else {\n\t\t// @ts-ignore\n\t\td = node.expression ? node.expression.node.end : c;\n\t\twhile (source[d] !== '}' && d <= source.length) d += 1;\n\t\twhile (source[d] === '}') d += 1;\n\t}\n\n\tconst start = locate(c);\n\tconst loc = `(${start.line}:${start.column})`;\n\n\treturn `${loc} ${source.slice(c, d)}`.replace(/\\s/g, ' ');\n}\n","import Wrapper from './shared/Wrapper';\nimport Renderer from '../Renderer';\nimport Block from '../Block';\nimport AwaitBlock from '../../nodes/AwaitBlock';\nimport create_debugging_comment from './shared/create_debugging_comment';\nimport { b, x } from 'code-red';\nimport FragmentWrapper from './Fragment';\nimport PendingBlock from '../../nodes/PendingBlock';\nimport ThenBlock from '../../nodes/ThenBlock';\nimport CatchBlock from '../../nodes/CatchBlock';\nimport { Context } from '../../nodes/shared/Context';\nimport { Identifier, Literal, Node } from 'estree';\n\ntype Status = 'pending' | 'then' | 'catch';\n\nclass AwaitBlockBranch extends Wrapper {\n\tparent: AwaitBlockWrapper;\n\tnode: PendingBlock | ThenBlock | CatchBlock;\n\tblock: Block;\n\tfragment: FragmentWrapper;\n\tis_dynamic: boolean;\n\n\tvar = null;\n\tstatus: Status;\n\n\tvalue: string;\n\tvalue_index: Literal;\n\tvalue_contexts: Context[];\n\tis_destructured: boolean;\n\n\tconstructor(\n\t\tstatus: Status,\n\t\trenderer: Renderer,\n\t\tblock: Block,\n\t\tparent: AwaitBlockWrapper,\n\t\tnode: PendingBlock | ThenBlock | CatchBlock,\n\t\tstrip_whitespace: boolean,\n\t\tnext_sibling: Wrapper\n\t) {\n\t\tsuper(renderer, block, parent, node);\n\t\tthis.status = status;\n\n\t\tthis.block = block.child({\n\t\t\tcomment: create_debugging_comment(node, this.renderer.component),\n\t\t\tname: this.renderer.component.get_unique_name(`create_${status}_block`),\n\t\t\ttype: status\n\t\t});\n\n\t\tthis.add_context(parent.node[status + '_node'], parent.node[status + '_contexts']);\n\n\t\tthis.fragment = new FragmentWrapper(\n\t\t\trenderer,\n\t\t\tthis.block,\n\t\t\tthis.node.children,\n\t\t\tparent,\n\t\t\tstrip_whitespace,\n\t\t\tnext_sibling\n\t\t);\n\n\t\tthis.is_dynamic = this.block.dependencies.size > 0;\n\t}\n\n\tadd_context(node: Node | null, contexts: Context[]) {\n\t\tif (!node) return;\n\n\t\tif (node.type === 'Identifier') {\n\t\t\tthis.value = node.name;\n\t\t\tthis.renderer.add_to_context(this.value, true);\n\t\t} else {\n\t\t\tcontexts.forEach(context => {\n\t\t\t\tthis.renderer.add_to_context(context.key.name, true);\n\t\t\t});\n\t\t\tthis.value = this.block.parent.get_unique_name('value').name;\n\t\t\tthis.value_contexts = contexts;\n\t\t\tthis.renderer.add_to_context(this.value, true);\n\t\t\tthis.is_destructured = true;\n\t\t}\n\t\tthis.value_index = this.renderer.context_lookup.get(this.value).index;\n\t}\n\n\trender(block: Block, parent_node: Identifier, parent_nodes: Identifier) {\n\t\tthis.fragment.render(block, parent_node, parent_nodes);\n\n\t\tif (this.is_destructured) {\n\t\t\tthis.render_destructure();\n\t\t}\n\t}\n\n\trender_destructure() {\n\t\tconst props = this.value_contexts.map(prop => b`#ctx[${this.block.renderer.context_lookup.get(prop.key.name).index}] = ${prop.modifier(x`#ctx[${this.value_index}]`)};`);\n\t\tconst get_context = this.block.renderer.component.get_unique_name(`get_${this.status}_context`);\n\t\tthis.block.renderer.blocks.push(b`\n\t\t\tfunction ${get_context}(#ctx) {\n\t\t\t\t${props}\n\t\t\t}\n\t\t`);\n\t\tthis.block.chunks.declarations.push(b`${get_context}(#ctx)`);\n\t\tif (this.block.has_update_method) {\n\t\t\tthis.block.chunks.update.unshift(b`${get_context}(#ctx)`);\n\t\t}\n\t}\n}\n\nexport default class AwaitBlockWrapper extends Wrapper {\n\tnode: AwaitBlock;\n\n\tpending: AwaitBlockBranch;\n\tthen: AwaitBlockBranch;\n\tcatch: AwaitBlockBranch;\n\n\tvar: Identifier = { type: 'Identifier', name: 'await_block' };\n\n\tconstructor(\n\t\trenderer: Renderer,\n\t\tblock: Block,\n\t\tparent: Wrapper,\n\t\tnode: AwaitBlock,\n\t\tstrip_whitespace: boolean,\n\t\tnext_sibling: Wrapper\n\t) {\n\t\tsuper(renderer, block, parent, node);\n\n\t\tthis.cannot_use_innerhtml();\n\t\tthis.not_static_content();\n\n\t\tblock.add_dependencies(this.node.expression.dependencies);\n\n\t\tlet is_dynamic = false;\n\t\tlet has_intros = false;\n\t\tlet has_outros = false;\n\n\t\t['pending', 'then', 'catch'].forEach((status: Status) => {\n\t\t\tconst child = this.node[status];\n\n\t\t\tconst branch = new AwaitBlockBranch(\n\t\t\t\tstatus,\n\t\t\t\trenderer,\n\t\t\t\tblock,\n\t\t\t\tthis,\n\t\t\t\tchild,\n\t\t\t\tstrip_whitespace,\n\t\t\t\tnext_sibling\n\t\t\t);\n\n\t\t\trenderer.blocks.push(branch.block);\n\n\t\t\tif (branch.is_dynamic) {\n\t\t\t\tis_dynamic = true;\n\t\t\t\t// TODO should blocks update their own parents?\n\t\t\t\tblock.add_dependencies(branch.block.dependencies);\n\t\t\t}\n\n\t\t\tif (branch.block.has_intros) has_intros = true;\n\t\t\tif (branch.block.has_outros) has_outros = true;\n\n\t\t\tthis[status] = branch;\n\t\t});\n\n\t\t['pending', 'then', 'catch'].forEach(status => {\n\t\t\tthis[status].block.has_update_method = is_dynamic;\n\t\t\tthis[status].block.has_intro_method = has_intros;\n\t\t\tthis[status].block.has_outro_method = has_outros;\n\t\t});\n\n\t\tif (has_outros) {\n\t\t\tblock.add_outro();\n\t\t}\n\t}\n\n\trender(\n\t\tblock: Block,\n\t\tparent_node: Identifier,\n\t\tparent_nodes: Identifier\n\t) {\n\t\tconst anchor = this.get_or_create_anchor(block, parent_node, parent_nodes);\n\t\tconst update_mount_node = this.get_update_mount_node(anchor);\n\n\t\tconst snippet = this.node.expression.manipulate(block);\n\n\t\tconst info = block.get_unique_name('info');\n\t\tconst promise = block.get_unique_name('promise');\n\n\t\tblock.add_variable(promise);\n\n\t\tblock.maintain_context = true;\n\n\t\tconst info_props: any = x`{\n\t\t\tctx: #ctx,\n\t\t\tcurrent: null,\n\t\t\ttoken: null,\n\t\t\thasCatch: ${this.catch.node.start !== null ? 'true' : 'false'},\n\t\t\tpending: ${this.pending.block.name},\n\t\t\tthen: ${this.then.block.name},\n\t\t\tcatch: ${this.catch.block.name},\n\t\t\tvalue: ${this.then.value_index},\n\t\t\terror: ${this.catch.value_index},\n\t\t\tblocks: ${this.pending.block.has_outro_method && x`[,,,]`}\n\t\t}`;\n\n\t\tblock.chunks.init.push(b`\n\t\t\tlet ${info} = ${info_props};\n\t\t`);\n\n\t\tblock.chunks.init.push(b`\n\t\t\t@handle_promise(${promise} = ${snippet}, ${info});\n\t\t`);\n\n\t\tblock.chunks.create.push(b`\n\t\t\t${info}.block.c();\n\t\t`);\n\n\t\tif (parent_nodes && this.renderer.options.hydratable) {\n\t\t\tblock.chunks.claim.push(b`\n\t\t\t\t${info}.block.l(${parent_nodes});\n\t\t\t`);\n\t\t}\n\n\t\tconst initial_mount_node = parent_node || '#target';\n\t\tconst anchor_node = parent_node ? 'null' : '#anchor';\n\n\t\tconst has_transitions = this.pending.block.has_intro_method || this.pending.block.has_outro_method;\n\n\t\tblock.chunks.mount.push(b`\n\t\t\t${info}.block.m(${initial_mount_node}, ${info}.anchor = ${anchor_node});\n\t\t\t${info}.mount = () => ${update_mount_node};\n\t\t\t${info}.anchor = ${anchor};\n\t\t`);\n\n\t\tif (has_transitions) {\n\t\t\tblock.chunks.intro.push(b`@transition_in(${info}.block);`);\n\t\t}\n\n\t\tconst dependencies = this.node.expression.dynamic_dependencies();\n\n\t\tlet update_child_context;\n\t\tif (this.then.value && this.catch.value) {\n\t\t\tupdate_child_context = b`#child_ctx[${this.then.value_index}] = #child_ctx[${this.catch.value_index}] = ${info}.resolved;`;\n\t\t} else if (this.then.value) {\n\t\t\tupdate_child_context = b`#child_ctx[${this.then.value_index}] = ${info}.resolved;`;\n\t\t} else if (this.catch.value) {\n\t\t\tupdate_child_context = b`#child_ctx[${this.catch.value_index}] = ${info}.resolved;`;\n\t\t}\n\n\t\tif (dependencies.length > 0) {\n\t\t\tconst condition = x`\n\t\t\t\t${block.renderer.dirty(dependencies)} &&\n\t\t\t\t${promise} !== (${promise} = ${snippet}) &&\n\t\t\t\t@handle_promise(${promise}, ${info})`;\n\n\t\t\tblock.chunks.update.push(\n\t\t\t\tb`${info}.ctx = #ctx;`\n\t\t\t);\n\n\t\t\tif (this.pending.block.has_update_method) {\n\t\t\t\tblock.chunks.update.push(b`\n\t\t\t\t\tif (${condition}) {\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst #child_ctx = #ctx.slice();\n\t\t\t\t\t\t${update_child_context}\n\t\t\t\t\t\t${info}.block.p(#child_ctx, #dirty);\n\t\t\t\t\t}\n\t\t\t\t`);\n\t\t\t} else {\n\t\t\t\tblock.chunks.update.push(b`\n\t\t\t\t\t${condition}\n\t\t\t\t`);\n\t\t\t}\n\t\t} else {\n\t\t\tif (this.pending.block.has_update_method) {\n\t\t\t\tblock.chunks.update.push(b`\n\t\t\t\t\t{\n\t\t\t\t\t\tconst #child_ctx = #ctx.slice();\n\t\t\t\t\t\t${update_child_context}\n\t\t\t\t\t\t${info}.block.p(#child_ctx, #dirty);\n\t\t\t\t\t}\n\t\t\t\t`);\n\t\t\t}\n\t\t}\n\n\t\tif (this.pending.block.has_outro_method) {\n\t\t\tblock.chunks.outro.push(b`\n\t\t\t\tfor (let #i = 0; #i < 3; #i += 1) {\n\t\t\t\t\tconst block = ${info}.blocks[#i];\n\t\t\t\t\t@transition_out(block);\n\t\t\t\t}\n\t\t\t`);\n\t\t}\n\n\t\tblock.chunks.destroy.push(b`\n\t\t\t${info}.block.d(${parent_node ? null : 'detaching'});\n\t\t\t${info}.token = null;\n\t\t\t${info} = null;\n\t\t`);\n\n\t\t[this.pending, this.then, this.catch].forEach(branch => {\n\t\t\tbranch.render(branch.block, null, x`#nodes` as Identifier);\n\t\t});\n\t}\n}\n","import EventHandler from '../../../nodes/EventHandler';\nimport Wrapper from '../shared/Wrapper';\nimport Block from '../../Block';\nimport { b, x, p } from 'code-red';\nimport { Expression } from 'estree';\n\nconst TRUE = x`true`;\nconst FALSE = x`false`;\n\nexport default class EventHandlerWrapper {\n\tnode: EventHandler;\n\tparent: Wrapper;\n\n\tconstructor(node: EventHandler, parent: Wrapper) {\n\t\tthis.node = node;\n\t\tthis.parent = parent;\n\n\t\tif (!node.expression) {\n\t\t\tthis.parent.renderer.add_to_context(node.handler_name.name);\n\n\t\t\tthis.parent.renderer.component.partly_hoisted.push(b`\n\t\t\t\tfunction ${node.handler_name.name}(event) {\n\t\t\t\t\t@bubble($$self, event);\n\t\t\t\t}\n\t\t\t`);\n\t\t}\n\t}\n\n\tget_snippet(block) {\n\t\tconst snippet = this.node.expression ? this.node.expression.manipulate(block) : block.renderer.reference(this.node.handler_name);\n\n\t\tif (this.node.reassigned) {\n\t\t\tblock.maintain_context = true;\n\t\t\treturn x`function () { if (@is_function(${snippet})) ${snippet}.apply(this, arguments); }`;\n\t\t}\n\t\treturn snippet;\n\t}\n\n\trender(block: Block, target: string | Expression) {\n\t\tlet snippet = this.get_snippet(block);\n\n\t\tif (this.node.modifiers.has('preventDefault')) snippet = x`@prevent_default(${snippet})`;\n\t\tif (this.node.modifiers.has('stopPropagation')) snippet = x`@stop_propagation(${snippet})`;\n\t\tif (this.node.modifiers.has('self')) snippet = x`@self(${snippet})`;\n\n\t\tconst args = [];\n\n\t\tconst opts = ['nonpassive', 'passive', 'once', 'capture'].filter(mod => this.node.modifiers.has(mod));\n\t\tif (opts.length) {\n\t\t\tif (opts.length === 1 && opts[0] === 'capture') {\n\t\t\t\targs.push(TRUE);\n\t\t\t} else {\n\t\t\t\targs.push(x`{ ${ opts.map(opt =>\n\t\t\t\t\topt === 'nonpassive'\n\t\t\t\t\t\t? p`passive: false`\n\t\t\t\t\t\t: p`${opt}: true`\n\t\t\t\t) } }`);\n\t\t\t}\n\t\t} else if (block.renderer.options.dev) {\n\t\t\targs.push(FALSE);\n\t\t}\n\n\t\tif (block.renderer.options.dev) {\n\t\t\targs.push(this.node.modifiers.has('preventDefault') ? TRUE : FALSE);\n\t\t\targs.push(this.node.modifiers.has('stopPropagation') ? TRUE : FALSE);\n\t\t}\n\n\t\tblock.event_listeners.push(\n\t\t\tx`@listen(${target}, \"${this.node.name}\", ${snippet}, ${args})`\n\t\t);\n\t}\n}\n","import Block from '../../Block';\nimport EventHandler from '../Element/EventHandler';\nimport { Expression } from 'estree';\n\nexport default function add_event_handlers(\n\tblock: Block,\n\ttarget: string | Expression,\n\thandlers: EventHandler[]\n) {\n\thandlers.forEach(handler => add_event_handler(block, target, handler));\n}\n\nexport function add_event_handler(\n\tblock: Block,\n\ttarget: string | Expression,\n\thandler: EventHandler\n) {\n\thandler.render(block, target);\n}\n","import Block from '../Block';\nimport Wrapper from './shared/Wrapper';\nimport { x } from 'code-red';\nimport Body from '../../nodes/Body';\nimport { Identifier } from 'estree';\nimport EventHandler from './Element/EventHandler';\nimport add_event_handlers from './shared/add_event_handlers';\nimport { TemplateNode } from '../../../interfaces';\nimport Renderer from '../Renderer';\n\nexport default class BodyWrapper extends Wrapper {\n\tnode: Body;\n\thandlers: EventHandler[];\n\n\tconstructor(renderer: Renderer, block: Block, parent: Wrapper, node: TemplateNode) {\n\t\tsuper(renderer, block, parent, node);\n\t\tthis.handlers = this.node.handlers.map(handler => new EventHandler(handler, this));\n\t}\n\n\trender(block: Block, _parent_node: Identifier, _parent_nodes: Identifier) {\n\t\tadd_event_handlers(block, x`@_document.body`, this.handlers);\n\t}\n}\n","export default function add_to_set<T>(a: Set<T>, b: Set<T> | T[]) {\n\t// @ts-ignore\n\tb.forEach(item => {\n\t\ta.add(item);\n\t});\n}\n","import Renderer from '../Renderer';\nimport Wrapper from './shared/Wrapper';\nimport Block from '../Block';\nimport DebugTag from '../../nodes/DebugTag';\nimport add_to_set from '../../utils/add_to_set';\nimport { b, p } from 'code-red';\nimport { Identifier, DebuggerStatement } from 'estree';\n\nexport default class DebugTagWrapper extends Wrapper {\n\tnode: DebugTag;\n\n\tconstructor(\n\t\trenderer: Renderer,\n\t\tblock: Block,\n\t\tparent: Wrapper,\n\t\tnode: DebugTag,\n\t\t_strip_whitespace: boolean,\n\t\t_next_sibling: Wrapper\n\t) {\n\t\tsuper(renderer, block, parent, node);\n\t}\n\n\trender(block: Block, _parent_node: Identifier, _parent_nodes: Identifier) {\n\t\tconst { renderer } = this;\n\t\tconst { component } = renderer;\n\n\t\tif (!renderer.options.dev) return;\n\n\t\tconst { var_lookup } = component;\n\n\t\tconst start = component.locate(this.node.start + 1);\n\t\tconst end = { line: start.line, column: start.column + 6 };\n\n\t\tconst loc = { start, end };\n\n\t\tconst debug: DebuggerStatement = {\n\t\t\ttype: 'DebuggerStatement',\n\t\t\tloc\n\t\t};\n\n\t\tif (this.node.expressions.length === 0) {\n\t\t\t// Debug all\n\t\t\tblock.chunks.create.push(debug);\n\t\t\tblock.chunks.update.push(debug);\n\t\t} else {\n\t\t\tconst log: Identifier = {\n\t\t\t\ttype: 'Identifier',\n\t\t\t\tname: 'log',\n\t\t\t\tloc\n\t\t\t};\n\n\t\t\tconst dependencies: Set<string> = new Set();\n\t\t\tthis.node.expressions.forEach(expression => {\n\t\t\t\tadd_to_set(dependencies, expression.dependencies);\n\t\t\t});\n\n\t\t\tconst contextual_identifiers = this.node.expressions\n\t\t\t\t.filter(e => {\n\t\t\t\t\tconst variable = var_lookup.get(e.node.name);\n\t\t\t\t\treturn !(variable && variable.hoistable);\n\t\t\t\t})\n\t\t\t\t.map(e => e.node.name);\n\n\t\t\tconst logged_identifiers = this.node.expressions.map(e => p`${e.node.name}`);\n\n\t\t\tconst debug_statements = b`\n\t\t\t\t${contextual_identifiers.map(name => b`const ${name} = ${renderer.reference(name)};`)}\n\t\t\t\t@_console.${log}({ ${logged_identifiers} });\n\t\t\t\tdebugger;`;\n\n\t\t\tif (dependencies.size) {\n\t\t\t\tconst condition = renderer.dirty(Array.from(dependencies));\n\n\t\t\t\tblock.chunks.update.push(b`\n\t\t\t\t\tif (${condition}) {\n\t\t\t\t\t\t${debug_statements}\n\t\t\t\t\t}\n\t\t\t\t`);\n\t\t\t}\n\n\t\t\tblock.chunks.create.push(b`{\n\t\t\t\t${debug_statements}\n\t\t\t}`);\n\t\t}\n\t}\n}\n","import { Node, Identifier } from 'estree';\n\nexport default function get_object(node: Node): Identifier {\n\twhile (node.type === 'MemberExpression') node = node.object;\n\treturn node as Identifier;\n}\n","import Renderer from '../Renderer';\nimport Block from '../Block';\nimport Wrapper from './shared/Wrapper';\nimport create_debugging_comment from './shared/create_debugging_comment';\nimport EachBlock from '../../nodes/EachBlock';\nimport FragmentWrapper from './Fragment';\nimport { b, x } from 'code-red';\nimport ElseBlock from '../../nodes/ElseBlock';\nimport { Identifier, Node } from 'estree';\nimport get_object from '../../utils/get_object';\n\nexport class ElseBlockWrapper extends Wrapper {\n\tnode: ElseBlock;\n\tblock: Block;\n\tfragment: FragmentWrapper;\n\tis_dynamic: boolean;\n\n\tvar = null;\n\n\tconstructor(\n\t\trenderer: Renderer,\n\t\tblock: Block,\n\t\tparent: Wrapper,\n\t\tnode: ElseBlock,\n\t\tstrip_whitespace: boolean,\n\t\tnext_sibling: Wrapper\n\t) {\n\t\tsuper(renderer, block, parent, node);\n\n\t\tthis.block = block.child({\n\t\t\tcomment: create_debugging_comment(node, this.renderer.component),\n\t\t\tname: this.renderer.component.get_unique_name('create_else_block'),\n\t\t\ttype: 'else'\n\t\t});\n\n\t\tthis.fragment = new FragmentWrapper(\n\t\t\trenderer,\n\t\t\tthis.block,\n\t\t\tthis.node.children,\n\t\t\tparent,\n\t\t\tstrip_whitespace,\n\t\t\tnext_sibling\n\t\t);\n\n\t\tthis.is_dynamic = this.block.dependencies.size > 0;\n\t}\n}\n\nexport default class EachBlockWrapper extends Wrapper {\n\tblock: Block;\n\tnode: EachBlock;\n\tfragment: FragmentWrapper;\n\telse?: ElseBlockWrapper;\n\tvars: {\n\t\tcreate_each_block: Identifier;\n\t\teach_block_value: Identifier;\n\t\tget_each_context: Identifier;\n\t\titerations: Identifier;\n\t\tfixed_length: number;\n\t\tdata_length: string;\n\t\tview_length: string;\n\t}\n\n\tcontext_props: Array<Node | Node[]>;\n\tindex_name: Identifier;\n\tupdates: Array<Node | Node[]> = [];\n\tdependencies: Set<string>;\n\n\tvar: Identifier = { type: 'Identifier', name: 'each' };\n\n\tconstructor(\n\t\trenderer: Renderer,\n\t\tblock: Block,\n\t\tparent: Wrapper,\n\t\tnode: EachBlock,\n\t\tstrip_whitespace: boolean,\n\t\tnext_sibling: Wrapper\n\t) {\n\t\tsuper(renderer, block, parent, node);\n\t\tthis.cannot_use_innerhtml();\n\t\tthis.not_static_content();\n\n\t\tconst { dependencies } = node.expression;\n\t\tblock.add_dependencies(dependencies);\n\n\t\tthis.node.contexts.forEach(context => {\n\t\t\trenderer.add_to_context(context.key.name, true);\n\t\t});\n\n\t\tthis.block = block.child({\n\t\t\tcomment: create_debugging_comment(this.node, this.renderer.component),\n\t\t\tname: renderer.component.get_unique_name('create_each_block'),\n\t\t\ttype: 'each',\n\t\t\t// @ts-ignore todo: probably error\n\t\t\tkey: node.key as string,\n\n\t\t\tbindings: new Map(block.bindings)\n\t\t});\n\n\t\t// TODO this seems messy\n\t\tthis.block.has_animation = this.node.has_animation;\n\n\t\tthis.index_name = this.node.index\n\t\t\t? { type: 'Identifier', name: this.node.index }\n\t\t\t: renderer.component.get_unique_name(`${this.node.context}_index`);\n\n\t\tconst fixed_length =\n\t\t\tnode.expression.node.type === 'ArrayExpression' &&\n\t\t\tnode.expression.node.elements.every(element => element.type !== 'SpreadElement')\n\t\t\t\t? node.expression.node.elements.length\n\t\t\t\t: null;\n\n\t\t// hack the sourcemap, so that if data is missing the bug\n\t\t// is easy to find\n\t\tlet c = this.node.start + 2;\n\t\twhile (renderer.component.source[c] !== 'e') c += 1;\n\t\tconst start = renderer.component.locate(c);\n\t\tconst end = { line: start.line, column: start.column + 4 };\n\t\tconst length = {\n\t\t\ttype: 'Identifier',\n\t\t\tname: 'length',\n\t\t\tloc: { start, end }\n\t\t};\n\n\t\tconst each_block_value = renderer.component.get_unique_name(`${this.var.name}_value`);\n\t\tconst iterations = block.get_unique_name(`${this.var.name}_blocks`);\n\n\t\trenderer.add_to_context(each_block_value.name, true);\n\t\trenderer.add_to_context(this.index_name.name, true);\n\n\t\tthis.vars = {\n\t\t\tcreate_each_block: this.block.name,\n\t\t\teach_block_value,\n\t\t\tget_each_context: renderer.component.get_unique_name(`get_${this.var.name}_context`),\n\t\t\titerations,\n\n\t\t\t// optimisation for array literal\n\t\t\tfixed_length,\n\t\t\tdata_length: fixed_length === null ? x`${each_block_value}.${length}` : fixed_length,\n\t\t\tview_length: fixed_length === null ? x`${iterations}.length` : fixed_length\n\t\t};\n\n\t\tconst object = get_object(node.expression.node);\n\t\tconst store = object.type === 'Identifier' && object.name[0] === '$' ? object.name.slice(1) : null;\n\n\t\tnode.contexts.forEach(prop => {\n\t\t\tthis.block.bindings.set(prop.key.name, {\n\t\t\t\tobject: this.vars.each_block_value,\n\t\t\t\tproperty: this.index_name,\n\t\t\t\tmodifier: prop.modifier,\n\t\t\t\tsnippet: prop.modifier(x`${this.vars.each_block_value}[${this.index_name}]` as Node),\n\t\t\t\tstore,\n\t\t\t\ttail: prop.modifier(x`[${this.index_name}]` as Node)\n\t\t\t});\n\t\t});\n\n\t\tif (this.node.index) {\n\t\t\tthis.block.get_unique_name(this.node.index); // this prevents name collisions (#1254)\n\t\t}\n\n\t\trenderer.blocks.push(this.block);\n\n\t\tthis.fragment = new FragmentWrapper(renderer, this.block, node.children, this, strip_whitespace, next_sibling);\n\n\t\tif (this.node.else) {\n\t\t\tthis.else = new ElseBlockWrapper(\n\t\t\t\trenderer,\n\t\t\t\tblock,\n\t\t\t\tthis,\n\t\t\t\tthis.node.else,\n\t\t\t\tstrip_whitespace,\n\t\t\t\tnext_sibling\n\t\t\t);\n\n\t\t\trenderer.blocks.push(this.else.block);\n\n\t\t\tif (this.else.is_dynamic) {\n\t\t\t\tthis.block.add_dependencies(this.else.block.dependencies);\n\t\t\t}\n\t\t}\n\n\t\tblock.add_dependencies(this.block.dependencies);\n\n\t\tif (this.block.has_outros || (this.else && this.else.block.has_outros)) {\n\t\t\tblock.add_outro();\n\t\t}\n\t}\n\n\trender(block: Block, parent_node: Identifier, parent_nodes: Identifier) {\n\t\tif (this.fragment.nodes.length === 0) return;\n\n\t\tconst { renderer } = this;\n\t\tconst { component } = renderer;\n\n\t\tconst needs_anchor = this.next\n\t\t\t? !this.next.is_dom_node() :\n\t\t\t!parent_node || !this.parent.is_dom_node();\n\n\t\tconst snippet = this.node.expression.manipulate(block);\n\n\t\tblock.chunks.init.push(b`let ${this.vars.each_block_value} = ${snippet};`);\n\t\tif (this.renderer.options.dev) {\n\t\t\tblock.chunks.init.push(b`@validate_each_argument(${this.vars.each_block_value});`);\n\t\t}\n\n\t\tconst initial_anchor_node: Identifier = { type: 'Identifier', name: parent_node ? 'null' : '#anchor' };\n\t\tconst initial_mount_node: Identifier = parent_node || { type: 'Identifier', name: '#target' };\n\t\tconst update_anchor_node = needs_anchor\n\t\t\t? block.get_unique_name(`${this.var.name}_anchor`)\n\t\t\t: (this.next && this.next.var) || { type: 'Identifier', name: 'null' };\n\t\tconst update_mount_node: Identifier = this.get_update_mount_node((update_anchor_node as Identifier));\n\n\t\tconst args = {\n\t\t\tblock,\n\t\t\tparent_node,\n\t\t\tparent_nodes,\n\t\t\tsnippet,\n\t\t\tinitial_anchor_node,\n\t\t\tinitial_mount_node,\n\t\t\tupdate_anchor_node,\n\t\t\tupdate_mount_node\n\t\t};\n\n\t\tconst all_dependencies = new Set(this.block.dependencies); // TODO should be dynamic deps only\n\t\tthis.node.expression.dynamic_dependencies().forEach((dependency: string) => {\n\t\t\tall_dependencies.add(dependency);\n\t\t});\n\t\tif (this.node.key) {\n\t\t\tthis.node.key.dynamic_dependencies().forEach((dependency: string) => {\n\t\t\t\tall_dependencies.add(dependency);\n\t\t\t});\n\t\t}\n\t\tthis.dependencies = all_dependencies;\n\n\t\tif (this.node.key) {\n\t\t\tthis.render_keyed(args);\n\t\t} else {\n\t\t\tthis.render_unkeyed(args);\n\t\t}\n\n\t\tif (this.block.has_intro_method || this.block.has_outro_method) {\n\t\t\tblock.chunks.intro.push(b`\n\t\t\t\tfor (let #i = 0; #i < ${this.vars.data_length}; #i += 1) {\n\t\t\t\t\t@transition_in(${this.vars.iterations}[#i]);\n\t\t\t\t}\n\t\t\t`);\n\t\t}\n\n\t\tif (needs_anchor) {\n\t\t\tblock.add_element(\n\t\t\t\tupdate_anchor_node as Identifier,\n\t\t\t\tx`@empty()`,\n\t\t\t\tparent_nodes && x`@empty()`,\n\t\t\t\tparent_node\n\t\t\t);\n\t\t}\n\n\t\tif (this.else) {\n\t\t\tconst each_block_else = component.get_unique_name(`${this.var.name}_else`);\n\n\t\t\tblock.chunks.init.push(b`let ${each_block_else} = null;`);\n\n\t\t\t// TODO neaten this up... will end up with an empty line in the block\n\t\t\tblock.chunks.init.push(b`\n\t\t\t\tif (!${this.vars.data_length}) {\n\t\t\t\t\t${each_block_else} = ${this.else.block.name}(#ctx);\n\t\t\t\t}\n\t\t\t`);\n\n\t\t\tblock.chunks.create.push(b`\n\t\t\t\tif (${each_block_else}) {\n\t\t\t\t\t${each_block_else}.c();\n\t\t\t\t}\n\t\t\t`);\n\n\t\t\tif (this.renderer.options.hydratable) {\n\t\t\t\tblock.chunks.claim.push(b`\n\t\t\t\t\tif (${each_block_else}) {\n\t\t\t\t\t\t${each_block_else}.l(${parent_nodes});\n\t\t\t\t\t}\n\t\t\t\t`);\n\t\t\t}\n\n\t\t\tblock.chunks.mount.push(b`\n\t\t\t\tif (${each_block_else}) {\n\t\t\t\t\t${each_block_else}.m(${initial_mount_node}, ${initial_anchor_node});\n\t\t\t\t}\n\t\t\t`);\n\n\t\t\tconst has_transitions = !!(this.else.block.has_intro_method || this.else.block.has_outro_method);\n\n\t\t\tconst destroy_block_else = this.else.block.has_outro_method\n\t\t\t\t? b`\n\t\t\t\t\t@group_outros();\n\t\t\t\t\t@transition_out(${each_block_else}, 1, 1, () => {\n\t\t\t\t\t\t${each_block_else} = null;\n\t\t\t\t\t});\n\t\t\t\t\t@check_outros();`\n\t\t\t\t: b`\n\t\t\t\t\t${each_block_else}.d(1);\n\t\t\t\t\t${each_block_else} = null;`;\n\n\t\t\tif (this.else.block.has_update_method) {\n\t\t\t\tthis.updates.push(b`\n\t\t\t\t\tif (!${this.vars.data_length} && ${each_block_else}) {\n\t\t\t\t\t\t${each_block_else}.p(#ctx, #dirty);\n\t\t\t\t\t} else if (!${this.vars.data_length}) {\n\t\t\t\t\t\t${each_block_else} = ${this.else.block.name}(#ctx);\n\t\t\t\t\t\t${each_block_else}.c();\n\t\t\t\t\t\t${has_transitions && b`@transition_in(${each_block_else}, 1);`}\n\t\t\t\t\t\t${each_block_else}.m(${update_mount_node}, ${update_anchor_node});\n\t\t\t\t\t} else if (${each_block_else}) {\n\t\t\t\t\t\t${destroy_block_else};\n\t\t\t\t\t}\n\t\t\t\t`);\n\t\t\t} else {\n\t\t\t\tthis.updates.push(b`\n\t\t\t\t\tif (${this.vars.data_length}) {\n\t\t\t\t\t\tif (${each_block_else}) {\n\t\t\t\t\t\t\t${destroy_block_else};\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (!${each_block_else}) {\n\t\t\t\t\t\t${each_block_else} = ${this.else.block.name}(#ctx);\n\t\t\t\t\t\t${each_block_else}.c();\n\t\t\t\t\t\t${has_transitions && b`@transition_in(${each_block_else}, 1);`}\n\t\t\t\t\t\t${each_block_else}.m(${update_mount_node}, ${update_anchor_node});\n\t\t\t\t\t}\n\t\t\t\t`);\n\t\t\t}\n\n\t\t\tblock.chunks.destroy.push(b`\n\t\t\t\tif (${each_block_else}) ${each_block_else}.d(${parent_node ? '' : 'detaching'});\n\t\t\t`);\n\t\t}\n\n\t\tif (this.updates.length) {\n\t\t\tblock.chunks.update.push(b`\n\t\t\t\tif (${block.renderer.dirty(Array.from(all_dependencies))}) {\n\t\t\t\t\t${this.updates}\n\t\t\t\t}\n\t\t\t`);\n\t\t}\n\n\t\tthis.fragment.render(this.block, null, x`#nodes` as Identifier);\n\n\t\tif (this.else) {\n\t\t\tthis.else.fragment.render(this.else.block, null, x`#nodes` as Identifier);\n\t\t}\n\n\t\tthis.context_props = this.node.contexts.map(prop => b`child_ctx[${renderer.context_lookup.get(prop.key.name).index}] = ${prop.modifier(x`list[i]`)};`);\n\n\t\tif (this.node.has_binding) this.context_props.push(b`child_ctx[${renderer.context_lookup.get(this.vars.each_block_value.name).index}] = list;`);\n\t\tif (this.node.has_binding || this.node.has_index_binding || this.node.index) this.context_props.push(b`child_ctx[${renderer.context_lookup.get(this.index_name.name).index}] = i;`);\n\t\t// TODO which is better — Object.create(array) or array.slice()?\n\t\trenderer.blocks.push(b`\n\t\t\tfunction ${this.vars.get_each_context}(#ctx, list, i) {\n\t\t\t\tconst child_ctx = #ctx.slice();\n\t\t\t\t${this.context_props}\n\t\t\t\treturn child_ctx;\n\t\t\t}\n\t\t`);\n\t}\n\n\trender_keyed({\n\t\tblock,\n\t\tparent_node,\n\t\tparent_nodes,\n\t\tsnippet,\n\t\tinitial_anchor_node,\n\t\tinitial_mount_node,\n\t\tupdate_anchor_node,\n\t\tupdate_mount_node\n\t}: {\n\t\tblock: Block;\n\t\tparent_node: Identifier;\n\t\tparent_nodes: Identifier;\n\t\tsnippet: Node;\n\t\tinitial_anchor_node: Identifier;\n\t\tinitial_mount_node: Identifier;\n\t\tupdate_anchor_node: Identifier;\n\t\tupdate_mount_node: Identifier;\n\t}) {\n\t\tconst {\n\t\t\tcreate_each_block,\n\t\t\titerations,\n\t\t\tdata_length,\n\t\t\tview_length\n\t\t} = this.vars;\n\n\t\tconst get_key = block.get_unique_name('get_key');\n\t\tconst lookup = block.get_unique_name(`${this.var.name}_lookup`);\n\n\t\tblock.add_variable(iterations, x`[]`);\n\t\tblock.add_variable(lookup, x`new @_Map()`);\n\n\t\tif (this.fragment.nodes[0].is_dom_node()) {\n\t\t\tthis.block.first = this.fragment.nodes[0].var;\n\t\t} else {\n\t\t\tthis.block.first = this.block.get_unique_name('first');\n\t\t\tthis.block.add_element(\n\t\t\t\tthis.block.first,\n\t\t\t\tx`@empty()`,\n\t\t\t\tparent_nodes && x`@empty()`,\n\t\t\t\tnull\n\t\t\t);\n\t\t}\n\n\t\tblock.chunks.init.push(b`\n\t\t\tconst ${get_key} = #ctx => ${this.node.key.manipulate(block)};\n\n\t\t\t${this.renderer.options.dev && b`@validate_each_keys(#ctx, ${this.vars.each_block_value}, ${this.vars.get_each_context}, ${get_key});`}\n\t\t\tfor (let #i = 0; #i < ${data_length}; #i += 1) {\n\t\t\t\tlet child_ctx = ${this.vars.get_each_context}(#ctx, ${this.vars.each_block_value}, #i);\n\t\t\t\tlet key = ${get_key}(child_ctx);\n\t\t\t\t${lookup}.set(key, ${iterations}[#i] = ${create_each_block}(key, child_ctx));\n\t\t\t}\n\t\t`);\n\n\t\tblock.chunks.create.push(b`\n\t\t\tfor (let #i = 0; #i < ${view_length}; #i += 1) {\n\t\t\t\t${iterations}[#i].c();\n\t\t\t}\n\t\t`);\n\n\t\tif (parent_nodes && this.renderer.options.hydratable) {\n\t\t\tblock.chunks.claim.push(b`\n\t\t\t\tfor (let #i = 0; #i < ${view_length}; #i += 1) {\n\t\t\t\t\t${iterations}[#i].l(${parent_nodes});\n\t\t\t\t}\n\t\t\t`);\n\t\t}\n\n\t\tblock.chunks.mount.push(b`\n\t\t\tfor (let #i = 0; #i < ${view_length}; #i += 1) {\n\t\t\t\t${iterations}[#i].m(${initial_mount_node}, ${initial_anchor_node});\n\t\t\t}\n\t\t`);\n\n\t\tconst dynamic = this.block.has_update_method;\n\n\t\tconst destroy = this.node.has_animation\n\t\t\t? (this.block.has_outros\n\t\t\t\t? '@fix_and_outro_and_destroy_block'\n\t\t\t\t: '@fix_and_destroy_block')\n\t\t\t: this.block.has_outros\n\t\t\t\t? '@outro_and_destroy_block'\n\t\t\t\t: '@destroy_block';\n\n\t\tif (this.dependencies.size) {\n\t\t\tthis.updates.push(b`\n\t\t\t\tconst ${this.vars.each_block_value} = ${snippet};\n\t\t\t\t${this.renderer.options.dev && b`@validate_each_argument(${this.vars.each_block_value});`}\n\n\t\t\t\t${this.block.has_outros && b`@group_outros();`}\n\t\t\t\t${this.node.has_animation && b`for (let #i = 0; #i < ${view_length}; #i += 1) ${iterations}[#i].r();`}\n\t\t\t\t${this.renderer.options.dev && b`@validate_each_keys(#ctx, ${this.vars.each_block_value}, ${this.vars.get_each_context}, ${get_key});`}\n\t\t\t\t${iterations} = @update_keyed_each(${iterations}, #dirty, ${get_key}, ${dynamic ? 1 : 0}, #ctx, ${this.vars.each_block_value}, ${lookup}, ${update_mount_node}, ${destroy}, ${create_each_block}, ${update_anchor_node}, ${this.vars.get_each_context});\n\t\t\t\t${this.node.has_animation && b`for (let #i = 0; #i < ${view_length}; #i += 1) ${iterations}[#i].a();`}\n\t\t\t\t${this.block.has_outros && b`@check_outros();`}\n\t\t\t`);\n\t\t}\n\n\t\tif (this.block.has_outros) {\n\t\t\tblock.chunks.outro.push(b`\n\t\t\t\tfor (let #i = 0; #i < ${view_length}; #i += 1) {\n\t\t\t\t\t@transition_out(${iterations}[#i]);\n\t\t\t\t}\n\t\t\t`);\n\t\t}\n\n\t\tblock.chunks.destroy.push(b`\n\t\t\tfor (let #i = 0; #i < ${view_length}; #i += 1) {\n\t\t\t\t${iterations}[#i].d(${parent_node ? null : 'detaching'});\n\t\t\t}\n\t\t`);\n\t}\n\n\trender_unkeyed({\n\t\tblock,\n\t\tparent_nodes,\n\t\tsnippet,\n\t\tinitial_anchor_node,\n\t\tinitial_mount_node,\n\t\tupdate_anchor_node,\n\t\tupdate_mount_node\n\t}: {\n\t\tblock: Block;\n\t\tparent_nodes: Identifier;\n\t\tsnippet: Node;\n\t\tinitial_anchor_node: Identifier;\n\t\tinitial_mount_node: Identifier;\n\t\tupdate_anchor_node: Identifier;\n\t\tupdate_mount_node: Identifier;\n\t}) {\n\t\tconst {\n\t\t\tcreate_each_block,\n\t\t\titerations,\n\t\t\tfixed_length,\n\t\t\tdata_length,\n\t\t\tview_length\n\t\t} = this.vars;\n\n\t\tblock.chunks.init.push(b`\n\t\t\tlet ${iterations} = [];\n\n\t\t\tfor (let #i = 0; #i < ${data_length}; #i += 1) {\n\t\t\t\t${iterations}[#i] = ${create_each_block}(${this.vars.get_each_context}(#ctx, ${this.vars.each_block_value}, #i));\n\t\t\t}\n\t\t`);\n\n\t\tblock.chunks.create.push(b`\n\t\t\tfor (let #i = 0; #i < ${view_length}; #i += 1) {\n\t\t\t\t${iterations}[#i].c();\n\t\t\t}\n\t\t`);\n\n\t\tif (parent_nodes && this.renderer.options.hydratable) {\n\t\t\tblock.chunks.claim.push(b`\n\t\t\t\tfor (let #i = 0; #i < ${view_length}; #i += 1) {\n\t\t\t\t\t${iterations}[#i].l(${parent_nodes});\n\t\t\t\t}\n\t\t\t`);\n\t\t}\n\n\t\tblock.chunks.mount.push(b`\n\t\t\tfor (let #i = 0; #i < ${view_length}; #i += 1) {\n\t\t\t\t${iterations}[#i].m(${initial_mount_node}, ${initial_anchor_node});\n\t\t\t}\n\t\t`);\n\n\t\tif (this.dependencies.size) {\n\t\t\tconst has_transitions = !!(this.block.has_intro_method || this.block.has_outro_method);\n\n\t\t\tconst for_loop_body = this.block.has_update_method\n\t\t\t\t? b`\n\t\t\t\t\tif (${iterations}[#i]) {\n\t\t\t\t\t\t${iterations}[#i].p(child_ctx, #dirty);\n\t\t\t\t\t\t${has_transitions && b`@transition_in(${this.vars.iterations}[#i], 1);`}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t${iterations}[#i] = ${create_each_block}(child_ctx);\n\t\t\t\t\t\t${iterations}[#i].c();\n\t\t\t\t\t\t${has_transitions && b`@transition_in(${this.vars.iterations}[#i], 1);`}\n\t\t\t\t\t\t${iterations}[#i].m(${update_mount_node}, ${update_anchor_node});\n\t\t\t\t\t}\n\t\t\t\t`\n\t\t\t\t: has_transitions\n\t\t\t\t\t? b`\n\t\t\t\t\t\tif (${iterations}[#i]) {\n\t\t\t\t\t\t\t@transition_in(${this.vars.iterations}[#i], 1);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t${iterations}[#i] = ${create_each_block}(child_ctx);\n\t\t\t\t\t\t\t${iterations}[#i].c();\n\t\t\t\t\t\t\t@transition_in(${this.vars.iterations}[#i], 1);\n\t\t\t\t\t\t\t${iterations}[#i].m(${update_mount_node}, ${update_anchor_node});\n\t\t\t\t\t\t}\n\t\t\t\t\t`\n\t\t\t\t\t: b`\n\t\t\t\t\t\tif (!${iterations}[#i]) {\n\t\t\t\t\t\t\t${iterations}[#i] = ${create_each_block}(child_ctx);\n\t\t\t\t\t\t\t${iterations}[#i].c();\n\t\t\t\t\t\t\t${iterations}[#i].m(${update_mount_node}, ${update_anchor_node});\n\t\t\t\t\t\t}\n\t\t\t\t\t`;\n\n\t\t\tconst start = this.block.has_update_method ? 0 : '#old_length';\n\n\t\t\tlet remove_old_blocks;\n\n\t\t\tif (this.block.has_outros) {\n\t\t\t\tconst out = block.get_unique_name('out');\n\n\t\t\t\tblock.chunks.init.push(b`\n\t\t\t\t\tconst ${out} = i => @transition_out(${iterations}[i], 1, 1, () => {\n\t\t\t\t\t\t${iterations}[i] = null;\n\t\t\t\t\t});\n\t\t\t\t`);\n\t\t\t\tremove_old_blocks = b`\n\t\t\t\t\t@group_outros();\n\t\t\t\t\tfor (#i = ${data_length}; #i < ${view_length}; #i += 1) {\n\t\t\t\t\t\t${out}(#i);\n\t\t\t\t\t}\n\t\t\t\t\t@check_outros();\n\t\t\t\t`;\n\t\t\t} else {\n\t\t\t\tremove_old_blocks = b`\n\t\t\t\t\tfor (${this.block.has_update_method ? null : x`#i = ${data_length}`}; #i < ${this.block.has_update_method ? view_length : '#old_length'}; #i += 1) {\n\t\t\t\t\t\t${iterations}[#i].d(1);\n\t\t\t\t\t}\n\t\t\t\t\t${!fixed_length && b`${view_length} = ${data_length};`}\n\t\t\t\t`;\n\t\t\t}\n\n\t\t\t// We declare `i` as block scoped here, as the `remove_old_blocks` code\n\t\t\t// may rely on continuing where this iteration stopped.\n\t\t\tconst update = b`\n\t\t\t\t${!this.block.has_update_method && b`const #old_length = ${this.vars.each_block_value}.length;`}\n\t\t\t\t${this.vars.each_block_value} = ${snippet};\n\t\t\t\t${this.renderer.options.dev && b`@validate_each_argument(${this.vars.each_block_value});`}\n\n\t\t\t\tlet #i;\n\t\t\t\tfor (#i = ${start}; #i < ${data_length}; #i += 1) {\n\t\t\t\t\tconst child_ctx = ${this.vars.get_each_context}(#ctx, ${this.vars.each_block_value}, #i);\n\n\t\t\t\t\t${for_loop_body}\n\t\t\t\t}\n\n\t\t\t\t${remove_old_blocks}\n\t\t\t`;\n\n\t\t\tthis.updates.push(update);\n\t\t}\n\n\t\tif (this.block.has_outros) {\n\t\t\tblock.chunks.outro.push(b`\n\t\t\t\t${iterations} = ${iterations}.filter(@_Boolean);\n\t\t\t\tfor (let #i = 0; #i < ${view_length}; #i += 1) {\n\t\t\t\t\t@transition_out(${iterations}[#i]);\n\t\t\t\t}\n\t\t\t`);\n\t\t}\n\n\t\tblock.chunks.destroy.push(b`@destroy_each(${iterations}, detaching);`);\n\t}\n}\n","export function string_literal(data: string) {\n\treturn {\n\t\ttype: 'Literal',\n\t\tvalue: data\n\t};\n}\n\nexport function escape(data: string, { only_escape_at_symbol = false } = {}) {\n\treturn data.replace(only_escape_at_symbol ? /@+/g : /(@+|#+)/g, (match: string) => {\n\t\treturn match + match[0];\n\t});\n}\n\nconst escaped = {\n\t'\"': '&quot;',\n\t\"'\": '&#39;',\n\t'&': '&amp;',\n\t'<': '&lt;',\n\t'>': '&gt;'\n};\n\nexport function escape_html(html) {\n\treturn String(html).replace(/[\"'&<>]/g, match => escaped[match]);\n}\n\nexport function escape_template(str) {\n\treturn str.replace(/(\\${|`|\\\\)/g, '\\\\$1');\n}\n","import Renderer from '../Renderer';\nimport Block from '../Block';\nimport Text from '../../nodes/Text';\nimport Wrapper from './shared/Wrapper';\nimport { x } from 'code-red';\nimport { Identifier } from 'estree';\n\nexport default class TextWrapper extends Wrapper {\n\tnode: Text;\n\tdata: string;\n\tskip: boolean;\n\tvar: Identifier;\n\n\tconstructor(\n\t\trenderer: Renderer,\n\t\tblock: Block,\n\t\tparent: Wrapper,\n\t\tnode: Text,\n\t\tdata: string\n\t) {\n\t\tsuper(renderer, block, parent, node);\n\n\t\tthis.skip = this.node.should_skip();\n\t\tthis.data = data;\n\t\tthis.var = (this.skip ? null : x`t`) as unknown as Identifier;\n\t}\n\n\tuse_space() {\n\t\tif (this.renderer.component.component_options.preserveWhitespace) return false;\n\t\tif (/[\\S\\u00A0]/.test(this.data)) return false;\n\n\t\tlet node = this.parent && this.parent.node;\n\t\twhile (node) {\n\t\t\tif (node.type === 'Element' && node.name === 'pre') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tnode = node.parent;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\trender(block: Block, parent_node: Identifier, parent_nodes: Identifier) {\n\t\tif (this.skip) return;\n\t\tconst use_space = this.use_space();\n\n\t\tblock.add_element(\n\t\t\tthis.var,\n\t\t\tuse_space ? x`@space()` : x`@text(\"${this.data}\")`,\n\t\t\tparent_nodes && (use_space ? x`@claim_space(${parent_nodes})` : x`@claim_text(${parent_nodes}, \"${this.data}\")`),\n\t\t\tparent_node as Identifier\n\t\t);\n\t}\n}\n","const svg_attributes = 'accent-height accumulate additive alignment-baseline allowReorder alphabetic amplitude arabic-form ascent attributeName attributeType autoReverse azimuth baseFrequency baseline-shift baseProfile bbox begin bias by calcMode cap-height class clip clipPathUnits clip-path clip-rule color color-interpolation color-interpolation-filters color-profile color-rendering contentScriptType contentStyleType cursor cx cy d decelerate descent diffuseConstant direction display divisor dominant-baseline dur dx dy edgeMode elevation enable-background end exponent externalResourcesRequired fill fill-opacity fill-rule filter filterRes filterUnits flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight format from fr fx fy g1 g2 glyph-name glyph-orientation-horizontal glyph-orientation-vertical glyphRef gradientTransform gradientUnits hanging height href horiz-adv-x horiz-origin-x id ideographic image-rendering in in2 intercept k k1 k2 k3 k4 kernelMatrix kernelUnitLength kerning keyPoints keySplines keyTimes lang lengthAdjust letter-spacing lighting-color limitingConeAngle local marker-end marker-mid marker-start markerHeight markerUnits markerWidth mask maskContentUnits maskUnits mathematical max media method min mode name numOctaves offset onabort onactivate onbegin onclick onend onerror onfocusin onfocusout onload onmousedown onmousemove onmouseout onmouseover onmouseup onrepeat onresize onscroll onunload opacity operator order orient orientation origin overflow overline-position overline-thickness panose-1 paint-order pathLength patternContentUnits patternTransform patternUnits pointer-events points pointsAtX pointsAtY pointsAtZ preserveAlpha preserveAspectRatio primitiveUnits r radius refX refY rendering-intent repeatCount repeatDur requiredExtensions requiredFeatures restart result rotate rx ry scale seed shape-rendering slope spacing specularConstant specularExponent speed spreadMethod startOffset stdDeviation stemh stemv stitchTiles stop-color stop-opacity strikethrough-position strikethrough-thickness string stroke stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width style surfaceScale systemLanguage tabindex tableValues target targetX targetY text-anchor text-decoration text-rendering textLength to transform type u1 u2 underline-position underline-thickness unicode unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical values version vert-adv-y vert-origin-x vert-origin-y viewBox viewTarget visibility width widths word-spacing writing-mode x x-height x1 x2 xChannelSelector xlink:actuate xlink:arcrole xlink:href xlink:role xlink:show xlink:title xlink:type xml:base xml:lang xml:space y y1 y2 yChannelSelector z zoomAndPan'.split(' ');\n\nconst svg_attribute_lookup = new Map();\n\nsvg_attributes.forEach(name => {\n\tsvg_attribute_lookup.set(name.toLowerCase(), name);\n});\n\nexport default function fix_attribute_casing(name) {\n\tname = name.toLowerCase();\n\treturn svg_attribute_lookup.get(name) || name;\n}\n","export const html = 'http://www.w3.org/1999/xhtml';\nexport const mathml = 'http://www.w3.org/1998/Math/MathML';\nexport const svg = 'http://www.w3.org/2000/svg';\nexport const xlink = 'http://www.w3.org/1999/xlink';\nexport const xml = 'http://www.w3.org/XML/1998/namespace';\nexport const xmlns = 'http://www.w3.org/2000/xmlns';\n\nexport const valid_namespaces = [\n\t'html',\n\t'mathml',\n\t'svg',\n\t'xlink',\n\t'xml',\n\t'xmlns',\n\thtml,\n\tmathml,\n\tsvg,\n\txlink,\n\txml,\n\txmlns\n];\n\nexport const namespaces: Record<string, string> = { html, mathml, svg, xlink, xml, xmlns };\n","import AttributeWrapper from './Attribute';\nimport BindingWrapper from './Binding';\nimport ElementWrapper from './index';\n\nexport default function handle_select_value_binding(\n\tattr: AttributeWrapper | BindingWrapper,\n\tdependencies: Set<string>\n) {\n\tconst { parent } = attr;\n\tif (parent.node.name === 'select') {\n\t\t(parent as ElementWrapper).select_binding_dependencies = dependencies;\n\t\tdependencies.forEach((prop: string) => {\n\t\t\tparent.renderer.component.indirect_dependencies.set(prop, new Set());\n\t\t});\n\t}\n}\n","import Attribute from '../../../nodes/Attribute';\nimport Block from '../../Block';\nimport fix_attribute_casing from './fix_attribute_casing';\nimport ElementWrapper from './index';\nimport { string_literal } from '../../../utils/stringify';\nimport { b, x } from 'code-red';\nimport Expression from '../../../nodes/shared/Expression';\nimport Text from '../../../nodes/Text';\nimport handle_select_value_binding from './handle_select_value_binding';\nimport { Identifier, Node } from 'estree';\n\nexport class BaseAttributeWrapper {\n\tnode: Attribute;\n\tparent: ElementWrapper;\n\n\tconstructor(parent: ElementWrapper, block: Block, node: Attribute) {\n\t\tthis.node = node;\n\t\tthis.parent = parent;\n\n\t\tif (node.dependencies.size > 0) {\n\t\t\tparent.cannot_use_innerhtml();\n\t\t\tparent.not_static_content();\n\n\t\t\tblock.add_dependencies(node.dependencies);\n\t\t}\n\t}\n\n\trender(_block: Block) {}\n}\n\nexport default class AttributeWrapper extends BaseAttributeWrapper {\n\tnode: Attribute;\n\tparent: ElementWrapper;\n\tmetadata: any;\n\tname: string;\n\tproperty_name: string;\n\tis_indirectly_bound_value: boolean;\n\tis_src: boolean;\n\tis_select_value_attribute: boolean;\n\tis_input_value: boolean;\n\tshould_cache: boolean;\n\tlast: Identifier;\n\n\tconstructor(parent: ElementWrapper, block: Block, node: Attribute) {\n\t\tsuper(parent, block, node);\n\n\t\tif (node.dependencies.size > 0) {\n\t\t\t// special case — <option value={foo}> — see below\n\t\t\tif (this.parent.node.name === 'option' && node.name === 'value') {\n\t\t\t\tlet select: ElementWrapper = this.parent;\n\t\t\t\twhile (select && (select.node.type !== 'Element' || select.node.name !== 'select')) {\n\t\t\t\t\t// @ts-ignore todo: doublecheck this, but looks to be correct\n\t\t\t\t\tselect = select.parent;\n\t\t\t\t}\n\n\t\t\t\tif (select && select.select_binding_dependencies) {\n\t\t\t\t\tselect.select_binding_dependencies.forEach(prop => {\n\t\t\t\t\t\tthis.node.dependencies.forEach((dependency: string) => {\n\t\t\t\t\t\t\tthis.parent.renderer.component.indirect_dependencies.get(prop).add(dependency);\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (node.name === 'value') {\n\t\t\t\thandle_select_value_binding(this, node.dependencies);\n\t\t\t}\n\t\t}\n\n\t\tthis.name = fix_attribute_casing(this.node.name);\n\t\tthis.metadata = this.get_metadata();\n\t\tthis.is_indirectly_bound_value = is_indirectly_bound_value(this);\n\t\tthis.property_name = this.is_indirectly_bound_value\n\t\t\t? '__value'\n\t\t\t: this.metadata && this.metadata.property_name;\n\t\tthis.is_src = this.name === 'src'; // TODO retire this exception in favour of https://github.com/sveltejs/svelte/issues/3750\n\t\tthis.is_select_value_attribute = this.name === 'value' && this.parent.node.name === 'select';\n\t\tthis.is_input_value = this.name === 'value' && this.parent.node.name === 'input';\n\t\tthis.should_cache = should_cache(this);\n\t}\n\n\trender(block: Block) {\n\t\tconst element = this.parent;\n\t\tconst { name, property_name, should_cache, is_indirectly_bound_value } = this;\n\n\t\t// xlink is a special case... we could maybe extend this to generic\n\t\t// namespaced attributes but I'm not sure that's applicable in\n\t\t// HTML5?\n\t\tconst method = /-/.test(element.node.name)\n\t\t\t? '@set_custom_element_data'\n\t\t\t: name.slice(0, 6) === 'xlink:'\n\t\t\t\t? '@xlink_attr'\n\t\t\t\t: '@attr';\n\n\t\tconst is_legacy_input_type = element.renderer.component.compile_options.legacy && name === 'type' && this.parent.node.name === 'input';\n\n\t\tconst dependencies = this.get_dependencies();\n\t\tconst value = this.get_value(block);\n\n\t\tlet updater;\n\t\tconst init = this.get_init(block, value);\n\n\t\tif (is_legacy_input_type) {\n\t\t\tblock.chunks.hydrate.push(\n\t\t\t\tb`@set_input_type(${element.var}, ${init});`\n\t\t\t);\n\t\t\tupdater = b`@set_input_type(${element.var}, ${should_cache ? this.last : value});`;\n\t\t} else if (this.is_select_value_attribute) {\n\t\t\t// annoying special case\n\t\t\tconst is_multiple_select = element.node.get_static_attribute_value('multiple');\n\n\t\t\tif (is_multiple_select) {\n\t\t\t\tupdater = b`@select_options(${element.var}, ${value});`;\n\t\t\t} else {\n\t\t\t\tupdater = b`@select_option(${element.var}, ${value});`;\n\t\t\t}\n\n\t\t\tblock.chunks.mount.push(b`\n\t\t\t\t${updater}\n\t\t\t`);\n\t\t} else if (this.is_src) {\n\t\t\tblock.chunks.hydrate.push(\n\t\t\t\tb`if (${element.var}.src !== ${init}) ${method}(${element.var}, \"${name}\", ${this.last});`\n\t\t\t);\n\t\t\tupdater = b`${method}(${element.var}, \"${name}\", ${should_cache ? this.last : value});`;\n\t\t} else if (property_name) {\n\t\t\tblock.chunks.hydrate.push(\n\t\t\t\tb`${element.var}.${property_name} = ${init};`\n\t\t\t);\n\t\t\tupdater = block.renderer.options.dev\n\t\t\t\t? b`@prop_dev(${element.var}, \"${property_name}\", ${should_cache ? this.last : value});`\n\t\t\t\t: b`${element.var}.${property_name} = ${should_cache ? this.last : value};`;\n\t\t} else {\n\t\t\tblock.chunks.hydrate.push(\n\t\t\t\tb`${method}(${element.var}, \"${name}\", ${init});`\n\t\t\t);\n\t\t\tupdater = b`${method}(${element.var}, \"${name}\", ${should_cache ? this.last : value});`;\n\t\t}\n\n\t\tif (is_indirectly_bound_value) {\n\t\t\tconst update_value = b`${element.var}.value = ${element.var}.__value;`;\n\t\t\tblock.chunks.hydrate.push(update_value);\n\n\t\t\tupdater = b`\n\t\t\t\t${updater}\n\t\t\t\t${update_value};\n\t\t\t`;\n\t\t}\n\n\t\tif (dependencies.length > 0) {\n\t\t\tconst condition = this.get_dom_update_conditions(block, block.renderer.dirty(dependencies));\n\n\t\t\tblock.chunks.update.push(b`\n\t\t\t\tif (${condition}) {\n\t\t\t\t\t${updater}\n\t\t\t\t}`);\n\t\t}\n\n\t\t// special case – autofocus. has to be handled in a bit of a weird way\n\t\tif (this.node.is_true && name === 'autofocus') {\n\t\t\tblock.autofocus = element.var;\n\t\t}\n\t}\n\n\tget_init(block: Block, value) {\n\t\tthis.last = this.should_cache && block.get_unique_name(\n\t\t\t`${this.parent.var.name}_${this.name.replace(/[^a-zA-Z_$]/g, '_')}_value`\n\t\t);\n\n\t\tif (this.should_cache) block.add_variable(this.last);\n\n\t\treturn this.should_cache ? x`${this.last} = ${value}` : value;\n\t}\n\n\tget_dom_update_conditions(block: Block, dependency_condition: Node) {\n\t\tconst { property_name, should_cache, last } = this;\n\t\tconst element = this.parent;\n\t\tconst value = this.get_value(block);\n\n\t\tlet condition = dependency_condition;\n\n\t\tif (should_cache) {\n\t\t\tcondition = this.is_src\n\t\t\t\t? x`${condition} && (${element.var}.src !== (${last} = ${value}))`\n\t\t\t\t: x`${condition} && (${last} !== (${last} = ${value}))`;\n\t\t}\n\n\t\tif (this.is_input_value) {\n\t\t\tconst type = element.node.get_static_attribute_value('type');\n\n\t\t\tif (type === null || type === '' || type === 'text' || type === 'email' || type === 'password') {\n\t\t\t\tcondition = x`${condition} && ${element.var}.${property_name} !== ${should_cache ? last : value}`;\n\t\t\t}\n\t\t}\n\n\t\tif (block.has_outros) {\n\t\t\tcondition = x`!#current || ${condition}`;\n\t\t}\n\n\t\treturn condition;\n\t}\n\n\tget_dependencies() {\n\t\tconst node_dependencies = this.node.get_dependencies();\n\t\tconst dependencies = new Set(node_dependencies);\n\n\t\tnode_dependencies.forEach((prop: string) => {\n\t\t\tconst indirect_dependencies = this.parent.renderer.component.indirect_dependencies.get(prop);\n\t\t\tif (indirect_dependencies) {\n\t\t\t\tindirect_dependencies.forEach(indirect_dependency => {\n\t\t\t\t\tdependencies.add(indirect_dependency);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\treturn Array.from(dependencies);\n\t}\n\n\tget_metadata() {\n\t\tif (this.parent.node.namespace) return null;\n\t\tconst metadata = attribute_lookup[this.name];\n\t\tif (metadata && metadata.applies_to && !metadata.applies_to.includes(this.parent.node.name)) return null;\n\t\treturn metadata;\n\t}\n\n\tget_value(block) {\n\t\tif (this.node.is_true) {\n\t\t\tif (this.metadata && boolean_attribute.has(this.metadata.property_name.toLowerCase())) {\n\t\t\t\treturn x`true`;\n\t\t\t}\n\t\t\treturn x`\"\"`;\n\t\t}\n\t\tif (this.node.chunks.length === 0) return x`\"\"`;\n\n\t\t// TODO some of this code is repeated in Tag.ts — would be good to\n\t\t// DRY it out if that's possible without introducing crazy indirection\n\t\tif (this.node.chunks.length === 1) {\n\t\t\treturn this.node.chunks[0].type === 'Text'\n\t\t\t\t? string_literal((this.node.chunks[0] as Text).data)\n\t\t\t\t: (this.node.chunks[0] as Expression).manipulate(block);\n\t\t}\n\n\t\tlet value = this.node.name === 'class'\n\t\t\t? this.get_class_name_text(block)\n\t\t\t: this.render_chunks(block).reduce((lhs, rhs) => x`${lhs} + ${rhs}`);\n\n\t\t// '{foo} {bar}' — treat as string concatenation\n\t\tif (this.node.chunks[0].type !== 'Text') {\n\t\t\tvalue = x`\"\" + ${value}`;\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tget_class_name_text(block) {\n\t\tconst scoped_css = this.node.chunks.some((chunk: Text) => chunk.synthetic);\n\t\tconst rendered = this.render_chunks(block);\n\n\t\tif (scoped_css && rendered.length === 2) {\n\t\t\t// we have a situation like class={possiblyUndefined}\n\t\t\trendered[0] = x`@null_to_empty(${rendered[0]})`;\n\t\t}\n\n\t\treturn rendered.reduce((lhs, rhs) => x`${lhs} + ${rhs}`);\n\t}\n\n\trender_chunks(block: Block) {\n\t\treturn this.node.chunks.map((chunk) => {\n\t\t\tif (chunk.type === 'Text') {\n\t\t\t\treturn string_literal(chunk.data);\n\t\t\t}\n\n\t\t\treturn chunk.manipulate(block);\n\t\t});\n\t}\n\n\tstringify() {\n\t\tif (this.node.is_true) return '';\n\n\t\tconst value = this.node.chunks;\n\t\tif (value.length === 0) return '=\"\"';\n\n\t\treturn `=\"${value.map(chunk => {\n\t\t\treturn chunk.type === 'Text'\n\t\t\t\t? chunk.data.replace(/\"/g, '\\\\\"')\n\t\t\t\t: `\\${${chunk.manipulate()}}`;\n\t\t}).join('')}\"`;\n\t}\n}\n\n// source: https://html.spec.whatwg.org/multipage/indices.html\nconst attribute_lookup = {\n\tallowfullscreen: { property_name: 'allowFullscreen', applies_to: ['iframe'] },\n\tallowpaymentrequest: { property_name: 'allowPaymentRequest', applies_to: ['iframe'] },\n\tasync: { applies_to: ['script'] },\n\tautofocus: { applies_to: ['button', 'input', 'keygen', 'select', 'textarea'] },\n\tautoplay: { applies_to: ['audio', 'video'] },\n\tchecked: { applies_to: ['input'] },\n\tcontrols: { applies_to: ['audio', 'video'] },\n\tdefault: { applies_to: ['track'] },\n\tdefer: { applies_to: ['script'] },\n\tdisabled: {\n\t\tapplies_to: [\n\t\t\t'button',\n\t\t\t'fieldset',\n\t\t\t'input',\n\t\t\t'keygen',\n\t\t\t'optgroup',\n\t\t\t'option',\n\t\t\t'select',\n\t\t\t'textarea'\n\t\t]\n\t},\n\tformnovalidate: { property_name: 'formNoValidate', applies_to: ['button', 'input'] },\n\thidden: {},\n\tindeterminate: { applies_to: ['input'] },\n\tismap: { property_name: 'isMap', applies_to: ['img'] },\n\tloop: { applies_to: ['audio', 'bgsound', 'video'] },\n\tmultiple: { applies_to: ['input', 'select'] },\n\tmuted: { applies_to: ['audio', 'video'] },\n\tnomodule: { property_name: 'noModule', applies_to: ['script'] },\n\tnovalidate: { property_name: 'noValidate', applies_to: ['form'] },\n\topen: { applies_to: ['details', 'dialog'] },\n\tplaysinline: { property_name: 'playsInline', applies_to: ['video'] },\n\treadonly: { property_name: 'readOnly', applies_to: ['input', 'textarea'] },\n\trequired: { applies_to: ['input', 'select', 'textarea'] },\n\treversed: { applies_to: ['ol'] },\n\tselected: { applies_to: ['option'] },\n\tvalue: {\n\t\tapplies_to: [\n\t\t\t'button',\n\t\t\t'option',\n\t\t\t'input',\n\t\t\t'li',\n\t\t\t'meter',\n\t\t\t'progress',\n\t\t\t'param',\n\t\t\t'select',\n\t\t\t'textarea'\n\t\t]\n\t}\n};\n\nObject.keys(attribute_lookup).forEach(name => {\n\tconst metadata = attribute_lookup[name];\n\tif (!metadata.property_name) metadata.property_name = name;\n});\n\n// source: https://html.spec.whatwg.org/multipage/indices.html\nconst boolean_attribute = new Set([\n\t'allowfullscreen',\n\t'allowpaymentrequest',\n\t'async',\n\t'autofocus',\n\t'autoplay',\n\t'checked',\n\t'controls',\n\t'default',\n\t'defer',\n\t'disabled',\n\t'formnovalidate',\n\t'hidden',\n\t'ismap',\n\t'itemscope',\n\t'loop',\n\t'multiple',\n\t'muted',\n\t'nomodule',\n\t'novalidate',\n\t'open',\n\t'playsinline',\n\t'readonly',\n\t'required',\n\t'reversed',\n\t'selected'\n]);\n\nfunction should_cache(attribute: AttributeWrapper) {\n\treturn attribute.is_src || attribute.node.should_cache();\n}\n\nfunction is_indirectly_bound_value(attribute: AttributeWrapper) {\n\tconst element = attribute.parent;\n\treturn attribute.name === 'value' &&\n\t\t(element.node.name === 'option' || // TODO check it's actually bound\n\t\t\t(element.node.name === 'input' &&\n\t\t\t\telement.node.bindings.some(\n\t\t\t\t\t(binding) =>\n\t\t\t\t\t\t/checked|group/.test(binding.name)\n\t\t\t\t)));\n}\n","import { b, x } from 'code-red';\nimport Attribute from '../../../nodes/Attribute';\nimport Block from '../../Block';\nimport AttributeWrapper from './Attribute';\nimport ElementWrapper from '../Element';\nimport { string_literal } from '../../../utils/stringify';\nimport add_to_set from '../../../utils/add_to_set';\nimport Expression from '../../../nodes/shared/Expression';\nimport Text from '../../../nodes/Text';\n\nexport interface StyleProp {\n\tkey: string;\n\tvalue: Array<Text|Expression>;\n\timportant: boolean;\n}\n\nexport default class StyleAttributeWrapper extends AttributeWrapper {\n\tnode: Attribute;\n\tparent: ElementWrapper;\n\n\trender(block: Block) {\n\t\tconst style_props = optimize_style(this.node.chunks);\n\t\tif (!style_props) return super.render(block);\n\n\t\tstyle_props.forEach((prop: StyleProp) => {\n\t\t\tlet value;\n\n\t\t\tif (is_dynamic(prop.value)) {\n\t\t\t\tconst prop_dependencies: Set<string> = new Set();\n\n\t\t\t\tvalue = prop.value\n\t\t\t\t\t.map(chunk => {\n\t\t\t\t\t\tif (chunk.type === 'Text') {\n\t\t\t\t\t\t\treturn string_literal(chunk.data);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tadd_to_set(prop_dependencies, chunk.dynamic_dependencies());\n\t\t\t\t\t\t\treturn chunk.manipulate(block);\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.reduce((lhs, rhs) => x`${lhs} + ${rhs}`);\n\n\t\t\t\t// TODO is this necessary? style.setProperty always treats value as string, no?\n\t\t\t\t// if (prop.value.length === 1 || prop.value[0].type !== 'Text') {\n\t\t\t\t// \tvalue = x`\"\" + ${value}`;\n\t\t\t\t// }\n\n\t\t\t\tif (prop_dependencies.size) {\n\t\t\t\t\tlet condition = block.renderer.dirty(Array.from(prop_dependencies));\n\n\t\t\t\t\tif (block.has_outros) {\n\t\t\t\t\t\tcondition = x`!#current || ${condition}`;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst update = b`\n\t\t\t\t\t\tif (${condition}) {\n\t\t\t\t\t\t\t@set_style(${this.parent.var}, \"${prop.key}\", ${value}, ${prop.important ? 1 : null});\n\t\t\t\t\t\t}`;\n\n\t\t\t\t\tblock.chunks.update.push(update);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvalue = string_literal((prop.value[0] as Text).data);\n\t\t\t}\n\n\t\t\tblock.chunks.hydrate.push(\n\t\t\t\tb`@set_style(${this.parent.var}, \"${prop.key}\", ${value}, ${prop.important ? 1 : null});`\n\t\t\t);\n\t\t});\n\t}\n}\n\nfunction optimize_style(value: Array<Text|Expression>) {\n\tconst props: StyleProp[] = [];\n\tlet chunks = value.slice();\n\n\twhile (chunks.length) {\n\t\tconst chunk = chunks[0];\n\n\t\tif (chunk.type !== 'Text') return null;\n\n\t\tconst key_match = /^\\s*([\\w-]+):\\s*/.exec(chunk.data);\n\t\tif (!key_match) return null;\n\n\t\tconst key = key_match[1];\n\n\t\tconst offset = key_match.index + key_match[0].length;\n\t\tconst remaining_data = chunk.data.slice(offset);\n\n\t\tif (remaining_data) {\n\t\t\tchunks[0] = {\n\t\t\t\tstart: chunk.start + offset,\n\t\t\t\tend: chunk.end,\n\t\t\t\ttype: 'Text',\n\t\t\t\tdata: remaining_data\n\t\t\t} as Text;\n\t\t} else {\n\t\t\tchunks.shift();\n\t\t}\n\n\t\tconst result = get_style_value(chunks);\n\n\t\tprops.push({ key, value: result.value, important: result.important });\n\t\tchunks = result.chunks;\n\t}\n\n\treturn props;\n}\n\nfunction get_style_value(chunks: Array<Text | Expression>) {\n\tconst value: Array<Text|Expression> = [];\n\n\tlet in_url = false;\n\tlet quote_mark = null;\n\tlet escaped = false;\n\tlet closed = false;\n\n\twhile (chunks.length && !closed) {\n\t\tconst chunk = chunks.shift();\n\n\t\tif (chunk.type === 'Text') {\n\t\t\tlet c = 0;\n\t\t\twhile (c < chunk.data.length) {\n\t\t\t\tconst char = chunk.data[c];\n\n\t\t\t\tif (escaped) {\n\t\t\t\t\tescaped = false;\n\t\t\t\t} else if (char === '\\\\') {\n\t\t\t\t\tescaped = true;\n\t\t\t\t} else if (char === quote_mark) {\n\t\t\t\t\tquote_mark = null;\n\t\t\t\t} else if (char === '\"' || char === \"'\") {\n\t\t\t\t\tquote_mark = char;\n\t\t\t\t} else if (char === ')' && in_url) {\n\t\t\t\t\tin_url = false;\n\t\t\t\t} else if (char === 'u' && chunk.data.slice(c, c + 4) === 'url(') {\n\t\t\t\t\tin_url = true;\n\t\t\t\t} else if (char === ';' && !in_url && !quote_mark) {\n\t\t\t\t\tclosed = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tc += 1;\n\t\t\t}\n\n\t\t\tif (c > 0) {\n\t\t\t\tvalue.push({\n\t\t\t\t\ttype: 'Text',\n\t\t\t\t\tstart: chunk.start,\n\t\t\t\t\tend: chunk.start + c,\n\t\t\t\t\tdata: chunk.data.slice(0, c)\n\t\t\t\t} as Text);\n\t\t\t}\n\n\t\t\twhile (/[;\\s]/.test(chunk.data[c])) c += 1;\n\t\t\tconst remaining_data = chunk.data.slice(c);\n\n\t\t\tif (remaining_data) {\n\t\t\t\tchunks.unshift({\n\t\t\t\t\tstart: chunk.start + c,\n\t\t\t\t\tend: chunk.end,\n\t\t\t\t\ttype: 'Text',\n\t\t\t\t\tdata: remaining_data\n\t\t\t\t} as Text);\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} else {\n\t\t\tvalue.push(chunk);\n\t\t}\n\t}\n\n\tlet important = false;\n\n\tconst last_chunk = value[value.length - 1];\n\tif (last_chunk && last_chunk.type === 'Text' && /\\s*!important\\s*$/.test(last_chunk.data)) {\n\t\timportant = true;\n\t\tlast_chunk.data = last_chunk.data.replace(/\\s*!important\\s*$/, '');\n\t\tif (!last_chunk.data) value.pop();\n\t}\n\n\treturn {\n\t\tchunks,\n\t\tvalue,\n\t\timportant\n\t};\n}\n\nfunction is_dynamic(value: Array<Text|Expression>) {\n\treturn value.length > 1 || value[0].type !== 'Text';\n}\n","import { BaseAttributeWrapper } from './Attribute';\n\nexport default class SpreadAttributeWrapper extends BaseAttributeWrapper {}\n","import { Node } from 'estree';\n\nexport default function replace_object(node: Node, replacement: Node) {\n\tif (node.type === 'Identifier') return replacement;\n\n\tconst ancestor = node;\n\tlet parent;\n\twhile (node.type === 'MemberExpression') {\n\t\tparent = node;\n\t\tnode = node.object;\n\t}\n\tparent.object = replacement;\n\treturn ancestor;\n}\n","import { Node, Identifier } from 'estree';\n\nexport default function flatten_reference(node: Node) {\n\tconst nodes = [];\n\tconst parts = [];\n\t\n\twhile (node.type === 'MemberExpression') {\n\t\tnodes.unshift(node.property);\n\n\t\tif (!node.computed) {\n\t\t\tparts.unshift((node.property as Identifier).name);\n\t\t} else {\n\t\t\tconst computed_property = to_string(node.property);\n\t\t\tif (computed_property) {\n\t\t\t\tparts.unshift(`[${computed_property}]`);\n\t\t\t}\n\t\t}\n\t\tnode = node.object;\n\t}\n\n\tconst name = node.type === 'Identifier'\n\t\t? node.name\n\t\t: node.type === 'ThisExpression' ? 'this' : null;\n\n\tnodes.unshift(node);\n\n\tparts.unshift(name);\n\n\treturn { name, nodes, parts };\n}\n\nfunction to_string(node: Node) {\n\tswitch (node.type) {\n\t\tcase 'Literal':\n\t\t\treturn String(node.value);\n\t\tcase 'Identifier':\n\t\t\treturn node.name;\n\t}\n}\n","import EachBlock from '../../../nodes/EachBlock';\nimport InlineComponentWrapper from '../InlineComponent';\nimport ElementWrapper from '../Element';\nimport Binding from '../../../nodes/Binding';\n\nexport default function mark_each_block_bindings(\n\tparent: ElementWrapper | InlineComponentWrapper,\n\tbinding: Binding\n) {\n\t// we need to ensure that the each block creates a context including\n\t// the list and the index, if they're not otherwise referenced\n\tbinding.expression.references.forEach(name => {\n\t\tconst each_block = parent.node.scope.get_owner(name);\n\t\tif (each_block) {\n\t\t\t(each_block as EachBlock).has_binding = true;\n\t\t}\n\t});\n\n\tif (binding.name === 'group') {\n\t\t// for `<input bind:group={} >`, we make sure that all the each blocks creates context with `index`\n\t\tfor (const name of binding.expression.contextual_dependencies) {\n\t\t\tconst each_block = parent.node.scope.get_owner(name);\n\t\t\t(each_block as EachBlock).has_index_binding = true;\n\t\t}\n\t}\n}\n","import { b, x } from 'code-red';\nimport Binding from '../../../nodes/Binding';\nimport ElementWrapper from '../Element';\nimport InlineComponentWrapper from '../InlineComponent';\nimport get_object from '../../../utils/get_object';\nimport replace_object from '../../../utils/replace_object';\nimport Block from '../../Block';\nimport Renderer from '../../Renderer';\nimport flatten_reference from '../../../utils/flatten_reference';\nimport { Node, Identifier } from 'estree';\nimport add_to_set from '../../../utils/add_to_set';\nimport mark_each_block_bindings from '../shared/mark_each_block_bindings';\nimport handle_select_value_binding from './handle_select_value_binding';\n\nexport default class BindingWrapper {\n\tnode: Binding;\n\tparent: ElementWrapper | InlineComponentWrapper;\n\n\tobject: string;\n\thandler: {\n\t\tuses_context: boolean;\n\t\tmutation: (Node | Node[]);\n\t\tcontextual_dependencies: Set<string>;\n\t\tlhs?: Node;\n\t};\n\tsnippet: Node;\n\tis_readonly: boolean;\n\tneeds_lock: boolean;\n\n\tconstructor(block: Block, node: Binding, parent: ElementWrapper | InlineComponentWrapper) {\n\t\tthis.node = node;\n\t\tthis.parent = parent;\n\n\t\tconst { dependencies } = this.node.expression;\n\n\t\tblock.add_dependencies(dependencies);\n\n\t\t// TODO does this also apply to e.g. `<input type='checkbox' bind:group='foo'>`?\n\n\t\thandle_select_value_binding(this, dependencies);\n\n\t\tif (node.is_contextual) {\n\t\t\tmark_each_block_bindings(this.parent, this.node);\n\t\t}\n\n\t\tthis.object = get_object(this.node.expression.node).name;\n\n\t\t// view to model\n\t\tthis.handler = get_event_handler(this, parent.renderer, block, this.object, this.node.raw_expression);\n\n\t\tthis.snippet = this.node.expression.manipulate(block);\n\n\t\tthis.is_readonly = this.node.is_readonly;\n\n\t\tthis.needs_lock = this.node.name === 'currentTime'; // TODO others?\n\t}\n\n\tget_dependencies() {\n\t\tconst dependencies = new Set(this.node.expression.dependencies);\n\n\t\tthis.node.expression.dependencies.forEach((prop: string) => {\n\t\t\tconst indirect_dependencies = this.parent.renderer.component.indirect_dependencies.get(prop);\n\t\t\tif (indirect_dependencies) {\n\t\t\t\tindirect_dependencies.forEach(indirect_dependency => {\n\t\t\t\t\tdependencies.add(indirect_dependency);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\treturn dependencies;\n\t}\n\n\tis_readonly_media_attribute() {\n\t\treturn this.node.is_readonly_media_attribute();\n\t}\n\n\trender(block: Block, lock: Identifier) {\n\t\tif (this.is_readonly) return;\n\n\t\tconst { parent } = this;\n\n\t\tconst update_conditions: any[] = this.needs_lock ? [x`!${lock}`] : [];\n\t\tconst mount_conditions: any[] = [];\n\n\t\tconst dependency_array = Array.from(this.get_dependencies());\n\n\t\tif (dependency_array.length > 0) {\n\t\t\tupdate_conditions.push(block.renderer.dirty(dependency_array));\n\t\t}\n\n\t\tif (parent.node.name === 'input') {\n\t\t\tconst type = parent.node.get_static_attribute_value('type');\n\n\t\t\tif (\n\t\t\t\ttype === null ||\n\t\t\t\ttype === '' ||\n\t\t\t\ttype === 'text' ||\n\t\t\t\ttype === 'email' ||\n\t\t\t\ttype === 'password'\n\t\t\t) {\n\t\t\t\tupdate_conditions.push(\n\t\t\t\t\tx`${parent.var}.${this.node.name} !== ${this.snippet}`\n\t\t\t\t);\n\t\t\t} else if (type === 'number') {\n\t\t\t\tupdate_conditions.push(\n\t\t\t\t\tx`@to_number(${parent.var}.${this.node.name}) !== ${this.snippet}`\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t// model to view\n\t\tlet update_dom = get_dom_updater(parent, this);\n\t\tlet mount_dom = update_dom;\n\n\t\t// special cases\n\t\tswitch (this.node.name) {\n\t\t\tcase 'group':\n\t\t\t{\n\t\t\t\tconst { binding_group, is_context, contexts, index } = get_binding_group(parent.renderer, this.node, block);\n\n\t\t\t\tblock.renderer.add_to_context('$$binding_groups');\n\n\t\t\t\tif (is_context) {\n\t\t\t\t\tif (contexts.length > 1) {\n\t\t\t\t\t\tlet binding_group = x`${block.renderer.reference('$$binding_groups')}[${index}]`;\n\t\t\t\t\t\tfor (const name of contexts.slice(0, -1)) {\n\t\t\t\t\t\t\tbinding_group = x`${binding_group}[${block.renderer.reference(name)}]`;\n\t\t\t\t\t\t\tblock.chunks.init.push(\n\t\t\t\t\t\t\t\tb`${binding_group} = ${binding_group} || [];`\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tblock.chunks.init.push(\n\t\t\t\t\t\tb`${binding_group(true)} = [];`\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tblock.chunks.hydrate.push(\n\t\t\t\t\tb`${binding_group(true)}.push(${parent.var});`\n\t\t\t\t);\n\n\t\t\t\tblock.chunks.destroy.push(\n\t\t\t\t\tb`${binding_group(true)}.splice(${binding_group(true)}.indexOf(${parent.var}), 1);`\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase 'textContent':\n\t\t\t\tupdate_conditions.push(x`${this.snippet} !== ${parent.var}.textContent`);\n\t\t\t\tmount_conditions.push(x`${this.snippet} !== void 0`);\n\t\t\t\tbreak;\n\n\t\t\tcase 'innerHTML':\n\t\t\t\tupdate_conditions.push(x`${this.snippet} !== ${parent.var}.innerHTML`);\n\t\t\t\tmount_conditions.push(x`${this.snippet} !== void 0`);\n\t\t\t\tbreak;\n\n\t\t\tcase 'currentTime':\n\t\t\t\tupdate_conditions.push(x`!@_isNaN(${this.snippet})`);\n\t\t\t\tmount_dom = null;\n\t\t\t\tbreak;\n\n\t\t\tcase 'playbackRate':\n\t\t\tcase 'volume':\n\t\t\t\tupdate_conditions.push(x`!@_isNaN(${this.snippet})`);\n\t\t\t\tmount_conditions.push(x`!@_isNaN(${this.snippet})`);\n\t\t\t\tbreak;\n\n\t\t\tcase 'paused':\n\t\t\t{\n\t\t\t\t// this is necessary to prevent audio restarting by itself\n\t\t\t\tconst last = block.get_unique_name(`${parent.var.name}_is_paused`);\n\t\t\t\tblock.add_variable(last, x`true`);\n\n\t\t\t\tupdate_conditions.push(x`${last} !== (${last} = ${this.snippet})`);\n\t\t\t\tupdate_dom = b`${parent.var}[${last} ? \"pause\" : \"play\"]();`;\n\t\t\t\tmount_dom = null;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase 'value':\n\t\t\t\tif (parent.node.get_static_attribute_value('type') === 'file') {\n\t\t\t\t\tupdate_dom = null;\n\t\t\t\t\tmount_dom = null;\n\t\t\t\t}\n\t\t}\n\n\t\tif (update_dom) {\n\t\t\tif (update_conditions.length > 0) {\n\t\t\t\tconst condition = update_conditions.reduce((lhs, rhs) => x`${lhs} && ${rhs}`);\n\n\t\t\t\tblock.chunks.update.push(b`\n\t\t\t\t\tif (${condition}) {\n\t\t\t\t\t\t${update_dom}\n\t\t\t\t\t}\n\t\t\t\t`);\n\t\t\t} else {\n\t\t\t\tblock.chunks.update.push(update_dom);\n\t\t\t}\n\t\t}\n\n\t\tif (mount_dom) {\n\t\t\tif (mount_conditions.length > 0) {\n\t\t\t\tconst condition = mount_conditions.reduce((lhs, rhs) => x`${lhs} && ${rhs}`);\n\n\t\t\t\tblock.chunks.mount.push(b`\n\t\t\t\t\tif (${condition}) {\n\t\t\t\t\t\t${mount_dom}\n\t\t\t\t\t}\n\t\t\t\t`);\n\t\t\t} else {\n\t\t\t\tblock.chunks.mount.push(mount_dom);\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction get_dom_updater(\n\telement: ElementWrapper | InlineComponentWrapper,\n\tbinding: BindingWrapper\n) {\n\tconst { node } = element;\n\n\tif (binding.is_readonly_media_attribute()) {\n\t\treturn null;\n\t}\n\n\tif (binding.node.name === 'this') {\n\t\treturn null;\n\t}\n\n\tif (node.name === 'select') {\n\t\treturn node.get_static_attribute_value('multiple') === true ?\n\t\t\tb`@select_options(${element.var}, ${binding.snippet})` :\n\t\t\tb`@select_option(${element.var}, ${binding.snippet})`;\n\t}\n\n\tif (binding.node.name === 'group') {\n\t\tconst type = node.get_static_attribute_value('type');\n\n\t\tconst condition = type === 'checkbox'\n\t\t\t? x`~${binding.snippet}.indexOf(${element.var}.__value)`\n\t\t\t: x`${element.var}.__value === ${binding.snippet}`;\n\n\t\treturn b`${element.var}.checked = ${condition};`;\n\t}\n\n\tif (binding.node.name === 'value') {\n\t\treturn b`@set_input_value(${element.var}, ${binding.snippet});`;\n\t}\n\n\treturn b`${element.var}.${binding.node.name} = ${binding.snippet};`;\n}\n\nfunction get_binding_group(renderer: Renderer, value: Binding, block: Block) {\n\tconst { parts } = flatten_reference(value.raw_expression);\n\tlet keypath = parts.join('.');\n\n\tconst contexts = [];\n\n\tfor (const dep of value.expression.contextual_dependencies) {\n\t\tconst context = block.bindings.get(dep);\n\t\tlet key;\n\t\tlet name;\n\t\tif (context) {\n\t\t\tkey = context.object.name;\n\t\t\tname = context.property.name;\n\t\t} else {\n\t\t\tkey = dep;\n\t\t\tname = dep;\n\t\t}\n\t\tkeypath = `${key}@${keypath}`;\n\t\tcontexts.push(name);\n\t}\n\n\tif (!renderer.binding_groups.has(keypath)) {\n\t\tconst index = renderer.binding_groups.size;\n\n\t\tcontexts.forEach(context => {\n\t\t\trenderer.add_to_context(context, true);\n\t\t});\n\n\t\trenderer.binding_groups.set(keypath, {\n\t\t\tbinding_group: (to_reference: boolean = false) => {\n\t\t\t\tlet binding_group = '$$binding_groups';\n\t\t\t\tlet _secondary_indexes = contexts;\n\n\t\t\t\tif (to_reference) {\n\t\t\t\t\tbinding_group = block.renderer.reference(binding_group);\n\t\t\t\t\t_secondary_indexes = _secondary_indexes.map(name => block.renderer.reference(name));\n\t\t\t\t}\n\n\t\t\t\tif (_secondary_indexes.length > 0) {\n\t\t\t\t\tlet obj = x`${binding_group}[${index}]`;\n\t\t\t\t\t_secondary_indexes.forEach(secondary_index => {\n\t\t\t\t\t\tobj = x`${obj}[${secondary_index}]`;\n\t\t\t\t\t});\n\t\t\t\t\treturn obj;\n\t\t\t\t} else {\n\t\t\t\t\treturn x`${binding_group}[${index}]`;\n\t\t\t\t}\n\t\t\t},\n\t\t\tis_context: contexts.length > 0,\n\t\t\tcontexts,\n\t\t\tindex\n\t\t});\n\t}\n\n\treturn renderer.binding_groups.get(keypath);\n}\n\nfunction get_event_handler(\n\tbinding: BindingWrapper,\n\trenderer: Renderer,\n\tblock: Block,\n\tname: string,\n\tlhs: Node\n): {\n\tuses_context: boolean;\n\tmutation: (Node | Node[]);\n\tcontextual_dependencies: Set<string>;\n\tlhs?: Node;\n} {\n\tconst contextual_dependencies = new Set<string>(binding.node.expression.contextual_dependencies);\n\n\tconst context = block.bindings.get(name);\n\tlet set_store;\n\n\tif (context) {\n\t\tconst { object, property, store, snippet } = context;\n\t\tlhs = replace_object(lhs, snippet);\n\t\tcontextual_dependencies.add(object.name);\n\t\tcontextual_dependencies.add(property.name);\n\t\tcontextual_dependencies.delete(name);\n\n\t\tif (store) {\n\t\t\tset_store = b`${store}.set(${`$${store}`});`;\n\t\t}\n\t} else {\n\t\tconst object = get_object(lhs);\n\t\tif (object.name[0] === '$') {\n\t\t\tconst store = object.name.slice(1);\n\t\t\tset_store = b`${store}.set(${object.name});`;\n\t\t}\n\t}\n\n\tconst value = get_value_from_dom(renderer, binding.parent, binding, block, contextual_dependencies);\n\n\tconst mutation = b`\n\t\t${lhs} = ${value};\n\t\t${set_store}\n\t`;\n\n\treturn {\n\t\tuses_context: binding.node.is_contextual || binding.node.expression.uses_context, // TODO this is messy\n\t\tmutation,\n\t\tcontextual_dependencies,\n\t\tlhs\n\t};\n}\n\nfunction get_value_from_dom(\n\trenderer: Renderer,\n\telement: ElementWrapper | InlineComponentWrapper,\n\tbinding: BindingWrapper,\n\tblock: Block,\n\tcontextual_dependencies: Set<string>\n) {\n\tconst { node } = element;\n\tconst { name } = binding.node;\n\n\tif (name === 'this') {\n\t\treturn x`$$value`;\n\t}\n\n\t// <select bind:value='selected>\n\tif (node.name === 'select') {\n\t\treturn node.get_static_attribute_value('multiple') === true ?\n\t\t\tx`@select_multiple_value(this)` :\n\t\t\tx`@select_value(this)`;\n\t}\n\n\tconst type = node.get_static_attribute_value('type');\n\n\t// <input type='checkbox' bind:group='foo'>\n\tif (name === 'group') {\n\t\tif (type === 'checkbox') {\n\t\t\tconst { binding_group, contexts } = get_binding_group(renderer, binding.node, block);\n\t\t\tadd_to_set(contextual_dependencies, contexts);\n\t\t\treturn x`@get_binding_group_value(${binding_group()}, this.__value, this.checked)`;\n\t\t}\n\n\t\treturn x`this.__value`;\n\t}\n\n\t// <input type='range|number' bind:value>\n\tif (type === 'range' || type === 'number') {\n\t\treturn x`@to_number(this.${name})`;\n\t}\n\n\tif ((name === 'buffered' || name === 'seekable' || name === 'played')) {\n\t\treturn x`@time_ranges_to_array(this.${name})`;\n\t}\n\n\t// everything else\n\treturn x`this.${name}`;\n}\n","import { b, x } from 'code-red';\nimport Block from '../../Block';\nimport Action from '../../../nodes/Action';\n\nexport default function add_actions(\n\tblock: Block,\n\ttarget: string,\n\tactions: Action[]\n) {\n\tactions.forEach(action => add_action(block, target, action));\n}\n\nexport function add_action(block: Block, target: string, action: Action) {\n\tconst { expression } = action;\n\tlet snippet;\n\tlet dependencies;\n\n\tif (expression) {\n\t\tsnippet = expression.manipulate(block);\n\t\tdependencies = expression.dynamic_dependencies();\n\t}\n\n\tconst id = block.get_unique_name(\n\t\t`${action.name.replace(/[^a-zA-Z0-9_$]/g, '_')}_action`\n\t);\n\n\tblock.add_variable(id);\n\n\tconst [obj, ...properties] = action.name.split('.');\n\n\tconst fn = block.renderer.reference(obj);\n\n\tif (properties.length) {\n\t\tblock.event_listeners.push(\n\t\t\tx`@action_destroyer(${id} = ${fn}.${properties.join('.')}(${target}, ${snippet}))`\n\t\t);\n\t} else {\n\t\tblock.event_listeners.push(\n\t\t\tx`@action_destroyer(${id} = ${fn}.call(null, ${target}, ${snippet}))`\n\t\t);\n\t}\n\n\tif (dependencies && dependencies.length > 0) {\n\t\tlet condition = x`${id} && @is_function(${id}.update)`;\n\n\t\tif (dependencies.length > 0) {\n\t\t\tcondition = x`${condition} && ${block.renderer.dirty(dependencies)}`;\n\t\t}\n\n\t\tblock.chunks.update.push(\n\t\t\tb`if (${condition}) ${id}.update.call(null, ${snippet});`\n\t\t);\n\t}\n}\n","import { Node, Literal, Identifier, MemberExpression } from 'estree';\n\nexport function compare_node(a: Node | void, b: Node | void) {\n\tif (a === b) return true;\n\tif (!a || !b) return false;\n\tif (a.type !== b.type) return false;\n\tswitch (a.type) {\n\t\tcase 'Identifier':\n\t\t\treturn a.name === (b as Identifier).name;\n\t\tcase 'MemberExpression':\n\t\t\treturn (\n\t\t\t\tcompare_node(a.object, (b as MemberExpression).object) &&\n\t\t\t\tcompare_node(a.property, (b as MemberExpression).property) &&\n\t\t\t\ta.computed === (b as MemberExpression).computed\n\t\t\t);\n\t\tcase 'Literal':\n\t\t\treturn a.value === (b as Literal).value;\n\t}\n}\n","import { b, x } from 'code-red';\nimport Component from '../../../Component';\nimport Block from '../../Block';\nimport BindingWrapper from '../Element/Binding';\nimport { Identifier } from 'estree';\nimport { compare_node } from '../../../utils/compare_node';\n\nexport default function bind_this(component: Component, block: Block, binding: BindingWrapper, variable: Identifier) {\n\tconst fn = component.get_unique_name(`${variable.name}_binding`);\n\n\tblock.renderer.add_to_context(fn.name);\n\tconst callee = block.renderer.reference(fn.name);\n\n\tconst { contextual_dependencies, mutation } = binding.handler;\n\tconst dependencies = binding.get_dependencies();\n\n\tconst body = b`\n\t\t${mutation}\n\t\t${Array.from(dependencies)\n\t\t\t.filter(dep => dep[0] !== '$')\n\t\t\t.filter(dep => !contextual_dependencies.has(dep))\n\t\t\t.map(dep => b`${block.renderer.invalidate(dep)};`)}\n\t`;\n\n\tif (contextual_dependencies.size) {\n\t\tconst params: Identifier[] = Array.from(contextual_dependencies).map(name => ({\n\t\t\ttype: 'Identifier',\n\t\t\tname\n\t\t}));\n\t\tcomponent.partly_hoisted.push(b`\n\t\t\tfunction ${fn}($$value, ${params}) {\n\t\t\t\t@binding_callbacks[$$value ? 'unshift' : 'push'](() => {\n\t\t\t\t\t${body}\n\t\t\t\t});\n\t\t\t}\n\t\t`);\n\n\t\tconst alias_map = new Map();\n\t\tconst args = [];\n\t\tfor (let id of params) {\n\t\t\tconst value = block.renderer.reference(id.name);\n\t\t\tlet found = false;\n\t\t\tif (block.variables.has(id.name)) {\n\t\t\t\tlet alias = id.name;\n\t\t\t\tfor (\n\t\t\t\t\tlet i = 1;\n\t\t\t\t\tblock.variables.has(alias) && !compare_node(block.variables.get(alias).init, value);\n\t\t\t\t\talias = `${id.name}_${i++}`\n\t\t\t\t);\n\t\t\t\talias_map.set(alias, id.name);\n\t\t\t\tid = { type: 'Identifier', name: alias };\n\t\t\t\tfound = block.variables.has(alias);\n\t\t\t}\n\t\t\targs.push(id);\n\t\t\tif (!found) {\n\t\t\t\tblock.add_variable(id, value);\n\t\t\t}\n\t\t}\n\n\t\tconst assign = block.get_unique_name(`assign_${variable.name}`);\n\t\tconst unassign = block.get_unique_name(`unassign_${variable.name}`);\n\n\t\tblock.chunks.init.push(b`\n\t\t\tconst ${assign} = () => ${callee}(${variable}, ${args});\n\t\t\tconst ${unassign} = () => ${callee}(null, ${args});\n\t\t`);\n\n\t\tconst condition = Array.from(args)\n\t\t\t.map(name => x`${name} !== ${block.renderer.reference(alias_map.get(name.name) || name.name)}`)\n\t\t\t.reduce((lhs, rhs) => x`${lhs} || ${rhs}`);\n\n\t\t// we push unassign and unshift assign so that references are\n\t\t// nulled out before they're created, to avoid glitches\n\t\t// with shifting indices\n\t\tblock.chunks.update.push(b`\n\t\t\tif (${condition}) {\n\t\t\t\t${unassign}();\n\t\t\t\t${args.map(a => b`${a} = ${block.renderer.reference(alias_map.get(a.name) || a.name)}`)};\n\t\t\t\t${assign}();\n\t\t\t}`\n\t\t);\n\n\t\tblock.chunks.destroy.push(b`${unassign}();`);\n\t\treturn b`${assign}();`;\n\t}\n\n\tcomponent.partly_hoisted.push(b`\n\t\tfunction ${fn}($$value) {\n\t\t\t@binding_callbacks[$$value ? 'unshift' : 'push'](() => {\n\t\t\t\t${body}\n\t\t\t});\n\t\t}\n\t`);\n\n\tblock.chunks.destroy.push(b`${callee}(null);`);\n\treturn b`${callee}(${variable});`;\n}\n","import Attribute from '../Attribute';\nimport Component from '../../Component';\nimport { INode } from '../interfaces';\nimport Text from '../Text';\n\nexport default class Node {\n\treadonly start: number;\n\treadonly end: number;\n\treadonly component: Component;\n\treadonly parent: INode;\n\treadonly type: string;\n\n\tprev?: INode;\n\tnext?: INode;\n\n\tcan_use_innerhtml: boolean;\n\tvar: string;\n\tattributes: Attribute[];\n\n\tconstructor(component: Component, parent, _scope, info: any) {\n\t\tthis.start = info.start;\n\t\tthis.end = info.end;\n\t\tthis.type = info.type;\n\n\t\t// this makes properties non-enumerable, which makes logging\n\t\t// bearable. might have a performance cost. TODO remove in prod?\n\t\tObject.defineProperties(this, {\n\t\t\tcomponent: {\n\t\t\t\tvalue: component\n\t\t\t},\n\t\t\tparent: {\n\t\t\t\tvalue: parent\n\t\t\t}\n\t\t});\n\t}\n\n\tcannot_use_innerhtml() {\n\t\tif (this.can_use_innerhtml !== false) {\n\t\t\tthis.can_use_innerhtml = false;\n\t\t\tif (this.parent) this.parent.cannot_use_innerhtml();\n\t\t}\n\t}\n\n\tfind_nearest(selector: RegExp) {\n\t\tif (selector.test(this.type)) return this;\n\t\tif (this.parent) return this.parent.find_nearest(selector);\n\t}\n\n\tget_static_attribute_value(name: string) {\n\t\tconst attribute = this.attributes && this.attributes.find(\n\t\t\t(attr: Attribute) => attr.type === 'Attribute' && attr.name.toLowerCase() === name\n\t\t);\n\n\t\tif (!attribute) return null;\n\n\t\tif (attribute.is_true) return true;\n\t\tif (attribute.chunks.length === 0) return '';\n\n\t\tif (attribute.chunks.length === 1 && attribute.chunks[0].type === 'Text') {\n\t\t\treturn (attribute.chunks[0] as Text).data;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\thas_ancestor(type: string) {\n\t\treturn this.parent ?\n\t\t\tthis.parent.type === type || this.parent.has_ancestor(type) :\n\t\t\tfalse;\n\t}\n}\n","import { Node } from 'estree';\nimport { analyze, Scope, extract_names, extract_identifiers } from 'periscopic';\n\nexport function create_scopes(expression: Node) {\n\treturn analyze(expression);\n}\n\nexport { Scope, extract_names, extract_identifiers };\n","export const reserved_keywords = new Set(['$$props', '$$restProps', '$$slots']);\n\nexport function is_reserved_keyword(name) {\n\treturn reserved_keywords.has(name);\n}\n","import { Var } from '../../../../interfaces';\nimport { is_reserved_keyword } from '../../../utils/reserved_keywords';\n\nexport default function is_dynamic(variable: Var) {\n\tif (variable) {\n\t\tif (variable.mutated || variable.reassigned) return true; // dynamic internal state\n\t\tif (!variable.module && variable.writable && variable.export_name) return true; // writable props\n\t\tif (is_reserved_keyword(variable.name)) return true;\n\t}\n\n\treturn false;\n}\n","export function nodes_match(a, b) {\n\tif (!!a !== !!b) return false;\n\tif (Array.isArray(a) !== Array.isArray(b)) return false;\n\n\tif (a && typeof a === 'object') {\n\t\tif (Array.isArray(a)) {\n\t\t\tif (a.length !== b.length) return false;\n\t\t\treturn a.every((child, i) => nodes_match(child, b[i]));\n\t\t}\n\n\t\tconst a_keys = Object.keys(a).sort();\n\t\tconst b_keys = Object.keys(b).sort();\n\n\t\tif (a_keys.length !== b_keys.length) return false;\n\n\t\tlet i = a_keys.length;\n\t\twhile (i--) {\n\t\t\tconst key = a_keys[i];\n\t\t\tif (b_keys[i] !== key) return false;\n\n\t\t\tif (key === 'start' || key === 'end') continue;\n\n\t\t\tif (!nodes_match(a[key], b[key])) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\treturn a === b;\n}\n","import { nodes_match } from '../../utils/nodes_match';\nimport { Scope } from '../utils/scope';\nimport { x } from 'code-red';\nimport { Node, Expression } from 'estree';\nimport Renderer from './Renderer';\nimport { Var } from '../../interfaces';\n\nexport function invalidate(renderer: Renderer, scope: Scope, node: Node, names: Set<string>, main_execution_context: boolean = false) {\n\tconst { component } = renderer;\n\n\tconst [head, ...tail] = Array.from(names)\n\t\t.filter(name => {\n\t\t\tconst owner = scope.find_owner(name);\n\t\t\treturn !owner || owner === component.instance_scope;\n\t\t})\n\t\t.map(name => component.var_lookup.get(name))\n\t\t.filter(variable =>\t{\n\t\t\treturn variable && (\n\t\t\t\t!variable.hoistable &&\n\t\t\t\t!variable.global &&\n\t\t\t\t!variable.module &&\n\t\t\t\t(\n\t\t\t\t\tvariable.referenced ||\n\t\t\t\t\tvariable.subscribable ||\n\t\t\t\t\tvariable.is_reactive_dependency ||\n\t\t\t\t\tvariable.export_name ||\n\t\t\t\t\tvariable.name[0] === '$'\n\t\t\t\t)\n\t\t\t);\n\t\t}) as Var[];\n\n\tfunction get_invalidated(variable: Var, node?: Expression) {\n\t\tif (main_execution_context && !variable.subscribable && variable.name[0] !== '$') {\n\t\t\treturn node;\n\t\t}\n\t\treturn renderer.invalidate(variable.name, undefined, main_execution_context);\n\t}\n\n\tif (!head) {\n\t\treturn node;\n\t}\n\n\tcomponent.has_reactive_assignments = true;\n\n\tif (node.type === 'AssignmentExpression' && node.operator === '=' && nodes_match(node.left, node.right) && tail.length === 0) {\n\t\treturn get_invalidated(head, node);\n\t}\n\n\tconst is_store_value = head.name[0] === '$' && head.name[1] !== '$';\n\tconst extra_args = tail.map(variable => get_invalidated(variable)).filter(Boolean);\n\n\tif (is_store_value) {\n\t\treturn x`@set_store_value(${head.name.slice(1)}, ${node}, ${head.name}, ${extra_args})`;\n\t}\n\t\n\tlet invalidate;\n\tif (!main_execution_context) {\n\t\tconst pass_value = (\n\t\t\textra_args.length > 0 ||\n\t\t\t(node.type === 'AssignmentExpression' && node.left.type !== 'Identifier') ||\n\t\t\t(node.type === 'UpdateExpression' && (!node.prefix || node.argument.type !== 'Identifier'))\n\t\t);\n\t\tif (pass_value) {\n\t\t\textra_args.unshift({\n\t\t\t\ttype: 'Identifier',\n\t\t\t\tname: head.name\n\t\t\t});\n\t\t}\n\t\tinvalidate = x`$$invalidate(${renderer.context_lookup.get(head.name).index}, ${node}, ${extra_args})`;\n\t} else {\n\t\t// skip `$$invalidate` if it is in the main execution context\n\t\tinvalidate = extra_args.length ? [node, ...extra_args] : node;\n\t}\n\n\tif (head.subscribable && head.reassigned) {\n\t\tconst subscribe = `$$subscribe_${head.name}`;\n\t\tinvalidate = x`${subscribe}(${invalidate})`;\n\t}\n\n\treturn invalidate;\n}\n","import Component from '../../Component';\nimport { walk } from 'estree-walker';\nimport is_reference from 'is-reference';\nimport flatten_reference from '../../utils/flatten_reference';\nimport { create_scopes, Scope, extract_names } from '../../utils/scope';\nimport { sanitize } from '../../../utils/names';\nimport TemplateScope from './TemplateScope';\nimport get_object from '../../utils/get_object';\nimport Block from '../../render_dom/Block';\nimport is_dynamic from '../../render_dom/wrappers/shared/is_dynamic';\nimport { b } from 'code-red';\nimport { invalidate } from '../../render_dom/invalidate';\nimport { Node, FunctionExpression, Identifier } from 'estree';\nimport { INode } from '../interfaces';\nimport { is_reserved_keyword } from '../../utils/reserved_keywords';\nimport replace_object from '../../utils/replace_object';\nimport EachBlock from '../EachBlock';\n\ntype Owner = INode;\n\nexport default class Expression {\n\ttype: 'Expression' = 'Expression';\n\tcomponent: Component;\n\towner: Owner;\n\tnode: any;\n\treferences: Set<string> = new Set();\n\tdependencies: Set<string> = new Set();\n\tcontextual_dependencies: Set<string> = new Set();\n\n\ttemplate_scope: TemplateScope;\n\tscope: Scope;\n\tscope_map: WeakMap<Node, Scope>;\n\n\tdeclarations: Array<(Node | Node[])> = [];\n\tuses_context = false;\n\n\tmanipulated: Node;\n\n\tconstructor(component: Component, owner: Owner, template_scope: TemplateScope, info, lazy?: boolean) {\n\t\t// TODO revert to direct property access in prod?\n\t\tObject.defineProperties(this, {\n\t\t\tcomponent: {\n\t\t\t\tvalue: component\n\t\t\t}\n\t\t});\n\n\t\tthis.node = info;\n\t\tthis.template_scope = template_scope;\n\t\tthis.owner = owner;\n\n\t\tconst { dependencies, contextual_dependencies, references } = this;\n\n\t\tlet { map, scope } = create_scopes(info);\n\t\tthis.scope = scope;\n\t\tthis.scope_map = map;\n\n\t\tconst expression = this;\n\t\tlet function_expression;\n\n\t\t// discover dependencies, but don't change the code yet\n\t\twalk(info, {\n\t\t\tenter(node: any, parent: any, key: string) {\n\t\t\t\t// don't manipulate shorthand props twice\n\t\t\t\tif (key === 'value' && parent.shorthand) return;\n\t\t\t\t// don't manipulate `import.meta`, `new.target`\n\t\t\t\tif (node.type === 'MetaProperty') return this.skip();\n\n\t\t\t\tif (map.has(node)) {\n\t\t\t\t\tscope = map.get(node);\n\t\t\t\t}\n\n\t\t\t\tif (!function_expression && /FunctionExpression/.test(node.type)) {\n\t\t\t\t\tfunction_expression = node;\n\t\t\t\t}\n\n\t\t\t\tif (is_reference(node, parent)) {\n\t\t\t\t\tconst { name, nodes } = flatten_reference(node);\n\t\t\t\t\treferences.add(name);\n\n\t\t\t\t\tif (scope.has(name)) return;\n\n\t\t\t\t\tif (name[0] === '$') {\n\t\t\t\t\t\tconst store_name = name.slice(1);\n\t\t\t\t\t\tif (template_scope.names.has(store_name) || scope.has(store_name)) {\n\t\t\t\t\t\t\tcomponent.error(node, {\n\t\t\t\t\t\t\t\tcode: 'contextual-store',\n\t\t\t\t\t\t\t\tmessage: 'Stores must be declared at the top level of the component (this may change in a future version of Svelte)'\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (template_scope.is_let(name)) {\n\t\t\t\t\t\tif (!function_expression) { // TODO should this be `!lazy` ?\n\t\t\t\t\t\t\tcontextual_dependencies.add(name);\n\t\t\t\t\t\t\tdependencies.add(name);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (template_scope.names.has(name)) {\n\t\t\t\t\t\texpression.uses_context = true;\n\n\t\t\t\t\t\tcontextual_dependencies.add(name);\n\n\t\t\t\t\t\tconst owner = template_scope.get_owner(name);\n\t\t\t\t\t\tconst is_index = owner.type === 'EachBlock' && owner.key && name === owner.index;\n\n\t\t\t\t\t\tif (!lazy || is_index) {\n\t\t\t\t\t\t\ttemplate_scope.dependencies_for_name.get(name).forEach(name => dependencies.add(name));\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (!lazy) {\n\t\t\t\t\t\t\tdependencies.add(name);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcomponent.add_reference(name);\n\t\t\t\t\t\tcomponent.warn_if_undefined(name, nodes[0], template_scope);\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.skip();\n\t\t\t\t}\n\n\t\t\t\t// track any assignments from template expressions as mutable\n\t\t\t\tlet names;\n\t\t\t\tlet deep = false;\n\n\t\t\t\tif (function_expression) {\n\t\t\t\t\tif (node.type === 'AssignmentExpression') {\n\t\t\t\t\t\tdeep = node.left.type === 'MemberExpression';\n\t\t\t\t\t\tnames = extract_names(deep ? get_object(node.left) : node.left);\n\t\t\t\t\t} else if (node.type === 'UpdateExpression') {\n\t\t\t\t\t\tnames = extract_names(get_object(node.argument));\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (names) {\n\t\t\t\t\tnames.forEach(name => {\n\t\t\t\t\t\tif (template_scope.names.has(name)) {\n\t\t\t\t\t\t\ttemplate_scope.dependencies_for_name.get(name).forEach(name => {\n\t\t\t\t\t\t\t\tconst variable = component.var_lookup.get(name);\n\t\t\t\t\t\t\t\tif (variable) variable[deep ? 'mutated' : 'reassigned'] = true;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tconst each_block = template_scope.get_owner(name);\n\t\t\t\t\t\t\t(each_block as EachBlock).has_binding = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcomponent.add_reference(name);\n\n\t\t\t\t\t\t\tconst variable = component.var_lookup.get(name);\n\t\t\t\t\t\t\tif (variable) variable[deep ? 'mutated' : 'reassigned'] = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tleave(node: Node) {\n\t\t\t\tif (map.has(node)) {\n\t\t\t\t\tscope = scope.parent;\n\t\t\t\t}\n\n\t\t\t\tif (node === function_expression) {\n\t\t\t\t\tfunction_expression = null;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tdynamic_dependencies() {\n\t\treturn Array.from(this.dependencies).filter(name => {\n\t\t\tif (this.template_scope.is_let(name)) return true;\n\t\t\tif (is_reserved_keyword(name)) return true;\n\n\t\t\tconst variable = this.component.var_lookup.get(name);\n\t\t\treturn is_dynamic(variable);\n\t\t});\n\t}\n\n\t// TODO move this into a render-dom wrapper?\n\tmanipulate(block?: Block) {\n\t\t// TODO ideally we wouldn't end up calling this method\n\t\t// multiple times\n\t\tif (this.manipulated) return this.manipulated;\n\n\t\tconst {\n\t\t\tcomponent,\n\t\t\tdeclarations,\n\t\t\tscope_map: map,\n\t\t\ttemplate_scope,\n\t\t\towner\n\t\t} = this;\n\t\tlet scope = this.scope;\n\n\t\tlet function_expression;\n\n\t\tlet dependencies: Set<string>;\n\t\tlet contextual_dependencies: Set<string>;\n\n\t\tconst node = walk(this.node, {\n\t\t\tenter(node: any, parent: any) {\n\t\t\t\tif (node.type === 'Property' && node.shorthand) {\n\t\t\t\t\tnode.value = JSON.parse(JSON.stringify(node.value));\n\t\t\t\t\tnode.shorthand = false;\n\t\t\t\t}\n\n\t\t\t\tif (map.has(node)) {\n\t\t\t\t\tscope = map.get(node);\n\t\t\t\t}\n\n\t\t\t\tif (node.type === 'Identifier' && is_reference(node, parent)) {\n\t\t\t\t\tconst { name } = flatten_reference(node);\n\n\t\t\t\t\tif (scope.has(name)) return;\n\n\t\t\t\t\tif (function_expression) {\n\t\t\t\t\t\tif (template_scope.names.has(name)) {\n\t\t\t\t\t\t\tcontextual_dependencies.add(name);\n\n\t\t\t\t\t\t\ttemplate_scope.dependencies_for_name.get(name).forEach(dependency => {\n\t\t\t\t\t\t\t\tdependencies.add(dependency);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdependencies.add(name);\n\t\t\t\t\t\t\tcomponent.add_reference(name); // TODO is this redundant/misplaced?\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (is_contextual(component, template_scope, name)) {\n\t\t\t\t\t\tconst reference = block.renderer.reference(node);\n\t\t\t\t\t\tthis.replace(reference);\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.skip();\n\t\t\t\t}\n\n\t\t\t\tif (!function_expression) {\n\t\t\t\t\tif (node.type === 'AssignmentExpression') {\n\t\t\t\t\t\t// TODO should this be a warning/error? `<p>{foo = 1}</p>`\n\t\t\t\t\t}\n\n\t\t\t\t\tif (node.type === 'FunctionExpression' || node.type === 'ArrowFunctionExpression') {\n\t\t\t\t\t\tfunction_expression = node;\n\t\t\t\t\t\tdependencies = new Set();\n\t\t\t\t\t\tcontextual_dependencies = new Set();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tleave(node: Node, parent: Node) {\n\t\t\t\tif (map.has(node)) scope = scope.parent;\n\n\t\t\t\tif (node === function_expression) {\n\t\t\t\t\tconst id = component.get_unique_name(\n\t\t\t\t\t\tsanitize(get_function_name(node, owner))\n\t\t\t\t\t);\n\n\t\t\t\t\tconst declaration = b`const ${id} = ${node}`;\n\n\t\t\t\t\tif (dependencies.size === 0 && contextual_dependencies.size === 0) {\n\t\t\t\t\t\t// we can hoist this out of the component completely\n\t\t\t\t\t\tcomponent.fully_hoisted.push(declaration);\n\n\t\t\t\t\t\tthis.replace(id as any);\n\n\t\t\t\t\t\tcomponent.add_var({\n\t\t\t\t\t\t\tname: id.name,\n\t\t\t\t\t\t\tinternal: true,\n\t\t\t\t\t\t\thoistable: true,\n\t\t\t\t\t\t\treferenced: true\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if (contextual_dependencies.size === 0) {\n\t\t\t\t\t\t// function can be hoisted inside the component init\n\t\t\t\t\t\tcomponent.partly_hoisted.push(declaration);\n\n\t\t\t\t\t\tblock.renderer.add_to_context(id.name);\n\t\t\t\t\t\tthis.replace(block.renderer.reference(id));\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// we need a combo block/init recipe\n\t\t\t\t\t\tconst deps = Array.from(contextual_dependencies);\n\t\t\t\t\t\tconst function_expression = node as FunctionExpression;\n\n\t\t\t\t\t\tconst has_args = function_expression.params.length > 0;\n\t\t\t\t\t\tfunction_expression.params = [\n\t\t\t\t\t\t\t...deps.map(name => ({ type: 'Identifier', name } as Identifier)),\n\t\t\t\t\t\t\t...function_expression.params\n\t\t\t\t\t\t];\n\n\t\t\t\t\t\tconst context_args = deps.map(name => block.renderer.reference(name));\n\n\t\t\t\t\t\tcomponent.partly_hoisted.push(declaration);\n\n\t\t\t\t\t\tblock.renderer.add_to_context(id.name);\n\t\t\t\t\t\tconst callee = block.renderer.reference(id);\n\n\t\t\t\t\t\tthis.replace(id as any);\n\n\t\t\t\t\t\tconst func_declaration = has_args\n\t\t\t\t\t\t\t? b`function ${id}(...args) {\n\t\t\t\t\t\t\t\treturn ${callee}(${context_args}, ...args);\n\t\t\t\t\t\t\t}`\n\t\t\t\t\t\t\t: b`function ${id}() {\n\t\t\t\t\t\t\t\treturn ${callee}(${context_args});\n\t\t\t\t\t\t\t}`;\n\n\t\t\t\t\t\tif (owner.type === 'Attribute' && owner.parent.name === 'slot') {\n\t\t\t\t\t\t\tconst dep_scopes = new Set<INode>(deps.map(name => template_scope.get_owner(name)));\n\t\t\t\t\t\t\t// find the nearest scopes\n\t\t\t\t\t\t\tlet node: INode = owner.parent;\n\t\t\t\t\t\t\twhile (node && !dep_scopes.has(node)) {\n\t\t\t\t\t\t\t\tnode = node.parent;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst func_expression = func_declaration[0];\n\n\t\t\t\t\t\t\tif (node.type === 'InlineComponent') {\n\t\t\t\t\t\t\t\t// <Comp let:data />\n\t\t\t\t\t\t\t\tthis.replace(func_expression);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// {#each}, {#await}\n\t\t\t\t\t\t\t\tconst func_id = component.get_unique_name(id.name + '_func');\n\t\t\t\t\t\t\t\tblock.renderer.add_to_context(func_id.name, true);\n\t\t\t\t\t\t\t\t// rename #ctx -> child_ctx;\n\t\t\t\t\t\t\t\twalk(func_expression, {\n\t\t\t\t\t\t\t\t\tenter(node) {\n\t\t\t\t\t\t\t\t\t\tif (node.type === 'Identifier' && node.name === '#ctx') {\n\t\t\t\t\t\t\t\t\t\t\tnode.name = 'child_ctx';\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t// add to get_xxx_context\n\t\t\t\t\t\t\t\t// child_ctx[x] = function () { ... }\n\t\t\t\t\t\t\t\t(template_scope.get_owner(deps[0]) as EachBlock).contexts.push({\n\t\t\t\t\t\t\t\t\tkey: func_id,\n\t\t\t\t\t\t\t\t\tmodifier: () => func_expression\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tthis.replace(block.renderer.reference(func_id));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdeclarations.push(func_declaration);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction_expression = null;\n\t\t\t\t\tdependencies = null;\n\t\t\t\t\tcontextual_dependencies = null;\n\n\t\t\t\t\tif (parent && parent.type === 'Property') {\n\t\t\t\t\t\tparent.method = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (node.type === 'AssignmentExpression' || node.type === 'UpdateExpression') {\n\t\t\t\t\tconst assignee = node.type === 'AssignmentExpression' ? node.left : node.argument;\n\n\t\t\t\t\tconst object_name = get_object(assignee).name;\n\n\t\t\t\t\tif (scope.has(object_name)) return;\n\n\t\t\t\t\t// normally (`a = 1`, `b.c = 2`), there'll be a single name\n\t\t\t\t\t// (a or b). In destructuring cases (`[d, e] = [e, d]`) there\n\t\t\t\t\t// may be more, in which case we need to tack the extra ones\n\t\t\t\t\t// onto the initial function call\n\t\t\t\t\tconst names = new Set(extract_names(assignee));\n\n\t\t\t\t\tconst traced: Set<string> = new Set();\n\t\t\t\t\tnames.forEach(name => {\n\t\t\t\t\t\tconst dependencies = template_scope.dependencies_for_name.get(name);\n\t\t\t\t\t\tif (dependencies) {\n\t\t\t\t\t\t\tdependencies.forEach(name => traced.add(name));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttraced.add(name);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tconst context = block.bindings.get(object_name);\n\n\t\t\t\t\tif (context) {\n\t\t\t\t\t\t// for `{#each array as item}`\n\t\t\t\t\t\t// replace `item = 1` to `each_array[each_index] = 1`, this allow us to mutate the array\n\t\t\t\t\t\t// rather than mutating the local `item` variable\n\t\t\t\t\t\tconst { snippet, object, property } = context;\n\t\t\t\t\t\tconst replaced: any = replace_object(assignee, snippet);\n\t\t\t\t\t\tif (node.type === 'AssignmentExpression') {\n\t\t\t\t\t\t\tnode.left = replaced;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnode.argument = replaced;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontextual_dependencies.add(object.name);\n\t\t\t\t\t\tcontextual_dependencies.add(property.name);\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.replace(invalidate(block.renderer, scope, node, traced));\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif (declarations.length > 0) {\n\t\t\tblock.maintain_context = true;\n\t\t\tdeclarations.forEach(declaration => {\n\t\t\t\tblock.chunks.init.push(declaration);\n\t\t\t});\n\t\t}\n\n\t\treturn (this.manipulated = node as Node);\n\t}\n}\n\nfunction get_function_name(_node, parent) {\n\tif (parent.type === 'EventHandler') {\n\t\treturn `${parent.name}_handler`;\n\t}\n\n\tif (parent.type === 'Action') {\n\t\treturn `${parent.name}_function`;\n\t}\n\n\treturn 'func';\n}\n\nfunction is_contextual(component: Component, scope: TemplateScope, name: string) {\n\tif (is_reserved_keyword(name)) return true;\n\n\t// if it's a name below root scope, it's contextual\n\tif (!scope.is_top_level(name)) return true;\n\n\tconst variable = component.var_lookup.get(name);\n\n\t// hoistables, module declarations, and imports are non-contextual\n\tif (!variable || variable.hoistable) return false;\n\n\t// assume contextual\n\treturn true;\n}\n","import Node from './shared/Node';\nimport Expression from './shared/Expression';\nimport Component from '../Component';\n\nexport default class Action extends Node {\n\ttype: 'Action';\n\tname: string;\n\texpression: Expression;\n\tuses_context: boolean;\n\n\tconstructor(component: Component, parent, scope, info) {\n\t\tsuper(component, parent, scope, info);\n\n\t\tconst object = info.name.split('.')[0];\n\t\tcomponent.warn_if_undefined(object, info, scope);\n\n\t\tthis.name = info.name;\n\t\tcomponent.add_reference(object);\n\n\t\tthis.expression = info.expression\n\t\t\t? new Expression(component, this, scope, info.expression)\n\t\t\t: null;\n\n\t\tthis.uses_context = this.expression && this.expression.uses_context;\n\t}\n}\n","import { b, x } from 'code-red';\nimport Wrapper from './Wrapper';\nimport Renderer from '../../Renderer';\nimport Block from '../../Block';\nimport MustacheTag from '../../../nodes/MustacheTag';\nimport RawMustacheTag from '../../../nodes/RawMustacheTag';\nimport { Node } from 'estree';\n\nexport default class Tag extends Wrapper {\n\tnode: MustacheTag | RawMustacheTag;\n\n\tconstructor(renderer: Renderer, block: Block, parent: Wrapper, node: MustacheTag | RawMustacheTag) {\n\t\tsuper(renderer, block, parent, node);\n\n\t\tthis.cannot_use_innerhtml();\n\t\tif (!this.is_dependencies_static()) {\n\t\t\tthis.not_static_content();\n\t\t}\n\n\t\tblock.add_dependencies(node.expression.dependencies);\n\t}\n\n\tis_dependencies_static() {\n\t\treturn this.node.expression.contextual_dependencies.size === 0 && this.node.expression.dynamic_dependencies().length === 0;\n\t}\n\n\trename_this_method(\n\t\tblock: Block,\n\t\tupdate: ((value: Node) => (Node | Node[]))\n\t) {\n\t\tconst dependencies = this.node.expression.dynamic_dependencies();\n\t\tlet snippet = this.node.expression.manipulate(block);\n\n\t\tconst value = this.node.should_cache && block.get_unique_name(`${this.var.name}_value`);\n\t\tconst content = this.node.should_cache ? value : snippet;\n\n\t\tsnippet = x`${snippet} + \"\"`;\n\n\t\tif (this.node.should_cache) block.add_variable(value, snippet); // TODO may need to coerce snippet to string\n\n\t\tif (dependencies.length > 0) {\n\t\t\tlet condition = block.renderer.dirty(dependencies);\n\n\t\t\tif (block.has_outros) {\n\t\t\t\tcondition = x`!#current || ${condition}`;\n\t\t\t}\n\n\t\t\tconst update_cached_value = x`${value} !== (${value} = ${snippet})`;\n\n\t\t\tif (this.node.should_cache) {\n\t\t\t\tcondition = x`${condition} && ${update_cached_value}`;\n\t\t\t}\n\n\t\t\tblock.chunks.update.push(b`if (${condition}) ${update(content as Node)}`);\n\t\t}\n\n\t\treturn { init: content };\n\t}\n}\n","import Renderer from '../Renderer';\nimport Block from '../Block';\nimport Tag from './shared/Tag';\nimport Wrapper from './shared/Wrapper';\nimport MustacheTag from '../../nodes/MustacheTag';\nimport RawMustacheTag from '../../nodes/RawMustacheTag';\nimport { x } from 'code-red';\nimport { Identifier } from 'estree';\n\nexport default class MustacheTagWrapper extends Tag {\n\tvar: Identifier = { type: 'Identifier', name: 't' };\n\n\tconstructor(renderer: Renderer, block: Block, parent: Wrapper, node: MustacheTag | RawMustacheTag) {\n\t\tsuper(renderer, block, parent, node);\n\t}\n\n\trender(block: Block, parent_node: Identifier, parent_nodes: Identifier) {\n\t\tconst { init } = this.rename_this_method(\n\t\t\tblock,\n\t\t\tvalue => x`@set_data(${this.var}, ${value})`\n\t\t);\n\n\t\tblock.add_element(\n\t\t\tthis.var,\n\t\t\tx`@text(${init})`,\n\t\t\tparent_nodes && x`@claim_text(${parent_nodes}, ${init})`,\n\t\t\tparent_node\n\t\t);\n\t}\n}\n","import { b, x } from 'code-red';\nimport Renderer from '../Renderer';\nimport Block from '../Block';\nimport Tag from './shared/Tag';\nimport Wrapper from './shared/Wrapper';\nimport MustacheTag from '../../nodes/MustacheTag';\nimport RawMustacheTag from '../../nodes/RawMustacheTag';\nimport { is_head } from './shared/is_head';\nimport { Identifier } from 'estree';\n\nexport default class RawMustacheTagWrapper extends Tag {\n\tvar: Identifier = { type: 'Identifier', name: 'raw' };\n\n\tconstructor(\n\t\trenderer: Renderer,\n\t\tblock: Block,\n\t\tparent: Wrapper,\n\t\tnode: MustacheTag | RawMustacheTag\n\t) {\n\t\tsuper(renderer, block, parent, node);\n\t\tthis.cannot_use_innerhtml();\n\t\tthis.not_static_content();\n\t}\n\n\trender(block: Block, parent_node: Identifier, _parent_nodes: Identifier) {\n\t\tconst in_head = is_head(parent_node);\n\n\t\tconst can_use_innerhtml = !in_head && parent_node && !this.prev && !this.next;\n\n\t\tif (can_use_innerhtml) {\n\t\t\tconst insert = content => b`${parent_node}.innerHTML = ${content};`[0];\n\n\t\t\tconst { init } = this.rename_this_method(\n\t\t\t\tblock,\n\t\t\t\tcontent => insert(content)\n\t\t\t);\n\n\t\t\tblock.chunks.mount.push(insert(init));\n\t\t} else {\n\t\t\tconst needs_anchor = in_head || (this.next ? !this.next.is_dom_node() : (!this.parent || !this.parent.is_dom_node()));\n\n\t\t\tconst html_tag = block.get_unique_name('html_tag');\n\t\t\tconst html_anchor = needs_anchor && block.get_unique_name('html_anchor');\n\n\t\t\tblock.add_variable(html_tag);\n\n\t\t\tconst { init } = this.rename_this_method(\n\t\t\t\tblock,\n\t\t\t\tcontent => x`${html_tag}.p(${content})`\n\t\t\t);\n\n\t\t\tconst update_anchor = needs_anchor ? html_anchor : this.next ? this.next.var : 'null';\n\n\t\t\tblock.chunks.hydrate.push(b`${html_tag} = new @HtmlTag(${update_anchor});`);\n\t\t\tblock.chunks.mount.push(b`${html_tag}.m(${init}, ${parent_node || '#target'}, ${parent_node ? null : '#anchor'});`);\n\n\t\t\tif (needs_anchor) {\n\t\t\t\tblock.add_element(html_anchor, x`@empty()`, x`@empty()`, parent_node);\n\t\t\t}\n\n\t\t\tif (!parent_node || in_head) {\n\t\t\t\tblock.chunks.destroy.push(b`if (detaching) ${html_tag}.d();`);\n\t\t\t}\n\t\t}\n\t}\n}\n","import Let from '../../../nodes/Let';\nimport { x, p } from 'code-red';\nimport Block from '../../Block';\nimport TemplateScope from '../../../nodes/shared/TemplateScope';\nimport { BinaryExpression } from 'estree';\n\nexport function get_slot_definition(block: Block, scope: TemplateScope, lets: Let[]) {\n\tif (lets.length === 0) return { block, scope };\n\n\tconst context_input = {\n\t\ttype: 'ObjectPattern',\n\t\tproperties: lets.map(l => ({\n\t\t\ttype: 'Property',\n\t\t\tkind: 'init',\n\t\t\tkey: l.name,\n\t\t\tvalue: l.value || l.name\n\t\t}))\n\t};\n\n\tconst properties = [];\n\tconst value_map = new Map();\n\n\tlets.forEach(l => {\n\t\tlet value;\n\t\tif (l.names.length > 1) {\n\t\t\t// more than one, probably destructuring\n\t\t\tconst unique_name = block.get_unique_name(l.names.join('_')).name;\n\t\t\tvalue_map.set(l.value, unique_name);\n\t\t\tvalue = { type: 'Identifier', name: unique_name };\n\t\t} else {\n\t\t\tvalue = l.value || l.name;\n\t\t}\n\t\tproperties.push({\n\t\t\ttype: 'Property',\n\t\t\tkind: 'init',\n\t\t\tkey: l.name,\n\t\t\tvalue\n\t\t});\n\t});\n\n\tconst changes_input = {\n\t\ttype: 'ObjectPattern',\n\t\tproperties\n\t};\n\n\tconst names: Set<string> = new Set();\n\tconst names_lookup: Map<string, string> = new Map();\n\n\tlets.forEach(l => {\n\t\tl.names.forEach(name => {\n\t\t\tnames.add(name);\n\t\t\tif (value_map.has(l.value)) {\n\t\t\t\tnames_lookup.set(name, value_map.get(l.value));\n\t\t\t}\n\t\t});\n\t});\n\n\tconst context = {\n\t\ttype: 'ObjectExpression',\n\t\tproperties: Array.from(names).map(name => p`${block.renderer.context_lookup.get(name).index}: ${name}`)\n\t};\n\n\tconst { context_lookup } = block.renderer;\n\n\t// i am well aware that this code is gross\n\t// TODO: context-overflow make it less gross\n\tconst changes = {\n\t\ttype: 'ParenthesizedExpression',\n\t\tget expression() {\n\t\t\tif (block.renderer.context_overflow) {\n\t\t\t\tconst grouped = [];\n\n\t\t\t\tArray.from(names).forEach(name => {\n\t\t\t\t\tconst i = context_lookup.get(name).index.value as number;\n\t\t\t\t\tconst g = Math.floor(i / 31);\n\n\t\t\t\t\tconst lookup_name = names_lookup.has(name) ? names_lookup.get(name) : name;\n\n\t\t\t\t\tif (!grouped[g]) grouped[g] = [];\n\t\t\t\t\tgrouped[g].push({ name: lookup_name, n: i % 31 });\n\t\t\t\t});\n\n\t\t\t\tconst elements = [];\n\n\t\t\t\tfor (let g = 0; g < grouped.length; g += 1) {\n\t\t\t\t\telements[g] = grouped[g]\n\t\t\t\t\t\t? grouped[g]\n\t\t\t\t\t\t\t.map(({ name, n }) => x`${name} ? ${1 << n} : 0`)\n\t\t\t\t\t\t\t.reduce((lhs, rhs) => x`${lhs} | ${rhs}`)\n\t\t\t\t\t\t: x`0`;\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'ArrayExpression',\n\t\t\t\t\telements\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn Array.from(names)\n\t\t\t\t.map(name => {\n\t\t\t\t\tconst lookup_name = names_lookup.has(name) ? names_lookup.get(name) : name;\n\t\t\t\t\tconst i = context_lookup.get(name).index.value as number;\n\t\t\t\t\treturn x`${lookup_name} ? ${1 << i} : 0`;\n\t\t\t\t})\n\t\t\t\t.reduce((lhs, rhs) => x`${lhs} | ${rhs}`) as BinaryExpression;\n\t\t}\n\t};\n\n\treturn {\n\t\tblock,\n\t\tscope,\n\t\tget_context: x`${context_input} => ${context}`,\n\t\tget_changes: x`${changes_input} => ${changes}`\n\t};\n}\n","import ElementWrapper from './index';\nimport SlotWrapper from '../Slot';\nimport Block from '../../Block';\nimport { sanitize } from '../../../../utils/names';\nimport InlineComponentWrapper from '../InlineComponent';\nimport create_debugging_comment from '../shared/create_debugging_comment';\nimport { get_slot_definition } from '../shared/get_slot_definition';\n\nexport default function create_slot_block(attribute, element: ElementWrapper | SlotWrapper, block: Block) {\n\tconst owner = find_slot_owner(element.parent);\n\n\tif (owner && owner.node.type === 'InlineComponent') {\n\t\tconst name = attribute.get_static_value() as string;\n\n\t\tif (!((owner as unknown) as InlineComponentWrapper).slots.has(name)) {\n\t\t\tconst child_block = block.child({\n\t\t\t\tcomment: create_debugging_comment(element.node, element.renderer.component),\n\t\t\t\tname: element.renderer.component.get_unique_name(\n\t\t\t\t\t`create_${sanitize(name)}_slot`\n\t\t\t\t),\n\t\t\t\ttype: 'slot'\n\t\t\t});\n\n\t\t\tconst { scope, lets } = element.node;\n\t\t\tconst seen = new Set(lets.map(l => l.name.name));\n\n\t\t\t((owner as unknown) as InlineComponentWrapper).node.lets.forEach(l => {\n\t\t\t\tif (!seen.has(l.name.name)) lets.push(l);\n\t\t\t});\n\n\t\t\t((owner as unknown) as InlineComponentWrapper).slots.set(\n\t\t\t\tname,\n\t\t\t\tget_slot_definition(child_block, scope, lets)\n\t\t\t);\n\t\t\telement.renderer.blocks.push(child_block);\n\t\t}\n\n\t\telement.slot_block = ((owner as unknown) as InlineComponentWrapper).slots.get(\n\t\t\tname\n\t\t).block;\n\n\t\treturn element.slot_block;\n\t}\n\n\treturn block;\n}\n\nfunction find_slot_owner(owner) {\n\twhile (owner) {\n\t\tif (owner.node.type === 'InlineComponent') {\n\t\t\tbreak;\n\t\t}\n\n\t\tif (owner.node.type === 'Element' && /-/.test(owner.node.name)) {\n\t\t\tbreak;\n\t\t}\n\n\t\towner = owner.parent;\n\t}\n\treturn owner;\n}\n","import Renderer from '../../Renderer';\nimport Element from '../../../nodes/Element';\nimport Wrapper from '../shared/Wrapper';\nimport Block from '../../Block';\nimport { is_void } from '../../../../utils/names';\nimport FragmentWrapper from '../Fragment';\nimport { escape_html, string_literal } from '../../../utils/stringify';\nimport TextWrapper from '../Text';\nimport fix_attribute_casing from './fix_attribute_casing';\nimport { b, x, p } from 'code-red';\nimport { namespaces } from '../../../../utils/namespaces';\nimport AttributeWrapper from './Attribute';\nimport StyleAttributeWrapper from './StyleAttribute';\nimport SpreadAttributeWrapper from './SpreadAttribute';\nimport { dimensions } from '../../../../utils/patterns';\nimport Binding from './Binding';\nimport add_to_set from '../../../utils/add_to_set';\nimport { add_event_handler } from '../shared/add_event_handlers';\nimport { add_action } from '../shared/add_actions';\nimport bind_this from '../shared/bind_this';\nimport { is_head } from '../shared/is_head';\nimport { Identifier } from 'estree';\nimport EventHandler from './EventHandler';\nimport { extract_names } from 'periscopic';\nimport Action from '../../../nodes/Action';\nimport MustacheTagWrapper from '../MustacheTag';\nimport RawMustacheTagWrapper from '../RawMustacheTag';\nimport create_slot_block from './create_slot_block';\n\ninterface BindingGroup {\n\tevents: string[];\n\tbindings: Binding[];\n}\n\nconst events = [\n\t{\n\t\tevent_names: ['input'],\n\t\tfilter: (node: Element, _name: string) =>\n\t\t\tnode.name === 'textarea' ||\n\t\t\tnode.name === 'input' && !/radio|checkbox|range|file/.test(node.get_static_attribute_value('type') as string)\n\t},\n\t{\n\t\tevent_names: ['input'],\n\t\tfilter: (node: Element, name: string) =>\n\t\t\t(name === 'textContent' || name === 'innerHTML') &&\n\t\t\tnode.attributes.some(attribute => attribute.name === 'contenteditable')\n\t},\n\t{\n\t\tevent_names: ['change'],\n\t\tfilter: (node: Element, _name: string) =>\n\t\t\tnode.name === 'select' ||\n\t\t\tnode.name === 'input' && /radio|checkbox|file/.test(node.get_static_attribute_value('type') as string)\n\t},\n\t{\n\t\tevent_names: ['change', 'input'],\n\t\tfilter: (node: Element, _name: string) =>\n\t\t\tnode.name === 'input' && node.get_static_attribute_value('type') === 'range'\n\t},\n\n\t{\n\t\tevent_names: ['elementresize'],\n\t\tfilter: (_node: Element, name: string) =>\n\t\t\tdimensions.test(name)\n\t},\n\n\t// media events\n\t{\n\t\tevent_names: ['timeupdate'],\n\t\tfilter: (node: Element, name: string) =>\n\t\t\tnode.is_media_node() &&\n\t\t\t(name === 'currentTime' || name === 'played' || name === 'ended')\n\t},\n\t{\n\t\tevent_names: ['durationchange'],\n\t\tfilter: (node: Element, name: string) =>\n\t\t\tnode.is_media_node() &&\n\t\t\tname === 'duration'\n\t},\n\t{\n\t\tevent_names: ['play', 'pause'],\n\t\tfilter: (node: Element, name: string) =>\n\t\t\tnode.is_media_node() &&\n\t\t\tname === 'paused'\n\t},\n\t{\n\t\tevent_names: ['progress'],\n\t\tfilter: (node: Element, name: string) =>\n\t\t\tnode.is_media_node() &&\n\t\t\tname === 'buffered'\n\t},\n\t{\n\t\tevent_names: ['loadedmetadata'],\n\t\tfilter: (node: Element, name: string) =>\n\t\t\tnode.is_media_node() &&\n\t\t\t(name === 'buffered' || name === 'seekable')\n\t},\n\t{\n\t\tevent_names: ['volumechange'],\n\t\tfilter: (node: Element, name: string) =>\n\t\t\tnode.is_media_node() &&\n\t\t\t(name === 'volume' || name === 'muted')\n\t},\n\t{\n\t\tevent_names: ['ratechange'],\n\t\tfilter: (node: Element, name: string) =>\n\t\t\tnode.is_media_node() &&\n\t\t\tname === 'playbackRate'\n\t},\n\t{\n\t\tevent_names: ['seeking', 'seeked'],\n\t\tfilter: (node: Element, name: string) =>\n\t\t\tnode.is_media_node() &&\n\t\t\t(name === 'seeking')\n\t},\n\t{\n\t\tevent_names: ['ended'],\n\t\tfilter: (node: Element, name: string) =>\n\t\t\tnode.is_media_node() &&\n\t\t\tname === 'ended'\n\t},\n\t{\n\t\tevent_names: ['resize'],\n\t\tfilter: (node: Element, name: string) =>\n\t\t\tnode.is_media_node() &&\n\t\t\t(name === 'videoHeight' || name === 'videoWidth')\n\t},\n\n\t// details event\n\t{\n\t\tevent_names: ['toggle'],\n\t\tfilter: (node: Element, _name: string) =>\n\t\t\tnode.name === 'details'\n\t}\n];\n\nexport default class ElementWrapper extends Wrapper {\n\tnode: Element;\n\tfragment: FragmentWrapper;\n\tattributes: Array<AttributeWrapper | StyleAttributeWrapper | SpreadAttributeWrapper>;\n\tbindings: Binding[];\n\tevent_handlers: EventHandler[];\n\tclass_dependencies: string[];\n\n\tslot_block: Block;\n\tselect_binding_dependencies?: Set<string>;\n\n\tvar: any;\n\tvoid: boolean;\n\n\tconstructor(\n\t\trenderer: Renderer,\n\t\tblock: Block,\n\t\tparent: Wrapper,\n\t\tnode: Element,\n\t\tstrip_whitespace: boolean,\n\t\tnext_sibling: Wrapper\n\t) {\n\t\tsuper(renderer, block, parent, node);\n\t\tthis.var = {\n\t\t\ttype: 'Identifier',\n\t\t\tname: node.name.replace(/[^a-zA-Z0-9_$]/g, '_')\n\t\t};\n\n\t\tthis.void = is_void(node.name);\n\n\t\tthis.class_dependencies = [];\n\n\t\tif (this.node.children.length) {\n\t\t\tthis.node.lets.forEach(l => {\n\t\t\t\textract_names(l.value || l.name).forEach(name => {\n\t\t\t\t\trenderer.add_to_context(name, true);\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tthis.attributes = this.node.attributes.map(attribute => {\n\t\t\tif (attribute.name === 'slot') {\n\t\t\t\tblock = create_slot_block(attribute, this, block);\n\t\t\t}\n\t\t\tif (attribute.name === 'style') {\n\t\t\t\treturn new StyleAttributeWrapper(this, block, attribute);\n\t\t\t}\n\t\t\tif (attribute.type === 'Spread') {\n\t\t\t\treturn new SpreadAttributeWrapper(this, block, attribute);\n\t\t\t}\n\t\t\treturn new AttributeWrapper(this, block, attribute);\n\t\t});\n\n\t\t// ordinarily, there'll only be one... but we need to handle\n\t\t// the rare case where an element can have multiple bindings,\n\t\t// e.g. <audio bind:paused bind:currentTime>\n\t\tthis.bindings = this.node.bindings.map(binding => new Binding(block, binding, this));\n\n\t\tthis.event_handlers = this.node.handlers.map(event_handler => new EventHandler(event_handler, this));\n\n\t\tif (node.intro || node.outro) {\n\t\t\tif (node.intro) block.add_intro(node.intro.is_local);\n\t\t\tif (node.outro) block.add_outro(node.outro.is_local);\n\t\t}\n\n\t\tif (node.animation) {\n\t\t\tblock.add_animation();\n\t\t}\n\n\t\t// add directive and handler dependencies\n\t\t[node.animation, node.outro, ...node.actions, ...node.classes].forEach(directive => {\n\t\t\tif (directive && directive.expression) {\n\t\t\t\tblock.add_dependencies(directive.expression.dependencies);\n\t\t\t}\n\t\t});\n\n\t\tnode.handlers.forEach(handler => {\n\t\t\tif (handler.expression) {\n\t\t\t\tblock.add_dependencies(handler.expression.dependencies);\n\t\t\t}\n\t\t});\n\n\t\tif (this.parent) {\n\t\t\tif (node.actions.length > 0 ||\n\t\t\t\tnode.animation ||\n\t\t\t\tnode.bindings.length > 0 ||\n\t\t\t\tnode.classes.length > 0 ||\n\t\t\t\tnode.intro || node.outro ||\n\t\t\t\tnode.handlers.length > 0 ||\n\t\t\t\tthis.node.name === 'option' ||\n\t\t\t\trenderer.options.dev\n\t\t\t) {\n\t\t\t\tthis.parent.cannot_use_innerhtml(); // need to use add_location\n\t\t\t\tthis.parent.not_static_content();\n\t\t\t}\n\t\t}\n\n\t\tthis.fragment = new FragmentWrapper(renderer, block, node.children, this, strip_whitespace, next_sibling);\n\n\t\tif (this.slot_block) {\n\t\t\tblock.parent.add_dependencies(block.dependencies);\n\n\t\t\t// appalling hack\n\t\t\tconst index = block.parent.wrappers.indexOf(this);\n\t\t\tblock.parent.wrappers.splice(index, 1);\n\t\t\tblock.wrappers.push(this);\n\t\t}\n\t}\n\n\trender(block: Block, parent_node: Identifier, parent_nodes: Identifier) {\n\t\tconst { renderer } = this;\n\n\t\tif (this.node.name === 'noscript') return;\n\n\t\tif (this.slot_block) {\n\t\t\tblock = this.slot_block;\n\t\t}\n\n\t\tconst node = this.var;\n\t\tconst nodes = parent_nodes && block.get_unique_name(`${this.var.name}_nodes`); // if we're in unclaimable territory, i.e. <head>, parent_nodes is null\n\t\tconst children = x`@children(${this.node.name === 'template' ? x`${node}.content` : node})`;\n\n\t\tblock.add_variable(node);\n\t\tconst render_statement = this.get_render_statement(block);\n\t\tblock.chunks.create.push(\n\t\t\tb`${node} = ${render_statement};`\n\t\t);\n\n\t\tif (renderer.options.hydratable) {\n\t\t\tif (parent_nodes) {\n\t\t\t\tblock.chunks.claim.push(b`\n\t\t\t\t\t${node} = ${this.get_claim_statement(parent_nodes)};\n\t\t\t\t`);\n\n\t\t\t\tif (!this.void && this.node.children.length > 0) {\n\t\t\t\t\tblock.chunks.claim.push(b`\n\t\t\t\t\t\tvar ${nodes} = ${children};\n\t\t\t\t\t`);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tblock.chunks.claim.push(\n\t\t\t\t\tb`${node} = ${render_statement};`\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (parent_node) {\n\t\t\tblock.chunks.mount.push(\n\t\t\t\tb`@append(${parent_node}, ${node});`\n\t\t\t);\n\n\t\t\tif (is_head(parent_node)) {\n\t\t\t\tblock.chunks.destroy.push(b`@detach(${node});`);\n\t\t\t}\n\t\t} else {\n\t\t\tblock.chunks.mount.push(b`@insert(#target, ${node}, #anchor);`);\n\n\t\t\t// TODO we eventually need to consider what happens to elements\n\t\t\t// that belong to the same outgroup as an outroing element...\n\t\t\tblock.chunks.destroy.push(b`if (detaching) @detach(${node});`);\n\t\t}\n\n\t\t// insert static children with textContent or innerHTML\n\t\tconst can_use_textcontent = this.can_use_textcontent();\n\t\tif (!this.node.namespace && (this.can_use_innerhtml || can_use_textcontent) && this.fragment.nodes.length > 0) {\n\t\t\tif (this.fragment.nodes.length === 1 && this.fragment.nodes[0].node.type === 'Text') {\n\t\t\t\tblock.chunks.create.push(\n\t\t\t\t\tb`${node}.textContent = ${string_literal((this.fragment.nodes[0] as TextWrapper).data)};`\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tconst state = {\n\t\t\t\t\tquasi: {\n\t\t\t\t\t\ttype: 'TemplateElement',\n\t\t\t\t\t\tvalue: { raw: '' }\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tconst literal = {\n\t\t\t\t\ttype: 'TemplateLiteral',\n\t\t\t\t\texpressions: [],\n\t\t\t\t\tquasis: []\n\t\t\t\t};\n\n\t\t\t\tconst can_use_raw_text = !this.can_use_innerhtml && can_use_textcontent;\n\t\t\t\tto_html((this.fragment.nodes as unknown as Array<ElementWrapper | TextWrapper>), block, literal, state, can_use_raw_text);\n\t\t\t\tliteral.quasis.push(state.quasi);\n\n\t\t\t\tblock.chunks.create.push(\n\t\t\t\t\tb`${node}.${this.can_use_innerhtml ? 'innerHTML': 'textContent'} = ${literal};`\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.fragment.nodes.forEach((child: Wrapper) => {\n\t\t\t\tchild.render(\n\t\t\t\t\tblock,\n\t\t\t\t\tthis.node.name === 'template' ? x`${node}.content` : node,\n\t\t\t\t\tnodes\n\t\t\t\t);\n\t\t\t});\n\t\t}\n\n\t\tconst event_handler_or_binding_uses_context = (\n\t\t\tthis.bindings.some(binding => binding.handler.uses_context) ||\n\t\t\tthis.node.handlers.some(handler => handler.uses_context) ||\n\t\t\tthis.node.actions.some(action => action.uses_context)\n\t\t);\n\n\t\tif (event_handler_or_binding_uses_context) {\n\t\t\tblock.maintain_context = true;\n\t\t}\n\n\t\tthis.add_attributes(block);\n\t\tthis.add_directives_in_order(block);\n\t\tthis.add_transitions(block);\n\t\tthis.add_animation(block);\n\t\tthis.add_classes(block);\n\t\tthis.add_manual_style_scoping(block);\n\n\t\tif (nodes && this.renderer.options.hydratable && !this.void) {\n\t\t\tblock.chunks.claim.push(\n\t\t\t\tb`${this.node.children.length > 0 ? nodes : children}.forEach(@detach);`\n\t\t\t);\n\t\t}\n\n\t\tif (renderer.options.dev) {\n\t\t\tconst loc = renderer.locate(this.node.start);\n\t\t\tblock.chunks.hydrate.push(\n\t\t\t\tb`@add_location(${this.var}, ${renderer.file_var}, ${loc.line - 1}, ${loc.column}, ${this.node.start});`\n\t\t\t);\n\t\t}\n\t}\n\n\tcan_use_textcontent() {\n\t\treturn this.is_static_content && this.fragment.nodes.every(node => node.node.type === 'Text' || node.node.type === 'MustacheTag');\n\t}\n\n\tget_render_statement(block: Block) {\n\t\tconst { name, namespace } = this.node;\n\n\t\tif (namespace === namespaces.svg) {\n\t\t\treturn x`@svg_element(\"${name}\")`;\n\t\t}\n\n\t\tif (namespace) {\n\t\t\treturn x`@_document.createElementNS(\"${namespace}\", \"${name}\")`;\n\t\t}\n\n\t\tconst is: AttributeWrapper = this.attributes.find(attr => attr.node.name === 'is') as any;\n\t\tif (is) {\n\t\t\treturn x`@element_is(\"${name}\", ${is.render_chunks(block).reduce((lhs, rhs) => x`${lhs} + ${rhs}`)})`;\n\t\t}\n\n\t\treturn x`@element(\"${name}\")`;\n\t}\n\n\tget_claim_statement(nodes: Identifier) {\n\t\tconst attributes = this.node.attributes\n\t\t\t.filter((attr) => attr.type === 'Attribute')\n\t\t\t.map((attr) => p`${attr.name}: true`);\n\n\t\tconst name = this.node.namespace\n\t\t\t? this.node.name\n\t\t\t: this.node.name.toUpperCase();\n\n\t\tconst svg = this.node.namespace === namespaces.svg ? 1 : null;\n\n\t\treturn x`@claim_element(${nodes}, \"${name}\", { ${attributes} }, ${svg})`;\n\t}\n\n\tadd_directives_in_order (block: Block) {\n\t\ttype OrderedAttribute = EventHandler | BindingGroup | Binding | Action;\n\n\t\tconst binding_groups = events\n\t\t\t.map(event => ({\n\t\t\t\tevents: event.event_names,\n\t\t\t\tbindings: this.bindings\n\t\t\t\t\t.filter(binding => binding.node.name !== 'this')\n\t\t\t\t\t.filter(binding => event.filter(this.node, binding.node.name))\n\t\t\t}))\n\t\t\t.filter(group => group.bindings.length);\n\n\t\tconst this_binding = this.bindings.find(b => b.node.name === 'this');\n\n\t\tfunction getOrder (item: OrderedAttribute) {\n\t\t\tif (item instanceof EventHandler) {\n\t\t\t\treturn item.node.start;\n\t\t\t} else if (item instanceof Binding) {\n\t\t\t\treturn item.node.start;\n\t\t\t} else if (item instanceof Action) {\n\t\t\t\treturn item.start;\n\t\t\t} else {\n\t\t\t\treturn item.bindings[0].node.start;\n\t\t\t}\n\t\t}\n\n\t\t([\n\t\t\t...binding_groups,\n\t\t\t...this.event_handlers,\n\t\t\tthis_binding,\n\t\t\t...this.node.actions\n\t\t] as OrderedAttribute[])\n\t\t\t.filter(Boolean)\n\t\t\t.sort((a, b) => getOrder(a) - getOrder(b))\n\t\t\t.forEach(item => {\n\t\t\t\tif (item instanceof EventHandler) {\n\t\t\t\t\tadd_event_handler(block, this.var, item);\n\t\t\t\t} else if (item instanceof Binding) {\n\t\t\t\t\tthis.add_this_binding(block, item);\n\t\t\t\t} else if (item instanceof Action) {\n\t\t\t\t\tadd_action(block, this.var, item);\n\t\t\t\t} else {\n\t\t\t\t\tthis.add_bindings(block, item);\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tadd_bindings(block: Block, binding_group: BindingGroup) {\n\t\tconst { renderer } = this;\n\n\t\tif (binding_group.bindings.length === 0) return;\n\n\t\trenderer.component.has_reactive_assignments = true;\n\n\t\tconst lock = binding_group.bindings.some(binding => binding.needs_lock) ?\n\t\t\tblock.get_unique_name(`${this.var.name}_updating`) :\n\t\t\tnull;\n\n\t\tif (lock) block.add_variable(lock, x`false`);\n\n\t\tconst handler = renderer.component.get_unique_name(`${this.var.name}_${binding_group.events.join('_')}_handler`);\n\t\trenderer.add_to_context(handler.name);\n\n\t\t// TODO figure out how to handle locks\n\t\tconst needs_lock = binding_group.bindings.some(binding => binding.needs_lock);\n\n\t\tconst dependencies: Set<string> = new Set();\n\t\tconst contextual_dependencies: Set<string> = new Set();\n\n\t\tbinding_group.bindings.forEach(binding => {\n\t\t\t// TODO this is a mess\n\t\t\tadd_to_set(dependencies, binding.get_dependencies());\n\t\t\tadd_to_set(contextual_dependencies, binding.handler.contextual_dependencies);\n\n\t\t\tbinding.render(block, lock);\n\t\t});\n\n\t\t// media bindings — awkward special case. The native timeupdate events\n\t\t// fire too infrequently, so we need to take matters into our\n\t\t// own hands\n\t\tlet animation_frame;\n\t\tif (binding_group.events[0] === 'timeupdate') {\n\t\t\tanimation_frame = block.get_unique_name(`${this.var.name}_animationframe`);\n\t\t\tblock.add_variable(animation_frame);\n\t\t}\n\n\t\tconst has_local_function = contextual_dependencies.size > 0 || needs_lock || animation_frame;\n\n\t\tlet callee = renderer.reference(handler);\n\n\t\t// TODO dry this out — similar code for event handlers and component bindings\n\t\tif (has_local_function) {\n\t\t\tconst args = Array.from(contextual_dependencies).map(name => renderer.reference(name));\n\n\t\t\t// need to create a block-local function that calls an instance-level function\n\t\t\tif (animation_frame) {\n\t\t\t\tblock.chunks.init.push(b`\n\t\t\t\t\tfunction ${handler}() {\n\t\t\t\t\t\t@_cancelAnimationFrame(${animation_frame});\n\t\t\t\t\t\tif (!${this.var}.paused) {\n\t\t\t\t\t\t\t${animation_frame} = @raf(${handler});\n\t\t\t\t\t\t\t${needs_lock && b`${lock} = true;`}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t${callee}.call(${this.var}, ${args});\n\t\t\t\t\t}\n\t\t\t\t`);\n\t\t\t} else {\n\t\t\t\tblock.chunks.init.push(b`\n\t\t\t\t\tfunction ${handler}() {\n\t\t\t\t\t\t${needs_lock && b`${lock} = true;`}\n\t\t\t\t\t\t${callee}.call(${this.var}, ${args});\n\t\t\t\t\t}\n\t\t\t\t`);\n\t\t\t}\n\n\t\t\tcallee = handler;\n\t\t}\n\n\t\tconst params = Array.from(contextual_dependencies).map(name => ({\n\t\t\ttype: 'Identifier',\n\t\t\tname\n\t\t}));\n\n\t\tthis.renderer.component.partly_hoisted.push(b`\n\t\t\tfunction ${handler}(${params}) {\n\t\t\t\t${binding_group.bindings.map(b => b.handler.mutation)}\n\t\t\t\t${Array.from(dependencies)\n\t\t\t\t\t.filter(dep => dep[0] !== '$')\n\t\t\t\t\t.filter(dep => !contextual_dependencies.has(dep))\n\t\t\t\t\t.map(dep => b`${this.renderer.invalidate(dep)};`)}\n\t\t\t}\n\t\t`);\n\n\t\tbinding_group.events.forEach(name => {\n\t\t\tif (name === 'elementresize') {\n\t\t\t\t// special case\n\t\t\t\tconst resize_listener = block.get_unique_name(`${this.var.name}_resize_listener`);\n\t\t\t\tblock.add_variable(resize_listener);\n\n\t\t\t\tblock.chunks.mount.push(\n\t\t\t\t\tb`${resize_listener} = @add_resize_listener(${this.var}, ${callee}.bind(${this.var}));`\n\t\t\t\t);\n\n\t\t\t\tblock.chunks.destroy.push(\n\t\t\t\t\tb`${resize_listener}();`\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tblock.event_listeners.push(\n\t\t\t\t\tx`@listen(${this.var}, \"${name}\", ${callee})`\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\n\t\tconst some_initial_state_is_undefined = binding_group.bindings\n\t\t\t.map(binding => x`${binding.snippet} === void 0`)\n\t\t\t.reduce((lhs, rhs) => x`${lhs} || ${rhs}`);\n\n\t\tconst should_initialise = (\n\t\t\tthis.node.name === 'select' ||\n\t\t\tbinding_group.bindings.find(binding => {\n\t\t\t\treturn (\n\t\t\t\t\tbinding.node.name === 'indeterminate' ||\n\t\t\t\t\tbinding.node.name === 'textContent' ||\n\t\t\t\t\tbinding.node.name === 'innerHTML' ||\n\t\t\t\t\tbinding.is_readonly_media_attribute()\n\t\t\t\t);\n\t\t\t})\n\t\t);\n\n\t\tif (should_initialise) {\n\t\t\tconst callback = has_local_function ? handler : x`() => ${callee}.call(${this.var})`;\n\t\t\tblock.chunks.hydrate.push(\n\t\t\t\tb`if (${some_initial_state_is_undefined}) @add_render_callback(${callback});`\n\t\t\t);\n\t\t}\n\n\t\tif (binding_group.events[0] === 'elementresize') {\n\t\t\tblock.chunks.hydrate.push(\n\t\t\t\tb`@add_render_callback(() => ${callee}.call(${this.var}));`\n\t\t\t);\n\t\t}\n\n\t\tif (lock) {\n\t\t\tblock.chunks.update.push(b`${lock} = false;`);\n\t\t}\n\t}\n\n\tadd_this_binding(block: Block, this_binding: Binding) {\n\t\tconst { renderer } = this;\n\n\t\trenderer.component.has_reactive_assignments = true;\n\n\t\tconst binding_callback = bind_this(renderer.component, block, this_binding, this.var);\n\t\tblock.chunks.mount.push(binding_callback);\n\t}\n\n\tadd_attributes(block: Block) {\n\t\t// Get all the class dependencies first\n\t\tthis.attributes.forEach((attribute) => {\n\t\t\tif (attribute.node.name === 'class') {\n\t\t\t\tconst dependencies = attribute.node.get_dependencies();\n\t\t\t\tthis.class_dependencies.push(...dependencies);\n\t\t\t}\n\t\t});\n\n\t\tif (this.node.attributes.some(attr => attr.is_spread)) {\n\t\t\tthis.add_spread_attributes(block);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.attributes.forEach((attribute) => {\n\t\t\tattribute.render(block);\n\t\t});\n\t}\n\n\tadd_spread_attributes(block: Block) {\n\t\tconst levels = block.get_unique_name(`${this.var.name}_levels`);\n\t\tconst data = block.get_unique_name(`${this.var.name}_data`);\n\n\t\tconst initial_props = [];\n\t\tconst updates = [];\n\n\t\tthis.attributes\n\t\t\t.forEach(attr => {\n\t\t\t\tconst dependencies = attr.node.get_dependencies();\n\n\t\t\t\tconst condition = dependencies.length > 0\n\t\t\t\t\t? block.renderer.dirty(dependencies)\n\t\t\t\t\t: null;\n\n\t\t\t\tif (attr instanceof SpreadAttributeWrapper) {\n\t\t\t\t\tconst snippet = attr.node.expression.manipulate(block);\n\n\t\t\t\t\tinitial_props.push(snippet);\n\n\t\t\t\t\tupdates.push(condition ? x`${condition} && ${snippet}` : snippet);\n\t\t\t\t} else {\n\t\t\t\t\tconst name = attr.property_name || attr.name;\n\t\t\t\t\tinitial_props.push(x`{ ${name}: ${attr.get_init(block, attr.get_value(block))} }`);\n\t\t\t\t\tconst snippet = x`{ ${name}: ${attr.should_cache ? attr.last : attr.get_value(block)} }`;\n\n\t\t\t\t\tupdates.push(condition ? x`${attr.get_dom_update_conditions(block, condition)} && ${snippet}` : snippet);\n\t\t\t\t}\n\t\t\t});\n\n\t\tblock.chunks.init.push(b`\n\t\t\tlet ${levels} = [${initial_props}];\n\n\t\t\tlet ${data} = {};\n\t\t\tfor (let #i = 0; #i < ${levels}.length; #i += 1) {\n\t\t\t\t${data} = @assign(${data}, ${levels}[#i]);\n\t\t\t}\n\t\t`);\n\n\t\tconst fn = this.node.namespace === namespaces.svg ? x`@set_svg_attributes` : x`@set_attributes`;\n\n\t\tblock.chunks.hydrate.push(\n\t\t\tb`${fn}(${this.var}, ${data});`\n\t\t);\n\n\t\tblock.chunks.update.push(b`\n\t\t\t${fn}(${this.var}, ${data} = @get_spread_update(${levels}, [\n\t\t\t\t${updates}\n\t\t\t]));\n\t\t`);\n\n\t\t// handle edge cases for elements\n\t\tif (this.node.name === 'select') {\n\t\t\tconst dependencies = new Set();\n\t\t\tfor (const attr of this.attributes) {\n\t\t\t\tfor (const dep of attr.node.dependencies) {\n\t\t\t\t\tdependencies.add(dep);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tblock.chunks.mount.push(b`\n\t\t\t\tif (${data}.multiple) @select_options(${this.var}, ${data}.value);\n\t\t\t`);\n\t\t\tblock.chunks.update.push(b`\n\t\t\t\tif (${block.renderer.dirty(Array.from(dependencies))} && ${data}.multiple) @select_options(${this.var}, ${data}.value);\n\t\t\t`);\n\t\t} else if (this.node.name === 'input' && this.attributes.find(attr => attr.node.name === 'value')) {\n\t\t\tconst type = this.node.get_static_attribute_value('type');\n\t\t\tif (type === null || type === '' || type === 'text' || type === 'email' || type === 'password') {\n\t\t\t\tblock.chunks.mount.push(b`\n\t\t\t\t\t${this.var}.value = ${data}.value;\n\t\t\t\t`);\n\t\t\t\tblock.chunks.update.push(b`\n\t\t\t\t\tif ('value' in ${data}) {\n\t\t\t\t\t\t${this.var}.value = ${data}.value;\n\t\t\t\t\t}\n\t\t\t\t`);\n\t\t\t}\n\t\t}\n\t}\n\n\tadd_transitions(\n\t\tblock: Block\n\t) {\n\t\tconst { intro, outro } = this.node;\n\t\tif (!intro && !outro) return;\n\n\t\tif (intro === outro) {\n\t\t\t// bidirectional transition\n\t\t\tconst name = block.get_unique_name(`${this.var.name}_transition`);\n\t\t\tconst snippet = intro.expression\n\t\t\t\t? intro.expression.manipulate(block)\n\t\t\t\t: x`{}`;\n\n\t\t\tblock.add_variable(name);\n\n\t\t\tconst fn = this.renderer.reference(intro.name);\n\n\t\t\tconst intro_block = b`\n\t\t\t\t@add_render_callback(() => {\n\t\t\t\t\tif (!${name}) ${name} = @create_bidirectional_transition(${this.var}, ${fn}, ${snippet}, true);\n\t\t\t\t\t${name}.run(1);\n\t\t\t\t});\n\t\t\t`;\n\n\t\t\tconst outro_block = b`\n\t\t\t\tif (!${name}) ${name} = @create_bidirectional_transition(${this.var}, ${fn}, ${snippet}, false);\n\t\t\t\t${name}.run(0);\n\t\t\t`;\n\n\t\t\tif (intro.is_local) {\n\t\t\t\tblock.chunks.intro.push(b`\n\t\t\t\t\tif (#local) {\n\t\t\t\t\t\t${intro_block}\n\t\t\t\t\t}\n\t\t\t\t`);\n\n\t\t\t\tblock.chunks.outro.push(b`\n\t\t\t\t\tif (#local) {\n\t\t\t\t\t\t${outro_block}\n\t\t\t\t\t}\n\t\t\t\t`);\n\t\t\t} else {\n\t\t\t\tblock.chunks.intro.push(intro_block);\n\t\t\t\tblock.chunks.outro.push(outro_block);\n\t\t\t}\n\n\t\t\tblock.chunks.destroy.push(b`if (detaching && ${name}) ${name}.end();`);\n\t\t} else {\n\t\t\tconst intro_name = intro && block.get_unique_name(`${this.var.name}_intro`);\n\t\t\tconst outro_name = outro && block.get_unique_name(`${this.var.name}_outro`);\n\n\t\t\tif (intro) {\n\t\t\t\tblock.add_variable(intro_name);\n\t\t\t\tconst snippet = intro.expression\n\t\t\t\t\t? intro.expression.manipulate(block)\n\t\t\t\t\t: x`{}`;\n\n\t\t\t\tconst fn = this.renderer.reference(intro.name);\n\n\t\t\t\tlet intro_block;\n\n\t\t\t\tif (outro) {\n\t\t\t\t\tintro_block = b`\n\t\t\t\t\t\t@add_render_callback(() => {\n\t\t\t\t\t\t\tif (${outro_name}) ${outro_name}.end(1);\n\t\t\t\t\t\t\tif (!${intro_name}) ${intro_name} = @create_in_transition(${this.var}, ${fn}, ${snippet});\n\t\t\t\t\t\t\t${intro_name}.start();\n\t\t\t\t\t\t});\n\t\t\t\t\t`;\n\n\t\t\t\t\tblock.chunks.outro.push(b`if (${intro_name}) ${intro_name}.invalidate();`);\n\t\t\t\t} else {\n\t\t\t\t\tintro_block = b`\n\t\t\t\t\t\tif (!${intro_name}) {\n\t\t\t\t\t\t\t@add_render_callback(() => {\n\t\t\t\t\t\t\t\t${intro_name} = @create_in_transition(${this.var}, ${fn}, ${snippet});\n\t\t\t\t\t\t\t\t${intro_name}.start();\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t`;\n\t\t\t\t}\n\n\t\t\t\tif (intro.is_local) {\n\t\t\t\t\tintro_block = b`\n\t\t\t\t\t\tif (#local) {\n\t\t\t\t\t\t\t${intro_block}\n\t\t\t\t\t\t}\n\t\t\t\t\t`;\n\t\t\t\t}\n\n\t\t\t\tblock.chunks.intro.push(intro_block);\n\t\t\t}\n\n\t\t\tif (outro) {\n\t\t\t\tblock.add_variable(outro_name);\n\t\t\t\tconst snippet = outro.expression\n\t\t\t\t\t? outro.expression.manipulate(block)\n\t\t\t\t\t: x`{}`;\n\n\t\t\t\tconst fn = this.renderer.reference(outro.name);\n\n\t\t\t\tif (!intro) {\n\t\t\t\t\tblock.chunks.intro.push(b`\n\t\t\t\t\t\tif (${outro_name}) ${outro_name}.end(1);\n\t\t\t\t\t`);\n\t\t\t\t}\n\n\t\t\t\t// TODO hide elements that have outro'd (unless they belong to a still-outroing\n\t\t\t\t// group) prior to their removal from the DOM\n\t\t\t\tlet outro_block = b`\n\t\t\t\t\t${outro_name} = @create_out_transition(${this.var}, ${fn}, ${snippet});\n\t\t\t\t`;\n\n\t\t\t\tif (outro.is_local) {\n\t\t\t\t\toutro_block = b`\n\t\t\t\t\t\tif (#local) {\n\t\t\t\t\t\t\t${outro_block}\n\t\t\t\t\t\t}\n\t\t\t\t\t`;\n\t\t\t\t}\n\n\t\t\t\tblock.chunks.outro.push(outro_block);\n\n\t\t\t\tblock.chunks.destroy.push(b`if (detaching && ${outro_name}) ${outro_name}.end();`);\n\t\t\t}\n\t\t}\n\n\t\tif ((intro && intro.expression && intro.expression.dependencies.size) || (outro && outro.expression && outro.expression.dependencies.size)) {\n\t\t\tblock.maintain_context = true;\n\t\t}\n\t}\n\n\tadd_animation(block: Block) {\n\t\tif (!this.node.animation) return;\n\n\t\tconst { outro } = this.node;\n\n\t\tconst rect = block.get_unique_name('rect');\n\t\tconst stop_animation = block.get_unique_name('stop_animation');\n\n\t\tblock.add_variable(rect);\n\t\tblock.add_variable(stop_animation, x`@noop`);\n\n\t\tblock.chunks.measure.push(b`\n\t\t\t${rect} = ${this.var}.getBoundingClientRect();\n\t\t`);\n\n\t\tblock.chunks.fix.push(b`\n\t\t\t@fix_position(${this.var});\n\t\t\t${stop_animation}();\n\t\t\t${outro && b`@add_transform(${this.var}, ${rect});`}\n\t\t`);\n\n\t\tconst params = this.node.animation.expression ? this.node.animation.expression.manipulate(block) : x`{}`;\n\n\t\tconst name = this.renderer.reference(this.node.animation.name);\n\n\t\tblock.chunks.animate.push(b`\n\t\t\t${stop_animation}();\n\t\t\t${stop_animation} = @create_animation(${this.var}, ${rect}, ${name}, ${params});\n\t\t`);\n\t}\n\n\tadd_classes(block: Block) {\n\t\tconst has_spread = this.node.attributes.some(attr => attr.is_spread);\n\t\tthis.node.classes.forEach(class_directive => {\n\t\t\tconst { expression, name } = class_directive;\n\t\t\tlet snippet;\n\t\t\tlet dependencies;\n\t\t\tif (expression) {\n\t\t\t\tsnippet = expression.manipulate(block);\n\t\t\t\tdependencies = expression.dependencies;\n\t\t\t} else {\n\t\t\t\tsnippet = name;\n\t\t\t\tdependencies = new Set([name]);\n\t\t\t}\n\t\t\tconst updater = b`@toggle_class(${this.var}, \"${name}\", ${snippet});`;\n\n\t\t\tblock.chunks.hydrate.push(updater);\n\n\t\t\tif (has_spread) {\n\t\t\t\tblock.chunks.update.push(updater);\n\t\t\t} else if ((dependencies && dependencies.size > 0) || this.class_dependencies.length) {\n\t\t\t\tconst all_dependencies = this.class_dependencies.concat(...dependencies);\n\t\t\t\tconst condition = block.renderer.dirty(all_dependencies);\n\n\t\t\t\tblock.chunks.update.push(b`\n\t\t\t\t\tif (${condition}) {\n\t\t\t\t\t\t${updater}\n\t\t\t\t\t}`);\n\t\t\t}\n\t\t});\n\t}\n\n\tadd_manual_style_scoping(block) {\n\t\tif (this.node.needs_manual_style_scoping) {\n\t\t\tconst updater = b`@toggle_class(${this.var}, \"${this.node.component.stylesheet.id}\", true);`;\n\t\t\tblock.chunks.hydrate.push(updater);\n\t\t\tblock.chunks.update.push(updater);\n\t\t}\n\t}\n}\n\nfunction to_html(wrappers: Array<ElementWrapper | TextWrapper | MustacheTagWrapper | RawMustacheTagWrapper>, block: Block, literal: any, state: any, can_use_raw_text?: boolean) {\n\twrappers.forEach(wrapper => {\n\t\tif (wrapper instanceof TextWrapper) {\n\t\t\tif ((wrapper as TextWrapper).use_space()) state.quasi.value.raw += ' ';\n\n\t\t\tconst parent = wrapper.node.parent as Element;\n\n\t\t\tconst raw = parent && (\n\t\t\t\tparent.name === 'script' ||\n\t\t\t\tparent.name === 'style' ||\n\t\t\t\tcan_use_raw_text\n\t\t\t);\n\n\t\t\tstate.quasi.value.raw += (raw ? wrapper.data : escape_html(wrapper.data))\n\t\t\t\t.replace(/\\\\/g, '\\\\\\\\')\n\t\t\t\t.replace(/`/g, '\\\\`')\n\t\t\t\t.replace(/\\$/g, '\\\\$');\n\t\t} else if (wrapper instanceof MustacheTagWrapper || wrapper instanceof RawMustacheTagWrapper) {\n\t\t\tliteral.quasis.push(state.quasi);\n\t\t\tliteral.expressions.push(wrapper.node.expression.manipulate(block));\n\t\t\tstate.quasi = {\n\t\t\t\ttype: 'TemplateElement',\n\t\t\t\tvalue: { raw: '' }\n\t\t\t};\n\t\t} else if (wrapper.node.name === 'noscript') {\n\t\t\t// do nothing\n\t\t} else {\n\t\t\t// element\n\t\t\tstate.quasi.value.raw += `<${wrapper.node.name}`;\n\n\t\t\t(wrapper as ElementWrapper).attributes.forEach((attr: AttributeWrapper) => {\n\t\t\t\tstate.quasi.value.raw += ` ${fix_attribute_casing(attr.node.name)}=\"`;\n\n\t\t\t\tattr.node.chunks.forEach(chunk => {\n\t\t\t\t\tif (chunk.type === 'Text') {\n\t\t\t\t\t\tstate.quasi.value.raw += escape_html(chunk.data);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tliteral.quasis.push(state.quasi);\n\t\t\t\t\t\tliteral.expressions.push(chunk.manipulate(block));\n\n\t\t\t\t\t\tstate.quasi = {\n\t\t\t\t\t\t\ttype: 'TemplateElement',\n\t\t\t\t\t\t\tvalue: { raw: '' }\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tstate.quasi.value.raw += '\"';\n\t\t\t});\n\n\t\t\tif (!wrapper.void) {\n\t\t\t\tstate.quasi.value.raw += '>';\n\n\t\t\t\tto_html(wrapper.fragment.nodes as Array<ElementWrapper | TextWrapper>, block, literal, state);\n\n\t\t\t\tstate.quasi.value.raw += `</${wrapper.node.name}>`;\n\t\t\t} else {\n\t\t\t\tstate.quasi.value.raw += '/>';\n\t\t\t}\n\t\t}\n\t});\n}\n","import Wrapper from './shared/Wrapper';\nimport Renderer from '../Renderer';\nimport Block from '../Block';\nimport Head from '../../nodes/Head';\nimport FragmentWrapper from './Fragment';\nimport { x, b } from 'code-red';\nimport { Identifier } from 'estree';\n\nexport default class HeadWrapper extends Wrapper {\n\tfragment: FragmentWrapper;\n\tnode: Head;\n\n\tconstructor(\n\t\trenderer: Renderer,\n\t\tblock: Block,\n\t\tparent: Wrapper,\n\t\tnode: Head,\n\t\tstrip_whitespace: boolean,\n\t\tnext_sibling: Wrapper\n\t) {\n\t\tsuper(renderer, block, parent, node);\n\n\t\tthis.can_use_innerhtml = false;\n\n\t\tthis.fragment = new FragmentWrapper(\n\t\t\trenderer,\n\t\t\tblock,\n\t\t\tnode.children,\n\t\t\tthis,\n\t\t\tstrip_whitespace,\n\t\t\tnext_sibling\n\t\t);\n\t}\n\n\trender(block: Block, _parent_node: Identifier, _parent_nodes: Identifier) {\n\t\tlet nodes;\n\t\tif (this.renderer.options.hydratable && this.fragment.nodes.length) {\n\t\t\tnodes = block.get_unique_name('head_nodes');\n\t\t\tblock.chunks.claim.push(b`const ${nodes} = @query_selector_all('[data-svelte=\"${this.node.id}\"]', @_document.head);`);\n\t\t}\n\n\t\tthis.fragment.render(block, x`@_document.head` as unknown as Identifier, nodes);\n\n\t\tif (nodes && this.renderer.options.hydratable) {\n\t\t\tblock.chunks.claim.push(\n\t\t\t\tb`${nodes}.forEach(@detach);`\n\t\t\t);\n\t\t}\n\t}\n}\n","import Wrapper from './shared/Wrapper';\nimport Renderer from '../Renderer';\nimport Block from '../Block';\nimport EachBlock from '../../nodes/EachBlock';\nimport IfBlock from '../../nodes/IfBlock';\nimport create_debugging_comment from './shared/create_debugging_comment';\nimport ElseBlock from '../../nodes/ElseBlock';\nimport FragmentWrapper from './Fragment';\nimport { b, x } from 'code-red';\nimport { walk } from 'estree-walker';\nimport { is_head } from './shared/is_head';\nimport { Identifier, Node, UnaryExpression } from 'estree';\n\nfunction is_else_if(node: ElseBlock) {\n\treturn (\n\t\tnode && node.children.length === 1 && node.children[0].type === 'IfBlock'\n\t);\n}\n\nclass IfBlockBranch extends Wrapper {\n\tblock: Block;\n\tfragment: FragmentWrapper;\n\tdependencies?: string[];\n\tcondition?: any;\n\tsnippet?: Node;\n\tis_dynamic: boolean;\n\n\tvar = null;\n\n\tconstructor(\n\t\trenderer: Renderer,\n\t\tblock: Block,\n\t\tparent: IfBlockWrapper,\n\t\tnode: IfBlock | ElseBlock,\n\t\tstrip_whitespace: boolean,\n\t\tnext_sibling: Wrapper\n\t) {\n\t\tsuper(renderer, block, parent, node);\n\n\t\tconst { expression } = (node as IfBlock);\n\t\tconst is_else = !expression;\n\n\t\tif (expression) {\n\t\t\tthis.dependencies = expression.dynamic_dependencies();\n\n\t\t\t// TODO is this the right rule? or should any non-reference count?\n\t\t\t// const should_cache = !is_reference(expression.node, null) && dependencies.length > 0;\n\t\t\tlet should_cache = false;\n\t\t\twalk(expression.node, {\n\t\t\t\tenter(node) {\n\t\t\t\t\tif (node.type === 'CallExpression' || node.type === 'NewExpression') {\n\t\t\t\t\t\tshould_cache = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (should_cache) {\n\t\t\t\tthis.condition = block.get_unique_name('show_if');\n\t\t\t\tthis.snippet = (expression.manipulate(block) as Node);\n\t\t\t} else {\n\t\t\t\tthis.condition = expression.manipulate(block);\n\t\t\t}\n\t\t}\n\n\t\tthis.block = block.child({\n\t\t\tcomment: create_debugging_comment(node, parent.renderer.component),\n\t\t\tname: parent.renderer.component.get_unique_name(\n\t\t\t\tis_else ? 'create_else_block' : 'create_if_block'\n\t\t\t),\n\t\t\ttype: (node as IfBlock).expression ? 'if' : 'else'\n\t\t});\n\n\t\tthis.fragment = new FragmentWrapper(renderer, this.block, node.children, parent, strip_whitespace, next_sibling);\n\n\t\tthis.is_dynamic = this.block.dependencies.size > 0;\n\t}\n}\n\nexport default class IfBlockWrapper extends Wrapper {\n\tnode: IfBlock;\n\tbranches: IfBlockBranch[];\n\tneeds_update = false;\n\n\tvar: Identifier = { type: 'Identifier', name: 'if_block' };\n\n\tconstructor(\n\t\trenderer: Renderer,\n\t\tblock: Block,\n\t\tparent: Wrapper,\n\t\tnode: EachBlock,\n\t\tstrip_whitespace: boolean,\n\t\tnext_sibling: Wrapper\n\t) {\n\t\tsuper(renderer, block, parent, node);\n\n\t\tthis.cannot_use_innerhtml();\n\t\tthis.not_static_content();\n\n\t\tthis.branches = [];\n\n\t\tconst blocks: Block[] = [];\n\t\tlet is_dynamic = false;\n\t\tlet has_intros = false;\n\t\tlet has_outros = false;\n\n\t\tconst create_branches = (node: IfBlock) => {\n\t\t\tconst branch = new IfBlockBranch(\n\t\t\t\trenderer,\n\t\t\t\tblock,\n\t\t\t\tthis,\n\t\t\t\tnode,\n\t\t\t\tstrip_whitespace,\n\t\t\t\tnext_sibling\n\t\t\t);\n\n\t\t\tthis.branches.push(branch);\n\n\t\t\tblocks.push(branch.block);\n\t\t\tblock.add_dependencies(node.expression.dependencies);\n\n\t\t\tif (branch.block.dependencies.size > 0) {\n\t\t\t\t// the condition, or its contents, is dynamic\n\t\t\t\tis_dynamic = true;\n\t\t\t\tblock.add_dependencies(branch.block.dependencies);\n\t\t\t}\n\n\t\t\tif (branch.dependencies && branch.dependencies.length > 0) {\n\t\t\t\t// the condition itself is dynamic\n\t\t\t\tthis.needs_update = true;\n\t\t\t}\n\n\t\t\tif (branch.block.has_intros) has_intros = true;\n\t\t\tif (branch.block.has_outros) has_outros = true;\n\n\t\t\tif (is_else_if(node.else)) {\n\t\t\t\tcreate_branches(node.else.children[0] as IfBlock);\n\t\t\t} else if (node.else) {\n\t\t\t\tconst branch = new IfBlockBranch(\n\t\t\t\t\trenderer,\n\t\t\t\t\tblock,\n\t\t\t\t\tthis,\n\t\t\t\t\tnode.else,\n\t\t\t\t\tstrip_whitespace,\n\t\t\t\t\tnext_sibling\n\t\t\t\t);\n\n\t\t\t\tthis.branches.push(branch);\n\n\t\t\t\tblocks.push(branch.block);\n\n\t\t\t\tif (branch.block.dependencies.size > 0) {\n\t\t\t\t\tis_dynamic = true;\n\t\t\t\t\tblock.add_dependencies(branch.block.dependencies);\n\t\t\t\t}\n\n\t\t\t\tif (branch.block.has_intros) has_intros = true;\n\t\t\t\tif (branch.block.has_outros) has_outros = true;\n\t\t\t}\n\t\t};\n\n\t\tcreate_branches(this.node);\n\n\t\tblocks.forEach(block => {\n\t\t\tblock.has_update_method = is_dynamic;\n\t\t\tblock.has_intro_method = has_intros;\n\t\t\tblock.has_outro_method = has_outros;\n\t\t});\n\n\t\trenderer.blocks.push(...blocks);\n\t}\n\n\trender(\n\t\tblock: Block,\n\t\tparent_node: Identifier,\n\t\tparent_nodes: Identifier\n\t) {\n\t\tconst name = this.var;\n\n\t\tconst needs_anchor = this.next ? !this.next.is_dom_node() : !parent_node || !this.parent.is_dom_node();\n\t\tconst anchor = needs_anchor\n\t\t\t? block.get_unique_name(`${this.var.name}_anchor`)\n\t\t\t: (this.next && this.next.var) || 'null';\n\n\t\tconst has_else = !(this.branches[this.branches.length - 1].condition);\n\t\tconst if_exists_condition = has_else ? null : name;\n\n\t\tconst dynamic = this.branches[0].block.has_update_method; // can use [0] as proxy for all, since they necessarily have the same value\n\t\tconst has_intros = this.branches[0].block.has_intro_method;\n\t\tconst has_outros = this.branches[0].block.has_outro_method;\n\t\tconst has_transitions = has_intros || has_outros;\n\n\t\tconst vars = { name, anchor, if_exists_condition, has_else, has_transitions };\n\n\t\tconst detaching = parent_node && !is_head(parent_node) ? null : 'detaching';\n\n\t\tif (this.node.else) {\n\t\t\tthis.branches.forEach(branch => {\n\t\t\t\tif (branch.snippet) block.add_variable(branch.condition);\n\t\t\t});\n\n\t\t\tif (has_outros) {\n\t\t\t\tthis.render_compound_with_outros(block, parent_node, parent_nodes, dynamic, vars, detaching);\n\n\t\t\t\tblock.chunks.outro.push(b`@transition_out(${name});`);\n\t\t\t} else {\n\t\t\t\tthis.render_compound(block, parent_node, parent_nodes, dynamic, vars, detaching);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.render_simple(block, parent_node, parent_nodes, dynamic, vars, detaching);\n\n\t\t\tif (has_outros) {\n\t\t\t\tblock.chunks.outro.push(b`@transition_out(${name});`);\n\t\t\t}\n\t\t}\n\n\t\tif (if_exists_condition) {\n\t\t\tblock.chunks.create.push(b`if (${if_exists_condition}) ${name}.c();`);\n\t\t} else {\n\t\t\tblock.chunks.create.push(b`${name}.c();`);\n\t\t}\n\n\t\tif (parent_nodes && this.renderer.options.hydratable) {\n\t\t\tif (if_exists_condition) {\n\t\t\t\tblock.chunks.claim.push(\n\t\t\t\t\tb`if (${if_exists_condition}) ${name}.l(${parent_nodes});`\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tblock.chunks.claim.push(\n\t\t\t\t\tb`${name}.l(${parent_nodes});`\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (has_intros || has_outros) {\n\t\t\tblock.chunks.intro.push(b`@transition_in(${name});`);\n\t\t}\n\n\t\tif (needs_anchor) {\n\t\t\tblock.add_element(\n\t\t\t\tanchor as Identifier,\n\t\t\t\tx`@empty()`,\n\t\t\t\tparent_nodes && x`@empty()`,\n\t\t\t\tparent_node\n\t\t\t);\n\t\t}\n\n\t\tthis.branches.forEach(branch => {\n\t\t\tbranch.fragment.render(branch.block, null, x`#nodes` as unknown as Identifier);\n\t\t});\n\t}\n\n\trender_compound(\n\t\tblock: Block,\n\t\tparent_node: Identifier,\n\t\t_parent_nodes: Identifier,\n\t\tdynamic,\n\t\t{ name, anchor, has_else, if_exists_condition, has_transitions },\n\t\tdetaching\n\t) {\n\t\tconst select_block_type = this.renderer.component.get_unique_name('select_block_type');\n\t\tconst current_block_type = block.get_unique_name('current_block_type');\n\t\tconst get_block = has_else\n\t\t\t? x`${current_block_type}(#ctx)`\n\t\t\t: x`${current_block_type} && ${current_block_type}(#ctx)`;\n\n\t\tif (this.needs_update) {\n\t\t\tblock.chunks.init.push(b`\n\t\t\t\tfunction ${select_block_type}(#ctx, #dirty) {\n\t\t\t\t\t${this.branches.map(({ dependencies, condition, snippet, block }) => condition\n\t\t\t\t\t? b`\n\t\t\t\t\t${snippet && (\n\t\t\t\t\t\tdependencies.length > 0\n\t\t\t\t\t\t\t? b`if (${condition} == null || ${block.renderer.dirty(dependencies)}) ${condition} = !!${snippet}`\n\t\t\t\t\t\t\t: b`if (${condition} == null) ${condition} = !!${snippet}`\n\t\t\t\t\t)}\n\t\t\t\t\tif (${condition}) return ${block.name};`\n\t\t\t\t\t: b`return ${block.name};`)}\n\t\t\t\t}\n\t\t\t`);\n\t\t} else {\n\t\t\tblock.chunks.init.push(b`\n\t\t\t\tfunction ${select_block_type}(#ctx, #dirty) {\n\t\t\t\t\t${this.branches.map(({ condition, snippet, block }) => condition\n\t\t\t\t\t? b`if (${snippet || condition}) return ${block.name};`\n\t\t\t\t\t: b`return ${block.name};`)}\n\t\t\t\t}\n\t\t\t`);\n\t\t}\n\n\t\tblock.chunks.init.push(b`\n\t\t\tlet ${current_block_type} = ${select_block_type}(#ctx, ${this.get_initial_dirty_bit()});\n\t\t\tlet ${name} = ${get_block};\n\t\t`);\n\n\t\tconst initial_mount_node = parent_node || '#target';\n\t\tconst anchor_node = parent_node ? 'null' : '#anchor';\n\n\t\tif (if_exists_condition) {\n\t\t\tblock.chunks.mount.push(\n\t\t\t\tb`if (${if_exists_condition}) ${name}.m(${initial_mount_node}, ${anchor_node});`\n\t\t\t);\n\t\t} else {\n\t\t\tblock.chunks.mount.push(\n\t\t\t\tb`${name}.m(${initial_mount_node}, ${anchor_node});`\n\t\t\t);\n\t\t}\n\n\t\tif (this.needs_update) {\n\t\t\tconst update_mount_node = this.get_update_mount_node(anchor);\n\n\t\t\tconst change_block = b`\n\t\t\t\t${if_exists_condition ? b`if (${if_exists_condition}) ${name}.d(1)` : b`${name}.d(1)`};\n\t\t\t\t${name} = ${get_block};\n\t\t\t\tif (${name}) {\n\t\t\t\t\t${name}.c();\n\t\t\t\t\t${has_transitions && b`@transition_in(${name}, 1);`}\n\t\t\t\t\t${name}.m(${update_mount_node}, ${anchor});\n\t\t\t\t}\n\t\t\t`;\n\n\t\t\tif (dynamic) {\n\t\t\t\tblock.chunks.update.push(b`\n\t\t\t\t\tif (${current_block_type} === (${current_block_type} = ${select_block_type}(#ctx, #dirty)) && ${name}) {\n\t\t\t\t\t\t${name}.p(#ctx, #dirty);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t${change_block}\n\t\t\t\t\t}\n\t\t\t\t`);\n\t\t\t} else {\n\t\t\t\tblock.chunks.update.push(b`\n\t\t\t\t\tif (${current_block_type} !== (${current_block_type} = ${select_block_type}(#ctx, #dirty))) {\n\t\t\t\t\t\t${change_block}\n\t\t\t\t\t}\n\t\t\t\t`);\n\t\t\t}\n\t\t} else if (dynamic) {\n\t\t\tif (if_exists_condition) {\n\t\t\t\tblock.chunks.update.push(b`if (${if_exists_condition}) ${name}.p(#ctx, #dirty);`);\n\t\t\t} else {\n\t\t\t\tblock.chunks.update.push(b`${name}.p(#ctx, #dirty);`);\n\t\t\t}\n\t\t}\n\n\t\tif (if_exists_condition) {\n\t\t\tblock.chunks.destroy.push(b`\n\t\t\t\tif (${if_exists_condition}) {\n\t\t\t\t\t${name}.d(${detaching});\n\t\t\t\t}\n\t\t\t`);\n\t\t} else {\n\t\t\tblock.chunks.destroy.push(b`\n\t\t\t\t${name}.d(${detaching});\n\t\t\t`);\n\t\t}\n\t}\n\n\t// if any of the siblings have outros, we need to keep references to the blocks\n\t// (TODO does this only apply to bidi transitions?)\n\trender_compound_with_outros(\n\t\tblock: Block,\n\t\tparent_node: Identifier,\n\t\t_parent_nodes: Identifier,\n\t\tdynamic,\n\t\t{ name, anchor, has_else, has_transitions, if_exists_condition },\n\t\tdetaching\n\t) {\n\t\tconst select_block_type = this.renderer.component.get_unique_name('select_block_type');\n\t\tconst current_block_type_index = block.get_unique_name('current_block_type_index');\n\t\tconst previous_block_index = block.get_unique_name('previous_block_index');\n\t\tconst if_block_creators = block.get_unique_name('if_block_creators');\n\t\tconst if_blocks = block.get_unique_name('if_blocks');\n\n\t\tconst if_current_block_type_index = has_else\n\t\t\t? nodes => nodes\n\t\t\t: nodes => b`if (~${current_block_type_index}) { ${nodes} }`;\n\n\t\tblock.add_variable(current_block_type_index);\n\t\tblock.add_variable(name);\n\n\t\tblock.chunks.init.push(b`\n\t\t\tconst ${if_block_creators} = [\n\t\t\t\t${this.branches.map(branch => branch.block.name)}\n\t\t\t];\n\n\t\t\tconst ${if_blocks} = [];\n\n\t\t\t${this.needs_update\n\t\t\t\t? b`\n\t\t\t\t\tfunction ${select_block_type}(#ctx, #dirty) {\n\t\t\t\t\t\t${this.branches.map(({ dependencies, condition, snippet }, i) => condition\n\t\t\t\t\t\t? b`\n\t\t\t\t\t\t${snippet && (\n\t\t\t\t\t\t\tdependencies.length > 0\n\t\t\t\t\t\t\t\t? b`if (${block.renderer.dirty(dependencies)}) ${condition} = !!${snippet}`\n\t\t\t\t\t\t\t\t: b`if (${condition} == null) ${condition} = !!${snippet}`\n\t\t\t\t\t\t)}\n\t\t\t\t\t\tif (${condition}) return ${i};`\n\t\t\t\t\t\t: b`return ${i};`)}\n\t\t\t\t\t\t${!has_else && b`return -1;`}\n\t\t\t\t\t}\n\t\t\t\t`\n\t\t\t\t: b`\n\t\t\t\t\tfunction ${select_block_type}(#ctx, #dirty) {\n\t\t\t\t\t\t${this.branches.map(({ condition, snippet }, i) => condition\n\t\t\t\t\t\t? b`if (${snippet || condition}) return ${i};`\n\t\t\t\t\t\t: b`return ${i};`)}\n\t\t\t\t\t\t${!has_else && b`return -1;`}\n\t\t\t\t\t}\n\t\t\t\t`}\n\t\t`);\n\n\t\tif (has_else) {\n\t\t\tblock.chunks.init.push(b`\n\t\t\t\t${current_block_type_index} = ${select_block_type}(#ctx, ${this.get_initial_dirty_bit()});\n\t\t\t\t${name} = ${if_blocks}[${current_block_type_index}] = ${if_block_creators}[${current_block_type_index}](#ctx);\n\t\t\t`);\n\t\t} else {\n\t\t\tblock.chunks.init.push(b`\n\t\t\t\tif (~(${current_block_type_index} = ${select_block_type}(#ctx, ${this.get_initial_dirty_bit()}))) {\n\t\t\t\t\t${name} = ${if_blocks}[${current_block_type_index}] = ${if_block_creators}[${current_block_type_index}](#ctx);\n\t\t\t\t}\n\t\t\t`);\n\t\t}\n\n\t\tconst initial_mount_node = parent_node || '#target';\n\t\tconst anchor_node = parent_node ? 'null' : '#anchor';\n\n\t\tblock.chunks.mount.push(\n\t\t\tif_current_block_type_index(\n\t\t\t\tb`${if_blocks}[${current_block_type_index}].m(${initial_mount_node}, ${anchor_node});`\n\t\t\t)\n\t\t);\n\n\t\tif (this.needs_update) {\n\t\t\tconst update_mount_node = this.get_update_mount_node(anchor);\n\n\t\t\tconst destroy_old_block = b`\n\t\t\t\t@group_outros();\n\t\t\t\t@transition_out(${if_blocks}[${previous_block_index}], 1, 1, () => {\n\t\t\t\t\t${if_blocks}[${previous_block_index}] = null;\n\t\t\t\t});\n\t\t\t\t@check_outros();\n\t\t\t`;\n\n\t\t\tconst create_new_block = b`\n\t\t\t\t${name} = ${if_blocks}[${current_block_type_index}];\n\t\t\t\tif (!${name}) {\n\t\t\t\t\t${name} = ${if_blocks}[${current_block_type_index}] = ${if_block_creators}[${current_block_type_index}](#ctx);\n\t\t\t\t\t${name}.c();\n\t\t\t\t} else {\n\t\t\t\t\t${name}.p(#ctx, #dirty);\n\t\t\t\t}\n\t\t\t\t${has_transitions && b`@transition_in(${name}, 1);`}\n\t\t\t\t${name}.m(${update_mount_node}, ${anchor});\n\t\t\t`;\n\n\t\t\tconst change_block = has_else\n\t\t\t\t? b`\n\t\t\t\t\t${destroy_old_block}\n\n\t\t\t\t\t${create_new_block}\n\t\t\t\t`\n\t\t\t\t: b`\n\t\t\t\t\tif (${name}) {\n\t\t\t\t\t\t${destroy_old_block}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (~${current_block_type_index}) {\n\t\t\t\t\t\t${create_new_block}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t${name} = null;\n\t\t\t\t\t}\n\t\t\t\t`;\n\n\t\t\tif (dynamic) {\n\t\t\t\tblock.chunks.update.push(b`\n\t\t\t\t\tlet ${previous_block_index} = ${current_block_type_index};\n\t\t\t\t\t${current_block_type_index} = ${select_block_type}(#ctx, #dirty);\n\t\t\t\t\tif (${current_block_type_index} === ${previous_block_index}) {\n\t\t\t\t\t\t${if_current_block_type_index(b`${if_blocks}[${current_block_type_index}].p(#ctx, #dirty);`)}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t${change_block}\n\t\t\t\t\t}\n\t\t\t\t`);\n\t\t\t} else {\n\t\t\t\tblock.chunks.update.push(b`\n\t\t\t\t\tlet ${previous_block_index} = ${current_block_type_index};\n\t\t\t\t\t${current_block_type_index} = ${select_block_type}(#ctx, #dirty);\n\t\t\t\t\tif (${current_block_type_index} !== ${previous_block_index}) {\n\t\t\t\t\t\t${change_block}\n\t\t\t\t\t}\n\t\t\t\t`);\n\t\t\t}\n\t\t} else if (dynamic) {\n\t\t\tif (if_exists_condition) {\n\t\t\t\tblock.chunks.update.push(b`if (${if_exists_condition}) ${name}.p(#ctx, #dirty);`);\n\t\t\t} else {\n\t\t\t\tblock.chunks.update.push(b`${name}.p(#ctx, #dirty);`);\n\t\t\t}\n\t\t}\n\n\t\tblock.chunks.destroy.push(\n\t\t\tif_current_block_type_index(b`${if_blocks}[${current_block_type_index}].d(${detaching});`)\n\t\t);\n\t}\n\n\trender_simple(\n\t\tblock: Block,\n\t\tparent_node: Identifier,\n\t\t_parent_nodes: Identifier,\n\t\tdynamic,\n\t\t{ name, anchor, if_exists_condition, has_transitions },\n\t\tdetaching\n\t) {\n\t\tconst branch = this.branches[0];\n\n\t\tif (branch.snippet) block.add_variable(branch.condition, branch.snippet);\n\n\t\tblock.chunks.init.push(b`\n\t\t\tlet ${name} = ${branch.condition} && ${branch.block.name}(#ctx);\n\t\t`);\n\n\t\tconst initial_mount_node = parent_node || '#target';\n\t\tconst anchor_node = parent_node ? 'null' : '#anchor';\n\n\t\tblock.chunks.mount.push(\n\t\t\tb`if (${name}) ${name}.m(${initial_mount_node}, ${anchor_node});`\n\t\t);\n\n\t\tif (branch.dependencies.length > 0) {\n\t\t\tconst update_mount_node = this.get_update_mount_node(anchor);\n\n\t\t\tconst enter = b`\n\t\t\t\tif (${name}) {\n\t\t\t\t\t${dynamic && b`${name}.p(#ctx, #dirty);`}\n\t\t\t\t\t${\n\t\t\t\t\t\thas_transitions &&\n\t\t\t\t\t\tb`if (${block.renderer.dirty(branch.dependencies)}) {\n\t\t\t\t\t\t\t@transition_in(${name}, 1);\n\t\t\t\t\t\t}`\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t${name} = ${branch.block.name}(#ctx);\n\t\t\t\t\t${name}.c();\n\t\t\t\t\t${has_transitions && b`@transition_in(${name}, 1);`}\n\t\t\t\t\t${name}.m(${update_mount_node}, ${anchor});\n\t\t\t\t}\n\t\t\t`;\n\n\t\t\tif (branch.snippet) {\n\t\t\t\tblock.chunks.update.push(b`if (${block.renderer.dirty(branch.dependencies)}) ${branch.condition} = ${branch.snippet}`);\n\t\t\t}\n\n\t\t\t// no `p()` here — we don't want to update outroing nodes,\n\t\t\t// as that will typically result in glitching\n\t\t\tif (branch.block.has_outro_method) {\n\t\t\t\tblock.chunks.update.push(b`\n\t\t\t\t\tif (${branch.condition}) {\n\t\t\t\t\t\t${enter}\n\t\t\t\t\t} else if (${name}) {\n\t\t\t\t\t\t@group_outros();\n\t\t\t\t\t\t@transition_out(${name}, 1, 1, () => {\n\t\t\t\t\t\t\t${name} = null;\n\t\t\t\t\t\t});\n\t\t\t\t\t\t@check_outros();\n\t\t\t\t\t}\n\t\t\t\t`);\n\t\t\t} else {\n\t\t\t\tblock.chunks.update.push(b`\n\t\t\t\t\tif (${branch.condition}) {\n\t\t\t\t\t\t${enter}\n\t\t\t\t\t} else if (${name}) {\n\t\t\t\t\t\t${name}.d(1);\n\t\t\t\t\t\t${name} = null;\n\t\t\t\t\t}\n\t\t\t\t`);\n\t\t\t}\n\t\t} else if (dynamic) {\n\t\t\tblock.chunks.update.push(b`\n\t\t\t\tif (${branch.condition}) ${name}.p(#ctx, #dirty);\n\t\t\t`);\n\t\t}\n\n\t\tif (if_exists_condition) {\n\t\t\tblock.chunks.destroy.push(b`\n\t\t\t\tif (${if_exists_condition}) ${name}.d(${detaching});\n\t\t\t`);\n\t\t} else {\n\t\t\tblock.chunks.destroy.push(b`\n\t\t\t\t${name}.d(${detaching});\n\t\t\t`);\n\t\t}\n\t}\n\n\tget_initial_dirty_bit() {\n\t\tconst _this = this;\n\t\t// TODO: context-overflow make it less gross\n\t\tconst val: UnaryExpression = x`-1` as UnaryExpression;\n\t\treturn {\n\t\t\tget type() {\n\t\t\t\treturn _this.renderer.context_overflow ? 'ArrayExpression' : 'UnaryExpression';\n\t\t\t},\n\t\t\t// as [-1]\n\t\t\telements: [val],\n\t\t\t// as -1\n\t\t\toperator: val.operator,\n\t\t\tprefix: val.prefix,\n\t\t\targument: val.argument\n\t\t};\n\t}\n}\n","import Wrapper from './shared/Wrapper';\nimport Renderer from '../Renderer';\nimport Block from '../Block';\nimport EachBlock from '../../nodes/EachBlock';\nimport KeyBlock from '../../nodes/KeyBlock';\nimport create_debugging_comment from './shared/create_debugging_comment';\nimport FragmentWrapper from './Fragment';\nimport { b, x } from 'code-red';\nimport { Identifier } from 'estree';\n\nexport default class KeyBlockWrapper extends Wrapper {\n\tnode: KeyBlock;\n\tfragment: FragmentWrapper;\n\tblock: Block;\n\tdependencies: string[];\n\tvar: Identifier = { type: 'Identifier', name: 'key_block' };\n\n\tconstructor(\n\t\trenderer: Renderer,\n\t\tblock: Block,\n\t\tparent: Wrapper,\n\t\tnode: EachBlock,\n\t\tstrip_whitespace: boolean,\n\t\tnext_sibling: Wrapper\n\t) {\n\t\tsuper(renderer, block, parent, node);\n\n\t\tthis.cannot_use_innerhtml();\n\t\tthis.not_static_content();\n\n\t\tthis.dependencies = node.expression.dynamic_dependencies();\n\n\t\tif (this.dependencies.length) {\n\t\t\tblock = block.child({\n\t\t\t\tcomment: create_debugging_comment(node, renderer.component),\n\t\t\t\tname: renderer.component.get_unique_name('create_key_block'),\n\t\t\t\ttype: 'key'\n\t\t\t});\n\t\t\trenderer.blocks.push(block);\n\t\t}\n\n\t\tthis.block = block;\n\t\tthis.fragment = new FragmentWrapper(\n\t\t\trenderer,\n\t\t\tthis.block,\n\t\t\tnode.children,\n\t\t\tparent,\n\t\t\tstrip_whitespace,\n\t\t\tnext_sibling\n\t\t);\n\t}\n\n\trender(block: Block, parent_node: Identifier, parent_nodes: Identifier) {\n\t\tif (this.dependencies.length === 0) {\n\t\t\tthis.render_static_key(block, parent_node, parent_nodes);\n\t\t} else {\n\t\t\tthis.render_dynamic_key(block, parent_node, parent_nodes);\n\t\t}\n\t}\n\n\trender_static_key(_block: Block, parent_node: Identifier, parent_nodes: Identifier) {\n\t\tthis.fragment.render(this.block, parent_node, parent_nodes);\n\t}\n\n\trender_dynamic_key(block: Block, parent_node: Identifier, parent_nodes: Identifier) {\n\t\tthis.fragment.render(\n\t\t\tthis.block,\n\t\t\tnull,\n\t\t\t(x`#nodes` as unknown) as Identifier\n\t\t);\n\n\t\tconst has_transitions = !!(\n\t\t\tthis.block.has_intro_method || this.block.has_outro_method\n\t\t);\n\t\tconst dynamic = this.block.has_update_method;\n\n\t\tconst previous_key = block.get_unique_name('previous_key');\n\t\tconst snippet = this.node.expression.manipulate(block);\n\t\tblock.add_variable(previous_key, snippet);\n\n\t\tconst not_equal = this.renderer.component.component_options.immutable ? x`@not_equal` : x`@safe_not_equal`;\n\t\tconst condition = x`${this.renderer.dirty(this.dependencies)} && ${not_equal}(${previous_key}, ${previous_key} = ${snippet})`;\n\n\t\tblock.chunks.init.push(b`\n\t\t\tlet ${this.var} = ${this.block.name}(#ctx);\n\t\t`);\n\t\tblock.chunks.create.push(b`${this.var}.c();`);\n\t\tif (this.renderer.options.hydratable) {\n\t\t\tblock.chunks.claim.push(b`${this.var}.l(${parent_nodes});`);\n\t\t}\n\t\tblock.chunks.mount.push(\n\t\t\tb`${this.var}.m(${parent_node || '#target'}, ${\n\t\t\t\tparent_node ? 'null' : '#anchor'\n\t\t\t});`\n\t\t);\n\t\tconst anchor = this.get_or_create_anchor(block, parent_node, parent_nodes);\n\t\tconst body = b`\n\t\t\t${\n\t\t\t\thas_transitions\n\t\t\t\t\t? b`\n\t\t\t\t\t\t@group_outros();\n\t\t\t\t\t\t@transition_out(${this.var}, 1, 1, @noop);\n\t\t\t\t\t\t@check_outros();\n\t\t\t\t\t`\n\t\t\t\t\t: b`${this.var}.d(1);`\n\t\t\t}\n\t\t\t${this.var} = ${this.block.name}(#ctx);\n\t\t\t${this.var}.c();\n\t\t\t${has_transitions && b`@transition_in(${this.var})`}\n\t\t\t${this.var}.m(${this.get_update_mount_node(anchor)}, ${anchor});\n\t\t`;\n\n\t\tif (dynamic) {\n\t\t\tblock.chunks.update.push(b`\n\t\t\t\tif (${condition}) {\n\t\t\t\t\t${body}\n\t\t\t\t} else {\n\t\t\t\t\t${this.var}.p(#ctx, #dirty);\n\t\t\t\t}\n\t\t\t`);\n\t\t} else {\n\t\t\tblock.chunks.update.push(b`\n\t\t\t\tif (${condition}) {\n\t\t\t\t\t${body}\n\t\t\t\t}\n\t\t\t`);\n\t\t}\n\n\t\tif (has_transitions) {\n\t\t\tblock.chunks.intro.push(b`@transition_in(${this.var})`);\n\t\t\tblock.chunks.outro.push(b`@transition_out(${this.var})`);\n\t\t}\n\n\t\tblock.chunks.destroy.push(b`${this.var}.d(detaching)`);\n\t}\n}\n","import { MemberExpression, Identifier } from 'estree';\n\nexport function string_to_member_expression(name: string) {\n\tconst parts = name.split('.');\n\tlet node: MemberExpression | Identifier = {\n\t\ttype: 'Identifier',\n\t\tname: parts[0]\n\t};\n\tfor (let i = 1; i < parts.length; i++) {\n\t\tnode = {\n\t\t\ttype: 'MemberExpression',\n\t\t\tobject: node,\n\t\t\tproperty: { type: 'Identifier', name: parts[i] }\n\t\t} as MemberExpression;\n\t}\n\treturn node;\n}\n","import Wrapper from '../shared/Wrapper';\nimport BindingWrapper from '../Element/Binding';\nimport Renderer from '../../Renderer';\nimport Block from '../../Block';\nimport InlineComponent from '../../../nodes/InlineComponent';\nimport FragmentWrapper from '../Fragment';\nimport { sanitize } from '../../../../utils/names';\nimport add_to_set from '../../../utils/add_to_set';\nimport { b, x, p } from 'code-red';\nimport Attribute from '../../../nodes/Attribute';\nimport create_debugging_comment from '../shared/create_debugging_comment';\nimport { get_slot_definition } from '../shared/get_slot_definition';\nimport TemplateScope from '../../../nodes/shared/TemplateScope';\nimport is_dynamic from '../shared/is_dynamic';\nimport bind_this from '../shared/bind_this';\nimport { Node, Identifier, ObjectExpression } from 'estree';\nimport EventHandler from '../Element/EventHandler';\nimport { extract_names } from 'periscopic';\nimport mark_each_block_bindings from '../shared/mark_each_block_bindings';\nimport { string_to_member_expression } from '../../../utils/string_to_member_expression';\n\nexport default class InlineComponentWrapper extends Wrapper {\n\tvar: Identifier;\n\tslots: Map<string, { block: Block; scope: TemplateScope; get_context?: Node; get_changes?: Node }> = new Map();\n\tnode: InlineComponent;\n\tfragment: FragmentWrapper;\n\n\tconstructor(\n\t\trenderer: Renderer,\n\t\tblock: Block,\n\t\tparent: Wrapper,\n\t\tnode: InlineComponent,\n\t\tstrip_whitespace: boolean,\n\t\tnext_sibling: Wrapper\n\t) {\n\t\tsuper(renderer, block, parent, node);\n\n\t\tthis.cannot_use_innerhtml();\n\t\tthis.not_static_content();\n\n\t\tif (this.node.expression) {\n\t\t\tblock.add_dependencies(this.node.expression.dependencies);\n\t\t}\n\n\t\tthis.node.attributes.forEach(attr => {\n\t\t\tblock.add_dependencies(attr.dependencies);\n\t\t});\n\n\t\tthis.node.bindings.forEach(binding => {\n\t\t\tif (binding.is_contextual) {\n\t\t\t\tmark_each_block_bindings(this, binding);\n\t\t\t}\n\n\t\t\tblock.add_dependencies(binding.expression.dependencies);\n\t\t});\n\n\t\tthis.node.handlers.forEach(handler => {\n\t\t\tif (handler.expression) {\n\t\t\t\tblock.add_dependencies(handler.expression.dependencies);\n\t\t\t}\n\t\t});\n\n\t\tthis.var = {\n\t\t\ttype: 'Identifier',\n\t\t\tname: (\n\t\t\t\tthis.node.name === 'svelte:self' ? renderer.component.name.name :\n\t\t\t\t\tthis.node.name === 'svelte:component' ? 'switch_instance' :\n\t\t\t\t\t\tsanitize(this.node.name)\n\t\t\t).toLowerCase()\n\t\t};\n\n\t\tif (this.node.children.length) {\n\t\t\tthis.node.lets.forEach(l => {\n\t\t\t\textract_names(l.value || l.name).forEach(name => {\n\t\t\t\t\trenderer.add_to_context(name, true);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tconst default_slot = block.child({\n\t\t\t\tcomment: create_debugging_comment(node, renderer.component),\n\t\t\t\tname: renderer.component.get_unique_name('create_default_slot'),\n\t\t\t\ttype: 'slot'\n\t\t\t});\n\n\t\t\tthis.renderer.blocks.push(default_slot);\n\n\t\t\tthis.slots.set('default', get_slot_definition(default_slot, this.node.scope, this.node.lets));\n\t\t\tthis.fragment = new FragmentWrapper(renderer, default_slot, node.children, this, strip_whitespace, next_sibling);\n\n\t\t\tconst dependencies: Set<string> = new Set();\n\n\t\t\t// TODO is this filtering necessary? (I *think* so)\n\t\t\tdefault_slot.dependencies.forEach(name => {\n\t\t\t\tif (!this.node.scope.is_let(name)) {\n\t\t\t\t\tdependencies.add(name);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tblock.add_dependencies(dependencies);\n\t\t}\n\n\t\tblock.add_outro();\n\t}\n\n\twarn_if_reactive() {\n\t\tconst { name } = this.node;\n\t\tconst variable = this.renderer.component.var_lookup.get(name);\n\t\tif (!variable) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (variable.reassigned || variable.export_name || variable.is_reactive_dependency) {\n\t\t\tthis.renderer.component.warn(this.node, {\n\t\t\t\tcode: 'reactive-component',\n\t\t\t\tmessage: `<${name}/> will not be reactive if ${name} changes. Use <svelte:component this={${name}}/> if you want this reactivity.`\n\t\t\t});\n\t\t}\n\t}\n\n\trender(\n\t\tblock: Block,\n\t\tparent_node: Identifier,\n\t\tparent_nodes: Identifier\n\t) {\n\t\tthis.warn_if_reactive();\n\n\t\tconst { renderer } = this;\n\t\tconst { component } = renderer;\n\n\t\tconst name = this.var;\n\t\tblock.add_variable(name);\n\n\t\tconst component_opts = x`{}` as ObjectExpression;\n\n\t\tconst statements: Array<Node | Node[]> = [];\n\t\tconst updates: Array<Node | Node[]> = [];\n\n\t\tif (this.fragment) {\n\t\t\tthis.renderer.add_to_context('$$scope', true);\n\t\t\tconst default_slot = this.slots.get('default');\n\n\t\t\tthis.fragment.nodes.forEach((child) => {\n\t\t\t\tchild.render(default_slot.block, null, x`#nodes` as unknown as Identifier);\n\t\t\t});\n\t\t}\n\n\t\tlet props;\n\t\tconst name_changes = block.get_unique_name(`${name.name}_changes`);\n\n\t\tconst uses_spread = !!this.node.attributes.find(a => a.is_spread);\n\n\t\t// removing empty slot\n\t\tfor (const slot of this.slots.keys()) {\n\t\t\tif (!this.slots.get(slot).block.has_content()) {\n\t\t\t\tthis.renderer.remove_block(this.slots.get(slot).block);\n\t\t\t\tthis.slots.delete(slot);\n\t\t\t}\n\t\t}\n\n\t\tconst initial_props = this.slots.size > 0\n\t\t\t? [\n\t\t\t\tp`$$slots: {\n\t\t\t\t\t${Array.from(this.slots).map(([name, slot]) => {\n\t\t\t\t\t\treturn p`${name}: [${slot.block.name}, ${slot.get_context || null}, ${slot.get_changes || null}]`;\n\t\t\t\t\t})}\n\t\t\t\t}`,\n\t\t\t\tp`$$scope: {\n\t\t\t\t\tctx: #ctx\n\t\t\t\t}`\n\t\t\t]\n\t\t\t: [];\n\n\t\tconst attribute_object = uses_spread\n\t\t\t? x`{ ${initial_props} }`\n\t\t\t: x`{\n\t\t\t\t${this.node.attributes.map(attr => p`${attr.name}: ${attr.get_value(block)}`)},\n\t\t\t\t${initial_props}\n\t\t\t}`;\n\n\t\tif (this.node.attributes.length || this.node.bindings.length || initial_props.length) {\n\t\t\tif (!uses_spread && this.node.bindings.length === 0) {\n\t\t\t\tcomponent_opts.properties.push(p`props: ${attribute_object}`);\n\t\t\t} else {\n\t\t\t\tprops = block.get_unique_name(`${name.name}_props`);\n\t\t\t\tcomponent_opts.properties.push(p`props: ${props}`);\n\t\t\t}\n\t\t}\n\n\t\tif (component.compile_options.dev) {\n\t\t\t// TODO this is a terrible hack, but without it the component\n\t\t\t// will complain that options.target is missing. This would\n\t\t\t// work better if components had separate public and private\n\t\t\t// APIs\n\t\t\tcomponent_opts.properties.push(p`$$inline: true`);\n\t\t}\n\n\t\tconst fragment_dependencies = new Set(this.fragment ? ['$$scope'] : []);\n\t\tthis.slots.forEach(slot => {\n\t\t\tslot.block.dependencies.forEach(name => {\n\t\t\t\tconst is_let = slot.scope.is_let(name);\n\t\t\t\tconst variable = renderer.component.var_lookup.get(name);\n\n\t\t\t\tif (is_let || is_dynamic(variable)) fragment_dependencies.add(name);\n\t\t\t});\n\t\t});\n\n\t\tconst dynamic_attributes = this.node.attributes.filter(a => a.get_dependencies().length > 0);\n\n\t\tif (!uses_spread && (dynamic_attributes.length > 0 || this.node.bindings.length > 0 || fragment_dependencies.size > 0)) {\n\t\t\tupdates.push(b`const ${name_changes} = {};`);\n\t\t}\n\n\t\tif (this.node.attributes.length) {\n\t\t\tif (uses_spread) {\n\t\t\t\tconst levels = block.get_unique_name(`${this.var.name}_spread_levels`);\n\n\t\t\t\tconst initial_props = [];\n\t\t\t\tconst changes = [];\n\n\t\t\t\tconst all_dependencies: Set<string> = new Set();\n\n\t\t\t\tthis.node.attributes.forEach(attr => {\n\t\t\t\t\tadd_to_set(all_dependencies, attr.dependencies);\n\t\t\t\t});\n\n\t\t\t\tthis.node.attributes.forEach((attr, i) => {\n\t\t\t\t\tconst { name, dependencies } = attr;\n\n\t\t\t\t\tconst condition = dependencies.size > 0 && (dependencies.size !== all_dependencies.size)\n\t\t\t\t\t\t? renderer.dirty(Array.from(dependencies))\n\t\t\t\t\t\t: null;\n\t\t\t\t\tconst unchanged = dependencies.size === 0;\n\n\t\t\t\t\tlet change_object;\n\t\t\t\t\tif (attr.is_spread) {\n\t\t\t\t\t\tconst value = attr.expression.manipulate(block);\n\t\t\t\t\t\tinitial_props.push(value);\n\n\t\t\t\t\t\tlet value_object = value;\n\t\t\t\t\t\tif (attr.expression.node.type !== 'ObjectExpression') {\n\t\t\t\t\t\t\tvalue_object = x`@get_spread_object(${value})`;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tchange_object = value_object;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst obj = x`{ ${name}: ${attr.get_value(block)} }`;\n\t\t\t\t\t\tinitial_props.push(obj);\n\t\t\t\t\t\tchange_object = obj;\n\t\t\t\t\t}\n\n\t\t\t\t\tchanges.push(\n\t\t\t\t\t\tunchanged\n\t\t\t\t\t\t\t? x`${levels}[${i}]`\n\t\t\t\t\t\t\t: condition\n\t\t\t\t\t\t\t? x`${condition} && ${change_object}`\n\t\t\t\t\t\t\t: change_object\n\t\t\t\t\t);\n\t\t\t\t});\n\n\t\t\t\tblock.chunks.init.push(b`\n\t\t\t\t\tconst ${levels} = [\n\t\t\t\t\t\t${initial_props}\n\t\t\t\t\t];\n\t\t\t\t`);\n\n\t\t\t\tstatements.push(b`\n\t\t\t\t\tfor (let #i = 0; #i < ${levels}.length; #i += 1) {\n\t\t\t\t\t\t${props} = @assign(${props}, ${levels}[#i]);\n\t\t\t\t\t}\n\t\t\t\t`);\n\n\t\t\t\tif (all_dependencies.size) {\n\t\t\t\t\tconst condition = renderer.dirty(Array.from(all_dependencies));\n\n\t\t\t\t\tupdates.push(b`\n\t\t\t\t\t\tconst ${name_changes} = ${condition} ? @get_spread_update(${levels}, [\n\t\t\t\t\t\t\t${changes}\n\t\t\t\t\t\t]) : {}\n\t\t\t\t\t`);\n\t\t\t\t} else {\n\t\t\t\t\tupdates.push(b`\n\t\t\t\t\t\tconst ${name_changes} = {};\n\t\t\t\t\t`);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdynamic_attributes.forEach((attribute: Attribute) => {\n\t\t\t\t\tconst dependencies = attribute.get_dependencies();\n\t\t\t\t\tif (dependencies.length > 0) {\n\t\t\t\t\t\tconst condition = renderer.dirty(dependencies);\n\n\t\t\t\t\t\tupdates.push(b`\n\t\t\t\t\t\t\tif (${condition}) ${name_changes}.${attribute.name} = ${attribute.get_value(block)};\n\t\t\t\t\t\t`);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (fragment_dependencies.size > 0) {\n\t\t\tupdates.push(b`\n\t\t\t\tif (${renderer.dirty(Array.from(fragment_dependencies))}) {\n\t\t\t\t\t${name_changes}.$$scope = { dirty: #dirty, ctx: #ctx };\n\t\t\t\t}`);\n\t\t}\n\n\t\tconst munged_bindings = this.node.bindings.map(binding => {\n\t\t\tcomponent.has_reactive_assignments = true;\n\n\t\t\tif (binding.name === 'this') {\n\t\t\t\treturn bind_this(component, block, new BindingWrapper(block, binding, this), this.var);\n\t\t\t}\n\n\t\t\tconst id = component.get_unique_name(`${this.var.name}_${binding.name}_binding`);\n\t\t\trenderer.add_to_context(id.name);\n\t\t\tconst callee = renderer.reference(id);\n\n\t\t\tconst updating = block.get_unique_name(`updating_${binding.name}`);\n\t\t\tblock.add_variable(updating);\n\n\t\t\tconst snippet = binding.expression.manipulate(block);\n\n\t\t\tstatements.push(b`\n\t\t\t\tif (${snippet} !== void 0) {\n\t\t\t\t\t${props}.${binding.name} = ${snippet};\n\t\t\t\t}`\n\t\t\t);\n\n\t\t\tupdates.push(b`\n\t\t\t\tif (!${updating} && ${renderer.dirty(Array.from(binding.expression.dependencies))}) {\n\t\t\t\t\t${updating} = true;\n\t\t\t\t\t${name_changes}.${binding.name} = ${snippet};\n\t\t\t\t\t@add_flush_callback(() => ${updating} = false);\n\t\t\t\t}\n\t\t\t`);\n\n\t\t\tconst contextual_dependencies = Array.from(binding.expression.contextual_dependencies);\n\t\t\tconst dependencies = Array.from(binding.expression.dependencies);\n\n\t\t\tlet lhs = binding.raw_expression;\n\n\t\t\tif (binding.is_contextual && binding.expression.node.type === 'Identifier') {\n\t\t\t\t// bind:x={y} — we can't just do `y = x`, we need to\n\t\t\t\t// to `array[index] = x;\n\t\t\t\tconst { name } = binding.expression.node;\n\t\t\t\tconst { object, property, snippet } = block.bindings.get(name);\n\t\t\t\tlhs = snippet;\n\t\t\t\tcontextual_dependencies.push(object.name, property.name);\n\t\t\t}\n\n\t\t\tconst params = [x`#value`];\n\t\t\tif (contextual_dependencies.length > 0) {\n\t\t\t\tconst args = [];\n\n\t\t\t\tcontextual_dependencies.forEach(name => {\n\t\t\t\t\tparams.push({\n\t\t\t\t\t\ttype: 'Identifier',\n\t\t\t\t\t\tname\n\t\t\t\t\t});\n\n\t\t\t\t\trenderer.add_to_context(name, true);\n\t\t\t\t\targs.push(renderer.reference(name));\n\t\t\t\t});\n\n\n\t\t\t\tblock.chunks.init.push(b`\n\t\t\t\t\tfunction ${id}(#value) {\n\t\t\t\t\t\t${callee}.call(null, #value, ${args});\n\t\t\t\t\t}\n\t\t\t\t`);\n\n\t\t\t\tblock.maintain_context = true; // TODO put this somewhere more logical\n\t\t\t} else {\n\t\t\t\tblock.chunks.init.push(b`\n\t\t\t\t\tfunction ${id}(#value) {\n\t\t\t\t\t\t${callee}.call(null, #value);\n\t\t\t\t\t}\n\t\t\t\t`);\n\t\t\t}\n\n\t\t\tconst body = b`\n\t\t\t\tfunction ${id}(${params}) {\n\t\t\t\t\t${lhs} = #value;\n\t\t\t\t\t${renderer.invalidate(dependencies[0])};\n\t\t\t\t}\n\t\t\t`;\n\n\t\t\tcomponent.partly_hoisted.push(body);\n\n\t\t\treturn b`@binding_callbacks.push(() => @bind(${this.var}, '${binding.name}', ${id}));`;\n\t\t});\n\n\t\tconst munged_handlers = this.node.handlers.map(handler => {\n\t\t\tconst event_handler = new EventHandler(handler, this);\n\t\t\tlet snippet = event_handler.get_snippet(block);\n\t\t\tif (handler.modifiers.has('once')) snippet = x`@once(${snippet})`;\n\n\t\t\treturn b`${name}.$on(\"${handler.name}\", ${snippet});`;\n\t\t});\n\n\t\tif (this.node.name === 'svelte:component') {\n\t\t\tconst switch_value = block.get_unique_name('switch_value');\n\t\t\tconst switch_props = block.get_unique_name('switch_props');\n\n\t\t\tconst snippet = this.node.expression.manipulate(block);\n\n\t\t\tblock.chunks.init.push(b`\n\t\t\t\tvar ${switch_value} = ${snippet};\n\n\t\t\t\tfunction ${switch_props}(#ctx) {\n\t\t\t\t\t${(this.node.attributes.length > 0 || this.node.bindings.length > 0) && b`\n\t\t\t\t\t${props && b`let ${props} = ${attribute_object};`}`}\n\t\t\t\t\t${statements}\n\t\t\t\t\treturn ${component_opts};\n\t\t\t\t}\n\n\t\t\t\tif (${switch_value}) {\n\t\t\t\t\t${name} = new ${switch_value}(${switch_props}(#ctx));\n\n\t\t\t\t\t${munged_bindings}\n\t\t\t\t\t${munged_handlers}\n\t\t\t\t}\n\t\t\t`);\n\n\t\t\tblock.chunks.create.push(\n\t\t\t\tb`if (${name}) @create_component(${name}.$$.fragment);`\n\t\t\t);\n\n\t\t\tif (parent_nodes && this.renderer.options.hydratable) {\n\t\t\t\tblock.chunks.claim.push(\n\t\t\t\t\tb`if (${name}) @claim_component(${name}.$$.fragment, ${parent_nodes});`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tblock.chunks.mount.push(b`\n\t\t\t\tif (${name}) {\n\t\t\t\t\t@mount_component(${name}, ${parent_node || '#target'}, ${parent_node ? 'null' : '#anchor'});\n\t\t\t\t}\n\t\t\t`);\n\n\t\t\tconst anchor = this.get_or_create_anchor(block, parent_node, parent_nodes);\n\t\t\tconst update_mount_node = this.get_update_mount_node(anchor);\n\n\t\t\tif (updates.length) {\n\t\t\t\tblock.chunks.update.push(b`\n\t\t\t\t\t${updates}\n\t\t\t\t`);\n\t\t\t}\n\n\t\t\tblock.chunks.update.push(b`\n\t\t\t\tif (${switch_value} !== (${switch_value} = ${snippet})) {\n\t\t\t\t\tif (${name}) {\n\t\t\t\t\t\t@group_outros();\n\t\t\t\t\t\tconst old_component = ${name};\n\t\t\t\t\t\t@transition_out(old_component.$$.fragment, 1, 0, () => {\n\t\t\t\t\t\t\t@destroy_component(old_component, 1);\n\t\t\t\t\t\t});\n\t\t\t\t\t\t@check_outros();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (${switch_value}) {\n\t\t\t\t\t\t${name} = new ${switch_value}(${switch_props}(#ctx));\n\n\t\t\t\t\t\t${munged_bindings}\n\t\t\t\t\t\t${munged_handlers}\n\n\t\t\t\t\t\t@create_component(${name}.$$.fragment);\n\t\t\t\t\t\t@transition_in(${name}.$$.fragment, 1);\n\t\t\t\t\t\t@mount_component(${name}, ${update_mount_node}, ${anchor});\n\t\t\t\t\t} else {\n\t\t\t\t\t\t${name} = null;\n\t\t\t\t\t}\n\t\t\t\t} else if (${switch_value}) {\n\t\t\t\t\t${updates.length > 0 && b`${name}.$set(${name_changes});`}\n\t\t\t\t}\n\t\t\t`);\n\n\t\t\tblock.chunks.intro.push(b`\n\t\t\t\tif (${name}) @transition_in(${name}.$$.fragment, #local);\n\t\t\t`);\n\n\t\t\tblock.chunks.outro.push(\n\t\t\t\tb`if (${name}) @transition_out(${name}.$$.fragment, #local);`\n\t\t\t);\n\n\t\t\tblock.chunks.destroy.push(b`if (${name}) @destroy_component(${name}, ${parent_node ? null : 'detaching'});`);\n\t\t} else {\n\t\t\tconst expression = this.node.name === 'svelte:self'\n\t\t\t\t? component.name\n\t\t\t\t: this.renderer.reference(string_to_member_expression(this.node.name));\n\n\t\t\tblock.chunks.init.push(b`\n\t\t\t\t${(this.node.attributes.length > 0 || this.node.bindings.length > 0) && b`\n\t\t\t\t${props && b`let ${props} = ${attribute_object};`}`}\n\t\t\t\t${statements}\n\t\t\t\t${name} = new ${expression}(${component_opts});\n\n\t\t\t\t${munged_bindings}\n\t\t\t\t${munged_handlers}\n\t\t\t`);\n\n\t\t\tblock.chunks.create.push(b`@create_component(${name}.$$.fragment);`);\n\n\t\t\tif (parent_nodes && this.renderer.options.hydratable) {\n\t\t\t\tblock.chunks.claim.push(\n\t\t\t\t\tb`@claim_component(${name}.$$.fragment, ${parent_nodes});`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tblock.chunks.mount.push(\n\t\t\t\tb`@mount_component(${name}, ${parent_node || '#target'}, ${parent_node ? 'null' : '#anchor'});`\n\t\t\t);\n\n\t\t\tblock.chunks.intro.push(b`\n\t\t\t\t@transition_in(${name}.$$.fragment, #local);\n\t\t\t`);\n\n\t\t\tif (updates.length) {\n\t\t\t\tblock.chunks.update.push(b`\n\t\t\t\t\t${updates}\n\t\t\t\t\t${name}.$set(${name_changes});\n\t\t\t\t`);\n\t\t\t}\n\n\t\t\tblock.chunks.destroy.push(b`\n\t\t\t\t@destroy_component(${name}, ${parent_node ? null : 'detaching'});\n\t\t\t`);\n\n\t\t\tblock.chunks.outro.push(\n\t\t\t\tb`@transition_out(${name}.$$.fragment, #local);`\n\t\t\t);\n\t\t}\n\t}\n}\n","import Attribute from '../nodes/Attribute';\nimport { p, x } from 'code-red';\nimport { string_literal } from './stringify';\nimport Block from '../render_dom/Block';\n\nexport default function get_slot_data(values: Map<string, Attribute>, block: Block = null) {\n\treturn {\n\t\ttype: 'ObjectExpression',\n\t\tproperties: Array.from(values.values())\n\t\t\t.filter(attribute => attribute.name !== 'name')\n\t\t\t.map(attribute => {\n\t\t\t\tconst value = get_value(block, attribute);\n\t\t\t\treturn p`${attribute.name}: ${value}`;\n\t\t\t})\n\t};\n}\n\nfunction get_value(block: Block, attribute: Attribute) {\n\tif (attribute.is_true) return x`true`;\n\tif (attribute.chunks.length === 0) return x`\"\"`;\n\n\tlet value = attribute.chunks\n\t\t.map(chunk => chunk.type === 'Text' ? string_literal(chunk.data) : (block ? chunk.manipulate(block) : chunk.node))\n\t\t.reduce((lhs, rhs) => x`${lhs} + ${rhs}`);\n\n\tif (attribute.chunks.length > 1 && attribute.chunks[0].type !== 'Text') {\n\t\tvalue = x`\"\" + ${value}`;\n\t}\n\n\treturn value;\n}\n","import Wrapper from './shared/Wrapper';\nimport Renderer from '../Renderer';\nimport Block from '../Block';\nimport Slot from '../../nodes/Slot';\nimport FragmentWrapper from './Fragment';\nimport { b, p, x } from 'code-red';\nimport { sanitize } from '../../../utils/names';\nimport add_to_set from '../../utils/add_to_set';\nimport get_slot_data from '../../utils/get_slot_data';\nimport { is_reserved_keyword } from '../../utils/reserved_keywords';\nimport Expression from '../../nodes/shared/Expression';\nimport is_dynamic from './shared/is_dynamic';\nimport { Identifier, ObjectExpression } from 'estree';\nimport create_debugging_comment from './shared/create_debugging_comment';\nimport create_slot_block from './Element/create_slot_block';\n\nexport default class SlotWrapper extends Wrapper {\n\tnode: Slot;\n\tfragment: FragmentWrapper;\n\tfallback: Block | null = null;\n\tslot_block: Block;\n\n\tvar: Identifier = { type: 'Identifier', name: 'slot' };\n\tdependencies: Set<string> = new Set(['$$scope']);\n\n\tconstructor(\n\t\trenderer: Renderer,\n\t\tblock: Block,\n\t\tparent: Wrapper,\n\t\tnode: Slot,\n\t\tstrip_whitespace: boolean,\n\t\tnext_sibling: Wrapper\n\t) {\n\t\tsuper(renderer, block, parent, node);\n\t\tthis.cannot_use_innerhtml();\n\t\tthis.not_static_content();\n\n\t\tif (this.node.children.length) {\n\t\t\tthis.fallback = block.child({\n\t\t\t\tcomment: create_debugging_comment(this.node.children[0], this.renderer.component),\n\t\t\t\tname: this.renderer.component.get_unique_name('fallback_block'),\n\t\t\t\ttype: 'fallback'\n\t\t\t});\n\t\t\trenderer.blocks.push(this.fallback);\n\t\t}\n\n\t\tif (this.node.values.has('slot')) {\n\t\t\tblock = create_slot_block(this.node.values.get('slot'), this, block);\n\t\t}\n\n\t\tthis.fragment = new FragmentWrapper(\n\t\t\trenderer,\n\t\t\tthis.fallback,\n\t\t\tnode.children,\n\t\t\tthis,\n\t\t\tstrip_whitespace,\n\t\t\tnext_sibling\n\t\t);\n\n\t\tthis.node.values.forEach(attribute => {\n\t\t\tadd_to_set(this.dependencies, attribute.dependencies);\n\t\t});\n\n\t\tblock.add_dependencies(this.dependencies);\n\n\t\t// we have to do this, just in case\n\t\tblock.add_intro();\n\t\tblock.add_outro();\n\t}\n\n\trender(\n\t\tblock: Block,\n\t\tparent_node: Identifier,\n\t\tparent_nodes: Identifier\n\t) {\n\t\tconst { renderer } = this;\n\n\t\tconst { slot_name } = this.node;\n\n\t\tif (this.slot_block) {\n\t\t\tblock = this.slot_block;\n\t\t}\n\n\t\tlet get_slot_changes_fn;\n\t\tlet get_slot_context_fn;\n\n\t\tif (this.node.values.size > 0) {\n\t\t\tget_slot_changes_fn = renderer.component.get_unique_name(`get_${sanitize(slot_name)}_slot_changes`);\n\t\t\tget_slot_context_fn = renderer.component.get_unique_name(`get_${sanitize(slot_name)}_slot_context`);\n\n\t\t\tconst changes = x`{}` as ObjectExpression;\n\n\t\t\tconst dependencies = new Set();\n\n\t\t\tthis.node.values.forEach(attribute => {\n\t\t\t\tattribute.chunks.forEach(chunk => {\n\t\t\t\t\tif ((chunk as Expression).dependencies) {\n\t\t\t\t\t\tadd_to_set(dependencies, (chunk as Expression).contextual_dependencies);\n\n\t\t\t\t\t\t// add_to_set(dependencies, (chunk as Expression).dependencies);\n\t\t\t\t\t\t(chunk as Expression).dependencies.forEach(name => {\n\t\t\t\t\t\t\tconst variable = renderer.component.var_lookup.get(name);\n\t\t\t\t\t\t\tif (variable && !variable.hoistable) dependencies.add(name);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tconst dynamic_dependencies = Array.from(attribute.dependencies).filter((name) => this.is_dependency_dynamic(name));\n\n\t\t\t\tif (dynamic_dependencies.length > 0) {\n\t\t\t\t\tchanges.properties.push(p`${attribute.name}: ${renderer.dirty(dynamic_dependencies)}`);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\trenderer.blocks.push(b`\n\t\t\t\tconst ${get_slot_changes_fn} = #dirty => ${changes};\n\t\t\t\tconst ${get_slot_context_fn} = #ctx => ${get_slot_data(this.node.values, block)};\n\t\t\t`);\n\t\t} else {\n\t\t\tget_slot_changes_fn = 'null';\n\t\t\tget_slot_context_fn = 'null';\n\t\t}\n\n\t\tlet has_fallback = !!this.fallback;\n\t\tif (this.fallback) {\n\t\t\tthis.fragment.render(this.fallback, null, x`#nodes` as Identifier);\n\t\t\thas_fallback = this.fallback.has_content();\n\t\t\tif (!has_fallback) {\n\t\t\t\trenderer.remove_block(this.fallback);\n\t\t\t}\n\t\t}\n\n\t\tconst slot = block.get_unique_name(`${sanitize(slot_name)}_slot`);\n\t\tconst slot_definition = block.get_unique_name(`${sanitize(slot_name)}_slot_template`);\n\t\tconst slot_or_fallback = has_fallback ? block.get_unique_name(`${sanitize(slot_name)}_slot_or_fallback`) : slot;\n\n\t\tblock.chunks.init.push(b`\n\t\t\tconst ${slot_definition} = ${renderer.reference('#slots')}.${slot_name};\n\t\t\tconst ${slot} = @create_slot(${slot_definition}, #ctx, ${renderer.reference('$$scope')}, ${get_slot_context_fn});\n\t\t\t${has_fallback ? b`const ${slot_or_fallback} = ${slot} || ${this.fallback.name}(#ctx);` : null}\n\t\t`);\n\n\t\tblock.chunks.create.push(\n\t\t\tb`if (${slot_or_fallback}) ${slot_or_fallback}.c();`\n\t\t);\n\n\t\tif (renderer.options.hydratable) {\n\t\t\tblock.chunks.claim.push(\n\t\t\t\tb`if (${slot_or_fallback}) ${slot_or_fallback}.l(${parent_nodes});`\n\t\t\t);\n\t\t}\n\n\t\tblock.chunks.mount.push(b`\n\t\t\tif (${slot_or_fallback}) {\n\t\t\t\t${slot_or_fallback}.m(${parent_node || '#target'}, ${parent_node ? 'null' : '#anchor'});\n\t\t\t}\n\t\t`);\n\n\t\tblock.chunks.intro.push(\n\t\t\tb`@transition_in(${slot_or_fallback}, #local);`\n\t\t);\n\n\t\tblock.chunks.outro.push(\n\t\t\tb`@transition_out(${slot_or_fallback}, #local);`\n\t\t);\n\n\t\tconst dynamic_dependencies = Array.from(this.dependencies).filter((name) => this.is_dependency_dynamic(name));\n\n\t\tconst fallback_dynamic_dependencies = has_fallback\n\t\t\t? Array.from(this.fallback.dependencies).filter((name) => this.is_dependency_dynamic(name))\n\t\t\t: [];\n\n\t\tconst slot_update = b`\n\t\t\tif (${slot}.p && ${renderer.dirty(dynamic_dependencies)}) {\n\t\t\t\t@update_slot(${slot}, ${slot_definition}, #ctx, ${renderer.reference('$$scope')}, #dirty, ${get_slot_changes_fn}, ${get_slot_context_fn});\n\t\t\t}\n\t\t`;\n\t\tconst fallback_update = has_fallback && fallback_dynamic_dependencies.length > 0 && b`\n\t\t\tif (${slot_or_fallback} && ${slot_or_fallback}.p && ${renderer.dirty(fallback_dynamic_dependencies)}) {\n\t\t\t\t${slot_or_fallback}.p(#ctx, #dirty);\n\t\t\t}\n\t\t`;\n\n\t\tif (fallback_update) {\n\t\t\tblock.chunks.update.push(b`\n\t\t\t\tif (${slot}) {\n\t\t\t\t\t${slot_update}\n\t\t\t\t} else {\n\t\t\t\t\t${fallback_update}\n\t\t\t\t}\n\t\t\t`);\n\t\t} else {\n\t\t\tblock.chunks.update.push(b`\n\t\t\t\tif (${slot}) {\n\t\t\t\t\t${slot_update}\n\t\t\t\t}\n\t\t\t`);\n\t\t}\n\n\t\tblock.chunks.destroy.push(\n\t\t\tb`if (${slot_or_fallback}) ${slot_or_fallback}.d(detaching);`\n\t\t);\n\t}\n\n\tis_dependency_dynamic(name: string) {\n\t\tif (name === '$$scope') return true;\n\t\tif (this.node.scope.is_let(name)) return true;\n\t\tif (is_reserved_keyword(name)) return true;\n\t\tconst variable = this.renderer.component.var_lookup.get(name);\n\t\treturn is_dynamic(variable);\n\t}\n}\n","import { b, x } from 'code-red';\nimport Wrapper from './shared/Wrapper';\nimport Renderer from '../Renderer';\nimport Block from '../Block';\nimport Title from '../../nodes/Title';\nimport { string_literal } from '../../utils/stringify';\nimport add_to_set from '../../utils/add_to_set';\nimport Text from '../../nodes/Text';\nimport { Identifier } from 'estree';\nimport MustacheTag from '../../nodes/MustacheTag';\n\nexport default class TitleWrapper extends Wrapper {\n\tnode: Title;\n\n\tconstructor(\n\t\trenderer: Renderer,\n\t\tblock: Block,\n\t\tparent: Wrapper,\n\t\tnode: Title,\n\t\t_strip_whitespace: boolean,\n\t\t_next_sibling: Wrapper\n\t) {\n\t\tsuper(renderer, block, parent, node);\n\t}\n\n\trender(block: Block, _parent_node: Identifier, _parent_nodes: Identifier) {\n\t\tconst is_dynamic = !!this.node.children.find(node => node.type !== 'Text');\n\n\t\tif (is_dynamic) {\n\t\t\tlet value;\n\n\t\t\tconst all_dependencies: Set<string> = new Set();\n\n\t\t\t// TODO some of this code is repeated in Tag.ts — would be good to\n\t\t\t// DRY it out if that's possible without introducing crazy indirection\n\t\t\tif (this.node.children.length === 1) {\n\t\t\t\t// single {tag} — may be a non-string\n\t\t\t\t// @ts-ignore todo: check this\n\t\t\t\tconst { expression } = this.node.children[0];\n\t\t\t\tvalue = expression.manipulate(block);\n\t\t\t\tadd_to_set(all_dependencies, expression.dependencies);\n\t\t\t} else {\n\t\t\t\t// '{foo} {bar}' — treat as string concatenation\n\t\t\t\tvalue = this.node.children\n\t\t\t\t\t.map(chunk => {\n\t\t\t\t\t\tif (chunk.type === 'Text') return string_literal(chunk.data);\n\n\t\t\t\t\t\t(chunk as MustacheTag).expression.dependencies.forEach(d => {\n\t\t\t\t\t\t\tall_dependencies.add(d);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn (chunk as MustacheTag).expression.manipulate(block);\n\t\t\t\t\t})\n\t\t\t\t\t.reduce((lhs, rhs) => x`${lhs} + ${rhs}`);\n\n\t\t\t\tif (this.node.children[0].type !== 'Text') {\n\t\t\t\t\tvalue = x`\"\" + ${value}`;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst last = this.node.should_cache && block.get_unique_name(\n\t\t\t\t'title_value'\n\t\t\t);\n\n\t\t\tif (this.node.should_cache) block.add_variable(last);\n\n\t\t\tconst init = this.node.should_cache ? x`${last} = ${value}` : value;\n\n\t\t\tblock.chunks.init.push(\n\t\t\t\tb`@_document.title = ${init};`\n\t\t\t);\n\n\t\t\tconst updater = b`@_document.title = ${this.node.should_cache ? last : value};`;\n\n\t\t\tif (all_dependencies.size) {\n\t\t\t\tconst dependencies = Array.from(all_dependencies);\n\n\t\t\t\tlet condition = block.renderer.dirty(dependencies);\n\n\t\t\t\tif (block.has_outros) {\n\t\t\t\t\tcondition = x`!#current || ${condition}`;\n\t\t\t\t}\n\n\t\t\t\tif (this.node.should_cache) {\n\t\t\t\t\tcondition = x`${condition} && (${last} !== (${last} = ${value}))`;\n\t\t\t\t}\n\n\t\t\t\tblock.chunks.update.push(b`\n\t\t\t\t\tif (${condition}) {\n\t\t\t\t\t\t${updater}\n\t\t\t\t\t}`);\n\t\t\t}\n\t\t} else {\n\t\t\tconst value = this.node.children.length > 0\n\t\t\t\t? string_literal((this.node.children[0] as Text).data)\n\t\t\t\t: x`\"\"`;\n\n\t\t\tblock.chunks.hydrate.push(b`@_document.title = ${value};`);\n\t\t}\n\t}\n}\n","import Renderer from '../Renderer';\nimport Block from '../Block';\nimport Wrapper from './shared/Wrapper';\nimport { b, x } from 'code-red';\nimport add_event_handlers from './shared/add_event_handlers';\nimport Window from '../../nodes/Window';\nimport add_actions from './shared/add_actions';\nimport { Identifier } from 'estree';\nimport { TemplateNode } from '../../../interfaces';\nimport EventHandler from './Element/EventHandler';\n\nconst associated_events = {\n\tinnerWidth: 'resize',\n\tinnerHeight: 'resize',\n\touterWidth: 'resize',\n\touterHeight: 'resize',\n\n\tscrollX: 'scroll',\n\tscrollY: 'scroll'\n};\n\nconst properties = {\n\tscrollX: 'pageXOffset',\n\tscrollY: 'pageYOffset'\n};\n\nconst readonly = new Set([\n\t'innerWidth',\n\t'innerHeight',\n\t'outerWidth',\n\t'outerHeight',\n\t'online'\n]);\n\nexport default class WindowWrapper extends Wrapper {\n\tnode: Window;\n\thandlers: EventHandler[];\n\n\tconstructor(renderer: Renderer, block: Block, parent: Wrapper, node: TemplateNode) {\n\t\tsuper(renderer, block, parent, node);\n\t\tthis.handlers = this.node.handlers.map(handler => new EventHandler(handler, this));\n\t}\n\n\trender(block: Block, _parent_node: Identifier, _parent_nodes: Identifier) {\n\t\tconst { renderer } = this;\n\t\tconst { component } = renderer;\n\n\t\tconst events = {};\n\t\tconst bindings: Record<string, string> = {};\n\n\t\tadd_actions(block, '@_window', this.node.actions);\n\t\tadd_event_handlers(block, '@_window', this.handlers);\n\n\t\tthis.node.bindings.forEach(binding => {\n\t\t\t// in dev mode, throw if read-only values are written to\n\t\t\tif (readonly.has(binding.name)) {\n\t\t\t\trenderer.readonly.add(binding.expression.node.name);\n\t\t\t}\n\n\t\t\tbindings[binding.name] = binding.expression.node.name;\n\n\t\t\t// bind:online is a special case, we need to listen for two separate events\n\t\t\tif (binding.name === 'online') return;\n\n\t\t\tconst associated_event = associated_events[binding.name];\n\t\t\tconst property = properties[binding.name] || binding.name;\n\n\t\t\tif (!events[associated_event]) events[associated_event] = [];\n\t\t\tevents[associated_event].push({\n\t\t\t\tname: binding.expression.node.name,\n\t\t\t\tvalue: property\n\t\t\t});\n\t\t});\n\n\t\tconst scrolling = block.get_unique_name('scrolling');\n\t\tconst clear_scrolling = block.get_unique_name('clear_scrolling');\n\t\tconst scrolling_timeout = block.get_unique_name('scrolling_timeout');\n\n\t\tObject.keys(events).forEach(event => {\n\t\t\tconst id = block.get_unique_name(`onwindow${event}`);\n\t\t\tconst props = events[event];\n\n\t\t\trenderer.add_to_context(id.name);\n\t\t\tconst fn = renderer.reference(id.name);\n\n\t\t\tif (event === 'scroll') {\n\t\t\t\t// TODO other bidirectional bindings...\n\t\t\t\tblock.add_variable(scrolling, x`false`);\n\t\t\t\tblock.add_variable(clear_scrolling, x`() => { ${scrolling} = false }`);\n\t\t\t\tblock.add_variable(scrolling_timeout);\n\n\t\t\t\tconst condition = bindings.scrollX && bindings.scrollY\n\t\t\t\t\t? x`\"${bindings.scrollX}\" in this._state || \"${bindings.scrollY}\" in this._state`\n\t\t\t\t\t: x`\"${bindings.scrollX || bindings.scrollY}\" in this._state`;\n\n\t\t\t\tconst scrollX = bindings.scrollX && x`this._state.${bindings.scrollX}`;\n\t\t\t\tconst scrollY = bindings.scrollY && x`this._state.${bindings.scrollY}`;\n\n\t\t\t\trenderer.meta_bindings.push(b`\n\t\t\t\t\tif (${condition}) {\n\t\t\t\t\t\t@_scrollTo(${scrollX || '@_window.pageXOffset'}, ${scrollY || '@_window.pageYOffset'});\n\t\t\t\t\t}\n\t\t\t\t\t${scrollX && `${scrollX} = @_window.pageXOffset;`}\n\t\t\t\t\t${scrollY && `${scrollY} = @_window.pageYOffset;`}\n\t\t\t\t`);\n\n\t\t\t\tblock.event_listeners.push(x`\n\t\t\t\t\t@listen(@_window, \"${event}\", () => {\n\t\t\t\t\t\t${scrolling} = true;\n\t\t\t\t\t\t@_clearTimeout(${scrolling_timeout});\n\t\t\t\t\t\t${scrolling_timeout} = @_setTimeout(${clear_scrolling}, 100);\n\t\t\t\t\t\t${fn}();\n\t\t\t\t\t})\n\t\t\t\t`);\n\t\t\t} else {\n\t\t\t\tprops.forEach(prop => {\n\t\t\t\t\trenderer.meta_bindings.push(\n\t\t\t\t\t\tb`this._state.${prop.name} = @_window.${prop.value};`\n\t\t\t\t\t);\n\t\t\t\t});\n\n\t\t\t\tblock.event_listeners.push(x`\n\t\t\t\t\t@listen(@_window, \"${event}\", ${fn})\n\t\t\t\t`);\n\t\t\t}\n\n\t\t\tcomponent.partly_hoisted.push(b`\n\t\t\t\tfunction ${id}() {\n\t\t\t\t\t${props.map(prop => renderer.invalidate(prop.name, x`${prop.name} = @_window.${prop.value}`))}\n\t\t\t\t}\n\t\t\t`);\n\n\t\t\tblock.chunks.init.push(b`\n\t\t\t\t@add_render_callback(${fn});\n\t\t\t`);\n\n\t\t\tcomponent.has_reactive_assignments = true;\n\t\t});\n\n\t\t// special case... might need to abstract this out if we add more special cases\n\t\tif (bindings.scrollX || bindings.scrollY) {\n\t\t\tconst condition = renderer.dirty([bindings.scrollX, bindings.scrollY].filter(Boolean));\n\n\t\t\tconst scrollX = bindings.scrollX ? renderer.reference(bindings.scrollX) : x`@_window.pageXOffset`;\n\t\t\tconst scrollY = bindings.scrollY ? renderer.reference(bindings.scrollY) : x`@_window.pageYOffset`;\n\n\t\t\tblock.chunks.update.push(b`\n\t\t\t\tif (${condition} && !${scrolling}) {\n\t\t\t\t\t${scrolling} = true;\n\t\t\t\t\t@_clearTimeout(${scrolling_timeout});\n\t\t\t\t\t@_scrollTo(${scrollX}, ${scrollY});\n\t\t\t\t\t${scrolling_timeout} = @_setTimeout(${clear_scrolling}, 100);\n\t\t\t\t}\n\t\t\t`);\n\t\t}\n\n\t\t// another special case. (I'm starting to think these are all special cases.)\n\t\tif (bindings.online) {\n\t\t\tconst id = block.get_unique_name('onlinestatuschanged');\n\t\t\tconst name = bindings.online;\n\n\t\t\trenderer.add_to_context(id.name);\n\t\t\tconst reference = renderer.reference(id.name);\n\n\t\t\tcomponent.partly_hoisted.push(b`\n\t\t\t\tfunction ${id}() {\n\t\t\t\t\t${renderer.invalidate(name, x`${name} = @_navigator.onLine`)}\n\t\t\t\t}\n\t\t\t`);\n\n\t\t\tblock.chunks.init.push(b`\n\t\t\t\t@add_render_callback(${reference});\n\t\t\t`);\n\n\t\t\tblock.event_listeners.push(\n\t\t\t\tx`@listen(@_window, \"online\", ${reference})`,\n\t\t\t\tx`@listen(@_window, \"offline\", ${reference})`\n\t\t\t);\n\n\t\t\tcomponent.has_reactive_assignments = true;\n\t\t}\n\t}\n}\n","export function link<T extends { next?: T; prev?: T }>(next: T, prev: T) {\n\tprev.next = next;\n\tif (next) next.prev = prev;\n}\n","import Wrapper from './shared/Wrapper';\nimport AwaitBlock from './AwaitBlock';\nimport Body from './Body';\nimport DebugTag from './DebugTag';\nimport EachBlock from './EachBlock';\nimport Element from './Element/index';\nimport Head from './Head';\nimport IfBlock from './IfBlock';\nimport KeyBlock from './KeyBlock';\nimport InlineComponent from './InlineComponent/index';\nimport MustacheTag from './MustacheTag';\nimport RawMustacheTag from './RawMustacheTag';\nimport Slot from './Slot';\nimport Text from './Text';\nimport Title from './Title';\nimport Window from './Window';\nimport { INode } from '../../nodes/interfaces';\nimport Renderer from '../Renderer';\nimport Block from '../Block';\nimport { trim_start, trim_end } from '../../../utils/trim';\nimport { link } from '../../../utils/link';\nimport { Identifier } from 'estree';\n\nconst wrappers = {\n\tAwaitBlock,\n\tBody,\n\tComment: null,\n\tDebugTag,\n\tEachBlock,\n\tElement,\n\tHead,\n\tIfBlock,\n\tInlineComponent,\n\tKeyBlock,\n\tMustacheTag,\n\tOptions: null,\n\tRawMustacheTag,\n\tSlot,\n\tText,\n\tTitle,\n\tWindow\n};\n\nfunction trimmable_at(child: INode, next_sibling: Wrapper): boolean {\n\t// Whitespace is trimmable if one of the following is true:\n\t// The child and its sibling share a common nearest each block (not at an each block boundary)\n\t// The next sibling's previous node is an each block\n\treturn (next_sibling.node.find_nearest(/EachBlock/) === child.find_nearest(/EachBlock/)) || next_sibling.node.prev.type === 'EachBlock';\n}\n\nexport default class FragmentWrapper {\n\tnodes: Wrapper[];\n\n\tconstructor(\n\t\trenderer: Renderer,\n\t\tblock: Block,\n\t\tnodes: INode[],\n\t\tparent: Wrapper,\n\t\tstrip_whitespace: boolean,\n\t\tnext_sibling: Wrapper\n\t) {\n\t\tthis.nodes = [];\n\n\t\tlet last_child: Wrapper;\n\t\tlet window_wrapper;\n\n\t\tlet i = nodes.length;\n\t\twhile (i--) {\n\t\t\tconst child = nodes[i];\n\n\t\t\tif (!child.type) {\n\t\t\t\tthrow new Error('missing type');\n\t\t\t}\n\n\t\t\tif (!(child.type in wrappers)) {\n\t\t\t\tthrow new Error(`TODO implement ${child.type}`);\n\t\t\t}\n\n\t\t\t// special case — this is an easy way to remove whitespace surrounding\n\t\t\t// <svelte:window/>. lil hacky but it works\n\t\t\tif (child.type === 'Window') {\n\t\t\t\twindow_wrapper = new Window(renderer, block, parent, child);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (child.type === 'Text') {\n\t\t\t\tlet { data } = child;\n\n\t\t\t\t// We want to remove trailing whitespace inside an element/component/block,\n\t\t\t\t// *unless* there is no whitespace between this node and its next sibling\n\t\t\t\tif (this.nodes.length === 0) {\n\t\t\t\t\tconst should_trim = (\n\t\t\t\t\t\tnext_sibling ? (next_sibling.node.type === 'Text' && /^\\s/.test(next_sibling.node.data) && trimmable_at(child, next_sibling)) : !child.has_ancestor('EachBlock')\n\t\t\t\t\t);\n\n\t\t\t\t\tif (should_trim) {\n\t\t\t\t\t\tdata = trim_end(data);\n\t\t\t\t\t\tif (!data) continue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// glue text nodes (which could e.g. be separated by comments) together\n\t\t\t\tif (last_child && last_child.node.type === 'Text') {\n\t\t\t\t\t(last_child as Text).data = data + (last_child as Text).data;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst wrapper = new Text(renderer, block, parent, child, data);\n\t\t\t\tif (wrapper.skip) continue;\n\n\t\t\t\tthis.nodes.unshift(wrapper);\n\n\t\t\t\tlink(last_child, last_child = wrapper);\n\t\t\t} else {\n\t\t\t\tconst Wrapper = wrappers[child.type];\n\t\t\t\tif (!Wrapper) continue;\n\n\t\t\t\tconst wrapper = new Wrapper(renderer, block, parent, child, strip_whitespace, last_child || next_sibling);\n\t\t\t\tthis.nodes.unshift(wrapper);\n\n\t\t\t\tlink(last_child, last_child = wrapper);\n\t\t\t}\n\t\t}\n\n\t\tif (strip_whitespace) {\n\t\t\tconst first = this.nodes[0] as Text;\n\n\t\t\tif (first && first.node.type === 'Text') {\n\t\t\t\tfirst.data = trim_start(first.data);\n\t\t\t\tif (!first.data) {\n\t\t\t\t\tfirst.var = null;\n\t\t\t\t\tthis.nodes.shift();\n\n\t\t\t\t\tif (this.nodes[0]) {\n\t\t\t\t\t\tthis.nodes[0].prev = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (window_wrapper) {\n\t\t\tthis.nodes.unshift(window_wrapper);\n\t\t\tlink(last_child, window_wrapper);\n\t\t}\n\t}\n\n\trender(block: Block, parent_node: Identifier, parent_nodes: Identifier) {\n\t\tfor (let i = 0; i < this.nodes.length; i += 1) {\n\t\t\tthis.nodes[i].render(block, parent_node, parent_nodes);\n\t\t}\n\t}\n}\n","import Block from './Block';\nimport { CompileOptions, Var } from '../../interfaces';\nimport Component from '../Component';\nimport FragmentWrapper from './wrappers/Fragment';\nimport { x } from 'code-red';\nimport { Node, Identifier, MemberExpression, Literal, Expression, BinaryExpression } from 'estree';\nimport flatten_reference from '../utils/flatten_reference';\nimport { reserved_keywords } from '../utils/reserved_keywords';\n\ninterface ContextMember {\n\tname: string;\n\tindex: Literal;\n\tis_contextual: boolean;\n\tis_non_contextual: boolean;\n\tvariable: Var;\n\tpriority: number;\n}\n\ntype BitMasks = Array<{\n\tn: number;\n\tnames: string[];\n}>;\n\nexport default class Renderer {\n\tcomponent: Component; // TODO Maybe Renderer shouldn't know about Component?\n\toptions: CompileOptions;\n\n\tcontext: ContextMember[] = [];\n\tinitial_context: ContextMember[] = [];\n\tcontext_lookup: Map<string, ContextMember> = new Map();\n\tcontext_overflow: boolean;\n\tblocks: Array<Block | Node | Node[]> = [];\n\treadonly: Set<string> = new Set();\n\tmeta_bindings: Array<Node | Node[]> = []; // initial values for e.g. window.innerWidth, if there's a <svelte:window> meta tag\n\tbinding_groups: Map<string, { binding_group: (to_reference?: boolean) => Node; is_context: boolean; contexts: string[]; index: number }> = new Map();\n\n\tblock: Block;\n\tfragment: FragmentWrapper;\n\n\tfile_var: Identifier;\n\tlocate: (c: number) => { line: number; column: number };\n\n\tconstructor(component: Component, options: CompileOptions) {\n\t\tthis.component = component;\n\t\tthis.options = options;\n\t\tthis.locate = component.locate; // TODO messy\n\n\t\tthis.file_var = options.dev && this.component.get_unique_name('file');\n\n\t\tcomponent.vars.filter(v => !v.hoistable || (v.export_name && !v.module)).forEach(v => this.add_to_context(v.name));\n\n\t\t// ensure store values are included in context\n\t\tcomponent.vars.filter(v => v.subscribable).forEach(v => this.add_to_context(`$${v.name}`));\n\n\t\treserved_keywords.forEach(keyword => {\n\t\t\tif (component.var_lookup.has(keyword)) {\n\t\t\t\tthis.add_to_context(keyword);\n\t\t\t}\n\t\t});\n\n\t\tif (component.slots.size > 0) {\n\t\t\tthis.add_to_context('$$scope');\n\t\t\tthis.add_to_context('#slots');\n\t\t}\n\n\t\tif (this.binding_groups.size > 0) {\n\t\t\tthis.add_to_context('$$binding_groups');\n\t\t}\n\n\t\t// main block\n\t\tthis.block = new Block({\n\t\t\trenderer: this,\n\t\t\tname: null,\n\t\t\ttype: 'component',\n\t\t\tkey: null,\n\n\t\t\tbindings: new Map(),\n\n\t\t\tdependencies: new Set()\n\t\t});\n\n\t\tthis.block.has_update_method = true;\n\n\t\tthis.fragment = new FragmentWrapper(\n\t\t\tthis,\n\t\t\tthis.block,\n\t\t\tcomponent.fragment.children,\n\t\t\tnull,\n\t\t\ttrue,\n\t\t\tnull\n\t\t);\n\n\t\t// TODO messy\n\t\tthis.blocks.forEach(block => {\n\t\t\tif (block instanceof Block) {\n\t\t\t\tblock.assign_variable_names();\n\t\t\t}\n\t\t});\n\n\t\tthis.block.assign_variable_names();\n\n\t\tthis.fragment.render(this.block, null, x`#nodes` as Identifier);\n\n\t\tthis.context_overflow = this.context.length > 31;\n\n\t\tthis.context.forEach(member => {\n\t\t\tconst { variable } = member;\n\t\t\tif (variable) {\n\t\t\t\tmember.priority += 2;\n\t\t\t\tif (variable.mutated || variable.reassigned) member.priority += 4;\n\n\t\t\t\t// these determine whether variable is included in initial context\n\t\t\t\t// array, so must have the highest priority\n\t\t\t\tif (variable.export_name) member.priority += 16;\n\t\t\t\tif (variable.referenced) member.priority += 32;\n\t\t\t} else if (member.is_non_contextual) {\n\t\t\t\t// determine whether variable is included in initial context\n\t\t\t\t// array, so must have the highest priority\n\t\t\t\tmember.priority += 8;\n\t\t\t}\n\n\t\t\tif (!member.is_contextual) {\n\t\t\t\tmember.priority += 1;\n\t\t\t}\n\t\t});\n\n\t\tthis.context.sort((a, b) => (b.priority - a.priority) || ((a.index.value as number) - (b.index.value as number)));\n\t\tthis.context.forEach((member, i) => member.index.value = i);\n\n\t\tlet i = this.context.length;\n\t\twhile (i--) {\n\t\t\tconst member = this.context[i];\n\t\t\tif (member.variable) {\n\t\t\t\tif (member.variable.referenced || member.variable.export_name) break;\n\t\t\t} else if (member.is_non_contextual) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tthis.initial_context = this.context.slice(0, i + 1);\n\t}\n\n\tadd_to_context(name: string, contextual = false) {\n\t\tif (!this.context_lookup.has(name)) {\n\t\t\tconst member: ContextMember = {\n\t\t\t\tname,\n\t\t\t\tindex: { type: 'Literal', value: this.context.length }, // index is updated later, but set here to preserve order within groups\n\t\t\t\tis_contextual: false,\n\t\t\t\tis_non_contextual: false, // shadowed vars could be contextual and non-contextual\n\t\t\t\tvariable: null,\n\t\t\t\tpriority: 0\n\t\t\t};\n\n\t\t\tthis.context_lookup.set(name, member);\n\t\t\tthis.context.push(member);\n\t\t}\n\n\t\tconst member = this.context_lookup.get(name);\n\n\t\tif (contextual) {\n\t\t\tmember.is_contextual = true;\n\t\t} else {\n\t\t\tmember.is_non_contextual = true;\n\t\t\tmember.variable = this.component.var_lookup.get(name);\n\t\t}\n\n\t\treturn member;\n\t}\n\n\tinvalidate(name: string, value?, main_execution_context: boolean = false) {\n\t\tconst variable = this.component.var_lookup.get(name);\n\t\tconst member = this.context_lookup.get(name);\n\n\t\tif (variable && (variable.subscribable && (variable.reassigned || variable.export_name))) {\n\t\t\treturn main_execution_context\n\t\t\t ? x`${`$$subscribe_${name}`}(${value || name})`\n\t\t\t : x`${`$$subscribe_${name}`}($$invalidate(${member.index}, ${value || name}))`;\n\t\t}\n\n\t\tif (name[0] === '$' && name[1] !== '$') {\n\t\t\treturn x`${name.slice(1)}.set(${value || name})`;\n\t\t}\n\n\t\tif (\n\t\t\tvariable && (\n\t\t\t\tvariable.module || (\n\t\t\t\t\t!variable.referenced &&\n\t\t\t\t\t!variable.is_reactive_dependency &&\n\t\t\t\t\t!variable.export_name &&\n\t\t\t\t\t!name.startsWith('$$')\n\t\t\t\t)\n\t\t\t)\n\t\t) {\n\t\t\treturn value || name;\n\t\t}\n\n\t\tif (value) {\n\t\t\treturn x`$$invalidate(${member.index}, ${value})`;\n\t\t}\n\n\t\t// if this is a reactive declaration, invalidate dependencies recursively\n\t\tconst deps = new Set([name]);\n\n\t\tdeps.forEach(name => {\n\t\t\tconst reactive_declarations = this.component.reactive_declarations.filter(x =>\n\t\t\t\tx.assignees.has(name)\n\t\t\t);\n\t\t\treactive_declarations.forEach(declaration => {\n\t\t\t\tdeclaration.dependencies.forEach(name => {\n\t\t\t\t\tdeps.add(name);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\t\t// TODO ideally globals etc wouldn't be here in the first place\n\t\tconst filtered = Array.from(deps).filter(n => this.context_lookup.has(n));\n\t\tif (!filtered.length) return null;\n\n\t\treturn filtered\n\t\t\t.map(n => x`$$invalidate(${this.context_lookup.get(n).index}, ${n})`)\n\t\t\t.reduce((lhs, rhs) => x`${lhs}, ${rhs}`);\n\t}\n\n\tdirty(names, is_reactive_declaration = false): Expression {\n\t\tconst renderer = this;\n\n\t\tconst dirty = (is_reactive_declaration\n\t\t\t? x`$$self.$$.dirty`\n\t\t\t: x`#dirty`) as Identifier | MemberExpression;\n\n\t\tconst get_bitmask = () => {\n\t\t\tconst bitmask: BitMasks = [];\n\t\t\tnames.forEach((name) => {\n\t\t\t\tconst member = renderer.context_lookup.get(name);\n\n\t\t\t\tif (!member) return;\n\n\t\t\t\tif (member.index.value === -1) {\n\t\t\t\t\tthrow new Error('unset index');\n\t\t\t\t}\n\n\t\t\t\tconst value = member.index.value as number;\n\t\t\t\tconst i = (value / 31) | 0;\n\t\t\t\tconst n = 1 << (value % 31);\n\n\t\t\t\tif (!bitmask[i]) bitmask[i] = { n: 0, names: [] };\n\n\t\t\t\tbitmask[i].n |= n;\n\t\t\t\tbitmask[i].names.push(name);\n\t\t\t});\n\t\t\treturn bitmask;\n\t\t};\n\n\t\t// TODO: context-overflow make it less gross\n\t\treturn {\n\t\t\t// Using a ParenthesizedExpression allows us to create\n\t\t\t// the expression lazily. TODO would be better if\n\t\t\t// context was determined before rendering, so that\n\t\t\t// this indirection was unnecessary\n\t\t\ttype: 'ParenthesizedExpression',\n\t\t\tget expression() {\n\t\t\t\tconst bitmask = get_bitmask();\n\n\t\t\t\tif (!bitmask.length) {\n\t\t\t\t\treturn x`${dirty} & /*${names.join(', ')}*/ 0` as BinaryExpression;\n\t\t\t\t}\n\n\t\t\t\tif (renderer.context_overflow) {\n\t\t\t\t\treturn bitmask\n\t\t\t\t\t\t.map((b, i) => ({ b, i }))\n\t\t\t\t\t\t.filter(({ b }) => b)\n\t\t\t\t\t\t.map(({ b, i }) => x`${dirty}[${i}] & /*${b.names.join(', ')}*/ ${b.n}`)\n\t\t\t\t\t\t.reduce((lhs, rhs) => x`${lhs} | ${rhs}`);\n\t\t\t\t}\n\n\t\t\t\treturn x`${dirty} & /*${names.join(', ')}*/ ${bitmask[0].n}` as BinaryExpression;\n\t\t\t}\n\t\t} as any;\n\t}\n\n\treference(node: string | Identifier | MemberExpression) {\n\t\tif (typeof node === 'string') {\n\t\t\tnode = { type: 'Identifier', name: node };\n\t\t}\n\n\t\tconst { name, nodes } = flatten_reference(node);\n\t\tconst member = this.context_lookup.get(name);\n\n\t\t// TODO is this correct?\n\t\tif (this.component.var_lookup.get(name)) {\n\t\t\tthis.component.add_reference(name);\n\t\t}\n\n\t\tif (member !== undefined) {\n\t\t\tconst replacement = x`/*${member.name}*/ #ctx[${member.index}]` as MemberExpression;\n\n\t\t\tif (nodes[0].loc) replacement.object.loc = nodes[0].loc;\n\t\t\tnodes[0] = replacement;\n\n\t\t\treturn nodes.reduce((lhs, rhs) => x`${lhs}.${rhs}`);\n\t\t}\n\n\t\treturn node;\n\t}\n\n\tremove_block(block: Block | Node | Node[]) {\n\t\tthis.blocks.splice(this.blocks.indexOf(block), 1);\n\t}\n}\n","import { b, x, p } from 'code-red';\nimport Component from '../Component';\nimport Renderer from './Renderer';\nimport { CompileOptions, CssResult } from '../../interfaces';\nimport { walk } from 'estree-walker';\nimport { extract_names, Scope } from '../utils/scope';\nimport { invalidate } from './invalidate';\nimport Block from './Block';\nimport { ClassDeclaration, FunctionExpression, Node, Statement, ObjectExpression, Expression } from 'estree';\n\nexport default function dom(\n\tcomponent: Component,\n\toptions: CompileOptions\n): { js: Node[]; css: CssResult } {\n\tconst { name } = component;\n\n\tconst renderer = new Renderer(component, options);\n\tconst { block } = renderer;\n\n\tblock.has_outro_method = true;\n\n\t// prevent fragment being created twice (#1063)\n\tif (options.customElement) block.chunks.create.push(b`this.c = @noop;`);\n\n\tconst body = [];\n\n\tif (renderer.file_var) {\n\t\tconst file = component.file ? x`\"${component.file}\"` : x`undefined`;\n\t\tbody.push(b`const ${renderer.file_var} = ${file};`);\n\t}\n\n\tconst css = component.stylesheet.render(options.filename, !options.customElement);\n\tconst styles = component.stylesheet.has_styles && options.dev\n\t\t? `${css.code}\\n/*# sourceMappingURL=${css.map.toUrl()} */`\n\t\t: css.code;\n\n\tconst add_css = component.get_unique_name('add_css');\n\n\tconst should_add_css = (\n\t\t!options.customElement &&\n\t\t!!styles &&\n\t\toptions.css !== false\n\t);\n\n\tif (should_add_css) {\n\t\tbody.push(b`\n\t\t\tfunction ${add_css}() {\n\t\t\t\tvar style = @element(\"style\");\n\t\t\t\tstyle.id = \"${component.stylesheet.id}-style\";\n\t\t\t\tstyle.textContent = \"${styles}\";\n\t\t\t\t@append(@_document.head, style);\n\t\t\t}\n\t\t`);\n\t}\n\n\t// fix order\n\t// TODO the deconflicted names of blocks are reversed... should set them here\n\tconst blocks = renderer.blocks.slice().reverse();\n\n\tbody.push(...blocks.map(block => {\n\t\t// TODO this is a horrible mess — renderer.blocks\n\t\t// contains a mixture of Blocks and Nodes\n\t\tif ((block as Block).render) return (block as Block).render();\n\t\treturn block;\n\t}));\n\n\tif (options.dev && !options.hydratable) {\n\t\tblock.chunks.claim.push(\n\t\t\tb`throw new @_Error(\"options.hydrate only works if the component was compiled with the \\`hydratable: true\\` option\");`\n\t\t);\n\t}\n\n\tconst uses_slots = component.var_lookup.has('$$slots');\n\tlet compute_slots;\n\tif (uses_slots) {\n\t\tcompute_slots = b`\n\t\t\tconst $$slots = @compute_slots(#slots);\n\t\t`;\n\t}\n\n\n\tconst uses_props = component.var_lookup.has('$$props');\n\tconst uses_rest = component.var_lookup.has('$$restProps');\n\tconst $$props = uses_props || uses_rest ? '$$new_props' : '$$props';\n\tconst props = component.vars.filter(variable => !variable.module && variable.export_name);\n\tconst writable_props = props.filter(variable => variable.writable);\n\n\tconst omit_props_names = component.get_unique_name('omit_props_names');\n\tconst compute_rest = x`@compute_rest_props($$props, ${omit_props_names.name})`;\n\tconst rest = uses_rest ? b`\n\t\tconst ${omit_props_names.name} = [${props.map(prop => `\"${prop.export_name}\"`).join(',')}];\n\t\tlet $$restProps = ${compute_rest};\n\t` : null;\n\n\tconst set = (uses_props || uses_rest || writable_props.length > 0 || component.slots.size > 0)\n\t\t? x`\n\t\t\t${$$props} => {\n\t\t\t\t${uses_props && renderer.invalidate('$$props', x`$$props = @assign(@assign({}, $$props), @exclude_internal_props($$new_props))`)}\n\t\t\t\t${uses_rest && !uses_props && x`$$props = @assign(@assign({}, $$props), @exclude_internal_props($$new_props))`}\n\t\t\t\t${uses_rest && renderer.invalidate('$$restProps', x`$$restProps = ${compute_rest}`)}\n\t\t\t\t${writable_props.map(prop =>\n\t\t\t\t\tb`if ('${prop.export_name}' in ${$$props}) ${renderer.invalidate(prop.name, x`${prop.name} = ${$$props}.${prop.export_name}`)};`\n\t\t\t\t)}\n\t\t\t\t${component.slots.size > 0 &&\n\t\t\t\tb`if ('$$scope' in ${$$props}) ${renderer.invalidate('$$scope', x`$$scope = ${$$props}.$$scope`)};`}\n\t\t\t}\n\t\t`\n\t\t: null;\n\n\tconst accessors = [];\n\n\tconst not_equal = component.component_options.immutable ? x`@not_equal` : x`@safe_not_equal`;\n\tlet dev_props_check: Node[] | Node;\n\tlet inject_state: Expression;\n\tlet capture_state: Expression;\n\tlet props_inject: Node[] | Node;\n\n\tprops.forEach(prop => {\n\t\tconst variable = component.var_lookup.get(prop.name);\n\n\t\tif (!variable.writable || component.component_options.accessors) {\n\t\t\taccessors.push({\n\t\t\t\ttype: 'MethodDefinition',\n\t\t\t\tkind: 'get',\n\t\t\t\tkey: { type: 'Identifier', name: prop.export_name },\n\t\t\t\tvalue: x`function() {\n\t\t\t\t\treturn ${prop.hoistable ? prop.name : x`this.$$.ctx[${renderer.context_lookup.get(prop.name).index}]`}\n\t\t\t\t}`\n\t\t\t});\n\t\t} else if (component.compile_options.dev) {\n\t\t\taccessors.push({\n\t\t\t\ttype: 'MethodDefinition',\n\t\t\t\tkind: 'get',\n\t\t\t\tkey: { type: 'Identifier', name: prop.export_name },\n\t\t\t\tvalue: x`function() {\n\t\t\t\t\tthrow new @_Error(\"<${component.tag}>: Props cannot be read directly from the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'\");\n\t\t\t\t}`\n\t\t\t});\n\t\t}\n\n\t\tif (component.component_options.accessors) {\n\t\t\tif (variable.writable && !renderer.readonly.has(prop.name)) {\n\t\t\t\taccessors.push({\n\t\t\t\t\ttype: 'MethodDefinition',\n\t\t\t\t\tkind: 'set',\n\t\t\t\t\tkey: { type: 'Identifier', name: prop.export_name },\n\t\t\t\t\tvalue: x`function(${prop.name}) {\n\t\t\t\t\t\tthis.$set({ ${prop.export_name}: ${prop.name} });\n\t\t\t\t\t\t@flush();\n\t\t\t\t\t}`\n\t\t\t\t});\n\t\t\t} else if (component.compile_options.dev) {\n\t\t\t\taccessors.push({\n\t\t\t\t\ttype: 'MethodDefinition',\n\t\t\t\t\tkind: 'set',\n\t\t\t\t\tkey: { type: 'Identifier', name: prop.export_name },\n\t\t\t\t\tvalue: x`function(value) {\n\t\t\t\t\t\tthrow new @_Error(\"<${component.tag}>: Cannot set read-only property '${prop.export_name}'\");\n\t\t\t\t\t}`\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (component.compile_options.dev) {\n\t\t\taccessors.push({\n\t\t\t\ttype: 'MethodDefinition',\n\t\t\t\tkind: 'set',\n\t\t\t\tkey: { type: 'Identifier', name: prop.export_name },\n\t\t\t\tvalue: x`function(value) {\n\t\t\t\t\tthrow new @_Error(\"<${component.tag}>: Props cannot be set directly on the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'\");\n\t\t\t\t}`\n\t\t\t});\n\t\t}\n\t});\n\n\tif (component.compile_options.dev) {\n\t\t// checking that expected ones were passed\n\t\tconst expected = props.filter(prop => prop.writable && !prop.initialised);\n\n\t\tif (expected.length) {\n\t\t\tdev_props_check = b`\n\t\t\t\tconst { ctx: #ctx } = this.$$;\n\t\t\t\tconst props = ${options.customElement ? x`this.attributes` : x`options.props || {}`};\n\t\t\t\t${expected.map(prop => b`\n\t\t\t\tif (${renderer.reference(prop.name)} === undefined && !('${prop.export_name}' in props)) {\n\t\t\t\t\t@_console.warn(\"<${component.tag}> was created without expected prop '${prop.export_name}'\");\n\t\t\t\t}`)}\n\t\t\t`;\n\t\t}\n\n\t\tconst capturable_vars = component.vars.filter(v => !v.internal && !v.global && !v.name.startsWith('$$'));\n\n\t\tif (capturable_vars.length > 0) {\n\t\t\tcapture_state = x`() => ({ ${capturable_vars.map(prop => p`${prop.name}`)} })`;\n\t\t}\n\n\t\tconst injectable_vars = capturable_vars.filter(v => !v.module && v.writable && v.name[0] !== '$');\n\n\t\tif (uses_props || injectable_vars.length > 0) {\n\t\t\tinject_state = x`\n\t\t\t\t${$$props} => {\n\t\t\t\t\t${uses_props && renderer.invalidate('$$props', x`$$props = @assign(@assign({}, $$props), $$new_props)`)}\n\t\t\t\t\t${injectable_vars.map(\n\t\t\t\t\t\tv => b`if ('${v.name}' in $$props) ${renderer.invalidate(v.name, x`${v.name} = ${$$props}.${v.name}`)};`\n\t\t\t\t\t)}\n\t\t\t\t}\n\t\t\t`;\n\n\t\t\tprops_inject = b`\n\t\t\t\tif ($$props && \"$$inject\" in $$props) {\n\t\t\t\t\t$$self.$inject_state($$props.$$inject);\n\t\t\t\t}\n\t\t\t`;\n\t\t}\n\t}\n\n\t// instrument assignments\n\tif (component.ast.instance) {\n\t\tlet scope = component.instance_scope;\n\t\tconst map = component.instance_scope_map;\n\t\tlet execution_context: Node | null = null;\n\n\t\twalk(component.ast.instance.content, {\n\t\t\tenter(node: Node) {\n\t\t\t\tif (map.has(node)) {\n\t\t\t\t\tscope = map.get(node) as Scope;\n\n\t\t\t\t\tif (!execution_context && !scope.block) {\n\t\t\t\t\t\texecution_context = node;\n\t\t\t\t\t}\n\t\t\t\t} else if (!execution_context && node.type === 'LabeledStatement' && node.label.name === '$') {\n\t\t\t\t\texecution_context = node;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tleave(node: Node) {\n\t\t\t\tif (map.has(node)) {\n\t\t\t\t\tscope = scope.parent;\n\t\t\t\t}\n\n\t\t\t\tif (execution_context === node) {\n\t\t\t\t\texecution_context = null;\n\t\t\t\t}\n\n\t\t\t\tif (node.type === 'AssignmentExpression' || node.type === 'UpdateExpression') {\n\t\t\t\t\tconst assignee = node.type === 'AssignmentExpression' ? node.left : node.argument;\n\n\t\t\t\t\t// normally (`a = 1`, `b.c = 2`), there'll be a single name\n\t\t\t\t\t// (a or b). In destructuring cases (`[d, e] = [e, d]`) there\n\t\t\t\t\t// may be more, in which case we need to tack the extra ones\n\t\t\t\t\t// onto the initial function call\n\t\t\t\t\tconst names = new Set(extract_names(assignee));\n\n\t\t\t\t\tthis.replace(invalidate(renderer, scope, node, names, execution_context === null));\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tcomponent.rewrite_props(({ name, reassigned, export_name }) => {\n\t\t\tconst value = `$${name}`;\n\t\t\tconst i = renderer.context_lookup.get(`$${name}`).index;\n\n\t\t\tconst insert = (reassigned || export_name)\n\t\t\t\t? b`${`$$subscribe_${name}`}()`\n\t\t\t\t: b`@component_subscribe($$self, ${name}, #value => $$invalidate(${i}, ${value} = #value))`;\n\n\t\t\tif (component.compile_options.dev) {\n\t\t\t\treturn b`@validate_store(${name}, '${name}'); ${insert}`;\n\t\t\t}\n\n\t\t\treturn insert;\n\t\t});\n\t}\n\n\tconst args = [x`$$self`];\n\tconst has_invalidate = props.length > 0 ||\n\t\tcomponent.has_reactive_assignments ||\n\t\tcomponent.slots.size > 0 ||\n\t\tcapture_state ||\n\t\tinject_state;\n\tif (has_invalidate) {\n\t\targs.push(x`$$props`, x`$$invalidate`);\n\t} else if (component.compile_options.dev) {\n\t\t// $$props arg is still needed for unknown prop check\n\t\targs.push(x`$$props`);\n\t}\n\n\tconst has_create_fragment = component.compile_options.dev || block.has_content();\n\tif (has_create_fragment) {\n\t\tbody.push(b`\n\t\t\tfunction create_fragment(#ctx) {\n\t\t\t\t${block.get_contents()}\n\t\t\t}\n\t\t`);\n\t}\n\n\tbody.push(b`\n\t\t${component.extract_javascript(component.ast.module)}\n\n\t\t${component.fully_hoisted}\n\t`);\n\n\tconst filtered_props = props.filter(prop => {\n\t\tconst variable = component.var_lookup.get(prop.name);\n\n\t\tif (variable.hoistable) return false;\n\t\treturn prop.name[0] !== '$';\n\t});\n\n\tconst reactive_stores = component.vars.filter(variable => variable.name[0] === '$' && variable.name[1] !== '$');\n\n\tconst instance_javascript = component.extract_javascript(component.ast.instance);\n\n\tconst has_definition = (\n\t\tcomponent.compile_options.dev ||\n\t\t(instance_javascript && instance_javascript.length > 0) ||\n\t\tfiltered_props.length > 0 ||\n\t\tuses_props ||\n\t\tcomponent.partly_hoisted.length > 0 ||\n\t\trenderer.initial_context.length > 0 ||\n\t\tcomponent.reactive_declarations.length > 0 ||\n\t\tcapture_state ||\n\t\tinject_state\n\t);\n\n\tconst definition = has_definition\n\t\t? component.alias('instance')\n\t\t: { type: 'Literal', value: null };\n\n\tconst reactive_store_subscriptions = reactive_stores\n\t\t.filter(store => {\n\t\t\tconst variable = component.var_lookup.get(store.name.slice(1));\n\t\t\treturn !variable || variable.hoistable;\n\t\t})\n\t\t.map(({ name }) => b`\n\t\t\t${component.compile_options.dev && b`@validate_store(${name.slice(1)}, '${name.slice(1)}');`}\n\t\t\t@component_subscribe($$self, ${name.slice(1)}, $$value => $$invalidate(${renderer.context_lookup.get(name).index}, ${name} = $$value));\n\t\t`);\n\n\tconst resubscribable_reactive_store_unsubscribers = reactive_stores\n\t\t.filter(store => {\n\t\t\tconst variable = component.var_lookup.get(store.name.slice(1));\n\t\t\treturn variable && (variable.reassigned || variable.export_name);\n\t\t})\n\t\t.map(({ name }) => b`$$self.$$.on_destroy.push(() => ${`$$unsubscribe_${name.slice(1)}`}());`);\n\n\tif (has_definition) {\n\t\tconst reactive_declarations: (Node | Node[]) = [];\n\t\tconst fixed_reactive_declarations = []; // not really 'reactive' but whatever\n\n\t\tcomponent.reactive_declarations.forEach(d => {\n\t\t\tconst dependencies = Array.from(d.dependencies);\n\t\t\tconst uses_rest_or_props = !!dependencies.find(n => n === '$$props' || n === '$$restProps');\n\n\t\t\tconst writable = dependencies.filter(n => {\n\t\t\t\tconst variable = component.var_lookup.get(n);\n\t\t\t\treturn variable && (variable.export_name || variable.mutated || variable.reassigned);\n\t\t\t});\n\n\t\t\tconst condition = !uses_rest_or_props && writable.length > 0 && renderer.dirty(writable, true);\n\n\t\t\tlet statement = d.node; // TODO remove label (use d.node.body) if it's not referenced\n\n\t\t\tif (condition) statement = b`if (${condition}) { ${statement} }`[0] as Statement;\n\n\t\t\tif (condition || uses_rest_or_props) {\n\t\t\t\treactive_declarations.push(statement);\n\t\t\t} else {\n\t\t\t\tfixed_reactive_declarations.push(statement);\n\t\t\t}\n\t\t});\n\n\t\tconst injected = Array.from(component.injected_reactive_declaration_vars).filter(name => {\n\t\t\tconst variable = component.var_lookup.get(name);\n\t\t\treturn variable.injected && variable.name[0] !== '$';\n\t\t});\n\n\t\tconst reactive_store_declarations = reactive_stores.map(variable => {\n\t\t\tconst $name = variable.name;\n\t\t\tconst name = $name.slice(1);\n\n\t\t\tconst store = component.var_lookup.get(name);\n\t\t\tif (store && (store.reassigned || store.export_name)) {\n\t\t\t\tconst unsubscribe = `$$unsubscribe_${name}`;\n\t\t\t\tconst subscribe = `$$subscribe_${name}`;\n\t\t\t\tconst i = renderer.context_lookup.get($name).index;\n\n\t\t\t\treturn b`let ${$name}, ${unsubscribe} = @noop, ${subscribe} = () => (${unsubscribe}(), ${unsubscribe} = @subscribe(${name}, $$value => $$invalidate(${i}, ${$name} = $$value)), ${name})`;\n\t\t\t}\n\n\t\t\treturn b`let ${$name};`;\n\t\t});\n\n\t\tlet unknown_props_check;\n\t\tif (component.compile_options.dev && !(uses_props || uses_rest)) {\n\t\t\tunknown_props_check = b`\n\t\t\t\tconst writable_props = [${writable_props.map(prop => x`'${prop.export_name}'`)}];\n\t\t\t\t@_Object.keys($$props).forEach(key => {\n\t\t\t\t\tif (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$') @_console.warn(\\`<${component.tag}> was created with unknown prop '\\${key}'\\`);\n\t\t\t\t});\n\t\t\t`;\n\t\t}\n\n\t\tconst return_value = {\n\t\t\ttype: 'ArrayExpression',\n\t\t\telements: renderer.initial_context.map(member => ({\n\t\t\t\ttype: 'Identifier',\n\t\t\t\tname: member.name\n\t\t\t}) as Expression)\n\t\t};\n\n\t\tbody.push(b`\n\t\t\tfunction ${definition}(${args}) {\n\t\t\t\t${rest}\n\n\t\t\t\t${reactive_store_declarations}\n\n\t\t\t\t${reactive_store_subscriptions}\n\n\t\t\t\t${resubscribable_reactive_store_unsubscribers}\n\n\t\t\t\t${component.slots.size || component.compile_options.dev || uses_slots ? b`let { $$slots: #slots = {}, $$scope } = $$props;` : null}\n\t\t\t\t${component.compile_options.dev && b`@validate_slots('${component.tag}', #slots, [${[...component.slots.keys()].map(key => `'${key}'`).join(',')}]);`}\n\t\t\t\t${compute_slots}\n\n\t\t\t\t${instance_javascript}\n\n\t\t\t\t${unknown_props_check}\n\n\t\t\t\t${renderer.binding_groups.size > 0 && b`const $$binding_groups = [${[...renderer.binding_groups.keys()].map(_ => x`[]`)}];`}\n\n\t\t\t\t${component.partly_hoisted}\n\n\t\t\t\t${set && b`$$self.$$set = ${set};`}\n\n\t\t\t\t${capture_state && b`$$self.$capture_state = ${capture_state};`}\n\n\t\t\t\t${inject_state && b`$$self.$inject_state = ${inject_state};`}\n\n\t\t\t\t${injected.map(name => b`let ${name};`)}\n\n\t\t\t\t${/* before reactive declarations */ props_inject}\n\n\t\t\t\t${reactive_declarations.length > 0 && b`\n\t\t\t\t$$self.$$.update = () => {\n\t\t\t\t\t${reactive_declarations}\n\t\t\t\t};\n\t\t\t\t`}\n\n\t\t\t\t${fixed_reactive_declarations}\n\n\t\t\t\t${uses_props && b`$$props = @exclude_internal_props($$props);`}\n\n\t\t\t\treturn ${return_value};\n\t\t\t}\n\t\t`);\n\t}\n\n\tconst prop_indexes = x`{\n\t\t${props.filter(v => v.export_name && !v.module).map(v => p`${v.export_name}: ${renderer.context_lookup.get(v.name).index}`)}\n\t}` as ObjectExpression;\n\n\tlet dirty;\n\tif (renderer.context_overflow) {\n\t\tdirty = x`[]`;\n\t\tfor (let i = 0; i < renderer.context.length; i += 31) {\n\t\t\tdirty.elements.push(x`-1`);\n\t\t}\n\t}\n\n\tif (options.customElement) {\n\n\t\tlet init_props = x`@attribute_to_object(this.attributes)`;\n\t\tif (uses_slots) {\n\t\t\tinit_props = x`{ ...${init_props}, $$slots: @get_custom_elements_slots(this) }`;\n\t\t}\n\n\t\tconst declaration = b`\n\t\t\tclass ${name} extends @SvelteElement {\n\t\t\t\tconstructor(options) {\n\t\t\t\t\tsuper();\n\n\t\t\t\t\t${css.code && b`this.shadowRoot.innerHTML = \\`<style>${css.code.replace(/\\\\/g, '\\\\\\\\')}${options.dev ? `\\n/*# sourceMappingURL=${css.map.toUrl()} */` : ''}</style>\\`;`}\n\n\t\t\t\t\t@init(this, { target: this.shadowRoot, props: ${init_props} }, ${definition}, ${has_create_fragment ? 'create_fragment': 'null'}, ${not_equal}, ${prop_indexes}, ${dirty});\n\n\t\t\t\t\t${dev_props_check}\n\n\t\t\t\t\tif (options) {\n\t\t\t\t\t\tif (options.target) {\n\t\t\t\t\t\t\t@insert(options.target, this, options.anchor);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t${(props.length > 0 || uses_props || uses_rest) && b`\n\t\t\t\t\t\tif (options.props) {\n\t\t\t\t\t\t\tthis.$set(options.props);\n\t\t\t\t\t\t\t@flush();\n\t\t\t\t\t\t}`}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t`[0] as ClassDeclaration;\n\n\t\tif (props.length > 0) {\n\t\t\tdeclaration.body.body.push({\n\t\t\t\ttype: 'MethodDefinition',\n\t\t\t\tkind: 'get',\n\t\t\t\tstatic: true,\n\t\t\t\tcomputed: false,\n\t\t\t\tkey: { type: 'Identifier', name: 'observedAttributes' },\n\t\t\t\tvalue: x`function() {\n\t\t\t\t\treturn [${props.map(prop => x`\"${prop.export_name}\"`)}];\n\t\t\t\t}` as FunctionExpression\n\t\t\t});\n\t\t}\n\n\t\tdeclaration.body.body.push(...accessors);\n\n\t\tbody.push(declaration);\n\n\t\tif (component.tag != null) {\n\t\t\tbody.push(b`\n\t\t\t\t@_customElements.define(\"${component.tag}\", ${name});\n\t\t\t`);\n\t\t}\n\t} else {\n\t\tconst superclass = {\n\t\t\ttype: 'Identifier',\n\t\t\tname: options.dev ? '@SvelteComponentDev' : '@SvelteComponent'\n\t\t};\n\n\t\tconst declaration = b`\n\t\t\tclass ${name} extends ${superclass} {\n\t\t\t\tconstructor(options) {\n\t\t\t\t\tsuper(${options.dev && 'options'});\n\t\t\t\t\t${should_add_css && b`if (!@_document.getElementById(\"${component.stylesheet.id}-style\")) ${add_css}();`}\n\t\t\t\t\t@init(this, options, ${definition}, ${has_create_fragment ? 'create_fragment': 'null'}, ${not_equal}, ${prop_indexes}, ${dirty});\n\t\t\t\t\t${options.dev && b`@dispatch_dev(\"SvelteRegisterComponent\", { component: this, tagName: \"${name.name}\", options, id: create_fragment.name });`}\n\n\t\t\t\t\t${dev_props_check}\n\t\t\t\t}\n\t\t\t}\n\t\t`[0] as ClassDeclaration;\n\n\t\tdeclaration.body.body.push(...accessors);\n\n\t\tbody.push(declaration);\n\t}\n\n\treturn { js: flatten(body, []), css };\n}\n\nfunction flatten(nodes: any[], target: any[]) {\n\tfor (let i = 0; i < nodes.length; i += 1) {\n\t\tconst node = nodes[i];\n\t\tif (Array.isArray(node)) {\n\t\t\tflatten(node, target);\n\t\t} else {\n\t\t\ttarget.push(node);\n\t\t}\n\t}\n\n\treturn target;\n}\n","import Renderer, { RenderOptions } from '../Renderer';\nimport AwaitBlock from '../../nodes/AwaitBlock';\nimport { x } from 'code-red';\n\nexport default function(node: AwaitBlock, renderer: Renderer, options: RenderOptions) {\n\trenderer.push();\n\trenderer.render(node.pending.children, options);\n\tconst pending = renderer.pop();\n\n\trenderer.push();\n\trenderer.render(node.then.children, options);\n\tconst then = renderer.pop();\n\n\trenderer.add_expression(x`\n\t\tfunction(__value) {\n\t\t\tif (@is_promise(__value)) return ${pending};\n\t\t\treturn (function(${node.then_node ? node.then_node : ''}) { return ${then}; }(__value));\n\t\t}(${node.expression.node})\n\t`);\n}\n","import Renderer, { RenderOptions } from '../Renderer';\nimport Comment from '../../nodes/Comment';\n\nexport default function(_node: Comment, _renderer: Renderer, _options: RenderOptions) {\n\t// TODO preserve comments\n\n\t// if (options.preserveComments) {\n\t// \trenderer.append(`<!--${node.data}-->`);\n\t// }\n}\n","import DebugTag from '../../nodes/DebugTag';\nimport Renderer, { RenderOptions } from '../Renderer';\nimport { x, p } from 'code-red';\n\nexport default function(node: DebugTag, renderer: Renderer, options: RenderOptions) {\n\tif (!options.dev) return;\n\n\tconst filename = options.filename || null;\n\tconst { line, column } = options.locate(node.start + 1);\n\n\tconst obj = x`{\n\t\t${node.expressions.map(e => p`${e.node.name}`)}\n\t}`;\n\n\trenderer.add_expression(x`@debug(${filename ? x`\"${filename}\"` : x`null`}, ${line - 1}, ${column}, ${obj})`);\n}\n","import Renderer, { RenderOptions } from '../Renderer';\nimport EachBlock from '../../nodes/EachBlock';\nimport { x } from 'code-red';\n\nexport default function(node: EachBlock, renderer: Renderer, options: RenderOptions) {\n\tconst args = [node.context_node];\n\tif (node.index) args.push({ type: 'Identifier', name: node.index });\n\n\trenderer.push();\n\trenderer.render(node.children, options);\n\tconst result = renderer.pop();\n\n\tconst consequent = x`@each(${node.expression.node}, (${args}) => ${result})`;\n\n\tif (node.else) {\n\t\trenderer.push();\n\t\trenderer.render(node.else.children, options);\n\t\tconst alternate = renderer.pop();\n\n\t\trenderer.add_expression(x`${node.expression.node}.length ? ${consequent} : ${alternate}`);\n\t} else {\n\t\trenderer.add_expression(consequent);\n\t}\n}\n","import Attribute from '../../../nodes/Attribute';\nimport { string_literal } from '../../../utils/stringify';\nimport Text from '../../../nodes/Text';\nimport { x } from 'code-red';\nimport Expression from '../../../nodes/shared/Expression';\nimport { Expression as ESTreeExpression } from 'estree';\n\nexport function get_class_attribute_value(attribute: Attribute): ESTreeExpression {\n\t// handle special case — `class={possiblyUndefined}` with scoped CSS\n\tif (attribute.chunks.length === 2 && (attribute.chunks[1] as Text).synthetic) {\n\t\tconst value = (attribute.chunks[0] as Expression).node;\n\t\treturn x`@escape(@null_to_empty(${value})) + \"${(attribute.chunks[1] as Text).data}\"`;\n\t}\n\n\treturn get_attribute_value(attribute);\n}\n\nexport function get_attribute_value(attribute: Attribute): ESTreeExpression {\n\tif (attribute.chunks.length === 0) return x`\"\"`;\n\n\treturn attribute.chunks\n\t\t.map((chunk) => {\n\t\t\treturn chunk.type === 'Text'\n\t\t\t\t? string_literal(chunk.data.replace(/\"/g, '&quot;')) as ESTreeExpression\n\t\t\t\t: x`@escape(${chunk.node})`;\n\t\t})\n\t\t.reduce((lhs, rhs) => x`${lhs} + ${rhs}`);\n}\n","import Let from '../../../nodes/Let';\nimport { ObjectPattern } from 'estree';\n\nexport function get_slot_scope(lets: Let[]): ObjectPattern {\n\tif (lets.length === 0) return null;\n\n\treturn {\n\t\ttype: 'ObjectPattern',\n\t\tproperties: lets.map(l => {\n\t\t\treturn {\n\t\t\t\ttype: 'Property',\n\t\t\t\tkind: 'init',\n\t\t\t\tmethod: false,\n\t\t\t\tshorthand: false,\n\t\t\t\tcomputed: false,\n\t\t\t\tkey: l.name,\n\t\t\t\tvalue: l.value || l.name\n\t\t\t};\n\t\t})\n\t};\n}\n","// source: https://html.spec.whatwg.org/multipage/indices.html\nexport const boolean_attributes = new Set([\n\t'allowfullscreen',\n\t'allowpaymentrequest',\n\t'async',\n\t'autofocus',\n\t'autoplay',\n\t'checked',\n\t'controls',\n\t'default',\n\t'defer',\n\t'disabled',\n\t'formnovalidate',\n\t'hidden',\n\t'ismap',\n\t'loop',\n\t'multiple',\n\t'muted',\n\t'nomodule',\n\t'novalidate',\n\t'open',\n\t'playsinline',\n\t'readonly',\n\t'required',\n\t'reversed',\n\t'selected'\n]);\n","import { INode } from '../../../nodes/interfaces';\nimport { trim_end, trim_start } from '../../../../utils/trim';\nimport { link } from '../../../../utils/link';\n\n// similar logic from `compile/render_dom/wrappers/Fragment`\n// We want to remove trailing whitespace inside an element/component/block,\n// *unless* there is no whitespace between this node and its next sibling\nexport default function remove_whitespace_children(children: INode[], next?: INode): INode[] {\n\tconst nodes: INode[] = [];\n\tlet last_child: INode;\n\tlet i = children.length;\n\twhile (i--) {\n\t\tconst child = children[i];\n\n\t\tif (child.type === 'Text') {\n\t\t\tif (child.should_skip()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet { data } = child;\n\n\t\t\tif (nodes.length === 0) {\n\t\t\t\tconst should_trim = next\n\t\t\t\t\t? next.type === 'Text' &&\n\t\t\t\t\t /^\\s/.test(next.data) &&\n\t\t\t\t\t trimmable_at(child, next)\n\t\t\t\t\t: !child.has_ancestor('EachBlock');\n\n\t\t\t\tif (should_trim) {\n\t\t\t\t\tdata = trim_end(data);\n\t\t\t\t\tif (!data) continue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// glue text nodes (which could e.g. be separated by comments) together\n\t\t\tif (last_child && last_child.type === 'Text') {\n\t\t\t\tlast_child.data = data + last_child.data;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnodes.unshift(child);\n\t\t\tlink(last_child, last_child = child);\n\t\t} else {\n\t\t\tnodes.unshift(child);\n\t\t\tlink(last_child, last_child = child);\n\t\t}\n\t}\n\n\tconst first = nodes[0];\n\tif (first && first.type === 'Text') {\n\t\tfirst.data = trim_start(first.data);\n\t\tif (!first.data) {\n\t\t\tfirst.var = null;\n\t\t\tnodes.shift();\n\n\t\t\tif (nodes[0]) {\n\t\t\t\tnodes[0].prev = null;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nodes;\n}\n\nfunction trimmable_at(child: INode, next_sibling: INode): boolean {\n\t// Whitespace is trimmable if one of the following is true:\n\t// The child and its sibling share a common nearest each block (not at an each block boundary)\n\t// The next sibling's previous node is an each block\n\treturn (\n\t\tnext_sibling.find_nearest(/EachBlock/) ===\n\t\t\tchild.find_nearest(/EachBlock/) || next_sibling.prev.type === 'EachBlock'\n\t);\n}\n","import { is_void } from '../../../utils/names';\nimport { get_attribute_value, get_class_attribute_value } from './shared/get_attribute_value';\nimport { get_slot_scope } from './shared/get_slot_scope';\nimport { boolean_attributes } from './shared/boolean_attributes';\nimport Renderer, { RenderOptions } from '../Renderer';\nimport Element from '../../nodes/Element';\nimport { x } from 'code-red';\nimport Expression from '../../nodes/shared/Expression';\nimport remove_whitespace_children from './utils/remove_whitespace_children';\n\nexport default function(node: Element, renderer: Renderer, options: RenderOptions & {\n\tslot_scopes: Map<any, any>;\n}) {\n\n\tconst children = remove_whitespace_children(node.children, node.next);\n\n\t// awkward special case\n\tlet node_contents;\n\n\tconst contenteditable = (\n\t\tnode.name !== 'textarea' &&\n\t\tnode.name !== 'input' &&\n\t\tnode.attributes.some((attribute) => attribute.name === 'contenteditable')\n\t);\n\n\tconst slot = node.get_static_attribute_value('slot');\n\tconst nearest_inline_component = node.find_nearest(/InlineComponent/);\n\n\tif (slot && nearest_inline_component) {\n\t\trenderer.push();\n\t}\n\n\trenderer.add_string(`<${node.name}`);\n\n\tconst class_expression_list = node.classes.map(class_directive => {\n\t\tconst { expression, name } = class_directive;\n\t\tconst snippet = expression ? expression.node : x`#ctx.${name}`; // TODO is this right?\n\t\treturn x`${snippet} ? \"${name}\" : \"\"`;\n\t});\n\tif (node.needs_manual_style_scoping) {\n\t\tclass_expression_list.push(x`\"${node.component.stylesheet.id}\"`);\n\t}\n\tconst class_expression =\n\t\tclass_expression_list.length > 0 &&\n\t\tclass_expression_list.reduce((lhs, rhs) => x`${lhs} + ' ' + ${rhs}`);\n\n\tif (node.attributes.some(attr => attr.is_spread)) {\n\t\t// TODO dry this out\n\t\tconst args = [];\n\t\tnode.attributes.forEach(attribute => {\n\t\t\tif (attribute.is_spread) {\n\t\t\t\targs.push(attribute.expression.node);\n\t\t\t} else {\n\t\t\t\tconst name = attribute.name.toLowerCase();\n\t\t\t\tif (name === 'value' && node.name.toLowerCase() === 'textarea') {\n\t\t\t\t\tnode_contents = get_attribute_value(attribute);\n\t\t\t\t} else if (attribute.is_true) {\n\t\t\t\t\targs.push(x`{ ${attribute.name}: true }`);\n\t\t\t\t} else if (\n\t\t\t\t\tboolean_attributes.has(name) &&\n\t\t\t\t\tattribute.chunks.length === 1 &&\n\t\t\t\t\tattribute.chunks[0].type !== 'Text'\n\t\t\t\t) {\n\t\t\t\t\t// a boolean attribute with one non-Text chunk\n\t\t\t\t\targs.push(x`{ ${attribute.name}: ${(attribute.chunks[0] as Expression).node} || null }`);\n\t\t\t\t} else {\n\t\t\t\t\targs.push(x`{ ${attribute.name}: ${get_attribute_value(attribute)} }`);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\trenderer.add_expression(x`@spread([${args}], ${class_expression})`);\n\t} else {\n\t\tlet add_class_attribute = !!class_expression;\n\t\tnode.attributes.forEach(attribute => {\n\t\t\tconst name = attribute.name.toLowerCase();\n\t\t\tif (name === 'value' && node.name.toLowerCase() === 'textarea') {\n\t\t\t\tnode_contents = get_attribute_value(attribute);\n\t\t\t} else if (attribute.is_true) {\n\t\t\t\trenderer.add_string(` ${attribute.name}`);\n\t\t\t} else if (\n\t\t\t\tboolean_attributes.has(name) &&\n\t\t\t\tattribute.chunks.length === 1 &&\n\t\t\t\tattribute.chunks[0].type !== 'Text'\n\t\t\t) {\n\t\t\t\t// a boolean attribute with one non-Text chunk\n\t\t\t\trenderer.add_string(' ');\n\t\t\t\trenderer.add_expression(x`${(attribute.chunks[0] as Expression).node} ? \"${attribute.name}\" : \"\"`);\n\t\t\t} else if (name === 'class' && class_expression) {\n\t\t\t\tadd_class_attribute = false;\n\t\t\t\trenderer.add_string(` ${attribute.name}=\"`);\n\t\t\t\trenderer.add_expression(x`[${get_class_attribute_value(attribute)}, ${class_expression}].join(' ').trim()`);\n\t\t\t\trenderer.add_string('\"');\n\t\t\t} else if (attribute.chunks.length === 1 && attribute.chunks[0].type !== 'Text') {\n\t\t\t\tconst snippet = (attribute.chunks[0] as Expression).node;\n\t\t\t\trenderer.add_expression(x`@add_attribute(\"${attribute.name}\", ${snippet}, ${boolean_attributes.has(name) ? 1 : 0})`);\n\t\t\t} else {\n\t\t\t\trenderer.add_string(` ${attribute.name}=\"`);\n\t\t\t\trenderer.add_expression((name === 'class' ? get_class_attribute_value : get_attribute_value)(attribute));\n\t\t\t\trenderer.add_string('\"');\n\t\t\t}\n\t\t});\n\t\tif (add_class_attribute) {\n\t\t\trenderer.add_expression(x`@add_classes([${class_expression}].join(' ').trim())`);\n\t\t}\n\t}\n\n\tnode.bindings.forEach(binding => {\n\t\tconst { name, expression } = binding;\n\n\t\tif (binding.is_readonly) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (name === 'group') {\n\t\t\t// TODO server-render group bindings\n\t\t} else if (contenteditable && (name === 'textContent' || name === 'innerHTML')) {\n\t\t\tnode_contents = expression.node;\n\n\t\t\t// TODO where was this used?\n\t\t\t// value = name === 'textContent' ? x`@escape($$value)` : x`$$value`;\n\t\t} else if (binding.name === 'value' && node.name === 'textarea') {\n\t\t\tconst snippet = expression.node;\n\t\t\tnode_contents = x`${snippet} || \"\"`;\n\t\t} else {\n\t\t\tconst snippet = expression.node;\n\t\t\trenderer.add_expression(x`@add_attribute(\"${name}\", ${snippet}, 1)`);\n\t\t}\n\t});\n\n\tif (options.hydratable && options.head_id) {\n\t\trenderer.add_string(` data-svelte=\"${options.head_id}\"`);\n\t}\n\n\trenderer.add_string('>');\n\n\tif (node_contents !== undefined) {\n\t\tif (contenteditable) {\n\t\t\trenderer.push();\n\t\t\trenderer.render(children, options);\n\t\t\tconst result = renderer.pop();\n\n\t\t\trenderer.add_expression(x`($$value => $$value === void 0 ? ${result} : $$value)(${node_contents})`);\n\t\t} else {\n\t\t\trenderer.add_expression(node_contents);\n\t\t}\n\n\t\tif (!is_void(node.name)) {\n\t\t\trenderer.add_string(`</${node.name}>`);\n\t\t}\n\t} else if (slot && nearest_inline_component) {\n\t\trenderer.render(children, options);\n\n\t\tif (!is_void(node.name)) {\n\t\t\trenderer.add_string(`</${node.name}>`);\n\t\t}\n\n\t\tconst lets = node.lets;\n\t\tconst seen = new Set(lets.map(l => l.name.name));\n\n\t\tnearest_inline_component.lets.forEach(l => {\n\t\t\tif (!seen.has(l.name.name)) lets.push(l);\n\t\t});\n\n\t\toptions.slot_scopes.set(slot, {\n\t\t\tinput: get_slot_scope(node.lets),\n\t\t\toutput: renderer.pop()\n\t\t});\n\t} else {\n\t\trenderer.render(children, options);\n\n\t\tif (!is_void(node.name)) {\n\t\t\trenderer.add_string(`</${node.name}>`);\n\t\t}\n\t}\n}\n\n","import Renderer, { RenderOptions } from '../Renderer';\nimport Head from '../../nodes/Head';\nimport { x } from 'code-red';\n\nexport default function(node: Head, renderer: Renderer, options: RenderOptions) {\n\tconst head_options = {\n\t\t...options,\n\t\thead_id: node.id\n\t};\n\n\trenderer.push();\n\trenderer.render(node.children, head_options);\n\tconst result = renderer.pop();\n\n\trenderer.add_expression(x`$$result.head += ${result}, \"\"`);\n}\n","import Renderer, { RenderOptions } from '../Renderer';\nimport RawMustacheTag from '../../nodes/RawMustacheTag';\n\nexport default function(node: RawMustacheTag, renderer: Renderer, _options: RenderOptions) {\n\trenderer.add_expression(node.expression.node);\n}\n","import IfBlock from '../../nodes/IfBlock';\nimport Renderer, { RenderOptions } from '../Renderer';\nimport { x } from 'code-red';\n\nexport default function(node: IfBlock, renderer: Renderer, options: RenderOptions) {\n\tconst condition = node.expression.node;\n\n\trenderer.push();\n\trenderer.render(node.children, options);\n\tconst consequent = renderer.pop();\n\n\trenderer.push();\n\tif (node.else) renderer.render(node.else.children, options);\n\tconst alternate = renderer.pop();\n\n\trenderer.add_expression(x`${condition} ? ${consequent} : ${alternate}`);\n}\n","import { string_literal } from '../../utils/stringify';\nimport Renderer, { RenderOptions } from '../Renderer';\nimport { get_slot_scope } from './shared/get_slot_scope';\nimport InlineComponent from '../../nodes/InlineComponent';\nimport remove_whitespace_children from './utils/remove_whitespace_children';\nimport { p, x } from 'code-red';\n\nfunction get_prop_value(attribute) {\n\tif (attribute.is_true) return x`true`;\n\tif (attribute.chunks.length === 0) return x`''`;\n\n\treturn attribute.chunks\n\t\t.map(chunk => {\n\t\t\tif (chunk.type === 'Text') return string_literal(chunk.data);\n\t\t\treturn chunk.node;\n\t\t})\n\t\t.reduce((lhs, rhs) => x`${lhs} + ${rhs}`);\n}\n\nexport default function(node: InlineComponent, renderer: Renderer, options: RenderOptions) {\n\tconst binding_props = [];\n\tconst binding_fns = [];\n\n\tnode.bindings.forEach(binding => {\n\t\trenderer.has_bindings = true;\n\n\t\t// TODO this probably won't work for contextual bindings\n\t\tconst snippet = binding.expression.node;\n\n\t\tbinding_props.push(p`${binding.name}: ${snippet}`);\n\t\tbinding_fns.push(p`${binding.name}: $$value => { ${snippet} = $$value; $$settled = false }`);\n\t});\n\n\tconst uses_spread = node.attributes.find(attr => attr.is_spread);\n\n\tlet props;\n\n\tif (uses_spread) {\n\t\tprops = x`@_Object.assign(${\n\t\t\tnode.attributes\n\t\t\t\t.map(attribute => {\n\t\t\t\t\tif (attribute.is_spread) {\n\t\t\t\t\t\treturn attribute.expression.node;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn x`{ ${attribute.name}: ${get_prop_value(attribute)} }`;\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.concat(binding_props.map(p => x`{ ${p} }`))\n\t\t})`;\n\t} else {\n\t\tprops = x`{\n\t\t\t${node.attributes.map(attribute => p`${attribute.name}: ${get_prop_value(attribute)}`)},\n\t\t\t${binding_props}\n\t\t}`;\n\t}\n\n\tconst bindings = x`{\n\t\t${binding_fns}\n\t}`;\n\n\tconst expression = (\n\t\tnode.name === 'svelte:self'\n\t\t\t? renderer.name\n\t\t\t: node.name === 'svelte:component'\n\t\t\t\t? x`(${node.expression.node}) || @missing_component`\n\t\t\t\t: node.name.split('.').reduce(((lhs, rhs) => x`${lhs}.${rhs}`) as any)\n\t);\n\n\tconst slot_fns = [];\n\n\tconst children = remove_whitespace_children(node.children, node.next);\n\n\tif (children.length) {\n\t\tconst slot_scopes = new Map();\n\n\t\trenderer.push();\n\n\t\trenderer.render(children, Object.assign({}, options, {\n\t\t\tslot_scopes\n\t\t}));\n\n\t\tslot_scopes.set('default', {\n\t\t\tinput: get_slot_scope(node.lets),\n\t\t\toutput: renderer.pop()\n\t\t});\n\n\t\tslot_scopes.forEach(({ input, output }, name) => {\n\t\t\tif (!is_empty_template_literal(output)) {\n\t\t\t\tslot_fns.push(\n\t\t\t\t\tp`${name}: (${input}) => ${output}`\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n\n\tconst slots = x`{\n\t\t${slot_fns}\n\t}`;\n\n\trenderer.add_expression(x`@validate_component(${expression}, \"${node.name}\").$$render($$result, ${props}, ${bindings}, ${slots})`);\n}\n\nfunction is_empty_template_literal(template_literal) {\n\treturn (\n\t\ttemplate_literal.expressions.length === 0 &&\n\t\ttemplate_literal.quasis.length === 1 &&\n\t\ttemplate_literal.quasis[0].value.raw === ''\n\t);\n}\n","import KeyBlock from '../../nodes/KeyBlock';\nimport Renderer, { RenderOptions } from '../Renderer';\n\nexport default function(node: KeyBlock, renderer: Renderer, options: RenderOptions) {\n\trenderer.render(node.children, options);\n}\n","import Renderer, { RenderOptions } from '../Renderer';\nimport Slot from '../../nodes/Slot';\nimport { x } from 'code-red';\nimport get_slot_data from '../../utils/get_slot_data';\nimport { get_slot_scope } from './shared/get_slot_scope';\n\nexport default function(node: Slot, renderer: Renderer, options: RenderOptions & {\n\tslot_scopes: Map<any, any>;\n}) {\n\tconst slot_data = get_slot_data(node.values);\n\tconst slot = node.get_static_attribute_value('slot');\n\tconst nearest_inline_component = node.find_nearest(/InlineComponent/);\n\n\tif (slot && nearest_inline_component) {\n\t\trenderer.push();\n\t}\n\n\trenderer.push();\n\trenderer.render(node.children, options);\n\tconst result = renderer.pop();\n\n\trenderer.add_expression(x`\n\t\t#slots.${node.slot_name}\n\t\t\t? #slots.${node.slot_name}(${slot_data})\n\t\t\t: ${result}\n\t`);\n\n\tif (slot && nearest_inline_component) {\n\t\tconst lets = node.lets;\n\t\tconst seen = new Set(lets.map(l => l.name.name));\n\n\t\tnearest_inline_component.lets.forEach(l => {\n\t\t\tif (!seen.has(l.name.name)) lets.push(l);\n\t\t});\n\t\toptions.slot_scopes.set(slot, {\n\t\t\tinput: get_slot_scope(node.lets),\n\t\t\toutput: renderer.pop()\n\t\t});\n\t}\n}\n","\nimport Renderer, { RenderOptions } from '../Renderer';\nimport { x } from 'code-red';\n\nexport default function(node, renderer: Renderer, _options: RenderOptions) {\n\tconst snippet = node.expression.node;\n\n\trenderer.add_expression(\n\t\tnode.parent &&\n\t\tnode.parent.type === 'Element' &&\n\t\tnode.parent.name === 'style'\n\t\t\t? snippet\n\t\t\t: x`@escape(${snippet})`\n\t);\n}\n","import { escape_html } from '../../utils/stringify';\nimport Renderer, { RenderOptions } from '../Renderer';\nimport Text from '../../nodes/Text';\nimport Element from '../../nodes/Element';\n\nexport default function(node: Text, renderer: Renderer, _options: RenderOptions) {\n\tlet text = node.data;\n\tif (\n\t\t!node.parent ||\n\t\tnode.parent.type !== 'Element' ||\n\t\t((node.parent as Element).name !== 'script' && (node.parent as Element).name !== 'style')\n\t) {\n\t\t// unless this Text node is inside a <script> or <style> element, escape &,<,>\n\t\ttext = escape_html(text);\n\t}\n\n\trenderer.add_string(text);\n}\n","import Renderer, { RenderOptions } from '../Renderer';\nimport Title from '../../nodes/Title';\nimport { x } from 'code-red';\n\nexport default function(node: Title, renderer: Renderer, options: RenderOptions) {\n\trenderer.push();\n\n\trenderer.add_string('<title>');\n\n\trenderer.render(node.children, options);\n\n\trenderer.add_string('</title>');\n\tconst result = renderer.pop();\n\n\trenderer.add_expression(x`$$result.title = ${result}, \"\"`);\n}\n","import AwaitBlock from './handlers/AwaitBlock';\nimport Comment from './handlers/Comment';\nimport DebugTag from './handlers/DebugTag';\nimport EachBlock from './handlers/EachBlock';\nimport Element from './handlers/Element';\nimport Head from './handlers/Head';\nimport HtmlTag from './handlers/HtmlTag';\nimport IfBlock from './handlers/IfBlock';\nimport InlineComponent from './handlers/InlineComponent';\nimport KeyBlock from './handlers/KeyBlock';\nimport Slot from './handlers/Slot';\nimport Tag from './handlers/Tag';\nimport Text from './handlers/Text';\nimport Title from './handlers/Title';\nimport { AppendTarget, CompileOptions } from '../../interfaces';\nimport { INode } from '../nodes/interfaces';\nimport { Expression, TemplateLiteral, Identifier } from 'estree';\nimport { escape_template } from '../utils/stringify';\n\ntype Handler = (node: any, renderer: Renderer, options: CompileOptions) => void;\n\nfunction noop() {}\n\nconst handlers: Record<string, Handler> = {\n\tAwaitBlock,\n\tBody: noop,\n\tComment,\n\tDebugTag,\n\tEachBlock,\n\tElement,\n\tHead,\n\tIfBlock,\n\tInlineComponent,\n\tKeyBlock,\n\tMustacheTag: Tag, // TODO MustacheTag is an anachronism\n\tOptions: noop,\n\tRawMustacheTag: HtmlTag,\n\tSlot,\n\tText,\n\tTitle,\n\tWindow: noop\n};\n\nexport interface RenderOptions extends CompileOptions{\n\tlocate: (c: number) => { line: number; column: number };\n\thead_id?: string;\n}\n\nexport default class Renderer {\n\thas_bindings = false;\n\n\tname: Identifier;\n\n\tstack: Array<{ current: { value: string }; literal: TemplateLiteral }> = [];\n\tcurrent: { value: string }; // TODO can it just be `current: string`?\n\tliteral: TemplateLiteral;\n\n\ttargets: AppendTarget[] = [];\n\n\tconstructor({ name }) {\n\t\tthis.name = name;\n\t\tthis.push();\n\t}\n\n\tadd_string(str: string) {\n\t\tthis.current.value += escape_template(str);\n\t}\n\n\tadd_expression(node: Expression) {\n\t\tthis.literal.quasis.push({\n\t\t\ttype: 'TemplateElement',\n\t\t\tvalue: { raw: this.current.value, cooked: null },\n\t\t\ttail: false\n\t\t});\n\n\t\tthis.literal.expressions.push(node);\n\t\tthis.current.value = '';\n\t}\n\n\tpush() {\n\t\tconst current = this.current = { value: '' };\n\n\t\tconst literal = this.literal = {\n\t\t\ttype: 'TemplateLiteral',\n\t\t\texpressions: [],\n\t\t\tquasis: []\n\t\t};\n\n\t\tthis.stack.push({ current, literal });\n\t}\n\n\tpop() {\n\t\tthis.literal.quasis.push({\n\t\t\ttype: 'TemplateElement',\n\t\t\tvalue: { raw: this.current.value, cooked: null },\n\t\t\ttail: true\n\t\t});\n\n\t\tconst popped = this.stack.pop();\n\t\tconst last = this.stack[this.stack.length - 1];\n\n\t\tif (last) {\n\t\t\tthis.literal = last.literal;\n\t\t\tthis.current = last.current;\n\t\t}\n\n\t\treturn popped.literal;\n\t}\n\n\trender(nodes: INode[], options: RenderOptions) {\n\t\tnodes.forEach(node => {\n\t\t\tconst handler = handlers[node.type];\n\n\t\t\tif (!handler) {\n\t\t\t\tthrow new Error(`No handler for '${node.type}' nodes`);\n\t\t\t}\n\n\t\t\thandler(node, this, options);\n\t\t});\n\t}\n}\n","import { b } from 'code-red';\nimport Component from '../Component';\nimport { CompileOptions, CssResult } from '../../interfaces';\nimport { string_literal } from '../utils/stringify';\nimport Renderer from './Renderer';\nimport { INode as TemplateNode } from '../nodes/interfaces'; // TODO\nimport Text from '../nodes/Text';\nimport { LabeledStatement, Statement, Node } from 'estree';\n\nexport default function ssr(\n\tcomponent: Component,\n\toptions: CompileOptions\n): {js: Node[]; css: CssResult} {\n\tconst renderer = new Renderer({\n\t\tname: component.name\n\t});\n\n\tconst { name } = component;\n\n\t// create $$render function\n\trenderer.render(trim(component.fragment.children), Object.assign({\n\t\tlocate: component.locate\n\t}, options));\n\n\t// TODO put this inside the Renderer class\n\tconst literal = renderer.pop();\n\n\t// TODO concatenate CSS maps\n\tconst css = options.customElement ?\n\t\t{ code: null, map: null } :\n\t\tcomponent.stylesheet.render(options.filename, true);\n\n\tconst uses_rest = component.var_lookup.has('$$restProps');\n\tconst props = component.vars.filter(variable => !variable.module && variable.export_name);\n\tconst rest = uses_rest ? b`let $$restProps = @compute_rest_props($$props, [${props.map(prop => `\"${prop.export_name}\"`).join(',')}]);` : null;\n\n\tconst uses_slots = component.var_lookup.has('$$slots');\n\tconst slots = uses_slots ? b`let $$slots = @compute_slots(#slots);` : null;\n\n\tconst reactive_stores = component.vars.filter(variable => variable.name[0] === '$' && variable.name[1] !== '$');\n\tconst reactive_store_values = reactive_stores\n\t\t.map(({ name }) => {\n\t\t\tconst store_name = name.slice(1);\n\t\t\tconst store = component.var_lookup.get(store_name);\n\t\t\tif (store && store.hoistable) return null;\n\n\t\t\tconst assignment = b`${name} = @get_store_value(${store_name});`;\n\n\t\t\treturn component.compile_options.dev\n\t\t\t\t? b`@validate_store(${store_name}, '${store_name}'); ${assignment}`\n\t\t\t\t: assignment;\n\t\t})\n\t\t.filter(Boolean);\n\n\tcomponent.rewrite_props(({ name }) => {\n\t\tconst value = `$${name}`;\n\n\t\tlet insert = b`${value} = @get_store_value(${name})`;\n\t\tif (component.compile_options.dev) {\n\t\t\tinsert = b`@validate_store(${name}, '${name}'); ${insert}`;\n\t\t}\n\n\t\treturn insert;\n\t});\n\n\tconst instance_javascript = component.extract_javascript(component.ast.instance);\n\n\t// TODO only do this for props with a default value\n\tconst parent_bindings = instance_javascript\n\t\t? component.vars\n\t\t\t.filter(variable => !variable.module && variable.export_name)\n\t\t\t.map(prop => {\n\t\t\t\treturn b`if ($$props.${prop.export_name} === void 0 && $$bindings.${prop.export_name} && ${prop.name} !== void 0) $$bindings.${prop.export_name}(${prop.name});`;\n\t\t\t})\n\t\t: [];\n\n\tconst injected = Array.from(component.injected_reactive_declaration_vars).filter(name => {\n\t\tconst variable = component.var_lookup.get(name);\n\t\treturn variable.injected;\n\t});\n\n\tconst reactive_declarations = component.reactive_declarations.map(d => {\n\t\tconst body: Statement = (d.node as LabeledStatement).body;\n\n\t\tlet statement = b`${body}`;\n\n\t\tif (!d.declaration) { // TODO do not add label if it's not referenced\n\t\t\tstatement = b`$: { ${statement} }`;\n\t\t}\n\n\t\treturn statement;\n\t});\n\n\tconst main = renderer.has_bindings\n\t\t? b`\n\t\t\tlet $$settled;\n\t\t\tlet $$rendered;\n\n\t\t\tdo {\n\t\t\t\t$$settled = true;\n\n\t\t\t\t${reactive_store_values}\n\n\t\t\t\t${injected.map(name => b`let ${name};`)}\n\n\t\t\t\t${reactive_declarations}\n\n\t\t\t\t$$rendered = ${literal};\n\t\t\t} while (!$$settled);\n\n\t\t\treturn $$rendered;\n\t\t`\n\t\t: b`\n\t\t\t${reactive_store_values}\n\n\t\t\t${injected.map(name => b`let ${name};`)}\n\n\t\t\t${reactive_declarations}\n\n\t\t\treturn ${literal};`;\n\n\tconst blocks = [\n\t\trest,\n\t\tslots,\n\t\t...reactive_stores.map(({ name }) => {\n\t\t\tconst store_name = name.slice(1);\n\t\t\tconst store = component.var_lookup.get(store_name);\n\t\t\tif (store && store.hoistable) {\n\t\t\t\treturn b`let ${name} = @get_store_value(${store_name});`;\n\t\t\t}\n\t\t\treturn b`let ${name};`;\n\t\t}),\n\n\t\tinstance_javascript,\n\t\t...parent_bindings,\n\t\tcss.code && b`$$result.css.add(#css);`,\n\t\tmain\n\t].filter(Boolean);\n\n\tconst js = b`\n\t\t${css.code ? b`\n\t\tconst #css = {\n\t\t\tcode: \"${css.code}\",\n\t\t\tmap: ${css.map ? string_literal(css.map.toString()) : 'null'}\n\t\t};` : null}\n\n\t\t${component.extract_javascript(component.ast.module)}\n\n\t\t${component.fully_hoisted}\n\n\t\tconst ${name} = @create_ssr_component(($$result, $$props, $$bindings, #slots) => {\n\t\t\t${blocks}\n\t\t});\n\t`;\n\n\treturn {js, css};\n}\n\nfunction trim(nodes: TemplateNode[]) {\n\tlet start = 0;\n\tfor (; start < nodes.length; start += 1) {\n\t\tconst node = nodes[start] as Text;\n\t\tif (node.type !== 'Text') break;\n\n\t\tnode.data = node.data.replace(/^\\s+/, '');\n\t\tif (node.data) break;\n\t}\n\n\tlet end = nodes.length;\n\tfor (; end > start; end -= 1) {\n\t\tconst node = nodes[end - 1] as Text;\n\t\tif (node.type !== 'Text') break;\n\n\t\tnode.data = node.data.replace(/\\s+$/, '');\n\t\tif (node.data) break;\n\t}\n\n\treturn nodes.slice(start, end);\n}\n","import list from '../utils/list';\nimport { ModuleFormat } from '../interfaces';\nimport { b, x } from 'code-red';\nimport { Identifier, ImportDeclaration } from 'estree';\n\nconst wrappers = { esm, cjs };\n\ninterface Export {\n\tname: string;\n\tas: string;\n}\n\nexport default function create_module(\n\tprogram: any,\n\tformat: ModuleFormat,\n\tname: Identifier,\n\tbanner: string,\n\tsveltePath = 'svelte',\n\thelpers: Array<{ name: string; alias: Identifier }>,\n\tglobals: Array<{ name: string; alias: Identifier }>,\n\timports: ImportDeclaration[],\n\tmodule_exports: Export[]\n) {\n\tconst internal_path = `${sveltePath}/internal`;\n\n\thelpers.sort((a, b) => (a.name < b.name) ? -1 : 1);\n\tglobals.sort((a, b) => (a.name < b.name) ? -1 : 1);\n\n\tif (format === 'esm') {\n\t\treturn esm(program, name, banner, sveltePath, internal_path, helpers, globals, imports, module_exports);\n\t}\n\n\tif (format === 'cjs') return cjs(program, name, banner, sveltePath, internal_path, helpers, globals, imports, module_exports);\n\n\tthrow new Error(`options.format is invalid (must be ${list(Object.keys(wrappers))})`);\n}\n\nfunction edit_source(source, sveltePath) {\n\treturn source === 'svelte' || source.startsWith('svelte/')\n\t\t? source.replace('svelte', sveltePath)\n\t\t: source;\n}\n\nfunction get_internal_globals(\n\tglobals: Array<{ name: string; alias: Identifier }>, \n\thelpers: Array<{ name: string; alias: Identifier }>\n) {\n\treturn globals.length > 0 && {\n\t\ttype: 'VariableDeclaration',\n\t\tkind: 'const',\n\t\tdeclarations: [{\n\t\t\ttype: 'VariableDeclarator',\n\t\t\tid: {\n\t\t\t\ttype: 'ObjectPattern',\n\t\t\t\tproperties: globals.map(g => ({\n\t\t\t\t\ttype: 'Property',\n\t\t\t\t\tmethod: false,\n\t\t\t\t\tshorthand: false,\n\t\t\t\t\tcomputed: false,\n\t\t\t\t\tkey: { type: 'Identifier', name: g.name },\n\t\t\t\t\tvalue: g.alias,\n\t\t\t\t\tkind: 'init'\n\t\t\t\t}))\n\t\t\t},\n\t\t\tinit: helpers.find(({ name }) => name === 'globals').alias\n\t\t}]\n\t};\n} \n\nfunction esm(\n\tprogram: any,\n\tname: Identifier,\n\tbanner: string,\n\tsveltePath: string,\n\tinternal_path: string,\n\thelpers: Array<{ name: string; alias: Identifier }>,\n\tglobals: Array<{ name: string; alias: Identifier }>,\n\timports: ImportDeclaration[],\n\tmodule_exports: Export[]\n) {\n\tconst import_declaration = {\n\t\ttype: 'ImportDeclaration',\n\t\tspecifiers: helpers.map(h => ({\n\t\t\ttype: 'ImportSpecifier',\n\t\t\tlocal: h.alias,\n\t\t\timported: { type: 'Identifier', name: h.name }\n\t\t})),\n\t\tsource: { type: 'Literal', value: internal_path }\n\t};\n\n\tconst internal_globals = get_internal_globals(globals, helpers);\n\n\t// edit user imports\n\timports.forEach(node => {\n\t\tnode.source.value = edit_source(node.source.value, sveltePath);\n\t});\n\n\tconst exports = module_exports.length > 0 && {\n\t\ttype: 'ExportNamedDeclaration',\n\t\tspecifiers: module_exports.map(x => ({\n\t\t\ttype: 'Specifier',\n\t\t\tlocal: { type: 'Identifier', name: x.name },\n\t\t\texported: { type: 'Identifier', name: x.as }\n\t\t}))\n\t};\n\n\tprogram.body = b`\n\t\t/* ${banner} */\n\n\t\t${import_declaration}\n\t\t${internal_globals}\n\t\t${imports}\n\n\t\t${program.body}\n\n\t\texport default ${name};\n\t\t${exports}\n\t`;\n}\n\nfunction cjs(\n\tprogram: any,\n\tname: Identifier,\n\tbanner: string,\n\tsveltePath: string,\n\tinternal_path: string,\n\thelpers: Array<{ name: string; alias: Identifier }>,\n\tglobals: Array<{ name: string; alias: Identifier }>,\n\timports: ImportDeclaration[],\n\tmodule_exports: Export[]\n) {\n\tconst internal_requires = {\n\t\ttype: 'VariableDeclaration',\n\t\tkind: 'const',\n\t\tdeclarations: [{\n\t\t\ttype: 'VariableDeclarator',\n\t\t\tid: {\n\t\t\t\ttype: 'ObjectPattern',\n\t\t\t\tproperties: helpers.map(h => ({\n\t\t\t\t\ttype: 'Property',\n\t\t\t\t\tmethod: false,\n\t\t\t\t\tshorthand: false,\n\t\t\t\t\tcomputed: false,\n\t\t\t\t\tkey: { type: 'Identifier', name: h.name },\n\t\t\t\t\tvalue: h.alias,\n\t\t\t\t\tkind: 'init'\n\t\t\t\t}))\n\t\t\t},\n\t\t\tinit: x`require(\"${internal_path}\")`\n\t\t}]\n\t};\n\n\tconst internal_globals = get_internal_globals(globals, helpers);\n\n\tconst user_requires = imports.map(node => {\n\t\tconst init = x`require(\"${edit_source(node.source.value, sveltePath)}\")`;\n\t\tif (node.specifiers.length === 0) {\n\t\t\treturn b`${init};`;\n\t\t}\n\t\treturn {\n\t\t\ttype: 'VariableDeclaration',\n\t\t\tkind: 'const',\n\t\t\tdeclarations: [{\n\t\t\t\ttype: 'VariableDeclarator',\n\t\t\t\tid: node.specifiers[0].type === 'ImportNamespaceSpecifier'\n\t\t\t\t\t? { type: 'Identifier', name: node.specifiers[0].local.name }\n\t\t\t\t\t: {\n\t\t\t\t\t\ttype: 'ObjectPattern',\n\t\t\t\t\t\tproperties: node.specifiers.map(s => ({\n\t\t\t\t\t\t\ttype: 'Property',\n\t\t\t\t\t\t\tmethod: false,\n\t\t\t\t\t\t\tshorthand: false,\n\t\t\t\t\t\t\tcomputed: false,\n\t\t\t\t\t\t\tkey: s.type === 'ImportSpecifier' ? s.imported : { type: 'Identifier', name: 'default' },\n\t\t\t\t\t\t\tvalue: s.local,\n\t\t\t\t\t\t\tkind: 'init'\n\t\t\t\t\t\t}))\n\t\t\t\t\t},\n\t\t\t\tinit\n\t\t\t}]\n\t\t};\n\t});\n\n\tconst exports = module_exports.map(x => b`exports.${{ type: 'Identifier', name: x.as }} = ${{ type: 'Identifier', name: x.name }};`);\n\n\tprogram.body = b`\n\t\t/* ${banner} */\n\n\t\t\"use strict\";\n\t\t${internal_requires}\n\t\t${internal_globals}\n\t\t${user_requires}\n\n\t\t${program.body}\n\n\t\texports.default = ${name};\n\t\t${exports}\n\t`;\n}\n","import { encode } from 'sourcemap-codec';\n\nvar Chunk = function Chunk(start, end, content) {\n\tthis.start = start;\n\tthis.end = end;\n\tthis.original = content;\n\n\tthis.intro = '';\n\tthis.outro = '';\n\n\tthis.content = content;\n\tthis.storeName = false;\n\tthis.edited = false;\n\n\t// we make these non-enumerable, for sanity while debugging\n\tObject.defineProperties(this, {\n\t\tprevious: { writable: true, value: null },\n\t\tnext: { writable: true, value: null }\n\t});\n};\n\nChunk.prototype.appendLeft = function appendLeft (content) {\n\tthis.outro += content;\n};\n\nChunk.prototype.appendRight = function appendRight (content) {\n\tthis.intro = this.intro + content;\n};\n\nChunk.prototype.clone = function clone () {\n\tvar chunk = new Chunk(this.start, this.end, this.original);\n\n\tchunk.intro = this.intro;\n\tchunk.outro = this.outro;\n\tchunk.content = this.content;\n\tchunk.storeName = this.storeName;\n\tchunk.edited = this.edited;\n\n\treturn chunk;\n};\n\nChunk.prototype.contains = function contains (index) {\n\treturn this.start < index && index < this.end;\n};\n\nChunk.prototype.eachNext = function eachNext (fn) {\n\tvar chunk = this;\n\twhile (chunk) {\n\t\tfn(chunk);\n\t\tchunk = chunk.next;\n\t}\n};\n\nChunk.prototype.eachPrevious = function eachPrevious (fn) {\n\tvar chunk = this;\n\twhile (chunk) {\n\t\tfn(chunk);\n\t\tchunk = chunk.previous;\n\t}\n};\n\nChunk.prototype.edit = function edit (content, storeName, contentOnly) {\n\tthis.content = content;\n\tif (!contentOnly) {\n\t\tthis.intro = '';\n\t\tthis.outro = '';\n\t}\n\tthis.storeName = storeName;\n\n\tthis.edited = true;\n\n\treturn this;\n};\n\nChunk.prototype.prependLeft = function prependLeft (content) {\n\tthis.outro = content + this.outro;\n};\n\nChunk.prototype.prependRight = function prependRight (content) {\n\tthis.intro = content + this.intro;\n};\n\nChunk.prototype.split = function split (index) {\n\tvar sliceIndex = index - this.start;\n\n\tvar originalBefore = this.original.slice(0, sliceIndex);\n\tvar originalAfter = this.original.slice(sliceIndex);\n\n\tthis.original = originalBefore;\n\n\tvar newChunk = new Chunk(index, this.end, originalAfter);\n\tnewChunk.outro = this.outro;\n\tthis.outro = '';\n\n\tthis.end = index;\n\n\tif (this.edited) {\n\t\t// TODO is this block necessary?...\n\t\tnewChunk.edit('', false);\n\t\tthis.content = '';\n\t} else {\n\t\tthis.content = originalBefore;\n\t}\n\n\tnewChunk.next = this.next;\n\tif (newChunk.next) { newChunk.next.previous = newChunk; }\n\tnewChunk.previous = this;\n\tthis.next = newChunk;\n\n\treturn newChunk;\n};\n\nChunk.prototype.toString = function toString () {\n\treturn this.intro + this.content + this.outro;\n};\n\nChunk.prototype.trimEnd = function trimEnd (rx) {\n\tthis.outro = this.outro.replace(rx, '');\n\tif (this.outro.length) { return true; }\n\n\tvar trimmed = this.content.replace(rx, '');\n\n\tif (trimmed.length) {\n\t\tif (trimmed !== this.content) {\n\t\t\tthis.split(this.start + trimmed.length).edit('', undefined, true);\n\t\t}\n\t\treturn true;\n\n\t} else {\n\t\tthis.edit('', undefined, true);\n\n\t\tthis.intro = this.intro.replace(rx, '');\n\t\tif (this.intro.length) { return true; }\n\t}\n};\n\nChunk.prototype.trimStart = function trimStart (rx) {\n\tthis.intro = this.intro.replace(rx, '');\n\tif (this.intro.length) { return true; }\n\n\tvar trimmed = this.content.replace(rx, '');\n\n\tif (trimmed.length) {\n\t\tif (trimmed !== this.content) {\n\t\t\tthis.split(this.end - trimmed.length);\n\t\t\tthis.edit('', undefined, true);\n\t\t}\n\t\treturn true;\n\n\t} else {\n\t\tthis.edit('', undefined, true);\n\n\t\tthis.outro = this.outro.replace(rx, '');\n\t\tif (this.outro.length) { return true; }\n\t}\n};\n\nvar btoa = function () {\n\tthrow new Error('Unsupported environment: `window.btoa` or `Buffer` should be supported.');\n};\nif (typeof window !== 'undefined' && typeof window.btoa === 'function') {\n\tbtoa = function (str) { return window.btoa(unescape(encodeURIComponent(str))); };\n} else if (typeof Buffer === 'function') {\n\tbtoa = function (str) { return Buffer.from(str, 'utf-8').toString('base64'); };\n}\n\nvar SourceMap = function SourceMap(properties) {\n\tthis.version = 3;\n\tthis.file = properties.file;\n\tthis.sources = properties.sources;\n\tthis.sourcesContent = properties.sourcesContent;\n\tthis.names = properties.names;\n\tthis.mappings = encode(properties.mappings);\n};\n\nSourceMap.prototype.toString = function toString () {\n\treturn JSON.stringify(this);\n};\n\nSourceMap.prototype.toUrl = function toUrl () {\n\treturn 'data:application/json;charset=utf-8;base64,' + btoa(this.toString());\n};\n\nfunction guessIndent(code) {\n\tvar lines = code.split('\\n');\n\n\tvar tabbed = lines.filter(function (line) { return /^\\t+/.test(line); });\n\tvar spaced = lines.filter(function (line) { return /^ {2,}/.test(line); });\n\n\tif (tabbed.length === 0 && spaced.length === 0) {\n\t\treturn null;\n\t}\n\n\t// More lines tabbed than spaced? Assume tabs, and\n\t// default to tabs in the case of a tie (or nothing\n\t// to go on)\n\tif (tabbed.length >= spaced.length) {\n\t\treturn '\\t';\n\t}\n\n\t// Otherwise, we need to guess the multiple\n\tvar min = spaced.reduce(function (previous, current) {\n\t\tvar numSpaces = /^ +/.exec(current)[0].length;\n\t\treturn Math.min(numSpaces, previous);\n\t}, Infinity);\n\n\treturn new Array(min + 1).join(' ');\n}\n\nfunction getRelativePath(from, to) {\n\tvar fromParts = from.split(/[/\\\\]/);\n\tvar toParts = to.split(/[/\\\\]/);\n\n\tfromParts.pop(); // get dirname\n\n\twhile (fromParts[0] === toParts[0]) {\n\t\tfromParts.shift();\n\t\ttoParts.shift();\n\t}\n\n\tif (fromParts.length) {\n\t\tvar i = fromParts.length;\n\t\twhile (i--) { fromParts[i] = '..'; }\n\t}\n\n\treturn fromParts.concat(toParts).join('/');\n}\n\nvar toString = Object.prototype.toString;\n\nfunction isObject(thing) {\n\treturn toString.call(thing) === '[object Object]';\n}\n\nfunction getLocator(source) {\n\tvar originalLines = source.split('\\n');\n\tvar lineOffsets = [];\n\n\tfor (var i = 0, pos = 0; i < originalLines.length; i++) {\n\t\tlineOffsets.push(pos);\n\t\tpos += originalLines[i].length + 1;\n\t}\n\n\treturn function locate(index) {\n\t\tvar i = 0;\n\t\tvar j = lineOffsets.length;\n\t\twhile (i < j) {\n\t\t\tvar m = (i + j) >> 1;\n\t\t\tif (index < lineOffsets[m]) {\n\t\t\t\tj = m;\n\t\t\t} else {\n\t\t\t\ti = m + 1;\n\t\t\t}\n\t\t}\n\t\tvar line = i - 1;\n\t\tvar column = index - lineOffsets[line];\n\t\treturn { line: line, column: column };\n\t};\n}\n\nvar Mappings = function Mappings(hires) {\n\tthis.hires = hires;\n\tthis.generatedCodeLine = 0;\n\tthis.generatedCodeColumn = 0;\n\tthis.raw = [];\n\tthis.rawSegments = this.raw[this.generatedCodeLine] = [];\n\tthis.pending = null;\n};\n\nMappings.prototype.addEdit = function addEdit (sourceIndex, content, loc, nameIndex) {\n\tif (content.length) {\n\t\tvar segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n\t\tif (nameIndex >= 0) {\n\t\t\tsegment.push(nameIndex);\n\t\t}\n\t\tthis.rawSegments.push(segment);\n\t} else if (this.pending) {\n\t\tthis.rawSegments.push(this.pending);\n\t}\n\n\tthis.advance(content);\n\tthis.pending = null;\n};\n\nMappings.prototype.addUneditedChunk = function addUneditedChunk (sourceIndex, chunk, original, loc, sourcemapLocations) {\n\tvar originalCharIndex = chunk.start;\n\tvar first = true;\n\n\twhile (originalCharIndex < chunk.end) {\n\t\tif (this.hires || first || sourcemapLocations[originalCharIndex]) {\n\t\t\tthis.rawSegments.push([this.generatedCodeColumn, sourceIndex, loc.line, loc.column]);\n\t\t}\n\n\t\tif (original[originalCharIndex] === '\\n') {\n\t\t\tloc.line += 1;\n\t\t\tloc.column = 0;\n\t\t\tthis.generatedCodeLine += 1;\n\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\tthis.generatedCodeColumn = 0;\n\t\t} else {\n\t\t\tloc.column += 1;\n\t\t\tthis.generatedCodeColumn += 1;\n\t\t}\n\n\t\toriginalCharIndex += 1;\n\t\tfirst = false;\n\t}\n\n\tthis.pending = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n};\n\nMappings.prototype.advance = function advance (str) {\n\tif (!str) { return; }\n\n\tvar lines = str.split('\\n');\n\n\tif (lines.length > 1) {\n\t\tfor (var i = 0; i < lines.length - 1; i++) {\n\t\t\tthis.generatedCodeLine++;\n\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t}\n\t\tthis.generatedCodeColumn = 0;\n\t}\n\n\tthis.generatedCodeColumn += lines[lines.length - 1].length;\n};\n\nvar n = '\\n';\n\nvar warned = {\n\tinsertLeft: false,\n\tinsertRight: false,\n\tstoreName: false\n};\n\nvar MagicString = function MagicString(string, options) {\n\tif ( options === void 0 ) options = {};\n\n\tvar chunk = new Chunk(0, string.length, string);\n\n\tObject.defineProperties(this, {\n\t\toriginal: { writable: true, value: string },\n\t\toutro: { writable: true, value: '' },\n\t\tintro: { writable: true, value: '' },\n\t\tfirstChunk: { writable: true, value: chunk },\n\t\tlastChunk: { writable: true, value: chunk },\n\t\tlastSearchedChunk: { writable: true, value: chunk },\n\t\tbyStart: { writable: true, value: {} },\n\t\tbyEnd: { writable: true, value: {} },\n\t\tfilename: { writable: true, value: options.filename },\n\t\tindentExclusionRanges: { writable: true, value: options.indentExclusionRanges },\n\t\tsourcemapLocations: { writable: true, value: {} },\n\t\tstoredNames: { writable: true, value: {} },\n\t\tindentStr: { writable: true, value: guessIndent(string) }\n\t});\n\n\tthis.byStart[0] = chunk;\n\tthis.byEnd[string.length] = chunk;\n};\n\nMagicString.prototype.addSourcemapLocation = function addSourcemapLocation (char) {\n\tthis.sourcemapLocations[char] = true;\n};\n\nMagicString.prototype.append = function append (content) {\n\tif (typeof content !== 'string') { throw new TypeError('outro content must be a string'); }\n\n\tthis.outro += content;\n\treturn this;\n};\n\nMagicString.prototype.appendLeft = function appendLeft (index, content) {\n\tif (typeof content !== 'string') { throw new TypeError('inserted content must be a string'); }\n\n\tthis._split(index);\n\n\tvar chunk = this.byEnd[index];\n\n\tif (chunk) {\n\t\tchunk.appendLeft(content);\n\t} else {\n\t\tthis.intro += content;\n\t}\n\treturn this;\n};\n\nMagicString.prototype.appendRight = function appendRight (index, content) {\n\tif (typeof content !== 'string') { throw new TypeError('inserted content must be a string'); }\n\n\tthis._split(index);\n\n\tvar chunk = this.byStart[index];\n\n\tif (chunk) {\n\t\tchunk.appendRight(content);\n\t} else {\n\t\tthis.outro += content;\n\t}\n\treturn this;\n};\n\nMagicString.prototype.clone = function clone () {\n\tvar cloned = new MagicString(this.original, { filename: this.filename });\n\n\tvar originalChunk = this.firstChunk;\n\tvar clonedChunk = (cloned.firstChunk = cloned.lastSearchedChunk = originalChunk.clone());\n\n\twhile (originalChunk) {\n\t\tcloned.byStart[clonedChunk.start] = clonedChunk;\n\t\tcloned.byEnd[clonedChunk.end] = clonedChunk;\n\n\t\tvar nextOriginalChunk = originalChunk.next;\n\t\tvar nextClonedChunk = nextOriginalChunk && nextOriginalChunk.clone();\n\n\t\tif (nextClonedChunk) {\n\t\t\tclonedChunk.next = nextClonedChunk;\n\t\t\tnextClonedChunk.previous = clonedChunk;\n\n\t\t\tclonedChunk = nextClonedChunk;\n\t\t}\n\n\t\toriginalChunk = nextOriginalChunk;\n\t}\n\n\tcloned.lastChunk = clonedChunk;\n\n\tif (this.indentExclusionRanges) {\n\t\tcloned.indentExclusionRanges = this.indentExclusionRanges.slice();\n\t}\n\n\tObject.keys(this.sourcemapLocations).forEach(function (loc) {\n\t\tcloned.sourcemapLocations[loc] = true;\n\t});\n\n\treturn cloned;\n};\n\nMagicString.prototype.generateDecodedMap = function generateDecodedMap (options) {\n\t\tvar this$1 = this;\n\n\toptions = options || {};\n\n\tvar sourceIndex = 0;\n\tvar names = Object.keys(this.storedNames);\n\tvar mappings = new Mappings(options.hires);\n\n\tvar locate = getLocator(this.original);\n\n\tif (this.intro) {\n\t\tmappings.advance(this.intro);\n\t}\n\n\tthis.firstChunk.eachNext(function (chunk) {\n\t\tvar loc = locate(chunk.start);\n\n\t\tif (chunk.intro.length) { mappings.advance(chunk.intro); }\n\n\t\tif (chunk.edited) {\n\t\t\tmappings.addEdit(\n\t\t\t\tsourceIndex,\n\t\t\t\tchunk.content,\n\t\t\t\tloc,\n\t\t\t\tchunk.storeName ? names.indexOf(chunk.original) : -1\n\t\t\t);\n\t\t} else {\n\t\t\tmappings.addUneditedChunk(sourceIndex, chunk, this$1.original, loc, this$1.sourcemapLocations);\n\t\t}\n\n\t\tif (chunk.outro.length) { mappings.advance(chunk.outro); }\n\t});\n\n\treturn {\n\t\tfile: options.file ? options.file.split(/[/\\\\]/).pop() : null,\n\t\tsources: [options.source ? getRelativePath(options.file || '', options.source) : null],\n\t\tsourcesContent: options.includeContent ? [this.original] : [null],\n\t\tnames: names,\n\t\tmappings: mappings.raw\n\t};\n};\n\nMagicString.prototype.generateMap = function generateMap (options) {\n\treturn new SourceMap(this.generateDecodedMap(options));\n};\n\nMagicString.prototype.getIndentString = function getIndentString () {\n\treturn this.indentStr === null ? '\\t' : this.indentStr;\n};\n\nMagicString.prototype.indent = function indent (indentStr, options) {\n\tvar pattern = /^[^\\r\\n]/gm;\n\n\tif (isObject(indentStr)) {\n\t\toptions = indentStr;\n\t\tindentStr = undefined;\n\t}\n\n\tindentStr = indentStr !== undefined ? indentStr : this.indentStr || '\\t';\n\n\tif (indentStr === '') { return this; } // noop\n\n\toptions = options || {};\n\n\t// Process exclusion ranges\n\tvar isExcluded = {};\n\n\tif (options.exclude) {\n\t\tvar exclusions =\n\t\t\ttypeof options.exclude[0] === 'number' ? [options.exclude] : options.exclude;\n\t\texclusions.forEach(function (exclusion) {\n\t\t\tfor (var i = exclusion[0]; i < exclusion[1]; i += 1) {\n\t\t\t\tisExcluded[i] = true;\n\t\t\t}\n\t\t});\n\t}\n\n\tvar shouldIndentNextCharacter = options.indentStart !== false;\n\tvar replacer = function (match) {\n\t\tif (shouldIndentNextCharacter) { return (\"\" + indentStr + match); }\n\t\tshouldIndentNextCharacter = true;\n\t\treturn match;\n\t};\n\n\tthis.intro = this.intro.replace(pattern, replacer);\n\n\tvar charIndex = 0;\n\tvar chunk = this.firstChunk;\n\n\twhile (chunk) {\n\t\tvar end = chunk.end;\n\n\t\tif (chunk.edited) {\n\t\t\tif (!isExcluded[charIndex]) {\n\t\t\t\tchunk.content = chunk.content.replace(pattern, replacer);\n\n\t\t\t\tif (chunk.content.length) {\n\t\t\t\t\tshouldIndentNextCharacter = chunk.content[chunk.content.length - 1] === '\\n';\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tcharIndex = chunk.start;\n\n\t\t\twhile (charIndex < end) {\n\t\t\t\tif (!isExcluded[charIndex]) {\n\t\t\t\t\tvar char = this.original[charIndex];\n\n\t\t\t\t\tif (char === '\\n') {\n\t\t\t\t\t\tshouldIndentNextCharacter = true;\n\t\t\t\t\t} else if (char !== '\\r' && shouldIndentNextCharacter) {\n\t\t\t\t\t\tshouldIndentNextCharacter = false;\n\n\t\t\t\t\t\tif (charIndex === chunk.start) {\n\t\t\t\t\t\t\tchunk.prependRight(indentStr);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis._splitChunk(chunk, charIndex);\n\t\t\t\t\t\t\tchunk = chunk.next;\n\t\t\t\t\t\t\tchunk.prependRight(indentStr);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcharIndex += 1;\n\t\t\t}\n\t\t}\n\n\t\tcharIndex = chunk.end;\n\t\tchunk = chunk.next;\n\t}\n\n\tthis.outro = this.outro.replace(pattern, replacer);\n\n\treturn this;\n};\n\nMagicString.prototype.insert = function insert () {\n\tthrow new Error('magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...)');\n};\n\nMagicString.prototype.insertLeft = function insertLeft (index, content) {\n\tif (!warned.insertLeft) {\n\t\tconsole.warn('magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead'); // eslint-disable-line no-console\n\t\twarned.insertLeft = true;\n\t}\n\n\treturn this.appendLeft(index, content);\n};\n\nMagicString.prototype.insertRight = function insertRight (index, content) {\n\tif (!warned.insertRight) {\n\t\tconsole.warn('magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead'); // eslint-disable-line no-console\n\t\twarned.insertRight = true;\n\t}\n\n\treturn this.prependRight(index, content);\n};\n\nMagicString.prototype.move = function move (start, end, index) {\n\tif (index >= start && index <= end) { throw new Error('Cannot move a selection inside itself'); }\n\n\tthis._split(start);\n\tthis._split(end);\n\tthis._split(index);\n\n\tvar first = this.byStart[start];\n\tvar last = this.byEnd[end];\n\n\tvar oldLeft = first.previous;\n\tvar oldRight = last.next;\n\n\tvar newRight = this.byStart[index];\n\tif (!newRight && last === this.lastChunk) { return this; }\n\tvar newLeft = newRight ? newRight.previous : this.lastChunk;\n\n\tif (oldLeft) { oldLeft.next = oldRight; }\n\tif (oldRight) { oldRight.previous = oldLeft; }\n\n\tif (newLeft) { newLeft.next = first; }\n\tif (newRight) { newRight.previous = last; }\n\n\tif (!first.previous) { this.firstChunk = last.next; }\n\tif (!last.next) {\n\t\tthis.lastChunk = first.previous;\n\t\tthis.lastChunk.next = null;\n\t}\n\n\tfirst.previous = newLeft;\n\tlast.next = newRight || null;\n\n\tif (!newLeft) { this.firstChunk = first; }\n\tif (!newRight) { this.lastChunk = last; }\n\treturn this;\n};\n\nMagicString.prototype.overwrite = function overwrite (start, end, content, options) {\n\tif (typeof content !== 'string') { throw new TypeError('replacement content must be a string'); }\n\n\twhile (start < 0) { start += this.original.length; }\n\twhile (end < 0) { end += this.original.length; }\n\n\tif (end > this.original.length) { throw new Error('end is out of bounds'); }\n\tif (start === end)\n\t\t{ throw new Error('Cannot overwrite a zero-length range – use appendLeft or prependRight instead'); }\n\n\tthis._split(start);\n\tthis._split(end);\n\n\tif (options === true) {\n\t\tif (!warned.storeName) {\n\t\t\tconsole.warn('The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string'); // eslint-disable-line no-console\n\t\t\twarned.storeName = true;\n\t\t}\n\n\t\toptions = { storeName: true };\n\t}\n\tvar storeName = options !== undefined ? options.storeName : false;\n\tvar contentOnly = options !== undefined ? options.contentOnly : false;\n\n\tif (storeName) {\n\t\tvar original = this.original.slice(start, end);\n\t\tthis.storedNames[original] = true;\n\t}\n\n\tvar first = this.byStart[start];\n\tvar last = this.byEnd[end];\n\n\tif (first) {\n\t\tif (end > first.end && first.next !== this.byStart[first.end]) {\n\t\t\tthrow new Error('Cannot overwrite across a split point');\n\t\t}\n\n\t\tfirst.edit(content, storeName, contentOnly);\n\n\t\tif (first !== last) {\n\t\t\tvar chunk = first.next;\n\t\t\twhile (chunk !== last) {\n\t\t\t\tchunk.edit('', false);\n\t\t\t\tchunk = chunk.next;\n\t\t\t}\n\n\t\t\tchunk.edit('', false);\n\t\t}\n\t} else {\n\t\t// must be inserting at the end\n\t\tvar newChunk = new Chunk(start, end, '').edit(content, storeName);\n\n\t\t// TODO last chunk in the array may not be the last chunk, if it's moved...\n\t\tlast.next = newChunk;\n\t\tnewChunk.previous = last;\n\t}\n\treturn this;\n};\n\nMagicString.prototype.prepend = function prepend (content) {\n\tif (typeof content !== 'string') { throw new TypeError('outro content must be a string'); }\n\n\tthis.intro = content + this.intro;\n\treturn this;\n};\n\nMagicString.prototype.prependLeft = function prependLeft (index, content) {\n\tif (typeof content !== 'string') { throw new TypeError('inserted content must be a string'); }\n\n\tthis._split(index);\n\n\tvar chunk = this.byEnd[index];\n\n\tif (chunk) {\n\t\tchunk.prependLeft(content);\n\t} else {\n\t\tthis.intro = content + this.intro;\n\t}\n\treturn this;\n};\n\nMagicString.prototype.prependRight = function prependRight (index, content) {\n\tif (typeof content !== 'string') { throw new TypeError('inserted content must be a string'); }\n\n\tthis._split(index);\n\n\tvar chunk = this.byStart[index];\n\n\tif (chunk) {\n\t\tchunk.prependRight(content);\n\t} else {\n\t\tthis.outro = content + this.outro;\n\t}\n\treturn this;\n};\n\nMagicString.prototype.remove = function remove (start, end) {\n\twhile (start < 0) { start += this.original.length; }\n\twhile (end < 0) { end += this.original.length; }\n\n\tif (start === end) { return this; }\n\n\tif (start < 0 || end > this.original.length) { throw new Error('Character is out of bounds'); }\n\tif (start > end) { throw new Error('end must be greater than start'); }\n\n\tthis._split(start);\n\tthis._split(end);\n\n\tvar chunk = this.byStart[start];\n\n\twhile (chunk) {\n\t\tchunk.intro = '';\n\t\tchunk.outro = '';\n\t\tchunk.edit('');\n\n\t\tchunk = end > chunk.end ? this.byStart[chunk.end] : null;\n\t}\n\treturn this;\n};\n\nMagicString.prototype.lastChar = function lastChar () {\n\tif (this.outro.length)\n\t\t{ return this.outro[this.outro.length - 1]; }\n\tvar chunk = this.lastChunk;\n\tdo {\n\t\tif (chunk.outro.length)\n\t\t\t{ return chunk.outro[chunk.outro.length - 1]; }\n\t\tif (chunk.content.length)\n\t\t\t{ return chunk.content[chunk.content.length - 1]; }\n\t\tif (chunk.intro.length)\n\t\t\t{ return chunk.intro[chunk.intro.length - 1]; }\n\t} while (chunk = chunk.previous);\n\tif (this.intro.length)\n\t\t{ return this.intro[this.intro.length - 1]; }\n\treturn '';\n};\n\nMagicString.prototype.lastLine = function lastLine () {\n\tvar lineIndex = this.outro.lastIndexOf(n);\n\tif (lineIndex !== -1)\n\t\t{ return this.outro.substr(lineIndex + 1); }\n\tvar lineStr = this.outro;\n\tvar chunk = this.lastChunk;\n\tdo {\n\t\tif (chunk.outro.length > 0) {\n\t\t\tlineIndex = chunk.outro.lastIndexOf(n);\n\t\t\tif (lineIndex !== -1)\n\t\t\t\t{ return chunk.outro.substr(lineIndex + 1) + lineStr; }\n\t\t\tlineStr = chunk.outro + lineStr;\n\t\t}\n\n\t\tif (chunk.content.length > 0) {\n\t\t\tlineIndex = chunk.content.lastIndexOf(n);\n\t\t\tif (lineIndex !== -1)\n\t\t\t\t{ return chunk.content.substr(lineIndex + 1) + lineStr; }\n\t\t\tlineStr = chunk.content + lineStr;\n\t\t}\n\n\t\tif (chunk.intro.length > 0) {\n\t\t\tlineIndex = chunk.intro.lastIndexOf(n);\n\t\t\tif (lineIndex !== -1)\n\t\t\t\t{ return chunk.intro.substr(lineIndex + 1) + lineStr; }\n\t\t\tlineStr = chunk.intro + lineStr;\n\t\t}\n\t} while (chunk = chunk.previous);\n\tlineIndex = this.intro.lastIndexOf(n);\n\tif (lineIndex !== -1)\n\t\t{ return this.intro.substr(lineIndex + 1) + lineStr; }\n\treturn this.intro + lineStr;\n};\n\nMagicString.prototype.slice = function slice (start, end) {\n\t\tif ( start === void 0 ) start = 0;\n\t\tif ( end === void 0 ) end = this.original.length;\n\n\twhile (start < 0) { start += this.original.length; }\n\twhile (end < 0) { end += this.original.length; }\n\n\tvar result = '';\n\n\t// find start chunk\n\tvar chunk = this.firstChunk;\n\twhile (chunk && (chunk.start > start || chunk.end <= start)) {\n\t\t// found end chunk before start\n\t\tif (chunk.start < end && chunk.end >= end) {\n\t\t\treturn result;\n\t\t}\n\n\t\tchunk = chunk.next;\n\t}\n\n\tif (chunk && chunk.edited && chunk.start !== start)\n\t\t{ throw new Error((\"Cannot use replaced character \" + start + \" as slice start anchor.\")); }\n\n\tvar startChunk = chunk;\n\twhile (chunk) {\n\t\tif (chunk.intro && (startChunk !== chunk || chunk.start === start)) {\n\t\t\tresult += chunk.intro;\n\t\t}\n\n\t\tvar containsEnd = chunk.start < end && chunk.end >= end;\n\t\tif (containsEnd && chunk.edited && chunk.end !== end)\n\t\t\t{ throw new Error((\"Cannot use replaced character \" + end + \" as slice end anchor.\")); }\n\n\t\tvar sliceStart = startChunk === chunk ? start - chunk.start : 0;\n\t\tvar sliceEnd = containsEnd ? chunk.content.length + end - chunk.end : chunk.content.length;\n\n\t\tresult += chunk.content.slice(sliceStart, sliceEnd);\n\n\t\tif (chunk.outro && (!containsEnd || chunk.end === end)) {\n\t\t\tresult += chunk.outro;\n\t\t}\n\n\t\tif (containsEnd) {\n\t\t\tbreak;\n\t\t}\n\n\t\tchunk = chunk.next;\n\t}\n\n\treturn result;\n};\n\n// TODO deprecate this? not really very useful\nMagicString.prototype.snip = function snip (start, end) {\n\tvar clone = this.clone();\n\tclone.remove(0, start);\n\tclone.remove(end, clone.original.length);\n\n\treturn clone;\n};\n\nMagicString.prototype._split = function _split (index) {\n\tif (this.byStart[index] || this.byEnd[index]) { return; }\n\n\tvar chunk = this.lastSearchedChunk;\n\tvar searchForward = index > chunk.end;\n\n\twhile (chunk) {\n\t\tif (chunk.contains(index)) { return this._splitChunk(chunk, index); }\n\n\t\tchunk = searchForward ? this.byStart[chunk.end] : this.byEnd[chunk.start];\n\t}\n};\n\nMagicString.prototype._splitChunk = function _splitChunk (chunk, index) {\n\tif (chunk.edited && chunk.content.length) {\n\t\t// zero-length edited chunks are a special case (overlapping replacements)\n\t\tvar loc = getLocator(this.original)(index);\n\t\tthrow new Error(\n\t\t\t(\"Cannot split a chunk that has already been edited (\" + (loc.line) + \":\" + (loc.column) + \" – \\\"\" + (chunk.original) + \"\\\")\")\n\t\t);\n\t}\n\n\tvar newChunk = chunk.split(index);\n\n\tthis.byEnd[index] = chunk;\n\tthis.byStart[index] = newChunk;\n\tthis.byEnd[newChunk.end] = newChunk;\n\n\tif (chunk === this.lastChunk) { this.lastChunk = newChunk; }\n\n\tthis.lastSearchedChunk = chunk;\n\treturn true;\n};\n\nMagicString.prototype.toString = function toString () {\n\tvar str = this.intro;\n\n\tvar chunk = this.firstChunk;\n\twhile (chunk) {\n\t\tstr += chunk.toString();\n\t\tchunk = chunk.next;\n\t}\n\n\treturn str + this.outro;\n};\n\nMagicString.prototype.isEmpty = function isEmpty () {\n\tvar chunk = this.firstChunk;\n\tdo {\n\t\tif (chunk.intro.length && chunk.intro.trim() ||\n\t\t\t\tchunk.content.length && chunk.content.trim() ||\n\t\t\t\tchunk.outro.length && chunk.outro.trim())\n\t\t\t{ return false; }\n\t} while (chunk = chunk.next);\n\treturn true;\n};\n\nMagicString.prototype.length = function length () {\n\tvar chunk = this.firstChunk;\n\tvar length = 0;\n\tdo {\n\t\tlength += chunk.intro.length + chunk.content.length + chunk.outro.length;\n\t} while (chunk = chunk.next);\n\treturn length;\n};\n\nMagicString.prototype.trimLines = function trimLines () {\n\treturn this.trim('[\\\\r\\\\n]');\n};\n\nMagicString.prototype.trim = function trim (charType) {\n\treturn this.trimStart(charType).trimEnd(charType);\n};\n\nMagicString.prototype.trimEndAborted = function trimEndAborted (charType) {\n\tvar rx = new RegExp((charType || '\\\\s') + '+$');\n\n\tthis.outro = this.outro.replace(rx, '');\n\tif (this.outro.length) { return true; }\n\n\tvar chunk = this.lastChunk;\n\n\tdo {\n\t\tvar end = chunk.end;\n\t\tvar aborted = chunk.trimEnd(rx);\n\n\t\t// if chunk was trimmed, we have a new lastChunk\n\t\tif (chunk.end !== end) {\n\t\t\tif (this.lastChunk === chunk) {\n\t\t\t\tthis.lastChunk = chunk.next;\n\t\t\t}\n\n\t\t\tthis.byEnd[chunk.end] = chunk;\n\t\t\tthis.byStart[chunk.next.start] = chunk.next;\n\t\t\tthis.byEnd[chunk.next.end] = chunk.next;\n\t\t}\n\n\t\tif (aborted) { return true; }\n\t\tchunk = chunk.previous;\n\t} while (chunk);\n\n\treturn false;\n};\n\nMagicString.prototype.trimEnd = function trimEnd (charType) {\n\tthis.trimEndAborted(charType);\n\treturn this;\n};\nMagicString.prototype.trimStartAborted = function trimStartAborted (charType) {\n\tvar rx = new RegExp('^' + (charType || '\\\\s') + '+');\n\n\tthis.intro = this.intro.replace(rx, '');\n\tif (this.intro.length) { return true; }\n\n\tvar chunk = this.firstChunk;\n\n\tdo {\n\t\tvar end = chunk.end;\n\t\tvar aborted = chunk.trimStart(rx);\n\n\t\tif (chunk.end !== end) {\n\t\t\t// special case...\n\t\t\tif (chunk === this.lastChunk) { this.lastChunk = chunk.next; }\n\n\t\t\tthis.byEnd[chunk.end] = chunk;\n\t\t\tthis.byStart[chunk.next.start] = chunk.next;\n\t\t\tthis.byEnd[chunk.next.end] = chunk.next;\n\t\t}\n\n\t\tif (aborted) { return true; }\n\t\tchunk = chunk.next;\n\t} while (chunk);\n\n\treturn false;\n};\n\nMagicString.prototype.trimStart = function trimStart (charType) {\n\tthis.trimStartAborted(charType);\n\treturn this;\n};\n\nvar hasOwnProp = Object.prototype.hasOwnProperty;\n\nvar Bundle = function Bundle(options) {\n\tif ( options === void 0 ) options = {};\n\n\tthis.intro = options.intro || '';\n\tthis.separator = options.separator !== undefined ? options.separator : '\\n';\n\tthis.sources = [];\n\tthis.uniqueSources = [];\n\tthis.uniqueSourceIndexByFilename = {};\n};\n\nBundle.prototype.addSource = function addSource (source) {\n\tif (source instanceof MagicString) {\n\t\treturn this.addSource({\n\t\t\tcontent: source,\n\t\t\tfilename: source.filename,\n\t\t\tseparator: this.separator\n\t\t});\n\t}\n\n\tif (!isObject(source) || !source.content) {\n\t\tthrow new Error('bundle.addSource() takes an object with a `content` property, which should be an instance of MagicString, and an optional `filename`');\n\t}\n\n\t['filename', 'indentExclusionRanges', 'separator'].forEach(function (option) {\n\t\tif (!hasOwnProp.call(source, option)) { source[option] = source.content[option]; }\n\t});\n\n\tif (source.separator === undefined) {\n\t\t// TODO there's a bunch of this sort of thing, needs cleaning up\n\t\tsource.separator = this.separator;\n\t}\n\n\tif (source.filename) {\n\t\tif (!hasOwnProp.call(this.uniqueSourceIndexByFilename, source.filename)) {\n\t\t\tthis.uniqueSourceIndexByFilename[source.filename] = this.uniqueSources.length;\n\t\t\tthis.uniqueSources.push({ filename: source.filename, content: source.content.original });\n\t\t} else {\n\t\t\tvar uniqueSource = this.uniqueSources[this.uniqueSourceIndexByFilename[source.filename]];\n\t\t\tif (source.content.original !== uniqueSource.content) {\n\t\t\t\tthrow new Error((\"Illegal source: same filename (\" + (source.filename) + \"), different contents\"));\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.sources.push(source);\n\treturn this;\n};\n\nBundle.prototype.append = function append (str, options) {\n\tthis.addSource({\n\t\tcontent: new MagicString(str),\n\t\tseparator: (options && options.separator) || ''\n\t});\n\n\treturn this;\n};\n\nBundle.prototype.clone = function clone () {\n\tvar bundle = new Bundle({\n\t\tintro: this.intro,\n\t\tseparator: this.separator\n\t});\n\n\tthis.sources.forEach(function (source) {\n\t\tbundle.addSource({\n\t\t\tfilename: source.filename,\n\t\t\tcontent: source.content.clone(),\n\t\t\tseparator: source.separator\n\t\t});\n\t});\n\n\treturn bundle;\n};\n\nBundle.prototype.generateDecodedMap = function generateDecodedMap (options) {\n\t\tvar this$1 = this;\n\t\tif ( options === void 0 ) options = {};\n\n\tvar names = [];\n\tthis.sources.forEach(function (source) {\n\t\tObject.keys(source.content.storedNames).forEach(function (name) {\n\t\t\tif (!~names.indexOf(name)) { names.push(name); }\n\t\t});\n\t});\n\n\tvar mappings = new Mappings(options.hires);\n\n\tif (this.intro) {\n\t\tmappings.advance(this.intro);\n\t}\n\n\tthis.sources.forEach(function (source, i) {\n\t\tif (i > 0) {\n\t\t\tmappings.advance(this$1.separator);\n\t\t}\n\n\t\tvar sourceIndex = source.filename ? this$1.uniqueSourceIndexByFilename[source.filename] : -1;\n\t\tvar magicString = source.content;\n\t\tvar locate = getLocator(magicString.original);\n\n\t\tif (magicString.intro) {\n\t\t\tmappings.advance(magicString.intro);\n\t\t}\n\n\t\tmagicString.firstChunk.eachNext(function (chunk) {\n\t\t\tvar loc = locate(chunk.start);\n\n\t\t\tif (chunk.intro.length) { mappings.advance(chunk.intro); }\n\n\t\t\tif (source.filename) {\n\t\t\t\tif (chunk.edited) {\n\t\t\t\t\tmappings.addEdit(\n\t\t\t\t\t\tsourceIndex,\n\t\t\t\t\t\tchunk.content,\n\t\t\t\t\t\tloc,\n\t\t\t\t\t\tchunk.storeName ? names.indexOf(chunk.original) : -1\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tmappings.addUneditedChunk(\n\t\t\t\t\t\tsourceIndex,\n\t\t\t\t\t\tchunk,\n\t\t\t\t\t\tmagicString.original,\n\t\t\t\t\t\tloc,\n\t\t\t\t\t\tmagicString.sourcemapLocations\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tmappings.advance(chunk.content);\n\t\t\t}\n\n\t\t\tif (chunk.outro.length) { mappings.advance(chunk.outro); }\n\t\t});\n\n\t\tif (magicString.outro) {\n\t\t\tmappings.advance(magicString.outro);\n\t\t}\n\t});\n\n\treturn {\n\t\tfile: options.file ? options.file.split(/[/\\\\]/).pop() : null,\n\t\tsources: this.uniqueSources.map(function (source) {\n\t\t\treturn options.file ? getRelativePath(options.file, source.filename) : source.filename;\n\t\t}),\n\t\tsourcesContent: this.uniqueSources.map(function (source) {\n\t\t\treturn options.includeContent ? source.content : null;\n\t\t}),\n\t\tnames: names,\n\t\tmappings: mappings.raw\n\t};\n};\n\nBundle.prototype.generateMap = function generateMap (options) {\n\treturn new SourceMap(this.generateDecodedMap(options));\n};\n\nBundle.prototype.getIndentString = function getIndentString () {\n\tvar indentStringCounts = {};\n\n\tthis.sources.forEach(function (source) {\n\t\tvar indentStr = source.content.indentStr;\n\n\t\tif (indentStr === null) { return; }\n\n\t\tif (!indentStringCounts[indentStr]) { indentStringCounts[indentStr] = 0; }\n\t\tindentStringCounts[indentStr] += 1;\n\t});\n\n\treturn (\n\t\tObject.keys(indentStringCounts).sort(function (a, b) {\n\t\t\treturn indentStringCounts[a] - indentStringCounts[b];\n\t\t})[0] || '\\t'\n\t);\n};\n\nBundle.prototype.indent = function indent (indentStr) {\n\t\tvar this$1 = this;\n\n\tif (!arguments.length) {\n\t\tindentStr = this.getIndentString();\n\t}\n\n\tif (indentStr === '') { return this; } // noop\n\n\tvar trailingNewline = !this.intro || this.intro.slice(-1) === '\\n';\n\n\tthis.sources.forEach(function (source, i) {\n\t\tvar separator = source.separator !== undefined ? source.separator : this$1.separator;\n\t\tvar indentStart = trailingNewline || (i > 0 && /\\r?\\n$/.test(separator));\n\n\t\tsource.content.indent(indentStr, {\n\t\t\texclude: source.indentExclusionRanges,\n\t\t\tindentStart: indentStart //: trailingNewline || /\\r?\\n$/.test( separator ) //true///\\r?\\n/.test( separator )\n\t\t});\n\n\t\ttrailingNewline = source.content.lastChar() === '\\n';\n\t});\n\n\tif (this.intro) {\n\t\tthis.intro =\n\t\t\tindentStr +\n\t\t\tthis.intro.replace(/^[^\\n]/gm, function (match, index) {\n\t\t\t\treturn index > 0 ? indentStr + match : match;\n\t\t\t});\n\t}\n\n\treturn this;\n};\n\nBundle.prototype.prepend = function prepend (str) {\n\tthis.intro = str + this.intro;\n\treturn this;\n};\n\nBundle.prototype.toString = function toString () {\n\t\tvar this$1 = this;\n\n\tvar body = this.sources\n\t\t.map(function (source, i) {\n\t\t\tvar separator = source.separator !== undefined ? source.separator : this$1.separator;\n\t\t\tvar str = (i > 0 ? separator : '') + source.content.toString();\n\n\t\t\treturn str;\n\t\t})\n\t\t.join('');\n\n\treturn this.intro + body;\n};\n\nBundle.prototype.isEmpty = function isEmpty () {\n\tif (this.intro.length && this.intro.trim())\n\t\t{ return false; }\n\tif (this.sources.some(function (source) { return !source.content.isEmpty(); }))\n\t\t{ return false; }\n\treturn true;\n};\n\nBundle.prototype.length = function length () {\n\treturn this.sources.reduce(function (length, source) { return length + source.content.length(); }, this.intro.length);\n};\n\nBundle.prototype.trimLines = function trimLines () {\n\treturn this.trim('[\\\\r\\\\n]');\n};\n\nBundle.prototype.trim = function trim (charType) {\n\treturn this.trimStart(charType).trimEnd(charType);\n};\n\nBundle.prototype.trimStart = function trimStart (charType) {\n\tvar rx = new RegExp('^' + (charType || '\\\\s') + '+');\n\tthis.intro = this.intro.replace(rx, '');\n\n\tif (!this.intro) {\n\t\tvar source;\n\t\tvar i = 0;\n\n\t\tdo {\n\t\t\tsource = this.sources[i++];\n\t\t\tif (!source) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} while (!source.content.trimStartAborted(charType));\n\t}\n\n\treturn this;\n};\n\nBundle.prototype.trimEnd = function trimEnd (charType) {\n\tvar rx = new RegExp((charType || '\\\\s') + '+$');\n\n\tvar source;\n\tvar i = this.sources.length - 1;\n\n\tdo {\n\t\tsource = this.sources[i--];\n\t\tif (!source) {\n\t\t\tthis.intro = this.intro.replace(rx, '');\n\t\t\tbreak;\n\t\t}\n\t} while (!source.content.trimEndAborted(charType));\n\n\treturn this;\n};\n\nexport default MagicString;\nexport { Bundle, SourceMap };\n//# sourceMappingURL=magic-string.es.js.map\n","import { Node } from 'estree';\n\nexport const UNKNOWN = {};\n\nexport function gather_possible_values(node: Node, set: Set<string|{}>) {\n\tif (node.type === 'Literal') {\n\t\tset.add(node.value);\n\t} else if (node.type === 'ConditionalExpression') {\n\t\tgather_possible_values(node.consequent, set);\n\t\tgather_possible_values(node.alternate, set);\n\t} else {\n\t\tset.add(UNKNOWN);\n\t}\n}\n","import MagicString from 'magic-string';\nimport Stylesheet from './Stylesheet';\nimport { gather_possible_values, UNKNOWN } from './gather_possible_values';\nimport { CssNode } from './interfaces';\nimport Component from '../Component';\nimport Element from '../nodes/Element';\nimport { INode } from '../nodes/interfaces';\nimport EachBlock from '../nodes/EachBlock';\nimport IfBlock from '../nodes/IfBlock';\nimport AwaitBlock from '../nodes/AwaitBlock';\n\nenum BlockAppliesToNode {\n\tNotPossible,\n\tPossible,\n\tUnknownSelectorType\n}\nenum NodeExist {\n\tProbably = 1,\n\tDefinitely = 2,\n}\n\nconst whitelist_attribute_selector = new Map([\n\t['details', new Set(['open'])]\n]);\n\nexport default class Selector {\n\tnode: CssNode;\n\tstylesheet: Stylesheet;\n\tblocks: Block[];\n\tlocal_blocks: Block[];\n\tused: boolean;\n\n\tconstructor(node: CssNode, stylesheet: Stylesheet) {\n\t\tthis.node = node;\n\t\tthis.stylesheet = stylesheet;\n\n\t\tthis.blocks = group_selectors(node);\n\n\t\t// take trailing :global(...) selectors out of consideration\n\t\tlet i = this.blocks.length;\n\t\twhile (i > 0) {\n\t\t\tif (!this.blocks[i - 1].global) break;\n\t\t\ti -= 1;\n\t\t}\n\n\t\tthis.local_blocks = this.blocks.slice(0, i);\n\t\tthis.used = this.local_blocks.length === 0;\n\t}\n\n\tapply(node: Element) {\n\t\tconst to_encapsulate: any[] = [];\n\n\t\tapply_selector(this.local_blocks.slice(), node, to_encapsulate);\n\n\t\tif (to_encapsulate.length > 0) {\n\t\t\tto_encapsulate.forEach(({ node, block }) => {\n\t\t\t\tthis.stylesheet.nodes_with_css_class.add(node);\n\t\t\t\tblock.should_encapsulate = true;\n\t\t\t});\n\n\t\t\tthis.used = true;\n\t\t}\n\t}\n\n\tminify(code: MagicString) {\n\t\tlet c: number = null;\n\t\tthis.blocks.forEach((block, i) => {\n\t\t\tif (i > 0) {\n\t\t\t\tif (block.start - c > 1) {\n\t\t\t\t\tcode.overwrite(c, block.start, block.combinator.name || ' ');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc = block.end;\n\t\t});\n\t}\n\n\ttransform(code: MagicString, attr: string, max_amount_class_specificity_increased: number) {\n\t\tconst amount_class_specificity_to_increase = max_amount_class_specificity_increased - this.blocks.filter(block => block.should_encapsulate).length;\n\n\t\tfunction encapsulate_block(block: Block, attr: string) {\n\t\t\tlet i = block.selectors.length;\n\n\t\t\twhile (i--) {\n\t\t\t\tconst selector = block.selectors[i];\n\t\t\t\tif (selector.type === 'PseudoElementSelector' || selector.type === 'PseudoClassSelector') {\n\t\t\t\t\tif (selector.name !== 'root') {\n\t\t\t\t\t\tif (i === 0) code.prependRight(selector.start, attr);\n\t\t\t\t\t}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (selector.type === 'TypeSelector' && selector.name === '*') {\n\t\t\t\t\tcode.overwrite(selector.start, selector.end, attr);\n\t\t\t\t} else {\n\t\t\t\t\tcode.appendLeft(selector.end, attr);\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tthis.blocks.forEach((block, index) => {\n\t\t\tif (block.global) {\n\t\t\t\tconst selector = block.selectors[0];\n\t\t\t\tconst first = selector.children[0];\n\t\t\t\tconst last = selector.children[selector.children.length - 1];\n\t\t\t\tcode.remove(selector.start, first.start).remove(last.end, selector.end);\n\t\t\t}\n\t\t\tif (block.should_encapsulate) encapsulate_block(block, index === this.blocks.length - 1 ? attr.repeat(amount_class_specificity_to_increase + 1) : attr);\n\t\t});\n\t}\n\n\tvalidate(component: Component) {\n\t\tthis.blocks.forEach((block) => {\n\t\t\tlet i = block.selectors.length;\n\t\t\twhile (i-- > 1) {\n\t\t\t\tconst selector = block.selectors[i];\n\t\t\t\tif (selector.type === 'PseudoClassSelector' && selector.name === 'global') {\n\t\t\t\t\tcomponent.error(selector, {\n\t\t\t\t\t\tcode: 'css-invalid-global',\n\t\t\t\t\t\tmessage: ':global(...) must be the first element in a compound selector'\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tlet start = 0;\n\t\tlet end = this.blocks.length;\n\n\t\tfor (; start < end; start += 1) {\n\t\t\tif (!this.blocks[start].global) break;\n\t\t}\n\n\t\tfor (; end > start; end -= 1) {\n\t\t\tif (!this.blocks[end - 1].global) break;\n\t\t}\n\n\t\tfor (let i = start; i < end; i += 1) {\n\t\t\tif (this.blocks[i].global) {\n\t\t\t\tcomponent.error(this.blocks[i].selectors[0], {\n\t\t\t\t\tcode: 'css-invalid-global',\n\t\t\t\t\tmessage: ':global(...) can be at the start or end of a selector sequence, but not in the middle'\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tget_amount_class_specificity_increased() {\n\t\tlet count = 0;\n\t\tfor (const block of this.blocks) {\n\t\t\tif (block.should_encapsulate) {\n\t\t\t\tcount ++;\n\t\t\t}\n\t\t}\n\t\treturn count;\n\t}\n}\n\nfunction apply_selector(blocks: Block[], node: Element, to_encapsulate: any[]): boolean {\n\tconst block = blocks.pop();\n\tif (!block) return false;\n\n\tif (!node) {\n\t\treturn block.global && blocks.every(block => block.global);\n\t}\n\n\tswitch (block_might_apply_to_node(block, node)) {\n\t\tcase BlockAppliesToNode.NotPossible:\n\t\t\treturn false;\n\n\t\tcase BlockAppliesToNode.UnknownSelectorType:\n\t\t// bail. TODO figure out what these could be\n\t\t\tto_encapsulate.push({ node, block });\n\t\t\treturn true;\n\t}\n\n\tif (block.combinator) {\n\t\tif (block.combinator.type === 'WhiteSpace') {\n\t\t\tfor (const ancestor_block of blocks) {\n\t\t\t\tif (ancestor_block.global) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tlet parent = node;\n\t\t\t\twhile (parent = get_element_parent(parent)) {\n\t\t\t\t\tif (block_might_apply_to_node(ancestor_block, parent) !== BlockAppliesToNode.NotPossible) {\n\t\t\t\t\t\tto_encapsulate.push({ node: parent, block: ancestor_block });\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (to_encapsulate.length) {\n\t\t\t\t\tto_encapsulate.push({ node, block });\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (blocks.every(block => block.global)) {\n\t\t\t\tto_encapsulate.push({ node, block });\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t} else if (block.combinator.name === '>') {\n\t\t\tif (apply_selector(blocks, get_element_parent(node), to_encapsulate)) {\n\t\t\t\tto_encapsulate.push({ node, block });\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t} else if (block.combinator.name === '+' || block.combinator.name === '~') {\n\t\t\tconst siblings = get_possible_element_siblings(node, block.combinator.name === '+');\n\t\t\tlet has_match = false;\n\t\t\tfor (const possible_sibling of siblings.keys()) {\n\t\t\t\tif (apply_selector(blocks.slice(), possible_sibling, to_encapsulate)) {\n\t\t\t\t\tto_encapsulate.push({ node, block });\n\t\t\t\t\thas_match = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn has_match;\n\t\t}\n\n\t\t// TODO other combinators\n\t\tto_encapsulate.push({ node, block });\n\t\treturn true;\n\t}\n\n\tto_encapsulate.push({ node, block });\n\treturn true;\n}\n\nfunction block_might_apply_to_node(block: Block, node: Element): BlockAppliesToNode {\n\tlet i = block.selectors.length;\n\n\twhile (i--) {\n\t\tconst selector = block.selectors[i];\n\t\tconst name = typeof selector.name === 'string' && selector.name.replace(/\\\\(.)/g, '$1');\n\n\t\tif (selector.type === 'PseudoClassSelector' || selector.type === 'PseudoElementSelector') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (selector.type === 'PseudoClassSelector' && name === 'global') {\n\t\t\t// TODO shouldn't see this here... maybe we should enforce that :global(...)\n\t\t\t// cannot be sandwiched between non-global selectors?\n\t\t\treturn BlockAppliesToNode.NotPossible;\n\t\t}\n\n\t\tif (selector.type === 'ClassSelector') {\n\t\t\tif (!attribute_matches(node, 'class', name, '~=', false) && !node.classes.some(c => c.name === name)) return BlockAppliesToNode.NotPossible;\n\t\t} else if (selector.type === 'IdSelector') {\n\t\t\tif (!attribute_matches(node, 'id', name, '=', false)) return BlockAppliesToNode.NotPossible;\n\t\t} else if (selector.type === 'AttributeSelector') {\n\t\t\tif (\n\t\t\t\t!(whitelist_attribute_selector.has(node.name.toLowerCase()) && whitelist_attribute_selector.get(node.name.toLowerCase()).has(selector.name.name.toLowerCase())) &&\n\t\t\t\t!attribute_matches(node, selector.name.name, selector.value && unquote(selector.value), selector.matcher, selector.flags)) {\n\t\t\t\treturn BlockAppliesToNode.NotPossible;\n\t\t\t}\n\t\t} else if (selector.type === 'TypeSelector') {\n\t\t\tif (node.name.toLowerCase() !== name.toLowerCase() && name !== '*') return BlockAppliesToNode.NotPossible;\n\t\t} else {\n\t\t\treturn BlockAppliesToNode.UnknownSelectorType;\n\t\t}\n\t}\n\n\treturn BlockAppliesToNode.Possible;\n}\n\nfunction test_attribute(operator, expected_value, case_insensitive, value) {\n\tif (case_insensitive) {\n\t\texpected_value = expected_value.toLowerCase();\n\t\tvalue = value.toLowerCase();\n\t}\n\tswitch (operator) {\n\t\tcase '=': return value === expected_value;\n\t\tcase '~=': return value.split(/\\s/).includes(expected_value);\n\t\tcase '|=': return `${value}-`.startsWith(`${expected_value}-`);\n\t\tcase '^=': return value.startsWith(expected_value);\n\t\tcase '$=': return value.endsWith(expected_value);\n\t\tcase '*=': return value.includes(expected_value);\n\t\tdefault: throw new Error(\"this shouldn't happen\");\n\t}\n}\n\nfunction attribute_matches(node: CssNode, name: string, expected_value: string, operator: string, case_insensitive: boolean) {\n\tconst spread = node.attributes.find(attr => attr.type === 'Spread');\n\tif (spread) return true;\n\n\tif (node.bindings.some((binding: CssNode) => binding.name === name)) return true;\n\n\tconst attr = node.attributes.find((attr: CssNode) => attr.name === name);\n\tif (!attr) return false;\n\tif (attr.is_true) return operator === null;\n\tif (!expected_value) return true;\n\n\tif (attr.chunks.length === 1) {\n\t\tconst value = attr.chunks[0];\n\t\tif (!value) return false;\n\t\tif (value.type === 'Text') return test_attribute(operator, expected_value, case_insensitive, value.data);\n\t}\n\n\tconst possible_values = new Set();\n\n\tlet prev_values = [];\n\tfor (const chunk of attr.chunks) {\n\t\tconst current_possible_values = new Set();\n\t\tif (chunk.type === 'Text') {\n\t\t\tcurrent_possible_values.add(chunk.data);\n\t\t} else {\n\t\t\tgather_possible_values(chunk.node, current_possible_values);\n\t\t}\n\n\t\t// impossible to find out all combinations\n\t\tif (current_possible_values.has(UNKNOWN)) return true;\n\n\t\tif (prev_values.length > 0) {\n\t\t\tconst start_with_space = [];\n\t\t\tconst remaining = [];\n\t\t\tcurrent_possible_values.forEach((current_possible_value: string) => {\n\t\t\t\tif (/^\\s/.test(current_possible_value)) {\n\t\t\t\t\tstart_with_space.push(current_possible_value);\n\t\t\t\t} else {\n\t\t\t\t\tremaining.push(current_possible_value);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (remaining.length > 0) {\n\t\t\t\tif (start_with_space.length > 0) {\n\t\t\t\t\tprev_values.forEach(prev_value => possible_values.add(prev_value));\n\t\t\t\t}\n\n\t\t\t\tconst combined = [];\n\t\t\t\tprev_values.forEach((prev_value: string) => {\n\t\t\t\t\tremaining.forEach((value: string) => {\n\t\t\t\t\t\tcombined.push(prev_value + value);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tprev_values = combined;\n\n\t\t\t\tstart_with_space.forEach((value: string) => {\n\t\t\t\t\tif (/\\s$/.test(value)) {\n\t\t\t\t\t\tpossible_values.add(value);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tprev_values.push(value);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t} else {\n\t\t\t\tprev_values.forEach(prev_value => possible_values.add(prev_value));\n\t\t\t\tprev_values = [];\n\t\t\t}\n\t\t}\n\n\t\tcurrent_possible_values.forEach((current_possible_value: string) => {\n\t\t\tif (/\\s$/.test(current_possible_value)) {\n\t\t\t\tpossible_values.add(current_possible_value);\n\t\t\t} else {\n\t\t\t\tprev_values.push(current_possible_value);\n\t\t\t}\n\t\t});\n\t\tif (prev_values.length < current_possible_values.size) {\n\t\t\tprev_values.push(' ');\n\t\t}\n\n\t\tif (prev_values.length > 20) {\n\t\t\t// might grow exponentially, bail out\n\t\t\treturn true;\n\t\t}\n\t}\n\tprev_values.forEach(prev_value => possible_values.add(prev_value));\n\n\tif (possible_values.has(UNKNOWN)) return true;\n\n\tfor (const value of possible_values) {\n\t\tif (test_attribute(operator, expected_value, case_insensitive, value)) return true;\n\t}\n\n\treturn false;\n}\n\nfunction unquote(value: CssNode) {\n\tif (value.type === 'Identifier') return value.name;\n\tconst str = value.value;\n\tif (str[0] === str[str.length - 1] && str[0] === \"'\" || str[0] === '\"') {\n\t\treturn str.slice(1, str.length - 1);\n\t}\n\treturn str;\n}\n\nfunction get_element_parent(node: Element): Element | null {\n\tlet parent: INode = node;\n\twhile ((parent = parent.parent) && parent.type !== 'Element');\n\treturn parent as Element | null;\n}\n\nfunction get_possible_element_siblings(node: INode, adjacent_only: boolean): Map<Element, NodeExist> {\n\tconst result: Map<Element, NodeExist> = new Map();\n\tlet prev: INode = node;\n\twhile (prev = prev.prev) {\n\t\tif (prev.type === 'Element') {\n\t\t\tif (!prev.attributes.find(attr => attr.type === 'Attribute' && attr.name.toLowerCase() === 'slot')) {\n\t\t\t\tresult.set(prev, NodeExist.Definitely);\n\t\t\t}\n\n\t\t\tif (adjacent_only) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} else if (prev.type === 'EachBlock' || prev.type === 'IfBlock' || prev.type === 'AwaitBlock') {\n\t\t\tconst possible_last_child = get_possible_last_child(prev, adjacent_only);\n\n\t\t\tadd_to_map(possible_last_child, result);\n\t\t\tif (adjacent_only && has_definite_elements(possible_last_child)) {\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!prev || !adjacent_only) {\n\t\tlet parent: INode = node;\n\t\tlet skip_each_for_last_child = node.type === 'ElseBlock';\n\t\twhile ((parent = parent.parent) && (parent.type === 'EachBlock' || parent.type === 'IfBlock' || parent.type === 'ElseBlock' || parent.type === 'AwaitBlock')) {\n\t\t\tconst possible_siblings = get_possible_element_siblings(parent, adjacent_only);\n\t\t\tadd_to_map(possible_siblings, result);\n\t\t\t\n\t\t\tif (parent.type === 'EachBlock') {\n\t\t\t\t// first child of each block can select the last child of each block as previous sibling\n\t\t\t\tif (skip_each_for_last_child) {\n\t\t\t\t\tskip_each_for_last_child = false;\n\t\t\t\t} else {\n\t\t\t\t\tadd_to_map(get_possible_last_child(parent, adjacent_only), result);\n\t\t\t\t}\n\t\t\t} else if (parent.type === 'ElseBlock') {\n\t\t\t\tskip_each_for_last_child = true;\n\t\t\t\tparent = parent.parent;\n\t\t\t}\n\n\t\t\tif (adjacent_only && has_definite_elements(possible_siblings)) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\nfunction get_possible_last_child(block: EachBlock | IfBlock | AwaitBlock, adjacent_only: boolean): Map<Element, NodeExist> {\n\tconst result: Map<Element, NodeExist> = new Map();\n\n\tif (block.type === 'EachBlock') {\n\t\tconst each_result: Map<Element, NodeExist> = loop_child(block.children, adjacent_only);\n\t\tconst else_result: Map<Element, NodeExist> = block.else ? loop_child(block.else.children, adjacent_only) : new Map();\n\t\t\n\t\tconst not_exhaustive = !has_definite_elements(else_result);\n\n\t\tif (not_exhaustive) {\n\t\t\tmark_as_probably(each_result);\n\t\t\tmark_as_probably(else_result);\n\t\t}\n\t\tadd_to_map(each_result, result);\n\t\tadd_to_map(else_result, result);\n\t} else if (block.type === 'IfBlock') {\n\t\tconst if_result: Map<Element, NodeExist> = loop_child(block.children, adjacent_only);\n\t\tconst else_result: Map<Element, NodeExist> = block.else ? loop_child(block.else.children, adjacent_only) : new Map();\n\n\t\tconst not_exhaustive = !has_definite_elements(if_result) || !has_definite_elements(else_result);\n\n\t\tif (not_exhaustive) {\n\t\t\tmark_as_probably(if_result);\n\t\t\tmark_as_probably(else_result);\n\t\t}\n\n\t\tadd_to_map(if_result, result);\n\t\tadd_to_map(else_result, result);\n\t} else if (block.type === 'AwaitBlock') {\n\t\tconst pending_result: Map<Element, NodeExist> = block.pending ? loop_child(block.pending.children, adjacent_only) : new Map();\n\t\tconst then_result: Map<Element, NodeExist> = block.then ? loop_child(block.then.children, adjacent_only) : new Map();\n\t\tconst catch_result: Map<Element, NodeExist> = block.catch ? loop_child(block.catch.children, adjacent_only) : new Map();\n\n\t\tconst not_exhaustive = !has_definite_elements(pending_result) || !has_definite_elements(then_result) || !has_definite_elements(catch_result);\n\n\t\tif (not_exhaustive) {\n\t\t\tmark_as_probably(pending_result);\n\t\t\tmark_as_probably(then_result);\n\t\t\tmark_as_probably(catch_result);\n\t\t}\n\n\t\tadd_to_map(pending_result, result);\n\t\tadd_to_map(then_result, result);\n\t\tadd_to_map(catch_result, result);\n\t}\n\n\treturn result;\n}\n\nfunction has_definite_elements(result: Map<Element, NodeExist>): boolean {\n\tif (result.size === 0) return false;\n\tfor (const exist of result.values()) {\n\t\tif (exist === NodeExist.Definitely) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction add_to_map(from: Map<Element, NodeExist>, to: Map<Element, NodeExist>) {\n\tfrom.forEach((exist, element) => {\n\t\tto.set(element, higher_existance(exist, to.get(element)));\n\t});\n}\n\nfunction higher_existance(exist1: NodeExist | null, exist2: NodeExist | null): NodeExist {\n\tif (exist1 === undefined || exist2 === undefined) return exist1 || exist2;\n\treturn exist1 > exist2 ? exist1 : exist2;\n}\n\nfunction mark_as_probably(result: Map<Element, NodeExist>) {\n\tfor (const key of result.keys()) {\n\t\tresult.set(key, NodeExist.Probably);\n\t}\n}\n\nfunction loop_child(children: INode[], adjacent_only: boolean) {\n\tconst result: Map<Element, NodeExist> = new Map();\n\tfor (let i = children.length - 1; i >= 0; i--) {\n\t\tconst child = children[i];\n\t\tif (child.type === 'Element') {\n\t\t\tresult.set(child, NodeExist.Definitely);\n\t\t\tif (adjacent_only) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} else if (child.type === 'EachBlock' || child.type === 'IfBlock' || child.type === 'AwaitBlock') {\n\t\t\tconst child_result = get_possible_last_child(child, adjacent_only);\n\t\t\tadd_to_map(child_result, result);\n\t\t\tif (adjacent_only && has_definite_elements(child_result)) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn result;\n}\n\nclass Block {\n\tglobal: boolean;\n\tcombinator: CssNode;\n\tselectors: CssNode[]\n\tstart: number;\n\tend: number;\n\tshould_encapsulate: boolean;\n\n\tconstructor(combinator: CssNode) {\n\t\tthis.combinator = combinator;\n\t\tthis.global = false;\n\t\tthis.selectors = [];\n\n\t\tthis.start = null;\n\t\tthis.end = null;\n\n\t\tthis.should_encapsulate = false;\n\t}\n\n\tadd(selector: CssNode) {\n\t\tif (this.selectors.length === 0) {\n\t\t\tthis.start = selector.start;\n\t\t\tthis.global = selector.type === 'PseudoClassSelector' && selector.name === 'global';\n\t\t}\n\n\t\tthis.selectors.push(selector);\n\t\tthis.end = selector.end;\n\t}\n}\n\nfunction group_selectors(selector: CssNode) {\n\tlet block: Block = new Block(null);\n\n\tconst blocks = [block];\n\n\tselector.children.forEach((child: CssNode) => {\n\t\tif (child.type === 'WhiteSpace' || child.type === 'Combinator') {\n\t\t\tblock = new Block(child);\n\t\t\tblocks.push(block);\n\t\t} else {\n\t\t\tblock.add(child);\n\t\t}\n\t});\n\n\treturn blocks;\n}\n","// https://github.com/darkskyapp/string-hash/blob/master/index.js\nexport default function hash(str: string): string {\n\tstr = str.replace(/\\r/g, '');\n\tlet hash = 5381;\n\tlet i = str.length;\n\n\twhile (i--) hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n\treturn (hash >>> 0).toString(36);\n}\n","import MagicString from 'magic-string';\nimport { walk } from 'estree-walker';\nimport Selector from './Selector';\nimport Element from '../nodes/Element';\nimport { Ast } from '../../interfaces';\nimport Component from '../Component';\nimport { CssNode } from './interfaces';\nimport hash from '../utils/hash';\n\nfunction remove_css_prefix(name: string): string {\n\treturn name.replace(/^-((webkit)|(moz)|(o)|(ms))-/, '');\n}\n\nconst is_keyframes_node = (node: CssNode) =>\n\tremove_css_prefix(node.name) === 'keyframes';\n\nconst at_rule_has_declaration = ({ block }: CssNode): true =>\n\tblock &&\n\tblock.children &&\n\tblock.children.find((node: CssNode) => node.type === 'Declaration');\n\nfunction minify_declarations(\n\tcode: MagicString,\n\tstart: number,\n\tdeclarations: Declaration[]\n): number {\n\tlet c = start;\n\n\tdeclarations.forEach((declaration, i) => {\n\t\tconst separator = i > 0 ? ';' : '';\n\t\tif ((declaration.node.start - c) > separator.length) {\n\t\t\tcode.overwrite(c, declaration.node.start, separator);\n\t\t}\n\t\tdeclaration.minify(code);\n\t\tc = declaration.node.end;\n\t});\n\n\treturn c;\n}\n\nclass Rule {\n\tselectors: Selector[];\n\tdeclarations: Declaration[];\n\tnode: CssNode;\n\tparent: Atrule;\n\n\tconstructor(node: CssNode, stylesheet, parent?: Atrule) {\n\t\tthis.node = node;\n\t\tthis.parent = parent;\n\t\tthis.selectors = node.selector.children.map((node: CssNode) => new Selector(node, stylesheet));\n\t\tthis.declarations = node.block.children.map((node: CssNode) => new Declaration(node));\n\t}\n\n\tapply(node: Element) {\n\t\tthis.selectors.forEach(selector => selector.apply(node)); // TODO move the logic in here?\n\t}\n\n\tis_used(dev: boolean) {\n\t\tif (this.parent && this.parent.node.type === 'Atrule' && is_keyframes_node(this.parent.node)) return true;\n\t\tif (this.declarations.length === 0) return dev;\n\t\treturn this.selectors.some(s => s.used);\n\t}\n\n\tminify(code: MagicString, _dev: boolean) {\n\t\tlet c = this.node.start;\n\t\tlet started = false;\n\n\t\tthis.selectors.forEach((selector) => {\n\t\t\tif (selector.used) {\n\t\t\t\tconst separator = started ? ',' : '';\n\t\t\t\tif ((selector.node.start - c) > separator.length) {\n\t\t\t\t\tcode.overwrite(c, selector.node.start, separator);\n\t\t\t\t}\n\n\t\t\t\tselector.minify(code);\n\t\t\t\tc = selector.node.end;\n\n\t\t\t\tstarted = true;\n\t\t\t}\n\t\t});\n\n\t\tcode.remove(c, this.node.block.start);\n\n\t\tc = this.node.block.start + 1;\n\t\tc = minify_declarations(code, c, this.declarations);\n\n\t\tcode.remove(c, this.node.block.end - 1);\n\t}\n\n\ttransform(code: MagicString, id: string, keyframes: Map<string, string>, max_amount_class_specificity_increased: number) {\n\t\tif (this.parent && this.parent.node.type === 'Atrule' && is_keyframes_node(this.parent.node)) return true;\n\n\t\tconst attr = `.${id}`;\n\n\t\tthis.selectors.forEach(selector => selector.transform(code, attr, max_amount_class_specificity_increased));\n\t\tthis.declarations.forEach(declaration => declaration.transform(code, keyframes));\n\t}\n\n\tvalidate(component: Component) {\n\t\tthis.selectors.forEach(selector => {\n\t\t\tselector.validate(component);\n\t\t});\n\t}\n\n\twarn_on_unused_selector(handler: (selector: Selector) => void) {\n\t\tthis.selectors.forEach(selector => {\n\t\t\tif (!selector.used) handler(selector);\n\t\t});\n\t}\n\n\tget_max_amount_class_specificity_increased() {\n\t\treturn Math.max(...this.selectors.map(selector => selector.get_amount_class_specificity_increased()));\n\t}\n}\n\nclass Declaration {\n\tnode: CssNode;\n\n\tconstructor(node: CssNode) {\n\t\tthis.node = node;\n\t}\n\n\ttransform(code: MagicString, keyframes: Map<string, string>) {\n\t\tconst property = this.node.property && remove_css_prefix(this.node.property.toLowerCase());\n\t\tif (property === 'animation' || property === 'animation-name') {\n\t\t\tthis.node.value.children.forEach((block: CssNode) => {\n\t\t\t\tif (block.type === 'Identifier') {\n\t\t\t\t\tconst name = block.name;\n\t\t\t\t\tif (keyframes.has(name)) {\n\t\t\t\t\t\tcode.overwrite(block.start, block.end, keyframes.get(name));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tminify(code: MagicString) {\n\t\tif (!this.node.property) return; // @apply, and possibly other weird cases?\n\n\t\tconst c = this.node.start + this.node.property.length;\n\t\tconst first = this.node.value.children\n\t\t\t? this.node.value.children[0]\n\t\t\t: this.node.value;\n\n\t\tlet start = first.start;\n\t\twhile (/\\s/.test(code.original[start])) start += 1;\n\n\t\tif (start - c > 1) {\n\t\t\tcode.overwrite(c, start, ':');\n\t\t}\n\t}\n}\n\nclass Atrule {\n\tnode: CssNode;\n\tchildren: Array<Atrule|Rule>;\n\tdeclarations: Declaration[];\n\n\tconstructor(node: CssNode) {\n\t\tthis.node = node;\n\t\tthis.children = [];\n\t\tthis.declarations = [];\n\t}\n\n\tapply(node: Element) {\n\t\tif (this.node.name === 'media' || this.node.name === 'supports') {\n\t\t\tthis.children.forEach(child => {\n\t\t\t\tchild.apply(node);\n\t\t\t});\n\t\t} else if (is_keyframes_node(this.node)) {\n\t\t\tthis.children.forEach((rule: Rule) => {\n\t\t\t\trule.selectors.forEach(selector => {\n\t\t\t\t\tselector.used = true;\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}\n\n\tis_used(_dev: boolean) {\n\t\treturn true; // TODO\n\t}\n\n\tminify(code: MagicString, dev: boolean) {\n\t\tif (this.node.name === 'media') {\n\t\t\tconst expression_char = code.original[this.node.expression.start];\n\t\t\tlet c = this.node.start + (expression_char === '(' ? 6 : 7);\n\t\t\tif (this.node.expression.start > c) code.remove(c, this.node.expression.start);\n\n\t\t\tthis.node.expression.children.forEach((query: CssNode) => {\n\t\t\t\t// TODO minify queries\n\t\t\t\tc = query.end;\n\t\t\t});\n\n\t\t\tcode.remove(c, this.node.block.start);\n\t\t} else if (this.node.name === 'supports') {\n\t\t\tlet c = this.node.start + 9;\n\t\t\tif (this.node.expression.start - c > 1) code.overwrite(c, this.node.expression.start, ' ');\n\t\t\tthis.node.expression.children.forEach((query: CssNode) => {\n\t\t\t\t// TODO minify queries\n\t\t\t\tc = query.end;\n\t\t\t});\n\t\t\tcode.remove(c, this.node.block.start);\n\t\t} else {\n\t\t\tlet c = this.node.start + this.node.name.length + 1;\n\t\t\tif (this.node.expression) {\n\t\t\t\tif (this.node.expression.start - c > 1) code.overwrite(c, this.node.expression.start, ' ');\n\t\t\t\tc = this.node.expression.end;\n\t\t\t}\n\t\t\tif (this.node.block && this.node.block.start - c > 0) {\n\t\t\t\tcode.remove(c, this.node.block.start);\n\t\t\t}\n\t\t}\n\n\t\t// TODO other atrules\n\n\t\tif (this.node.block) {\n\t\t\tlet c = this.node.block.start + 1;\n\t\t\tif (this.declarations.length) {\n\t\t\t\tc = minify_declarations(code, c, this.declarations);\n\t\t\t\t// if the atrule has children, leave the last declaration semicolon alone\n\t\t\t\tif (this.children.length) c++;\n\t\t\t}\n\n\t\t\tthis.children.forEach(child => {\n\t\t\t\tif (child.is_used(dev)) {\n\t\t\t\t\tcode.remove(c, child.node.start);\n\t\t\t\t\tchild.minify(code, dev);\n\t\t\t\t\tc = child.node.end;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tcode.remove(c, this.node.block.end - 1);\n\t\t}\n\t}\n\n\ttransform(code: MagicString, id: string, keyframes: Map<string, string>, max_amount_class_specificity_increased: number) {\n\t\tif (is_keyframes_node(this.node)) {\n\t\t\tthis.node.expression.children.forEach(({ type, name, start, end }: CssNode) => {\n\t\t\t\tif (type === 'Identifier') {\n\t\t\t\t\tif (name.startsWith('-global-')) {\n\t\t\t\t\t\tcode.remove(start, start + 8);\n\t\t\t\t\t\tthis.children.forEach((rule: Rule) => {\n\t\t\t\t\t\t\trule.selectors.forEach(selector => {\n\t\t\t\t\t\t\t\tselector.used = true;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcode.overwrite(start, end, keyframes.get(name));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis.children.forEach(child => {\n\t\t\tchild.transform(code, id, keyframes, max_amount_class_specificity_increased);\n\t\t});\n\t}\n\n\tvalidate(component: Component) {\n\t\tthis.children.forEach(child => {\n\t\t\tchild.validate(component);\n\t\t});\n\t}\n\n\twarn_on_unused_selector(handler: (selector: Selector) => void) {\n\t\tif (this.node.name !== 'media') return;\n\n\t\tthis.children.forEach(child => {\n\t\t\tchild.warn_on_unused_selector(handler);\n\t\t});\n\t}\n\n\tget_max_amount_class_specificity_increased() {\n\t\treturn Math.max(...this.children.map(rule => rule.get_max_amount_class_specificity_increased()));\n\t}\n}\n\nexport default class Stylesheet {\n\tsource: string;\n\tast: Ast;\n\tfilename: string;\n\tdev: boolean;\n\n\thas_styles: boolean;\n\tid: string;\n\n\tchildren: Array<Rule|Atrule> = [];\n\tkeyframes: Map<string, string> = new Map();\n\n\tnodes_with_css_class: Set<CssNode> = new Set();\n\n\tconstructor(source: string, ast: Ast, filename: string, dev: boolean) {\n\t\tthis.source = source;\n\t\tthis.ast = ast;\n\t\tthis.filename = filename;\n\t\tthis.dev = dev;\n\n\t\tif (ast.css && ast.css.children.length) {\n\t\t\tthis.id = `svelte-${hash(ast.css.content.styles)}`;\n\n\t\t\tthis.has_styles = true;\n\n\t\t\tconst stack: Atrule[] = [];\n\t\t\tlet depth = 0;\n\t\t\tlet current_atrule: Atrule = null;\n\n\t\t\twalk(ast.css as any, {\n\t\t\t\tenter: (node: any) => {\n\t\t\t\t\tif (node.type === 'Atrule') {\n\t\t\t\t\t\tconst atrule = new Atrule(node);\n\t\t\t\t\t\tstack.push(atrule);\n\n\t\t\t\t\t\tif (current_atrule) {\n\t\t\t\t\t\t\tcurrent_atrule.children.push(atrule);\n\t\t\t\t\t\t} else if (depth <= 1) {\n\t\t\t\t\t\t\tthis.children.push(atrule);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (is_keyframes_node(node)) {\n\t\t\t\t\t\t\tnode.expression.children.forEach((expression: CssNode) => {\n\t\t\t\t\t\t\t\tif (expression.type === 'Identifier' && !expression.name.startsWith('-global-')) {\n\t\t\t\t\t\t\t\t\tthis.keyframes.set(expression.name, `${this.id}-${expression.name}`);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else if (at_rule_has_declaration(node)) {\n\t\t\t\t\t\t\tconst at_rule_declarations = node.block.children\n\t\t\t\t\t\t\t\t.filter(node => node.type === 'Declaration')\n\t\t\t\t\t\t\t\t.map(node => new Declaration(node));\n\t\t\t\t\t\t\tatrule.declarations.push(...at_rule_declarations);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcurrent_atrule = atrule;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (node.type === 'Rule') {\n\t\t\t\t\t\tconst rule = new Rule(node, this, current_atrule);\n\n\t\t\t\t\t\tif (current_atrule) {\n\t\t\t\t\t\t\tcurrent_atrule.children.push(rule);\n\t\t\t\t\t\t} else if (depth <= 1) {\n\t\t\t\t\t\t\tthis.children.push(rule);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tdepth += 1;\n\t\t\t\t},\n\n\t\t\t\tleave: (node: any) => {\n\t\t\t\t\tif (node.type === 'Atrule') {\n\t\t\t\t\t\tstack.pop();\n\t\t\t\t\t\tcurrent_atrule = stack[stack.length - 1];\n\t\t\t\t\t}\n\n\t\t\t\t\tdepth -= 1;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tthis.has_styles = false;\n\t\t}\n\t}\n\n\tapply(node: Element) {\n\t\tif (!this.has_styles) return;\n\n\t\tfor (let i = 0; i < this.children.length; i += 1) {\n\t\t\tconst child = this.children[i];\n\t\t\tchild.apply(node);\n\t\t}\n\t}\n\n\treify() {\n\t\tthis.nodes_with_css_class.forEach((node: Element) => {\n\t\t\tnode.add_css_class();\n\t\t});\n\t}\n\n\trender(file: string, should_transform_selectors: boolean) {\n\t\tif (!this.has_styles) {\n\t\t\treturn { code: null, map: null };\n\t\t}\n\n\t\tconst code = new MagicString(this.source);\n\n\t\twalk(this.ast.css as any, {\n\t\t\tenter: (node: any) => {\n\t\t\t\tcode.addSourcemapLocation(node.start);\n\t\t\t\tcode.addSourcemapLocation(node.end);\n\t\t\t}\n\t\t});\n\n\t\tif (should_transform_selectors) {\n\t\t\tconst max = Math.max(...this.children.map(rule => rule.get_max_amount_class_specificity_increased()));\n\t\t\tthis.children.forEach((child: (Atrule|Rule)) => {\n\t\t\t\tchild.transform(code, this.id, this.keyframes, max);\n\t\t\t});\n\t\t}\n\n\t\tlet c = 0;\n\t\tthis.children.forEach(child => {\n\t\t\tif (child.is_used(this.dev)) {\n\t\t\t\tcode.remove(c, child.node.start);\n\t\t\t\tchild.minify(code, this.dev);\n\t\t\t\tc = child.node.end;\n\t\t\t}\n\t\t});\n\n\t\tcode.remove(c, this.source.length);\n\n\t\treturn {\n\t\t\tcode: code.toString(),\n\t\t\tmap: code.generateMap({\n\t\t\t\tincludeContent: true,\n\t\t\t\tsource: this.filename,\n\t\t\t\tfile\n\t\t\t})\n\t\t};\n\t}\n\n\tvalidate(component: Component) {\n\t\tthis.children.forEach(child => {\n\t\t\tchild.validate(component);\n\t\t});\n\t}\n\n\twarn_on_unused_selectors(component: Component) {\n\t\tthis.children.forEach(child => {\n\t\t\tchild.warn_on_unused_selector((selector: Selector) => {\n\t\t\t\tcomponent.warn(selector.node, {\n\t\t\t\t\tcode: 'css-unused-selector',\n\t\t\t\t\tmessage: `Unused CSS selector \"${this.source.slice(selector.node.start, selector.node.end)}\"`\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n}\n","export const test = typeof process !== 'undefined' && process.env.TEST;\n","import Block from '../../render_dom/Block';\nimport Component from '../../Component';\nimport Node from './Node';\nimport { INode } from '../interfaces';\n\nexport default class AbstractBlock extends Node {\n\tblock: Block;\n\tchildren: INode[];\n\n\tconstructor(component: Component, parent, scope, info: any) {\n\t\tsuper(component, parent, scope, info);\n\t}\n\n\twarn_if_empty_block() {\n\t\tif (!this.children || this.children.length > 1) return;\n\n\t\tconst child = this.children[0];\n\n\t\tif (!child || (child.type === 'Text' && !/[^ \\r\\n\\f\\v\\t]/.test(child.data))) {\n\t\t\tthis.component.warn(this, {\n\t\t\t\tcode: 'empty-block',\n\t\t\t\tmessage: 'Empty block'\n\t\t\t});\n\t\t}\n\t}\n}\n","import map_children from './shared/map_children';\nimport AbstractBlock from './shared/AbstractBlock';\n\nexport default class PendingBlock extends AbstractBlock {\n\ttype: 'PendingBlock';\n\tconstructor(component, parent, scope, info) {\n\t\tsuper(component, parent, scope, info);\n\t\tthis.children = map_children(component, parent, scope, info.children);\n\n\t\tif (!info.skip) {\n\t\t\tthis.warn_if_empty_block();\n\t\t}\n\t}\n}\n","import map_children from './shared/map_children';\nimport TemplateScope from './shared/TemplateScope';\nimport AbstractBlock from './shared/AbstractBlock';\nimport AwaitBlock from './AwaitBlock';\nimport Component from '../Component';\nimport { TemplateNode } from '../../interfaces';\n\nexport default class ThenBlock extends AbstractBlock {\n\ttype: 'ThenBlock';\n\tscope: TemplateScope;\n\n\tconstructor(component: Component, parent: AwaitBlock, scope: TemplateScope, info: TemplateNode) {\n\t\tsuper(component, parent, scope, info);\n\n\t\tthis.scope = scope.child();\n\t\tif (parent.then_node) {\n\t\t\tparent.then_contexts.forEach(context => {\n\t\t\t\tthis.scope.add(context.key.name, parent.expression.dependencies, this);\n\t\t\t});\n\t\t}\n\t\tthis.children = map_children(component, parent, this.scope, info.children);\n\n\t\tif (!info.skip) {\n\t\t\tthis.warn_if_empty_block();\n\t\t}\n\t}\n}\n","import map_children from './shared/map_children';\nimport TemplateScope from './shared/TemplateScope';\nimport AbstractBlock from './shared/AbstractBlock';\nimport AwaitBlock from './AwaitBlock';\nimport Component from '../Component';\nimport { TemplateNode } from '../../interfaces';\n\nexport default class CatchBlock extends AbstractBlock {\n\ttype: 'CatchBlock';\n\tscope: TemplateScope;\n\n\tconstructor(component: Component, parent: AwaitBlock, scope: TemplateScope, info: TemplateNode) {\n\t\tsuper(component, parent, scope, info);\n\n\t\tthis.scope = scope.child();\n\t\tif (parent.catch_node) {\n\t\t\tparent.catch_contexts.forEach(context => {\n\t\t\t\tthis.scope.add(context.key.name, parent.expression.dependencies, this);\n\t\t\t});\n\t\t}\n\t\tthis.children = map_children(component, parent, this.scope, info.children);\n\n\t\tif (!info.skip) {\n\t\t\tthis.warn_if_empty_block();\n\t\t}\n\t}\n}\n","import { x } from 'code-red';\nimport { Node, Identifier } from 'estree';\n\nexport interface Context {\n\tkey: Identifier;\n\tname?: string;\n\tmodifier: (node: Node) => Node;\n}\n\nexport function unpack_destructuring(contexts: Context[], node: Node, modifier: (node: Node) => Node) {\n\tif (!node) return;\n\n\tif (node.type === 'Identifier') {\n\t\tcontexts.push({\n\t\t\tkey: node as Identifier,\n\t\t\tmodifier\n\t\t});\n\t} else if (node.type === 'RestElement') {\n\t\tcontexts.push({\n\t\t\tkey: node.argument as Identifier,\n\t\t\tmodifier\n\t\t});\n\t} else if (node.type === 'ArrayPattern') {\n\t\tnode.elements.forEach((element, i) => {\n\t\t\tif (element && element.type === 'RestElement') {\n\t\t\t\tunpack_destructuring(contexts, element, node => x`${modifier(node)}.slice(${i})` as Node);\n\t\t\t} else if (element && element.type === 'AssignmentPattern') {\n\t\t\t\tunpack_destructuring(contexts, element.left, node => x`${modifier(node)}[${i}] !== undefined ? ${modifier(node)}[${i}] : ${element.right}` as Node);\n\t\t\t} else {\n\t\t\t\tunpack_destructuring(contexts, element, node => x`${modifier(node)}[${i}]` as Node);\n\t\t\t}\n\t\t});\n\t} else if (node.type === 'ObjectPattern') {\n\t\tconst used_properties = [];\n\n\t\tnode.properties.forEach((property) => {\n\t\t\tif (property.type === 'RestElement') {\n\t\t\t\tunpack_destructuring(\n\t\t\t\t\tcontexts,\n\t\t\t\t\tproperty.argument,\n\t\t\t\t\tnode => x`@object_without_properties(${modifier(node)}, [${used_properties}])` as Node\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tconst key = property.key as Identifier;\n\t\t\t\tconst value = property.value;\n\n\t\t\t\tused_properties.push(x`\"${(key as Identifier).name}\"`);\n\t\t\t\tif (value.type === 'AssignmentPattern') {\n\t\t\t\t\tunpack_destructuring(contexts, value.left, node => x`${modifier(node)}.${key.name} !== undefined ? ${modifier(node)}.${key.name} : ${value.right}` as Node);\n\t\t\t\t} else {\n\t\t\t\t\tunpack_destructuring(contexts, value, node => x`${modifier(node)}.${key.name}` as Node);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n","import Node from './shared/Node';\nimport PendingBlock from './PendingBlock';\nimport ThenBlock from './ThenBlock';\nimport CatchBlock from './CatchBlock';\nimport Expression from './shared/Expression';\nimport Component from '../Component';\nimport TemplateScope from './shared/TemplateScope';\nimport { TemplateNode } from '../../interfaces';\nimport { Context, unpack_destructuring } from './shared/Context';\nimport { Node as ESTreeNode } from 'estree';\n\nexport default class AwaitBlock extends Node {\n\ttype: 'AwaitBlock';\n\texpression: Expression;\n\n\tthen_contexts: Context[];\n\tcatch_contexts: Context[];\n\n\tthen_node: ESTreeNode | null;\n\tcatch_node: ESTreeNode | null;\n\n\tpending: PendingBlock;\n\tthen: ThenBlock;\n\tcatch: CatchBlock;\n\n\tconstructor(component: Component, parent, scope: TemplateScope, info: TemplateNode) {\n\t\tsuper(component, parent, scope, info);\n\n\t\tthis.expression = new Expression(component, this, scope, info.expression);\n\n\t\tthis.then_node = info.value;\n\t\tthis.catch_node = info.error;\n\n\t\tif (this.then_node) {\n\t\t\tthis.then_contexts = [];\n\t\t\tunpack_destructuring(this.then_contexts, info.value, node => node);\n\t\t}\n\n\t\tif (this.catch_node) {\n\t\t\tthis.catch_contexts = [];\n\t\t\tunpack_destructuring(this.catch_contexts, info.error, node => node);\n\t\t}\n\n\t\tthis.pending = new PendingBlock(component, this, scope, info.pending);\n\t\tthis.then = new ThenBlock(component, this, scope, info.then);\n\t\tthis.catch = new CatchBlock(component, this, scope, info.catch);\n\t}\n}\n","import Node from './shared/Node';\nimport Expression from './shared/Expression';\nimport Component from '../Component';\nimport { sanitize } from '../../utils/names';\nimport { Identifier } from 'estree';\n\nexport default class EventHandler extends Node {\n\ttype: 'EventHandler';\n\tname: string;\n\tmodifiers: Set<string>;\n\texpression: Expression;\n\thandler_name: Identifier;\n\tuses_context = false;\n\tcan_make_passive = false;\n\n\tconstructor(component: Component, parent, template_scope, info) {\n\t\tsuper(component, parent, template_scope, info);\n\n\t\tthis.name = info.name;\n\t\tthis.modifiers = new Set(info.modifiers);\n\n\t\tif (info.expression) {\n\t\t\tthis.expression = new Expression(component, this, template_scope, info.expression);\n\t\t\tthis.uses_context = this.expression.uses_context;\n\n\t\t\tif (/FunctionExpression/.test(info.expression.type) && info.expression.params.length === 0) {\n\t\t\t\t// TODO make this detection more accurate — if `event.preventDefault` isn't called, and\n\t\t\t\t// `event` is passed to another function, we can make it passive\n\t\t\t\tthis.can_make_passive = true;\n\t\t\t} else if (info.expression.type === 'Identifier') {\n\t\t\t\tlet node = component.node_for_declaration.get(info.expression.name);\n\n\t\t\t\tif (node) {\n\t\t\t\t\tif (node.type === 'VariableDeclaration') {\n\t\t\t\t\t\t// for `const handleClick = () => {...}`, we want the [arrow] function expression node\n\t\t\t\t\t\tconst declarator = node.declarations.find(d => (d.id as Identifier).name === info.expression.name);\n\t\t\t\t\t\tnode = declarator && declarator.init;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (node && (node.type === 'FunctionExpression' || node.type === 'FunctionDeclaration' || node.type === 'ArrowFunctionExpression') && node.params.length === 0) {\n\t\t\t\t\t\tthis.can_make_passive = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthis.handler_name = component.get_unique_name(`${sanitize(this.name)}_handler`);\n\t\t}\n\t}\n\n\tget reassigned(): boolean {\n\t\tif (!this.expression) {\n\t\t\treturn false;\n\t\t}\n\t\tconst node = this.expression.node;\n\n\t\tif (/FunctionExpression/.test(node.type)) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn this.expression.dynamic_dependencies().length > 0;\n\t}\n}\n","import Node from './shared/Node';\nimport EventHandler from './EventHandler';\n\nexport default class Body extends Node {\n\ttype: 'Body';\n\thandlers: EventHandler[];\n\n\tconstructor(component, parent, scope, info) {\n\t\tsuper(component, parent, scope, info);\n\n\t\tthis.handlers = [];\n\n\t\tinfo.attributes.forEach(node => {\n\t\t\tif (node.type === 'EventHandler') {\n\t\t\t\tthis.handlers.push(new EventHandler(component, this, scope, node));\n\t\t\t} else {\n\t\t\t\t// TODO there shouldn't be anything else here...\n\t\t\t}\n\t\t});\n\t}\n}\n","import Node from './shared/Node';\n\nconst pattern = /^\\s*svelte-ignore\\s+([\\s\\S]+)\\s*$/m;\n\nexport default class Comment extends Node {\n\ttype: 'Comment';\n\tdata: string;\n\tignores: string[];\n\n\tconstructor(component, parent, scope, info) {\n\t\tsuper(component, parent, scope, info);\n\t\tthis.data = info.data;\n\n\t\tconst match = pattern.exec(this.data);\n\t\tthis.ignores = match ? match[1].split(/[^\\S]/).map(x => x.trim()).filter(Boolean) : [];\n\t}\n}\n","import map_children from './shared/map_children';\nimport AbstractBlock from './shared/AbstractBlock';\nimport Component from '../Component';\n\nexport default class ElseBlock extends AbstractBlock {\n\ttype: 'ElseBlock';\n\n\tconstructor(component: Component, parent, scope, info) {\n\t\tsuper(component, parent, scope, info);\n\t\tthis.children = map_children(component, this, scope, info.children);\n\n\t\tthis.warn_if_empty_block();\n\t}\n}\n","import ElseBlock from './ElseBlock';\nimport Expression from './shared/Expression';\nimport map_children from './shared/map_children';\nimport TemplateScope from './shared/TemplateScope';\nimport AbstractBlock from './shared/AbstractBlock';\nimport Element from './Element';\nimport { Context, unpack_destructuring } from './shared/Context';\nimport { Node } from 'estree';\n\nexport default class EachBlock extends AbstractBlock {\n\ttype: 'EachBlock';\n\n\texpression: Expression;\n\tcontext_node: Node;\n\n\titerations: string;\n\tindex: string;\n\tcontext: string;\n\tkey: Expression;\n\tscope: TemplateScope;\n\tcontexts: Context[];\n\thas_animation: boolean;\n\thas_binding = false;\n\thas_index_binding = false;\n\n\telse?: ElseBlock;\n\n\tconstructor(component, parent, scope, info) {\n\t\tsuper(component, parent, scope, info);\n\n\t\tthis.expression = new Expression(component, this, scope, info.expression);\n\t\tthis.context = info.context.name || 'each'; // TODO this is used to facilitate binding; currently fails with destructuring\n\t\tthis.context_node = info.context;\n\t\tthis.index = info.index;\n\n\t\tthis.scope = scope.child();\n\n\t\tthis.contexts = [];\n\t\tunpack_destructuring(this.contexts, info.context, node => node);\n\n\t\tthis.contexts.forEach(context => {\n\t\t\tthis.scope.add(context.key.name, this.expression.dependencies, this);\n\t\t});\n\n\t\tif (this.index) {\n\t\t\t// index can only change if this is a keyed each block\n\t\t\tconst dependencies = info.key ? this.expression.dependencies : new Set([]);\n\t\t\tthis.scope.add(this.index, dependencies, this);\n\t\t}\n\n\t\tthis.key = info.key\n\t\t\t? new Expression(component, this, this.scope, info.key)\n\t\t\t: null;\n\n\t\tthis.has_animation = false;\n\n\t\tthis.children = map_children(component, this, this.scope, info.children);\n\n\t\tif (this.has_animation) {\n\t\t\tif (this.children.length !== 1) {\n\t\t\t\tconst child = this.children.find(child => !!(child as Element).animation);\n\t\t\t\tcomponent.error((child as Element).animation, {\n\t\t\t\t\tcode: 'invalid-animation',\n\t\t\t\t\tmessage: 'An element that uses the animate directive must be the sole child of a keyed each block'\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tthis.warn_if_empty_block();\n\n\t\tthis.else = info.else\n\t\t\t? new ElseBlock(component, this, this.scope, info.else)\n\t\t\t: null;\n\t}\n}\n","import { string_literal } from '../utils/stringify';\nimport add_to_set from '../utils/add_to_set';\nimport Component from '../Component';\nimport Node from './shared/Node';\nimport Element from './Element';\nimport Text from './Text';\nimport Expression from './shared/Expression';\nimport TemplateScope from './shared/TemplateScope';\nimport { x } from 'code-red';\n\nexport default class Attribute extends Node {\n\ttype: 'Attribute' | 'Spread';\n\tstart: number;\n\tend: number;\n\tscope: TemplateScope;\n\n\tcomponent: Component;\n\tparent: Element;\n\tname: string;\n\tis_spread: boolean;\n\tis_true: boolean;\n\tis_static: boolean;\n\texpression?: Expression;\n\tchunks: Array<Text | Expression>;\n\tdependencies: Set<string>;\n\n\tconstructor(component, parent, scope, info) {\n\t\tsuper(component, parent, scope, info);\n\t\tthis.scope = scope;\n\n\t\tif (info.type === 'Spread') {\n\t\t\tthis.name = null;\n\t\t\tthis.is_spread = true;\n\t\t\tthis.is_true = false;\n\n\t\t\tthis.expression = new Expression(component, this, scope, info.expression);\n\t\t\tthis.dependencies = this.expression.dependencies;\n\t\t\tthis.chunks = null;\n\n\t\t\tthis.is_static = false;\n\t\t} else {\n\t\t\tthis.name = info.name;\n\t\t\tthis.is_true = info.value === true;\n\t\t\tthis.is_static = true;\n\n\t\t\tthis.dependencies = new Set();\n\n\t\t\tthis.chunks = this.is_true\n\t\t\t\t? []\n\t\t\t\t: info.value.map(node => {\n\t\t\t\t\tif (node.type === 'Text') return node;\n\n\t\t\t\t\tthis.is_static = false;\n\n\t\t\t\t\tconst expression = new Expression(component, this, scope, node.expression);\n\n\t\t\t\t\tadd_to_set(this.dependencies, expression.dependencies);\n\t\t\t\t\treturn expression;\n\t\t\t\t});\n\t\t}\n\t}\n\n\tget_dependencies() {\n\t\tif (this.is_spread) return this.expression.dynamic_dependencies();\n\n\t\tconst dependencies: Set<string> = new Set();\n\t\tthis.chunks.forEach(chunk => {\n\t\t\tif (chunk.type === 'Expression') {\n\t\t\t\tadd_to_set(dependencies, chunk.dynamic_dependencies());\n\t\t\t}\n\t\t});\n\n\t\treturn Array.from(dependencies);\n\t}\n\n\tget_value(block) {\n\t\tif (this.is_true) return x`true`;\n\t\tif (this.chunks.length === 0) return x`\"\"`;\n\n\t\tif (this.chunks.length === 1) {\n\t\t\treturn this.chunks[0].type === 'Text'\n\t\t\t\t? string_literal((this.chunks[0] as Text).data)\n\t\t\t\t: (this.chunks[0] as Expression).manipulate(block);\n\t\t}\n\n\t\tlet expression = this.chunks\n\t\t\t.map(chunk => chunk.type === 'Text' ? string_literal(chunk.data) : chunk.manipulate(block))\n\t\t\t.reduce((lhs, rhs) => x`${lhs} + ${rhs}`);\n\n\t\tif (this.chunks[0].type !== 'Text') {\n\t\t\texpression = x`\"\" + ${expression}`;\n\t\t}\n\n\t\treturn expression;\n\t}\n\n\tget_static_value() {\n\t\tif (this.is_spread || this.dependencies.size > 0) return null;\n\n\t\treturn this.is_true\n\t\t\t? true\n\t\t\t: this.chunks[0]\n\t\t\t\t// method should be called only when `is_static = true`\n\t\t\t\t? (this.chunks[0] as Text).data\n\t\t\t\t: '';\n\t}\n\n\tshould_cache() {\n\t\treturn this.is_static\n\t\t\t? false\n\t\t\t: this.chunks.length === 1\n\t\t\t\t// @ts-ignore todo: probably error\n\t\t\t\t? this.chunks[0].node.type !== 'Identifier' || this.scope.names.has(this.chunks[0].node.name)\n\t\t\t\t: true;\n\t}\n}\n","import Node from './shared/Node';\nimport get_object from '../utils/get_object';\nimport Expression from './shared/Expression';\nimport Component from '../Component';\nimport TemplateScope from './shared/TemplateScope';\nimport {dimensions} from '../../utils/patterns';\nimport { Node as ESTreeNode } from 'estree';\n\n// TODO this should live in a specific binding\nconst read_only_media_attributes = new Set([\n\t'duration',\n\t'buffered',\n\t'seekable',\n\t'played',\n\t'seeking',\n\t'ended',\n\t'videoHeight',\n\t'videoWidth'\n]);\n\nexport default class Binding extends Node {\n\ttype: 'Binding';\n\tname: string;\n\texpression: Expression;\n\traw_expression: ESTreeNode; // TODO exists only for bind:this — is there a more elegant solution?\n\tis_contextual: boolean;\n\tis_readonly: boolean;\n\n\tconstructor(component: Component, parent, scope: TemplateScope, info) {\n\t\tsuper(component, parent, scope, info);\n\n\t\tif (info.expression.type !== 'Identifier' && info.expression.type !== 'MemberExpression') {\n\t\t\tcomponent.error(info, {\n\t\t\t\tcode: 'invalid-directive-value',\n\t\t\t\tmessage: 'Can only bind to an identifier (e.g. `foo`) or a member expression (e.g. `foo.bar` or `foo[baz]`)'\n\t\t\t});\n\t\t}\n\n\t\tthis.name = info.name;\n\t\tthis.expression = new Expression(component, this, scope, info.expression);\n\t\tthis.raw_expression = JSON.parse(JSON.stringify(info.expression));\n\n\t\tconst { name } = get_object(this.expression.node);\n\n\t\tthis.is_contextual = Array.from(this.expression.references).some(name => scope.names.has(name));\n\n\t\t// make sure we track this as a mutable ref\n\t\tif (scope.is_let(name)) {\n\t\t\tcomponent.error(this, {\n\t\t\t\tcode: 'invalid-binding',\n\t\t\t\tmessage: 'Cannot bind to a variable declared with the let: directive'\n\t\t\t});\n\t\t} else if (scope.names.has(name)) {\n\t\t\tif (scope.is_await(name)) {\n\t\t\t\tcomponent.error(this, {\n\t\t\t\t\tcode: 'invalid-binding',\n\t\t\t\t\tmessage: 'Cannot bind to a variable declared with {#await ... then} or {:catch} blocks'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tscope.dependencies_for_name.get(name).forEach(name => {\n\t\t\t\tconst variable = component.var_lookup.get(name);\n\t\t\t\tif (variable) {\n\t\t\t\t\tvariable.mutated = true;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tconst variable = component.var_lookup.get(name);\n\n\t\t\tif (!variable || variable.global) {\n\t\t\t\tcomponent.error(this.expression.node, {\n\t\t\t\t\tcode: 'binding-undeclared',\n\t\t\t\t\tmessage: `${name} is not declared`\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tvariable[this.expression.node.type === 'MemberExpression' ? 'mutated' : 'reassigned'] = true;\n\n\t\t\tif (info.expression.type === 'Identifier' && !variable.writable) {\n\t\t\t\tcomponent.error(this.expression.node, {\n\t\t\t\t\tcode: 'invalid-binding',\n\t\t\t\t\tmessage: 'Cannot bind to a variable which is not writable'\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tconst type = parent.get_static_attribute_value('type');\n\n\t\tthis.is_readonly = (\n\t\t\tdimensions.test(this.name) ||\n\t\t\t(parent.is_media_node && parent.is_media_node() && read_only_media_attributes.has(this.name)) ||\n\t\t\t(parent.name === 'input' && type === 'file') // TODO others?\n\t\t);\n\t}\n\n\tis_readonly_media_attribute() {\n\t\treturn read_only_media_attributes.has(this.name);\n\t}\n}\n","import Node from './shared/Node';\nimport Expression from './shared/Expression';\nimport Component from '../Component';\n\nexport default class Transition extends Node {\n\ttype: 'Transition';\n\tname: string;\n\tdirective: string;\n\texpression: Expression;\n\tis_local: boolean;\n\n\tconstructor(component: Component, parent, scope, info) {\n\t\tsuper(component, parent, scope, info);\n\n\t\tcomponent.warn_if_undefined(info.name, info, scope);\n\n\t\tthis.name = info.name;\n\t\tcomponent.add_reference(info.name.split('.')[0]);\n\n\t\tthis.directive = info.intro && info.outro ? 'transition' : info.intro ? 'in' : 'out';\n\t\tthis.is_local = info.modifiers.includes('local');\n\n\t\tif ((info.intro && parent.intro) || (info.outro && parent.outro)) {\n\t\t\tconst parent_transition = (parent.intro || parent.outro);\n\n\t\t\tconst message = this.directive === parent_transition.directive\n\t\t\t\t? `An element can only have one '${this.directive}' directive`\n\t\t\t\t: `An element cannot have both ${describe(parent_transition)} directive and ${describe(this)} directive`;\n\n\t\t\tcomponent.error(info, {\n\t\t\t\tcode: 'duplicate-transition',\n\t\t\t\tmessage\n\t\t\t});\n\t\t}\n\n\t\tthis.expression = info.expression\n\t\t\t? new Expression(component, this, scope, info.expression)\n\t\t\t: null;\n\t}\n}\n\nfunction describe(transition: Transition) {\n\treturn transition.directive === 'transition'\n\t\t? \"a 'transition'\"\n\t\t: `an '${transition.directive}'`;\n}\n","import Node from './shared/Node';\nimport Expression from './shared/Expression';\nimport Component from '../Component';\n\nexport default class Animation extends Node {\n\ttype: 'Animation';\n\tname: string;\n\texpression: Expression;\n\n\tconstructor(component: Component, parent, scope, info) {\n\t\tsuper(component, parent, scope, info);\n\n\t\tcomponent.warn_if_undefined(info.name, info, scope);\n\n\t\tthis.name = info.name;\n\t\tcomponent.add_reference(info.name.split('.')[0]);\n\n\t\tif (parent.animation) {\n\t\t\tcomponent.error(this, {\n\t\t\t\tcode: 'duplicate-animation',\n\t\t\t\tmessage: \"An element can only have one 'animate' directive\"\n\t\t\t});\n\t\t}\n\n\t\tconst block = parent.parent;\n\t\tif (!block || block.type !== 'EachBlock' || !block.key) {\n\t\t\t// TODO can we relax the 'immediate child' rule?\n\t\t\tcomponent.error(this, {\n\t\t\t\tcode: 'invalid-animation',\n\t\t\t\tmessage: 'An element that uses the animate directive must be the immediate child of a keyed each block'\n\t\t\t});\n\t\t}\n\n\t\tblock.has_animation = true;\n\n\t\tthis.expression = info.expression\n\t\t\t? new Expression(component, this, scope, info.expression, true)\n\t\t\t: null;\n\t}\n}\n","import Node from './shared/Node';\nimport Expression from './shared/Expression';\n\nexport default class Class extends Node {\n\ttype: 'Class';\n\tname: string;\n\texpression: Expression;\n\n\tconstructor(component, parent, scope, info) {\n\t\tsuper(component, parent, scope, info);\n\n\t\tthis.name = info.name;\n\n\t\tthis.expression = info.expression\n\t\t\t? new Expression(component, this, scope, info.expression)\n\t\t\t: null;\n\t}\n}\n","import Node from './shared/Node';\nimport Component from '../Component';\nimport TemplateScope from './shared/TemplateScope';\nimport { INode } from './interfaces';\n\n// Whitespace inside one of these elements will not result in\n// a whitespace node being created in any circumstances. (This\n// list is almost certainly very incomplete)\nconst elements_without_text = new Set([\n\t'audio',\n\t'datalist',\n\t'dl',\n\t'optgroup',\n\t'select',\n\t'video'\n]);\n\nexport default class Text extends Node {\n\ttype: 'Text';\n\tdata: string;\n\tsynthetic: boolean;\n\n\tconstructor(component: Component, parent: INode, scope: TemplateScope, info: any) {\n\t\tsuper(component, parent, scope, info);\n\t\tthis.data = info.data;\n\t\tthis.synthetic = info.synthetic || false;\n\t}\n\n\tshould_skip() {\n\t\tif (/\\S/.test(this.data)) return false;\n\n\t\tconst parent_element = this.find_nearest(/(?:Element|InlineComponent|Head)/);\n\t\tif (!parent_element) return false;\n\n\t\tif (parent_element.type === 'Head') return true;\n\t\tif (parent_element.type === 'InlineComponent') return parent_element.children.length === 1 && this === parent_element.children[0];\n\n\t\t// svg namespace exclusions\n\t\tif (/svg$/.test(parent_element.namespace)) {\n\t\t\tif (this.prev && this.prev.type === 'Element' && this.prev.name === 'tspan') return false;\n\t\t}\n\n\t\treturn parent_element.namespace || elements_without_text.has(parent_element.name);\n\t}\n}\n","import Node from './shared/Node';\nimport Component from '../Component';\nimport { walk } from 'estree-walker';\nimport { BasePattern, Identifier } from 'estree';\n\nconst applicable = new Set(['Identifier', 'ObjectExpression', 'ArrayExpression', 'Property']);\n\nexport default class Let extends Node {\n\ttype: 'Let';\n\tname: Identifier;\n\tvalue: Identifier;\n\tnames: string[] = [];\n\n\tconstructor(component: Component, parent, scope, info) {\n\t\tsuper(component, parent, scope, info);\n\n\t\tthis.name = { type: 'Identifier', name: info.name };\n\n\t\tconst { names } = this;\n\n\t\tif (info.expression) {\n\t\t\tthis.value = info.expression;\n\n\t\t\twalk(info.expression, {\n\t\t\t\tenter(node: Identifier|BasePattern) {\n\t\t\t\t\tif (!applicable.has(node.type)) {\n\t\t\t\t\t\tcomponent.error(node as any, {\n\t\t\t\t\t\t\tcode: 'invalid-let',\n\t\t\t\t\t\t\tmessage: 'let directive value must be an identifier or an object/array pattern'\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (node.type === 'Identifier') {\n\t\t\t\t\t\tnames.push((node as Identifier).name);\n\t\t\t\t\t}\n\n\t\t\t\t\t// slightly unfortunate hack\n\t\t\t\t\tif (node.type === 'ArrayExpression') {\n\t\t\t\t\t\tnode.type = 'ArrayPattern';\n\t\t\t\t\t}\n\n\t\t\t\t\tif (node.type === 'ObjectExpression') {\n\t\t\t\t\t\tnode.type = 'ObjectPattern';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tnames.push(this.name.name);\n\t\t}\n\t}\n}\n","import { is_void } from '../../utils/names';\nimport Node from './shared/Node';\nimport Attribute from './Attribute';\nimport Binding from './Binding';\nimport EventHandler from './EventHandler';\nimport Transition from './Transition';\nimport Animation from './Animation';\nimport Action from './Action';\nimport Class from './Class';\nimport Text from './Text';\nimport { namespaces } from '../../utils/namespaces';\nimport map_children from './shared/map_children';\nimport { dimensions } from '../../utils/patterns';\nimport fuzzymatch from '../../utils/fuzzymatch';\nimport list from '../../utils/list';\nimport Let from './Let';\nimport TemplateScope from './shared/TemplateScope';\nimport { INode } from './interfaces';\nimport Component from '../Component';\n\nconst svg = /^(?:altGlyph|altGlyphDef|altGlyphItem|animate|animateColor|animateMotion|animateTransform|circle|clipPath|color-profile|cursor|defs|desc|discard|ellipse|feBlend|feColorMatrix|feComponentTransfer|feComposite|feConvolveMatrix|feDiffuseLighting|feDisplacementMap|feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur|feImage|feMerge|feMergeNode|feMorphology|feOffset|fePointLight|feSpecularLighting|feSpotLight|feTile|feTurbulence|filter|font|font-face|font-face-format|font-face-name|font-face-src|font-face-uri|foreignObject|g|glyph|glyphRef|hatch|hatchpath|hkern|image|line|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|metadata|missing-glyph|mpath|path|pattern|polygon|polyline|radialGradient|rect|set|solidcolor|stop|svg|switch|symbol|text|textPath|tref|tspan|unknown|use|view|vkern)$/;\n\nconst aria_attributes = 'activedescendant atomic autocomplete busy checked colcount colindex colspan controls current describedby details disabled dropeffect errormessage expanded flowto grabbed haspopup hidden invalid keyshortcuts label labelledby level live modal multiline multiselectable orientation owns placeholder posinset pressed readonly relevant required roledescription rowcount rowindex rowspan selected setsize sort valuemax valuemin valuenow valuetext'.split(' ');\nconst aria_attribute_set = new Set(aria_attributes);\n\nconst aria_roles = 'alert alertdialog application article banner blockquote button caption cell checkbox code columnheader combobox complementary contentinfo definition deletion dialog directory document emphasis feed figure form generic grid gridcell group heading img link list listbox listitem log main marquee math meter menu menubar menuitem menuitemcheckbox menuitemradio navigation none note option paragraph presentation progressbar radio radiogroup region row rowgroup rowheader scrollbar search searchbox separator slider spinbutton status strong subscript superscript switch tab table tablist tabpanel term textbox time timer toolbar tooltip tree treegrid treeitem'.split(' ');\nconst aria_role_set = new Set(aria_roles);\n\nconst a11y_required_attributes = {\n\ta: ['href'],\n\tarea: ['alt', 'aria-label', 'aria-labelledby'],\n\n\t// html-has-lang\n\thtml: ['lang'],\n\n\t// iframe-has-title\n\tiframe: ['title'],\n\timg: ['alt'],\n\tobject: ['title', 'aria-label', 'aria-labelledby']\n};\n\nconst a11y_distracting_elements = new Set([\n\t'blink',\n\t'marquee'\n]);\n\nconst a11y_required_content = new Set([\n\t// anchor-has-content\n\t'a',\n\n\t// heading-has-content\n\t'h1',\n\t'h2',\n\t'h3',\n\t'h4',\n\t'h5',\n\t'h6'\n]);\n\nconst a11y_no_onchange = new Set([\n\t'select',\n\t'option'\n]);\n\nconst a11y_labelable = new Set([\n\t'button',\n\t'input',\n\t'keygen',\n\t'meter',\n\t'output',\n\t'progress',\n\t'select',\n\t'textarea'\n]);\n\nconst invisible_elements = new Set(['meta', 'html', 'script', 'style']);\n\nconst valid_modifiers = new Set([\n\t'preventDefault',\n\t'stopPropagation',\n\t'capture',\n\t'once',\n\t'passive',\n\t'nonpassive',\n\t'self'\n]);\n\nconst passive_events = new Set([\n\t'wheel',\n\t'touchstart',\n\t'touchmove',\n\t'touchend',\n\t'touchcancel'\n]);\n\nfunction get_namespace(parent: Element, element: Element, explicit_namespace: string) {\n\tconst parent_element = parent.find_nearest(/^Element/);\n\n\tif (!parent_element) {\n\t\treturn explicit_namespace || (svg.test(element.name)\n\t\t\t? namespaces.svg\n\t\t\t: null);\n\t}\n\n\tif (svg.test(element.name.toLowerCase())) return namespaces.svg;\n\tif (parent_element.name.toLowerCase() === 'foreignobject') return null;\n\n\treturn parent_element.namespace;\n}\n\nexport default class Element extends Node {\n\ttype: 'Element';\n\tname: string;\n\tscope: TemplateScope;\n\tattributes: Attribute[] = [];\n\tactions: Action[] = [];\n\tbindings: Binding[] = [];\n\tclasses: Class[] = [];\n\thandlers: EventHandler[] = [];\n\tlets: Let[] = [];\n\tintro?: Transition = null;\n\toutro?: Transition = null;\n\tanimation?: Animation = null;\n\tchildren: INode[];\n\tnamespace: string;\n\tneeds_manual_style_scoping: boolean;\n\n\tconstructor(component: Component, parent, scope, info: any) {\n\t\tsuper(component, parent, scope, info);\n\t\tthis.name = info.name;\n\n\t\tthis.namespace = get_namespace(parent, this, component.namespace);\n\n\t\tif (this.name === 'textarea') {\n\t\t\tif (info.children.length > 0) {\n\t\t\t\tconst value_attribute = info.attributes.find(node => node.name === 'value');\n\t\t\t\tif (value_attribute) {\n\t\t\t\t\tcomponent.error(value_attribute, {\n\t\t\t\t\t\tcode: 'textarea-duplicate-value',\n\t\t\t\t\t\tmessage: 'A <textarea> can have either a value attribute or (equivalently) child content, but not both'\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// this is an egregious hack, but it's the easiest way to get <textarea>\n\t\t\t\t// children treated the same way as a value attribute\n\t\t\t\tinfo.attributes.push({\n\t\t\t\t\ttype: 'Attribute',\n\t\t\t\t\tname: 'value',\n\t\t\t\t\tvalue: info.children\n\t\t\t\t});\n\n\t\t\t\tinfo.children = [];\n\t\t\t}\n\t\t}\n\n\t\tif (this.name === 'option') {\n\t\t\t// Special case — treat these the same way:\n\t\t\t// <option>{foo}</option>\n\t\t\t// <option value={foo}>{foo}</option>\n\t\t\tconst value_attribute = info.attributes.find(attribute => attribute.name === 'value');\n\n\t\t\tif (!value_attribute) {\n\t\t\t\tinfo.attributes.push({\n\t\t\t\t\ttype: 'Attribute',\n\t\t\t\t\tname: 'value',\n\t\t\t\t\tvalue: info.children,\n\t\t\t\t\tsynthetic: true\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tconst has_let = info.attributes.some(node => node.type === 'Let');\n\t\tif (has_let) {\n\t\t\tscope = scope.child();\n\t\t}\n\n\t\t// Binding relies on Attribute, defer its evaluation\n\t\tconst order = ['Binding']; // everything else is -1\n\t\tinfo.attributes.sort((a, b) => order.indexOf(a.type) - order.indexOf(b.type));\n\n\t\tinfo.attributes.forEach(node => {\n\t\t\tswitch (node.type) {\n\t\t\t\tcase 'Action':\n\t\t\t\t\tthis.actions.push(new Action(component, this, scope, node));\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Attribute':\n\t\t\t\tcase 'Spread':\n\t\t\t\t\t// special case\n\t\t\t\t\tif (node.name === 'xmlns') this.namespace = node.value[0].data;\n\n\t\t\t\t\tthis.attributes.push(new Attribute(component, this, scope, node));\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Binding':\n\t\t\t\t\tthis.bindings.push(new Binding(component, this, scope, node));\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Class':\n\t\t\t\t\tthis.classes.push(new Class(component, this, scope, node));\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'EventHandler':\n\t\t\t\t\tthis.handlers.push(new EventHandler(component, this, scope, node));\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Let': {\n\t\t\t\t\tconst l = new Let(component, this, scope, node);\n\t\t\t\t\tthis.lets.push(l);\n\t\t\t\t\tconst dependencies = new Set([l.name.name]);\n\n\t\t\t\t\tl.names.forEach(name => {\n\t\t\t\t\t\tscope.add(name, dependencies, this);\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase 'Transition':\n\t\t\t\t{\n\t\t\t\t\tconst transition = new Transition(component, this, scope, node);\n\t\t\t\t\tif (node.intro) this.intro = transition;\n\t\t\t\t\tif (node.outro) this.outro = transition;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase 'Animation':\n\t\t\t\t\tthis.animation = new Animation(component, this, scope, node);\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error(`Not implemented: ${node.type}`);\n\t\t\t}\n\t\t});\n\n\t\tthis.scope = scope;\n\t\tthis.children = map_children(component, this, this.scope, info.children);\n\n\t\tthis.validate();\n\n\t\tcomponent.apply_stylesheet(this);\n\t}\n\n\tvalidate() {\n\t\tif (this.component.var_lookup.has(this.name) && this.component.var_lookup.get(this.name).imported) {\n\t\t\tthis.component.warn(this, {\n\t\t\t\tcode: 'component-name-lowercase',\n\t\t\t\tmessage: `<${this.name}> will be treated as an HTML element unless it begins with a capital letter`\n\t\t\t});\n\t\t}\n\n\t\tif (a11y_distracting_elements.has(this.name)) {\n\t\t\t// no-distracting-elements\n\t\t\tthis.component.warn(this, {\n\t\t\t\tcode: 'a11y-distracting-elements',\n\t\t\t\tmessage: `A11y: Avoid <${this.name}> elements`\n\t\t\t});\n\t\t}\n\n\t\tif (this.name === 'figcaption') {\n\t\t\tlet { parent } = this;\n\t\t\tlet is_figure_parent = false;\n\n\t\t\twhile (parent) {\n\t\t\t\tif ((parent as Element).name === 'figure') {\n\t\t\t\t\tis_figure_parent = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (parent.type === 'Element') {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tparent = parent.parent;\n\t\t\t}\n\n\t\t\tif (!is_figure_parent) {\n\t\t\t\tthis.component.warn(this, {\n\t\t\t\t\tcode: 'a11y-structure',\n\t\t\t\t\tmessage: 'A11y: <figcaption> must be an immediate child of <figure>'\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (this.name === 'figure') {\n\t\t\tconst children = this.children.filter(node => {\n\t\t\t\tif (node.type === 'Comment') return false;\n\t\t\t\tif (node.type === 'Text') return /\\S/.test(node.data);\n\t\t\t\treturn true;\n\t\t\t});\n\n\t\t\tconst index = children.findIndex(child => (child as Element).name === 'figcaption');\n\n\t\t\tif (index !== -1 && (index !== 0 && index !== children.length - 1)) {\n\t\t\t\tthis.component.warn(children[index], {\n\t\t\t\t\tcode: 'a11y-structure',\n\t\t\t\t\tmessage: 'A11y: <figcaption> must be first or last child of <figure>'\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tthis.validate_attributes();\n\t\tthis.validate_special_cases();\n\t\tthis.validate_bindings();\n\t\tthis.validate_content();\n\t\tthis.validate_event_handlers();\n\t}\n\n\tvalidate_attributes() {\n\t\tconst { component, parent } = this;\n\n\t\tconst attribute_map = new Map();\n\n\t\tthis.attributes.forEach(attribute => {\n\t\t\tif (attribute.is_spread) return;\n\n\t\t\tconst name = attribute.name.toLowerCase();\n\n\t\t\t// aria-props\n\t\t\tif (name.startsWith('aria-')) {\n\t\t\t\tif (invisible_elements.has(this.name)) {\n\t\t\t\t\t// aria-unsupported-elements\n\t\t\t\t\tcomponent.warn(attribute, {\n\t\t\t\t\t\tcode: 'a11y-aria-attributes',\n\t\t\t\t\t\tmessage: `A11y: <${this.name}> should not have aria-* attributes`\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconst type = name.slice(5);\n\t\t\t\tif (!aria_attribute_set.has(type)) {\n\t\t\t\t\tconst match = fuzzymatch(type, aria_attributes);\n\t\t\t\t\tlet message = `A11y: Unknown aria attribute 'aria-${type}'`;\n\t\t\t\t\tif (match) message += ` (did you mean '${match}'?)`;\n\n\t\t\t\t\tcomponent.warn(attribute, {\n\t\t\t\t\t\tcode: 'a11y-unknown-aria-attribute',\n\t\t\t\t\t\tmessage\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (name === 'aria-hidden' && /^h[1-6]$/.test(this.name)) {\n\t\t\t\t\tcomponent.warn(attribute, {\n\t\t\t\t\t\tcode: 'a11y-hidden',\n\t\t\t\t\t\tmessage: `A11y: <${this.name}> element should not be hidden`\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// aria-role\n\t\t\tif (name === 'role') {\n\t\t\t\tif (invisible_elements.has(this.name)) {\n\t\t\t\t\t// aria-unsupported-elements\n\t\t\t\t\tcomponent.warn(attribute, {\n\t\t\t\t\t\tcode: 'a11y-misplaced-role',\n\t\t\t\t\t\tmessage: `A11y: <${this.name}> should not have role attribute`\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconst value = attribute.get_static_value();\n\t\t\t\t// @ts-ignore\n\t\t\t\tif (value && !aria_role_set.has(value)) {\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tconst match = fuzzymatch(value, aria_roles);\n\t\t\t\t\tlet message = `A11y: Unknown role '${value}'`;\n\t\t\t\t\tif (match) message += ` (did you mean '${match}'?)`;\n\n\t\t\t\t\tcomponent.warn(attribute, {\n\t\t\t\t\t\tcode: 'a11y-unknown-role',\n\t\t\t\t\t\tmessage\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// no-access-key\n\t\t\tif (name === 'accesskey') {\n\t\t\t\tcomponent.warn(attribute, {\n\t\t\t\t\tcode: 'a11y-accesskey',\n\t\t\t\t\tmessage: 'A11y: Avoid using accesskey'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// no-autofocus\n\t\t\tif (name === 'autofocus') {\n\t\t\t\tcomponent.warn(attribute, {\n\t\t\t\t\tcode: 'a11y-autofocus',\n\t\t\t\t\tmessage: 'A11y: Avoid using autofocus'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// scope\n\t\t\tif (name === 'scope' && this.name !== 'th') {\n\t\t\t\tcomponent.warn(attribute, {\n\t\t\t\t\tcode: 'a11y-misplaced-scope',\n\t\t\t\t\tmessage: 'A11y: The scope attribute should only be used with <th> elements'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// tabindex-no-positive\n\t\t\tif (name === 'tabindex') {\n\t\t\t\tconst value = attribute.get_static_value();\n\t\t\t\t// @ts-ignore todo is tabindex=true correct case?\n\t\t\t\tif (!isNaN(value) && +value > 0) {\n\t\t\t\t\tcomponent.warn(attribute, {\n\t\t\t\t\t\tcode: 'a11y-positive-tabindex',\n\t\t\t\t\t\tmessage: 'A11y: avoid tabindex values above zero'\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\n\t\t\tif (/(^[0-9-.])|[\\^$@%&#?!|()[\\]{}^*+~;]/.test(name)) {\n\t\t\t\tcomponent.error(attribute, {\n\t\t\t\t\tcode: 'illegal-attribute',\n\t\t\t\t\tmessage: `'${name}' is not a valid attribute name`\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (name === 'slot') {\n\t\t\t\tif (!attribute.is_static) {\n\t\t\t\t\tcomponent.error(attribute, {\n\t\t\t\t\t\tcode: 'invalid-slot-attribute',\n\t\t\t\t\t\tmessage: 'slot attribute cannot have a dynamic value'\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (component.slot_outlets.has(name)) {\n\t\t\t\t\tcomponent.error(attribute, {\n\t\t\t\t\t\tcode: 'duplicate-slot-attribute',\n\t\t\t\t\t\tmessage: `Duplicate '${name}' slot`\n\t\t\t\t\t});\n\n\t\t\t\t\tcomponent.slot_outlets.add(name);\n\t\t\t\t}\n\n\t\t\t\tif (!(parent.type === 'InlineComponent' || within_custom_element(parent))) {\n\t\t\t\t\tcomponent.error(attribute, {\n\t\t\t\t\t\tcode: 'invalid-slotted-content',\n\t\t\t\t\t\tmessage: 'Element with a slot=\\'...\\' attribute must be a child of a component or a descendant of a custom element'\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (name === 'is') {\n\t\t\t\tcomponent.warn(attribute, {\n\t\t\t\t\tcode: 'avoid-is',\n\t\t\t\t\tmessage: 'The \\'is\\' attribute is not supported cross-browser and should be avoided'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tattribute_map.set(attribute.name, attribute);\n\t\t});\n\t}\n\n\tvalidate_special_cases() {\n\t\tconst { component, attributes, handlers } = this;\n\t\tconst attribute_map = new Map();\n\t\tconst handlers_map = new Map();\n\n\t\tattributes.forEach(attribute => (\n\t\t\tattribute_map.set(attribute.name, attribute)\n\t\t));\n\n\t\thandlers.forEach(handler => (\n\t\t\thandlers_map.set(handler.name, handler)\n\t\t));\n\n\t\tif (this.name === 'a') {\n\t\t\tconst href_attribute = attribute_map.get('href') || attribute_map.get('xlink:href');\n\t\t\tconst id_attribute = attribute_map.get('id');\n\t\t\tconst name_attribute = attribute_map.get('name');\n\n\t\t\tif (href_attribute) {\n\t\t\t\tconst href_value = href_attribute.get_static_value();\n\n\t\t\t\tif (href_value === '' || href_value === '#' || /^\\W*javascript:/i.test(href_value)) {\n\t\t\t\t\tcomponent.warn(href_attribute, {\n\t\t\t\t\t\tcode: 'a11y-invalid-attribute',\n\t\t\t\t\t\tmessage: `A11y: '${href_value}' is not a valid ${href_attribute.name} attribute`\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst id_attribute_valid = id_attribute && id_attribute.get_static_value() !== '';\n\t\t\t\tconst name_attribute_valid = name_attribute && name_attribute.get_static_value() !== '';\n\n\t\t\t\tif (!id_attribute_valid && !name_attribute_valid) {\n\t\t\t\t\tcomponent.warn(this, {\n\t\t\t\t\t\tcode: 'a11y-missing-attribute',\n\t\t\t\t\t\tmessage: 'A11y: <a> element should have an href attribute'\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tconst required_attributes = a11y_required_attributes[this.name];\n\t\t\tif (required_attributes) {\n\t\t\t\tconst has_attribute = required_attributes.some(name => attribute_map.has(name));\n\n\t\t\t\tif (!has_attribute) {\n\t\t\t\t\tshould_have_attribute(this, required_attributes);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (this.name === 'input') {\n\t\t\tconst type = attribute_map.get('type');\n\t\t\tif (type && type.get_static_value() === 'image') {\n\t\t\t\tconst required_attributes = ['alt', 'aria-label', 'aria-labelledby'];\n\t\t\t\tconst has_attribute = required_attributes.some(name => attribute_map.has(name));\n\n\t\t\t\tif (!has_attribute) {\n\t\t\t\t\tshould_have_attribute(this, required_attributes, 'input type=\"image\"');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (this.name === 'img') {\n\t\t\tconst alt_attribute = attribute_map.get('alt');\n\t\t\tconst aria_hidden_attribute = attribute_map.get('aria-hidden');\n\n\t\t\tconst aria_hidden_exist = aria_hidden_attribute && aria_hidden_attribute.get_static_value();\n\n\t\t\tif (alt_attribute && !aria_hidden_exist) {\n\t\t\t\tconst alt_value = alt_attribute.get_static_value();\n\n\t\t\t\tif (/\\b(image|picture|photo)\\b/i.test(alt_value)) {\n\t\t\t\t\tcomponent.warn(this, {\n\t\t\t\t\t\tcode: 'a11y-img-redundant-alt',\n\t\t\t\t\t\tmessage: 'A11y: Screenreaders already announce <img> elements as an image.'\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (this.name === 'label') {\n\t\t\tconst has_input_child = this.children.some(i => (i instanceof Element && a11y_labelable.has(i.name) ));\n\t\t\tif (!attribute_map.has('for') && !has_input_child) {\n\t\t\t\tcomponent.warn(this, {\n\t\t\t\t\tcode: 'a11y-label-has-associated-control',\n\t\t\t\t\tmessage: 'A11y: A form label must be associated with a control.'\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (this.is_media_node()) {\n\t\t\tif (attribute_map.has('muted')) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet has_caption;\n\t\t\tconst track = this.children.find((i: Element) => i.name === 'track');\n\t\t\tif (track) {\n\t\t\t\thas_caption = track.attributes.find(a => a.name === 'kind' && a.get_static_value() === 'captions');\n\t\t\t}\n\n\t\t\tif (!has_caption) {\n\t\t\t\tcomponent.warn(this, {\n\t\t\t\t\tcode: 'a11y-media-has-caption',\n\t\t\t\t\tmessage: 'A11y: Media elements must have a <track kind=\"captions\">'\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (a11y_no_onchange.has(this.name)) {\n\t\t\tif (handlers_map.has('change') && !handlers_map.has('blur')) {\n\t\t\t\tcomponent.warn(this, {\n\t\t\t\t\tcode: 'a11y-no-onchange',\n\t\t\t\t\tmessage: 'A11y: on:blur must be used instead of on:change, unless absolutely necessary and it causes no negative consequences for keyboard only or screen reader users.'\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tvalidate_bindings() {\n\t\tconst { component } = this;\n\n\t\tconst check_type_attribute = () => {\n\t\t\tconst attribute = this.attributes.find(\n\t\t\t\t(attribute: Attribute) => attribute.name === 'type'\n\t\t\t);\n\n\t\t\tif (!attribute) return null;\n\n\t\t\tif (!attribute.is_static) {\n\t\t\t\tcomponent.error(attribute, {\n\t\t\t\t\tcode: 'invalid-type',\n\t\t\t\t\tmessage: '\\'type\\' attribute cannot be dynamic if input uses two-way binding'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst value = attribute.get_static_value();\n\n\t\t\tif (value === true) {\n\t\t\t\tcomponent.error(attribute, {\n\t\t\t\t\tcode: 'missing-type',\n\t\t\t\t\tmessage: '\\'type\\' attribute must be specified'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn value;\n\t\t};\n\n\t\tthis.bindings.forEach(binding => {\n\t\t\tconst { name } = binding;\n\n\t\t\tif (name === 'value') {\n\t\t\t\tif (\n\t\t\t\t\tthis.name !== 'input' &&\n\t\t\t\t\tthis.name !== 'textarea' &&\n\t\t\t\t\tthis.name !== 'select'\n\t\t\t\t) {\n\t\t\t\t\tcomponent.error(binding, {\n\t\t\t\t\t\tcode: 'invalid-binding',\n\t\t\t\t\t\tmessage: `'value' is not a valid binding on <${this.name}> elements`\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (this.name === 'select') {\n\t\t\t\t\tconst attribute = this.attributes.find(\n\t\t\t\t\t\t(attribute: Attribute) => attribute.name === 'multiple'\n\t\t\t\t\t);\n\n\t\t\t\t\tif (attribute && !attribute.is_static) {\n\t\t\t\t\t\tcomponent.error(attribute, {\n\t\t\t\t\t\t\tcode: 'dynamic-multiple-attribute',\n\t\t\t\t\t\t\tmessage: '\\'multiple\\' attribute cannot be dynamic if select uses two-way binding'\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcheck_type_attribute();\n\t\t\t\t}\n\t\t\t} else if (name === 'checked' || name === 'indeterminate') {\n\t\t\t\tif (this.name !== 'input') {\n\t\t\t\t\tcomponent.error(binding, {\n\t\t\t\t\t\tcode: 'invalid-binding',\n\t\t\t\t\t\tmessage: `'${name}' is not a valid binding on <${this.name}> elements`\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconst type = check_type_attribute();\n\n\t\t\t\tif (type !== 'checkbox') {\n\t\t\t\t\tlet message = `'${name}' binding can only be used with <input type=\"checkbox\">`;\n\t\t\t\t\tif (type === 'radio') message += ' — for <input type=\"radio\">, use \\'group\\' binding';\n\t\t\t\t\tcomponent.error(binding, { code: 'invalid-binding', message });\n\t\t\t\t}\n\t\t\t} else if (name === 'group') {\n\t\t\t\tif (this.name !== 'input') {\n\t\t\t\t\tcomponent.error(binding, {\n\t\t\t\t\t\tcode: 'invalid-binding',\n\t\t\t\t\t\tmessage: `'group' is not a valid binding on <${this.name}> elements`\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconst type = check_type_attribute();\n\n\t\t\t\tif (type !== 'checkbox' && type !== 'radio') {\n\t\t\t\t\tcomponent.error(binding, {\n\t\t\t\t\t\tcode: 'invalid-binding',\n\t\t\t\t\t\tmessage: '\\'group\\' binding can only be used with <input type=\"checkbox\"> or <input type=\"radio\">'\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else if (name === 'files') {\n\t\t\t\tif (this.name !== 'input') {\n\t\t\t\t\tcomponent.error(binding, {\n\t\t\t\t\t\tcode: 'invalid-binding',\n\t\t\t\t\t\tmessage: `'files' is not a valid binding on <${this.name}> elements`\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconst type = check_type_attribute();\n\n\t\t\t\tif (type !== 'file') {\n\t\t\t\t\tcomponent.error(binding, {\n\t\t\t\t\t\tcode: 'invalid-binding',\n\t\t\t\t\t\tmessage: '\\'files\\' binding can only be used with <input type=\"file\">'\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t} else if (name === 'open') {\n\t\t\t\tif (this.name !== 'details') {\n\t\t\t\t\tcomponent.error(binding, {\n\t\t\t\t\t\tcode: 'invalid-binding',\n\t\t\t\t\t\tmessage: `'${name}' binding can only be used with <details>`\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else if (\n\t\t\t\tname === 'currentTime' ||\n\t\t\t\tname === 'duration' ||\n\t\t\t\tname === 'paused' ||\n\t\t\t\tname === 'buffered' ||\n\t\t\t\tname === 'seekable' ||\n\t\t\t\tname === 'played' ||\n\t\t\t\tname === 'volume' ||\n\t\t\t\tname === 'muted' ||\n\t\t\t\tname === 'playbackRate' ||\n\t\t\t\tname === 'seeking' ||\n\t\t\t\tname === 'ended'\n\t\t\t) {\n\t\t\t\tif (this.name !== 'audio' && this.name !== 'video') {\n\t\t\t\t\tcomponent.error(binding, {\n\t\t\t\t\t\tcode: 'invalid-binding',\n\t\t\t\t\t\tmessage: `'${name}' binding can only be used with <audio> or <video>`\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else if (\n\t\t\t\tname === 'videoHeight' ||\n\t\t\t\tname === 'videoWidth'\n\t\t\t) {\n\t\t\t\tif (this.name !== 'video') {\n\t\t\t\t\tcomponent.error(binding, {\n\t\t\t\t\t\tcode: 'invalid-binding',\n\t\t\t\t\t\tmessage: `'${name}' binding can only be used with <video>`\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else if (dimensions.test(name)) {\n\t\t\t\tif (this.name === 'svg' && (name === 'offsetWidth' || name === 'offsetHeight')) {\n\t\t\t\t\tcomponent.error(binding, {\n\t\t\t\t\t\tcode: 'invalid-binding',\n\t\t\t\t\t\tmessage: `'${binding.name}' is not a valid binding on <svg>. Use '${name.replace('offset', 'client')}' instead`\n\t\t\t\t\t});\n\t\t\t\t} else if (svg.test(this.name)) {\n\t\t\t\t\tcomponent.error(binding, {\n\t\t\t\t\t\tcode: 'invalid-binding',\n\t\t\t\t\t\tmessage: `'${binding.name}' is not a valid binding on SVG elements`\n\t\t\t\t\t});\n\t\t\t\t} else if (is_void(this.name)) {\n\t\t\t\t\tcomponent.error(binding, {\n\t\t\t\t\t\tcode: 'invalid-binding',\n\t\t\t\t\t\tmessage: `'${binding.name}' is not a valid binding on void elements like <${this.name}>. Use a wrapper element instead`\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else if (\n\t\t\t\tname === 'textContent' ||\n\t\t\t\tname === 'innerHTML'\n\t\t\t) {\n\t\t\t\tconst contenteditable = this.attributes.find(\n\t\t\t\t\t(attribute: Attribute) => attribute.name === 'contenteditable'\n\t\t\t\t);\n\n\t\t\t\tif (!contenteditable) {\n\t\t\t\t\tcomponent.error(binding, {\n\t\t\t\t\t\tcode: 'missing-contenteditable-attribute',\n\t\t\t\t\t\tmessage: '\\'contenteditable\\' attribute is required for textContent and innerHTML two-way bindings'\n\t\t\t\t\t});\n\t\t\t\t} else if (contenteditable && !contenteditable.is_static) {\n\t\t\t\t\tcomponent.error(contenteditable, {\n\t\t\t\t\t\tcode: 'dynamic-contenteditable-attribute',\n\t\t\t\t\t\tmessage: '\\'contenteditable\\' attribute cannot be dynamic if element uses two-way binding'\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else if (name !== 'this') {\n\t\t\t\tcomponent.error(binding, {\n\t\t\t\t\tcode: 'invalid-binding',\n\t\t\t\t\tmessage: `'${binding.name}' is not a valid binding`\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tvalidate_content() {\n\t\tif (!a11y_required_content.has(this.name)) return;\n\t\tif (\n\t\t\tthis.bindings\n\t\t\t\t.some((binding) => ['textContent', 'innerHTML'].includes(binding.name))\n\t\t) return;\n\n\t\tif (this.children.length === 0) {\n\t\t\tthis.component.warn(this, {\n\t\t\t\tcode: 'a11y-missing-content',\n\t\t\t\tmessage: `A11y: <${this.name}> element should have child content`\n\t\t\t});\n\t\t}\n\t}\n\n\tvalidate_event_handlers() {\n\t\tconst { component } = this;\n\n\t\tthis.handlers.forEach(handler => {\n\t\t\tif (handler.modifiers.has('passive') && handler.modifiers.has('preventDefault')) {\n\t\t\t\tcomponent.error(handler, {\n\t\t\t\t\tcode: 'invalid-event-modifier',\n\t\t\t\t\tmessage: 'The \\'passive\\' and \\'preventDefault\\' modifiers cannot be used together'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (handler.modifiers.has('passive') && handler.modifiers.has('nonpassive')) {\n\t\t\t\tcomponent.error(handler, {\n\t\t\t\t\tcode: 'invalid-event-modifier',\n\t\t\t\t\tmessage: 'The \\'passive\\' and \\'nonpassive\\' modifiers cannot be used together'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\thandler.modifiers.forEach(modifier => {\n\t\t\t\tif (!valid_modifiers.has(modifier)) {\n\t\t\t\t\tcomponent.error(handler, {\n\t\t\t\t\t\tcode: 'invalid-event-modifier',\n\t\t\t\t\t\tmessage: `Valid event modifiers are ${list(Array.from(valid_modifiers))}`\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (modifier === 'passive') {\n\t\t\t\t\tif (passive_events.has(handler.name)) {\n\t\t\t\t\t\tif (handler.can_make_passive) {\n\t\t\t\t\t\t\tcomponent.warn(handler, {\n\t\t\t\t\t\t\t\tcode: 'redundant-event-modifier',\n\t\t\t\t\t\t\t\tmessage: 'Touch event handlers that don\\'t use the \\'event\\' object are passive by default'\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcomponent.warn(handler, {\n\t\t\t\t\t\t\tcode: 'redundant-event-modifier',\n\t\t\t\t\t\t\tmessage: 'The passive modifier only works with wheel and touch events'\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (component.compile_options.legacy && (modifier === 'once' || modifier === 'passive')) {\n\t\t\t\t\t// TODO this could be supported, but it would need a few changes to\n\t\t\t\t\t// how event listeners work\n\t\t\t\t\tcomponent.error(handler, {\n\t\t\t\t\t\tcode: 'invalid-event-modifier',\n\t\t\t\t\t\tmessage: `The '${modifier}' modifier cannot be used in legacy mode`\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (passive_events.has(handler.name) && handler.can_make_passive && !handler.modifiers.has('preventDefault') && !handler.modifiers.has('nonpassive')) {\n\t\t\t\t// touch/wheel events should be passive by default\n\t\t\t\thandler.modifiers.add('passive');\n\t\t\t}\n\t\t});\n\t}\n\n\tis_media_node() {\n\t\treturn this.name === 'audio' || this.name === 'video';\n\t}\n\n\tadd_css_class() {\n\t\tif (this.attributes.some(attr => attr.is_spread)) {\n\t\t\tthis.needs_manual_style_scoping = true;\n\t\t\treturn;\n\t\t}\n\n\t\tconst { id } = this.component.stylesheet;\n\n\t\tconst class_attribute = this.attributes.find(a => a.name === 'class');\n\n\t\tif (class_attribute && !class_attribute.is_true) {\n\t\t\tif (class_attribute.chunks.length === 1 && class_attribute.chunks[0].type === 'Text') {\n\t\t\t\t(class_attribute.chunks[0] as Text).data += ` ${id}`;\n\t\t\t} else {\n\t\t\t\t(class_attribute.chunks as Node[]).push(\n\t\t\t\t\tnew Text(this.component, this, this.scope, {\n\t\t\t\t\t\ttype: 'Text',\n\t\t\t\t\t\tdata: ` ${id}`,\n\t\t\t\t\t\tsynthetic: true\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.attributes.push(\n\t\t\t\tnew Attribute(this.component, this, this.scope, {\n\t\t\t\t\ttype: 'Attribute',\n\t\t\t\t\tname: 'class',\n\t\t\t\t\tvalue: [{ type: 'Text', data: id, synthetic: true }]\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t}\n}\n\nfunction should_have_attribute(\n\tnode,\n\tattributes: string[],\n\tname = node.name\n) {\n\tconst article = /^[aeiou]/.test(attributes[0]) ? 'an' : 'a';\n\tconst sequence = attributes.length > 1 ?\n\t\tattributes.slice(0, -1).join(', ') + ` or ${attributes[attributes.length - 1]}` :\n\t\tattributes[0];\n\n\tnode.component.warn(node, {\n\t\tcode: 'a11y-missing-attribute',\n\t\tmessage: `A11y: <${name}> element should have ${article} ${sequence} attribute`\n\t});\n}\n\nfunction within_custom_element(parent: INode) {\n\twhile (parent) {\n\t\tif (parent.type === 'InlineComponent') return false;\n\t\tif (parent.type === 'Element' && /-/.test(parent.name)) return true;\n\t\tparent = parent.parent;\n\t}\n\treturn false;\n}\n","import Node from './shared/Node';\nimport map_children from './shared/map_children';\nimport hash from '../utils/hash';\n\nexport default class Head extends Node {\n\ttype: 'Head';\n\tchildren: any[]; // TODO\n\tid: string;\n\n\tconstructor(component, parent, scope, info) {\n\t\tsuper(component, parent, scope, info);\n\n\t\tif (info.attributes.length) {\n\t\t\tcomponent.error(info.attributes[0], {\n\t\t\t\tcode: 'invalid-attribute',\n\t\t\t\tmessage: '<svelte:head> should not have any attributes or directives'\n\t\t\t});\n\t\t}\n\n\t\tthis.children = map_children(component, parent, scope, info.children.filter(child => {\n\t\t\treturn (child.type !== 'Text' || /\\S/.test(child.data));\n\t\t}));\n\n\t\tif (this.children.length > 0) {\n\t\t\tthis.id = `svelte-${hash(this.component.source.slice(this.start, this.end))}`;\n\t\t}\n\t}\n}\n","import ElseBlock from './ElseBlock';\nimport Expression from './shared/Expression';\nimport map_children from './shared/map_children';\nimport AbstractBlock from './shared/AbstractBlock';\n\nexport default class IfBlock extends AbstractBlock {\n\ttype: 'IfBlock';\n\texpression: Expression;\n\telse: ElseBlock;\n\n\tconstructor(component, parent, scope, info) {\n\t\tsuper(component, parent, scope, info);\n\n\t\tthis.expression = new Expression(component, this, scope, info.expression);\n\t\tthis.children = map_children(component, this, scope, info.children);\n\n\t\tthis.else = info.else\n\t\t\t? new ElseBlock(component, this, scope, info.else)\n\t\t\t: null;\n\n\t\tthis.warn_if_empty_block();\n\t}\n}\n","import Node from './shared/Node';\nimport Attribute from './Attribute';\nimport map_children from './shared/map_children';\nimport Binding from './Binding';\nimport EventHandler from './EventHandler';\nimport Expression from './shared/Expression';\nimport Component from '../Component';\nimport Let from './Let';\nimport TemplateScope from './shared/TemplateScope';\nimport { INode } from './interfaces';\n\nexport default class InlineComponent extends Node {\n\ttype: 'InlineComponent';\n\tname: string;\n\texpression: Expression;\n\tattributes: Attribute[] = [];\n\tbindings: Binding[] = [];\n\thandlers: EventHandler[] = [];\n\tlets: Let[] = [];\n\tchildren: INode[];\n\tscope: TemplateScope;\n\n\tconstructor(component: Component, parent, scope, info) {\n\t\tsuper(component, parent, scope, info);\n\n\t\tif (info.name !== 'svelte:component' && info.name !== 'svelte:self') {\n\t\t\tconst name = info.name.split('.')[0]; // accommodate namespaces\n\t\t\tcomponent.warn_if_undefined(name, info, scope);\n\t\t\tcomponent.add_reference(name);\n\t\t}\n\n\t\tthis.name = info.name;\n\n\t\tthis.expression = this.name === 'svelte:component'\n\t\t\t? new Expression(component, this, scope, info.expression)\n\t\t\t: null;\n\n\t\tinfo.attributes.forEach(node => {\n\t\t\t/* eslint-disable no-fallthrough */\n\t\t\tswitch (node.type) {\n\t\t\t\tcase 'Action':\n\t\t\t\t\tcomponent.error(node, {\n\t\t\t\t\t\tcode: 'invalid-action',\n\t\t\t\t\t\tmessage: 'Actions can only be applied to DOM elements, not components'\n\t\t\t\t\t});\n\n\t\t\t\tcase 'Attribute':\n\t\t\t\t\tif (node.name === 'slot') {\n\t\t\t\t\t\tcomponent.error(node, {\n\t\t\t\t\t\t\tcode: 'invalid-prop',\n\t\t\t\t\t\t\tmessage: \"'slot' is reserved for future use in named slots\"\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\t// fallthrough\n\t\t\t\tcase 'Spread':\n\t\t\t\t\tthis.attributes.push(new Attribute(component, this, scope, node));\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Binding':\n\t\t\t\t\tthis.bindings.push(new Binding(component, this, scope, node));\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Class':\n\t\t\t\t\tcomponent.error(node, {\n\t\t\t\t\t\tcode: 'invalid-class',\n\t\t\t\t\t\tmessage: 'Classes can only be applied to DOM elements, not components'\n\t\t\t\t\t});\n\n\t\t\t\tcase 'EventHandler':\n\t\t\t\t\tthis.handlers.push(new EventHandler(component, this, scope, node));\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Let':\n\t\t\t\t\tthis.lets.push(new Let(component, this, scope, node));\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Transition':\n\t\t\t\t\tcomponent.error(node, {\n\t\t\t\t\t\tcode: 'invalid-transition',\n\t\t\t\t\t\tmessage: 'Transitions can only be applied to DOM elements, not components'\n\t\t\t\t\t});\n\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error(`Not implemented: ${node.type}`);\n\t\t\t}\n\t\t\t/* eslint-enable no-fallthrough */\n\t\t});\n\n\t\tif (this.lets.length > 0) {\n\t\t\tthis.scope = scope.child();\n\n\t\t\tthis.lets.forEach(l => {\n\t\t\t\tconst dependencies = new Set([l.name.name]);\n\n\t\t\t\tl.names.forEach(name => {\n\t\t\t\t\tthis.scope.add(name, dependencies, this);\n\t\t\t\t});\n\t\t\t});\n\t\t} else {\n\t\t\tthis.scope = scope;\n\t\t}\n\n\t\tthis.handlers.forEach(handler => {\n\t\t\thandler.modifiers.forEach(modifier => {\n\t\t\t\tif (modifier !== 'once') {\n\t\t\t\t\tcomponent.error(handler, {\n\t\t\t\t\t\tcode: 'invalid-event-modifier',\n\t\t\t\t\t\tmessage: \"Event modifiers other than 'once' can only be used on DOM elements\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tthis.children = map_children(component, this, this.scope, info.children);\n\t}\n}\n","import Expression from './shared/Expression';\nimport map_children from './shared/map_children';\nimport AbstractBlock from './shared/AbstractBlock';\n\nexport default class KeyBlock extends AbstractBlock {\n\ttype: 'KeyBlock';\n\n\texpression: Expression;\n\n\tconstructor(component, parent, scope, info) {\n\t\tsuper(component, parent, scope, info);\n\n\t\tthis.expression = new Expression(component, this, scope, info.expression);\n\n\t\tthis.children = map_children(component, this, scope, info.children);\n\n\t\tthis.warn_if_empty_block();\n\t}\n}\n","import Node from './Node';\nimport Expression from './Expression';\n\nexport default class Tag extends Node {\n\ttype: 'MustacheTag' | 'RawMustacheTag';\n\texpression: Expression;\n\tshould_cache: boolean;\n\n\tconstructor(component, parent, scope, info) {\n\t\tsuper(component, parent, scope, info);\n\t\tthis.expression = new Expression(component, this, scope, info.expression);\n\n\t\tthis.should_cache = (\n\t\t\tinfo.expression.type !== 'Identifier' ||\n\t\t\t(this.expression.dependencies.size && scope.names.has(info.expression.name))\n\t\t);\n\t}\n}\n","import Tag from './shared/Tag';\n\nexport default class MustacheTag extends Tag {\n\ttype: 'MustacheTag';\n}\n","import Node from './shared/Node';\n\nexport default class Options extends Node {\n\ttype: 'Options';\n}\n","import Tag from './shared/Tag';\n\nexport default class RawMustacheTag extends Tag {\n\ttype: 'RawMustacheTag'\n}\n","import Node from './shared/Node';\nimport Expression from './shared/Expression';\n\nexport default class DebugTag extends Node {\n\ttype: 'DebugTag';\n\texpressions: Expression[];\n\n\tconstructor(component, parent, scope, info) {\n\t\tsuper(component, parent, scope, info);\n\n\t\tthis.expressions = info.identifiers.map(node => {\n\t\t\treturn new Expression(component, parent, scope, node);\n\t\t});\n\t}\n}\n","import Element from './Element';\nimport Attribute from './Attribute';\nimport Component from '../Component';\nimport TemplateScope from './shared/TemplateScope';\nimport { INode } from './interfaces';\n\nexport default class Slot extends Element {\n\ttype: 'Element';\n\tname: string;\n\tchildren: INode[];\n\tslot_name: string;\n\tvalues: Map<string, Attribute> = new Map();\n\n\tconstructor(component: Component, parent: INode, scope: TemplateScope, info: any) {\n\t\tsuper(component, parent, scope, info);\n\n\t\tinfo.attributes.forEach(attr => {\n\t\t\tif (attr.type !== 'Attribute') {\n\t\t\t\tcomponent.error(attr, {\n\t\t\t\t\tcode: 'invalid-slot-directive',\n\t\t\t\t\tmessage: '<slot> cannot have directives'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (attr.name === 'name') {\n\t\t\t\tif (attr.value.length !== 1 || attr.value[0].type !== 'Text') {\n\t\t\t\t\tcomponent.error(attr, {\n\t\t\t\t\t\tcode: 'dynamic-slot-name',\n\t\t\t\t\t\tmessage: '<slot> name cannot be dynamic'\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tthis.slot_name = attr.value[0].data;\n\t\t\t\tif (this.slot_name === 'default') {\n\t\t\t\t\tcomponent.error(attr, {\n\t\t\t\t\t\tcode: 'invalid-slot-name',\n\t\t\t\t\t\tmessage: 'default is a reserved word — it cannot be used as a slot name'\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.values.set(attr.name, new Attribute(component, this, scope, attr));\n\t\t});\n\n\t\tif (!this.slot_name) this.slot_name = 'default';\n\n\t\tif (this.slot_name === 'default') {\n\t\t\t// if this is the default slot, add our dependencies to any\n\t\t\t// other slots (which inherit our slot values) that were\n\t\t\t// previously encountered\n\t\t\tcomponent.slots.forEach((slot) => {\n\t\t\t\tthis.values.forEach((attribute, name) => {\n\t\t\t\t\tif (!slot.values.has(name)) {\n\t\t\t\t\t\tslot.values.set(name, attribute);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t} else if (component.slots.has('default')) {\n\t\t\t// otherwise, go the other way — inherit values from\n\t\t\t// a previously encountered default slot\n\t\t\tconst default_slot = component.slots.get('default');\n\t\t\tdefault_slot.values.forEach((attribute, name) => {\n\t\t\t\tif (!this.values.has(name)) {\n\t\t\t\t\tthis.values.set(name, attribute);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tcomponent.slots.set(this.slot_name, this);\n\t}\n}\n","import Node from './shared/Node';\nimport map_children, { Children } from './shared/map_children';\nimport Component from '../Component';\n\nexport default class Title extends Node {\n\ttype: 'Title';\n\tchildren: Children;\n\tshould_cache: boolean;\n\n\tconstructor(component: Component, parent, scope, info) {\n\t\tsuper(component, parent, scope, info);\n\t\tthis.children = map_children(component, parent, scope, info.children);\n\n\t\tif (info.attributes.length > 0) {\n\t\t\tcomponent.error(info.attributes[0], {\n\t\t\t\tcode: 'illegal-attribute',\n\t\t\t\tmessage: '<title> cannot have attributes'\n\t\t\t});\n\t\t}\n\n\t\tinfo.children.forEach(child => {\n\t\t\tif (child.type !== 'Text' && child.type !== 'MustacheTag') {\n\t\t\t\tcomponent.error(child, {\n\t\t\t\t\tcode: 'illegal-structure',\n\t\t\t\t\tmessage: '<title> can only contain text and {tags}'\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tthis.should_cache = info.children.length === 1\n\t\t\t? (\n\t\t\t\tinfo.children[0].type !== 'Identifier' ||\n\t\t\t\tscope.names.has(info.children[0].name)\n\t\t\t)\n\t\t\t: true;\n\t}\n}\n","import Node from './shared/Node';\nimport Binding from './Binding';\nimport EventHandler from './EventHandler';\nimport flatten_reference from '../utils/flatten_reference';\nimport fuzzymatch from '../../utils/fuzzymatch';\nimport list from '../../utils/list';\nimport Action from './Action';\n\nconst valid_bindings = [\n\t'innerWidth',\n\t'innerHeight',\n\t'outerWidth',\n\t'outerHeight',\n\t'scrollX',\n\t'scrollY',\n\t'online'\n];\n\nexport default class Window extends Node {\n\ttype: 'Window';\n\thandlers: EventHandler[] = [];\n\tbindings: Binding[] = [];\n\tactions: Action[] = [];\n\n\tconstructor(component, parent, scope, info) {\n\t\tsuper(component, parent, scope, info);\n\n\t\tinfo.attributes.forEach(node => {\n\t\t\tif (node.type === 'EventHandler') {\n\t\t\t\tthis.handlers.push(new EventHandler(component, this, scope, node));\n\t\t\t} else if (node.type === 'Binding') {\n\t\t\t\tif (node.expression.type !== 'Identifier') {\n\t\t\t\t\tconst { parts } = flatten_reference(node.expression);\n\n\t\t\t\t\t// TODO is this constraint necessary?\n\t\t\t\t\tcomponent.error(node.expression, {\n\t\t\t\t\t\tcode: 'invalid-binding',\n\t\t\t\t\t\tmessage: `Bindings on <svelte:window> must be to top-level properties, e.g. '${parts[parts.length - 1]}' rather than '${parts.join('.')}'`\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (!~valid_bindings.indexOf(node.name)) {\n\t\t\t\t\tconst match = (\n\t\t\t\t\t\tnode.name === 'width' ? 'innerWidth' :\n\t\t\t\t\t\t\tnode.name === 'height' ? 'innerHeight' :\n\t\t\t\t\t\t\t\tfuzzymatch(node.name, valid_bindings)\n\t\t\t\t\t);\n\n\t\t\t\t\tconst message = `'${node.name}' is not a valid binding on <svelte:window>`;\n\n\t\t\t\t\tif (match) {\n\t\t\t\t\t\tcomponent.error(node, {\n\t\t\t\t\t\t\tcode: 'invalid-binding',\n\t\t\t\t\t\t\tmessage: `${message} (did you mean '${match}'?)`\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcomponent.error(node, {\n\t\t\t\t\t\t\tcode: 'invalid-binding',\n\t\t\t\t\t\t\tmessage: `${message} — valid bindings are ${list(valid_bindings)}`\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.bindings.push(new Binding(component, this, scope, node));\n\t\t\t} else if (node.type === 'Action') {\n\t\t\t\tthis.actions.push(new Action(component, this, scope, node));\n\t\t\t} else {\n\t\t\t\t// TODO there shouldn't be anything else here...\n\t\t\t}\n\t\t});\n\t}\n}\n","import AwaitBlock from '../AwaitBlock';\nimport Body from '../Body';\nimport Comment from '../Comment';\nimport EachBlock from '../EachBlock';\nimport Element from '../Element';\nimport Head from '../Head';\nimport IfBlock from '../IfBlock';\nimport InlineComponent from '../InlineComponent';\nimport KeyBlock from '../KeyBlock';\nimport MustacheTag from '../MustacheTag';\nimport Options from '../Options';\nimport RawMustacheTag from '../RawMustacheTag';\nimport DebugTag from '../DebugTag';\nimport Slot from '../Slot';\nimport Text from '../Text';\nimport Title from '../Title';\nimport Window from '../Window';\nimport { TemplateNode } from '../../../interfaces';\n\nexport type Children = ReturnType<typeof map_children>;\n\nfunction get_constructor(type) {\n\tswitch (type) {\n\t\tcase 'AwaitBlock': return AwaitBlock;\n\t\tcase 'Body': return Body;\n\t\tcase 'Comment': return Comment;\n\t\tcase 'EachBlock': return EachBlock;\n\t\tcase 'Element': return Element;\n\t\tcase 'Head': return Head;\n\t\tcase 'IfBlock': return IfBlock;\n\t\tcase 'InlineComponent': return InlineComponent;\n\t\tcase 'KeyBlock': return KeyBlock;\n\t\tcase 'MustacheTag': return MustacheTag;\n\t\tcase 'Options': return Options;\n\t\tcase 'RawMustacheTag': return RawMustacheTag;\n\t\tcase 'DebugTag': return DebugTag;\n\t\tcase 'Slot': return Slot;\n\t\tcase 'Text': return Text;\n\t\tcase 'Title': return Title;\n\t\tcase 'Window': return Window;\n\t\tdefault: throw new Error(`Not implemented: ${type}`);\n\t}\n}\n\nexport default function map_children(component, parent, scope, children: TemplateNode[]) {\n\tlet last = null;\n\tlet ignores = [];\n\n\treturn children.map(child => {\n\t\tconst constructor = get_constructor(child.type);\n\n\t\tconst use_ignores = child.type !== 'Text' && child.type !== 'Comment' && ignores.length;\n\n\t\tif (use_ignores) component.push_ignores(ignores);\n\t\tconst node = new constructor(component, parent, scope, child);\n\t\tif (use_ignores) component.pop_ignores(), ignores = [];\n\n\t\tif (node.type === 'Comment' && node.ignores.length) {\n\t\t\tignores.push(...node.ignores);\n\t\t}\n\n\t\tif (last) last.next = node;\n\t\tnode.prev = last;\n\t\tlast = node;\n\n\t\treturn node;\n\t});\n}\n","import EachBlock from '../EachBlock';\nimport ThenBlock from '../ThenBlock';\nimport CatchBlock from '../CatchBlock';\nimport InlineComponent from '../InlineComponent';\nimport Element from '../Element';\n\ntype NodeWithScope = EachBlock | ThenBlock | CatchBlock | InlineComponent | Element;\n\nexport default class TemplateScope {\n\tnames: Set<string>;\n\tdependencies_for_name: Map<string, Set<string>>;\n\towners: Map<string, NodeWithScope> = new Map();\n\tparent?: TemplateScope;\n\n\tconstructor(parent?: TemplateScope) {\n\t\tthis.parent = parent;\n\t\tthis.names = new Set(parent ? parent.names : []);\n\t\tthis.dependencies_for_name = new Map(parent ? parent.dependencies_for_name : []);\n\t}\n\n\tadd(name, dependencies: Set<string>, owner) {\n\t\tthis.names.add(name);\n\t\tthis.dependencies_for_name.set(name, dependencies);\n\t\tthis.owners.set(name, owner);\n\t\treturn this;\n\t}\n\n\tchild() {\n\t\tconst child = new TemplateScope(this);\n\t\treturn child;\n\t}\n\n\tis_top_level(name: string) {\n\t\treturn !this.parent || !this.names.has(name) && this.parent.is_top_level(name);\n\t}\n\n\tget_owner(name: string): NodeWithScope {\n\t\treturn this.owners.get(name) || (this.parent && this.parent.get_owner(name));\n\t}\n\n\tis_let(name: string) {\n\t\tconst owner = this.get_owner(name);\n\t\treturn owner && (owner.type === 'Element' || owner.type === 'InlineComponent');\n\t}\n\n\tis_await(name: string) {\n\t\tconst owner = this.get_owner(name);\n\t\treturn owner && (owner.type === 'ThenBlock' || owner.type === 'CatchBlock');\n\t}\n}\n","import Node from './shared/Node';\nimport Component from '../Component';\nimport map_children from './shared/map_children';\nimport Block from '../render_dom/Block';\nimport TemplateScope from './shared/TemplateScope';\nimport { INode } from './interfaces';\n\nexport default class Fragment extends Node {\n\ttype: 'Fragment';\n\tblock: Block;\n\tchildren: INode[];\n\tscope: TemplateScope;\n\n\tconstructor(component: Component, info: any) {\n\t\tconst scope = new TemplateScope();\n\t\tsuper(component, null, scope, info);\n\n\t\tthis.scope = scope;\n\t\tthis.children = map_children(component, this, scope, info.children);\n\t}\n}\n","// This file is automatically generated\nexport default new Set([\"HtmlTag\",\"SvelteComponent\",\"SvelteComponentDev\",\"SvelteElement\",\"action_destroyer\",\"add_attribute\",\"add_classes\",\"add_flush_callback\",\"add_location\",\"add_render_callback\",\"add_resize_listener\",\"add_transform\",\"afterUpdate\",\"append\",\"append_dev\",\"assign\",\"attr\",\"attr_dev\",\"attribute_to_object\",\"beforeUpdate\",\"bind\",\"binding_callbacks\",\"blank_object\",\"bubble\",\"check_outros\",\"children\",\"claim_component\",\"claim_element\",\"claim_space\",\"claim_text\",\"clear_loops\",\"component_subscribe\",\"compute_rest_props\",\"compute_slots\",\"createEventDispatcher\",\"create_animation\",\"create_bidirectional_transition\",\"create_component\",\"create_in_transition\",\"create_out_transition\",\"create_slot\",\"create_ssr_component\",\"current_component\",\"custom_event\",\"dataset_dev\",\"debug\",\"destroy_block\",\"destroy_component\",\"destroy_each\",\"detach\",\"detach_after_dev\",\"detach_before_dev\",\"detach_between_dev\",\"detach_dev\",\"dirty_components\",\"dispatch_dev\",\"each\",\"element\",\"element_is\",\"empty\",\"escape\",\"escaped\",\"exclude_internal_props\",\"fix_and_destroy_block\",\"fix_and_outro_and_destroy_block\",\"fix_position\",\"flush\",\"getContext\",\"get_binding_group_value\",\"get_current_component\",\"get_custom_elements_slots\",\"get_slot_changes\",\"get_slot_context\",\"get_spread_object\",\"get_spread_update\",\"get_store_value\",\"globals\",\"group_outros\",\"handle_promise\",\"has_prop\",\"identity\",\"init\",\"insert\",\"insert_dev\",\"intros\",\"invalid_attribute_name_character\",\"is_client\",\"is_crossorigin\",\"is_empty\",\"is_function\",\"is_promise\",\"listen\",\"listen_dev\",\"loop\",\"loop_guard\",\"missing_component\",\"mount_component\",\"noop\",\"not_equal\",\"now\",\"null_to_empty\",\"object_without_properties\",\"onDestroy\",\"onMount\",\"once\",\"outro_and_destroy_block\",\"prevent_default\",\"prop_dev\",\"query_selector_all\",\"raf\",\"run\",\"run_all\",\"safe_not_equal\",\"schedule_update\",\"select_multiple_value\",\"select_option\",\"select_options\",\"select_value\",\"self\",\"setContext\",\"set_attributes\",\"set_current_component\",\"set_custom_element_data\",\"set_data\",\"set_data_dev\",\"set_input_type\",\"set_input_value\",\"set_now\",\"set_raf\",\"set_store_value\",\"set_style\",\"set_svg_attributes\",\"space\",\"spread\",\"stop_propagation\",\"subscribe\",\"svg_element\",\"text\",\"tick\",\"time_ranges_to_array\",\"to_number\",\"toggle_class\",\"transition_in\",\"transition_out\",\"update_keyed_each\",\"update_slot\",\"validate_component\",\"validate_each_argument\",\"validate_each_keys\",\"validate_slots\",\"validate_store\",\"xlink_attr\"]);","import { Node } from 'estree';\nimport is_reference from 'is-reference';\n\nexport default function is_used_as_reference(\n\tnode: Node,\n\tparent: Node\n): boolean {\n\tif (!is_reference(node, parent)) {\n\t\treturn false;\n\t}\n\tif (!parent) {\n\t\treturn true;\n\t}\n\n\t/* eslint-disable no-fallthrough */\n\tswitch (parent.type) {\n\t\t// disregard the `foo` in `const foo = bar`\n\t\tcase 'VariableDeclarator':\n\t\t\treturn node !== parent.id;\n\t\t// disregard the `foo`, `bar` in `function foo(bar){}`\n\t\tcase 'FunctionDeclaration':\n\t\t// disregard the `foo` in `import { foo } from 'foo'`\n\t\tcase 'ImportSpecifier':\n\t\t// disregard the `foo` in `import foo from 'foo'`\n\t\tcase 'ImportDefaultSpecifier':\n\t\t// disregard the `foo` in `import * as foo from 'foo'`\n\t\tcase 'ImportNamespaceSpecifier':\n\t\t// disregard the `foo` in `export { foo }`\n\t\tcase 'ExportSpecifier':\n\t\t\treturn false;\n\t\tdefault:\n\t\t\treturn true;\n\t}\n}\n","export default function check_graph_for_cycles(edges: Array<[any, any]>): any[] {\n\tconst graph: Map<any, any[]> = edges.reduce((g, edge) => {\n\t\tconst [u, v] = edge;\n\t\tif (!g.has(u)) g.set(u, []);\n\t\tif (!g.has(v)) g.set(v, []);\n\t\tg.get(u).push(v);\n\t\treturn g;\n\t}, new Map());\n\n\tconst visited = new Set();\n\tconst on_stack = new Set();\n\tconst cycles = [];\n\n\tfunction visit (v) {\n\t\tvisited.add(v);\n\t\ton_stack.add(v);\n\n\t\tgraph.get(v).forEach(w => {\n\t\t\tif (!visited.has(w)) {\n\t\t\t\tvisit(w);\n\t\t\t} else if (on_stack.has(w)) {\n\t\t\t\tcycles.push([...on_stack, w]);\n\t\t\t}\n\t\t});\n\n\t\ton_stack.delete(v);\n\t}\n\n\tgraph.forEach((_, v) => {\n\t\tif (!visited.has(v)) {\n\t\t\tvisit(v);\n\t\t}\n\t});\n\n\treturn cycles[0];\n}\n","import { walk } from 'estree-walker';\nimport { getLocator } from 'locate-character';\nimport Stats from '../Stats';\nimport { globals, reserved, is_valid } from '../utils/names';\nimport { namespaces, valid_namespaces } from '../utils/namespaces';\nimport create_module from './create_module';\nimport {\n\tcreate_scopes,\n\textract_names,\n\tScope,\n\textract_identifiers\n} from './utils/scope';\nimport Stylesheet from './css/Stylesheet';\nimport { test } from '../config';\nimport Fragment from './nodes/Fragment';\nimport internal_exports from './internal_exports';\nimport { Ast, CompileOptions, Var, Warning, CssResult } from '../interfaces';\nimport error from '../utils/error';\nimport get_code_frame from '../utils/get_code_frame';\nimport flatten_reference from './utils/flatten_reference';\nimport is_used_as_reference from './utils/is_used_as_reference';\nimport is_reference from 'is-reference';\nimport TemplateScope from './nodes/shared/TemplateScope';\nimport fuzzymatch from '../utils/fuzzymatch';\nimport get_object from './utils/get_object';\nimport Slot from './nodes/Slot';\nimport { Node, ImportDeclaration, Identifier, Program, ExpressionStatement, AssignmentExpression, Literal } from 'estree';\nimport add_to_set from './utils/add_to_set';\nimport check_graph_for_cycles from './utils/check_graph_for_cycles';\nimport { print, x, b } from 'code-red';\nimport { is_reserved_keyword } from './utils/reserved_keywords';\nimport Element from './nodes/Element';\n\ninterface ComponentOptions {\n\tnamespace?: string;\n\ttag?: string;\n\timmutable?: boolean;\n\taccessors?: boolean;\n\tpreserveWhitespace?: boolean;\n}\n\nexport default class Component {\n\tstats: Stats;\n\twarnings: Warning[];\n\tignores: Set<string>;\n\tignore_stack: Array<Set<string>> = [];\n\n\tast: Ast;\n\toriginal_ast: Ast;\n\tsource: string;\n\tname: Identifier;\n\tcompile_options: CompileOptions;\n\tfragment: Fragment;\n\tmodule_scope: Scope;\n\tinstance_scope: Scope;\n\tinstance_scope_map: WeakMap<Node, Scope>;\n\n\tcomponent_options: ComponentOptions;\n\tnamespace: string;\n\ttag: string;\n\taccessors: boolean;\n\n\tvars: Var[] = [];\n\tvar_lookup: Map<string, Var> = new Map();\n\n\timports: ImportDeclaration[] = [];\n\n\thoistable_nodes: Set<Node> = new Set();\n\tnode_for_declaration: Map<string, Node> = new Map();\n\tpartly_hoisted: Array<(Node | Node[])> = [];\n\tfully_hoisted: Array<(Node | Node[])> = [];\n\treactive_declarations: Array<{\n\t\tassignees: Set<string>;\n\t\tdependencies: Set<string>;\n\t\tnode: Node;\n\t\tdeclaration: Node;\n\t}> = [];\n\treactive_declaration_nodes: Set<Node> = new Set();\n\thas_reactive_assignments = false;\n\tinjected_reactive_declaration_vars: Set<string> = new Set();\n\thelpers: Map<string, Identifier> = new Map();\n\tglobals: Map<string, Identifier> = new Map();\n\n\tindirect_dependencies: Map<string, Set<string>> = new Map();\n\n\tfile: string;\n\tlocate: (c: number) => { line: number; column: number };\n\n\telements: Element[] = [];\n\tstylesheet: Stylesheet;\n\n\taliases: Map<string, Identifier> = new Map();\n\tused_names: Set<string> = new Set();\n\tglobally_used_names: Set<string> = new Set();\n\n\tslots: Map<string, Slot> = new Map();\n\tslot_outlets: Set<string> = new Set();\n\n\tconstructor(\n\t\tast: Ast,\n\t\tsource: string,\n\t\tname: string,\n\t\tcompile_options: CompileOptions,\n\t\tstats: Stats,\n\t\twarnings: Warning[]\n\t) {\n\t\tthis.name = { type: 'Identifier', name };\n\n\t\tthis.stats = stats;\n\t\tthis.warnings = warnings;\n\t\tthis.ast = ast;\n\t\tthis.source = source;\n\t\tthis.compile_options = compile_options;\n\n\t\t// the instance JS gets mutated, so we park\n\t\t// a copy here for later. TODO this feels gross\n\t\tthis.original_ast = {\n\t\t\thtml: ast.html,\n\t\t\tcss: ast.css,\n\t\t\tinstance: ast.instance && JSON.parse(JSON.stringify(ast.instance)),\n\t\t\tmodule: ast.module\n\t\t};\n\n\t\tthis.file =\n\t\t\tcompile_options.filename &&\n\t\t\t(typeof process !== 'undefined'\n\t\t\t\t? compile_options.filename\n\t\t\t\t\t.replace(process.cwd(), '')\n\t\t\t\t\t.replace(/^[/\\\\]/, '')\n\t\t\t\t: compile_options.filename);\n\t\tthis.locate = getLocator(this.source, { offsetLine: 1 });\n\n\t\t// styles\n\t\tthis.stylesheet = new Stylesheet(\n\t\t\tsource,\n\t\t\tast,\n\t\t\tcompile_options.filename,\n\t\t\tcompile_options.dev\n\t\t);\n\t\tthis.stylesheet.validate(this);\n\n\t\tthis.component_options = process_component_options(\n\t\t\tthis,\n\t\t\tthis.ast.html.children\n\t\t);\n\t\tthis.namespace =\n\t\t\tnamespaces[this.component_options.namespace] ||\n\t\t\tthis.component_options.namespace;\n\n\t\tif (compile_options.customElement) {\n\t\t\tif (\n\t\t\t\tthis.component_options.tag === undefined &&\n\t\t\t\tcompile_options.tag === undefined\n\t\t\t) {\n\t\t\t\tconst svelteOptions = ast.html.children.find(\n\t\t\t\t\tchild => child.name === 'svelte:options'\n\t\t\t\t) || { start: 0, end: 0 };\n\t\t\t\tthis.warn(svelteOptions, {\n\t\t\t\t\tcode: 'custom-element-no-tag',\n\t\t\t\t\tmessage: 'No custom element \\'tag\\' option was specified. To automatically register a custom element, specify a name with a hyphen in it, e.g. <svelte:options tag=\"my-thing\"/>. To hide this warning, use <svelte:options tag={null}/>'\n\t\t\t\t});\n\t\t\t}\n\t\t\tthis.tag = this.component_options.tag || compile_options.tag;\n\t\t} else {\n\t\t\tthis.tag = this.name.name;\n\t\t}\n\n\t\tthis.walk_module_js();\n\t\tthis.walk_instance_js_pre_template();\n\n\t\tthis.fragment = new Fragment(this, ast.html);\n\t\tthis.name = this.get_unique_name(name);\n\n\t\tthis.walk_instance_js_post_template();\n\n\t\tthis.elements.forEach(element => this.stylesheet.apply(element));\n\t\tif (!compile_options.customElement) this.stylesheet.reify();\n\t\tthis.stylesheet.warn_on_unused_selectors(this);\n\t}\n\n\tadd_var(variable: Var) {\n\t\tthis.vars.push(variable);\n\t\tthis.var_lookup.set(variable.name, variable);\n\t}\n\n\tadd_reference(name: string) {\n\t\tconst variable = this.var_lookup.get(name);\n\n\t\tif (variable) {\n\t\t\tvariable.referenced = true;\n\t\t} else if (is_reserved_keyword(name)) {\n\t\t\tthis.add_var({\n\t\t\t\tname,\n\t\t\t\tinjected: true,\n\t\t\t\treferenced: true\n\t\t\t});\n\t\t} else if (name[0] === '$') {\n\t\t\tthis.add_var({\n\t\t\t\tname,\n\t\t\t\tinjected: true,\n\t\t\t\treferenced: true,\n\t\t\t\tmutated: true,\n\t\t\t\twritable: true\n\t\t\t});\n\n\t\t\tconst subscribable_name = name.slice(1);\n\n\t\t\tconst variable = this.var_lookup.get(subscribable_name);\n\t\t\tif (variable) {\n\t\t\t\tvariable.referenced = true;\n\t\t\t\tvariable.subscribable = true;\n\t\t\t}\n\t\t} else {\n\t\t\tthis.used_names.add(name);\n\t\t}\n\t}\n\n\talias(name: string) {\n\t\tif (!this.aliases.has(name)) {\n\t\t\tthis.aliases.set(name, this.get_unique_name(name));\n\t\t}\n\n\t\treturn this.aliases.get(name);\n\t}\n\n\tapply_stylesheet(element: Element) {\n\t\tthis.elements.push(element);\n\t}\n\n\tglobal(name: string) {\n\t\tconst alias = this.alias(name);\n\t\tthis.globals.set(name, alias);\n\t\treturn alias;\n\t}\n\n\tgenerate(result?: { js: Node[]; css: CssResult }) {\n\t\tlet js = null;\n\t\tlet css = null;\n\n\t\tif (result) {\n\t\t\tconst { compile_options, name } = this;\n\t\t\tconst { format = 'esm' } = compile_options;\n\n\t\t\tconst banner = `${this.file ? `${this.file} ` : ''}generated by Svelte v${'__VERSION__'}`;\n\n\t\t\tconst program: any = { type: 'Program', body: result.js };\n\n\t\t\twalk(program, {\n\t\t\t\tenter: (node: Node, parent: Node, key) => {\n\t\t\t\t\tif (node.type === 'Identifier') {\n\t\t\t\t\t\tif (node.name[0] === '@') {\n\t\t\t\t\t\t\tif (node.name[1] === '_') {\n\t\t\t\t\t\t\t\tconst alias = this.global(node.name.slice(2));\n\t\t\t\t\t\t\t\tnode.name = alias.name;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tlet name = node.name.slice(1);\n\n\t\t\t\t\t\t\t\tif (compile_options.dev) {\n\t\t\t\t\t\t\t\t\tif (internal_exports.has(`${name}_dev`)) {\n\t\t\t\t\t\t\t\t\t\tname += '_dev';\n\t\t\t\t\t\t\t\t\t} else if (internal_exports.has(`${name}Dev`)) {\n\t\t\t\t\t\t\t\t\t\tname += 'Dev';\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tconst alias = this.alias(name);\n\t\t\t\t\t\t\t\tthis.helpers.set(name, alias);\n\t\t\t\t\t\t\t\tnode.name = alias.name;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (node.name[0] !== '#' && !is_valid(node.name)) {\n\t\t\t\t\t\t\t// this hack allows x`foo.${bar}` where bar could be invalid\n\t\t\t\t\t\t\tconst literal: Literal = { type: 'Literal', value: node.name };\n\n\t\t\t\t\t\t\tif (parent.type === 'Property' && key === 'key') {\n\t\t\t\t\t\t\t\tparent.key = literal;\n\t\t\t\t\t\t\t} else if (parent.type === 'MemberExpression' && key === 'property') {\n\t\t\t\t\t\t\t\tparent.property = literal;\n\t\t\t\t\t\t\t\tparent.computed = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tconst referenced_globals = Array.from(\n\t\t\t\tthis.globals,\n\t\t\t\t([name, alias]) => name !== alias.name && { name, alias }\n\t\t\t).filter(Boolean);\n\t\t\tif (referenced_globals.length) {\n\t\t\t\tthis.helpers.set('globals', this.alias('globals'));\n\t\t\t}\n\t\t\tconst imported_helpers = Array.from(this.helpers, ([name, alias]) => ({\n\t\t\t\tname,\n\t\t\t\talias\n\t\t\t}));\n\n\t\t\tcreate_module(\n\t\t\t\tprogram,\n\t\t\t\tformat,\n\t\t\t\tname,\n\t\t\t\tbanner,\n\t\t\t\tcompile_options.sveltePath,\n\t\t\t\timported_helpers,\n\t\t\t\treferenced_globals,\n\t\t\t\tthis.imports,\n\t\t\t\tthis.vars\n\t\t\t\t\t.filter(variable => variable.module && variable.export_name)\n\t\t\t\t\t.map(variable => ({\n\t\t\t\t\t\tname: variable.name,\n\t\t\t\t\t\tas: variable.export_name\n\t\t\t\t\t}))\n\t\t\t);\n\n\t\t\tcss = compile_options.customElement\n\t\t\t\t? { code: null, map: null }\n\t\t\t\t: result.css;\n\n\t\t\tjs = print(program, {\n\t\t\t\tsourceMapSource: compile_options.filename\n\t\t\t});\n\n\t\t\tjs.map.sources = [\n\t\t\t\tcompile_options.filename ? get_relative_path(compile_options.outputFilename || '', compile_options.filename) : null\n\t\t\t];\n\n\t\t\tjs.map.sourcesContent = [\n\t\t\t\tthis.source\n\t\t\t];\n\t\t}\n\n\t\treturn {\n\t\t\tjs,\n\t\t\tcss,\n\t\t\tast: this.original_ast,\n\t\t\twarnings: this.warnings,\n\t\t\tvars: this.vars\n\t\t\t\t.filter(v => !v.global && !v.internal)\n\t\t\t\t.map(v => ({\n\t\t\t\t\tname: v.name,\n\t\t\t\t\texport_name: v.export_name || null,\n\t\t\t\t\tinjected: v.injected || false,\n\t\t\t\t\tmodule: v.module || false,\n\t\t\t\t\tmutated: v.mutated || false,\n\t\t\t\t\treassigned: v.reassigned || false,\n\t\t\t\t\treferenced: v.referenced || false,\n\t\t\t\t\twritable: v.writable || false,\n\t\t\t\t\treferenced_from_script: v.referenced_from_script || false\n\t\t\t\t})),\n\t\t\tstats: this.stats.render()\n\t\t};\n\t}\n\n\tget_unique_name(name: string, scope?: Scope): Identifier {\n\t\tif (test) name = `${name}$`;\n\t\tlet alias = name;\n\t\tfor (\n\t\t\tlet i = 1;\n\t\t\treserved.has(alias) ||\n\t\t\tthis.var_lookup.has(alias) ||\n\t\t\tthis.used_names.has(alias) ||\n\t\t\tthis.globally_used_names.has(alias) ||\n\t\t\t(scope && scope.has(alias));\n\t\t\talias = `${name}_${i++}`\n\t\t);\n\t\tthis.used_names.add(alias);\n\t\treturn { type: 'Identifier', name: alias };\n\t}\n\n\tget_unique_name_maker() {\n\t\tconst local_used_names = new Set();\n\n\t\tfunction add(name: string) {\n\t\t\tlocal_used_names.add(name);\n\t\t}\n\n\t\treserved.forEach(add);\n\t\tinternal_exports.forEach(add);\n\t\tthis.var_lookup.forEach((_value, key) => add(key));\n\n\t\treturn (name: string): Identifier => {\n\t\t\tif (test) name = `${name}$`;\n\t\t\tlet alias = name;\n\t\t\tfor (\n\t\t\t\tlet i = 1;\n\t\t\t\tthis.used_names.has(alias) || local_used_names.has(alias);\n\t\t\t\talias = `${name}_${i++}`\n\t\t\t);\n\t\t\tlocal_used_names.add(alias);\n\t\t\tthis.globally_used_names.add(alias);\n\n\t\t\treturn {\n\t\t\t\ttype: 'Identifier',\n\t\t\t\tname: alias\n\t\t\t};\n\t\t};\n\t}\n\n\terror(\n\t\tpos: {\n\t\t\tstart: number;\n\t\t\tend: number;\n\t\t},\n\t\te: {\n\t\t\tcode: string;\n\t\t\tmessage: string;\n\t\t}\n\t) {\n\t\terror(e.message, {\n\t\t\tname: 'ValidationError',\n\t\t\tcode: e.code,\n\t\t\tsource: this.source,\n\t\t\tstart: pos.start,\n\t\t\tend: pos.end,\n\t\t\tfilename: this.compile_options.filename\n\t\t});\n\t}\n\n\twarn(\n\t\tpos: {\n\t\t\tstart: number;\n\t\t\tend: number;\n\t\t},\n\t\twarning: {\n\t\t\tcode: string;\n\t\t\tmessage: string;\n\t\t}\n\t) {\n\t\tif (this.ignores && this.ignores.has(warning.code)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst start = this.locate(pos.start);\n\t\tconst end = this.locate(pos.end);\n\n\t\tconst frame = get_code_frame(this.source, start.line - 1, start.column);\n\n\t\tthis.warnings.push({\n\t\t\tcode: warning.code,\n\t\t\tmessage: warning.message,\n\t\t\tframe,\n\t\t\tstart,\n\t\t\tend,\n\t\t\tpos: pos.start,\n\t\t\tfilename: this.compile_options.filename,\n\t\t\ttoString: () =>\n\t\t\t\t`${warning.message} (${start.line}:${start.column})\\n${frame}`\n\t\t});\n\t}\n\n\textract_imports(node) {\n\t\tthis.imports.push(node);\n\t}\n\n\textract_exports(node) {\n\t\tif (node.type === 'ExportDefaultDeclaration') {\n\t\t\tthis.error(node, {\n\t\t\t\tcode: 'default-export',\n\t\t\t\tmessage: 'A component cannot have a default export'\n\t\t\t});\n\t\t}\n\n\t\tif (node.type === 'ExportNamedDeclaration') {\n\t\t\tif (node.source) {\n\t\t\t\tthis.error(node, {\n\t\t\t\t\tcode: 'not-implemented',\n\t\t\t\t\tmessage: 'A component currently cannot have an export ... from'\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (node.declaration) {\n\t\t\t\tif (node.declaration.type === 'VariableDeclaration') {\n\t\t\t\t\tnode.declaration.declarations.forEach(declarator => {\n\t\t\t\t\t\textract_names(declarator.id).forEach(name => {\n\t\t\t\t\t\t\tconst variable = this.var_lookup.get(name);\n\t\t\t\t\t\t\tvariable.export_name = name;\n\t\t\t\t\t\t\tif (variable.writable && !(variable.referenced || variable.referenced_from_script || variable.subscribable)) {\n\t\t\t\t\t\t\t\tthis.warn(declarator, {\n\t\t\t\t\t\t\t\t\tcode: 'unused-export-let',\n\t\t\t\t\t\t\t\t\tmessage: `${this.name.name} has unused export property '${name}'. If it is for external reference only, please consider using \\`export const ${name}\\``\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tconst { name } = node.declaration.id;\n\n\t\t\t\t\tconst variable = this.var_lookup.get(name);\n\t\t\t\t\tvariable.export_name = name;\n\t\t\t\t}\n\n\t\t\t\treturn node.declaration;\n\t\t\t} else {\n\t\t\t\tnode.specifiers.forEach(specifier => {\n\t\t\t\t\tconst variable = this.var_lookup.get(specifier.local.name);\n\n\t\t\t\t\tif (variable) {\n\t\t\t\t\t\tvariable.export_name = specifier.exported.name;\n\n\t\t\t\t\t\tif (variable.writable && !(variable.referenced || variable.referenced_from_script || variable.subscribable)) {\n\t\t\t\t\t\t\tthis.warn(specifier, {\n\t\t\t\t\t\t\t\tcode: 'unused-export-let',\n\t\t\t\t\t\t\t\tmessage: `${this.name.name} has unused export property '${specifier.exported.name}'. If it is for external reference only, please consider using \\`export const ${specifier.exported.name}\\``\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t}\n\n\textract_javascript(script) {\n\t\tif (!script) return null;\n\n\t\treturn script.content.body.filter(node => {\n\t\t\tif (!node) return false;\n\t\t\tif (this.hoistable_nodes.has(node)) return false;\n\t\t\tif (this.reactive_declaration_nodes.has(node)) return false;\n\t\t\tif (node.type === 'ImportDeclaration') return false;\n\t\t\tif (node.type === 'ExportDeclaration' && node.specifiers.length > 0) return false;\n\t\t\treturn true;\n\t\t});\n\t}\n\n\twalk_module_js() {\n\t\tconst component = this;\n\t\tconst script = this.ast.module;\n\t\tif (!script) return;\n\n\t\twalk(script.content, {\n\t\t\tenter(node: Node) {\n\t\t\t\tif (node.type === 'LabeledStatement' && node.label.name === '$') {\n\t\t\t\t\tcomponent.warn(node as any, {\n\t\t\t\t\t\tcode: 'module-script-reactive-declaration',\n\t\t\t\t\t\tmessage: '$: has no effect in a module script'\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tconst { scope, globals } = create_scopes(script.content);\n\t\tthis.module_scope = scope;\n\n\t\tscope.declarations.forEach((node, name) => {\n\t\t\tif (name[0] === '$') {\n\t\t\t\tthis.error(node as any, {\n\t\t\t\t\tcode: 'illegal-declaration',\n\t\t\t\t\tmessage: 'The $ prefix is reserved, and cannot be used for variable and import names'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst writable = node.type === 'VariableDeclaration' && (node.kind === 'var' || node.kind === 'let');\n\n\t\t\tthis.add_var({\n\t\t\t\tname,\n\t\t\t\tmodule: true,\n\t\t\t\thoistable: true,\n\t\t\t\twritable\n\t\t\t});\n\t\t});\n\n\t\tglobals.forEach((node, name) => {\n\t\t\tif (name[0] === '$') {\n\t\t\t\tthis.error(node as any, {\n\t\t\t\t\tcode: 'illegal-subscription',\n\t\t\t\t\tmessage: 'Cannot reference store value inside <script context=\"module\">'\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.add_var({\n\t\t\t\t\tname,\n\t\t\t\t\tglobal: true,\n\t\t\t\t\thoistable: true\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tconst { body } = script.content;\n\t\tlet i = body.length;\n\t\twhile (--i >= 0) {\n\t\t\tconst node = body[i];\n\t\t\tif (node.type === 'ImportDeclaration') {\n\t\t\t\tthis.extract_imports(node);\n\t\t\t\tbody.splice(i, 1);\n\t\t\t}\n\n\t\t\tif (/^Export/.test(node.type)) {\n\t\t\t\tconst replacement = this.extract_exports(node);\n\t\t\t\tif (replacement) {\n\t\t\t\t\tbody[i] = replacement;\n\t\t\t\t} else {\n\t\t\t\t\tbody.splice(i, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\twalk_instance_js_pre_template() {\n\t\tconst script = this.ast.instance;\n\t\tif (!script) return;\n\n\t\t// inject vars for reactive declarations\n\t\tscript.content.body.forEach(node => {\n\t\t\tif (node.type !== 'LabeledStatement') return;\n\t\t\tif (node.body.type !== 'ExpressionStatement') return;\n\n\t\t\tconst { expression } = node.body;\n\t\t\tif (expression.type !== 'AssignmentExpression') return;\n\t\t\tif (expression.left.type === 'MemberExpression') return;\n\n\t\t\textract_names(expression.left).forEach(name => {\n\t\t\t\tif (!this.var_lookup.has(name) && name[0] !== '$') {\n\t\t\t\t\tthis.injected_reactive_declaration_vars.add(name);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tconst { scope: instance_scope, map, globals } = create_scopes(\n\t\t\tscript.content\n\t\t);\n\t\tthis.instance_scope = instance_scope;\n\t\tthis.instance_scope_map = map;\n\n\t\tinstance_scope.declarations.forEach((node, name) => {\n\t\t\tif (name[0] === '$') {\n\t\t\t\tthis.error(node as any, {\n\t\t\t\t\tcode: 'illegal-declaration',\n\t\t\t\t\tmessage: 'The $ prefix is reserved, and cannot be used for variable and import names'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst writable = node.type === 'VariableDeclaration' && (node.kind === 'var' || node.kind === 'let');\n\t\t\tconst imported = node.type.startsWith('Import');\n\n\t\t\tthis.add_var({\n\t\t\t\tname,\n\t\t\t\tinitialised: instance_scope.initialised_declarations.has(name),\n\t\t\t\twritable,\n\t\t\t\timported\n\t\t\t});\n\n\t\t\tthis.node_for_declaration.set(name, node);\n\t\t});\n\n\t\tglobals.forEach((node, name) => {\n\t\t\tif (this.var_lookup.has(name)) return;\n\n\t\t\tif (this.injected_reactive_declaration_vars.has(name)) {\n\t\t\t\tthis.add_var({\n\t\t\t\t\tname,\n\t\t\t\t\tinjected: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\treassigned: true,\n\t\t\t\t\tinitialised: true\n\t\t\t\t});\n\t\t\t} else if (is_reserved_keyword(name)) {\n\t\t\t\tthis.add_var({\n\t\t\t\t\tname,\n\t\t\t\t\tinjected: true\n\t\t\t\t});\n\t\t\t} else if (name[0] === '$') {\n\t\t\t\tif (name === '$' || name[1] === '$') {\n\t\t\t\t\tthis.error(node as any, {\n\t\t\t\t\t\tcode: 'illegal-global',\n\t\t\t\t\t\tmessage: `${name} is an illegal variable name`\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tthis.add_var({\n\t\t\t\t\tname,\n\t\t\t\t\tinjected: true,\n\t\t\t\t\tmutated: true,\n\t\t\t\t\twritable: true\n\t\t\t\t});\n\n\t\t\t\tthis.add_reference(name.slice(1));\n\n\t\t\t\tconst variable = this.var_lookup.get(name.slice(1));\n\t\t\t\tif (variable) {\n\t\t\t\t\tvariable.subscribable = true;\n\t\t\t\t\tvariable.referenced_from_script = true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.add_var({\n\t\t\t\t\tname,\n\t\t\t\t\tglobal: true,\n\t\t\t\t\thoistable: true\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tthis.track_references_and_mutations();\n\t}\n\n\twalk_instance_js_post_template() {\n\t\tconst script = this.ast.instance;\n\t\tif (!script) return;\n\n\t\tthis.post_template_walk();\n\n\t\tthis.hoist_instance_declarations();\n\t\tthis.extract_reactive_declarations();\n\t}\n\n\tpost_template_walk() {\n\t\tconst script = this.ast.instance;\n\t\tif (!script) return;\n\n\t\tconst component = this;\n\t\tconst { content } = script;\n\t\tconst { instance_scope, instance_scope_map: map } = this;\n\n\t\tlet scope = instance_scope;\n\n\t\tconst to_remove = [];\n\t\tconst remove = (parent, prop, index) => {\n\t\t\tto_remove.unshift([parent, prop, index]);\n\t\t};\n\t\tlet scope_updated = false;\n\n\t\tlet generator_count = 0;\n\n\t\twalk(content, {\n\t\t\tenter(node: Node, parent, prop, index) {\n\t\t\t\tif ((node.type === 'FunctionDeclaration' || node.type === 'FunctionExpression') && node.generator === true) {\n\t\t\t\t\tgenerator_count++;\n\t\t\t\t}\n\n\t\t\t\tif (map.has(node)) {\n\t\t\t\t\tscope = map.get(node);\n\t\t\t\t}\n\n\t\t\t\tif (node.type === 'ImportDeclaration') {\n\t\t\t\t\tcomponent.extract_imports(node);\n\t\t\t\t\t// TODO: to use actual remove\n\t\t\t\t\tremove(parent, prop, index);\n\t\t\t\t\treturn this.skip();\n\t\t\t\t}\n\n\t\t\t\tif (/^Export/.test(node.type)) {\n\t\t\t\t\tconst replacement = component.extract_exports(node);\n\t\t\t\t\tif (replacement) {\n\t\t\t\t\t\tthis.replace(replacement);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// TODO: to use actual remove\n\t\t\t\t\t\tremove(parent, prop, index);\n\t\t\t\t\t}\n\t\t\t\t\treturn this.skip();\n\t\t\t\t}\n\n\t\t\t\tcomponent.warn_on_undefined_store_value_references(node, parent, scope);\n\t\t\t},\n\n\t\t\tleave(node: Node) {\n\t\t\t\tif ((node.type === 'FunctionDeclaration' || node.type === 'FunctionExpression') && node.generator === true) {\n\t\t\t\t\tgenerator_count--;\n\t\t\t\t}\n\n\t\t\t\t// do it on leave, to prevent infinite loop\n\t\t\t\tif (component.compile_options.dev && component.compile_options.loopGuardTimeout > 0 && generator_count <= 0) {\n\t\t\t\t\tconst to_replace_for_loop_protect = component.loop_protect(node, scope, component.compile_options.loopGuardTimeout);\n\t\t\t\t\tif (to_replace_for_loop_protect) {\n\t\t\t\t\t\tthis.replace(to_replace_for_loop_protect);\n\t\t\t\t\t\tscope_updated = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (map.has(node)) {\n\t\t\t\t\tscope = scope.parent;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tfor (const [parent, prop, index] of to_remove) {\n\t\t\tif (parent) {\n\t\t\t\tif (index !== null) {\n\t\t\t\t\tparent[prop].splice(index, 1);\n\t\t\t\t} else {\n\t\t\t\t\tdelete parent[prop];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (scope_updated) {\n\t\t\tconst { scope, map } = create_scopes(script.content);\n\t\t\tthis.instance_scope = scope;\n\t\t\tthis.instance_scope_map = map;\n\t\t}\n\t}\n\n\ttrack_references_and_mutations() {\n\t\tconst script = this.ast.instance;\n\t\tif (!script) return;\n\n\t\tconst component = this;\n\t\tconst { content } = script;\n\t\tconst { instance_scope, module_scope, instance_scope_map: map } = this;\n\n\t\tlet scope = instance_scope;\n\n\t\twalk(content, {\n\t\t\tenter(node: Node, parent: Node) {\n\t\t\t\tif (map.has(node)) {\n\t\t\t\t\tscope = map.get(node);\n\t\t\t\t}\n\n\t\t\t\tif (node.type === 'AssignmentExpression' || node.type === 'UpdateExpression') {\n\t\t\t\t\tconst assignee = node.type === 'AssignmentExpression' ? node.left : node.argument;\n\t\t\t\t\tconst names = extract_names(assignee);\n\n\t\t\t\t\tconst deep = assignee.type === 'MemberExpression';\n\n\t\t\t\t\tnames.forEach(name => {\n\t\t\t\t\t\tconst scope_owner = scope.find_owner(name);\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tscope_owner !== null\n\t\t\t\t\t\t\t\t? scope_owner === instance_scope\n\t\t\t\t\t\t\t\t: module_scope && module_scope.has(name)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tconst variable = component.var_lookup.get(name);\n\t\t\t\t\t\t\tvariable[deep ? 'mutated' : 'reassigned'] = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (is_used_as_reference(node, parent)) {\n\t\t\t\t\tconst object = get_object(node);\n\t\t\t\t\tif (scope.find_owner(object.name) === instance_scope) {\n\t\t\t\t\t\tconst variable = component.var_lookup.get(object.name);\n\t\t\t\t\t\tvariable.referenced_from_script = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tleave(node: Node) {\n\t\t\t\tif (map.has(node)) {\n\t\t\t\t\tscope = scope.parent;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\twarn_on_undefined_store_value_references(node, parent, scope: Scope) {\n\t\tif (\n\t\t\tnode.type === 'LabeledStatement' &&\n\t\t\tnode.label.name === '$' &&\n\t\t\tparent.type !== 'Program'\n\t\t) {\n\t\t\tthis.warn(node as any, {\n\t\t\t\tcode: 'non-top-level-reactive-declaration',\n\t\t\t\tmessage: '$: has no effect outside of the top-level'\n\t\t\t});\n\t\t}\n\n\t\tif (is_reference(node as Node, parent as Node)) {\n\t\t\tconst object = get_object(node);\n\t\t\tconst { name } = object;\n\n\t\t\tif (name[0] === '$') {\n\t\t\t\tif (!scope.has(name)) {\n\t\t\t\t\tthis.warn_if_undefined(name, object, null);\n\t\t\t\t}\n\n\t\t\t\tif (name[1] !== '$' && scope.has(name.slice(1)) && scope.find_owner(name.slice(1)) !== this.instance_scope) {\n\t\t\t\t\tthis.error(node, {\n\t\t\t\t\t\tcode: 'contextual-store',\n\t\t\t\t\t\tmessage: 'Stores must be declared at the top level of the component (this may change in a future version of Svelte)'\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tloop_protect(node, scope: Scope, timeout: number): Node | null {\n\t\tif (node.type === 'WhileStatement' ||\n\t\t\tnode.type === 'ForStatement' ||\n\t\t\tnode.type === 'DoWhileStatement') {\n\t\t\tconst guard = this.get_unique_name('guard', scope);\n\t\t\tthis.used_names.add(guard.name);\n\n\t\t\tconst before = b`const ${guard} = @loop_guard(${timeout})`;\n\t\t\tconst inside = b`${guard}();`;\n\n\t\t\t// wrap expression statement with BlockStatement\n\t\t\tif (node.body.type !== 'BlockStatement') {\n\t\t\t\tnode.body = {\n\t\t\t\t\ttype: 'BlockStatement',\n\t\t\t\t\tbody: [node.body]\n\t\t\t\t};\n\t\t\t}\n\t\t\tnode.body.body.push(inside[0]);\n\n\t\t\treturn {\n\t\t\t\ttype: 'BlockStatement',\n\t\t\t\tbody: [\n\t\t\t\t\tbefore[0],\n\t\t\t\t\tnode\n\t\t\t\t]\n\t\t\t};\n\t\t}\n\t\treturn null;\n\t}\n\n\trewrite_props(get_insert: (variable: Var) => Node[]) {\n\t\tif (!this.ast.instance) return;\n\n\t\tconst component = this;\n\t\tconst { instance_scope, instance_scope_map: map } = this;\n\t\tlet scope = instance_scope;\n\n\t\twalk(this.ast.instance.content, {\n\t\t\tenter(node: Node, parent, key, index) {\n\t\t\t\tif (/Function/.test(node.type)) {\n\t\t\t\t\treturn this.skip();\n\t\t\t\t}\n\n\t\t\t\tif (map.has(node)) {\n\t\t\t\t\tscope = map.get(node);\n\t\t\t\t}\n\n\t\t\t\tif (node.type === 'VariableDeclaration') {\n\t\t\t\t\tif (node.kind === 'var' || scope === instance_scope) {\n\t\t\t\t\t\tnode.declarations.forEach(declarator => {\n\t\t\t\t\t\t\tif (declarator.id.type !== 'Identifier') {\n\t\t\t\t\t\t\t\tconst inserts = [];\n\n\t\t\t\t\t\t\t\textract_names(declarator.id).forEach(name => {\n\t\t\t\t\t\t\t\t\tconst variable = component.var_lookup.get(name);\n\n\t\t\t\t\t\t\t\t\tif (variable.export_name) {\n\t\t\t\t\t\t\t\t\t\t// TODO is this still true post-#3539?\n\t\t\t\t\t\t\t\t\t\tcomponent.error(declarator as any, {\n\t\t\t\t\t\t\t\t\t\t\tcode: 'destructured-prop',\n\t\t\t\t\t\t\t\t\t\t\tmessage: 'Cannot declare props in destructured declaration'\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (variable.subscribable) {\n\t\t\t\t\t\t\t\t\t\tinserts.push(get_insert(variable));\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tif (inserts.length) {\n\t\t\t\t\t\t\t\t\tparent[key].splice(index + 1, 0, ...inserts);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst { name } = declarator.id;\n\t\t\t\t\t\t\tconst variable = component.var_lookup.get(name);\n\n\t\t\t\t\t\t\tif (variable.export_name && variable.writable) {\n\t\t\t\t\t\t\t\tdeclarator.id = {\n\t\t\t\t\t\t\t\t\ttype: 'ObjectPattern',\n\t\t\t\t\t\t\t\t\tproperties: [{\n\t\t\t\t\t\t\t\t\t\ttype: 'Property',\n\t\t\t\t\t\t\t\t\t\tmethod: false,\n\t\t\t\t\t\t\t\t\t\tshorthand: false,\n\t\t\t\t\t\t\t\t\t\tcomputed: false,\n\t\t\t\t\t\t\t\t\t\tkind: 'init',\n\t\t\t\t\t\t\t\t\t\tkey: { type: 'Identifier', name: variable.export_name },\n\t\t\t\t\t\t\t\t\t\tvalue: declarator.init\n\t\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\ttype: 'AssignmentPattern',\n\t\t\t\t\t\t\t\t\t\t\t\tleft: declarator.id,\n\t\t\t\t\t\t\t\t\t\t\t\tright: declarator.init\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t: declarator.id\n\t\t\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\tdeclarator.init = x`$$props`;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (variable.subscribable && declarator.init) {\n\t\t\t\t\t\t\t\tconst insert = get_insert(variable);\n\t\t\t\t\t\t\t\tparent[key].splice(index + 1, 0, ...insert);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tleave(node: Node, parent, _key, index) {\n\t\t\t\tif (map.has(node)) {\n\t\t\t\t\tscope = scope.parent;\n\t\t\t\t}\n\n\t\t\t\tif (node.type === 'ExportNamedDeclaration' && node.declaration) {\n\t\t\t\t\t(parent as Program).body[index] = node.declaration;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\thoist_instance_declarations() {\n\t\t// we can safely hoist variable declarations that are\n\t\t// initialised to literals, and functions that don't\n\t\t// reference instance variables other than other\n\t\t// hoistable functions. TODO others?\n\n\t\tconst {\n\t\t\thoistable_nodes,\n\t\t\tvar_lookup,\n\t\t\tinjected_reactive_declaration_vars,\n\t\t\timports\n\t\t} = this;\n\n\t\tconst top_level_function_declarations = new Map();\n\n\t\tconst { body } = this.ast.instance.content;\n\n\t\tfor (let i = 0; i < body.length; i += 1) {\n\t\t\tconst node = body[i];\n\n\t\t\tif (node.type === 'VariableDeclaration') {\n\t\t\t\tconst all_hoistable = node.declarations.every(d => {\n\t\t\t\t\tif (!d.init) return false;\n\t\t\t\t\tif (d.init.type !== 'Literal') return false;\n\n\t\t\t\t\t// everything except const values can be changed by e.g. svelte devtools\n\t\t\t\t\t// which means we can't hoist it\n\t\t\t\t\tif (node.kind !== 'const' && this.compile_options.dev) return false;\n\n\t\t\t\t\tconst { name } = d.id as Identifier;\n\n\t\t\t\t\tconst v = this.var_lookup.get(name);\n\t\t\t\t\tif (v.reassigned) return false;\n\t\t\t\t\tif (v.export_name) return false;\n\n\t\t\t\t\tif (this.var_lookup.get(name).reassigned) return false;\n\t\t\t\t\tif (\n\t\t\t\t\t\tthis.vars.find(\n\t\t\t\t\t\t\tvariable => variable.name === name && variable.module\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\t\t\t\t});\n\n\t\t\t\tif (all_hoistable) {\n\t\t\t\t\tnode.declarations.forEach(d => {\n\t\t\t\t\t\tconst variable = this.var_lookup.get((d.id as Identifier).name);\n\t\t\t\t\t\tvariable.hoistable = true;\n\t\t\t\t\t});\n\n\t\t\t\t\thoistable_nodes.add(node);\n\n\t\t\t\t\tbody.splice(i--, 1);\n\t\t\t\t\tthis.fully_hoisted.push(node);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tnode.type === 'ExportNamedDeclaration' &&\n\t\t\t\tnode.declaration &&\n\t\t\t\tnode.declaration.type === 'FunctionDeclaration'\n\t\t\t) {\n\t\t\t\ttop_level_function_declarations.set(node.declaration.id.name, node);\n\t\t\t}\n\n\t\t\tif (node.type === 'FunctionDeclaration') {\n\t\t\t\ttop_level_function_declarations.set(node.id.name, node);\n\t\t\t}\n\t\t}\n\n\t\tconst checked = new Set();\n\t\tconst walking = new Set();\n\n\t\tconst is_hoistable = fn_declaration => {\n\t\t\tif (fn_declaration.type === 'ExportNamedDeclaration') {\n\t\t\t\tfn_declaration = fn_declaration.declaration;\n\t\t\t}\n\n\t\t\tconst instance_scope = this.instance_scope;\n\t\t\tlet scope = this.instance_scope;\n\t\t\tconst map = this.instance_scope_map;\n\n\t\t\tlet hoistable = true;\n\n\t\t\t// handle cycles\n\t\t\twalking.add(fn_declaration);\n\n\t\t\twalk(fn_declaration, {\n\t\t\t\tenter(node: Node, parent) {\n\t\t\t\t\tif (!hoistable) return this.skip();\n\n\t\t\t\t\tif (map.has(node)) {\n\t\t\t\t\t\tscope = map.get(node);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (is_reference(node as Node, parent as Node)) {\n\t\t\t\t\t\tconst { name } = flatten_reference(node);\n\t\t\t\t\t\tconst owner = scope.find_owner(name);\n\n\t\t\t\t\t\tif (injected_reactive_declaration_vars.has(name)) {\n\t\t\t\t\t\t\thoistable = false;\n\t\t\t\t\t\t} else if (name[0] === '$' && !owner) {\n\t\t\t\t\t\t\thoistable = false;\n\t\t\t\t\t\t} else if (owner === instance_scope) {\n\t\t\t\t\t\t\tconst variable = var_lookup.get(name);\n\n\t\t\t\t\t\t\tif (variable.reassigned || variable.mutated) hoistable = false;\n\n\t\t\t\t\t\t\tif (name === fn_declaration.id.name) return;\n\n\t\t\t\t\t\t\tif (variable.hoistable) return;\n\n\t\t\t\t\t\t\tif (top_level_function_declarations.has(name)) {\n\t\t\t\t\t\t\t\tconst other_declaration = top_level_function_declarations.get(\n\t\t\t\t\t\t\t\t\tname\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tif (walking.has(other_declaration)) {\n\t\t\t\t\t\t\t\t\thoistable = false;\n\t\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\t\tother_declaration.type === 'ExportNamedDeclaration' &&\n\t\t\t\t\t\t\t\t\twalking.has(other_declaration.declaration)\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\thoistable = false;\n\t\t\t\t\t\t\t\t} else if (!is_hoistable(other_declaration)) {\n\t\t\t\t\t\t\t\t\thoistable = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\thoistable = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.skip();\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tleave(node: Node) {\n\t\t\t\t\tif (map.has(node)) {\n\t\t\t\t\t\tscope = scope.parent;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tchecked.add(fn_declaration);\n\t\t\twalking.delete(fn_declaration);\n\n\t\t\treturn hoistable;\n\t\t};\n\n\t\tfor (const [name, node] of top_level_function_declarations) {\n\t\t\tif (is_hoistable(node)) {\n\t\t\t\tconst variable = this.var_lookup.get(name);\n\t\t\t\tvariable.hoistable = true;\n\t\t\t\thoistable_nodes.add(node);\n\n\t\t\t\tconst i = body.indexOf(node);\n\t\t\t\tbody.splice(i, 1);\n\t\t\t\tthis.fully_hoisted.push(node);\n\t\t\t}\n\t\t}\n\n\t\tfor (const { specifiers } of imports) {\n\t\t\tfor (const specifier of specifiers) {\n\t\t\t\tconst variable = var_lookup.get(specifier.local.name);\n\n\t\t\t\tif (!variable.mutated || variable.subscribable) {\n\t\t\t\t\tvariable.hoistable = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\textract_reactive_declarations() {\n\t\tconst component = this;\n\n\t\tconst unsorted_reactive_declarations = [];\n\n\t\tthis.ast.instance.content.body.forEach(node => {\n\t\t\tif (node.type === 'LabeledStatement' && node.label.name === '$') {\n\t\t\t\tthis.reactive_declaration_nodes.add(node);\n\n\t\t\t\tconst assignees = new Set();\n\t\t\t\tconst assignee_nodes = new Set();\n\t\t\t\tconst dependencies = new Set();\n\n\t\t\t\tlet scope = this.instance_scope;\n\t\t\t\tconst map = this.instance_scope_map;\n\n\t\t\t\twalk(node.body, {\n\t\t\t\t\tenter(node: Node, parent) {\n\t\t\t\t\t\tif (map.has(node)) {\n\t\t\t\t\t\t\tscope = map.get(node);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (node.type === 'AssignmentExpression') {\n\t\t\t\t\t\t\tconst left = get_object(node.left);\n\n\t\t\t\t\t\t\textract_identifiers(left).forEach(node => {\n\t\t\t\t\t\t\t\tassignee_nodes.add(node);\n\t\t\t\t\t\t\t\tassignees.add(node.name);\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tif (node.operator !== '=') {\n\t\t\t\t\t\t\t\tdependencies.add(left.name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (node.type === 'UpdateExpression') {\n\t\t\t\t\t\t\tconst identifier = get_object(node.argument);\n\t\t\t\t\t\t\tassignees.add(identifier.name);\n\t\t\t\t\t\t} else if (is_reference(node as Node, parent as Node)) {\n\t\t\t\t\t\t\tconst identifier = get_object(node);\n\t\t\t\t\t\t\tif (!assignee_nodes.has(identifier)) {\n\t\t\t\t\t\t\t\tconst { name } = identifier;\n\t\t\t\t\t\t\t\tconst owner = scope.find_owner(name);\n\t\t\t\t\t\t\t\tconst variable = component.var_lookup.get(name);\n\t\t\t\t\t\t\t\tif (variable) variable.is_reactive_dependency = true;\n\t\t\t\t\t\t\t\tconst is_writable_or_mutated =\n\t\t\t\t\t\t\t\t\tvariable && (variable.writable || variable.mutated);\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t(!owner || owner === component.instance_scope) &&\n\t\t\t\t\t\t\t\t\t(name[0] === '$' || is_writable_or_mutated)\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\tdependencies.add(name);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthis.skip();\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\n\t\t\t\t\tleave(node: Node) {\n\t\t\t\t\t\tif (map.has(node)) {\n\t\t\t\t\t\t\tscope = scope.parent;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tconst { expression } = node.body as ExpressionStatement;\n\t\t\t\tconst declaration = expression && (expression as AssignmentExpression).left;\n\n\t\t\t\tunsorted_reactive_declarations.push({\n\t\t\t\t\tassignees,\n\t\t\t\t\tdependencies,\n\t\t\t\t\tnode,\n\t\t\t\t\tdeclaration\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tconst lookup = new Map();\n\n\t\tunsorted_reactive_declarations.forEach(declaration => {\n\t\t\tdeclaration.assignees.forEach(name => {\n\t\t\t\tif (!lookup.has(name)) {\n\t\t\t\t\tlookup.set(name, []);\n\t\t\t\t}\n\n\t\t\t\t// TODO warn or error if a name is assigned to in\n\t\t\t\t// multiple reactive declarations?\n\t\t\t\tlookup.get(name).push(declaration);\n\t\t\t});\n\t\t});\n\n\t\tconst cycle = check_graph_for_cycles(unsorted_reactive_declarations.reduce((acc, declaration) => {\n\t\t\tdeclaration.assignees.forEach(v => {\n\t\t\t\tdeclaration.dependencies.forEach(w => {\n\t\t\t\t\tif (!declaration.assignees.has(w)) {\n\t\t\t\t\t\tacc.push([v, w]);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t\treturn acc;\n\t\t}, []));\n\n\t\tif (cycle && cycle.length) {\n\t\t\tconst declarationList = lookup.get(cycle[0]);\n\t\t\tconst declaration = declarationList[0];\n\t\t\tthis.error(declaration.node, {\n\t\t\t\tcode: 'cyclical-reactive-declaration',\n\t\t\t\tmessage: `Cyclical dependency detected: ${cycle.join(' → ')}`\n\t\t\t});\n\t\t}\n\n\t\tconst add_declaration = declaration => {\n\t\t\tif (this.reactive_declarations.includes(declaration)) return;\n\n\t\t\tdeclaration.dependencies.forEach(name => {\n\t\t\t\tif (declaration.assignees.has(name)) return;\n\t\t\t\tconst earlier_declarations = lookup.get(name);\n\t\t\t\tif (earlier_declarations) {\n\t\t\t\t\tearlier_declarations.forEach(add_declaration);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.reactive_declarations.push(declaration);\n\t\t};\n\n\t\tunsorted_reactive_declarations.forEach(add_declaration);\n\t}\n\n\twarn_if_undefined(name: string, node, template_scope: TemplateScope) {\n\t\tif (name[0] === '$') {\n\t\t\tif (name === '$' || name[1] === '$' && !is_reserved_keyword(name)) {\n\t\t\t\tthis.error(node, {\n\t\t\t\t\tcode: 'illegal-global',\n\t\t\t\t\tmessage: `${name} is an illegal variable name`\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.has_reactive_assignments = true; // TODO does this belong here?\n\n\t\t\tif (is_reserved_keyword(name)) return;\n\n\t\t\tname = name.slice(1);\n\t\t}\n\n\t\tif (this.var_lookup.has(name) && !this.var_lookup.get(name).global) return;\n\t\tif (template_scope && template_scope.names.has(name)) return;\n\t\tif (globals.has(name) && node.type !== 'InlineComponent') return;\n\n\t\tlet message = `'${name}' is not defined`;\n\t\tif (!this.ast.instance) {\n\t\t\tmessage += `. Consider adding a <script> block with 'export let ${name}' to declare a prop`;\n\t\t}\n\n\t\tthis.warn(node, {\n\t\t\tcode: 'missing-declaration',\n\t\t\tmessage\n\t\t});\n\t}\n\n\tpush_ignores(ignores) {\n\t\tthis.ignores = new Set(this.ignores || []);\n\t\tadd_to_set(this.ignores, ignores);\n\t\tthis.ignore_stack.push(this.ignores);\n\t}\n\n\tpop_ignores() {\n\t\tthis.ignore_stack.pop();\n\t\tthis.ignores = this.ignore_stack[this.ignore_stack.length - 1];\n\t}\n}\n\nfunction process_component_options(component: Component, nodes) {\n\tconst component_options: ComponentOptions = {\n\t\timmutable: component.compile_options.immutable || false,\n\t\taccessors:\n\t\t\t'accessors' in component.compile_options\n\t\t\t\t? component.compile_options.accessors\n\t\t\t\t: !!component.compile_options.customElement,\n\t\tpreserveWhitespace: !!component.compile_options.preserveWhitespace\n\t};\n\n\tconst node = nodes.find(node => node.name === 'svelte:options');\n\n\tfunction get_value(attribute, code, message) {\n\t\tconst { value } = attribute;\n\t\tconst chunk = value[0];\n\n\t\tif (!chunk) return true;\n\n\t\tif (value.length > 1) {\n\t\t\tcomponent.error(attribute, { code, message });\n\t\t}\n\n\t\tif (chunk.type === 'Text') return chunk.data;\n\n\t\tif (chunk.expression.type !== 'Literal') {\n\t\t\tcomponent.error(attribute, { code, message });\n\t\t}\n\n\t\treturn chunk.expression.value;\n\t}\n\n\tif (node) {\n\t\tnode.attributes.forEach(attribute => {\n\t\t\tif (attribute.type === 'Attribute') {\n\t\t\t\tconst { name } = attribute;\n\n\t\t\t\tswitch (name) {\n\t\t\t\t\tcase 'tag': {\n\t\t\t\t\t\tconst code = 'invalid-tag-attribute';\n\t\t\t\t\t\tconst message = \"'tag' must be a string literal\";\n\t\t\t\t\t\tconst tag = get_value(attribute, code, message);\n\n\t\t\t\t\t\tif (typeof tag !== 'string' && tag !== null) {\n\t\t\t\t\t\t\tcomponent.error(attribute, { code, message });\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (tag && !/^[a-zA-Z][a-zA-Z0-9]*-[a-zA-Z0-9-]+$/.test(tag)) {\n\t\t\t\t\t\t\tcomponent.error(attribute, {\n\t\t\t\t\t\t\t\tcode: 'invalid-tag-property',\n\t\t\t\t\t\t\t\tmessage: \"tag name must be two or more words joined by the '-' character\"\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (tag && !component.compile_options.customElement) {\n\t\t\t\t\t\t\tcomponent.warn(attribute, {\n\t\t\t\t\t\t\t\tcode: 'missing-custom-element-compile-options',\n\t\t\t\t\t\t\t\tmessage: \"The 'tag' option is used when generating a custom element. Did you forget the 'customElement: true' compile option?\"\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcomponent_options.tag = tag;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tcase 'namespace': {\n\t\t\t\t\t\tconst code = 'invalid-namespace-attribute';\n\t\t\t\t\t\tconst message = \"The 'namespace' attribute must be a string literal representing a valid namespace\";\n\t\t\t\t\t\tconst ns = get_value(attribute, code, message);\n\n\t\t\t\t\t\tif (typeof ns !== 'string') {\n\t\t\t\t\t\t\tcomponent.error(attribute, { code, message });\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (valid_namespaces.indexOf(ns) === -1) {\n\t\t\t\t\t\t\tconst match = fuzzymatch(ns, valid_namespaces);\n\t\t\t\t\t\t\tif (match) {\n\t\t\t\t\t\t\t\tcomponent.error(attribute, {\n\t\t\t\t\t\t\t\t\tcode: 'invalid-namespace-property',\n\t\t\t\t\t\t\t\t\tmessage: `Invalid namespace '${ns}' (did you mean '${match}'?)`\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomponent.error(attribute, {\n\t\t\t\t\t\t\t\t\tcode: 'invalid-namespace-property',\n\t\t\t\t\t\t\t\t\tmessage: `Invalid namespace '${ns}'`\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcomponent_options.namespace = ns;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tcase 'accessors':\n\t\t\t\t\tcase 'immutable':\n\t\t\t\t\tcase 'preserveWhitespace': {\n\t\t\t\t\t\tconst code = `invalid-${name}-value`;\n\t\t\t\t\t\tconst message = `${name} attribute must be true or false`;\n\t\t\t\t\t\tconst value = get_value(attribute, code, message);\n\n\t\t\t\t\t\tif (typeof value !== 'boolean') {\n\t\t\t\t\t\t\tcomponent.error(attribute, { code, message });\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcomponent_options[name] = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcomponent.error(attribute, {\n\t\t\t\t\t\t\tcode: 'invalid-options-attribute',\n\t\t\t\t\t\t\tmessage: '<svelte:options> unknown attribute'\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcomponent.error(attribute, {\n\t\t\t\t\tcode: 'invalid-options-attribute',\n\t\t\t\t\tmessage: \"<svelte:options> can only have static 'tag', 'namespace', 'accessors', 'immutable' and 'preserveWhitespace' attributes\"\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\treturn component_options;\n}\n\nfunction get_relative_path(from: string, to: string) {\n\tconst from_parts = from.split(/[/\\\\]/);\n\tconst to_parts = to.split(/[/\\\\]/);\n\n\tfrom_parts.pop(); // get dirname\n\n\twhile (from_parts[0] === to_parts[0]) {\n\t\tfrom_parts.shift();\n\t\tto_parts.shift();\n\t}\n\n\tif (from_parts.length) {\n\t\tlet i = from_parts.length;\n\t\twhile (i--) from_parts[i] = '..';\n\t}\n\n\treturn from_parts.concat(to_parts).join('/');\n}\n","export default function get_name_from_filename(filename: string) {\n\tif (!filename) return null;\n\n\tconst parts = filename.split(/[/\\\\]/).map(encodeURI);\n\n\tif (parts.length > 1) {\n\t\tconst index_match = parts[parts.length - 1].match(/^index(\\.\\w+)/);\n\t\tif (index_match) {\n\t\t\tparts.pop();\n\t\t\tparts[parts.length - 1] += index_match[1];\n\t\t}\n\t}\n\n\tconst base = parts.pop()\n\t\t.replace(/%/g, 'u')\n\t\t.replace(/\\.[^.]+$/, '')\n\t\t.replace(/[^a-zA-Z_$0-9]+/g, '_')\n\t\t.replace(/^_/, '')\n\t\t.replace(/_$/, '')\n\t\t.replace(/^(\\d)/, '_$1');\n\n\tif (!base) {\n\t\tthrow new Error(`Could not derive component name from file ${filename}`);\n\t}\n\n\treturn base[0].toUpperCase() + base.slice(1);\n}\n","import Stats from '../Stats';\nimport parse from '../parse/index';\nimport render_dom from './render_dom/index';\nimport render_ssr from './render_ssr/index';\nimport { CompileOptions, Warning } from '../interfaces';\nimport Component from './Component';\nimport fuzzymatch from '../utils/fuzzymatch';\nimport get_name_from_filename from './utils/get_name_from_filename';\n\nconst valid_options = [\n\t'format',\n\t'name',\n\t'filename',\n\t'generate',\n\t'outputFilename',\n\t'cssOutputFilename',\n\t'sveltePath',\n\t'dev',\n\t'accessors',\n\t'immutable',\n\t'hydratable',\n\t'legacy',\n\t'customElement',\n\t'tag',\n\t'css',\n\t'loopGuardTimeout',\n\t'preserveComments',\n\t'preserveWhitespace'\n];\n\nfunction validate_options(options: CompileOptions, warnings: Warning[]) {\n\tconst { name, filename, loopGuardTimeout, dev } = options;\n\n\tObject.keys(options).forEach(key => {\n\t\tif (!valid_options.includes(key)) {\n\t\t\tconst match = fuzzymatch(key, valid_options);\n\t\t\tlet message = `Unrecognized option '${key}'`;\n\t\t\tif (match) message += ` (did you mean '${match}'?)`;\n\n\t\t\tthrow new Error(message);\n\t\t}\n\t});\n\n\tif (name && !/^[a-zA-Z_$][a-zA-Z_$0-9]*$/.test(name)) {\n\t\tthrow new Error(`options.name must be a valid identifier (got '${name}')`);\n\t}\n\n\tif (name && /^[a-z]/.test(name)) {\n\t\tconst message = 'options.name should be capitalised';\n\t\twarnings.push({\n\t\t\tcode: 'options-lowercase-name',\n\t\t\tmessage,\n\t\t\tfilename,\n\t\t\ttoString: () => message\n\t\t});\n\t}\n\n\tif (loopGuardTimeout && !dev) {\n\t\tconst message = 'options.loopGuardTimeout is for options.dev = true only';\n\t\twarnings.push({\n\t\t\tcode: 'options-loop-guard-timeout',\n\t\t\tmessage,\n\t\t\tfilename,\n\t\t\ttoString: () => message\n\t\t});\n\t}\n}\n\nexport default function compile(source: string, options: CompileOptions = {}) {\n\toptions = Object.assign({ generate: 'dom', dev: false }, options);\n\n\tconst stats = new Stats();\n\tconst warnings = [];\n\n\tvalidate_options(options, warnings);\n\n\tstats.start('parse');\n\tconst ast = parse(source, options);\n\tstats.stop('parse');\n\n\tstats.start('create component');\n\tconst component = new Component(\n\t\tast,\n\t\tsource,\n\t\toptions.name || get_name_from_filename(options.filename) || 'Component',\n\t\toptions,\n\t\tstats,\n\t\twarnings\n\t);\n\tstats.stop('create component');\n\n\tconst result = options.generate === false\n\t\t? null\n\t\t: options.generate === 'ssr'\n\t\t\t? render_ssr(component, options)\n\t\t\t: render_dom(component, options);\n\n\treturn component.generate(result);\n}\n","export interface Processed {\n\tcode: string;\n\tmap?: object | string;\n\tdependencies?: string[];\n}\n\nexport interface PreprocessorGroup {\n\tmarkup?: (options: {\n\t\tcontent: string;\n\t\tfilename: string;\n\t}) => Processed | Promise<Processed>;\n\tstyle?: Preprocessor;\n\tscript?: Preprocessor;\n}\n\nexport type Preprocessor = (options: {\n\tcontent: string;\n\tattributes: Record<string, string | boolean>;\n\tfilename?: string;\n}) => Processed | Promise<Processed>;\n\nfunction parse_attributes(str: string) {\n\tconst attrs = {};\n\tstr.split(/\\s+/).filter(Boolean).forEach(attr => {\n\t\tconst p = attr.indexOf('=');\n\t\tif (p === -1) {\n\t\t\tattrs[attr] = true;\n\t\t} else {\n\t\t\tattrs[attr.slice(0, p)] = '\\'\"'.includes(attr[p + 1]) ?\n\t\t\t\tattr.slice(p + 2, -1) :\n\t\t\t\tattr.slice(p + 1);\n\t\t}\n\t});\n\treturn attrs;\n}\n\ninterface Replacement {\n\toffset: number;\n\tlength: number;\n\treplacement: string;\n}\n\nasync function replace_async(str: string, re: RegExp, func: (...any) => Promise<string>) {\n\tconst replacements: Array<Promise<Replacement>> = [];\n\tstr.replace(re, (...args) => {\n\t\treplacements.push(\n\t\t\tfunc(...args).then(\n\t\t\t\tres =>\n\t\t\t\t\t({\n\t\t\t\t\t\toffset: args[args.length - 2],\n\t\t\t\t\t\tlength: args[0].length,\n\t\t\t\t\t\treplacement: res\n\t\t\t\t\t}) as Replacement\n\t\t\t)\n\t\t);\n\t\treturn '';\n\t});\n\tlet out = '';\n\tlet last_end = 0;\n\tfor (const { offset, length, replacement } of await Promise.all(\n\t\treplacements\n\t)) {\n\t\tout += str.slice(last_end, offset) + replacement;\n\t\tlast_end = offset + length;\n\t}\n\tout += str.slice(last_end);\n\treturn out;\n}\n\nexport default async function preprocess(\n\tsource: string,\n\tpreprocessor: PreprocessorGroup | PreprocessorGroup[],\n\toptions?: { filename?: string }\n) {\n\t// @ts-ignore todo: doublecheck\n\tconst filename = (options && options.filename) || preprocessor.filename; // legacy\n\tconst dependencies = [];\n\n\tconst preprocessors = Array.isArray(preprocessor) ? preprocessor : [preprocessor];\n\n\tconst markup = preprocessors.map(p => p.markup).filter(Boolean);\n\tconst script = preprocessors.map(p => p.script).filter(Boolean);\n\tconst style = preprocessors.map(p => p.style).filter(Boolean);\n\n\tfor (const fn of markup) {\n\t\tconst processed = await fn({\n\t\t\tcontent: source,\n\t\t\tfilename\n\t\t});\n\t\tif (processed && processed.dependencies) dependencies.push(...processed.dependencies);\n\t\tsource = processed ? processed.code : source;\n\t}\n\n\tfor (const fn of script) {\n\t\tsource = await replace_async(\n\t\t\tsource,\n\t\t\t/<!--[^]*?-->|<script(\\s[^]*?)?(?:>([^]*?)<\\/script>|\\/>)/gi,\n\t\t\tasync (match, attributes = '', content = '') => {\n\t\t\t\tif (!attributes && !content) {\n\t\t\t\t\treturn match;\n\t\t\t\t}\n\t\t\t\tattributes = attributes || '';\n\t\t\t\tconst processed = await fn({\n\t\t\t\t\tcontent,\n\t\t\t\t\tattributes: parse_attributes(attributes),\n\t\t\t\t\tfilename\n\t\t\t\t});\n\t\t\t\tif (processed && processed.dependencies) dependencies.push(...processed.dependencies);\n\t\t\t\treturn processed ? `<script${attributes}>${processed.code}</script>` : match;\n\t\t\t}\n\t\t);\n\t}\n\n\tfor (const fn of style) {\n\t\tsource = await replace_async(\n\t\t\tsource,\n\t\t\t/<!--[^]*?-->|<style(\\s[^]*?)?(?:>([^]*?)<\\/style>|\\/>)/gi,\n\t\t\tasync (match, attributes = '', content = '') => {\n\t\t\t\tif (!attributes && !content) {\n\t\t\t\t\treturn match;\n\t\t\t\t}\n\t\t\t\tconst processed: Processed = await fn({\n\t\t\t\t\tcontent,\n\t\t\t\t\tattributes: parse_attributes(attributes),\n\t\t\t\t\tfilename\n\t\t\t\t});\n\t\t\t\tif (processed && processed.dependencies) dependencies.push(...processed.dependencies);\n\t\t\t\treturn processed ? `<style${attributes}>${processed.code}</style>` : match;\n\t\t\t}\n\t\t);\n\t}\n\n\treturn {\n\t\t// TODO return separated output, in future version where svelte.compile supports it:\n\t\t// style: { code: styleCode, map: styleMap },\n\t\t// script { code: scriptCode, map: scriptMap },\n\t\t// markup { code: markupCode, map: markupMap },\n\n\t\tcode: source,\n\t\tdependencies: [...new Set(dependencies)],\n\n\t\ttoString() {\n\t\t\treturn source;\n\t\t}\n\t};\n}\n","export { default as compile } from './compile/index';\nexport { default as parse } from './parse/index';\nexport { default as preprocess } from './preprocess/index';\nexport { walk } from 'estree-walker';\n\nexport const VERSION = '__VERSION__';\n"],"names":["Scope","is_reference","parse$1","parseExpressionAt$1","parse","parseExpressionAt","code_red.parse","code_red.parseExpressionAt","acorn.parse","PUNCTUATION","constants","STOP_URL_RAW","TYPE","PUNCTUATOR","TAB","N","F","R","SPACE","NAME","SYMBOL_TYPE","firstCharOffset","cmpStr","isNumber","findLastNonSpaceLocation","findWhiteSpaceEnd","findCommentEnd","findStringEnd","findNumberEnd","findIdentifierEnd","findUrlRawEnd","WHITESPACE","IDENTIFIER","NUMBER","STRING","COMMENT","CDO","CDC","ATRULE","FUNCTION","URL","RAW","FULLSTOP","PLUSSIGN","HYPHENMINUS","SafeUint32Array","CssSyntaxError","require$$0","List","Tokenizer","cmpChar","LEFTPARENTHESIS","LEFTSQUAREBRACKET","NUMBERSIGN","SOLIDUS","ASTERISK","GREATERTHANSIGN","COMMA","EXCLAMATIONMARK","require$$1","require$$2","require$$3","LEFTCURLYBRACKET","COLON","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","SEMICOLON","RIGHTCURLYBRACKET","consumeRaw","RIGHTSQUAREBRACKET","VERTICALLINE","TILDE","DOLLARSIGN","RIGHTPARENTHESIS","isHex","PERCENTSIGN","endsWith","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18","require$$19","require$$20","require$$21","require$$22","require$$23","require$$24","require$$25","require$$26","require$$27","require$$28","require$$29","require$$30","require$$31","require$$32","require$$33","require$$34","require$$35","require$$36","require$$37","require$$38","require$$39","createParser","config","list","error","Parser","Block","EventHandler","to_string","Node","is_dynamic","Binding","AwaitBlock","Body","DebugTag","EachBlock","Element","Head","IfBlock","InlineComponent","KeyBlock","MustacheTag","RawMustacheTag","Slot","Text","Title","Window","flatten","trimmable_at","noop","handlers","Comment","Tag","Renderer","wrappers","btoa","toString","getLocator","Selector","Rule","Declaration","Atrule","svg","render_ssr","render_dom"],"mappings":"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,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;;AAG9yC,IAAI,qBAAqB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAA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ACf,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;I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ACX,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;I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"}
\No newline at end of file