UNPKG

1.84 MBSource Map (JSON)View Raw
1{"version":3,"file":"compiler.js","sources":["src/runtime/internal/utils.ts","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/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/get_object.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/render_dom/wrappers/shared/get_slot_definition.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/render_dom/wrappers/shared/is_dynamic.ts","src/compiler/utils/nodes_match.ts","src/compiler/compile/render_dom/invalidate.ts","src/compiler/compile/utils/reserved_keywords.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/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/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/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/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":["export function noop() {}\n\nexport const identity = x => x;\n\nexport function assign<T, S>(tar: T, src: S): T & S {\n\t// @ts-ignore\n\tfor (const k in src) tar[k] = src[k];\n\treturn tar as T & S;\n}\n\nexport function is_promise<T = any>(value: any): value is PromiseLike<T> {\n\treturn value && typeof value === 'object' && typeof value.then === 'function';\n}\n\nexport function add_location(element, file, line, column, char) {\n\telement.__svelte_meta = {\n\t\tloc: { file, line, column, char }\n\t};\n}\n\nexport function run(fn) {\n\treturn fn();\n}\n\nexport function blank_object() {\n\treturn Object.create(null);\n}\n\nexport function run_all(fns) {\n\tfns.forEach(run);\n}\n\nexport function is_function(thing: any): thing is Function {\n\treturn typeof thing === 'function';\n}\n\nexport function safe_not_equal(a, b) {\n\treturn a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function');\n}\n\nexport function not_equal(a, b) {\n\treturn a != a ? b == b : a !== b;\n}\n\nexport function is_empty(obj) {\n\treturn Object.keys(obj).length === 0;\n}\n\nexport function validate_store(store, name) {\n\tif (store != null && typeof store.subscribe !== 'function') {\n\t\tthrow new Error(`'${name}' is not a store with a 'subscribe' method`);\n\t}\n}\n\nexport function subscribe(store, ...callbacks) {\n\tif (store == null) {\n\t\treturn noop;\n\t}\n\tconst unsub = store.subscribe(...callbacks);\n\treturn unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;\n}\n\nexport function get_store_value(store) {\n\tlet value;\n\tsubscribe(store, _ => value = _)();\n\treturn value;\n}\n\nexport function component_subscribe(component, store, callback) {\n\tcomponent.$$.on_destroy.push(subscribe(store, callback));\n}\n\nexport function create_slot(definition, ctx, $$scope, fn) {\n\tif (definition) {\n\t\tconst slot_ctx = get_slot_context(definition, ctx, $$scope, fn);\n\t\treturn definition[0](slot_ctx);\n\t}\n}\n\nexport function get_slot_context(definition, ctx, $$scope, fn) {\n\treturn definition[1] && fn\n\t\t? assign($$scope.ctx.slice(), definition[1](fn(ctx)))\n\t\t: $$scope.ctx;\n}\n\nexport function get_slot_changes(definition, $$scope, dirty, fn) {\n\tif (definition[2] && fn) {\n\t\tconst lets = definition[2](fn(dirty));\n\n\t\tif ($$scope.dirty === undefined) {\n\t\t\treturn lets;\n\t\t}\n\n\t\tif (typeof lets === 'object') {\n\t\t\tconst merged = [];\n\t\t\tconst len = Math.max($$scope.dirty.length, lets.length);\n\t\t\tfor (let i = 0; i < len; i += 1) {\n\t\t\t\tmerged[i] = $$scope.dirty[i] | lets[i];\n\t\t\t}\n\n\t\t\treturn merged;\n\t\t}\n\n\t\treturn $$scope.dirty | lets;\n\t}\n\n\treturn $$scope.dirty;\n}\n\nexport function update_slot(slot, slot_definition, ctx, $$scope, dirty, get_slot_changes_fn, get_slot_context_fn) {\n\tconst slot_changes = get_slot_changes(slot_definition, $$scope, dirty, get_slot_changes_fn);\n\tif (slot_changes) {\n\t\tconst slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);\n\t\tslot.p(slot_context, slot_changes);\n\t}\n}\n\nexport function exclude_internal_props(props) {\n\tconst result = {};\n\tfor (const k in props) if (k[0] !== '$') result[k] = props[k];\n\treturn result;\n}\n\nexport function compute_rest_props(props, keys) {\n\tconst rest = {};\n\tkeys = new Set(keys);\n\tfor (const k in props) if (!keys.has(k) && k[0] !== '$') rest[k] = props[k];\n\treturn rest;\n}\n\nexport function once(fn) {\n\tlet ran = false;\n\treturn function(this: any, ...args) {\n\t\tif (ran) return;\n\t\tran = true;\n\t\tfn.call(this, ...args);\n\t};\n}\n\nexport function null_to_empty(value) {\n\treturn value == null ? '' : value;\n}\n\nexport function set_store_value(store, ret, value = ret) {\n\tstore.set(value);\n\treturn ret;\n}\n\nexport const has_prop = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);\n\nexport function action_destroyer(action_result) {\n\treturn action_result && is_function(action_result.destroy) ? action_result.destroy : noop;\n}","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); }\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) { return this.finishOp(code === 124 ? types.logicalOR : types.logicalAND, 2) }\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 if (this.options.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) { return this.finishOp(types.coalesce, 2) }\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) {\n var start = this.pos, total = 0;\n for (var i = 0, e = len == null ? Infinity : len; i < e; ++i) {\n var code = this.input.charCodeAt(this.pos), val = (void 0);\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 ++this.pos;\n total = total * radix + val;\n }\n if (this.pos === start || len != null && this.pos - start !== len) { return null }\n\n return total\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 = typeof BigInt !== \"undefined\" ? BigInt(this.input.slice(start, this.pos)) : null;\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) === 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 str$1 = this.input.slice(start, this.pos);\n var val$1 = typeof BigInt !== \"undefined\" ? BigInt(str$1) : null;\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 str = this.input.slice(start, this.pos);\n var val = octal ? parseInt(str, 8) : parseFloat(str);\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.3.1\";\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\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: 11,\n\tlocations: true\n});\n\nexport const parse_expression_at = (source: string, index: number): Node => code_red.parseExpressionAt(source, index, {\n\tecmaVersion: 11,\n\tlocations: true\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) parser.error({\n\t\tcode: `unclosed-script`,\n\t\tmessage: `<script> must have a closing tag`\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}","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'encodeURI',\n\t'encodeURIComponent',\n\t'Error',\n\t'EvalError',\n\t'Event',\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'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\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') {\n\t\t// special case\n\t\tconst start = parser.index;\n\t\tconst data = parser.read_until(/<\\/script>/);\n\t\tconst end = parser.index;\n\t\telement.children.push({ start, end, type: 'Text', data });\n\t\tparser.eat('</script>', true);\n\t\telement.end = parser.index;\n\t} else if (name === 'style') {\n\t\t// special case\n\t\tconst start = parser.index;\n\t\tconst data = parser.read_until(/<\\/style>/);\n\t\tconst end = parser.index;\n\t\telement.children.push({ start, end, type: 'Text', data });\n\t\tparser.eat('</style>', true);\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}","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} or {/await}\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 {\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}\n\n\t\t// :else\n\t\telse {\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 {\n\t\t\tparser.error({\n\t\t\t\tcode: `expected-block-type`,\n\t\t\t\tmessage: `Expected if, each or await`\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) parser.error({\n\t\t\t\t\tcode: `expected-name`,\n\t\t\t\t\tmessage: `Expected name`\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}","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\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}","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 BlockOptions {\n\tparent?: Block;\n\tname: Identifier;\n\ttype: string;\n\trenderer?: Renderer;\n\tcomment?: string;\n\tkey?: Identifier;\n\tbindings?: Map<string, {\n\t\tobject: Identifier;\n\t\tproperty: Identifier;\n\t\tsnippet: Node;\n\t\tstore: string;\n\t\ttail: Node;\n\t\tmodifier: (node: Node) => Node;\n\t}>;\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, {\n\t\tobject: Identifier;\n\t\tproperty: Identifier;\n\t\tsnippet: Node;\n\t\tstore: string;\n\t\ttail: Node;\n\t\tmodifier: (node: Node) => Node;\n\t}>;\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}","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 += 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.push(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\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\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${this.then.value && b`#child_ctx[${this.then.value_index}] = ${info}.resolved;`}\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${this.then.value && b`#child_ctx[${this.then.value_index}] = ${info}.resolved;`}\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 = ['passive', 'once', 'capture'].filter(mod => this.node.modifiers.has(mod));\n\t\tif (opts.length) {\n\t\t\targs.push((opts.length === 1 && opts[0] === 'capture')\n\t\t\t\t? TRUE\n\t\t\t\t: x`{ ${opts.map(opt => p`${opt}: true`)} }`);\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 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';\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 store =\n\t\t\tnode.expression.node.type === 'Identifier' &&\n\t\t\tnode.expression.node.name[0] === '$'\n\t\t\t\t? node.expression.node.name.slice(1)\n\t\t\t\t: 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\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\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\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\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\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\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 '\"': '&quot;',\n \"'\": '&#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}","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\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}","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}\n\n\t\telse {\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, 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 { 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}","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}","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 fn = block.renderer.reference(action.name);\n\n\tblock.event_listeners.push(\n\t\tx`@action_destroyer(${id} = ${fn}.call(null, ${target}, ${snippet}))`\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 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}","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 );\n case 'Literal':\n return 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}","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","import { Var } from '../../../../interfaces';\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}\n\n\treturn false;\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}","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 || x`${variable.name}`;\n\t\t}\n\n\t\treturn renderer.invalidate(variable.name);\n\t}\n\n\tif (head) {\n\t\tcomponent.has_reactive_assignments = true;\n\n\t\tif (node.type === 'AssignmentExpression' && node.operator === '=' && nodes_match(node.left, node.right) && tail.length === 0) {\n\t\t\treturn get_invalidated(head, node);\n\t\t} else {\n\t\t\tconst is_store_value = head.name[0] === '$' && head.name[1] !== '$';\n\t\t\tconst extra_args = tail.map(variable => get_invalidated(variable));\n\n\t\t\tconst pass_value = (\n\t\t\t\textra_args.length > 0 ||\n\t\t\t\t(node.type === 'AssignmentExpression' && node.left.type !== 'Identifier') ||\n\t\t\t\t(node.type === 'UpdateExpression' && (!node.prefix || node.argument.type !== 'Identifier'))\n\t\t\t);\n\n\t\t\tif (pass_value) {\n\t\t\t\textra_args.unshift({\n\t\t\t\t\ttype: 'Identifier',\n\t\t\t\t\tname: head.name\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tlet invalidate = is_store_value\n\t\t\t\t? x`@set_store_value(${head.name.slice(1)}, ${node}, ${extra_args})`\n\t\t\t\t: !main_execution_context\n\t\t\t\t\t? x`$$invalidate(${renderer.context_lookup.get(head.name).index}, ${node}, ${extra_args})`\n\t\t\t\t\t: node;\n\n\t\t\tif (head.subscribable && head.reassigned) {\n\t\t\t\tconst subscribe = `$$subscribe_${head.name}`;\n\t\t\t\tinvalidate = x`${subscribe}(${invalidate})`;\n\t\t\t}\n\n\t\t\treturn invalidate;\n\t\t}\n\t}\n\n\treturn node;\n}","export const reserved_keywords = new Set([\"$$props\", \"$$restProps\"]);\n\nexport function is_reserved_keyword(name) {\n\treturn reserved_keywords.has(name);\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 Wrapper from '../../render_dom/wrappers/shared/Wrapper';\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 { TemplateNode } from '../../../interfaces';\nimport { is_reserved_keyword } from '../../utils/reserved_keywords';\nimport replace_object from '../../utils/replace_object';\nimport EachBlock from '../EachBlock';\n\ntype Owner = Wrapper | TemplateNode;\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\t// todo: owner type\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\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}\n\n\t\t\t\t\telse 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}\n\n\t\t\t\t\telse {\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\n\t\t\t\t\t\t(node as FunctionExpression).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...(node as FunctionExpression).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\tif ((node as FunctionExpression).params.length > 0) {\n\t\t\t\t\t\t\tdeclarations.push(b`\n\t\t\t\t\t\t\t\tfunction ${id}(...args) {\n\t\t\t\t\t\t\t\t\treturn ${callee}(${context_args}, ...args);\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 {\n\t\t\t\t\t\t\tdeclarations.push(b`\n\t\t\t\t\t\t\t\tfunction ${id}() {\n\t\t\t\t\t\t\t\t\treturn ${callee}(${context_args});\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\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\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.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}","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}","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}\n\n\t\telse {\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 Renderer from '../../Renderer';\nimport Element from '../../../nodes/Element';\nimport Wrapper from '../shared/Wrapper';\nimport Block from '../../Block';\nimport { is_void, sanitize } 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 InlineComponentWrapper from '../InlineComponent';\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 create_debugging_comment from '../shared/create_debugging_comment';\nimport { get_slot_definition } from '../shared/get_slot_definition';\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';\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\t// TODO make separate subclass for this?\n\t\t\t\tlet owner = this.parent;\n\t\t\t\twhile (owner) {\n\t\t\t\t\tif (owner.node.type === 'InlineComponent') {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (owner.node.type === 'Element' && /-/.test(owner.node.name)) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\towner = owner.parent;\n\t\t\t\t}\n\n\t\t\t\tif (owner && owner.node.type === 'InlineComponent') {\n\t\t\t\t\tconst name = attribute.get_static_value() as string;\n\n\t\t\t\t\tif (!(owner as unknown as InlineComponentWrapper).slots.has(name)) {\n\t\t\t\t\t\tconst child_block = block.child({\n\t\t\t\t\t\t\tcomment: create_debugging_comment(node, this.renderer.component),\n\t\t\t\t\t\t\tname: this.renderer.component.get_unique_name(`create_${sanitize(name)}_slot`),\n\t\t\t\t\t\t\ttype: 'slot'\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconst { scope, lets } = this.node;\n\t\t\t\t\t\tconst seen = new Set(lets.map(l => l.name.name));\n\n\t\t\t\t\t\t(owner as unknown as InlineComponentWrapper).node.lets.forEach(l => {\n\t\t\t\t\t\t\tif (!seen.has(l.name.name)) lets.push(l);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t(owner as unknown as InlineComponentWrapper).slots.set(\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\tget_slot_definition(child_block, scope, lets)\n\t\t\t\t\t\t);\n\t\t\t\t\t\tthis.renderer.blocks.push(child_block);\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.slot_block = (owner as unknown as InlineComponentWrapper).slots.get(name).block;\n\t\t\t\t\tblock = this.slot_block;\n\t\t\t\t}\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}\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}\n\n\t\telse {\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\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}\n\n\t\telse 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}\n\n\t\telse if (wrapper.node.name === 'noscript') {\n\t\t\t// do nothing\n\t\t}\n\n\t\telse {\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\tstate.quasi.value.raw += '>';\n\n\t\t\tif (!wrapper.void) {\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}\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}\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 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';\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(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}","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';\n\nexport default class SlotWrapper extends Wrapper {\n\tnode: Slot;\n\tfragment: FragmentWrapper;\n\tfallback: Block | null = null;\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\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\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 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\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\tconst variable = this.component.var_lookup.get(name);\n\t\t\tmember.variable = variable;\n\t\t}\n\n\t\treturn member;\n\t}\n\n\tinvalidate(name: string, value?) {\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 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_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\tif (prop.name[0] === '$') return false;\n\t\treturn true;\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${instance_javascript}\n\n\t\t\t\t${unknown_props_check}\n\n\t\t\t\t${component.slots.size || component.compile_options.dev ? b`let { $$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\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\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 }, ${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}","// 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}","import Renderer, { RenderOptions } from '../Renderer';\nimport Slot from '../../nodes/Slot';\nimport { x } from 'code-red';\nimport get_slot_data from '../../utils/get_slot_data';\n\nexport default function(node: Slot, renderer: Renderer, options: RenderOptions) {\n\tconst slot_data = get_slot_data(node.values);\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","\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 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\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 { extract_names } from '../utils/scope';\nimport { LabeledStatement, Statement, ExpressionStatement, AssignmentExpression, 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 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 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) {\n\t\t\tconst declared = extract_names(d.declaration);\n\t\t\tconst injected = declared.filter(name => {\n\t\t\t\treturn name[0] !== '$' && component.var_lookup.get(name).injected;\n\t\t\t});\n\n\t\t\tconst self_dependencies = injected.filter(name => d.dependencies.has(name));\n\n\t\t\tif (injected.length) {\n\t\t\t\t// in some cases we need to do `let foo; [expression]`, in\n\t\t\t\t// others we can do `let [expression]`\n\t\t\t\tconst separate = (\n\t\t\t\t\tself_dependencies.length > 0 ||\n\t\t\t\t\tdeclared.length > injected.length\n\t\t\t\t);\n\n\t\t\t\tconst { left, right } = (body as ExpressionStatement).expression as AssignmentExpression;\n\n\t\t\t\tstatement = separate\n\t\t\t\t\t? b`\n\t\t\t\t\t\t${injected.map(name => b`let ${name};`)}\n\t\t\t\t\t\t${statement}`\n\t\t\t\t\t: b`\n\t\t\t\t\t\tlet ${left} = ${right}`;\n\t\t\t}\n\t\t} else { // 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${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${reactive_declarations}\n\n\t\t\treturn ${literal};`;\n\n\tconst blocks = [\n\t\trest,\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}\n\n\telse if (node.type === 'ConditionalExpression') {\n\t\tgather_possible_values(node.consequent, set);\n\t\tgather_possible_values(node.alternate, set);\n\t}\n\n\telse {\n\t\tset.add(UNKNOWN);\n\t}\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';\n\nenum BlockAppliesToNode {\n\tNotPossible,\n\tPossible,\n\tUnknownSelectorType\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, stack: Element[]) {\n\t\tconst to_encapsulate: any[] = [];\n\n\t\tapply_selector(this.local_blocks.slice(), node, stack.slice(), 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\t\tattr = attr.repeat(amount_class_specificity_to_increase + 1);\n\n\t\tfunction encapsulate_block(block: Block) {\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) => {\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\n\t\t\tif (block.should_encapsulate) encapsulate_block(block);\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, stack: Element[], to_encapsulate: any[]): boolean {\n\tconst block = blocks.pop();\n\tif (!block) return false;\n\n\tif (!node) {\n\t\treturn 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\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\tfor (const stack_node of stack) {\n\t\t\t\t\tif (block_might_apply_to_node(ancestor_block, stack_node) !== BlockAppliesToNode.NotPossible) {\n\t\t\t\t\t\tto_encapsulate.push({ node: stack_node, 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, stack.pop(), stack, 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}\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, node): 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}\n\n\t\telse if (selector.type === 'IdSelector') {\n\t\t\tif (!attribute_matches(node, 'id', name, '=', false)) return BlockAppliesToNode.NotPossible;\n\t\t}\n\n\t\telse if (selector.type === 'AttributeSelector') {\n\t\t\tif (!attribute_matches(node, selector.name.name, selector.value && unquote(selector.value), selector.matcher, selector.flags)) return BlockAppliesToNode.NotPossible;\n\t\t}\n\n\t\telse if (selector.type === 'TypeSelector') {\n\t\t\tif (node.name.toLowerCase() !== name.toLowerCase() && name !== '*') return BlockAppliesToNode.NotPossible;\n\t\t}\n\n\t\telse {\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\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}","import MagicString from 'magic-string';\nimport { walk } from 'estree-walker';\nimport Selector from './Selector';\nimport Element from '../nodes/Element';\nimport { Ast, TemplateNode } 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, stack: Element[]) {\n\t\tthis.selectors.forEach(selector => selector.apply(node, stack)); // 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, stack: 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, stack);\n\t\t\t});\n\t\t}\n\n\t\telse 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\tconst stack: Element[] = [];\n\t\tlet parent: TemplateNode = node;\n\t\twhile (parent = parent.parent) {\n\t\t\tif (parent.type === 'Element') stack.unshift(parent as Element);\n\t\t}\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, stack);\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`\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;","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}\n\n\t\t\telse {\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}","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 use 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}\n\n\t\telse {\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) component.error(this.expression.node, {\n\t\t\t\tcode: 'binding-undeclared',\n\t\t\t\tmessage: `${name} is not declared`\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) component.error(this.expression.node, {\n\t\t\t\tcode: 'invalid-binding',\n\t\t\t\tmessage: 'Cannot bind to a variable which is not writable',\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, true)\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}","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 use 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}","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}","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';\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'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, 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.stylesheet.apply(this);\n\t}\n\n\tvalidate() {\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\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')) {\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 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}\n\n\t\t\telse 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}\n\n\t\t\telse if (node.type === 'Action') {\n\t\t\t\tthis.actions.push(new Action(component, this, scope, node));\n\t\t\t}\n\n\t\t\telse {\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 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 '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\",\"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\",\"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_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';\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\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\tif (!compile_options.customElement) this.stylesheet.reify();\n\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\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}\n\n\t\t\t\t\t\telse 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}\n\n\t\t\t\t\t\t\telse 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)\n\t\t\t\treturn 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\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});\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\tconst insert = variable.subscribable\n\t\t\t\t\t\t\t\t\t? get_insert(variable)\n\t\t\t\t\t\t\t\t\t: null;\n\n\t\t\t\t\t\t\t\tparent[key].splice(index + 1, 0, insert);\n\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} else if (variable.subscribable) {\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\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});\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\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\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\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\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}","import { assign } from '../../runtime/internal/utils';\nimport 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 = 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","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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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;;CAE9yC;CACA,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,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EAAE,IAAI;KACd,QAAQ,EAAE,KAAK;KACf,QAAQ,EAAE,IAAI;KACd,QAAQ,EAAE,IAAI;KACd,QAAQ,EAAE,IAAI;KACd,QAAQ,EAAE,IAAI;KACd,QAAQ,EAAE,KAAK;KACf,QAAQ,EAAE,KAAK;KACf,QAAQ,EAAE,IAAI;KACd,QAAQ,EAAE,IAAI;KACd,QAAQ,EAAE,KAAK;KACf,QAAQ,EAAE,KAAK;KACf,QAAQ,EAAE,KAAK;KACf,QAAQ,EAAE,KAAK;KACf,QAAQ,EAAE,KAAK;KACf,QAAQ,EAAE,KAAK;KACf,QAAQ,EAAE,KAAK;KACf,QAAQ,EAAE,IAAI;KACd,QAAQ,EAAE,IAAI;KACd,QAAQ,EAAE,KAAK;KACf,QAAQ,EAAE,IAAI;KACd,QAAQ,EAAE,IAAI;KACd,QAAQ,EAAE,KAAK;KACf,QAAQ,EAAE,KAAK;KACf,QAAQ,EAAE,KAAK;KACf,QAAQ,EAAE,KAAK;KACf,QAAQ,EAAE,KAAK;KACf,QAAQ,EAAE,IAAI;KACd,QAAQ,EAAE,KAAK;KACf,QAAQ,EAAE,IAAI;KACd,QAAQ,EAAE,KAAK;KACf,QAAQ,EAAE,IAAI;KACd,QAAQ,EAAE,IAAI;KACd,QAAQ,EAAE,IAAI;KACd,QAAQ,EAAE,KAAK;KACf,QAAQ,EAAE,IAAI;KACd,QAAQ,EAAE,KAAK;KACf,QAAQ,EAAE,KAAK;KACf,QAAQ,EAAE,KAAK;KACf,QAAQ,EAAE,IAAI;KACd,QAAQ,EAAE,IAAI;KACd,QAAQ,EAAE,IAAI;KACd,QAAQ,EAAE,IAAI;KACd,QAAQ,EAAE,KAAK;KACf,QAAQ,EAAE,IAAI;KACd,QAAQ,EAAE,KAAK;KACf,QAAQ,EAAE,KAAK;KACf,QAAQ,EAAE,KAAK;KACf,QAAQ,EAAE,IAAI;KACd,QAAQ,EAAE,IAAI;KACd,QAAQ,EAAE,KAAK;KACf,QAAQ,EAAE,IAAI;KACd,QAAQ,EAAE,IAAI;KACd,QAAQ,EAAE,IAAI;KACd,QAAQ,EAAE,KAAK;KACf,QAAQ,EAAE,IAAI;KACd,QAAQ,EAAE,IAAI;KACd,QAAQ,EAAE,GAAG;KACb,QAAQ,EAAE,IAAI;KACd,QAAQ,EAAE,KAAK;KACf,QAAQ,EAAE,IAAI;KACd,QAAQ,EAAE,KAAK;KACf,QAAQ,EAAE,IAAI;KACd,QAAQ,EAAE,IAAI;KACd,QAAQ,EAAE,IAAI;KACd,QAAQ,EAAE,IAAI;KACd,QAAQ,EAAE,GAAG;KACb,QAAQ,EAAE,GAAG;KACb,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,GAAG;KACZ,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,GAAG;KACZ,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,EAAE;KACX,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,GAAG;KACZ,OAAO,EAAE,GAAG;KACZ,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,GAAG;KACZ,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,GAAG;KACZ,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,GAAG;KACZ,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,GAAG;KACZ,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,IAAI;KACb,OAAO,EAAE,GAAG;KACZ,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,KAAK;KACd,OAAO,EAAE,IAAI;KACb,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,EAAE;KACV,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,EAAE;KACV,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,EAAE;KACV,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,EAAE;KACV,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,EAAE;KACV,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,EAAE;KACV,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,EAAE;KACV,MAAM,EAAE,EAAE;KACV,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,EAAE;KACV,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,IAAI;KACZ,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,EAAE;KACT,KAAK,EAAE,EAAE;KACT,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,EAAE;KACT,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,EAAE;KACT,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,IAAI;KACX,KAAK,EAAE,GAAG;KACV,IAAI,EAAE,MAAM;KACZ,IAAI,EAAE,MAAM;KACZ,IAAI,EAAE,GAAG;KACT,IAAI,EAAE,KAAK;KACX,IAAI,EAAE,GAAG;KACT,IAAI,EAAE,MAAM;KACZ,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,GAAG;KACT,IAAI,EAAE,GAAG;KACT,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,MAAM;KACZ,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,IAAI;KACV,IAAI,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"}
\No newline at end of file