diff --git a/animate/index.d.ts b/animate/index.d.ts new file mode 100644 index 000000000000..58c06edb4848 --- /dev/null +++ b/animate/index.d.ts @@ -0,0 +1 @@ +export * from '../types/runtime/animate/index'; \ No newline at end of file diff --git a/animate/index.js b/animate/index.js new file mode 100644 index 000000000000..3e9e31874a1c --- /dev/null +++ b/animate/index.js @@ -0,0 +1,23 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var easing = require('../easing'); +var internal = require('../internal'); + +function flip(node, animation, params) { + const style = getComputedStyle(node); + const transform = style.transform === 'none' ? '' : style.transform; + const dx = animation.from.left - animation.to.left; + const dy = animation.from.top - animation.to.top; + const d = Math.sqrt(dx * dx + dy * dy); + const { delay = 0, duration = d => Math.sqrt(d) * 120, easing: easing$1 = easing.cubicOut } = params; + return { + delay, + duration: internal.is_function(duration) ? duration(d) : duration, + easing: easing$1, + css: (_t, u) => `transform: ${transform} translate(${u * dx}px, ${u * dy}px);` + }; +} + +exports.flip = flip; diff --git a/animate/index.mjs b/animate/index.mjs new file mode 100644 index 000000000000..8746f100f444 --- /dev/null +++ b/animate/index.mjs @@ -0,0 +1,19 @@ +import { cubicOut } from '../easing'; +import { is_function } from '../internal'; + +function flip(node, animation, params) { + const style = getComputedStyle(node); + const transform = style.transform === 'none' ? '' : style.transform; + const dx = animation.from.left - animation.to.left; + const dy = animation.from.top - animation.to.top; + const d = Math.sqrt(dx * dx + dy * dy); + const { delay = 0, duration = d => Math.sqrt(d) * 120, easing = cubicOut } = params; + return { + delay, + duration: is_function(duration) ? duration(d) : duration, + easing, + css: (_t, u) => `transform: ${transform} translate(${u * dx}px, ${u * dy}px);` + }; +} + +export { flip }; diff --git a/animate/package.json b/animate/package.json new file mode 100644 index 000000000000..598aeeaf5115 --- /dev/null +++ b/animate/package.json @@ -0,0 +1,5 @@ +{ + "main": "./index", + "module": "./index.mjs", + "types": "./index.d.ts" +} \ No newline at end of file diff --git a/compiler.d.ts b/compiler.d.ts new file mode 100644 index 000000000000..51080197eb7c --- /dev/null +++ b/compiler.d.ts @@ -0,0 +1 @@ +export * from './types/compiler/index'; \ No newline at end of file diff --git a/compiler.js b/compiler.js new file mode 100644 index 000000000000..971ac7afe339 --- /dev/null +++ b/compiler.js @@ -0,0 +1,23909 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = global || self, factory(global.svelte = {})); +}(this, function (exports) { 'use strict'; + + function assign(tar, src) { + // @ts-ignore + for (const k in src) + tar[k] = src[k]; + return tar; + } + + const now = (typeof process !== 'undefined' && process.hrtime) + ? () => { + const t = process.hrtime(); + return t[0] * 1e3 + t[1] / 1e6; + } + : () => self.performance.now(); + function collapse_timings(timings) { + const result = {}; + timings.forEach(timing => { + result[timing.label] = Object.assign({ + total: timing.end - timing.start + }, timing.children && collapse_timings(timing.children)); + }); + return result; + } + class Stats { + constructor() { + this.start_time = now(); + this.stack = []; + this.current_children = this.timings = []; + } + start(label) { + const timing = { + label, + start: now(), + end: null, + children: [] + }; + this.current_children.push(timing); + this.stack.push(timing); + this.current_timing = timing; + this.current_children = timing.children; + } + stop(label) { + if (label !== this.current_timing.label) { + throw new Error(`Mismatched timing labels (expected ${this.current_timing.label}, got ${label})`); + } + this.current_timing.end = now(); + this.stack.pop(); + this.current_timing = this.stack[this.stack.length - 1]; + this.current_children = this.current_timing ? this.current_timing.children : this.timings; + } + render() { + const timings = Object.assign({ + total: now() - this.start_time + }, collapse_timings(this.timings)); + return { + timings + }; + } + } + + // Reserved word lists for various dialects of the language + + var reservedWords = { + 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", + 5: "class enum extends super const export import", + 6: "enum", + strict: "implements interface let package private protected public static yield", + strictBind: "eval arguments" + }; + + // And the keywords + + var 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"; + + var keywords = { + 5: ecma5AndLessKeywords, + 6: ecma5AndLessKeywords + " const class extends export import super" + }; + + var keywordRelationalOperator = /^in(stanceof)?$/; + + // ## Character categories + + // Big ugly regular expressions that match characters in the + // whitespace, identifier, and identifier-start categories. These + // are only applied when a character is found to actually have a + // code point above 128. + // Generated by `bin/generate-identifier-regex.js`. + + var nonASCIIidentifierStartChars = "aab5bac0-d6d8-f6f8-\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-\u08bd\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\u0d05-\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-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fef\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7bf\ua7c2-\ua7c6\ua7f7-\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-\uab67\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"; + var nonASCIIidentifierChars = "\u200c\u200db7\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\u0b56\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\u0d82\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\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\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"; + + var nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"); + var nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]"); + + nonASCIIidentifierStartChars = nonASCIIidentifierChars = null; + + // These are a run-length and offset encoded representation of the + // >0xffff code points that are a valid part of identifiers. The + // offset starts at 0x10000, and each pair of numbers represents an + // offset to the next range, and then a size of the range. They were + // generated by bin/generate-identifier-regex.js + + // eslint-disable-next-line comma-spacing + var 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,477,28,11,0,9,21,155,22,13,52,76,44,33,24,27,35,30,0,12,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,0,33,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,230,43,117,63,32,0,161,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,270,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,754,9486,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,42710,42,4148,12,221,3,5761,15,7472,3104,541]; + + // eslint-disable-next-line comma-spacing + var 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,525,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,4,9,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,232,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,19723,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,792487,239]; + + // This has a complexity linear to the value of the code. The + // assumption is that looking up astral identifier characters is + // rare. + function isInAstralSet(code, set) { + var pos = 0x10000; + for (var i = 0; i < set.length; i += 2) { + pos += set[i]; + if (pos > code) { return false } + pos += set[i + 1]; + if (pos >= code) { return true } + } + } + + // Test whether a given character code starts an identifier. + + function isIdentifierStart(code, astral) { + if (code < 65) { return code === 36 } + if (code < 91) { return true } + if (code < 97) { return code === 95 } + if (code < 123) { return true } + if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)) } + if (astral === false) { return false } + return isInAstralSet(code, astralIdentifierStartCodes) + } + + // Test whether a given character is part of an identifier. + + function isIdentifierChar(code, astral) { + if (code < 48) { return code === 36 } + if (code < 58) { return true } + if (code < 65) { return false } + if (code < 91) { return true } + if (code < 97) { return code === 95 } + if (code < 123) { return true } + if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)) } + if (astral === false) { return false } + return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes) + } + + // ## Token types + + // The assignment of fine-grained, information-carrying type objects + // allows the tokenizer to store the information it has about a + // token in a way that is very cheap for the parser to look up. + + // All token type variables start with an underscore, to make them + // easy to recognize. + + // The `beforeExpr` property is used to disambiguate between regular + // expressions and divisions. It is set on all token types that can + // be followed by an expression (thus, a slash after them would be a + // regular expression). + // + // The `startsExpr` property is used to check if the token ends a + // `yield` expression. It is set on all token types that either can + // directly start an expression (like a quotation mark) or can + // continue an expression (like the body of a string). + // + // `isLoop` marks a keyword as starting a loop, which is important + // to know when parsing a label, in order to allow or disallow + // continue jumps to that label. + + var TokenType = function TokenType(label, conf) { + if ( conf === void 0 ) conf = {}; + + this.label = label; + this.keyword = conf.keyword; + this.beforeExpr = !!conf.beforeExpr; + this.startsExpr = !!conf.startsExpr; + this.isLoop = !!conf.isLoop; + this.isAssign = !!conf.isAssign; + this.prefix = !!conf.prefix; + this.postfix = !!conf.postfix; + this.binop = conf.binop || null; + this.updateContext = null; + }; + + function binop(name, prec) { + return new TokenType(name, {beforeExpr: true, binop: prec}) + } + var beforeExpr = {beforeExpr: true}, startsExpr = {startsExpr: true}; + + // Map keyword names to token types. + + var keywords$1 = {}; + + // Succinct definitions of keyword token types + function kw(name, options) { + if ( options === void 0 ) options = {}; + + options.keyword = name; + return keywords$1[name] = new TokenType(name, options) + } + + var types = { + num: new TokenType("num", startsExpr), + regexp: new TokenType("regexp", startsExpr), + string: new TokenType("string", startsExpr), + name: new TokenType("name", startsExpr), + eof: new TokenType("eof"), + + // Punctuation token types. + bracketL: new TokenType("[", {beforeExpr: true, startsExpr: true}), + bracketR: new TokenType("]"), + braceL: new TokenType("{", {beforeExpr: true, startsExpr: true}), + braceR: new TokenType("}"), + parenL: new TokenType("(", {beforeExpr: true, startsExpr: true}), + parenR: new TokenType(")"), + comma: new TokenType(",", beforeExpr), + semi: new TokenType(";", beforeExpr), + colon: new TokenType(":", beforeExpr), + dot: new TokenType("."), + question: new TokenType("?", beforeExpr), + arrow: new TokenType("=>", beforeExpr), + template: new TokenType("template"), + invalidTemplate: new TokenType("invalidTemplate"), + ellipsis: new TokenType("...", beforeExpr), + backQuote: new TokenType("`", startsExpr), + dollarBraceL: new TokenType("${", {beforeExpr: true, startsExpr: true}), + + // Operators. These carry several kinds of properties to help the + // parser use them properly (the presence of these properties is + // what categorizes them as operators). + // + // `binop`, when present, specifies that this operator is a binary + // operator, and will refer to its precedence. + // + // `prefix` and `postfix` mark the operator as a prefix or postfix + // unary operator. + // + // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as + // binary operators with a very low precedence, that should result + // in AssignmentExpression nodes. + + eq: new TokenType("=", {beforeExpr: true, isAssign: true}), + assign: new TokenType("_=", {beforeExpr: true, isAssign: true}), + incDec: new TokenType("++/--", {prefix: true, postfix: true, startsExpr: true}), + prefix: new TokenType("!/~", {beforeExpr: true, prefix: true, startsExpr: true}), + logicalOR: binop("||", 1), + logicalAND: binop("&&", 2), + bitwiseOR: binop("|", 3), + bitwiseXOR: binop("^", 4), + bitwiseAND: binop("&", 5), + equality: binop("==/!=/===/!==", 6), + relational: binop("/<=/>=", 7), + bitShift: binop("<>/>>>", 8), + plusMin: new TokenType("+/-", {beforeExpr: true, binop: 9, prefix: true, startsExpr: true}), + modulo: binop("%", 10), + star: binop("*", 10), + slash: binop("/", 10), + starstar: new TokenType("**", {beforeExpr: true}), + + // Keyword token types. + _break: kw("break"), + _case: kw("case", beforeExpr), + _catch: kw("catch"), + _continue: kw("continue"), + _debugger: kw("debugger"), + _default: kw("default", beforeExpr), + _do: kw("do", {isLoop: true, beforeExpr: true}), + _else: kw("else", beforeExpr), + _finally: kw("finally"), + _for: kw("for", {isLoop: true}), + _function: kw("function", startsExpr), + _if: kw("if"), + _return: kw("return", beforeExpr), + _switch: kw("switch"), + _throw: kw("throw", beforeExpr), + _try: kw("try"), + _var: kw("var"), + _const: kw("const"), + _while: kw("while", {isLoop: true}), + _with: kw("with"), + _new: kw("new", {beforeExpr: true, startsExpr: true}), + _this: kw("this", startsExpr), + _super: kw("super", startsExpr), + _class: kw("class", startsExpr), + _extends: kw("extends", beforeExpr), + _export: kw("export"), + _import: kw("import", startsExpr), + _null: kw("null", startsExpr), + _true: kw("true", startsExpr), + _false: kw("false", startsExpr), + _in: kw("in", {beforeExpr: true, binop: 7}), + _instanceof: kw("instanceof", {beforeExpr: true, binop: 7}), + _typeof: kw("typeof", {beforeExpr: true, prefix: true, startsExpr: true}), + _void: kw("void", {beforeExpr: true, prefix: true, startsExpr: true}), + _delete: kw("delete", {beforeExpr: true, prefix: true, startsExpr: true}) + }; + + // Matches a whole line break (where CRLF is considered a single + // line break). Used to count lines. + + var lineBreak = /\r\n?|\n|\u2028|\u2029/; + var lineBreakG = new RegExp(lineBreak.source, "g"); + + function isNewLine(code, ecma2019String) { + return code === 10 || code === 13 || (!ecma2019String && (code === 0x2028 || code === 0x2029)) + } + + var nonASCIIwhitespace = /[\u1680\u2000-\u200a\u202f\u205f\u3000\ufeff]/; + + var skipWhiteSpace = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g; + + var ref = Object.prototype; + var hasOwnProperty = ref.hasOwnProperty; + var toString = ref.toString; + + // Checks if an object has a property. + + function has(obj, propName) { + return hasOwnProperty.call(obj, propName) + } + + var isArray = Array.isArray || (function (obj) { return ( + toString.call(obj) === "[object Array]" + ); }); + + function wordsRegexp(words) { + return new RegExp("^(?:" + words.replace(/ /g, "|") + ")$") + } + + // These are used when `options.locations` is on, for the + // `startLoc` and `endLoc` properties. + + var Position = function Position(line, col) { + this.line = line; + this.column = col; + }; + + Position.prototype.offset = function offset (n) { + return new Position(this.line, this.column + n) + }; + + var SourceLocation = function SourceLocation(p, start, end) { + this.start = start; + this.end = end; + if (p.sourceFile !== null) { this.source = p.sourceFile; } + }; + + // The `getLineInfo` function is mostly useful when the + // `locations` option is off (for performance reasons) and you + // want to find the line/column position for a given character + // offset. `input` should be the code string that the offset refers + // into. + + function getLineInfo(input, offset) { + for (var line = 1, cur = 0;;) { + lineBreakG.lastIndex = cur; + var match = lineBreakG.exec(input); + if (match && match.index < offset) { + ++line; + cur = match.index + match[0].length; + } else { + return new Position(line, offset - cur) + } + } + } + + // A second optional argument can be given to further configure + // the parser process. These options are recognized: + + var defaultOptions = { + // `ecmaVersion` indicates the ECMAScript version to parse. Must be + // either 3, 5, 6 (2015), 7 (2016), 8 (2017), 9 (2018), or 10 + // (2019). This influences support for strict mode, the set of + // reserved words, and support for new syntax features. The default + // is 9. + ecmaVersion: 9, + // `sourceType` indicates the mode the code should be parsed in. + // Can be either `"script"` or `"module"`. This influences global + // strict mode and parsing of `import` and `export` declarations. + sourceType: "script", + // `onInsertedSemicolon` can be a callback that will be called + // when a semicolon is automatically inserted. It will be passed + // the position of the comma as an offset, and if `locations` is + // enabled, it is given the location as a `{line, column}` object + // as second argument. + onInsertedSemicolon: null, + // `onTrailingComma` is similar to `onInsertedSemicolon`, but for + // trailing commas. + onTrailingComma: null, + // By default, reserved words are only enforced if ecmaVersion >= 5. + // Set `allowReserved` to a boolean value to explicitly turn this on + // an off. When this option has the value "never", reserved words + // and keywords can also not be used as property names. + allowReserved: null, + // When enabled, a return at the top level is not considered an + // error. + allowReturnOutsideFunction: false, + // When enabled, import/export statements are not constrained to + // appearing at the top of the program. + allowImportExportEverywhere: false, + // When enabled, await identifiers are allowed to appear at the top-level scope, + // but they are still not allowed in non-async functions. + allowAwaitOutsideFunction: false, + // When enabled, hashbang directive in the beginning of file + // is allowed and treated as a line comment. + allowHashBang: false, + // When `locations` is on, `loc` properties holding objects with + // `start` and `end` properties in `{line, column}` form (with + // line being 1-based and column 0-based) will be attached to the + // nodes. + locations: false, + // A function can be passed as `onToken` option, which will + // cause Acorn to call that function with object in the same + // format as tokens returned from `tokenizer().getToken()`. Note + // that you are not allowed to call the parser from the + // callback—that will corrupt its internal state. + onToken: null, + // A function can be passed as `onComment` option, which will + // cause Acorn to call that function with `(block, text, start, + // end)` parameters whenever a comment is skipped. `block` is a + // boolean indicating whether this is a block (`/* */`) comment, + // `text` is the content of the comment, and `start` and `end` are + // character offsets that denote the start and end of the comment. + // When the `locations` option is on, two more parameters are + // passed, the full `{line, column}` locations of the start and + // end of the comments. Note that you are not allowed to call the + // parser from the callback—that will corrupt its internal state. + onComment: null, + // Nodes have their start and end characters offsets recorded in + // `start` and `end` properties (directly on the node, rather than + // the `loc` object, which holds line/column data. To also add a + // [semi-standardized][range] `range` property holding a `[start, + // end]` array with the same numbers, set the `ranges` option to + // `true`. + // + // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678 + ranges: false, + // It is possible to parse multiple files into a single AST by + // passing the tree produced by parsing the first file as + // `program` option in subsequent parses. This will add the + // toplevel forms of the parsed file to the `Program` (top) node + // of an existing parse tree. + program: null, + // When `locations` is on, you can pass this to record the source + // file in every node's `loc` object. + sourceFile: null, + // This value, if given, is stored in every node, whether + // `locations` is on or off. + directSourceFile: null, + // When enabled, parenthesized expressions are represented by + // (non-standard) ParenthesizedExpression nodes + preserveParens: false + }; + + // Interpret and default an options object + + function getOptions(opts) { + var options = {}; + + for (var opt in defaultOptions) + { options[opt] = opts && has(opts, opt) ? opts[opt] : defaultOptions[opt]; } + + if (options.ecmaVersion >= 2015) + { options.ecmaVersion -= 2009; } + + if (options.allowReserved == null) + { options.allowReserved = options.ecmaVersion < 5; } + + if (isArray(options.onToken)) { + var tokens = options.onToken; + options.onToken = function (token) { return tokens.push(token); }; + } + if (isArray(options.onComment)) + { options.onComment = pushComment(options, options.onComment); } + + return options + } + + function pushComment(options, array) { + return function(block, text, start, end, startLoc, endLoc) { + var comment = { + type: block ? "Block" : "Line", + value: text, + start: start, + end: end + }; + if (options.locations) + { comment.loc = new SourceLocation(this, startLoc, endLoc); } + if (options.ranges) + { comment.range = [start, end]; } + array.push(comment); + } + } + + // Each scope gets a bitset that may contain these flags + var + SCOPE_TOP = 1, + SCOPE_FUNCTION = 2, + SCOPE_VAR = SCOPE_TOP | SCOPE_FUNCTION, + SCOPE_ASYNC = 4, + SCOPE_GENERATOR = 8, + SCOPE_ARROW = 16, + SCOPE_SIMPLE_CATCH = 32, + SCOPE_SUPER = 64, + SCOPE_DIRECT_SUPER = 128; + + function functionFlags(async, generator) { + return SCOPE_FUNCTION | (async ? SCOPE_ASYNC : 0) | (generator ? SCOPE_GENERATOR : 0) + } + + // Used in checkLVal and declareName to determine the type of a binding + var + BIND_NONE = 0, // Not a binding + BIND_VAR = 1, // Var-style binding + BIND_LEXICAL = 2, // Let- or const-style binding + BIND_FUNCTION = 3, // Function declaration + BIND_SIMPLE_CATCH = 4, // Simple (identifier pattern) catch binding + BIND_OUTSIDE = 5; // Special case for function names as bound inside the function + + var Parser = function Parser(options, input, startPos) { + this.options = options = getOptions(options); + this.sourceFile = options.sourceFile; + this.keywords = wordsRegexp(keywords[options.ecmaVersion >= 6 ? 6 : 5]); + var reserved = ""; + if (!options.allowReserved) { + for (var v = options.ecmaVersion;; v--) + { if (reserved = reservedWords[v]) { break } } + if (options.sourceType === "module") { reserved += " await"; } + } + this.reservedWords = wordsRegexp(reserved); + var reservedStrict = (reserved ? reserved + " " : "") + reservedWords.strict; + this.reservedWordsStrict = wordsRegexp(reservedStrict); + this.reservedWordsStrictBind = wordsRegexp(reservedStrict + " " + reservedWords.strictBind); + this.input = String(input); + + // Used to signal to callers of `readWord1` whether the word + // contained any escape sequences. This is needed because words with + // escape sequences must not be interpreted as keywords. + this.containsEsc = false; + + // Set up token state + + // The current position of the tokenizer in the input. + if (startPos) { + this.pos = startPos; + this.lineStart = this.input.lastIndexOf("\n", startPos - 1) + 1; + this.curLine = this.input.slice(0, this.lineStart).split(lineBreak).length; + } else { + this.pos = this.lineStart = 0; + this.curLine = 1; + } + + // Properties of the current token: + // Its type + this.type = types.eof; + // For tokens that include more information than their type, the value + this.value = null; + // Its start and end offset + this.start = this.end = this.pos; + // And, if locations are used, the {line, column} object + // corresponding to those offsets + this.startLoc = this.endLoc = this.curPosition(); + + // Position information for the previous token + this.lastTokEndLoc = this.lastTokStartLoc = null; + this.lastTokStart = this.lastTokEnd = this.pos; + + // The context stack is used to superficially track syntactic + // context to predict whether a regular expression is allowed in a + // given position. + this.context = this.initialContext(); + this.exprAllowed = true; + + // Figure out if it's a module code. + this.inModule = options.sourceType === "module"; + this.strict = this.inModule || this.strictDirective(this.pos); + + // Used to signify the start of a potential arrow function + this.potentialArrowAt = -1; + + // Positions to delayed-check that yield/await does not exist in default parameters. + this.yieldPos = this.awaitPos = this.awaitIdentPos = 0; + // Labels in scope. + this.labels = []; + // Thus-far undefined exports. + this.undefinedExports = {}; + + // If enabled, skip leading hashbang line. + if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === "#!") + { this.skipLineComment(2); } + + // Scope tracking for duplicate variable names (see scope.js) + this.scopeStack = []; + this.enterScope(SCOPE_TOP); + + // For RegExp validation + this.regexpState = null; + }; + + var prototypeAccessors = { inFunction: { configurable: true },inGenerator: { configurable: true },inAsync: { configurable: true },allowSuper: { configurable: true },allowDirectSuper: { configurable: true },treatFunctionsAsVar: { configurable: true } }; + + Parser.prototype.parse = function parse () { + var node = this.options.program || this.startNode(); + this.nextToken(); + return this.parseTopLevel(node) + }; + + prototypeAccessors.inFunction.get = function () { return (this.currentVarScope().flags & SCOPE_FUNCTION) > 0 }; + prototypeAccessors.inGenerator.get = function () { return (this.currentVarScope().flags & SCOPE_GENERATOR) > 0 }; + prototypeAccessors.inAsync.get = function () { return (this.currentVarScope().flags & SCOPE_ASYNC) > 0 }; + prototypeAccessors.allowSuper.get = function () { return (this.currentThisScope().flags & SCOPE_SUPER) > 0 }; + prototypeAccessors.allowDirectSuper.get = function () { return (this.currentThisScope().flags & SCOPE_DIRECT_SUPER) > 0 }; + prototypeAccessors.treatFunctionsAsVar.get = function () { return this.treatFunctionsAsVarInScope(this.currentScope()) }; + + // Switch to a getter for 7.0.0. + Parser.prototype.inNonArrowFunction = function inNonArrowFunction () { return (this.currentThisScope().flags & SCOPE_FUNCTION) > 0 }; + + Parser.extend = function extend () { + var plugins = [], len = arguments.length; + while ( len-- ) plugins[ len ] = arguments[ len ]; + + var cls = this; + for (var i = 0; i < plugins.length; i++) { cls = plugins[i](cls); } + return cls + }; + + Parser.parse = function parse (input, options) { + return new this(options, input).parse() + }; + + Parser.parseExpressionAt = function parseExpressionAt (input, pos, options) { + var parser = new this(options, input, pos); + parser.nextToken(); + return parser.parseExpression() + }; + + Parser.tokenizer = function tokenizer (input, options) { + return new this(options, input) + }; + + Object.defineProperties( Parser.prototype, prototypeAccessors ); + + var pp = Parser.prototype; + + // ## Parser utilities + + var literal = /^(?:'((?:\\.|[^'])*?)'|"((?:\\.|[^"])*?)")/; + pp.strictDirective = function(start) { + for (;;) { + // Try to find string literal. + skipWhiteSpace.lastIndex = start; + start += skipWhiteSpace.exec(this.input)[0].length; + var match = literal.exec(this.input.slice(start)); + if (!match) { return false } + if ((match[1] || match[2]) === "use strict") { return true } + start += match[0].length; + + // Skip semicolon, if any. + skipWhiteSpace.lastIndex = start; + start += skipWhiteSpace.exec(this.input)[0].length; + if (this.input[start] === ";") + { start++; } + } + }; + + // Predicate that tests whether the next token is of the given + // type, and if yes, consumes it as a side effect. + + pp.eat = function(type) { + if (this.type === type) { + this.next(); + return true + } else { + return false + } + }; + + // Tests whether parsed token is a contextual keyword. + + pp.isContextual = function(name) { + return this.type === types.name && this.value === name && !this.containsEsc + }; + + // Consumes contextual keyword if possible. + + pp.eatContextual = function(name) { + if (!this.isContextual(name)) { return false } + this.next(); + return true + }; + + // Asserts that following token is given contextual keyword. + + pp.expectContextual = function(name) { + if (!this.eatContextual(name)) { this.unexpected(); } + }; + + // Test whether a semicolon can be inserted at the current position. + + pp.canInsertSemicolon = function() { + return this.type === types.eof || + this.type === types.braceR || + lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) + }; + + pp.insertSemicolon = function() { + if (this.canInsertSemicolon()) { + if (this.options.onInsertedSemicolon) + { this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc); } + return true + } + }; + + // Consume a semicolon, or, failing that, see if we are allowed to + // pretend that there is a semicolon at this position. + + pp.semicolon = function() { + if (!this.eat(types.semi) && !this.insertSemicolon()) { this.unexpected(); } + }; + + pp.afterTrailingComma = function(tokType, notNext) { + if (this.type === tokType) { + if (this.options.onTrailingComma) + { this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc); } + if (!notNext) + { this.next(); } + return true + } + }; + + // Expect a token of a given type. If found, consume it, otherwise, + // raise an unexpected token error. + + pp.expect = function(type) { + this.eat(type) || this.unexpected(); + }; + + // Raise an unexpected token error. + + pp.unexpected = function(pos) { + this.raise(pos != null ? pos : this.start, "Unexpected token"); + }; + + function DestructuringErrors() { + this.shorthandAssign = + this.trailingComma = + this.parenthesizedAssign = + this.parenthesizedBind = + this.doubleProto = + -1; + } + + pp.checkPatternErrors = function(refDestructuringErrors, isAssign) { + if (!refDestructuringErrors) { return } + if (refDestructuringErrors.trailingComma > -1) + { this.raiseRecoverable(refDestructuringErrors.trailingComma, "Comma is not permitted after the rest element"); } + var parens = isAssign ? refDestructuringErrors.parenthesizedAssign : refDestructuringErrors.parenthesizedBind; + if (parens > -1) { this.raiseRecoverable(parens, "Parenthesized pattern"); } + }; + + pp.checkExpressionErrors = function(refDestructuringErrors, andThrow) { + if (!refDestructuringErrors) { return false } + var shorthandAssign = refDestructuringErrors.shorthandAssign; + var doubleProto = refDestructuringErrors.doubleProto; + if (!andThrow) { return shorthandAssign >= 0 || doubleProto >= 0 } + if (shorthandAssign >= 0) + { this.raise(shorthandAssign, "Shorthand property assignments are valid only in destructuring patterns"); } + if (doubleProto >= 0) + { this.raiseRecoverable(doubleProto, "Redefinition of __proto__ property"); } + }; + + pp.checkYieldAwaitInDefaultParams = function() { + if (this.yieldPos && (!this.awaitPos || this.yieldPos < this.awaitPos)) + { this.raise(this.yieldPos, "Yield expression cannot be a default value"); } + if (this.awaitPos) + { this.raise(this.awaitPos, "Await expression cannot be a default value"); } + }; + + pp.isSimpleAssignTarget = function(expr) { + if (expr.type === "ParenthesizedExpression") + { return this.isSimpleAssignTarget(expr.expression) } + return expr.type === "Identifier" || expr.type === "MemberExpression" + }; + + var pp$1 = Parser.prototype; + + // ### Statement parsing + + // Parse a program. Initializes the parser, reads any number of + // statements, and wraps them in a Program node. Optionally takes a + // `program` argument. If present, the statements will be appended + // to its body instead of creating a new node. + + pp$1.parseTopLevel = function(node) { + var exports = {}; + if (!node.body) { node.body = []; } + while (this.type !== types.eof) { + var stmt = this.parseStatement(null, true, exports); + node.body.push(stmt); + } + if (this.inModule) + { for (var i = 0, list = Object.keys(this.undefinedExports); i < list.length; i += 1) + { + var name = list[i]; + + this.raiseRecoverable(this.undefinedExports[name].start, ("Export '" + name + "' is not defined")); + } } + this.adaptDirectivePrologue(node.body); + this.next(); + if (this.options.ecmaVersion >= 6) { + node.sourceType = this.options.sourceType; + } + return this.finishNode(node, "Program") + }; + + var loopLabel = {kind: "loop"}, switchLabel = {kind: "switch"}; + + pp$1.isLet = function(context) { + if (this.options.ecmaVersion < 6 || !this.isContextual("let")) { return false } + skipWhiteSpace.lastIndex = this.pos; + var skip = skipWhiteSpace.exec(this.input); + var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next); + // For ambiguous cases, determine if a LexicalDeclaration (or only a + // Statement) is allowed here. If context is not empty then only a Statement + // is allowed. However, `let [` is an explicit negative lookahead for + // ExpressionStatement, so special-case it first. + if (nextCh === 91) { return true } // '[' + if (context) { return false } + + if (nextCh === 123) { return true } // '{' + if (isIdentifierStart(nextCh, true)) { + var pos = next + 1; + while (isIdentifierChar(this.input.charCodeAt(pos), true)) { ++pos; } + var ident = this.input.slice(next, pos); + if (!keywordRelationalOperator.test(ident)) { return true } + } + return false + }; + + // check 'async [no LineTerminator here] function' + // - 'async /*foo*/ function' is OK. + // - 'async /*\n*/ function' is invalid. + pp$1.isAsyncFunction = function() { + if (this.options.ecmaVersion < 8 || !this.isContextual("async")) + { return false } + + skipWhiteSpace.lastIndex = this.pos; + var skip = skipWhiteSpace.exec(this.input); + var next = this.pos + skip[0].length; + return !lineBreak.test(this.input.slice(this.pos, next)) && + this.input.slice(next, next + 8) === "function" && + (next + 8 === this.input.length || !isIdentifierChar(this.input.charAt(next + 8))) + }; + + // Parse a single statement. + // + // If expecting a statement and finding a slash operator, parse a + // regular expression literal. This is to handle cases like + // `if (foo) /blah/.exec(foo)`, where looking at the previous token + // does not help. + + pp$1.parseStatement = function(context, topLevel, exports) { + var starttype = this.type, node = this.startNode(), kind; + + if (this.isLet(context)) { + starttype = types._var; + kind = "let"; + } + + // Most types of statements are recognized by the keyword they + // start with. Many are trivial to parse, some require a bit of + // complexity. + + switch (starttype) { + case types._break: case types._continue: return this.parseBreakContinueStatement(node, starttype.keyword) + case types._debugger: return this.parseDebuggerStatement(node) + case types._do: return this.parseDoStatement(node) + case types._for: return this.parseForStatement(node) + case types._function: + // Function as sole body of either an if statement or a labeled statement + // works, but not when it is part of a labeled statement that is the sole + // body of an if statement. + if ((context && (this.strict || context !== "if" && context !== "label")) && this.options.ecmaVersion >= 6) { this.unexpected(); } + return this.parseFunctionStatement(node, false, !context) + case types._class: + if (context) { this.unexpected(); } + return this.parseClass(node, true) + case types._if: return this.parseIfStatement(node) + case types._return: return this.parseReturnStatement(node) + case types._switch: return this.parseSwitchStatement(node) + case types._throw: return this.parseThrowStatement(node) + case types._try: return this.parseTryStatement(node) + case types._const: case types._var: + kind = kind || this.value; + if (context && kind !== "var") { this.unexpected(); } + return this.parseVarStatement(node, kind) + case types._while: return this.parseWhileStatement(node) + case types._with: return this.parseWithStatement(node) + case types.braceL: return this.parseBlock(true, node) + case types.semi: return this.parseEmptyStatement(node) + case types._export: + case types._import: + if (this.options.ecmaVersion > 10 && starttype === types._import) { + skipWhiteSpace.lastIndex = this.pos; + var skip = skipWhiteSpace.exec(this.input); + var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next); + if (nextCh === 40) // '(' + { return this.parseExpressionStatement(node, this.parseExpression()) } + } + + if (!this.options.allowImportExportEverywhere) { + if (!topLevel) + { this.raise(this.start, "'import' and 'export' may only appear at the top level"); } + if (!this.inModule) + { this.raise(this.start, "'import' and 'export' may appear only with 'sourceType: module'"); } + } + return starttype === types._import ? this.parseImport(node) : this.parseExport(node, exports) + + // If the statement does not start with a statement keyword or a + // brace, it's an ExpressionStatement or LabeledStatement. We + // simply start parsing an expression, and afterwards, if the + // next token is a colon and the expression was a simple + // Identifier node, we switch to interpreting it as a label. + default: + if (this.isAsyncFunction()) { + if (context) { this.unexpected(); } + this.next(); + return this.parseFunctionStatement(node, true, !context) + } + + var maybeName = this.value, expr = this.parseExpression(); + if (starttype === types.name && expr.type === "Identifier" && this.eat(types.colon)) + { return this.parseLabeledStatement(node, maybeName, expr, context) } + else { return this.parseExpressionStatement(node, expr) } + } + }; + + pp$1.parseBreakContinueStatement = function(node, keyword) { + var isBreak = keyword === "break"; + this.next(); + if (this.eat(types.semi) || this.insertSemicolon()) { node.label = null; } + else if (this.type !== types.name) { this.unexpected(); } + else { + node.label = this.parseIdent(); + this.semicolon(); + } + + // Verify that there is an actual destination to break or + // continue to. + var i = 0; + for (; i < this.labels.length; ++i) { + var lab = this.labels[i]; + if (node.label == null || lab.name === node.label.name) { + if (lab.kind != null && (isBreak || lab.kind === "loop")) { break } + if (node.label && isBreak) { break } + } + } + if (i === this.labels.length) { this.raise(node.start, "Unsyntactic " + keyword); } + return this.finishNode(node, isBreak ? "BreakStatement" : "ContinueStatement") + }; + + pp$1.parseDebuggerStatement = function(node) { + this.next(); + this.semicolon(); + return this.finishNode(node, "DebuggerStatement") + }; + + pp$1.parseDoStatement = function(node) { + this.next(); + this.labels.push(loopLabel); + node.body = this.parseStatement("do"); + this.labels.pop(); + this.expect(types._while); + node.test = this.parseParenExpression(); + if (this.options.ecmaVersion >= 6) + { this.eat(types.semi); } + else + { this.semicolon(); } + return this.finishNode(node, "DoWhileStatement") + }; + + // Disambiguating between a `for` and a `for`/`in` or `for`/`of` + // loop is non-trivial. Basically, we have to parse the init `var` + // statement or expression, disallowing the `in` operator (see + // the second parameter to `parseExpression`), and then check + // whether the next token is `in` or `of`. When there is no init + // part (semicolon immediately after the opening parenthesis), it + // is a regular `for` loop. + + pp$1.parseForStatement = function(node) { + this.next(); + var awaitAt = (this.options.ecmaVersion >= 9 && (this.inAsync || (!this.inFunction && this.options.allowAwaitOutsideFunction)) && this.eatContextual("await")) ? this.lastTokStart : -1; + this.labels.push(loopLabel); + this.enterScope(0); + this.expect(types.parenL); + if (this.type === types.semi) { + if (awaitAt > -1) { this.unexpected(awaitAt); } + return this.parseFor(node, null) + } + var isLet = this.isLet(); + if (this.type === types._var || this.type === types._const || isLet) { + var init$1 = this.startNode(), kind = isLet ? "let" : this.value; + this.next(); + this.parseVar(init$1, true, kind); + this.finishNode(init$1, "VariableDeclaration"); + if ((this.type === types._in || (this.options.ecmaVersion >= 6 && this.isContextual("of"))) && init$1.declarations.length === 1) { + if (this.options.ecmaVersion >= 9) { + if (this.type === types._in) { + if (awaitAt > -1) { this.unexpected(awaitAt); } + } else { node.await = awaitAt > -1; } + } + return this.parseForIn(node, init$1) + } + if (awaitAt > -1) { this.unexpected(awaitAt); } + return this.parseFor(node, init$1) + } + var refDestructuringErrors = new DestructuringErrors; + var init = this.parseExpression(true, refDestructuringErrors); + if (this.type === types._in || (this.options.ecmaVersion >= 6 && this.isContextual("of"))) { + if (this.options.ecmaVersion >= 9) { + if (this.type === types._in) { + if (awaitAt > -1) { this.unexpected(awaitAt); } + } else { node.await = awaitAt > -1; } + } + this.toAssignable(init, false, refDestructuringErrors); + this.checkLVal(init); + return this.parseForIn(node, init) + } else { + this.checkExpressionErrors(refDestructuringErrors, true); + } + if (awaitAt > -1) { this.unexpected(awaitAt); } + return this.parseFor(node, init) + }; + + pp$1.parseFunctionStatement = function(node, isAsync, declarationPosition) { + this.next(); + return this.parseFunction(node, FUNC_STATEMENT | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT), false, isAsync) + }; + + pp$1.parseIfStatement = function(node) { + this.next(); + node.test = this.parseParenExpression(); + // allow function declarations in branches, but only in non-strict mode + node.consequent = this.parseStatement("if"); + node.alternate = this.eat(types._else) ? this.parseStatement("if") : null; + return this.finishNode(node, "IfStatement") + }; + + pp$1.parseReturnStatement = function(node) { + if (!this.inFunction && !this.options.allowReturnOutsideFunction) + { this.raise(this.start, "'return' outside of function"); } + this.next(); + + // In `return` (and `break`/`continue`), the keywords with + // optional arguments, we eagerly look for a semicolon or the + // possibility to insert one. + + if (this.eat(types.semi) || this.insertSemicolon()) { node.argument = null; } + else { node.argument = this.parseExpression(); this.semicolon(); } + return this.finishNode(node, "ReturnStatement") + }; + + pp$1.parseSwitchStatement = function(node) { + this.next(); + node.discriminant = this.parseParenExpression(); + node.cases = []; + this.expect(types.braceL); + this.labels.push(switchLabel); + this.enterScope(0); + + // Statements under must be grouped (by label) in SwitchCase + // nodes. `cur` is used to keep the node that we are currently + // adding statements to. + + var cur; + for (var sawDefault = false; this.type !== types.braceR;) { + if (this.type === types._case || this.type === types._default) { + var isCase = this.type === types._case; + if (cur) { this.finishNode(cur, "SwitchCase"); } + node.cases.push(cur = this.startNode()); + cur.consequent = []; + this.next(); + if (isCase) { + cur.test = this.parseExpression(); + } else { + if (sawDefault) { this.raiseRecoverable(this.lastTokStart, "Multiple default clauses"); } + sawDefault = true; + cur.test = null; + } + this.expect(types.colon); + } else { + if (!cur) { this.unexpected(); } + cur.consequent.push(this.parseStatement(null)); + } + } + this.exitScope(); + if (cur) { this.finishNode(cur, "SwitchCase"); } + this.next(); // Closing brace + this.labels.pop(); + return this.finishNode(node, "SwitchStatement") + }; + + pp$1.parseThrowStatement = function(node) { + this.next(); + if (lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) + { this.raise(this.lastTokEnd, "Illegal newline after throw"); } + node.argument = this.parseExpression(); + this.semicolon(); + return this.finishNode(node, "ThrowStatement") + }; + + // Reused empty array added for node fields that are always empty. + + var empty = []; + + pp$1.parseTryStatement = function(node) { + this.next(); + node.block = this.parseBlock(); + node.handler = null; + if (this.type === types._catch) { + var clause = this.startNode(); + this.next(); + if (this.eat(types.parenL)) { + clause.param = this.parseBindingAtom(); + var simple = clause.param.type === "Identifier"; + this.enterScope(simple ? SCOPE_SIMPLE_CATCH : 0); + this.checkLVal(clause.param, simple ? BIND_SIMPLE_CATCH : BIND_LEXICAL); + this.expect(types.parenR); + } else { + if (this.options.ecmaVersion < 10) { this.unexpected(); } + clause.param = null; + this.enterScope(0); + } + clause.body = this.parseBlock(false); + this.exitScope(); + node.handler = this.finishNode(clause, "CatchClause"); + } + node.finalizer = this.eat(types._finally) ? this.parseBlock() : null; + if (!node.handler && !node.finalizer) + { this.raise(node.start, "Missing catch or finally clause"); } + return this.finishNode(node, "TryStatement") + }; + + pp$1.parseVarStatement = function(node, kind) { + this.next(); + this.parseVar(node, false, kind); + this.semicolon(); + return this.finishNode(node, "VariableDeclaration") + }; + + pp$1.parseWhileStatement = function(node) { + this.next(); + node.test = this.parseParenExpression(); + this.labels.push(loopLabel); + node.body = this.parseStatement("while"); + this.labels.pop(); + return this.finishNode(node, "WhileStatement") + }; + + pp$1.parseWithStatement = function(node) { + if (this.strict) { this.raise(this.start, "'with' in strict mode"); } + this.next(); + node.object = this.parseParenExpression(); + node.body = this.parseStatement("with"); + return this.finishNode(node, "WithStatement") + }; + + pp$1.parseEmptyStatement = function(node) { + this.next(); + return this.finishNode(node, "EmptyStatement") + }; + + pp$1.parseLabeledStatement = function(node, maybeName, expr, context) { + for (var i$1 = 0, list = this.labels; i$1 < list.length; i$1 += 1) + { + var label = list[i$1]; + + if (label.name === maybeName) + { this.raise(expr.start, "Label '" + maybeName + "' is already declared"); + } } + var kind = this.type.isLoop ? "loop" : this.type === types._switch ? "switch" : null; + for (var i = this.labels.length - 1; i >= 0; i--) { + var label$1 = this.labels[i]; + if (label$1.statementStart === node.start) { + // Update information about previous labels on this node + label$1.statementStart = this.start; + label$1.kind = kind; + } else { break } + } + this.labels.push({name: maybeName, kind: kind, statementStart: this.start}); + node.body = this.parseStatement(context ? context.indexOf("label") === -1 ? context + "label" : context : "label"); + this.labels.pop(); + node.label = expr; + return this.finishNode(node, "LabeledStatement") + }; + + pp$1.parseExpressionStatement = function(node, expr) { + node.expression = expr; + this.semicolon(); + return this.finishNode(node, "ExpressionStatement") + }; + + // Parse a semicolon-enclosed block of statements, handling `"use + // strict"` declarations when `allowStrict` is true (used for + // function bodies). + + pp$1.parseBlock = function(createNewLexicalScope, node) { + if ( createNewLexicalScope === void 0 ) createNewLexicalScope = true; + if ( node === void 0 ) node = this.startNode(); + + node.body = []; + this.expect(types.braceL); + if (createNewLexicalScope) { this.enterScope(0); } + while (!this.eat(types.braceR)) { + var stmt = this.parseStatement(null); + node.body.push(stmt); + } + if (createNewLexicalScope) { this.exitScope(); } + return this.finishNode(node, "BlockStatement") + }; + + // Parse a regular `for` loop. The disambiguation code in + // `parseStatement` will already have parsed the init statement or + // expression. + + pp$1.parseFor = function(node, init) { + node.init = init; + this.expect(types.semi); + node.test = this.type === types.semi ? null : this.parseExpression(); + this.expect(types.semi); + node.update = this.type === types.parenR ? null : this.parseExpression(); + this.expect(types.parenR); + node.body = this.parseStatement("for"); + this.exitScope(); + this.labels.pop(); + return this.finishNode(node, "ForStatement") + }; + + // Parse a `for`/`in` and `for`/`of` loop, which are almost + // same from parser's perspective. + + pp$1.parseForIn = function(node, init) { + var isForIn = this.type === types._in; + this.next(); + + if ( + init.type === "VariableDeclaration" && + init.declarations[0].init != null && + ( + !isForIn || + this.options.ecmaVersion < 8 || + this.strict || + init.kind !== "var" || + init.declarations[0].id.type !== "Identifier" + ) + ) { + this.raise( + init.start, + ((isForIn ? "for-in" : "for-of") + " loop variable declaration may not have an initializer") + ); + } else if (init.type === "AssignmentPattern") { + this.raise(init.start, "Invalid left-hand side in for-loop"); + } + node.left = init; + node.right = isForIn ? this.parseExpression() : this.parseMaybeAssign(); + this.expect(types.parenR); + node.body = this.parseStatement("for"); + this.exitScope(); + this.labels.pop(); + return this.finishNode(node, isForIn ? "ForInStatement" : "ForOfStatement") + }; + + // Parse a list of variable declarations. + + pp$1.parseVar = function(node, isFor, kind) { + node.declarations = []; + node.kind = kind; + for (;;) { + var decl = this.startNode(); + this.parseVarId(decl, kind); + if (this.eat(types.eq)) { + decl.init = this.parseMaybeAssign(isFor); + } else if (kind === "const" && !(this.type === types._in || (this.options.ecmaVersion >= 6 && this.isContextual("of")))) { + this.unexpected(); + } else if (decl.id.type !== "Identifier" && !(isFor && (this.type === types._in || this.isContextual("of")))) { + this.raise(this.lastTokEnd, "Complex binding patterns require an initialization value"); + } else { + decl.init = null; + } + node.declarations.push(this.finishNode(decl, "VariableDeclarator")); + if (!this.eat(types.comma)) { break } + } + return node + }; + + pp$1.parseVarId = function(decl, kind) { + decl.id = this.parseBindingAtom(); + this.checkLVal(decl.id, kind === "var" ? BIND_VAR : BIND_LEXICAL, false); + }; + + var FUNC_STATEMENT = 1, FUNC_HANGING_STATEMENT = 2, FUNC_NULLABLE_ID = 4; + + // Parse a function declaration or literal (depending on the + // `statement & FUNC_STATEMENT`). + + // Remove `allowExpressionBody` for 7.0.0, as it is only called with false + pp$1.parseFunction = function(node, statement, allowExpressionBody, isAsync) { + this.initFunction(node); + if (this.options.ecmaVersion >= 9 || this.options.ecmaVersion >= 6 && !isAsync) { + if (this.type === types.star && (statement & FUNC_HANGING_STATEMENT)) + { this.unexpected(); } + node.generator = this.eat(types.star); + } + if (this.options.ecmaVersion >= 8) + { node.async = !!isAsync; } + + if (statement & FUNC_STATEMENT) { + node.id = (statement & FUNC_NULLABLE_ID) && this.type !== types.name ? null : this.parseIdent(); + if (node.id && !(statement & FUNC_HANGING_STATEMENT)) + // If it is a regular function declaration in sloppy mode, then it is + // subject to Annex B semantics (BIND_FUNCTION). Otherwise, the binding + // mode depends on properties of the current scope (see + // treatFunctionsAsVar). + { this.checkLVal(node.id, (this.strict || node.generator || node.async) ? this.treatFunctionsAsVar ? BIND_VAR : BIND_LEXICAL : BIND_FUNCTION); } + } + + var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos; + this.yieldPos = 0; + this.awaitPos = 0; + this.awaitIdentPos = 0; + this.enterScope(functionFlags(node.async, node.generator)); + + if (!(statement & FUNC_STATEMENT)) + { node.id = this.type === types.name ? this.parseIdent() : null; } + + this.parseFunctionParams(node); + this.parseFunctionBody(node, allowExpressionBody, false); + + this.yieldPos = oldYieldPos; + this.awaitPos = oldAwaitPos; + this.awaitIdentPos = oldAwaitIdentPos; + return this.finishNode(node, (statement & FUNC_STATEMENT) ? "FunctionDeclaration" : "FunctionExpression") + }; + + pp$1.parseFunctionParams = function(node) { + this.expect(types.parenL); + node.params = this.parseBindingList(types.parenR, false, this.options.ecmaVersion >= 8); + this.checkYieldAwaitInDefaultParams(); + }; + + // Parse a class declaration or literal (depending on the + // `isStatement` parameter). + + pp$1.parseClass = function(node, isStatement) { + this.next(); + + // ecma-262 14.6 Class Definitions + // A class definition is always strict mode code. + var oldStrict = this.strict; + this.strict = true; + + this.parseClassId(node, isStatement); + this.parseClassSuper(node); + var classBody = this.startNode(); + var hadConstructor = false; + classBody.body = []; + this.expect(types.braceL); + while (!this.eat(types.braceR)) { + var element = this.parseClassElement(node.superClass !== null); + if (element) { + classBody.body.push(element); + if (element.type === "MethodDefinition" && element.kind === "constructor") { + if (hadConstructor) { this.raise(element.start, "Duplicate constructor in the same class"); } + hadConstructor = true; + } + } + } + node.body = this.finishNode(classBody, "ClassBody"); + this.strict = oldStrict; + return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression") + }; + + pp$1.parseClassElement = function(constructorAllowsSuper) { + var this$1 = this; + + if (this.eat(types.semi)) { return null } + + var method = this.startNode(); + var tryContextual = function (k, noLineBreak) { + if ( noLineBreak === void 0 ) noLineBreak = false; + + var start = this$1.start, startLoc = this$1.startLoc; + if (!this$1.eatContextual(k)) { return false } + if (this$1.type !== types.parenL && (!noLineBreak || !this$1.canInsertSemicolon())) { return true } + if (method.key) { this$1.unexpected(); } + method.computed = false; + method.key = this$1.startNodeAt(start, startLoc); + method.key.name = k; + this$1.finishNode(method.key, "Identifier"); + return false + }; + + method.kind = "method"; + method.static = tryContextual("static"); + var isGenerator = this.eat(types.star); + var isAsync = false; + if (!isGenerator) { + if (this.options.ecmaVersion >= 8 && tryContextual("async", true)) { + isAsync = true; + isGenerator = this.options.ecmaVersion >= 9 && this.eat(types.star); + } else if (tryContextual("get")) { + method.kind = "get"; + } else if (tryContextual("set")) { + method.kind = "set"; + } + } + if (!method.key) { this.parsePropertyName(method); } + var key = method.key; + var allowsDirectSuper = false; + if (!method.computed && !method.static && (key.type === "Identifier" && key.name === "constructor" || + key.type === "Literal" && key.value === "constructor")) { + if (method.kind !== "method") { this.raise(key.start, "Constructor can't have get/set modifier"); } + if (isGenerator) { this.raise(key.start, "Constructor can't be a generator"); } + if (isAsync) { this.raise(key.start, "Constructor can't be an async method"); } + method.kind = "constructor"; + allowsDirectSuper = constructorAllowsSuper; + } else if (method.static && key.type === "Identifier" && key.name === "prototype") { + this.raise(key.start, "Classes may not have a static property named prototype"); + } + this.parseClassMethod(method, isGenerator, isAsync, allowsDirectSuper); + if (method.kind === "get" && method.value.params.length !== 0) + { this.raiseRecoverable(method.value.start, "getter should have no params"); } + if (method.kind === "set" && method.value.params.length !== 1) + { this.raiseRecoverable(method.value.start, "setter should have exactly one param"); } + if (method.kind === "set" && method.value.params[0].type === "RestElement") + { this.raiseRecoverable(method.value.params[0].start, "Setter cannot use rest params"); } + return method + }; + + pp$1.parseClassMethod = function(method, isGenerator, isAsync, allowsDirectSuper) { + method.value = this.parseMethod(isGenerator, isAsync, allowsDirectSuper); + return this.finishNode(method, "MethodDefinition") + }; + + pp$1.parseClassId = function(node, isStatement) { + if (this.type === types.name) { + node.id = this.parseIdent(); + if (isStatement) + { this.checkLVal(node.id, BIND_LEXICAL, false); } + } else { + if (isStatement === true) + { this.unexpected(); } + node.id = null; + } + }; + + pp$1.parseClassSuper = function(node) { + node.superClass = this.eat(types._extends) ? this.parseExprSubscripts() : null; + }; + + // Parses module export declaration. + + pp$1.parseExport = function(node, exports) { + this.next(); + // export * from '...' + if (this.eat(types.star)) { + this.expectContextual("from"); + if (this.type !== types.string) { this.unexpected(); } + node.source = this.parseExprAtom(); + this.semicolon(); + return this.finishNode(node, "ExportAllDeclaration") + } + if (this.eat(types._default)) { // export default ... + this.checkExport(exports, "default", this.lastTokStart); + var isAsync; + if (this.type === types._function || (isAsync = this.isAsyncFunction())) { + var fNode = this.startNode(); + this.next(); + if (isAsync) { this.next(); } + node.declaration = this.parseFunction(fNode, FUNC_STATEMENT | FUNC_NULLABLE_ID, false, isAsync); + } else if (this.type === types._class) { + var cNode = this.startNode(); + node.declaration = this.parseClass(cNode, "nullableID"); + } else { + node.declaration = this.parseMaybeAssign(); + this.semicolon(); + } + return this.finishNode(node, "ExportDefaultDeclaration") + } + // export var|const|let|function|class ... + if (this.shouldParseExportStatement()) { + node.declaration = this.parseStatement(null); + if (node.declaration.type === "VariableDeclaration") + { this.checkVariableExport(exports, node.declaration.declarations); } + else + { this.checkExport(exports, node.declaration.id.name, node.declaration.id.start); } + node.specifiers = []; + node.source = null; + } else { // export { x, y as z } [from '...'] + node.declaration = null; + node.specifiers = this.parseExportSpecifiers(exports); + if (this.eatContextual("from")) { + if (this.type !== types.string) { this.unexpected(); } + node.source = this.parseExprAtom(); + } else { + for (var i = 0, list = node.specifiers; i < list.length; i += 1) { + // check for keywords used as local names + var spec = list[i]; + + this.checkUnreserved(spec.local); + // check if export is defined + this.checkLocalExport(spec.local); + } + + node.source = null; + } + this.semicolon(); + } + return this.finishNode(node, "ExportNamedDeclaration") + }; + + pp$1.checkExport = function(exports, name, pos) { + if (!exports) { return } + if (has(exports, name)) + { this.raiseRecoverable(pos, "Duplicate export '" + name + "'"); } + exports[name] = true; + }; + + pp$1.checkPatternExport = function(exports, pat) { + var type = pat.type; + if (type === "Identifier") + { this.checkExport(exports, pat.name, pat.start); } + else if (type === "ObjectPattern") + { for (var i = 0, list = pat.properties; i < list.length; i += 1) + { + var prop = list[i]; + + this.checkPatternExport(exports, prop); + } } + else if (type === "ArrayPattern") + { for (var i$1 = 0, list$1 = pat.elements; i$1 < list$1.length; i$1 += 1) { + var elt = list$1[i$1]; + + if (elt) { this.checkPatternExport(exports, elt); } + } } + else if (type === "Property") + { this.checkPatternExport(exports, pat.value); } + else if (type === "AssignmentPattern") + { this.checkPatternExport(exports, pat.left); } + else if (type === "RestElement") + { this.checkPatternExport(exports, pat.argument); } + else if (type === "ParenthesizedExpression") + { this.checkPatternExport(exports, pat.expression); } + }; + + pp$1.checkVariableExport = function(exports, decls) { + if (!exports) { return } + for (var i = 0, list = decls; i < list.length; i += 1) + { + var decl = list[i]; + + this.checkPatternExport(exports, decl.id); + } + }; + + pp$1.shouldParseExportStatement = function() { + return this.type.keyword === "var" || + this.type.keyword === "const" || + this.type.keyword === "class" || + this.type.keyword === "function" || + this.isLet() || + this.isAsyncFunction() + }; + + // Parses a comma-separated list of module exports. + + pp$1.parseExportSpecifiers = function(exports) { + var nodes = [], first = true; + // export { x, y as z } [from '...'] + this.expect(types.braceL); + while (!this.eat(types.braceR)) { + if (!first) { + this.expect(types.comma); + if (this.afterTrailingComma(types.braceR)) { break } + } else { first = false; } + + var node = this.startNode(); + node.local = this.parseIdent(true); + node.exported = this.eatContextual("as") ? this.parseIdent(true) : node.local; + this.checkExport(exports, node.exported.name, node.exported.start); + nodes.push(this.finishNode(node, "ExportSpecifier")); + } + return nodes + }; + + // Parses import declaration. + + pp$1.parseImport = function(node) { + this.next(); + // import '...' + if (this.type === types.string) { + node.specifiers = empty; + node.source = this.parseExprAtom(); + } else { + node.specifiers = this.parseImportSpecifiers(); + this.expectContextual("from"); + node.source = this.type === types.string ? this.parseExprAtom() : this.unexpected(); + } + this.semicolon(); + return this.finishNode(node, "ImportDeclaration") + }; + + // Parses a comma-separated list of module imports. + + pp$1.parseImportSpecifiers = function() { + var nodes = [], first = true; + if (this.type === types.name) { + // import defaultObj, { x, y as z } from '...' + var node = this.startNode(); + node.local = this.parseIdent(); + this.checkLVal(node.local, BIND_LEXICAL); + nodes.push(this.finishNode(node, "ImportDefaultSpecifier")); + if (!this.eat(types.comma)) { return nodes } + } + if (this.type === types.star) { + var node$1 = this.startNode(); + this.next(); + this.expectContextual("as"); + node$1.local = this.parseIdent(); + this.checkLVal(node$1.local, BIND_LEXICAL); + nodes.push(this.finishNode(node$1, "ImportNamespaceSpecifier")); + return nodes + } + this.expect(types.braceL); + while (!this.eat(types.braceR)) { + if (!first) { + this.expect(types.comma); + if (this.afterTrailingComma(types.braceR)) { break } + } else { first = false; } + + var node$2 = this.startNode(); + node$2.imported = this.parseIdent(true); + if (this.eatContextual("as")) { + node$2.local = this.parseIdent(); + } else { + this.checkUnreserved(node$2.imported); + node$2.local = node$2.imported; + } + this.checkLVal(node$2.local, BIND_LEXICAL); + nodes.push(this.finishNode(node$2, "ImportSpecifier")); + } + return nodes + }; + + // Set `ExpressionStatement#directive` property for directive prologues. + pp$1.adaptDirectivePrologue = function(statements) { + for (var i = 0; i < statements.length && this.isDirectiveCandidate(statements[i]); ++i) { + statements[i].directive = statements[i].expression.raw.slice(1, -1); + } + }; + pp$1.isDirectiveCandidate = function(statement) { + return ( + statement.type === "ExpressionStatement" && + statement.expression.type === "Literal" && + typeof statement.expression.value === "string" && + // Reject parenthesized strings. + (this.input[statement.start] === "\"" || this.input[statement.start] === "'") + ) + }; + + var pp$2 = Parser.prototype; + + // Convert existing expression atom to assignable pattern + // if possible. + + pp$2.toAssignable = function(node, isBinding, refDestructuringErrors) { + if (this.options.ecmaVersion >= 6 && node) { + switch (node.type) { + case "Identifier": + if (this.inAsync && node.name === "await") + { this.raise(node.start, "Cannot use 'await' as identifier inside an async function"); } + break + + case "ObjectPattern": + case "ArrayPattern": + case "RestElement": + break + + case "ObjectExpression": + node.type = "ObjectPattern"; + if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); } + for (var i = 0, list = node.properties; i < list.length; i += 1) { + var prop = list[i]; + + this.toAssignable(prop, isBinding); + // Early error: + // AssignmentRestProperty[Yield, Await] : + // `...` DestructuringAssignmentTarget[Yield, Await] + // + // It is a Syntax Error if |DestructuringAssignmentTarget| is an |ArrayLiteral| or an |ObjectLiteral|. + if ( + prop.type === "RestElement" && + (prop.argument.type === "ArrayPattern" || prop.argument.type === "ObjectPattern") + ) { + this.raise(prop.argument.start, "Unexpected token"); + } + } + break + + case "Property": + // AssignmentProperty has type === "Property" + if (node.kind !== "init") { this.raise(node.key.start, "Object pattern can't contain getter or setter"); } + this.toAssignable(node.value, isBinding); + break + + case "ArrayExpression": + node.type = "ArrayPattern"; + if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); } + this.toAssignableList(node.elements, isBinding); + break + + case "SpreadElement": + node.type = "RestElement"; + this.toAssignable(node.argument, isBinding); + if (node.argument.type === "AssignmentPattern") + { this.raise(node.argument.start, "Rest elements cannot have a default value"); } + break + + case "AssignmentExpression": + if (node.operator !== "=") { this.raise(node.left.end, "Only '=' operator can be used for specifying default value."); } + node.type = "AssignmentPattern"; + delete node.operator; + this.toAssignable(node.left, isBinding); + // falls through to AssignmentPattern + + case "AssignmentPattern": + break + + case "ParenthesizedExpression": + this.toAssignable(node.expression, isBinding, refDestructuringErrors); + break + + case "MemberExpression": + if (!isBinding) { break } + + default: + this.raise(node.start, "Assigning to rvalue"); + } + } else if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); } + return node + }; + + // Convert list of expression atoms to binding list. + + pp$2.toAssignableList = function(exprList, isBinding) { + var end = exprList.length; + for (var i = 0; i < end; i++) { + var elt = exprList[i]; + if (elt) { this.toAssignable(elt, isBinding); } + } + if (end) { + var last = exprList[end - 1]; + if (this.options.ecmaVersion === 6 && isBinding && last && last.type === "RestElement" && last.argument.type !== "Identifier") + { this.unexpected(last.argument.start); } + } + return exprList + }; + + // Parses spread element. + + pp$2.parseSpread = function(refDestructuringErrors) { + var node = this.startNode(); + this.next(); + node.argument = this.parseMaybeAssign(false, refDestructuringErrors); + return this.finishNode(node, "SpreadElement") + }; + + pp$2.parseRestBinding = function() { + var node = this.startNode(); + this.next(); + + // RestElement inside of a function parameter must be an identifier + if (this.options.ecmaVersion === 6 && this.type !== types.name) + { this.unexpected(); } + + node.argument = this.parseBindingAtom(); + + return this.finishNode(node, "RestElement") + }; + + // Parses lvalue (assignable) atom. + + pp$2.parseBindingAtom = function() { + if (this.options.ecmaVersion >= 6) { + switch (this.type) { + case types.bracketL: + var node = this.startNode(); + this.next(); + node.elements = this.parseBindingList(types.bracketR, true, true); + return this.finishNode(node, "ArrayPattern") + + case types.braceL: + return this.parseObj(true) + } + } + return this.parseIdent() + }; + + pp$2.parseBindingList = function(close, allowEmpty, allowTrailingComma) { + var elts = [], first = true; + while (!this.eat(close)) { + if (first) { first = false; } + else { this.expect(types.comma); } + if (allowEmpty && this.type === types.comma) { + elts.push(null); + } else if (allowTrailingComma && this.afterTrailingComma(close)) { + break + } else if (this.type === types.ellipsis) { + var rest = this.parseRestBinding(); + this.parseBindingListItem(rest); + elts.push(rest); + if (this.type === types.comma) { this.raise(this.start, "Comma is not permitted after the rest element"); } + this.expect(close); + break + } else { + var elem = this.parseMaybeDefault(this.start, this.startLoc); + this.parseBindingListItem(elem); + elts.push(elem); + } + } + return elts + }; + + pp$2.parseBindingListItem = function(param) { + return param + }; + + // Parses assignment pattern around given atom if possible. + + pp$2.parseMaybeDefault = function(startPos, startLoc, left) { + left = left || this.parseBindingAtom(); + if (this.options.ecmaVersion < 6 || !this.eat(types.eq)) { return left } + var node = this.startNodeAt(startPos, startLoc); + node.left = left; + node.right = this.parseMaybeAssign(); + return this.finishNode(node, "AssignmentPattern") + }; + + // Verify that a node is an lval — something that can be assigned + // to. + // bindingType can be either: + // 'var' indicating that the lval creates a 'var' binding + // 'let' indicating that the lval creates a lexical ('let' or 'const') binding + // 'none' indicating that the binding should be checked for illegal identifiers, but not for duplicate references + + pp$2.checkLVal = function(expr, bindingType, checkClashes) { + if ( bindingType === void 0 ) bindingType = BIND_NONE; + + switch (expr.type) { + case "Identifier": + if (bindingType === BIND_LEXICAL && expr.name === "let") + { this.raiseRecoverable(expr.start, "let is disallowed as a lexically bound name"); } + if (this.strict && this.reservedWordsStrictBind.test(expr.name)) + { this.raiseRecoverable(expr.start, (bindingType ? "Binding " : "Assigning to ") + expr.name + " in strict mode"); } + if (checkClashes) { + if (has(checkClashes, expr.name)) + { this.raiseRecoverable(expr.start, "Argument name clash"); } + checkClashes[expr.name] = true; + } + if (bindingType !== BIND_NONE && bindingType !== BIND_OUTSIDE) { this.declareName(expr.name, bindingType, expr.start); } + break + + case "MemberExpression": + if (bindingType) { this.raiseRecoverable(expr.start, "Binding member expression"); } + break + + case "ObjectPattern": + for (var i = 0, list = expr.properties; i < list.length; i += 1) + { + var prop = list[i]; + + this.checkLVal(prop, bindingType, checkClashes); + } + break + + case "Property": + // AssignmentProperty has type === "Property" + this.checkLVal(expr.value, bindingType, checkClashes); + break + + case "ArrayPattern": + for (var i$1 = 0, list$1 = expr.elements; i$1 < list$1.length; i$1 += 1) { + var elem = list$1[i$1]; + + if (elem) { this.checkLVal(elem, bindingType, checkClashes); } + } + break + + case "AssignmentPattern": + this.checkLVal(expr.left, bindingType, checkClashes); + break + + case "RestElement": + this.checkLVal(expr.argument, bindingType, checkClashes); + break + + case "ParenthesizedExpression": + this.checkLVal(expr.expression, bindingType, checkClashes); + break + + default: + this.raise(expr.start, (bindingType ? "Binding" : "Assigning to") + " rvalue"); + } + }; + + // A recursive descent parser operates by defining functions for all + + var pp$3 = Parser.prototype; + + // Check if property name clashes with already added. + // Object/class getters and setters are not allowed to clash — + // either with each other or with an init property — and in + // strict mode, init properties are also not allowed to be repeated. + + pp$3.checkPropClash = function(prop, propHash, refDestructuringErrors) { + if (this.options.ecmaVersion >= 9 && prop.type === "SpreadElement") + { return } + if (this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand)) + { return } + var key = prop.key; + var name; + switch (key.type) { + case "Identifier": name = key.name; break + case "Literal": name = String(key.value); break + default: return + } + var kind = prop.kind; + if (this.options.ecmaVersion >= 6) { + if (name === "__proto__" && kind === "init") { + if (propHash.proto) { + if (refDestructuringErrors && refDestructuringErrors.doubleProto < 0) { refDestructuringErrors.doubleProto = key.start; } + // Backwards-compat kludge. Can be removed in version 6.0 + else { this.raiseRecoverable(key.start, "Redefinition of __proto__ property"); } + } + propHash.proto = true; + } + return + } + name = "$" + name; + var other = propHash[name]; + if (other) { + var redefinition; + if (kind === "init") { + redefinition = this.strict && other.init || other.get || other.set; + } else { + redefinition = other.init || other[kind]; + } + if (redefinition) + { this.raiseRecoverable(key.start, "Redefinition of property"); } + } else { + other = propHash[name] = { + init: false, + get: false, + set: false + }; + } + other[kind] = true; + }; + + // ### Expression parsing + + // These nest, from the most general expression type at the top to + // 'atomic', nondivisible expression types at the bottom. Most of + // the functions will simply let the function(s) below them parse, + // and, *if* the syntactic construct they handle is present, wrap + // the AST node that the inner parser gave them in another node. + + // Parse a full expression. The optional arguments are used to + // forbid the `in` operator (in for loops initalization expressions) + // and provide reference for storing '=' operator inside shorthand + // property assignment in contexts where both object expression + // and object pattern might appear (so it's possible to raise + // delayed syntax error at correct position). + + pp$3.parseExpression = function(noIn, refDestructuringErrors) { + var startPos = this.start, startLoc = this.startLoc; + var expr = this.parseMaybeAssign(noIn, refDestructuringErrors); + if (this.type === types.comma) { + var node = this.startNodeAt(startPos, startLoc); + node.expressions = [expr]; + while (this.eat(types.comma)) { node.expressions.push(this.parseMaybeAssign(noIn, refDestructuringErrors)); } + return this.finishNode(node, "SequenceExpression") + } + return expr + }; + + // Parse an assignment expression. This includes applications of + // operators like `+=`. + + pp$3.parseMaybeAssign = function(noIn, refDestructuringErrors, afterLeftParse) { + if (this.isContextual("yield")) { + if (this.inGenerator) { return this.parseYield(noIn) } + // The tokenizer will assume an expression is allowed after + // `yield`, but this isn't that kind of yield + else { this.exprAllowed = false; } + } + + var ownDestructuringErrors = false, oldParenAssign = -1, oldTrailingComma = -1, oldShorthandAssign = -1; + if (refDestructuringErrors) { + oldParenAssign = refDestructuringErrors.parenthesizedAssign; + oldTrailingComma = refDestructuringErrors.trailingComma; + oldShorthandAssign = refDestructuringErrors.shorthandAssign; + refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = refDestructuringErrors.shorthandAssign = -1; + } else { + refDestructuringErrors = new DestructuringErrors; + ownDestructuringErrors = true; + } + + var startPos = this.start, startLoc = this.startLoc; + if (this.type === types.parenL || this.type === types.name) + { this.potentialArrowAt = this.start; } + var left = this.parseMaybeConditional(noIn, refDestructuringErrors); + if (afterLeftParse) { left = afterLeftParse.call(this, left, startPos, startLoc); } + if (this.type.isAssign) { + var node = this.startNodeAt(startPos, startLoc); + node.operator = this.value; + node.left = this.type === types.eq ? this.toAssignable(left, false, refDestructuringErrors) : left; + if (!ownDestructuringErrors) { DestructuringErrors.call(refDestructuringErrors); } + refDestructuringErrors.shorthandAssign = -1; // reset because shorthand default was used correctly + this.checkLVal(left); + this.next(); + node.right = this.parseMaybeAssign(noIn); + return this.finishNode(node, "AssignmentExpression") + } else { + if (ownDestructuringErrors) { this.checkExpressionErrors(refDestructuringErrors, true); } + } + if (oldParenAssign > -1) { refDestructuringErrors.parenthesizedAssign = oldParenAssign; } + if (oldTrailingComma > -1) { refDestructuringErrors.trailingComma = oldTrailingComma; } + if (oldShorthandAssign > -1) { refDestructuringErrors.shorthandAssign = oldShorthandAssign; } + return left + }; + + // Parse a ternary conditional (`?:`) operator. + + pp$3.parseMaybeConditional = function(noIn, refDestructuringErrors) { + var startPos = this.start, startLoc = this.startLoc; + var expr = this.parseExprOps(noIn, refDestructuringErrors); + if (this.checkExpressionErrors(refDestructuringErrors)) { return expr } + if (this.eat(types.question)) { + var node = this.startNodeAt(startPos, startLoc); + node.test = expr; + node.consequent = this.parseMaybeAssign(); + this.expect(types.colon); + node.alternate = this.parseMaybeAssign(noIn); + return this.finishNode(node, "ConditionalExpression") + } + return expr + }; + + // Start the precedence parser. + + pp$3.parseExprOps = function(noIn, refDestructuringErrors) { + var startPos = this.start, startLoc = this.startLoc; + var expr = this.parseMaybeUnary(refDestructuringErrors, false); + if (this.checkExpressionErrors(refDestructuringErrors)) { return expr } + return expr.start === startPos && expr.type === "ArrowFunctionExpression" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, noIn) + }; + + // Parse binary operators with the operator precedence parsing + // algorithm. `left` is the left-hand side of the operator. + // `minPrec` provides context that allows the function to stop and + // defer further parser to one of its callers when it encounters an + // operator that has a lower precedence than the set it is parsing. + + pp$3.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, noIn) { + var prec = this.type.binop; + if (prec != null && (!noIn || this.type !== types._in)) { + if (prec > minPrec) { + var logical = this.type === types.logicalOR || this.type === types.logicalAND; + var op = this.value; + this.next(); + var startPos = this.start, startLoc = this.startLoc; + var right = this.parseExprOp(this.parseMaybeUnary(null, false), startPos, startLoc, prec, noIn); + var node = this.buildBinary(leftStartPos, leftStartLoc, left, right, op, logical); + return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, noIn) + } + } + return left + }; + + pp$3.buildBinary = function(startPos, startLoc, left, right, op, logical) { + var node = this.startNodeAt(startPos, startLoc); + node.left = left; + node.operator = op; + node.right = right; + return this.finishNode(node, logical ? "LogicalExpression" : "BinaryExpression") + }; + + // Parse unary operators, both prefix and postfix. + + pp$3.parseMaybeUnary = function(refDestructuringErrors, sawUnary) { + var startPos = this.start, startLoc = this.startLoc, expr; + if (this.isContextual("await") && (this.inAsync || (!this.inFunction && this.options.allowAwaitOutsideFunction))) { + expr = this.parseAwait(); + sawUnary = true; + } else if (this.type.prefix) { + var node = this.startNode(), update = this.type === types.incDec; + node.operator = this.value; + node.prefix = true; + this.next(); + node.argument = this.parseMaybeUnary(null, true); + this.checkExpressionErrors(refDestructuringErrors, true); + if (update) { this.checkLVal(node.argument); } + else if (this.strict && node.operator === "delete" && + node.argument.type === "Identifier") + { this.raiseRecoverable(node.start, "Deleting local variable in strict mode"); } + else { sawUnary = true; } + expr = this.finishNode(node, update ? "UpdateExpression" : "UnaryExpression"); + } else { + expr = this.parseExprSubscripts(refDestructuringErrors); + if (this.checkExpressionErrors(refDestructuringErrors)) { return expr } + while (this.type.postfix && !this.canInsertSemicolon()) { + var node$1 = this.startNodeAt(startPos, startLoc); + node$1.operator = this.value; + node$1.prefix = false; + node$1.argument = expr; + this.checkLVal(expr); + this.next(); + expr = this.finishNode(node$1, "UpdateExpression"); + } + } + + if (!sawUnary && this.eat(types.starstar)) + { return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, false), "**", false) } + else + { return expr } + }; + + // Parse call, dot, and `[]`-subscript expressions. + + pp$3.parseExprSubscripts = function(refDestructuringErrors) { + var startPos = this.start, startLoc = this.startLoc; + var expr = this.parseExprAtom(refDestructuringErrors); + var skipArrowSubscripts = expr.type === "ArrowFunctionExpression" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== ")"; + if (this.checkExpressionErrors(refDestructuringErrors) || skipArrowSubscripts) { return expr } + var result = this.parseSubscripts(expr, startPos, startLoc); + if (refDestructuringErrors && result.type === "MemberExpression") { + if (refDestructuringErrors.parenthesizedAssign >= result.start) { refDestructuringErrors.parenthesizedAssign = -1; } + if (refDestructuringErrors.parenthesizedBind >= result.start) { refDestructuringErrors.parenthesizedBind = -1; } + } + return result + }; + + pp$3.parseSubscripts = function(base, startPos, startLoc, noCalls) { + var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === "Identifier" && base.name === "async" && + this.lastTokEnd === base.end && !this.canInsertSemicolon() && this.input.slice(base.start, base.end) === "async"; + while (true) { + var element = this.parseSubscript(base, startPos, startLoc, noCalls, maybeAsyncArrow); + if (element === base || element.type === "ArrowFunctionExpression") { return element } + base = element; + } + }; + + pp$3.parseSubscript = function(base, startPos, startLoc, noCalls, maybeAsyncArrow) { + var computed = this.eat(types.bracketL); + if (computed || this.eat(types.dot)) { + var node = this.startNodeAt(startPos, startLoc); + node.object = base; + node.property = computed ? this.parseExpression() : this.parseIdent(true); + node.computed = !!computed; + if (computed) { this.expect(types.bracketR); } + base = this.finishNode(node, "MemberExpression"); + } else if (!noCalls && this.eat(types.parenL)) { + var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos; + this.yieldPos = 0; + this.awaitPos = 0; + this.awaitIdentPos = 0; + var exprList = this.parseExprList(types.parenR, this.options.ecmaVersion >= 8 && base.type !== "Import", false, refDestructuringErrors); + if (maybeAsyncArrow && !this.canInsertSemicolon() && this.eat(types.arrow)) { + this.checkPatternErrors(refDestructuringErrors, false); + this.checkYieldAwaitInDefaultParams(); + if (this.awaitIdentPos > 0) + { this.raise(this.awaitIdentPos, "Cannot use 'await' as identifier inside an async function"); } + this.yieldPos = oldYieldPos; + this.awaitPos = oldAwaitPos; + this.awaitIdentPos = oldAwaitIdentPos; + return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, true) + } + this.checkExpressionErrors(refDestructuringErrors, true); + this.yieldPos = oldYieldPos || this.yieldPos; + this.awaitPos = oldAwaitPos || this.awaitPos; + this.awaitIdentPos = oldAwaitIdentPos || this.awaitIdentPos; + var node$1 = this.startNodeAt(startPos, startLoc); + node$1.callee = base; + node$1.arguments = exprList; + if (node$1.callee.type === "Import") { + if (node$1.arguments.length !== 1) { + this.raise(node$1.start, "import() requires exactly one argument"); + } + + var importArg = node$1.arguments[0]; + if (importArg && importArg.type === "SpreadElement") { + this.raise(importArg.start, "... is not allowed in import()"); + } + } + base = this.finishNode(node$1, "CallExpression"); + } else if (this.type === types.backQuote) { + var node$2 = this.startNodeAt(startPos, startLoc); + node$2.tag = base; + node$2.quasi = this.parseTemplate({isTagged: true}); + base = this.finishNode(node$2, "TaggedTemplateExpression"); + } + return base + }; + + // Parse an atomic expression — either a single token that is an + // expression, an expression started by a keyword like `function` or + // `new`, or an expression wrapped in punctuation like `()`, `[]`, + // or `{}`. + + pp$3.parseExprAtom = function(refDestructuringErrors) { + // If a division operator appears in an expression position, the + // tokenizer got confused, and we force it to read a regexp instead. + if (this.type === types.slash) { this.readRegexp(); } + + var node, canBeArrow = this.potentialArrowAt === this.start; + switch (this.type) { + case types._super: + if (!this.allowSuper) + { this.raise(this.start, "'super' keyword outside a method"); } + node = this.startNode(); + this.next(); + if (this.type === types.parenL && !this.allowDirectSuper) + { this.raise(node.start, "super() call outside constructor of a subclass"); } + // The `super` keyword can appear at below: + // SuperProperty: + // super [ Expression ] + // super . IdentifierName + // SuperCall: + // super Arguments + if (this.type !== types.dot && this.type !== types.bracketL && this.type !== types.parenL) + { this.unexpected(); } + return this.finishNode(node, "Super") + + case types._this: + node = this.startNode(); + this.next(); + return this.finishNode(node, "ThisExpression") + + case types.name: + var startPos = this.start, startLoc = this.startLoc, containsEsc = this.containsEsc; + var id = this.parseIdent(false); + if (this.options.ecmaVersion >= 8 && !containsEsc && id.name === "async" && !this.canInsertSemicolon() && this.eat(types._function)) + { return this.parseFunction(this.startNodeAt(startPos, startLoc), 0, false, true) } + if (canBeArrow && !this.canInsertSemicolon()) { + if (this.eat(types.arrow)) + { return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false) } + if (this.options.ecmaVersion >= 8 && id.name === "async" && this.type === types.name && !containsEsc) { + id = this.parseIdent(false); + if (this.canInsertSemicolon() || !this.eat(types.arrow)) + { this.unexpected(); } + return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], true) + } + } + return id + + case types.regexp: + var value = this.value; + node = this.parseLiteral(value.value); + node.regex = {pattern: value.pattern, flags: value.flags}; + return node + + case types.num: case types.string: + return this.parseLiteral(this.value) + + case types._null: case types._true: case types._false: + node = this.startNode(); + node.value = this.type === types._null ? null : this.type === types._true; + node.raw = this.type.keyword; + this.next(); + return this.finishNode(node, "Literal") + + case types.parenL: + var start = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow); + if (refDestructuringErrors) { + if (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr)) + { refDestructuringErrors.parenthesizedAssign = start; } + if (refDestructuringErrors.parenthesizedBind < 0) + { refDestructuringErrors.parenthesizedBind = start; } + } + return expr + + case types.bracketL: + node = this.startNode(); + this.next(); + node.elements = this.parseExprList(types.bracketR, true, true, refDestructuringErrors); + return this.finishNode(node, "ArrayExpression") + + case types.braceL: + return this.parseObj(false, refDestructuringErrors) + + case types._function: + node = this.startNode(); + this.next(); + return this.parseFunction(node, 0) + + case types._class: + return this.parseClass(this.startNode(), false) + + case types._new: + return this.parseNew() + + case types.backQuote: + return this.parseTemplate() + + case types._import: + if (this.options.ecmaVersion > 10) { + return this.parseDynamicImport() + } else { + return this.unexpected() + } + + default: + this.unexpected(); + } + }; + + pp$3.parseDynamicImport = function() { + var node = this.startNode(); + this.next(); + if (this.type !== types.parenL) { + this.unexpected(); + } + return this.finishNode(node, "Import") + }; + + pp$3.parseLiteral = function(value) { + var node = this.startNode(); + node.value = value; + node.raw = this.input.slice(this.start, this.end); + if (node.raw.charCodeAt(node.raw.length - 1) === 110) { node.bigint = node.raw.slice(0, -1); } + this.next(); + return this.finishNode(node, "Literal") + }; + + pp$3.parseParenExpression = function() { + this.expect(types.parenL); + var val = this.parseExpression(); + this.expect(types.parenR); + return val + }; + + pp$3.parseParenAndDistinguishExpression = function(canBeArrow) { + var startPos = this.start, startLoc = this.startLoc, val, allowTrailingComma = this.options.ecmaVersion >= 8; + if (this.options.ecmaVersion >= 6) { + this.next(); + + var innerStartPos = this.start, innerStartLoc = this.startLoc; + var exprList = [], first = true, lastIsComma = false; + var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart; + this.yieldPos = 0; + this.awaitPos = 0; + // Do not save awaitIdentPos to allow checking awaits nested in parameters + while (this.type !== types.parenR) { + first ? first = false : this.expect(types.comma); + if (allowTrailingComma && this.afterTrailingComma(types.parenR, true)) { + lastIsComma = true; + break + } else if (this.type === types.ellipsis) { + spreadStart = this.start; + exprList.push(this.parseParenItem(this.parseRestBinding())); + if (this.type === types.comma) { this.raise(this.start, "Comma is not permitted after the rest element"); } + break + } else { + exprList.push(this.parseMaybeAssign(false, refDestructuringErrors, this.parseParenItem)); + } + } + var innerEndPos = this.start, innerEndLoc = this.startLoc; + this.expect(types.parenR); + + if (canBeArrow && !this.canInsertSemicolon() && this.eat(types.arrow)) { + this.checkPatternErrors(refDestructuringErrors, false); + this.checkYieldAwaitInDefaultParams(); + this.yieldPos = oldYieldPos; + this.awaitPos = oldAwaitPos; + return this.parseParenArrowList(startPos, startLoc, exprList) + } + + if (!exprList.length || lastIsComma) { this.unexpected(this.lastTokStart); } + if (spreadStart) { this.unexpected(spreadStart); } + this.checkExpressionErrors(refDestructuringErrors, true); + this.yieldPos = oldYieldPos || this.yieldPos; + this.awaitPos = oldAwaitPos || this.awaitPos; + + if (exprList.length > 1) { + val = this.startNodeAt(innerStartPos, innerStartLoc); + val.expressions = exprList; + this.finishNodeAt(val, "SequenceExpression", innerEndPos, innerEndLoc); + } else { + val = exprList[0]; + } + } else { + val = this.parseParenExpression(); + } + + if (this.options.preserveParens) { + var par = this.startNodeAt(startPos, startLoc); + par.expression = val; + return this.finishNode(par, "ParenthesizedExpression") + } else { + return val + } + }; + + pp$3.parseParenItem = function(item) { + return item + }; + + pp$3.parseParenArrowList = function(startPos, startLoc, exprList) { + return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList) + }; + + // New's precedence is slightly tricky. It must allow its argument to + // be a `[]` or dot subscript expression, but not a call — at least, + // not without wrapping it in parentheses. Thus, it uses the noCalls + // argument to parseSubscripts to prevent it from consuming the + // argument list. + + var empty$1 = []; + + pp$3.parseNew = function() { + var node = this.startNode(); + var meta = this.parseIdent(true); + if (this.options.ecmaVersion >= 6 && this.eat(types.dot)) { + node.meta = meta; + var containsEsc = this.containsEsc; + node.property = this.parseIdent(true); + if (node.property.name !== "target" || containsEsc) + { this.raiseRecoverable(node.property.start, "The only valid meta property for new is new.target"); } + if (!this.inNonArrowFunction()) + { this.raiseRecoverable(node.start, "new.target can only be used in functions"); } + return this.finishNode(node, "MetaProperty") + } + var startPos = this.start, startLoc = this.startLoc; + node.callee = this.parseSubscripts(this.parseExprAtom(), startPos, startLoc, true); + if (this.options.ecmaVersion > 10 && node.callee.type === "Import") { + this.raise(node.callee.start, "Cannot use new with import(...)"); + } + if (this.eat(types.parenL)) { node.arguments = this.parseExprList(types.parenR, this.options.ecmaVersion >= 8 && node.callee.type !== "Import", false); } + else { node.arguments = empty$1; } + return this.finishNode(node, "NewExpression") + }; + + // Parse template expression. + + pp$3.parseTemplateElement = function(ref) { + var isTagged = ref.isTagged; + + var elem = this.startNode(); + if (this.type === types.invalidTemplate) { + if (!isTagged) { + this.raiseRecoverable(this.start, "Bad escape sequence in untagged template literal"); + } + elem.value = { + raw: this.value, + cooked: null + }; + } else { + elem.value = { + raw: this.input.slice(this.start, this.end).replace(/\r\n?/g, "\n"), + cooked: this.value + }; + } + this.next(); + elem.tail = this.type === types.backQuote; + return this.finishNode(elem, "TemplateElement") + }; + + pp$3.parseTemplate = function(ref) { + if ( ref === void 0 ) ref = {}; + var isTagged = ref.isTagged; if ( isTagged === void 0 ) isTagged = false; + + var node = this.startNode(); + this.next(); + node.expressions = []; + var curElt = this.parseTemplateElement({isTagged: isTagged}); + node.quasis = [curElt]; + while (!curElt.tail) { + if (this.type === types.eof) { this.raise(this.pos, "Unterminated template literal"); } + this.expect(types.dollarBraceL); + node.expressions.push(this.parseExpression()); + this.expect(types.braceR); + node.quasis.push(curElt = this.parseTemplateElement({isTagged: isTagged})); + } + this.next(); + return this.finishNode(node, "TemplateLiteral") + }; + + pp$3.isAsyncProp = function(prop) { + return !prop.computed && prop.key.type === "Identifier" && prop.key.name === "async" && + (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)) && + !lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) + }; + + // Parse an object literal or binding pattern. + + pp$3.parseObj = function(isPattern, refDestructuringErrors) { + var node = this.startNode(), first = true, propHash = {}; + node.properties = []; + this.next(); + while (!this.eat(types.braceR)) { + if (!first) { + this.expect(types.comma); + if (this.afterTrailingComma(types.braceR)) { break } + } else { first = false; } + + var prop = this.parseProperty(isPattern, refDestructuringErrors); + if (!isPattern) { this.checkPropClash(prop, propHash, refDestructuringErrors); } + node.properties.push(prop); + } + return this.finishNode(node, isPattern ? "ObjectPattern" : "ObjectExpression") + }; + + pp$3.parseProperty = function(isPattern, refDestructuringErrors) { + var prop = this.startNode(), isGenerator, isAsync, startPos, startLoc; + if (this.options.ecmaVersion >= 9 && this.eat(types.ellipsis)) { + if (isPattern) { + prop.argument = this.parseIdent(false); + if (this.type === types.comma) { + this.raise(this.start, "Comma is not permitted after the rest element"); + } + return this.finishNode(prop, "RestElement") + } + // To disallow parenthesized identifier via `this.toAssignable()`. + if (this.type === types.parenL && refDestructuringErrors) { + if (refDestructuringErrors.parenthesizedAssign < 0) { + refDestructuringErrors.parenthesizedAssign = this.start; + } + if (refDestructuringErrors.parenthesizedBind < 0) { + refDestructuringErrors.parenthesizedBind = this.start; + } + } + // Parse argument. + prop.argument = this.parseMaybeAssign(false, refDestructuringErrors); + // To disallow trailing comma via `this.toAssignable()`. + if (this.type === types.comma && refDestructuringErrors && refDestructuringErrors.trailingComma < 0) { + refDestructuringErrors.trailingComma = this.start; + } + // Finish + return this.finishNode(prop, "SpreadElement") + } + if (this.options.ecmaVersion >= 6) { + prop.method = false; + prop.shorthand = false; + if (isPattern || refDestructuringErrors) { + startPos = this.start; + startLoc = this.startLoc; + } + if (!isPattern) + { isGenerator = this.eat(types.star); } + } + var containsEsc = this.containsEsc; + this.parsePropertyName(prop); + if (!isPattern && !containsEsc && this.options.ecmaVersion >= 8 && !isGenerator && this.isAsyncProp(prop)) { + isAsync = true; + isGenerator = this.options.ecmaVersion >= 9 && this.eat(types.star); + this.parsePropertyName(prop, refDestructuringErrors); + } else { + isAsync = false; + } + this.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc); + return this.finishNode(prop, "Property") + }; + + pp$3.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc) { + if ((isGenerator || isAsync) && this.type === types.colon) + { this.unexpected(); } + + if (this.eat(types.colon)) { + prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(false, refDestructuringErrors); + prop.kind = "init"; + } else if (this.options.ecmaVersion >= 6 && this.type === types.parenL) { + if (isPattern) { this.unexpected(); } + prop.kind = "init"; + prop.method = true; + prop.value = this.parseMethod(isGenerator, isAsync); + } else if (!isPattern && !containsEsc && + this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === "Identifier" && + (prop.key.name === "get" || prop.key.name === "set") && + (this.type !== types.comma && this.type !== types.braceR)) { + if (isGenerator || isAsync) { this.unexpected(); } + prop.kind = prop.key.name; + this.parsePropertyName(prop); + prop.value = this.parseMethod(false); + var paramCount = prop.kind === "get" ? 0 : 1; + if (prop.value.params.length !== paramCount) { + var start = prop.value.start; + if (prop.kind === "get") + { this.raiseRecoverable(start, "getter should have no params"); } + else + { this.raiseRecoverable(start, "setter should have exactly one param"); } + } else { + if (prop.kind === "set" && prop.value.params[0].type === "RestElement") + { this.raiseRecoverable(prop.value.params[0].start, "Setter cannot use rest params"); } + } + } else if (this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === "Identifier") { + if (isGenerator || isAsync) { this.unexpected(); } + this.checkUnreserved(prop.key); + if (prop.key.name === "await" && !this.awaitIdentPos) + { this.awaitIdentPos = startPos; } + prop.kind = "init"; + if (isPattern) { + prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key); + } else if (this.type === types.eq && refDestructuringErrors) { + if (refDestructuringErrors.shorthandAssign < 0) + { refDestructuringErrors.shorthandAssign = this.start; } + prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key); + } else { + prop.value = prop.key; + } + prop.shorthand = true; + } else { this.unexpected(); } + }; + + pp$3.parsePropertyName = function(prop) { + if (this.options.ecmaVersion >= 6) { + if (this.eat(types.bracketL)) { + prop.computed = true; + prop.key = this.parseMaybeAssign(); + this.expect(types.bracketR); + return prop.key + } else { + prop.computed = false; + } + } + return prop.key = this.type === types.num || this.type === types.string ? this.parseExprAtom() : this.parseIdent(true) + }; + + // Initialize empty function node. + + pp$3.initFunction = function(node) { + node.id = null; + if (this.options.ecmaVersion >= 6) { node.generator = node.expression = false; } + if (this.options.ecmaVersion >= 8) { node.async = false; } + }; + + // Parse object or class method. + + pp$3.parseMethod = function(isGenerator, isAsync, allowDirectSuper) { + var node = this.startNode(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos; + + this.initFunction(node); + if (this.options.ecmaVersion >= 6) + { node.generator = isGenerator; } + if (this.options.ecmaVersion >= 8) + { node.async = !!isAsync; } + + this.yieldPos = 0; + this.awaitPos = 0; + this.awaitIdentPos = 0; + this.enterScope(functionFlags(isAsync, node.generator) | SCOPE_SUPER | (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0)); + + this.expect(types.parenL); + node.params = this.parseBindingList(types.parenR, false, this.options.ecmaVersion >= 8); + this.checkYieldAwaitInDefaultParams(); + this.parseFunctionBody(node, false, true); + + this.yieldPos = oldYieldPos; + this.awaitPos = oldAwaitPos; + this.awaitIdentPos = oldAwaitIdentPos; + return this.finishNode(node, "FunctionExpression") + }; + + // Parse arrow function expression with given parameters. + + pp$3.parseArrowExpression = function(node, params, isAsync) { + var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos; + + this.enterScope(functionFlags(isAsync, false) | SCOPE_ARROW); + this.initFunction(node); + if (this.options.ecmaVersion >= 8) { node.async = !!isAsync; } + + this.yieldPos = 0; + this.awaitPos = 0; + this.awaitIdentPos = 0; + + node.params = this.toAssignableList(params, true); + this.parseFunctionBody(node, true, false); + + this.yieldPos = oldYieldPos; + this.awaitPos = oldAwaitPos; + this.awaitIdentPos = oldAwaitIdentPos; + return this.finishNode(node, "ArrowFunctionExpression") + }; + + // Parse function body and check parameters. + + pp$3.parseFunctionBody = function(node, isArrowFunction, isMethod) { + var isExpression = isArrowFunction && this.type !== types.braceL; + var oldStrict = this.strict, useStrict = false; + + if (isExpression) { + node.body = this.parseMaybeAssign(); + node.expression = true; + this.checkParams(node, false); + } else { + var nonSimple = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node.params); + if (!oldStrict || nonSimple) { + useStrict = this.strictDirective(this.end); + // If this is a strict mode function, verify that argument names + // are not repeated, and it does not try to bind the words `eval` + // or `arguments`. + if (useStrict && nonSimple) + { this.raiseRecoverable(node.start, "Illegal 'use strict' directive in function with non-simple parameter list"); } + } + // Start a new scope with regard to labels and the `inFunction` + // flag (restore them to their old value afterwards). + var oldLabels = this.labels; + this.labels = []; + if (useStrict) { this.strict = true; } + + // Add the params to varDeclaredNames to ensure that an error is thrown + // if a let/const declaration in the function clashes with one of the params. + this.checkParams(node, !oldStrict && !useStrict && !isArrowFunction && !isMethod && this.isSimpleParamList(node.params)); + node.body = this.parseBlock(false); + node.expression = false; + this.adaptDirectivePrologue(node.body.body); + this.labels = oldLabels; + } + this.exitScope(); + + // Ensure the function name isn't a forbidden identifier in strict mode, e.g. 'eval' + if (this.strict && node.id) { this.checkLVal(node.id, BIND_OUTSIDE); } + this.strict = oldStrict; + }; + + pp$3.isSimpleParamList = function(params) { + for (var i = 0, list = params; i < list.length; i += 1) + { + var param = list[i]; + + if (param.type !== "Identifier") { return false + } } + return true + }; + + // Checks function params for various disallowed patterns such as using "eval" + // or "arguments" and duplicate parameters. + + pp$3.checkParams = function(node, allowDuplicates) { + var nameHash = {}; + for (var i = 0, list = node.params; i < list.length; i += 1) + { + var param = list[i]; + + this.checkLVal(param, BIND_VAR, allowDuplicates ? null : nameHash); + } + }; + + // Parses a comma-separated list of expressions, and returns them as + // an array. `close` is the token type that ends the list, and + // `allowEmpty` can be turned on to allow subsequent commas with + // nothing in between them to be parsed as `null` (which is needed + // for array literals). + + pp$3.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestructuringErrors) { + var elts = [], first = true; + while (!this.eat(close)) { + if (!first) { + this.expect(types.comma); + if (allowTrailingComma && this.afterTrailingComma(close)) { break } + } else { first = false; } + + var elt = (void 0); + if (allowEmpty && this.type === types.comma) + { elt = null; } + else if (this.type === types.ellipsis) { + elt = this.parseSpread(refDestructuringErrors); + if (refDestructuringErrors && this.type === types.comma && refDestructuringErrors.trailingComma < 0) + { refDestructuringErrors.trailingComma = this.start; } + } else { + elt = this.parseMaybeAssign(false, refDestructuringErrors); + } + elts.push(elt); + } + return elts + }; + + pp$3.checkUnreserved = function(ref) { + var start = ref.start; + var end = ref.end; + var name = ref.name; + + if (this.inGenerator && name === "yield") + { this.raiseRecoverable(start, "Cannot use 'yield' as identifier inside a generator"); } + if (this.inAsync && name === "await") + { this.raiseRecoverable(start, "Cannot use 'await' as identifier inside an async function"); } + if (this.keywords.test(name)) + { this.raise(start, ("Unexpected keyword '" + name + "'")); } + if (this.options.ecmaVersion < 6 && + this.input.slice(start, end).indexOf("\\") !== -1) { return } + var re = this.strict ? this.reservedWordsStrict : this.reservedWords; + if (re.test(name)) { + if (!this.inAsync && name === "await") + { this.raiseRecoverable(start, "Cannot use keyword 'await' outside an async function"); } + this.raiseRecoverable(start, ("The keyword '" + name + "' is reserved")); + } + }; + + // Parse the next token as an identifier. If `liberal` is true (used + // when parsing properties), it will also convert keywords into + // identifiers. + + pp$3.parseIdent = function(liberal, isBinding) { + var node = this.startNode(); + if (liberal && this.options.allowReserved === "never") { liberal = false; } + if (this.type === types.name) { + node.name = this.value; + } else if (this.type.keyword) { + node.name = this.type.keyword; + + // To fix https://github.com/acornjs/acorn/issues/575 + // `class` and `function` keywords push new context into this.context. + // But there is no chance to pop the context if the keyword is consumed as an identifier such as a property name. + // If the previous token is a dot, this does not apply because the context-managing code already ignored the keyword + if ((node.name === "class" || node.name === "function") && + (this.lastTokEnd !== this.lastTokStart + 1 || this.input.charCodeAt(this.lastTokStart) !== 46)) { + this.context.pop(); + } + } else { + this.unexpected(); + } + this.next(); + this.finishNode(node, "Identifier"); + if (!liberal) { + this.checkUnreserved(node); + if (node.name === "await" && !this.awaitIdentPos) + { this.awaitIdentPos = node.start; } + } + return node + }; + + // Parses yield expression inside generator. + + pp$3.parseYield = function(noIn) { + if (!this.yieldPos) { this.yieldPos = this.start; } + + var node = this.startNode(); + this.next(); + if (this.type === types.semi || this.canInsertSemicolon() || (this.type !== types.star && !this.type.startsExpr)) { + node.delegate = false; + node.argument = null; + } else { + node.delegate = this.eat(types.star); + node.argument = this.parseMaybeAssign(noIn); + } + return this.finishNode(node, "YieldExpression") + }; + + pp$3.parseAwait = function() { + if (!this.awaitPos) { this.awaitPos = this.start; } + + var node = this.startNode(); + this.next(); + node.argument = this.parseMaybeUnary(null, true); + return this.finishNode(node, "AwaitExpression") + }; + + var pp$4 = Parser.prototype; + + // This function is used to raise exceptions on parse errors. It + // takes an offset integer (into the current `input`) to indicate + // the location of the error, attaches the position to the end + // of the error message, and then raises a `SyntaxError` with that + // message. + + pp$4.raise = function(pos, message) { + var loc = getLineInfo(this.input, pos); + message += " (" + loc.line + ":" + loc.column + ")"; + var err = new SyntaxError(message); + err.pos = pos; err.loc = loc; err.raisedAt = this.pos; + throw err + }; + + pp$4.raiseRecoverable = pp$4.raise; + + pp$4.curPosition = function() { + if (this.options.locations) { + return new Position(this.curLine, this.pos - this.lineStart) + } + }; + + var pp$5 = Parser.prototype; + + var Scope = function Scope(flags) { + this.flags = flags; + // A list of var-declared names in the current lexical scope + this.var = []; + // A list of lexically-declared names in the current lexical scope + this.lexical = []; + // A list of lexically-declared FunctionDeclaration names in the current lexical scope + this.functions = []; + }; + + // The functions in this module keep track of declared variables in the current scope in order to detect duplicate variable names. + + pp$5.enterScope = function(flags) { + this.scopeStack.push(new Scope(flags)); + }; + + pp$5.exitScope = function() { + this.scopeStack.pop(); + }; + + // The spec says: + // > At the top level of a function, or script, function declarations are + // > treated like var declarations rather than like lexical declarations. + pp$5.treatFunctionsAsVarInScope = function(scope) { + return (scope.flags & SCOPE_FUNCTION) || !this.inModule && (scope.flags & SCOPE_TOP) + }; + + pp$5.declareName = function(name, bindingType, pos) { + var redeclared = false; + if (bindingType === BIND_LEXICAL) { + var scope = this.currentScope(); + redeclared = scope.lexical.indexOf(name) > -1 || scope.functions.indexOf(name) > -1 || scope.var.indexOf(name) > -1; + scope.lexical.push(name); + if (this.inModule && (scope.flags & SCOPE_TOP)) + { delete this.undefinedExports[name]; } + } else if (bindingType === BIND_SIMPLE_CATCH) { + var scope$1 = this.currentScope(); + scope$1.lexical.push(name); + } else if (bindingType === BIND_FUNCTION) { + var scope$2 = this.currentScope(); + if (this.treatFunctionsAsVar) + { redeclared = scope$2.lexical.indexOf(name) > -1; } + else + { redeclared = scope$2.lexical.indexOf(name) > -1 || scope$2.var.indexOf(name) > -1; } + scope$2.functions.push(name); + } else { + for (var i = this.scopeStack.length - 1; i >= 0; --i) { + var scope$3 = this.scopeStack[i]; + if (scope$3.lexical.indexOf(name) > -1 && !((scope$3.flags & SCOPE_SIMPLE_CATCH) && scope$3.lexical[0] === name) || + !this.treatFunctionsAsVarInScope(scope$3) && scope$3.functions.indexOf(name) > -1) { + redeclared = true; + break + } + scope$3.var.push(name); + if (this.inModule && (scope$3.flags & SCOPE_TOP)) + { delete this.undefinedExports[name]; } + if (scope$3.flags & SCOPE_VAR) { break } + } + } + if (redeclared) { this.raiseRecoverable(pos, ("Identifier '" + name + "' has already been declared")); } + }; + + pp$5.checkLocalExport = function(id) { + // scope.functions must be empty as Module code is always strict. + if (this.scopeStack[0].lexical.indexOf(id.name) === -1 && + this.scopeStack[0].var.indexOf(id.name) === -1) { + this.undefinedExports[id.name] = id; + } + }; + + pp$5.currentScope = function() { + return this.scopeStack[this.scopeStack.length - 1] + }; + + pp$5.currentVarScope = function() { + for (var i = this.scopeStack.length - 1;; i--) { + var scope = this.scopeStack[i]; + if (scope.flags & SCOPE_VAR) { return scope } + } + }; + + // Could be useful for `this`, `new.target`, `super()`, `super.property`, and `super[property]`. + pp$5.currentThisScope = function() { + for (var i = this.scopeStack.length - 1;; i--) { + var scope = this.scopeStack[i]; + if (scope.flags & SCOPE_VAR && !(scope.flags & SCOPE_ARROW)) { return scope } + } + }; + + var Node = function Node(parser, pos, loc) { + this.type = ""; + this.start = pos; + this.end = 0; + if (parser.options.locations) + { this.loc = new SourceLocation(parser, loc); } + if (parser.options.directSourceFile) + { this.sourceFile = parser.options.directSourceFile; } + if (parser.options.ranges) + { this.range = [pos, 0]; } + }; + + // Start an AST node, attaching a start offset. + + var pp$6 = Parser.prototype; + + pp$6.startNode = function() { + return new Node(this, this.start, this.startLoc) + }; + + pp$6.startNodeAt = function(pos, loc) { + return new Node(this, pos, loc) + }; + + // Finish an AST node, adding `type` and `end` properties. + + function finishNodeAt(node, type, pos, loc) { + node.type = type; + node.end = pos; + if (this.options.locations) + { node.loc.end = loc; } + if (this.options.ranges) + { node.range[1] = pos; } + return node + } + + pp$6.finishNode = function(node, type) { + return finishNodeAt.call(this, node, type, this.lastTokEnd, this.lastTokEndLoc) + }; + + // Finish node at given position + + pp$6.finishNodeAt = function(node, type, pos, loc) { + return finishNodeAt.call(this, node, type, pos, loc) + }; + + // The algorithm used to determine whether a regexp can appear at a + + var TokContext = function TokContext(token, isExpr, preserveSpace, override, generator) { + this.token = token; + this.isExpr = !!isExpr; + this.preserveSpace = !!preserveSpace; + this.override = override; + this.generator = !!generator; + }; + + var types$1 = { + b_stat: new TokContext("{", false), + b_expr: new TokContext("{", true), + b_tmpl: new TokContext("${", false), + p_stat: new TokContext("(", false), + p_expr: new TokContext("(", true), + q_tmpl: new TokContext("`", true, true, function (p) { return p.tryReadTemplateToken(); }), + f_stat: new TokContext("function", false), + f_expr: new TokContext("function", true), + f_expr_gen: new TokContext("function", true, false, null, true), + f_gen: new TokContext("function", false, false, null, true) + }; + + var pp$7 = Parser.prototype; + + pp$7.initialContext = function() { + return [types$1.b_stat] + }; + + pp$7.braceIsBlock = function(prevType) { + var parent = this.curContext(); + if (parent === types$1.f_expr || parent === types$1.f_stat) + { return true } + if (prevType === types.colon && (parent === types$1.b_stat || parent === types$1.b_expr)) + { return !parent.isExpr } + + // The check for `tt.name && exprAllowed` detects whether we are + // after a `yield` or `of` construct. See the `updateContext` for + // `tt.name`. + if (prevType === types._return || prevType === types.name && this.exprAllowed) + { return lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) } + if (prevType === types._else || prevType === types.semi || prevType === types.eof || prevType === types.parenR || prevType === types.arrow) + { return true } + if (prevType === types.braceL) + { return parent === types$1.b_stat } + if (prevType === types._var || prevType === types._const || prevType === types.name) + { return false } + return !this.exprAllowed + }; + + pp$7.inGeneratorContext = function() { + for (var i = this.context.length - 1; i >= 1; i--) { + var context = this.context[i]; + if (context.token === "function") + { return context.generator } + } + return false + }; + + pp$7.updateContext = function(prevType) { + var update, type = this.type; + if (type.keyword && prevType === types.dot) + { this.exprAllowed = false; } + else if (update = type.updateContext) + { update.call(this, prevType); } + else + { this.exprAllowed = type.beforeExpr; } + }; + + // Token-specific context update code + + types.parenR.updateContext = types.braceR.updateContext = function() { + if (this.context.length === 1) { + this.exprAllowed = true; + return + } + var out = this.context.pop(); + if (out === types$1.b_stat && this.curContext().token === "function") { + out = this.context.pop(); + } + this.exprAllowed = !out.isExpr; + }; + + types.braceL.updateContext = function(prevType) { + this.context.push(this.braceIsBlock(prevType) ? types$1.b_stat : types$1.b_expr); + this.exprAllowed = true; + }; + + types.dollarBraceL.updateContext = function() { + this.context.push(types$1.b_tmpl); + this.exprAllowed = true; + }; + + types.parenL.updateContext = function(prevType) { + var statementParens = prevType === types._if || prevType === types._for || prevType === types._with || prevType === types._while; + this.context.push(statementParens ? types$1.p_stat : types$1.p_expr); + this.exprAllowed = true; + }; + + types.incDec.updateContext = function() { + // tokExprAllowed stays unchanged + }; + + types._function.updateContext = types._class.updateContext = function(prevType) { + if (prevType.beforeExpr && prevType !== types.semi && prevType !== types._else && + !(prevType === types._return && lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) && + !((prevType === types.colon || prevType === types.braceL) && this.curContext() === types$1.b_stat)) + { this.context.push(types$1.f_expr); } + else + { this.context.push(types$1.f_stat); } + this.exprAllowed = false; + }; + + types.backQuote.updateContext = function() { + if (this.curContext() === types$1.q_tmpl) + { this.context.pop(); } + else + { this.context.push(types$1.q_tmpl); } + this.exprAllowed = false; + }; + + types.star.updateContext = function(prevType) { + if (prevType === types._function) { + var index = this.context.length - 1; + if (this.context[index] === types$1.f_expr) + { this.context[index] = types$1.f_expr_gen; } + else + { this.context[index] = types$1.f_gen; } + } + this.exprAllowed = true; + }; + + types.name.updateContext = function(prevType) { + var allowed = false; + if (this.options.ecmaVersion >= 6 && prevType !== types.dot) { + if (this.value === "of" && !this.exprAllowed || + this.value === "yield" && this.inGeneratorContext()) + { allowed = true; } + } + this.exprAllowed = allowed; + }; + + // This file contains Unicode properties extracted from the ECMAScript + // specification. The lists are extracted like so: + // $$('#table-binary-unicode-properties > figure > table > tbody > tr > td:nth-child(1) code').map(el => el.innerText) + + // #table-binary-unicode-properties + var 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"; + var unicodeBinaryProperties = { + 9: ecma9BinaryProperties, + 10: ecma9BinaryProperties + " Extended_Pictographic" + }; + + // #table-unicode-general-category-values + var 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"; + + // #table-unicode-script-values + var 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"; + var unicodeScriptValues = { + 9: ecma9ScriptValues, + 10: ecma9ScriptValues + " Dogra Dogr Elymaic Elym Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Nandinagari Nand Nyiakeng_Puachue_Hmong Hmnp Old_Sogdian Sogo Sogdian Sogd Wancho Wcho" + }; + + var data = {}; + function buildUnicodeData(ecmaVersion) { + var d = data[ecmaVersion] = { + binary: wordsRegexp(unicodeBinaryProperties[ecmaVersion] + " " + unicodeGeneralCategoryValues), + nonBinary: { + General_Category: wordsRegexp(unicodeGeneralCategoryValues), + Script: wordsRegexp(unicodeScriptValues[ecmaVersion]) + } + }; + d.nonBinary.Script_Extensions = d.nonBinary.Script; + + d.nonBinary.gc = d.nonBinary.General_Category; + d.nonBinary.sc = d.nonBinary.Script; + d.nonBinary.scx = d.nonBinary.Script_Extensions; + } + buildUnicodeData(9); + buildUnicodeData(10); + + var pp$8 = Parser.prototype; + + var RegExpValidationState = function RegExpValidationState(parser) { + this.parser = parser; + this.validFlags = "gim" + (parser.options.ecmaVersion >= 6 ? "uy" : "") + (parser.options.ecmaVersion >= 9 ? "s" : ""); + this.unicodeProperties = data[parser.options.ecmaVersion >= 10 ? 10 : parser.options.ecmaVersion]; + this.source = ""; + this.flags = ""; + this.start = 0; + this.switchU = false; + this.switchN = false; + this.pos = 0; + this.lastIntValue = 0; + this.lastStringValue = ""; + this.lastAssertionIsQuantifiable = false; + this.numCapturingParens = 0; + this.maxBackReference = 0; + this.groupNames = []; + this.backReferenceNames = []; + }; + + RegExpValidationState.prototype.reset = function reset (start, pattern, flags) { + var unicode = flags.indexOf("u") !== -1; + this.start = start | 0; + this.source = pattern + ""; + this.flags = flags; + this.switchU = unicode && this.parser.options.ecmaVersion >= 6; + this.switchN = unicode && this.parser.options.ecmaVersion >= 9; + }; + + RegExpValidationState.prototype.raise = function raise (message) { + this.parser.raiseRecoverable(this.start, ("Invalid regular expression: /" + (this.source) + "/: " + message)); + }; + + // If u flag is given, this returns the code point at the index (it combines a surrogate pair). + // Otherwise, this returns the code unit of the index (can be a part of a surrogate pair). + RegExpValidationState.prototype.at = function at (i) { + var s = this.source; + var l = s.length; + if (i >= l) { + return -1 + } + var c = s.charCodeAt(i); + if (!this.switchU || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l) { + return c + } + return (c << 10) + s.charCodeAt(i + 1) - 0x35FDC00 + }; + + RegExpValidationState.prototype.nextIndex = function nextIndex (i) { + var s = this.source; + var l = s.length; + if (i >= l) { + return l + } + var c = s.charCodeAt(i); + if (!this.switchU || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l) { + return i + 1 + } + return i + 2 + }; + + RegExpValidationState.prototype.current = function current () { + return this.at(this.pos) + }; + + RegExpValidationState.prototype.lookahead = function lookahead () { + return this.at(this.nextIndex(this.pos)) + }; + + RegExpValidationState.prototype.advance = function advance () { + this.pos = this.nextIndex(this.pos); + }; + + RegExpValidationState.prototype.eat = function eat (ch) { + if (this.current() === ch) { + this.advance(); + return true + } + return false + }; + + function codePointToString(ch) { + if (ch <= 0xFFFF) { return String.fromCharCode(ch) } + ch -= 0x10000; + return String.fromCharCode((ch >> 10) + 0xD800, (ch & 0x03FF) + 0xDC00) + } + + /** + * Validate the flags part of a given RegExpLiteral. + * + * @param {RegExpValidationState} state The state to validate RegExp. + * @returns {void} + */ + pp$8.validateRegExpFlags = function(state) { + var validFlags = state.validFlags; + var flags = state.flags; + + for (var i = 0; i < flags.length; i++) { + var flag = flags.charAt(i); + if (validFlags.indexOf(flag) === -1) { + this.raise(state.start, "Invalid regular expression flag"); + } + if (flags.indexOf(flag, i + 1) > -1) { + this.raise(state.start, "Duplicate regular expression flag"); + } + } + }; + + /** + * Validate the pattern part of a given RegExpLiteral. + * + * @param {RegExpValidationState} state The state to validate RegExp. + * @returns {void} + */ + pp$8.validateRegExpPattern = function(state) { + this.regexp_pattern(state); + + // The goal symbol for the parse is |Pattern[~U, ~N]|. If the result of + // parsing contains a |GroupName|, reparse with the goal symbol + // |Pattern[~U, +N]| and use this result instead. Throw a *SyntaxError* + // exception if _P_ did not conform to the grammar, if any elements of _P_ + // were not matched by the parse, or if any Early Error conditions exist. + if (!state.switchN && this.options.ecmaVersion >= 9 && state.groupNames.length > 0) { + state.switchN = true; + this.regexp_pattern(state); + } + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-Pattern + pp$8.regexp_pattern = function(state) { + state.pos = 0; + state.lastIntValue = 0; + state.lastStringValue = ""; + state.lastAssertionIsQuantifiable = false; + state.numCapturingParens = 0; + state.maxBackReference = 0; + state.groupNames.length = 0; + state.backReferenceNames.length = 0; + + this.regexp_disjunction(state); + + if (state.pos !== state.source.length) { + // Make the same messages as V8. + if (state.eat(0x29 /* ) */)) { + state.raise("Unmatched ')'"); + } + if (state.eat(0x5D /* [ */) || state.eat(0x7D /* } */)) { + state.raise("Lone quantifier brackets"); + } + } + if (state.maxBackReference > state.numCapturingParens) { + state.raise("Invalid escape"); + } + for (var i = 0, list = state.backReferenceNames; i < list.length; i += 1) { + var name = list[i]; + + if (state.groupNames.indexOf(name) === -1) { + state.raise("Invalid named capture referenced"); + } + } + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-Disjunction + pp$8.regexp_disjunction = function(state) { + this.regexp_alternative(state); + while (state.eat(0x7C /* | */)) { + this.regexp_alternative(state); + } + + // Make the same message as V8. + if (this.regexp_eatQuantifier(state, true)) { + state.raise("Nothing to repeat"); + } + if (state.eat(0x7B /* { */)) { + state.raise("Lone quantifier brackets"); + } + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-Alternative + pp$8.regexp_alternative = function(state) { + while (state.pos < state.source.length && this.regexp_eatTerm(state)) + { } + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Term + pp$8.regexp_eatTerm = function(state) { + if (this.regexp_eatAssertion(state)) { + // Handle `QuantifiableAssertion Quantifier` alternative. + // `state.lastAssertionIsQuantifiable` is true if the last eaten Assertion + // is a QuantifiableAssertion. + if (state.lastAssertionIsQuantifiable && this.regexp_eatQuantifier(state)) { + // Make the same message as V8. + if (state.switchU) { + state.raise("Invalid quantifier"); + } + } + return true + } + + if (state.switchU ? this.regexp_eatAtom(state) : this.regexp_eatExtendedAtom(state)) { + this.regexp_eatQuantifier(state); + return true + } + + return false + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Assertion + pp$8.regexp_eatAssertion = function(state) { + var start = state.pos; + state.lastAssertionIsQuantifiable = false; + + // ^, $ + if (state.eat(0x5E /* ^ */) || state.eat(0x24 /* $ */)) { + return true + } + + // \b \B + if (state.eat(0x5C /* \ */)) { + if (state.eat(0x42 /* B */) || state.eat(0x62 /* b */)) { + return true + } + state.pos = start; + } + + // Lookahead / Lookbehind + if (state.eat(0x28 /* ( */) && state.eat(0x3F /* ? */)) { + var lookbehind = false; + if (this.options.ecmaVersion >= 9) { + lookbehind = state.eat(0x3C /* < */); + } + if (state.eat(0x3D /* = */) || state.eat(0x21 /* ! */)) { + this.regexp_disjunction(state); + if (!state.eat(0x29 /* ) */)) { + state.raise("Unterminated group"); + } + state.lastAssertionIsQuantifiable = !lookbehind; + return true + } + } + + state.pos = start; + return false + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-Quantifier + pp$8.regexp_eatQuantifier = function(state, noError) { + if ( noError === void 0 ) noError = false; + + if (this.regexp_eatQuantifierPrefix(state, noError)) { + state.eat(0x3F /* ? */); + return true + } + return false + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-QuantifierPrefix + pp$8.regexp_eatQuantifierPrefix = function(state, noError) { + return ( + state.eat(0x2A /* * */) || + state.eat(0x2B /* + */) || + state.eat(0x3F /* ? */) || + this.regexp_eatBracedQuantifier(state, noError) + ) + }; + pp$8.regexp_eatBracedQuantifier = function(state, noError) { + var start = state.pos; + if (state.eat(0x7B /* { */)) { + var min = 0, max = -1; + if (this.regexp_eatDecimalDigits(state)) { + min = state.lastIntValue; + if (state.eat(0x2C /* , */) && this.regexp_eatDecimalDigits(state)) { + max = state.lastIntValue; + } + if (state.eat(0x7D /* } */)) { + // SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-term + if (max !== -1 && max < min && !noError) { + state.raise("numbers out of order in {} quantifier"); + } + return true + } + } + if (state.switchU && !noError) { + state.raise("Incomplete quantifier"); + } + state.pos = start; + } + return false + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-Atom + pp$8.regexp_eatAtom = function(state) { + return ( + this.regexp_eatPatternCharacters(state) || + state.eat(0x2E /* . */) || + this.regexp_eatReverseSolidusAtomEscape(state) || + this.regexp_eatCharacterClass(state) || + this.regexp_eatUncapturingGroup(state) || + this.regexp_eatCapturingGroup(state) + ) + }; + pp$8.regexp_eatReverseSolidusAtomEscape = function(state) { + var start = state.pos; + if (state.eat(0x5C /* \ */)) { + if (this.regexp_eatAtomEscape(state)) { + return true + } + state.pos = start; + } + return false + }; + pp$8.regexp_eatUncapturingGroup = function(state) { + var start = state.pos; + if (state.eat(0x28 /* ( */)) { + if (state.eat(0x3F /* ? */) && state.eat(0x3A /* : */)) { + this.regexp_disjunction(state); + if (state.eat(0x29 /* ) */)) { + return true + } + state.raise("Unterminated group"); + } + state.pos = start; + } + return false + }; + pp$8.regexp_eatCapturingGroup = function(state) { + if (state.eat(0x28 /* ( */)) { + if (this.options.ecmaVersion >= 9) { + this.regexp_groupSpecifier(state); + } else if (state.current() === 0x3F /* ? */) { + state.raise("Invalid group"); + } + this.regexp_disjunction(state); + if (state.eat(0x29 /* ) */)) { + state.numCapturingParens += 1; + return true + } + state.raise("Unterminated group"); + } + return false + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedAtom + pp$8.regexp_eatExtendedAtom = function(state) { + return ( + state.eat(0x2E /* . */) || + this.regexp_eatReverseSolidusAtomEscape(state) || + this.regexp_eatCharacterClass(state) || + this.regexp_eatUncapturingGroup(state) || + this.regexp_eatCapturingGroup(state) || + this.regexp_eatInvalidBracedQuantifier(state) || + this.regexp_eatExtendedPatternCharacter(state) + ) + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-InvalidBracedQuantifier + pp$8.regexp_eatInvalidBracedQuantifier = function(state) { + if (this.regexp_eatBracedQuantifier(state, true)) { + state.raise("Nothing to repeat"); + } + return false + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-SyntaxCharacter + pp$8.regexp_eatSyntaxCharacter = function(state) { + var ch = state.current(); + if (isSyntaxCharacter(ch)) { + state.lastIntValue = ch; + state.advance(); + return true + } + return false + }; + function isSyntaxCharacter(ch) { + return ( + ch === 0x24 /* $ */ || + ch >= 0x28 /* ( */ && ch <= 0x2B /* + */ || + ch === 0x2E /* . */ || + ch === 0x3F /* ? */ || + ch >= 0x5B /* [ */ && ch <= 0x5E /* ^ */ || + ch >= 0x7B /* { */ && ch <= 0x7D /* } */ + ) + } + + // https://www.ecma-international.org/ecma-262/8.0/#prod-PatternCharacter + // But eat eager. + pp$8.regexp_eatPatternCharacters = function(state) { + var start = state.pos; + var ch = 0; + while ((ch = state.current()) !== -1 && !isSyntaxCharacter(ch)) { + state.advance(); + } + return state.pos !== start + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedPatternCharacter + pp$8.regexp_eatExtendedPatternCharacter = function(state) { + var ch = state.current(); + if ( + ch !== -1 && + ch !== 0x24 /* $ */ && + !(ch >= 0x28 /* ( */ && ch <= 0x2B /* + */) && + ch !== 0x2E /* . */ && + ch !== 0x3F /* ? */ && + ch !== 0x5B /* [ */ && + ch !== 0x5E /* ^ */ && + ch !== 0x7C /* | */ + ) { + state.advance(); + return true + } + return false + }; + + // GroupSpecifier[U] :: + // [empty] + // `?` GroupName[?U] + pp$8.regexp_groupSpecifier = function(state) { + if (state.eat(0x3F /* ? */)) { + if (this.regexp_eatGroupName(state)) { + if (state.groupNames.indexOf(state.lastStringValue) !== -1) { + state.raise("Duplicate capture group name"); + } + state.groupNames.push(state.lastStringValue); + return + } + state.raise("Invalid group"); + } + }; + + // GroupName[U] :: + // `<` RegExpIdentifierName[?U] `>` + // Note: this updates `state.lastStringValue` property with the eaten name. + pp$8.regexp_eatGroupName = function(state) { + state.lastStringValue = ""; + if (state.eat(0x3C /* < */)) { + if (this.regexp_eatRegExpIdentifierName(state) && state.eat(0x3E /* > */)) { + return true + } + state.raise("Invalid capture group name"); + } + return false + }; + + // RegExpIdentifierName[U] :: + // RegExpIdentifierStart[?U] + // RegExpIdentifierName[?U] RegExpIdentifierPart[?U] + // Note: this updates `state.lastStringValue` property with the eaten name. + pp$8.regexp_eatRegExpIdentifierName = function(state) { + state.lastStringValue = ""; + if (this.regexp_eatRegExpIdentifierStart(state)) { + state.lastStringValue += codePointToString(state.lastIntValue); + while (this.regexp_eatRegExpIdentifierPart(state)) { + state.lastStringValue += codePointToString(state.lastIntValue); + } + return true + } + return false + }; + + // RegExpIdentifierStart[U] :: + // UnicodeIDStart + // `$` + // `_` + // `\` RegExpUnicodeEscapeSequence[?U] + pp$8.regexp_eatRegExpIdentifierStart = function(state) { + var start = state.pos; + var ch = state.current(); + state.advance(); + + if (ch === 0x5C /* \ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state)) { + ch = state.lastIntValue; + } + if (isRegExpIdentifierStart(ch)) { + state.lastIntValue = ch; + return true + } + + state.pos = start; + return false + }; + function isRegExpIdentifierStart(ch) { + return isIdentifierStart(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */ + } + + // RegExpIdentifierPart[U] :: + // UnicodeIDContinue + // `$` + // `_` + // `\` RegExpUnicodeEscapeSequence[?U] + // + // + pp$8.regexp_eatRegExpIdentifierPart = function(state) { + var start = state.pos; + var ch = state.current(); + state.advance(); + + if (ch === 0x5C /* \ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state)) { + ch = state.lastIntValue; + } + if (isRegExpIdentifierPart(ch)) { + state.lastIntValue = ch; + return true + } + + state.pos = start; + return false + }; + function isRegExpIdentifierPart(ch) { + return isIdentifierChar(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */ || ch === 0x200C /* */ || ch === 0x200D /* */ + } + + // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-AtomEscape + pp$8.regexp_eatAtomEscape = function(state) { + if ( + this.regexp_eatBackReference(state) || + this.regexp_eatCharacterClassEscape(state) || + this.regexp_eatCharacterEscape(state) || + (state.switchN && this.regexp_eatKGroupName(state)) + ) { + return true + } + if (state.switchU) { + // Make the same message as V8. + if (state.current() === 0x63 /* c */) { + state.raise("Invalid unicode escape"); + } + state.raise("Invalid escape"); + } + return false + }; + pp$8.regexp_eatBackReference = function(state) { + var start = state.pos; + if (this.regexp_eatDecimalEscape(state)) { + var n = state.lastIntValue; + if (state.switchU) { + // For SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-atomescape + if (n > state.maxBackReference) { + state.maxBackReference = n; + } + return true + } + if (n <= state.numCapturingParens) { + return true + } + state.pos = start; + } + return false + }; + pp$8.regexp_eatKGroupName = function(state) { + if (state.eat(0x6B /* k */)) { + if (this.regexp_eatGroupName(state)) { + state.backReferenceNames.push(state.lastStringValue); + return true + } + state.raise("Invalid named reference"); + } + return false + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-CharacterEscape + pp$8.regexp_eatCharacterEscape = function(state) { + return ( + this.regexp_eatControlEscape(state) || + this.regexp_eatCControlLetter(state) || + this.regexp_eatZero(state) || + this.regexp_eatHexEscapeSequence(state) || + this.regexp_eatRegExpUnicodeEscapeSequence(state) || + (!state.switchU && this.regexp_eatLegacyOctalEscapeSequence(state)) || + this.regexp_eatIdentityEscape(state) + ) + }; + pp$8.regexp_eatCControlLetter = function(state) { + var start = state.pos; + if (state.eat(0x63 /* c */)) { + if (this.regexp_eatControlLetter(state)) { + return true + } + state.pos = start; + } + return false + }; + pp$8.regexp_eatZero = function(state) { + if (state.current() === 0x30 /* 0 */ && !isDecimalDigit(state.lookahead())) { + state.lastIntValue = 0; + state.advance(); + return true + } + return false + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-ControlEscape + pp$8.regexp_eatControlEscape = function(state) { + var ch = state.current(); + if (ch === 0x74 /* t */) { + state.lastIntValue = 0x09; /* \t */ + state.advance(); + return true + } + if (ch === 0x6E /* n */) { + state.lastIntValue = 0x0A; /* \n */ + state.advance(); + return true + } + if (ch === 0x76 /* v */) { + state.lastIntValue = 0x0B; /* \v */ + state.advance(); + return true + } + if (ch === 0x66 /* f */) { + state.lastIntValue = 0x0C; /* \f */ + state.advance(); + return true + } + if (ch === 0x72 /* r */) { + state.lastIntValue = 0x0D; /* \r */ + state.advance(); + return true + } + return false + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-ControlLetter + pp$8.regexp_eatControlLetter = function(state) { + var ch = state.current(); + if (isControlLetter(ch)) { + state.lastIntValue = ch % 0x20; + state.advance(); + return true + } + return false + }; + function isControlLetter(ch) { + return ( + (ch >= 0x41 /* A */ && ch <= 0x5A /* Z */) || + (ch >= 0x61 /* a */ && ch <= 0x7A /* z */) + ) + } + + // https://www.ecma-international.org/ecma-262/8.0/#prod-RegExpUnicodeEscapeSequence + pp$8.regexp_eatRegExpUnicodeEscapeSequence = function(state) { + var start = state.pos; + + if (state.eat(0x75 /* u */)) { + if (this.regexp_eatFixedHexDigits(state, 4)) { + var lead = state.lastIntValue; + if (state.switchU && lead >= 0xD800 && lead <= 0xDBFF) { + var leadSurrogateEnd = state.pos; + if (state.eat(0x5C /* \ */) && state.eat(0x75 /* u */) && this.regexp_eatFixedHexDigits(state, 4)) { + var trail = state.lastIntValue; + if (trail >= 0xDC00 && trail <= 0xDFFF) { + state.lastIntValue = (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000; + return true + } + } + state.pos = leadSurrogateEnd; + state.lastIntValue = lead; + } + return true + } + if ( + state.switchU && + state.eat(0x7B /* { */) && + this.regexp_eatHexDigits(state) && + state.eat(0x7D /* } */) && + isValidUnicode(state.lastIntValue) + ) { + return true + } + if (state.switchU) { + state.raise("Invalid unicode escape"); + } + state.pos = start; + } + + return false + }; + function isValidUnicode(ch) { + return ch >= 0 && ch <= 0x10FFFF + } + + // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-IdentityEscape + pp$8.regexp_eatIdentityEscape = function(state) { + if (state.switchU) { + if (this.regexp_eatSyntaxCharacter(state)) { + return true + } + if (state.eat(0x2F /* / */)) { + state.lastIntValue = 0x2F; /* / */ + return true + } + return false + } + + var ch = state.current(); + if (ch !== 0x63 /* c */ && (!state.switchN || ch !== 0x6B /* k */)) { + state.lastIntValue = ch; + state.advance(); + return true + } + + return false + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalEscape + pp$8.regexp_eatDecimalEscape = function(state) { + state.lastIntValue = 0; + var ch = state.current(); + if (ch >= 0x31 /* 1 */ && ch <= 0x39 /* 9 */) { + do { + state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */); + state.advance(); + } while ((ch = state.current()) >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */) + return true + } + return false + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClassEscape + pp$8.regexp_eatCharacterClassEscape = function(state) { + var ch = state.current(); + + if (isCharacterClassEscape(ch)) { + state.lastIntValue = -1; + state.advance(); + return true + } + + if ( + state.switchU && + this.options.ecmaVersion >= 9 && + (ch === 0x50 /* P */ || ch === 0x70 /* p */) + ) { + state.lastIntValue = -1; + state.advance(); + if ( + state.eat(0x7B /* { */) && + this.regexp_eatUnicodePropertyValueExpression(state) && + state.eat(0x7D /* } */) + ) { + return true + } + state.raise("Invalid property name"); + } + + return false + }; + function isCharacterClassEscape(ch) { + return ( + ch === 0x64 /* d */ || + ch === 0x44 /* D */ || + ch === 0x73 /* s */ || + ch === 0x53 /* S */ || + ch === 0x77 /* w */ || + ch === 0x57 /* W */ + ) + } + + // UnicodePropertyValueExpression :: + // UnicodePropertyName `=` UnicodePropertyValue + // LoneUnicodePropertyNameOrValue + pp$8.regexp_eatUnicodePropertyValueExpression = function(state) { + var start = state.pos; + + // UnicodePropertyName `=` UnicodePropertyValue + if (this.regexp_eatUnicodePropertyName(state) && state.eat(0x3D /* = */)) { + var name = state.lastStringValue; + if (this.regexp_eatUnicodePropertyValue(state)) { + var value = state.lastStringValue; + this.regexp_validateUnicodePropertyNameAndValue(state, name, value); + return true + } + } + state.pos = start; + + // LoneUnicodePropertyNameOrValue + if (this.regexp_eatLoneUnicodePropertyNameOrValue(state)) { + var nameOrValue = state.lastStringValue; + this.regexp_validateUnicodePropertyNameOrValue(state, nameOrValue); + return true + } + return false + }; + pp$8.regexp_validateUnicodePropertyNameAndValue = function(state, name, value) { + if (!has(state.unicodeProperties.nonBinary, name)) + { state.raise("Invalid property name"); } + if (!state.unicodeProperties.nonBinary[name].test(value)) + { state.raise("Invalid property value"); } + }; + pp$8.regexp_validateUnicodePropertyNameOrValue = function(state, nameOrValue) { + if (!state.unicodeProperties.binary.test(nameOrValue)) + { state.raise("Invalid property name"); } + }; + + // UnicodePropertyName :: + // UnicodePropertyNameCharacters + pp$8.regexp_eatUnicodePropertyName = function(state) { + var ch = 0; + state.lastStringValue = ""; + while (isUnicodePropertyNameCharacter(ch = state.current())) { + state.lastStringValue += codePointToString(ch); + state.advance(); + } + return state.lastStringValue !== "" + }; + function isUnicodePropertyNameCharacter(ch) { + return isControlLetter(ch) || ch === 0x5F /* _ */ + } + + // UnicodePropertyValue :: + // UnicodePropertyValueCharacters + pp$8.regexp_eatUnicodePropertyValue = function(state) { + var ch = 0; + state.lastStringValue = ""; + while (isUnicodePropertyValueCharacter(ch = state.current())) { + state.lastStringValue += codePointToString(ch); + state.advance(); + } + return state.lastStringValue !== "" + }; + function isUnicodePropertyValueCharacter(ch) { + return isUnicodePropertyNameCharacter(ch) || isDecimalDigit(ch) + } + + // LoneUnicodePropertyNameOrValue :: + // UnicodePropertyValueCharacters + pp$8.regexp_eatLoneUnicodePropertyNameOrValue = function(state) { + return this.regexp_eatUnicodePropertyValue(state) + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClass + pp$8.regexp_eatCharacterClass = function(state) { + if (state.eat(0x5B /* [ */)) { + state.eat(0x5E /* ^ */); + this.regexp_classRanges(state); + if (state.eat(0x5D /* [ */)) { + return true + } + // Unreachable since it threw "unterminated regular expression" error before. + state.raise("Unterminated character class"); + } + return false + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-ClassRanges + // https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRanges + // https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRangesNoDash + pp$8.regexp_classRanges = function(state) { + while (this.regexp_eatClassAtom(state)) { + var left = state.lastIntValue; + if (state.eat(0x2D /* - */) && this.regexp_eatClassAtom(state)) { + var right = state.lastIntValue; + if (state.switchU && (left === -1 || right === -1)) { + state.raise("Invalid character class"); + } + if (left !== -1 && right !== -1 && left > right) { + state.raise("Range out of order in character class"); + } + } + } + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtom + // https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtomNoDash + pp$8.regexp_eatClassAtom = function(state) { + var start = state.pos; + + if (state.eat(0x5C /* \ */)) { + if (this.regexp_eatClassEscape(state)) { + return true + } + if (state.switchU) { + // Make the same message as V8. + var ch$1 = state.current(); + if (ch$1 === 0x63 /* c */ || isOctalDigit(ch$1)) { + state.raise("Invalid class escape"); + } + state.raise("Invalid escape"); + } + state.pos = start; + } + + var ch = state.current(); + if (ch !== 0x5D /* [ */) { + state.lastIntValue = ch; + state.advance(); + return true + } + + return false + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassEscape + pp$8.regexp_eatClassEscape = function(state) { + var start = state.pos; + + if (state.eat(0x62 /* b */)) { + state.lastIntValue = 0x08; /* */ + return true + } + + if (state.switchU && state.eat(0x2D /* - */)) { + state.lastIntValue = 0x2D; /* - */ + return true + } + + if (!state.switchU && state.eat(0x63 /* c */)) { + if (this.regexp_eatClassControlLetter(state)) { + return true + } + state.pos = start; + } + + return ( + this.regexp_eatCharacterClassEscape(state) || + this.regexp_eatCharacterEscape(state) + ) + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassControlLetter + pp$8.regexp_eatClassControlLetter = function(state) { + var ch = state.current(); + if (isDecimalDigit(ch) || ch === 0x5F /* _ */) { + state.lastIntValue = ch % 0x20; + state.advance(); + return true + } + return false + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence + pp$8.regexp_eatHexEscapeSequence = function(state) { + var start = state.pos; + if (state.eat(0x78 /* x */)) { + if (this.regexp_eatFixedHexDigits(state, 2)) { + return true + } + if (state.switchU) { + state.raise("Invalid escape"); + } + state.pos = start; + } + return false + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalDigits + pp$8.regexp_eatDecimalDigits = function(state) { + var start = state.pos; + var ch = 0; + state.lastIntValue = 0; + while (isDecimalDigit(ch = state.current())) { + state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */); + state.advance(); + } + return state.pos !== start + }; + function isDecimalDigit(ch) { + return ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */ + } + + // https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigits + pp$8.regexp_eatHexDigits = function(state) { + var start = state.pos; + var ch = 0; + state.lastIntValue = 0; + while (isHexDigit(ch = state.current())) { + state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch); + state.advance(); + } + return state.pos !== start + }; + function isHexDigit(ch) { + return ( + (ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */) || + (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) || + (ch >= 0x61 /* a */ && ch <= 0x66 /* f */) + ) + } + function hexToInt(ch) { + if (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) { + return 10 + (ch - 0x41 /* A */) + } + if (ch >= 0x61 /* a */ && ch <= 0x66 /* f */) { + return 10 + (ch - 0x61 /* a */) + } + return ch - 0x30 /* 0 */ + } + + // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-LegacyOctalEscapeSequence + // Allows only 0-377(octal) i.e. 0-255(decimal). + pp$8.regexp_eatLegacyOctalEscapeSequence = function(state) { + if (this.regexp_eatOctalDigit(state)) { + var n1 = state.lastIntValue; + if (this.regexp_eatOctalDigit(state)) { + var n2 = state.lastIntValue; + if (n1 <= 3 && this.regexp_eatOctalDigit(state)) { + state.lastIntValue = n1 * 64 + n2 * 8 + state.lastIntValue; + } else { + state.lastIntValue = n1 * 8 + n2; + } + } else { + state.lastIntValue = n1; + } + return true + } + return false + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-OctalDigit + pp$8.regexp_eatOctalDigit = function(state) { + var ch = state.current(); + if (isOctalDigit(ch)) { + state.lastIntValue = ch - 0x30; /* 0 */ + state.advance(); + return true + } + state.lastIntValue = 0; + return false + }; + function isOctalDigit(ch) { + return ch >= 0x30 /* 0 */ && ch <= 0x37 /* 7 */ + } + + // https://www.ecma-international.org/ecma-262/8.0/#prod-Hex4Digits + // https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigit + // And HexDigit HexDigit in https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence + pp$8.regexp_eatFixedHexDigits = function(state, length) { + var start = state.pos; + state.lastIntValue = 0; + for (var i = 0; i < length; ++i) { + var ch = state.current(); + if (!isHexDigit(ch)) { + state.pos = start; + return false + } + state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch); + state.advance(); + } + return true + }; + + // Object type used to represent tokens. Note that normally, tokens + // simply exist as properties on the parser object. This is only + // used for the onToken callback and the external tokenizer. + + var Token = function Token(p) { + this.type = p.type; + this.value = p.value; + this.start = p.start; + this.end = p.end; + if (p.options.locations) + { this.loc = new SourceLocation(p, p.startLoc, p.endLoc); } + if (p.options.ranges) + { this.range = [p.start, p.end]; } + }; + + // ## Tokenizer + + var pp$9 = Parser.prototype; + + // Move to the next token + + pp$9.next = function() { + if (this.options.onToken) + { this.options.onToken(new Token(this)); } + + this.lastTokEnd = this.end; + this.lastTokStart = this.start; + this.lastTokEndLoc = this.endLoc; + this.lastTokStartLoc = this.startLoc; + this.nextToken(); + }; + + pp$9.getToken = function() { + this.next(); + return new Token(this) + }; + + // If we're in an ES6 environment, make parsers iterable + if (typeof Symbol !== "undefined") + { pp$9[Symbol.iterator] = function() { + var this$1 = this; + + return { + next: function () { + var token = this$1.getToken(); + return { + done: token.type === types.eof, + value: token + } + } + } + }; } + + // Toggle strict mode. Re-reads the next number or string to please + // pedantic tests (`"use strict"; 010;` should fail). + + pp$9.curContext = function() { + return this.context[this.context.length - 1] + }; + + // Read a single token, updating the parser object's token-related + // properties. + + pp$9.nextToken = function() { + var curContext = this.curContext(); + if (!curContext || !curContext.preserveSpace) { this.skipSpace(); } + + this.start = this.pos; + if (this.options.locations) { this.startLoc = this.curPosition(); } + if (this.pos >= this.input.length) { return this.finishToken(types.eof) } + + if (curContext.override) { return curContext.override(this) } + else { this.readToken(this.fullCharCodeAtPos()); } + }; + + pp$9.readToken = function(code) { + // Identifier or keyword. '\uXXXX' sequences are allowed in + // identifiers, so '\' also dispatches to that. + if (isIdentifierStart(code, this.options.ecmaVersion >= 6) || code === 92 /* '\' */) + { return this.readWord() } + + return this.getTokenFromCode(code) + }; + + pp$9.fullCharCodeAtPos = function() { + var code = this.input.charCodeAt(this.pos); + if (code <= 0xd7ff || code >= 0xe000) { return code } + var next = this.input.charCodeAt(this.pos + 1); + return (code << 10) + next - 0x35fdc00 + }; + + pp$9.skipBlockComment = function() { + var startLoc = this.options.onComment && this.curPosition(); + var start = this.pos, end = this.input.indexOf("*/", this.pos += 2); + if (end === -1) { this.raise(this.pos - 2, "Unterminated comment"); } + this.pos = end + 2; + if (this.options.locations) { + lineBreakG.lastIndex = start; + var match; + while ((match = lineBreakG.exec(this.input)) && match.index < this.pos) { + ++this.curLine; + this.lineStart = match.index + match[0].length; + } + } + if (this.options.onComment) + { this.options.onComment(true, this.input.slice(start + 2, end), start, this.pos, + startLoc, this.curPosition()); } + }; + + pp$9.skipLineComment = function(startSkip) { + var start = this.pos; + var startLoc = this.options.onComment && this.curPosition(); + var ch = this.input.charCodeAt(this.pos += startSkip); + while (this.pos < this.input.length && !isNewLine(ch)) { + ch = this.input.charCodeAt(++this.pos); + } + if (this.options.onComment) + { this.options.onComment(false, this.input.slice(start + startSkip, this.pos), start, this.pos, + startLoc, this.curPosition()); } + }; + + // Called at the start of the parse and after every token. Skips + // whitespace and comments, and. + + pp$9.skipSpace = function() { + loop: while (this.pos < this.input.length) { + var ch = this.input.charCodeAt(this.pos); + switch (ch) { + case 32: case 160: // ' ' + ++this.pos; + break + case 13: + if (this.input.charCodeAt(this.pos + 1) === 10) { + ++this.pos; + } + case 10: case 8232: case 8233: + ++this.pos; + if (this.options.locations) { + ++this.curLine; + this.lineStart = this.pos; + } + break + case 47: // '/' + switch (this.input.charCodeAt(this.pos + 1)) { + case 42: // '*' + this.skipBlockComment(); + break + case 47: + this.skipLineComment(2); + break + default: + break loop + } + break + default: + if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) { + ++this.pos; + } else { + break loop + } + } + } + }; + + // Called at the end of every token. Sets `end`, `val`, and + // maintains `context` and `exprAllowed`, and skips the space after + // the token, so that the next one's `start` will point at the + // right position. + + pp$9.finishToken = function(type, val) { + this.end = this.pos; + if (this.options.locations) { this.endLoc = this.curPosition(); } + var prevType = this.type; + this.type = type; + this.value = val; + + this.updateContext(prevType); + }; + + // ### Token reading + + // This is the function that is called to fetch the next token. It + // is somewhat obscure, because it works in character codes rather + // than characters, and because operator parsing has been inlined + // into it. + // + // All in the name of speed. + // + pp$9.readToken_dot = function() { + var next = this.input.charCodeAt(this.pos + 1); + if (next >= 48 && next <= 57) { return this.readNumber(true) } + var next2 = this.input.charCodeAt(this.pos + 2); + if (this.options.ecmaVersion >= 6 && next === 46 && next2 === 46) { // 46 = dot '.' + this.pos += 3; + return this.finishToken(types.ellipsis) + } else { + ++this.pos; + return this.finishToken(types.dot) + } + }; + + pp$9.readToken_slash = function() { // '/' + var next = this.input.charCodeAt(this.pos + 1); + if (this.exprAllowed) { ++this.pos; return this.readRegexp() } + if (next === 61) { return this.finishOp(types.assign, 2) } + return this.finishOp(types.slash, 1) + }; + + pp$9.readToken_mult_modulo_exp = function(code) { // '%*' + var next = this.input.charCodeAt(this.pos + 1); + var size = 1; + var tokentype = code === 42 ? types.star : types.modulo; + + // exponentiation operator ** and **= + if (this.options.ecmaVersion >= 7 && code === 42 && next === 42) { + ++size; + tokentype = types.starstar; + next = this.input.charCodeAt(this.pos + 2); + } + + if (next === 61) { return this.finishOp(types.assign, size + 1) } + return this.finishOp(tokentype, size) + }; + + pp$9.readToken_pipe_amp = function(code) { // '|&' + var next = this.input.charCodeAt(this.pos + 1); + if (next === code) { return this.finishOp(code === 124 ? types.logicalOR : types.logicalAND, 2) } + if (next === 61) { return this.finishOp(types.assign, 2) } + return this.finishOp(code === 124 ? types.bitwiseOR : types.bitwiseAND, 1) + }; + + pp$9.readToken_caret = function() { // '^' + var next = this.input.charCodeAt(this.pos + 1); + if (next === 61) { return this.finishOp(types.assign, 2) } + return this.finishOp(types.bitwiseXOR, 1) + }; + + pp$9.readToken_plus_min = function(code) { // '+-' + var next = this.input.charCodeAt(this.pos + 1); + if (next === code) { + if (next === 45 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 62 && + (this.lastTokEnd === 0 || lineBreak.test(this.input.slice(this.lastTokEnd, this.pos)))) { + // A `-->` line comment + this.skipLineComment(3); + this.skipSpace(); + return this.nextToken() + } + return this.finishOp(types.incDec, 2) + } + if (next === 61) { return this.finishOp(types.assign, 2) } + return this.finishOp(types.plusMin, 1) + }; + + pp$9.readToken_lt_gt = function(code) { // '<>' + var next = this.input.charCodeAt(this.pos + 1); + var size = 1; + if (next === code) { + size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2; + if (this.input.charCodeAt(this.pos + size) === 61) { return this.finishOp(types.assign, size + 1) } + return this.finishOp(types.bitShift, size) + } + if (next === 33 && code === 60 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 45 && + this.input.charCodeAt(this.pos + 3) === 45) { + // ` + if (code === HYPHENMINUS$1 && prevType === HYPHENMINUS$1) { + if (offset + 1 < sourceLength && source.charCodeAt(offset + 1) === GREATERTHANSIGN) { + type = CDC$1; + offset = offset + 2; + tokenCount--; // rewrite prev token + break; + } + } + + // ident( + if (code === LEFTPARENTHESIS && prevType === IDENTIFIER$1) { + offset = offset + 1; + tokenCount--; // rewrite prev token + balance[tokenCount] = balance[tokenCount + 1]; + balanceStart--; + + // 4 char length identifier and equal to `url(` (case insensitive) + if (offset - anchor === 4 && cmpStr$1(source, anchor, offset, 'url(')) { + // special case for url() because it can contain any symbols sequence with few exceptions + anchor = findWhiteSpaceEnd$1(source, offset); + code = source.charCodeAt(anchor); + if (code !== LEFTPARENTHESIS && + code !== RIGHTPARENTHESIS && + code !== QUOTATIONMARK && + code !== APOSTROPHE) { + // url( + offsetAndType[tokenCount++] = (URL$1 << TYPE_SHIFT) | offset; + balance[tokenCount] = sourceLength; + + // ws* + if (anchor !== offset) { + offsetAndType[tokenCount++] = (WHITESPACE$1 << TYPE_SHIFT) | anchor; + balance[tokenCount] = sourceLength; + } + + // raw + type = RAW$1; + offset = findUrlRawEnd$1(source, anchor); + } else { + type = URL$1; + } + } else { + type = FUNCTION$1; + } + break; + } + + type = code; + offset = offset + 1; + break; + + case NUMBER$1: + offset = findNumberEnd$1(source, offset + 1, prevType !== FULLSTOP$1); + + // merge number with a preceding dot, dash or plus + if (prevType === FULLSTOP$1 || + prevType === HYPHENMINUS$1 || + prevType === PLUSSIGN$1) { + tokenCount--; // rewrite prev token + } + + break; + + case STRING$1: + offset = findStringEnd$1(source, offset + 1, code); + break; + + default: + anchor = offset; + offset = findIdentifierEnd$1(source, offset); + + // merge identifier with a preceding dash + if (prevType === HYPHENMINUS$1) { + // rewrite prev token + tokenCount--; + // restore prev prev token type + // for case @-prefix-ident + prevType = tokenCount === 0 ? 0 : offsetAndType[tokenCount - 1] >> TYPE_SHIFT; + } + + if (prevType === COMMERCIALAT) { + // rewrite prev token and change type to + tokenCount--; + type = ATRULE$1; + } + } + + offsetAndType[tokenCount++] = (type << TYPE_SHIFT) | offset; + prevType = type; + } + + // finalize arrays + offsetAndType[tokenCount] = offset; + balance[tokenCount] = sourceLength; + while (balanceStart !== 0) { + balancePrev = balanceStart & OFFSET_MASK; + balanceStart = balance[balancePrev]; + balance[balancePrev] = sourceLength; + } + + tokenizer.offsetAndType = offsetAndType; + tokenizer.tokenCount = tokenCount; + tokenizer.balance = balance; + } + + // + // tokenizer + // + + var Tokenizer = function(source, startOffset, startLine, startColumn) { + this.offsetAndType = null; + this.balance = null; + this.lines = null; + this.columns = null; + + this.setSource(source, startOffset, startLine, startColumn); + }; + + Tokenizer.prototype = { + setSource: function(source, startOffset, startLine, startColumn) { + var safeSource = String(source || ''); + var start = firstCharOffset$1(safeSource); + + this.source = safeSource; + this.firstCharOffset = start; + this.startOffset = typeof startOffset === 'undefined' ? 0 : startOffset; + this.startLine = typeof startLine === 'undefined' ? 1 : startLine; + this.startColumn = typeof startColumn === 'undefined' ? 1 : startColumn; + this.linesAnsColumnsComputed = false; + + this.eof = false; + this.currentToken = -1; + this.tokenType = 0; + this.tokenStart = start; + this.tokenEnd = start; + + tokenLayout(this, safeSource, start); + this.next(); + }, + + lookupType: function(offset) { + offset += this.currentToken; + + if (offset < this.tokenCount) { + return this.offsetAndType[offset] >> TYPE_SHIFT; + } + + return NULL; + }, + lookupNonWSType: function(offset) { + offset += this.currentToken; + + for (var type; offset < this.tokenCount; offset++) { + type = this.offsetAndType[offset] >> TYPE_SHIFT; + + if (type !== WHITESPACE$1) { + return type; + } + } + + return NULL; + }, + lookupValue: function(offset, referenceStr) { + offset += this.currentToken; + + if (offset < this.tokenCount) { + return cmpStr$1( + this.source, + this.offsetAndType[offset - 1] & OFFSET_MASK, + this.offsetAndType[offset] & OFFSET_MASK, + referenceStr + ); + } + + return false; + }, + getTokenStart: function(tokenNum) { + if (tokenNum === this.currentToken) { + return this.tokenStart; + } + + if (tokenNum > 0) { + return tokenNum < this.tokenCount + ? this.offsetAndType[tokenNum - 1] & OFFSET_MASK + : this.offsetAndType[this.tokenCount] & OFFSET_MASK; + } + + return this.firstCharOffset; + }, + getOffsetExcludeWS: function() { + if (this.currentToken > 0) { + if ((this.offsetAndType[this.currentToken - 1] >> TYPE_SHIFT) === WHITESPACE$1) { + return this.currentToken > 1 + ? this.offsetAndType[this.currentToken - 2] & OFFSET_MASK + : this.firstCharOffset; + } + } + return this.tokenStart; + }, + getRawLength: function(startToken, endTokenType1, endTokenType2, includeTokenType2) { + var cursor = startToken; + var balanceEnd; + + loop: + for (; cursor < this.tokenCount; cursor++) { + balanceEnd = this.balance[cursor]; + + // belance end points to offset before start + if (balanceEnd < startToken) { + break loop; + } + + // check token is stop type + switch (this.offsetAndType[cursor] >> TYPE_SHIFT) { + case endTokenType1: + break loop; + + case endTokenType2: + if (includeTokenType2) { + cursor++; + } + break loop; + + default: + // fast forward to the end of balanced block + if (this.balance[balanceEnd] === cursor) { + cursor = balanceEnd; + } + } + + } + + return cursor - this.currentToken; + }, + + getTokenValue: function() { + return this.source.substring(this.tokenStart, this.tokenEnd); + }, + substrToCursor: function(start) { + return this.source.substring(start, this.tokenStart); + }, + + skipWS: function() { + for (var i = this.currentToken, skipTokenCount = 0; i < this.tokenCount; i++, skipTokenCount++) { + if ((this.offsetAndType[i] >> TYPE_SHIFT) !== WHITESPACE$1) { + break; + } + } + + if (skipTokenCount > 0) { + this.skip(skipTokenCount); + } + }, + skipSC: function() { + while (this.tokenType === WHITESPACE$1 || this.tokenType === COMMENT$1) { + this.next(); + } + }, + skip: function(tokenCount) { + var next = this.currentToken + tokenCount; + + if (next < this.tokenCount) { + this.currentToken = next; + this.tokenStart = this.offsetAndType[next - 1] & OFFSET_MASK; + next = this.offsetAndType[next]; + this.tokenType = next >> TYPE_SHIFT; + this.tokenEnd = next & OFFSET_MASK; + } else { + this.currentToken = this.tokenCount; + this.next(); + } + }, + next: function() { + var next = this.currentToken + 1; + + if (next < this.tokenCount) { + this.currentToken = next; + this.tokenStart = this.tokenEnd; + next = this.offsetAndType[next]; + this.tokenType = next >> TYPE_SHIFT; + this.tokenEnd = next & OFFSET_MASK; + } else { + this.currentToken = this.tokenCount; + this.eof = true; + this.tokenType = NULL; + this.tokenStart = this.tokenEnd = this.source.length; + } + }, + + eat: function(tokenType) { + if (this.tokenType !== tokenType) { + var offset = this.tokenStart; + var message = NAME$1[tokenType] + ' is expected'; + + // tweak message and offset + if (tokenType === IDENTIFIER$1) { + // when identifier is expected but there is a function or url + if (this.tokenType === FUNCTION$1 || this.tokenType === URL$1) { + offset = this.tokenEnd - 1; + message += ' but function found'; + } + } else { + // when test type is part of another token show error for current position + 1 + // e.g. eat(HYPHENMINUS) will fail on "-foo", but pointing on "-" is odd + if (this.source.charCodeAt(this.tokenStart) === tokenType) { + offset = offset + 1; + } + } + + this.error(message, offset); + } + + this.next(); + }, + eatNonWS: function(tokenType) { + this.skipWS(); + this.eat(tokenType); + }, + + consume: function(tokenType) { + var value = this.getTokenValue(); + + this.eat(tokenType); + + return value; + }, + consumeFunctionName: function() { + var name = this.source.substring(this.tokenStart, this.tokenEnd - 1); + + this.eat(FUNCTION$1); + + return name; + }, + consumeNonWS: function(tokenType) { + this.skipWS(); + + return this.consume(tokenType); + }, + + expectIdentifier: function(name) { + if (this.tokenType !== IDENTIFIER$1 || cmpStr$1(this.source, this.tokenStart, this.tokenEnd, name) === false) { + this.error('Identifier `' + name + '` is expected'); + } + + this.next(); + }, + + getLocation: function(offset, filename) { + if (!this.linesAnsColumnsComputed) { + computeLinesAndColumns(this, this.source); + } + + return { + source: filename, + offset: this.startOffset + offset, + line: this.lines[offset], + column: this.columns[offset] + }; + }, + + getLocationRange: function(start, end, filename) { + if (!this.linesAnsColumnsComputed) { + computeLinesAndColumns(this, this.source); + } + + return { + source: filename, + start: { + offset: this.startOffset + start, + line: this.lines[start], + column: this.columns[start] + }, + end: { + offset: this.startOffset + end, + line: this.lines[end], + column: this.columns[end] + } + }; + }, + + error: function(message, offset) { + var location = typeof offset !== 'undefined' && offset < this.source.length + ? this.getLocation(offset) + : this.eof + ? findLastNonSpaceLocation$1(this) + : this.getLocation(this.tokenStart); + + throw new error( + message || 'Unexpected input', + this.source, + location.offset, + location.line, + location.column + ); + }, + + dump: function() { + var offset = 0; + + return Array.prototype.slice.call(this.offsetAndType, 0, this.tokenCount).map(function(item, idx) { + var start = offset; + var end = item & OFFSET_MASK; + + offset = end; + + return { + idx: idx, + type: NAME$1[item >> TYPE_SHIFT], + chunk: this.source.substring(start, end), + balance: this.balance[idx] + }; + }, this); + } + }; + + // extend with error class + Tokenizer.CssSyntaxError = error; + + // extend tokenizer with constants + Object.keys(_const).forEach(function(key) { + Tokenizer[key] = _const[key]; + }); + + // extend tokenizer with static methods from utils + Object.keys(utils).forEach(function(key) { + Tokenizer[key] = utils[key]; + }); + + // warm up tokenizer to elimitate code branches that never execute + // fix soft deoptimizations (insufficient type feedback) + new Tokenizer('\n\r\r\n\f//""\'\'/*\r\n\f*/1a;.\\31\t\+2{url(a);func();+1.2e3 -.4e-5 .6e+7}').getLocation(); + + var Tokenizer_1 = Tokenizer; + + var tokenizer$1 = Tokenizer_1; + + // + // item item item item + // /------\ /------\ /------\ /------\ + // | data | | data | | data | | data | + // null <--+-prev |<---+-prev |<---+-prev |<---+-prev | + // | next-+--->| next-+--->| next-+--->| next-+--> null + // \------/ \------/ \------/ \------/ + // ^ ^ + // | list | + // | /------\ | + // \--------------+-head | | + // | tail-+--------------/ + // \------/ + // + + function createItem(data) { + return { + prev: null, + next: null, + data: data + }; + } + + var cursors = null; + var List = function() { + this.cursor = null; + this.head = null; + this.tail = null; + }; + + List.createItem = createItem; + List.prototype.createItem = createItem; + + List.prototype.getSize = function() { + var size = 0; + var cursor = this.head; + + while (cursor) { + size++; + cursor = cursor.next; + } + + return size; + }; + + List.prototype.fromArray = function(array) { + var cursor = null; + + this.head = null; + + for (var i = 0; i < array.length; i++) { + var item = createItem(array[i]); + + if (cursor !== null) { + cursor.next = item; + } else { + this.head = item; + } + + item.prev = cursor; + cursor = item; + } + + this.tail = cursor; + + return this; + }; + + List.prototype.toArray = function() { + var cursor = this.head; + var result = []; + + while (cursor) { + result.push(cursor.data); + cursor = cursor.next; + } + + return result; + }; + + List.prototype.toJSON = List.prototype.toArray; + + List.prototype.isEmpty = function() { + return this.head === null; + }; + + List.prototype.first = function() { + return this.head && this.head.data; + }; + + List.prototype.last = function() { + return this.tail && this.tail.data; + }; + + function allocateCursor(node, prev, next) { + var cursor; + + if (cursors !== null) { + cursor = cursors; + cursors = cursors.cursor; + cursor.prev = prev; + cursor.next = next; + cursor.cursor = node.cursor; + } else { + cursor = { + prev: prev, + next: next, + cursor: node.cursor + }; + } + + node.cursor = cursor; + + return cursor; + } + + function releaseCursor(node) { + var cursor = node.cursor; + + node.cursor = cursor.cursor; + cursor.prev = null; + cursor.next = null; + cursor.cursor = cursors; + cursors = cursor; + } + + List.prototype.each = function(fn, context) { + var item; + + if (context === undefined) { + context = this; + } + + // push cursor + var cursor = allocateCursor(this, null, this.head); + + while (cursor.next !== null) { + item = cursor.next; + cursor.next = item.next; + + fn.call(context, item.data, item, this); + } + + // pop cursor + releaseCursor(this); + }; + + List.prototype.eachRight = function(fn, context) { + var item; + + if (context === undefined) { + context = this; + } + + // push cursor + var cursor = allocateCursor(this, this.tail, null); + + while (cursor.prev !== null) { + item = cursor.prev; + cursor.prev = item.prev; + + fn.call(context, item.data, item, this); + } + + // pop cursor + releaseCursor(this); + }; + + List.prototype.nextUntil = function(start, fn, context) { + if (start === null) { + return; + } + + var item; + + if (context === undefined) { + context = this; + } + + // push cursor + var cursor = allocateCursor(this, null, start); + + while (cursor.next !== null) { + item = cursor.next; + cursor.next = item.next; + + if (fn.call(context, item.data, item, this)) { + break; + } + } + + // pop cursor + releaseCursor(this); + }; + + List.prototype.prevUntil = function(start, fn, context) { + if (start === null) { + return; + } + + var item; + + if (context === undefined) { + context = this; + } + + // push cursor + var cursor = allocateCursor(this, start, null); + + while (cursor.prev !== null) { + item = cursor.prev; + cursor.prev = item.prev; + + if (fn.call(context, item.data, item, this)) { + break; + } + } + + // pop cursor + releaseCursor(this); + }; + + List.prototype.some = function(fn, context) { + var cursor = this.head; + + if (context === undefined) { + context = this; + } + + while (cursor !== null) { + if (fn.call(context, cursor.data, cursor, this)) { + return true; + } + + cursor = cursor.next; + } + + return false; + }; + + List.prototype.map = function(fn, context) { + var result = []; + var cursor = this.head; + + if (context === undefined) { + context = this; + } + + while (cursor !== null) { + result.push(fn.call(context, cursor.data, cursor, this)); + cursor = cursor.next; + } + + return result; + }; + + List.prototype.clear = function() { + this.head = null; + this.tail = null; + }; + + List.prototype.copy = function() { + var result = new List(); + var cursor = this.head; + + while (cursor !== null) { + result.insert(createItem(cursor.data)); + cursor = cursor.next; + } + + return result; + }; + + List.prototype.updateCursors = function(prevOld, prevNew, nextOld, nextNew) { + var cursor = this.cursor; + + while (cursor !== null) { + if (cursor.prev === prevOld) { + cursor.prev = prevNew; + } + + if (cursor.next === nextOld) { + cursor.next = nextNew; + } + + cursor = cursor.cursor; + } + }; + + List.prototype.prepend = function(item) { + // head + // ^ + // item + this.updateCursors(null, item, this.head, item); + + // insert to the beginning of the list + if (this.head !== null) { + // new item <- first item + this.head.prev = item; + + // new item -> first item + item.next = this.head; + } else { + // if list has no head, then it also has no tail + // in this case tail points to the new item + this.tail = item; + } + + // head always points to new item + this.head = item; + + return this; + }; + + List.prototype.prependData = function(data) { + return this.prepend(createItem(data)); + }; + + List.prototype.append = function(item) { + // tail + // ^ + // item + this.updateCursors(this.tail, item, null, item); + + // insert to the ending of the list + if (this.tail !== null) { + // last item -> new item + this.tail.next = item; + + // last item <- new item + item.prev = this.tail; + } else { + // if list has no tail, then it also has no head + // in this case head points to new item + this.head = item; + } + + // tail always points to new item + this.tail = item; + + return this; + }; + + List.prototype.appendData = function(data) { + return this.append(createItem(data)); + }; + + List.prototype.insert = function(item, before) { + if (before !== undefined && before !== null) { + // prev before + // ^ + // item + this.updateCursors(before.prev, item, before, item); + + if (before.prev === null) { + // insert to the beginning of list + if (this.head !== before) { + throw new Error('before doesn\'t belong to list'); + } + + // since head points to before therefore list doesn't empty + // no need to check tail + this.head = item; + before.prev = item; + item.next = before; + + this.updateCursors(null, item); + } else { + + // insert between two items + before.prev.next = item; + item.prev = before.prev; + + before.prev = item; + item.next = before; + } + } else { + this.append(item); + } + }; + + List.prototype.insertData = function(data, before) { + this.insert(createItem(data), before); + }; + + List.prototype.remove = function(item) { + // item + // ^ + // prev next + this.updateCursors(item, item.prev, item, item.next); + + if (item.prev !== null) { + item.prev.next = item.next; + } else { + if (this.head !== item) { + throw new Error('item doesn\'t belong to list'); + } + + this.head = item.next; + } + + if (item.next !== null) { + item.next.prev = item.prev; + } else { + if (this.tail !== item) { + throw new Error('item doesn\'t belong to list'); + } + + this.tail = item.prev; + } + + item.prev = null; + item.next = null; + + return item; + }; + + List.prototype.appendList = function(list) { + // ignore empty lists + if (list.head === null) { + return; + } + + this.updateCursors(this.tail, list.tail, null, list.head); + + // insert to end of the list + if (this.tail !== null) { + // if destination list has a tail, then it also has a head, + // but head doesn't change + + // dest tail -> source head + this.tail.next = list.head; + + // dest tail <- source head + list.head.prev = this.tail; + } else { + // if list has no a tail, then it also has no a head + // in this case points head to new item + this.head = list.head; + } + + // tail always start point to new item + this.tail = list.tail; + + list.head = null; + list.tail = null; + }; + + List.prototype.insertList = function(list, before) { + if (before !== undefined && before !== null) { + // ignore empty lists + if (list.head === null) { + return; + } + + this.updateCursors(before.prev, list.tail, before, list.head); + + // insert in the middle of dist list + if (before.prev !== null) { + // before.prev <-> list.head + before.prev.next = list.head; + list.head.prev = before.prev; + } else { + this.head = list.head; + } + + before.prev = list.tail; + list.tail.next = before; + + list.head = null; + list.tail = null; + } else { + this.appendList(list); + } + }; + + List.prototype.replace = function(oldItem, newItemOrList) { + if ('head' in newItemOrList) { + this.insertList(newItemOrList, oldItem); + } else { + this.insert(newItemOrList, oldItem); + } + this.remove(oldItem); + }; + + var list = List; + + var TYPE$3 = tokenizer$1.TYPE; + var WHITESPACE$2 = TYPE$3.WhiteSpace; + var COMMENT$2 = TYPE$3.Comment; + + var sequence = function readSequence(recognizer) { + var children = new list(); + var child = null; + var context = { + recognizer: recognizer, + space: null, + ignoreWS: false, + ignoreWSAfter: false + }; + + this.scanner.skipSC(); + + while (!this.scanner.eof) { + switch (this.scanner.tokenType) { + case COMMENT$2: + this.scanner.next(); + continue; + + case WHITESPACE$2: + if (context.ignoreWS) { + this.scanner.next(); + } else { + context.space = this.WhiteSpace(); + } + continue; + } + + child = recognizer.getNode.call(this, context); + + if (child === undefined) { + break; + } + + if (context.space !== null) { + children.appendData(context.space); + context.space = null; + } + + children.appendData(child); + + if (context.ignoreWSAfter) { + context.ignoreWSAfter = false; + context.ignoreWS = true; + } else { + context.ignoreWS = false; + } + } + + return children; + }; + + var noop = function() {}; + + function createParseContext(name) { + return function() { + return this[name](); + }; + } + + function processConfig(config) { + var parserConfig = { + context: {}, + scope: {}, + atrule: {}, + pseudo: {} + }; + + if (config.parseContext) { + for (var name in config.parseContext) { + switch (typeof config.parseContext[name]) { + case 'function': + parserConfig.context[name] = config.parseContext[name]; + break; + + case 'string': + parserConfig.context[name] = createParseContext(config.parseContext[name]); + break; + } + } + } + + if (config.scope) { + for (var name in config.scope) { + parserConfig.scope[name] = config.scope[name]; + } + } + + if (config.atrule) { + for (var name in config.atrule) { + var atrule = config.atrule[name]; + + if (atrule.parse) { + parserConfig.atrule[name] = atrule.parse; + } + } + } + + if (config.pseudo) { + for (var name in config.pseudo) { + var pseudo = config.pseudo[name]; + + if (pseudo.parse) { + parserConfig.pseudo[name] = pseudo.parse; + } + } + } + + if (config.node) { + for (var name in config.node) { + parserConfig[name] = config.node[name].parse; + } + } + + return parserConfig; + } + + var create = function createParser(config) { + var parser = { + scanner: new tokenizer$1(), + filename: '', + needPositions: false, + tolerant: false, + onParseError: noop, + parseAtruleExpression: true, + parseSelector: true, + parseValue: true, + parseCustomProperty: false, + + readSequence: sequence, + + tolerantParse: function(consumer, fallback) { + if (this.tolerant) { + var start = this.scanner.currentToken; + + try { + return consumer.call(this); + } catch (e) { + this.onParseError(e); + return fallback.call(this, start); + } + } else { + return consumer.call(this); + } + }, + + getLocation: function(start, end) { + if (this.needPositions) { + return this.scanner.getLocationRange( + start, + end, + this.filename + ); + } + + return null; + }, + getLocationFromList: function(list) { + if (this.needPositions) { + return this.scanner.getLocationRange( + list.head !== null ? list.first().loc.start.offset - this.scanner.startOffset : this.scanner.tokenStart, + list.head !== null ? list.last().loc.end.offset - this.scanner.startOffset : this.scanner.tokenStart, + this.filename + ); + } + + return null; + } + }; + + config = processConfig(config || {}); + for (var key in config) { + parser[key] = config[key]; + } + + return function(source, options) { + options = options || {}; + + var context = options.context || 'default'; + var ast; + + parser.scanner.setSource(source, options.offset, options.line, options.column); + parser.filename = options.filename || ''; + parser.needPositions = Boolean(options.positions); + parser.tolerant = Boolean(options.tolerant); + parser.onParseError = typeof options.onParseError === 'function' ? options.onParseError : noop; + parser.parseAtruleExpression = 'parseAtruleExpression' in options ? Boolean(options.parseAtruleExpression) : true; + parser.parseSelector = 'parseSelector' in options ? Boolean(options.parseSelector) : true; + parser.parseValue = 'parseValue' in options ? Boolean(options.parseValue) : true; + parser.parseCustomProperty = 'parseCustomProperty' in options ? Boolean(options.parseCustomProperty) : false; + + if (!parser.context.hasOwnProperty(context)) { + throw new Error('Unknown context `' + context + '`'); + } + + ast = parser.context[context].call(parser, options); + + if (!parser.scanner.eof) { + parser.scanner.error(); + } + + // console.log(JSON.stringify(ast, null, 4)); + return ast; + }; + }; + + var cmpChar$1 = tokenizer$1.cmpChar; + var TYPE$4 = tokenizer$1.TYPE; + + var IDENTIFIER$2 = TYPE$4.Identifier; + var STRING$2 = TYPE$4.String; + var NUMBER$2 = TYPE$4.Number; + var FUNCTION$2 = TYPE$4.Function; + var URL$2 = TYPE$4.Url; + var NUMBERSIGN = TYPE$4.NumberSign; + var LEFTPARENTHESIS$1 = TYPE$4.LeftParenthesis; + var LEFTSQUAREBRACKET$1 = TYPE$4.LeftSquareBracket; + var PLUSSIGN$2 = TYPE$4.PlusSign; + var HYPHENMINUS$2 = TYPE$4.HyphenMinus; + var COMMA = TYPE$4.Comma; + var SOLIDUS = TYPE$4.Solidus; + var ASTERISK = TYPE$4.Asterisk; + var PERCENTSIGN = TYPE$4.PercentSign; + var BACKSLASH = TYPE$4.Backslash; + var U = 117; // 'u'.charCodeAt(0) + + var _default = function defaultRecognizer(context) { + switch (this.scanner.tokenType) { + case NUMBERSIGN: + return this.HexColor(); + + case COMMA: + context.space = null; + context.ignoreWSAfter = true; + return this.Operator(); + + case SOLIDUS: + case ASTERISK: + case PLUSSIGN$2: + case HYPHENMINUS$2: + return this.Operator(); + + case LEFTPARENTHESIS$1: + return this.Parentheses(this.readSequence, context.recognizer); + + case LEFTSQUAREBRACKET$1: + return this.Brackets(this.readSequence, context.recognizer); + + case STRING$2: + return this.String(); + + case NUMBER$2: + switch (this.scanner.lookupType(1)) { + case PERCENTSIGN: + return this.Percentage(); + + case IDENTIFIER$2: + // edge case: number with folowing \0 and \9 hack shouldn't to be a Dimension + if (cmpChar$1(this.scanner.source, this.scanner.tokenEnd, BACKSLASH)) { + return this.Number(); + } else { + return this.Dimension(); + } + + default: + return this.Number(); + } + + case FUNCTION$2: + return this.Function(this.readSequence, context.recognizer); + + case URL$2: + return this.Url(); + + case IDENTIFIER$2: + // check for unicode range, it should start with u+ or U+ + if (cmpChar$1(this.scanner.source, this.scanner.tokenStart, U) && + cmpChar$1(this.scanner.source, this.scanner.tokenStart + 1, PLUSSIGN$2)) { + return this.UnicodeRange(); + } else { + return this.Identifier(); + } + } + }; + + var atruleExpression = { + getNode: _default + }; + + var TYPE$5 = tokenizer$1.TYPE; + + var IDENTIFIER$3 = TYPE$5.Identifier; + var NUMBER$3 = TYPE$5.Number; + var NUMBERSIGN$1 = TYPE$5.NumberSign; + var LEFTSQUAREBRACKET$2 = TYPE$5.LeftSquareBracket; + var PLUSSIGN$3 = TYPE$5.PlusSign; + var SOLIDUS$1 = TYPE$5.Solidus; + var ASTERISK$1 = TYPE$5.Asterisk; + var FULLSTOP$2 = TYPE$5.FullStop; + var COLON = TYPE$5.Colon; + var GREATERTHANSIGN$1 = TYPE$5.GreaterThanSign; + var VERTICALLINE = TYPE$5.VerticalLine; + var TILDE = TYPE$5.Tilde; + + function getNode(context) { + switch (this.scanner.tokenType) { + case PLUSSIGN$3: + case GREATERTHANSIGN$1: + case TILDE: + context.space = null; + context.ignoreWSAfter = true; + return this.Combinator(); + + case SOLIDUS$1: // /deep/ + return this.Combinator(); + + case FULLSTOP$2: + return this.ClassSelector(); + + case LEFTSQUAREBRACKET$2: + return this.AttributeSelector(); + + case NUMBERSIGN$1: + return this.IdSelector(); + + case COLON: + if (this.scanner.lookupType(1) === COLON) { + return this.PseudoElementSelector(); + } else { + return this.PseudoClassSelector(); + } + + case IDENTIFIER$3: + case ASTERISK$1: + case VERTICALLINE: + return this.TypeSelector(); + + case NUMBER$3: + return this.Percentage(); + } + } + var selector = { + getNode: getNode + }; + + // https://drafts.csswg.org/css-images-4/#element-notation + // https://developer.mozilla.org/en-US/docs/Web/CSS/element + var element = function() { + this.scanner.skipSC(); + + var id = this.IdSelector(); + + this.scanner.skipSC(); + + return new list().appendData( + id + ); + }; + + // legacy IE function + // expression '(' raw ')' + var expression = function() { + return new list().appendData( + this.Raw(this.scanner.currentToken, 0, 0, false, false) + ); + }; + + var TYPE$6 = tokenizer$1.TYPE; + + var IDENTIFIER$4 = TYPE$6.Identifier; + var COMMA$1 = TYPE$6.Comma; + var SEMICOLON = TYPE$6.Semicolon; + var HYPHENMINUS$3 = TYPE$6.HyphenMinus; + var EXCLAMATIONMARK$1 = TYPE$6.ExclamationMark; + + // var '(' ident (',' ? )? ')' + var _var = function() { + var children = new list(); + + this.scanner.skipSC(); + + var identStart = this.scanner.tokenStart; + + this.scanner.eat(HYPHENMINUS$3); + if (this.scanner.source.charCodeAt(this.scanner.tokenStart) !== HYPHENMINUS$3) { + this.scanner.error('HyphenMinus is expected'); + } + this.scanner.eat(IDENTIFIER$4); + + children.appendData({ + type: 'Identifier', + loc: this.getLocation(identStart, this.scanner.tokenStart), + name: this.scanner.substrToCursor(identStart) + }); + + this.scanner.skipSC(); + + if (this.scanner.tokenType === COMMA$1) { + children.appendData(this.Operator()); + children.appendData(this.parseCustomProperty + ? this.Value(null) + : this.Raw(this.scanner.currentToken, EXCLAMATIONMARK$1, SEMICOLON, false, false) + ); + } + + return children; + }; + + var value = { + getNode: _default, + '-moz-element': element, + 'element': element, + 'expression': expression, + 'var': _var + }; + + var scope = { + AtruleExpression: atruleExpression, + Selector: selector, + Value: value + }; + + var fontFace = { + parse: { + expression: null, + block: function() { + return this.Block(this.Declaration); + } + } + }; + + var TYPE$7 = tokenizer$1.TYPE; + + var STRING$3 = TYPE$7.String; + var IDENTIFIER$5 = TYPE$7.Identifier; + var URL$3 = TYPE$7.Url; + var LEFTPARENTHESIS$2 = TYPE$7.LeftParenthesis; + + var _import = { + parse: { + expression: function() { + var children = new list(); + + this.scanner.skipSC(); + + switch (this.scanner.tokenType) { + case STRING$3: + children.appendData(this.String()); + break; + + case URL$3: + children.appendData(this.Url()); + break; + + default: + this.scanner.error('String or url() is expected'); + } + + if (this.scanner.lookupNonWSType(0) === IDENTIFIER$5 || + this.scanner.lookupNonWSType(0) === LEFTPARENTHESIS$2) { + children.appendData(this.WhiteSpace()); + children.appendData(this.MediaQueryList()); + } + + return children; + }, + block: null + } + }; + + var media = { + parse: { + expression: function() { + return new list().appendData( + this.MediaQueryList() + ); + }, + block: function() { + return this.Block(this.Rule); + } + } + }; + + var TYPE$8 = tokenizer$1.TYPE; + var LEFTCURLYBRACKET$1 = TYPE$8.LeftCurlyBracket; + + var page = { + parse: { + expression: function() { + if (this.scanner.lookupNonWSType(0) === LEFTCURLYBRACKET$1) { + return null; + } + + return new list().appendData( + this.SelectorList() + ); + }, + block: function() { + return this.Block(this.Declaration); + } + } + }; + + var TYPE$9 = tokenizer$1.TYPE; + + var WHITESPACE$3 = TYPE$9.WhiteSpace; + var COMMENT$3 = TYPE$9.Comment; + var IDENTIFIER$6 = TYPE$9.Identifier; + var FUNCTION$3 = TYPE$9.Function; + var LEFTPARENTHESIS$3 = TYPE$9.LeftParenthesis; + var HYPHENMINUS$4 = TYPE$9.HyphenMinus; + var COLON$1 = TYPE$9.Colon; + + function consumeRaw() { + return new list().appendData( + this.Raw(this.scanner.currentToken, 0, 0, false, false) + ); + } + + function parentheses() { + var index = 0; + + this.scanner.skipSC(); + + // TODO: make it simplier + if (this.scanner.tokenType === IDENTIFIER$6) { + index = 1; + } else if (this.scanner.tokenType === HYPHENMINUS$4 && + this.scanner.lookupType(1) === IDENTIFIER$6) { + index = 2; + } + + if (index !== 0 && this.scanner.lookupNonWSType(index) === COLON$1) { + return new list().appendData( + this.Declaration() + ); + } + + return readSequence.call(this); + } + + function readSequence() { + var children = new list(); + var space = null; + var child; + + this.scanner.skipSC(); + + scan: + while (!this.scanner.eof) { + switch (this.scanner.tokenType) { + case WHITESPACE$3: + space = this.WhiteSpace(); + continue; + + case COMMENT$3: + this.scanner.next(); + continue; + + case FUNCTION$3: + child = this.Function(consumeRaw, this.scope.AtruleExpression); + break; + + case IDENTIFIER$6: + child = this.Identifier(); + break; + + case LEFTPARENTHESIS$3: + child = this.Parentheses(parentheses, this.scope.AtruleExpression); + break; + + default: + break scan; + } + + if (space !== null) { + children.appendData(space); + space = null; + } + + children.appendData(child); + } + + return children; + } + + var supports = { + parse: { + expression: function() { + var children = readSequence.call(this); + + if (children.isEmpty()) { + this.scanner.error('Condition is expected'); + } + + return children; + }, + block: function() { + return this.Block(this.Rule); + } + } + }; + + var atrule = { + 'font-face': fontFace, + 'import': _import, + 'media': media, + 'page': page, + 'supports': supports + }; + + var dir = { + parse: function() { + return new list().appendData( + this.Identifier() + ); + } + }; + + var has$1 = { + parse: function() { + return new list().appendData( + this.SelectorList() + ); + } + }; + + var lang = { + parse: function() { + return new list().appendData( + this.Identifier() + ); + } + }; + + var selectorList = { + parse: function selectorList() { + return new list().appendData( + this.SelectorList() + ); + } + }; + + var matches = selectorList; + + var not = selectorList; + + var ALLOW_OF_CLAUSE = true; + + var nthWithOfClause = { + parse: function() { + return new list().appendData( + this.Nth(ALLOW_OF_CLAUSE) + ); + } + }; + + var nthChild = nthWithOfClause; + + var nthLastChild = nthWithOfClause; + + var DISALLOW_OF_CLAUSE = false; + + var nth = { + parse: function nth() { + return new list().appendData( + this.Nth(DISALLOW_OF_CLAUSE) + ); + } + }; + + var nthLastOfType = nth; + + var nthOfType = nth; + + var slotted = { + parse: function compoundSelector() { + return new list().appendData( + this.Selector() + ); + } + }; + + var pseudo = { + 'dir': dir, + 'has': has$1, + 'lang': lang, + 'matches': matches, + 'not': not, + 'nth-child': nthChild, + 'nth-last-child': nthLastChild, + 'nth-last-of-type': nthLastOfType, + 'nth-of-type': nthOfType, + 'slotted': slotted + }; + + var cmpChar$2 = tokenizer$1.cmpChar; + var isNumber$2 = tokenizer$1.isNumber; + var TYPE$a = tokenizer$1.TYPE; + + var IDENTIFIER$7 = TYPE$a.Identifier; + var NUMBER$4 = TYPE$a.Number; + var PLUSSIGN$4 = TYPE$a.PlusSign; + var HYPHENMINUS$5 = TYPE$a.HyphenMinus; + var N$3 = 110; // 'n'.charCodeAt(0) + var DISALLOW_SIGN = true; + var ALLOW_SIGN = false; + + function checkTokenIsInteger(scanner, disallowSign) { + var pos = scanner.tokenStart; + + if (scanner.source.charCodeAt(pos) === PLUSSIGN$4 || + scanner.source.charCodeAt(pos) === HYPHENMINUS$5) { + if (disallowSign) { + scanner.error(); + } + pos++; + } + + for (; pos < scanner.tokenEnd; pos++) { + if (!isNumber$2(scanner.source.charCodeAt(pos))) { + scanner.error('Unexpected input', pos); + } + } + } + + // An+B microsyntax https://www.w3.org/TR/css-syntax-3/#anb + var AnPlusB = { + name: 'AnPlusB', + structure: { + a: [String, null], + b: [String, null] + }, + parse: function() { + var start = this.scanner.tokenStart; + var end = start; + var prefix = ''; + var a = null; + var b = null; + + if (this.scanner.tokenType === NUMBER$4 || + this.scanner.tokenType === PLUSSIGN$4) { + checkTokenIsInteger(this.scanner, ALLOW_SIGN); + prefix = this.scanner.getTokenValue(); + this.scanner.next(); + end = this.scanner.tokenStart; + } + + if (this.scanner.tokenType === IDENTIFIER$7) { + var bStart = this.scanner.tokenStart; + + if (cmpChar$2(this.scanner.source, bStart, HYPHENMINUS$5)) { + if (prefix === '') { + prefix = '-'; + bStart++; + } else { + this.scanner.error('Unexpected hyphen minus'); + } + } + + if (!cmpChar$2(this.scanner.source, bStart, N$3)) { + this.scanner.error(); + } + + a = prefix === '' ? '1' : + prefix === '+' ? '+1' : + prefix === '-' ? '-1' : + prefix; + + var len = this.scanner.tokenEnd - bStart; + if (len > 1) { + // ..n-.. + if (this.scanner.source.charCodeAt(bStart + 1) !== HYPHENMINUS$5) { + this.scanner.error('Unexpected input', bStart + 1); + } + + if (len > 2) { + // ..n-{number}.. + this.scanner.tokenStart = bStart + 2; + } else { + // ..n- {number} + this.scanner.next(); + this.scanner.skipSC(); + } + + checkTokenIsInteger(this.scanner, DISALLOW_SIGN); + b = '-' + this.scanner.getTokenValue(); + this.scanner.next(); + end = this.scanner.tokenStart; + } else { + prefix = ''; + this.scanner.next(); + end = this.scanner.tokenStart; + this.scanner.skipSC(); + + if (this.scanner.tokenType === HYPHENMINUS$5 || + this.scanner.tokenType === PLUSSIGN$4) { + prefix = this.scanner.getTokenValue(); + this.scanner.next(); + this.scanner.skipSC(); + } + + if (this.scanner.tokenType === NUMBER$4) { + checkTokenIsInteger(this.scanner, prefix !== ''); + + if (!isNumber$2(this.scanner.source.charCodeAt(this.scanner.tokenStart))) { + prefix = this.scanner.source.charAt(this.scanner.tokenStart); + this.scanner.tokenStart++; + } + + if (prefix === '') { + // should be an operator before number + this.scanner.error(); + } else if (prefix === '+') { + // plus is using by default + prefix = ''; + } + + b = prefix + this.scanner.getTokenValue(); + + this.scanner.next(); + end = this.scanner.tokenStart; + } else { + if (prefix) { + this.scanner.eat(NUMBER$4); + } + } + } + } else { + if (prefix === '' || prefix === '+') { // no number + this.scanner.error( + 'Number or identifier is expected', + this.scanner.tokenStart + ( + this.scanner.tokenType === PLUSSIGN$4 || + this.scanner.tokenType === HYPHENMINUS$5 + ) + ); + } + + b = prefix; + } + + return { + type: 'AnPlusB', + loc: this.getLocation(start, end), + a: a, + b: b + }; + }, + generate: function(processChunk, node) { + var a = node.a !== null && node.a !== undefined; + var b = node.b !== null && node.b !== undefined; + + if (a) { + processChunk( + node.a === '+1' ? '+n' : + node.a === '1' ? 'n' : + node.a === '-1' ? '-n' : + node.a + 'n' + ); + + if (b) { + b = String(node.b); + if (b.charAt(0) === '-' || b.charAt(0) === '+') { + processChunk(b.charAt(0)); + processChunk(b.substr(1)); + } else { + processChunk('+'); + processChunk(b); + } + } + } else { + processChunk(String(node.b)); + } + } + }; + + var TYPE$b = tokenizer$1.TYPE; + + var ATRULE$2 = TYPE$b.Atrule; + var SEMICOLON$1 = TYPE$b.Semicolon; + var LEFTCURLYBRACKET$2 = TYPE$b.LeftCurlyBracket; + var RIGHTCURLYBRACKET$1 = TYPE$b.RightCurlyBracket; + + function isBlockAtrule() { + for (var offset = 1, type; type = this.scanner.lookupType(offset); offset++) { + if (type === RIGHTCURLYBRACKET$1) { + return true; + } + + if (type === LEFTCURLYBRACKET$2 || + type === ATRULE$2) { + return false; + } + } + + this.scanner.skip(offset); + this.scanner.eat(RIGHTCURLYBRACKET$1); + } + + var Atrule = { + name: 'Atrule', + structure: { + name: String, + expression: ['AtruleExpression', null], + block: ['Block', null] + }, + parse: function() { + var start = this.scanner.tokenStart; + var name; + var nameLowerCase; + var expression = null; + var block = null; + + this.scanner.eat(ATRULE$2); + + name = this.scanner.substrToCursor(start + 1); + nameLowerCase = name.toLowerCase(); + this.scanner.skipSC(); + + expression = this.AtruleExpression(name); + + // turn empty AtruleExpression into null + if (expression.children.head === null) { + expression = null; + } + + this.scanner.skipSC(); + + if (this.atrule.hasOwnProperty(nameLowerCase)) { + if (typeof this.atrule[nameLowerCase].block === 'function') { + if (this.scanner.tokenType !== LEFTCURLYBRACKET$2) { + // FIXME: make tolerant + this.scanner.error('Curly bracket is expected'); + } + + block = this.atrule[nameLowerCase].block.call(this); + } else { + if (!this.tolerant || !this.scanner.eof) { + this.scanner.eat(SEMICOLON$1); + } + } + } else { + switch (this.scanner.tokenType) { + case SEMICOLON$1: + this.scanner.next(); + break; + + case LEFTCURLYBRACKET$2: + // TODO: should consume block content as Raw? + block = this.Block(isBlockAtrule.call(this) ? this.Declaration : this.Rule); + break; + + default: + if (!this.tolerant) { + this.scanner.error('Semicolon or block is expected'); + } + } + } + + return { + type: 'Atrule', + loc: this.getLocation(start, this.scanner.tokenStart), + name: name, + expression: expression, + block: block + }; + }, + generate: function(processChunk, node) { + processChunk('@'); + processChunk(node.name); + + if (node.expression !== null) { + processChunk(' '); + this.generate(processChunk, node.expression); + } + + if (node.block) { + this.generate(processChunk, node.block); + } else { + processChunk(';'); + } + }, + walkContext: 'atrule' + }; + + var TYPE$c = tokenizer$1.TYPE; + var SEMICOLON$2 = TYPE$c.Semicolon; + var LEFTCURLYBRACKET$3 = TYPE$c.LeftCurlyBracket; + + function consumeRaw$1(startToken) { + return new list().appendData( + this.Raw(startToken, SEMICOLON$2, LEFTCURLYBRACKET$3, false, true) + ); + } + + function consumeDefaultSequence() { + return this.readSequence(this.scope.AtruleExpression); + } + + var AtruleExpression = { + name: 'AtruleExpression', + structure: { + children: [[]] + }, + parse: function(name) { + var children = null; + var startToken = this.scanner.currentToken; + + if (name !== null) { + name = name.toLowerCase(); + } + + if (this.parseAtruleExpression) { + // custom consumer + if (this.atrule.hasOwnProperty(name)) { + if (typeof this.atrule[name].expression === 'function') { + children = this.tolerantParse(this.atrule[name].expression, consumeRaw$1); + } + } else { + // default consumer + this.scanner.skipSC(); + children = this.tolerantParse(consumeDefaultSequence, consumeRaw$1); + } + + if (this.tolerant) { + if (this.scanner.eof || (this.scanner.tokenType !== SEMICOLON$2 && this.scanner.tokenType !== LEFTCURLYBRACKET$3)) { + children = consumeRaw$1.call(this, startToken); + } + } + } else { + children = consumeRaw$1.call(this, startToken); + } + + if (children === null) { + children = new list(); + } + + return { + type: 'AtruleExpression', + loc: this.getLocationFromList(children), + children: children + }; + }, + generate: function(processChunk, node) { + this.each(processChunk, node); + }, + walkContext: 'atruleExpression' + }; + + var TYPE$d = tokenizer$1.TYPE; + + var IDENTIFIER$8 = TYPE$d.Identifier; + var STRING$4 = TYPE$d.String; + var DOLLARSIGN = TYPE$d.DollarSign; + var ASTERISK$2 = TYPE$d.Asterisk; + var COLON$2 = TYPE$d.Colon; + var EQUALSSIGN = TYPE$d.EqualsSign; + var LEFTSQUAREBRACKET$3 = TYPE$d.LeftSquareBracket; + var RIGHTSQUAREBRACKET$1 = TYPE$d.RightSquareBracket; + var CIRCUMFLEXACCENT = TYPE$d.CircumflexAccent; + var VERTICALLINE$1 = TYPE$d.VerticalLine; + var TILDE$1 = TYPE$d.Tilde; + + function getAttributeName() { + if (this.scanner.eof) { + this.scanner.error('Unexpected end of input'); + } + + var start = this.scanner.tokenStart; + var expectIdentifier = false; + var checkColon = true; + + if (this.scanner.tokenType === ASTERISK$2) { + expectIdentifier = true; + checkColon = false; + this.scanner.next(); + } else if (this.scanner.tokenType !== VERTICALLINE$1) { + this.scanner.eat(IDENTIFIER$8); + } + + if (this.scanner.tokenType === VERTICALLINE$1) { + if (this.scanner.lookupType(1) !== EQUALSSIGN) { + this.scanner.next(); + this.scanner.eat(IDENTIFIER$8); + } else if (expectIdentifier) { + this.scanner.error('Identifier is expected', this.scanner.tokenEnd); + } + } else if (expectIdentifier) { + this.scanner.error('Vertical line is expected'); + } + + if (checkColon && this.scanner.tokenType === COLON$2) { + this.scanner.next(); + this.scanner.eat(IDENTIFIER$8); + } + + return { + type: 'Identifier', + loc: this.getLocation(start, this.scanner.tokenStart), + name: this.scanner.substrToCursor(start) + }; + } + + function getOperator() { + var start = this.scanner.tokenStart; + var tokenType = this.scanner.tokenType; + + if (tokenType !== EQUALSSIGN && // = + tokenType !== TILDE$1 && // ~= + tokenType !== CIRCUMFLEXACCENT && // ^= + tokenType !== DOLLARSIGN && // $= + tokenType !== ASTERISK$2 && // *= + tokenType !== VERTICALLINE$1 // |= + ) { + this.scanner.error('Attribute selector (=, ~=, ^=, $=, *=, |=) is expected'); + } + + if (tokenType === EQUALSSIGN) { + this.scanner.next(); + } else { + this.scanner.next(); + this.scanner.eat(EQUALSSIGN); + } + + return this.scanner.substrToCursor(start); + } + + // '[' S* attrib_name ']' + // '[' S* attrib_name S* attrib_matcher S* [ IDENT | STRING ] S* attrib_flags? S* ']' + var AttributeSelector = { + name: 'AttributeSelector', + structure: { + name: 'Identifier', + matcher: [String, null], + value: ['String', 'Identifier', null], + flags: [String, null] + }, + parse: function() { + var start = this.scanner.tokenStart; + var name; + var matcher = null; + var value = null; + var flags = null; + + this.scanner.eat(LEFTSQUAREBRACKET$3); + this.scanner.skipSC(); + + name = getAttributeName.call(this); + this.scanner.skipSC(); + + if (this.scanner.tokenType !== RIGHTSQUAREBRACKET$1) { + // avoid case `[name i]` + if (this.scanner.tokenType !== IDENTIFIER$8) { + matcher = getOperator.call(this); + + this.scanner.skipSC(); + + value = this.scanner.tokenType === STRING$4 + ? this.String() + : this.Identifier(); + + this.scanner.skipSC(); + } + + // attribute flags + if (this.scanner.tokenType === IDENTIFIER$8) { + flags = this.scanner.getTokenValue(); + this.scanner.next(); + + this.scanner.skipSC(); + } + } + + this.scanner.eat(RIGHTSQUAREBRACKET$1); + + return { + type: 'AttributeSelector', + loc: this.getLocation(start, this.scanner.tokenStart), + name: name, + matcher: matcher, + value: value, + flags: flags + }; + }, + generate: function(processChunk, node) { + var flagsPrefix = ' '; + + processChunk('['); + this.generate(processChunk, node.name); + + if (node.matcher !== null) { + processChunk(node.matcher); + + if (node.value !== null) { + this.generate(processChunk, node.value); + + // space between string and flags is not required + if (node.value.type === 'String') { + flagsPrefix = ''; + } + } + } + + if (node.flags !== null) { + processChunk(flagsPrefix); + processChunk(node.flags); + } + + processChunk(']'); + } + }; + + var TYPE$e = tokenizer$1.TYPE; + + var WHITESPACE$4 = TYPE$e.WhiteSpace; + var COMMENT$4 = TYPE$e.Comment; + var SEMICOLON$3 = TYPE$e.Semicolon; + var ATRULE$3 = TYPE$e.Atrule; + var LEFTCURLYBRACKET$4 = TYPE$e.LeftCurlyBracket; + var RIGHTCURLYBRACKET$2 = TYPE$e.RightCurlyBracket; + + function consumeRaw$2(startToken) { + return this.Raw(startToken, 0, SEMICOLON$3, true, true); + } + + var Block = { + name: 'Block', + structure: { + children: [['Atrule', 'Rule', 'Declaration']] + }, + parse: function(defaultConsumer) { + if (!defaultConsumer) { + defaultConsumer = this.Declaration; + } + + var start = this.scanner.tokenStart; + var children = new list(); + + this.scanner.eat(LEFTCURLYBRACKET$4); + + scan: + while (!this.scanner.eof) { + switch (this.scanner.tokenType) { + case RIGHTCURLYBRACKET$2: + break scan; + + case WHITESPACE$4: + case COMMENT$4: + case SEMICOLON$3: + this.scanner.next(); + break; + + case ATRULE$3: + children.appendData(this.tolerantParse(this.Atrule, consumeRaw$2)); + break; + + default: + children.appendData(this.tolerantParse(defaultConsumer, consumeRaw$2)); + } + } + + if (!this.tolerant || !this.scanner.eof) { + this.scanner.eat(RIGHTCURLYBRACKET$2); + } + + return { + type: 'Block', + loc: this.getLocation(start, this.scanner.tokenStart), + children: children + }; + }, + generate: function(processChunk, node) { + processChunk('{'); + this.each(processChunk, node); + processChunk('}'); + }, + walkContext: 'block' + }; + + var TYPE$f = tokenizer$1.TYPE; + var LEFTSQUAREBRACKET$4 = TYPE$f.LeftSquareBracket; + var RIGHTSQUAREBRACKET$2 = TYPE$f.RightSquareBracket; + + // currently only Grid Layout uses square brackets, but left it universal + // https://drafts.csswg.org/css-grid/#track-sizing + // [ ident* ] + var Brackets = { + name: 'Brackets', + structure: { + children: [[]] + }, + parse: function(readSequence, recognizer) { + var start = this.scanner.tokenStart; + var children = null; + + this.scanner.eat(LEFTSQUAREBRACKET$4); + children = readSequence.call(this, recognizer); + this.scanner.eat(RIGHTSQUAREBRACKET$2); + + return { + type: 'Brackets', + loc: this.getLocation(start, this.scanner.tokenStart), + children: children + }; + }, + generate: function(processChunk, node) { + processChunk('['); + this.each(processChunk, node); + processChunk(']'); + } + }; + + var CDC$2 = tokenizer$1.TYPE.CDC; + + var CDC_1 = { + name: 'CDC', + structure: [], + parse: function() { + var start = this.scanner.tokenStart; + + this.scanner.eat(CDC$2); // --> + + return { + type: 'CDC', + loc: this.getLocation(start, this.scanner.tokenStart) + }; + }, + generate: function(processChunk) { + processChunk('-->'); + } + }; + + var CDO$2 = tokenizer$1.TYPE.CDO; + + var CDO_1 = { + name: 'CDO', + structure: [], + parse: function() { + var start = this.scanner.tokenStart; + + this.scanner.eat(CDO$2); // + child = this.CDC(); + break; + + // CSS Syntax Module Level 3 + // §2.2 Error handling + // At the "top level" of a stylesheet, an starts an at-rule. + case ATRULE$4: + child = this.Atrule(); + break; + + // Anything else starts a qualified rule ... + default: + child = this.tolerantParse(this.Rule, consumeRaw$5); + } + + children.appendData(child); + } + + return { + type: 'StyleSheet', + loc: this.getLocation(start, this.scanner.tokenStart), + children: children + }; + }, + generate: function(processChunk, node) { + this.each(processChunk, node); + }, + walkContext: 'stylesheet' + }; + + var TYPE$z = tokenizer$1.TYPE; + + var IDENTIFIER$i = TYPE$z.Identifier; + var ASTERISK$5 = TYPE$z.Asterisk; + var VERTICALLINE$2 = TYPE$z.VerticalLine; + + function eatIdentifierOrAsterisk() { + if (this.scanner.tokenType !== IDENTIFIER$i && + this.scanner.tokenType !== ASTERISK$5) { + this.scanner.error('Identifier or asterisk is expected'); + } + + this.scanner.next(); + } + + // ident + // ident|ident + // ident|* + // * + // *|ident + // *|* + // |ident + // |* + var TypeSelector = { + name: 'TypeSelector', + structure: { + name: String + }, + parse: function() { + var start = this.scanner.tokenStart; + + if (this.scanner.tokenType === VERTICALLINE$2) { + this.scanner.next(); + eatIdentifierOrAsterisk.call(this); + } else { + eatIdentifierOrAsterisk.call(this); + + if (this.scanner.tokenType === VERTICALLINE$2) { + this.scanner.next(); + eatIdentifierOrAsterisk.call(this); + } + } + + return { + type: 'TypeSelector', + loc: this.getLocation(start, this.scanner.tokenStart), + name: this.scanner.substrToCursor(start) + }; + }, + generate: function(processChunk, node) { + processChunk(node.name); + } + }; + + var isHex$2 = tokenizer$1.isHex; + var TYPE$A = tokenizer$1.TYPE; + + var IDENTIFIER$j = TYPE$A.Identifier; + var NUMBER$b = TYPE$A.Number; + var PLUSSIGN$7 = TYPE$A.PlusSign; + var HYPHENMINUS$7 = TYPE$A.HyphenMinus; + var FULLSTOP$5 = TYPE$A.FullStop; + var QUESTIONMARK = TYPE$A.QuestionMark; + + function scanUnicodeNumber(scanner) { + for (var pos = scanner.tokenStart + 1; pos < scanner.tokenEnd; pos++) { + var code = scanner.source.charCodeAt(pos); + + // break on fullstop or hyperminus/plussign after exponent + if (code === FULLSTOP$5 || code === PLUSSIGN$7) { + // break token, exclude symbol + scanner.tokenStart = pos; + return false; + } + } + + return true; + } + + // https://drafts.csswg.org/css-syntax-3/#urange + function scanUnicodeRange(scanner) { + var hexStart = scanner.tokenStart + 1; // skip + + var hexLength = 0; + + scan: { + if (scanner.tokenType === NUMBER$b) { + if (scanner.source.charCodeAt(scanner.tokenStart) !== FULLSTOP$5 && scanUnicodeNumber(scanner)) { + scanner.next(); + } else if (scanner.source.charCodeAt(scanner.tokenStart) !== HYPHENMINUS$7) { + break scan; + } + } else { + scanner.next(); // PLUSSIGN + } + + if (scanner.tokenType === HYPHENMINUS$7) { + scanner.next(); + } + + if (scanner.tokenType === NUMBER$b) { + scanner.next(); + } + + if (scanner.tokenType === IDENTIFIER$j) { + scanner.next(); + } + + if (scanner.tokenStart === hexStart) { + scanner.error('Unexpected input', hexStart); + } + } + + // validate for U+x{1,6} or U+x{1,6}-x{1,6} + // where x is [0-9a-fA-F] + for (var i = hexStart, wasHyphenMinus = false; i < scanner.tokenStart; i++) { + var code = scanner.source.charCodeAt(i); + + if (isHex$2(code) === false && (code !== HYPHENMINUS$7 || wasHyphenMinus)) { + scanner.error('Unexpected input', i); + } + + if (code === HYPHENMINUS$7) { + // hex sequence shouldn't be an empty + if (hexLength === 0) { + scanner.error('Unexpected input', i); + } + + wasHyphenMinus = true; + hexLength = 0; + } else { + hexLength++; + + // too long hex sequence + if (hexLength > 6) { + scanner.error('Too long hex sequence', i); + } + } + + } + + // check we have a non-zero sequence + if (hexLength === 0) { + scanner.error('Unexpected input', i - 1); + } + + // U+abc??? + if (!wasHyphenMinus) { + // consume as many U+003F QUESTION MARK (?) code points as possible + for (; hexLength < 6 && !scanner.eof; scanner.next()) { + if (scanner.tokenType !== QUESTIONMARK) { + break; + } + + hexLength++; + } + } + } + + var UnicodeRange = { + name: 'UnicodeRange', + structure: { + value: String + }, + parse: function() { + var start = this.scanner.tokenStart; + + this.scanner.next(); // U or u + scanUnicodeRange(this.scanner); + + return { + type: 'UnicodeRange', + loc: this.getLocation(start, this.scanner.tokenStart), + value: this.scanner.substrToCursor(start) + }; + }, + generate: function(processChunk, node) { + processChunk(node.value); + } + }; + + var TYPE$B = tokenizer$1.TYPE; + + var STRING$6 = TYPE$B.String; + var URL$4 = TYPE$B.Url; + var RAW$2 = TYPE$B.Raw; + var RIGHTPARENTHESIS$7 = TYPE$B.RightParenthesis; + + // url '(' S* (string | raw) S* ')' + var Url = { + name: 'Url', + structure: { + value: ['String', 'Raw'] + }, + parse: function() { + var start = this.scanner.tokenStart; + var value; + + this.scanner.eat(URL$4); + this.scanner.skipSC(); + + switch (this.scanner.tokenType) { + case STRING$6: + value = this.String(); + break; + + case RAW$2: + value = this.Raw(this.scanner.currentToken, 0, RAW$2, true, false); + break; + + default: + this.scanner.error('String or Raw is expected'); + } + + this.scanner.skipSC(); + this.scanner.eat(RIGHTPARENTHESIS$7); + + return { + type: 'Url', + loc: this.getLocation(start, this.scanner.tokenStart), + value: value + }; + }, + generate: function(processChunk, node) { + processChunk('url'); + processChunk('('); + this.generate(processChunk, node.value); + processChunk(')'); + } + }; + + var endsWith$1 = tokenizer$1.endsWith; + var TYPE$C = tokenizer$1.TYPE; + + var WHITESPACE$8 = TYPE$C.WhiteSpace; + var COMMENT$8 = TYPE$C.Comment; + var FUNCTION$6 = TYPE$C.Function; + var COLON$7 = TYPE$C.Colon; + var SEMICOLON$6 = TYPE$C.Semicolon; + var EXCLAMATIONMARK$4 = TYPE$C.ExclamationMark; + + // 'progid:' ws* 'DXImageTransform.Microsoft.' ident ws* '(' .* ')' + function checkProgid(scanner) { + var offset = 0; + + for (var type; type = scanner.lookupType(offset); offset++) { + if (type !== WHITESPACE$8 && type !== COMMENT$8) { + break; + } + } + + if (scanner.lookupValue(offset, 'alpha(') || + scanner.lookupValue(offset, 'chroma(') || + scanner.lookupValue(offset, 'dropshadow(')) { + if (scanner.lookupType(offset) !== FUNCTION$6) { + return false; + } + } else { + if (scanner.lookupValue(offset, 'progid') === false || + scanner.lookupType(offset + 1) !== COLON$7) { + return false; + } + } + + return true; + } + + var Value = { + name: 'Value', + structure: { + children: [[]] + }, + parse: function(property) { + // special parser for filter property since it can contains non-standart syntax for old IE + if (property !== null && endsWith$1(property, 'filter') && checkProgid(this.scanner)) { + this.scanner.skipSC(); + return this.Raw(this.scanner.currentToken, EXCLAMATIONMARK$4, SEMICOLON$6, false, false); + } + + var start = this.scanner.tokenStart; + var children = this.readSequence(this.scope.Value); + + return { + type: 'Value', + loc: this.getLocation(start, this.scanner.tokenStart), + children: children + }; + }, + generate: function(processChunk, node) { + this.each(processChunk, node); + } + }; + + var WHITESPACE$9 = tokenizer$1.TYPE.WhiteSpace; + var SPACE$2 = Object.freeze({ + type: 'WhiteSpace', + loc: null, + value: ' ' + }); + + var WhiteSpace = { + name: 'WhiteSpace', + structure: { + value: String + }, + parse: function() { + this.scanner.eat(WHITESPACE$9); + return SPACE$2; + + // return { + // type: 'WhiteSpace', + // loc: this.getLocation(this.scanner.tokenStart, this.scanner.tokenEnd), + // value: this.scanner.consume(WHITESPACE) + // }; + }, + generate: function(processChunk, node) { + processChunk(node.value); + } + }; + + var node = { + AnPlusB: AnPlusB, + Atrule: Atrule, + AtruleExpression: AtruleExpression, + AttributeSelector: AttributeSelector, + Block: Block, + Brackets: Brackets, + CDC: CDC_1, + CDO: CDO_1, + ClassSelector: ClassSelector, + Combinator: Combinator, + Comment: Comment, + Declaration: Declaration, + DeclarationList: DeclarationList, + Dimension: Dimension, + Function: _Function, + HexColor: HexColor, + Identifier: Identifier, + IdSelector: IdSelector, + MediaFeature: MediaFeature, + MediaQuery: MediaQuery, + MediaQueryList: MediaQueryList, + Nth: Nth, + Number: _Number, + Operator: Operator, + Parentheses: Parentheses, + Percentage: Percentage, + PseudoClassSelector: PseudoClassSelector, + PseudoElementSelector: PseudoElementSelector, + Ratio: Ratio, + Raw: Raw, + Rule: Rule, + Selector: Selector, + SelectorList: SelectorList, + String: _String, + StyleSheet: StyleSheet, + TypeSelector: TypeSelector, + UnicodeRange: UnicodeRange, + Url: Url, + Value: Value, + WhiteSpace: WhiteSpace + }; + + var parser = { + parseContext: { + default: 'StyleSheet', + stylesheet: 'StyleSheet', + atrule: 'Atrule', + atruleExpression: function(options) { + return this.AtruleExpression(options.atrule ? String(options.atrule) : null); + }, + mediaQueryList: 'MediaQueryList', + mediaQuery: 'MediaQuery', + rule: 'Rule', + selectorList: 'SelectorList', + selector: 'Selector', + block: function() { + return this.Block(this.Declaration); + }, + declarationList: 'DeclarationList', + declaration: 'Declaration', + value: function(options) { + return this.Value(options.property ? String(options.property) : null); + } + }, + scope: scope, + atrule: atrule, + pseudo: pseudo, + node: node + }; + + var parser$1 = create(parser); + + function walk(ast, { enter, leave }) { + visit(ast, null, enter, leave); + } + + let shouldSkip = false; + const context = { skip: () => shouldSkip = true }; + + const childKeys = {}; + + const toString$1 = Object.prototype.toString; + + function isArray$1(thing) { + return toString$1.call(thing) === '[object Array]'; + } + + function visit(node, parent, enter, leave, prop, index) { + if (!node) return; + + if (enter) { + const _shouldSkip = shouldSkip; + shouldSkip = false; + enter.call(context, node, parent, prop, index); + const skipped = shouldSkip; + shouldSkip = _shouldSkip; + + if (skipped) return; + } + + const keys = node.type && childKeys[node.type] || ( + childKeys[node.type] = Object.keys(node).filter(key => typeof node[key] === 'object') + ); + + for (let i = 0; i < keys.length; i += 1) { + const key = keys[i]; + const value = node[key]; + + if (isArray$1(value)) { + for (let j = 0; j < value.length; j += 1) { + value[j] && value[j].type && visit(value[j], node, enter, leave, key, j); + } + } + + else if (value && value.type) { + visit(value, node, enter, leave, key, null); + } + } + + if (leave) { + leave(node, parent, prop, index); + } + } + + function read_style(parser, start, attributes) { + const content_start = parser.index; + const styles = parser.read_until(/<\/style>/); + const content_end = parser.index; + let ast; + try { + ast = parser$1(styles, { + positions: true, + offset: content_start, + }); + } + catch (err) { + if (err.name === 'CssSyntaxError') { + parser.error({ + code: `css-syntax-error`, + message: err.message + }, err.offset); + } + else { + throw err; + } + } + ast = JSON.parse(JSON.stringify(ast)); + // tidy up AST + walk(ast, { + enter: (node) => { + // replace `ref:a` nodes + if (node.type === 'Selector') { + for (let i = 0; i < node.children.length; i += 1) { + const a = node.children[i]; + const b = node.children[i + 1]; + if (is_ref_selector(a, b)) { + parser.error({ + code: `invalid-ref-selector`, + message: 'ref selectors are no longer supported' + }, a.loc.start.offset); + } + } + } + if (node.loc) { + node.start = node.loc.start.offset; + node.end = node.loc.end.offset; + delete node.loc; + } + } + }); + parser.eat('', true); + const end = parser.index; + return { + start, + end, + attributes, + children: ast.children, + content: { + start: content_start, + end: content_end, + styles, + }, + }; + } + function is_ref_selector(a, b) { + if (!b) + return false; + return (a.type === 'TypeSelector' && + a.name === 'ref' && + b.type === 'PseudoClassSelector'); + } + + // https://dev.w3.org/html5/html-author/charref + var entities = { + CounterClockwiseContourIntegral: 8755, + ClockwiseContourIntegral: 8754, + DoubleLongLeftRightArrow: 10234, + DiacriticalDoubleAcute: 733, + NotSquareSupersetEqual: 8931, + CloseCurlyDoubleQuote: 8221, + DoubleContourIntegral: 8751, + FilledVerySmallSquare: 9642, + NegativeVeryThinSpace: 8203, + NotPrecedesSlantEqual: 8928, + NotRightTriangleEqual: 8941, + NotSucceedsSlantEqual: 8929, + CapitalDifferentialD: 8517, + DoubleLeftRightArrow: 8660, + DoubleLongRightArrow: 10233, + EmptyVerySmallSquare: 9643, + NestedGreaterGreater: 8811, + NotDoubleVerticalBar: 8742, + NotLeftTriangleEqual: 8940, + NotSquareSubsetEqual: 8930, + OpenCurlyDoubleQuote: 8220, + ReverseUpEquilibrium: 10607, + DoubleLongLeftArrow: 10232, + DownLeftRightVector: 10576, + LeftArrowRightArrow: 8646, + NegativeMediumSpace: 8203, + RightArrowLeftArrow: 8644, + SquareSupersetEqual: 8850, + leftrightsquigarrow: 8621, + DownRightTeeVector: 10591, + DownRightVectorBar: 10583, + LongLeftRightArrow: 10231, + Longleftrightarrow: 10234, + NegativeThickSpace: 8203, + PrecedesSlantEqual: 8828, + ReverseEquilibrium: 8651, + RightDoubleBracket: 10215, + RightDownTeeVector: 10589, + RightDownVectorBar: 10581, + RightTriangleEqual: 8885, + SquareIntersection: 8851, + SucceedsSlantEqual: 8829, + blacktriangleright: 9656, + longleftrightarrow: 10231, + DoubleUpDownArrow: 8661, + DoubleVerticalBar: 8741, + DownLeftTeeVector: 10590, + DownLeftVectorBar: 10582, + FilledSmallSquare: 9724, + GreaterSlantEqual: 10878, + LeftDoubleBracket: 10214, + LeftDownTeeVector: 10593, + LeftDownVectorBar: 10585, + LeftTriangleEqual: 8884, + NegativeThinSpace: 8203, + NotReverseElement: 8716, + NotTildeFullEqual: 8775, + RightAngleBracket: 10217, + RightUpDownVector: 10575, + SquareSubsetEqual: 8849, + VerticalSeparator: 10072, + blacktriangledown: 9662, + blacktriangleleft: 9666, + leftrightharpoons: 8651, + rightleftharpoons: 8652, + twoheadrightarrow: 8608, + DiacriticalAcute: 180, + DiacriticalGrave: 96, + DiacriticalTilde: 732, + DoubleRightArrow: 8658, + DownArrowUpArrow: 8693, + EmptySmallSquare: 9723, + GreaterEqualLess: 8923, + GreaterFullEqual: 8807, + LeftAngleBracket: 10216, + LeftUpDownVector: 10577, + LessEqualGreater: 8922, + NonBreakingSpace: 160, + NotRightTriangle: 8939, + NotSupersetEqual: 8841, + RightTriangleBar: 10704, + RightUpTeeVector: 10588, + RightUpVectorBar: 10580, + UnderParenthesis: 9181, + UpArrowDownArrow: 8645, + circlearrowright: 8635, + downharpoonright: 8642, + ntrianglerighteq: 8941, + rightharpoondown: 8641, + rightrightarrows: 8649, + twoheadleftarrow: 8606, + vartriangleright: 8883, + CloseCurlyQuote: 8217, + ContourIntegral: 8750, + DoubleDownArrow: 8659, + DoubleLeftArrow: 8656, + DownRightVector: 8641, + LeftRightVector: 10574, + LeftTriangleBar: 10703, + LeftUpTeeVector: 10592, + LeftUpVectorBar: 10584, + LowerRightArrow: 8600, + NotGreaterEqual: 8817, + NotGreaterTilde: 8821, + NotLeftTriangle: 8938, + OverParenthesis: 9180, + RightDownVector: 8642, + ShortRightArrow: 8594, + UpperRightArrow: 8599, + bigtriangledown: 9661, + circlearrowleft: 8634, + curvearrowright: 8631, + downharpoonleft: 8643, + leftharpoondown: 8637, + leftrightarrows: 8646, + nLeftrightarrow: 8654, + nleftrightarrow: 8622, + ntrianglelefteq: 8940, + rightleftarrows: 8644, + rightsquigarrow: 8605, + rightthreetimes: 8908, + straightepsilon: 1013, + trianglerighteq: 8885, + vartriangleleft: 8882, + DiacriticalDot: 729, + DoubleRightTee: 8872, + DownLeftVector: 8637, + GreaterGreater: 10914, + HorizontalLine: 9472, + InvisibleComma: 8291, + InvisibleTimes: 8290, + LeftDownVector: 8643, + LeftRightArrow: 8596, + Leftrightarrow: 8660, + LessSlantEqual: 10877, + LongRightArrow: 10230, + Longrightarrow: 10233, + LowerLeftArrow: 8601, + NestedLessLess: 8810, + NotGreaterLess: 8825, + NotLessGreater: 8824, + NotSubsetEqual: 8840, + NotVerticalBar: 8740, + OpenCurlyQuote: 8216, + ReverseElement: 8715, + RightTeeVector: 10587, + RightVectorBar: 10579, + ShortDownArrow: 8595, + ShortLeftArrow: 8592, + SquareSuperset: 8848, + TildeFullEqual: 8773, + UpperLeftArrow: 8598, + ZeroWidthSpace: 8203, + curvearrowleft: 8630, + doublebarwedge: 8966, + downdownarrows: 8650, + hookrightarrow: 8618, + leftleftarrows: 8647, + leftrightarrow: 8596, + leftthreetimes: 8907, + longrightarrow: 10230, + looparrowright: 8620, + nshortparallel: 8742, + ntriangleright: 8939, + rightarrowtail: 8611, + rightharpoonup: 8640, + trianglelefteq: 8884, + upharpoonright: 8638, + ApplyFunction: 8289, + DifferentialD: 8518, + DoubleLeftTee: 10980, + DoubleUpArrow: 8657, + LeftTeeVector: 10586, + LeftVectorBar: 10578, + LessFullEqual: 8806, + LongLeftArrow: 10229, + Longleftarrow: 10232, + NotTildeEqual: 8772, + NotTildeTilde: 8777, + Poincareplane: 8460, + PrecedesEqual: 10927, + PrecedesTilde: 8830, + RightArrowBar: 8677, + RightTeeArrow: 8614, + RightTriangle: 8883, + RightUpVector: 8638, + SucceedsEqual: 10928, + SucceedsTilde: 8831, + SupersetEqual: 8839, + UpEquilibrium: 10606, + VerticalTilde: 8768, + VeryThinSpace: 8202, + bigtriangleup: 9651, + blacktriangle: 9652, + divideontimes: 8903, + fallingdotseq: 8786, + hookleftarrow: 8617, + leftarrowtail: 8610, + leftharpoonup: 8636, + longleftarrow: 10229, + looparrowleft: 8619, + measuredangle: 8737, + ntriangleleft: 8938, + shortparallel: 8741, + smallsetminus: 8726, + triangleright: 9657, + upharpoonleft: 8639, + DownArrowBar: 10515, + DownTeeArrow: 8615, + ExponentialE: 8519, + GreaterEqual: 8805, + GreaterTilde: 8819, + HilbertSpace: 8459, + HumpDownHump: 8782, + Intersection: 8898, + LeftArrowBar: 8676, + LeftTeeArrow: 8612, + LeftTriangle: 8882, + LeftUpVector: 8639, + NotCongruent: 8802, + NotLessEqual: 8816, + NotLessTilde: 8820, + Proportional: 8733, + RightCeiling: 8969, + RoundImplies: 10608, + ShortUpArrow: 8593, + SquareSubset: 8847, + UnderBracket: 9141, + VerticalLine: 124, + blacklozenge: 10731, + exponentiale: 8519, + risingdotseq: 8787, + triangledown: 9663, + triangleleft: 9667, + CircleMinus: 8854, + CircleTimes: 8855, + Equilibrium: 8652, + GreaterLess: 8823, + LeftCeiling: 8968, + LessGreater: 8822, + MediumSpace: 8287, + NotPrecedes: 8832, + NotSucceeds: 8833, + OverBracket: 9140, + RightVector: 8640, + Rrightarrow: 8667, + RuleDelayed: 10740, + SmallCircle: 8728, + SquareUnion: 8852, + SubsetEqual: 8838, + UpDownArrow: 8597, + Updownarrow: 8661, + VerticalBar: 8739, + backepsilon: 1014, + blacksquare: 9642, + circledcirc: 8858, + circleddash: 8861, + curlyeqprec: 8926, + curlyeqsucc: 8927, + diamondsuit: 9830, + eqslantless: 10901, + expectation: 8496, + nRightarrow: 8655, + nrightarrow: 8603, + preccurlyeq: 8828, + precnapprox: 10937, + quaternions: 8461, + straightphi: 981, + succcurlyeq: 8829, + succnapprox: 10938, + thickapprox: 8776, + updownarrow: 8597, + Bernoullis: 8492, + CirclePlus: 8853, + EqualTilde: 8770, + Fouriertrf: 8497, + ImaginaryI: 8520, + Laplacetrf: 8466, + LeftVector: 8636, + Lleftarrow: 8666, + NotElement: 8713, + NotGreater: 8815, + Proportion: 8759, + RightArrow: 8594, + RightFloor: 8971, + Rightarrow: 8658, + TildeEqual: 8771, + TildeTilde: 8776, + UnderBrace: 9183, + UpArrowBar: 10514, + UpTeeArrow: 8613, + circledast: 8859, + complement: 8705, + curlywedge: 8911, + eqslantgtr: 10902, + gtreqqless: 10892, + lessapprox: 10885, + lesseqqgtr: 10891, + lmoustache: 9136, + longmapsto: 10236, + mapstodown: 8615, + mapstoleft: 8612, + nLeftarrow: 8653, + nleftarrow: 8602, + precapprox: 10935, + rightarrow: 8594, + rmoustache: 9137, + sqsubseteq: 8849, + sqsupseteq: 8850, + subsetneqq: 10955, + succapprox: 10936, + supsetneqq: 10956, + upuparrows: 8648, + varepsilon: 949, + varnothing: 8709, + Backslash: 8726, + CenterDot: 183, + CircleDot: 8857, + Congruent: 8801, + Coproduct: 8720, + DoubleDot: 168, + DownArrow: 8595, + DownBreve: 785, + Downarrow: 8659, + HumpEqual: 8783, + LeftArrow: 8592, + LeftFloor: 8970, + Leftarrow: 8656, + LessTilde: 8818, + Mellintrf: 8499, + MinusPlus: 8723, + NotCupCap: 8813, + NotExists: 8708, + OverBrace: 9182, + PlusMinus: 177, + Therefore: 8756, + ThinSpace: 8201, + TripleDot: 8411, + UnionPlus: 8846, + backprime: 8245, + backsimeq: 8909, + bigotimes: 10754, + centerdot: 183, + checkmark: 10003, + complexes: 8450, + dotsquare: 8865, + downarrow: 8595, + gtrapprox: 10886, + gtreqless: 8923, + heartsuit: 9829, + leftarrow: 8592, + lesseqgtr: 8922, + nparallel: 8742, + nshortmid: 8740, + nsubseteq: 8840, + nsupseteq: 8841, + pitchfork: 8916, + rationals: 8474, + spadesuit: 9824, + subseteqq: 10949, + subsetneq: 8842, + supseteqq: 10950, + supsetneq: 8843, + therefore: 8756, + triangleq: 8796, + varpropto: 8733, + DDotrahd: 10513, + DotEqual: 8784, + Integral: 8747, + LessLess: 10913, + NotEqual: 8800, + NotTilde: 8769, + PartialD: 8706, + Precedes: 8826, + RightTee: 8866, + Succeeds: 8827, + SuchThat: 8715, + Superset: 8835, + Uarrocir: 10569, + UnderBar: 818, + andslope: 10840, + angmsdaa: 10664, + angmsdab: 10665, + angmsdac: 10666, + angmsdad: 10667, + angmsdae: 10668, + angmsdaf: 10669, + angmsdag: 10670, + angmsdah: 10671, + angrtvbd: 10653, + approxeq: 8778, + awconint: 8755, + backcong: 8780, + barwedge: 8965, + bbrktbrk: 9142, + bigoplus: 10753, + bigsqcup: 10758, + biguplus: 10756, + bigwedge: 8896, + boxminus: 8863, + boxtimes: 8864, + capbrcup: 10825, + circledR: 174, + circledS: 9416, + cirfnint: 10768, + clubsuit: 9827, + cupbrcap: 10824, + curlyvee: 8910, + cwconint: 8754, + doteqdot: 8785, + dotminus: 8760, + drbkarow: 10512, + dzigrarr: 10239, + elinters: 9191, + emptyset: 8709, + eqvparsl: 10725, + fpartint: 10765, + geqslant: 10878, + gesdotol: 10884, + gnapprox: 10890, + hksearow: 10533, + hkswarow: 10534, + imagline: 8464, + imagpart: 8465, + infintie: 10717, + integers: 8484, + intercal: 8890, + intlarhk: 10775, + laemptyv: 10676, + ldrushar: 10571, + leqslant: 10877, + lesdotor: 10883, + llcorner: 8990, + lnapprox: 10889, + lrcorner: 8991, + lurdshar: 10570, + mapstoup: 8613, + multimap: 8888, + naturals: 8469, + otimesas: 10806, + parallel: 8741, + plusacir: 10787, + pointint: 10773, + precneqq: 10933, + precnsim: 8936, + profalar: 9006, + profline: 8978, + profsurf: 8979, + raemptyv: 10675, + realpart: 8476, + rppolint: 10770, + rtriltri: 10702, + scpolint: 10771, + setminus: 8726, + shortmid: 8739, + smeparsl: 10724, + sqsubset: 8847, + sqsupset: 8848, + subseteq: 8838, + succneqq: 10934, + succnsim: 8937, + supseteq: 8839, + thetasym: 977, + thicksim: 8764, + timesbar: 10801, + triangle: 9653, + triminus: 10810, + trpezium: 9186, + ulcorner: 8988, + urcorner: 8989, + varkappa: 1008, + varsigma: 962, + vartheta: 977, + Because: 8757, + Cayleys: 8493, + Cconint: 8752, + Cedilla: 184, + Diamond: 8900, + DownTee: 8868, + Element: 8712, + Epsilon: 917, + Implies: 8658, + LeftTee: 8867, + NewLine: 10, + NoBreak: 8288, + NotLess: 8814, + Omicron: 927, + OverBar: 175, + Product: 8719, + UpArrow: 8593, + Uparrow: 8657, + Upsilon: 933, + alefsym: 8501, + angrtvb: 8894, + angzarr: 9084, + asympeq: 8781, + backsim: 8765, + because: 8757, + bemptyv: 10672, + between: 8812, + bigcirc: 9711, + bigodot: 10752, + bigstar: 9733, + boxplus: 8862, + ccupssm: 10832, + cemptyv: 10674, + cirscir: 10690, + coloneq: 8788, + congdot: 10861, + cudarrl: 10552, + cudarrr: 10549, + cularrp: 10557, + curarrm: 10556, + dbkarow: 10511, + ddagger: 8225, + ddotseq: 10871, + demptyv: 10673, + diamond: 8900, + digamma: 989, + dotplus: 8724, + dwangle: 10662, + epsilon: 949, + eqcolon: 8789, + equivDD: 10872, + gesdoto: 10882, + gtquest: 10876, + gtrless: 8823, + harrcir: 10568, + intprod: 10812, + isindot: 8949, + larrbfs: 10527, + larrsim: 10611, + lbrksld: 10639, + lbrkslu: 10637, + ldrdhar: 10599, + lesdoto: 10881, + lessdot: 8918, + lessgtr: 8822, + lesssim: 8818, + lotimes: 10804, + lozenge: 9674, + ltquest: 10875, + luruhar: 10598, + maltese: 10016, + minusdu: 10794, + napprox: 8777, + natural: 9838, + nearrow: 8599, + nexists: 8708, + notinva: 8713, + notinvb: 8951, + notinvc: 8950, + notniva: 8716, + notnivb: 8958, + notnivc: 8957, + npolint: 10772, + nsqsube: 8930, + nsqsupe: 8931, + nvinfin: 10718, + nwarrow: 8598, + olcross: 10683, + omicron: 959, + orderof: 8500, + orslope: 10839, + pertenk: 8241, + planckh: 8462, + pluscir: 10786, + plussim: 10790, + plustwo: 10791, + precsim: 8830, + quatint: 10774, + questeq: 8799, + rarrbfs: 10528, + rarrsim: 10612, + rbrksld: 10638, + rbrkslu: 10640, + rdldhar: 10601, + realine: 8475, + rotimes: 10805, + ruluhar: 10600, + searrow: 8600, + simplus: 10788, + simrarr: 10610, + subedot: 10947, + submult: 10945, + subplus: 10943, + subrarr: 10617, + succsim: 8831, + supdsub: 10968, + supedot: 10948, + suphsub: 10967, + suplarr: 10619, + supmult: 10946, + supplus: 10944, + swarrow: 8601, + topfork: 10970, + triplus: 10809, + tritime: 10811, + uparrow: 8593, + upsilon: 965, + uwangle: 10663, + vzigzag: 10650, + zigrarr: 8669, + Aacute: 193, + Abreve: 258, + Agrave: 192, + Assign: 8788, + Atilde: 195, + Barwed: 8966, + Bumpeq: 8782, + Cacute: 262, + Ccaron: 268, + Ccedil: 199, + Colone: 10868, + Conint: 8751, + CupCap: 8781, + Dagger: 8225, + Dcaron: 270, + DotDot: 8412, + Dstrok: 272, + Eacute: 201, + Ecaron: 282, + Egrave: 200, + Exists: 8707, + ForAll: 8704, + Gammad: 988, + Gbreve: 286, + Gcedil: 290, + HARDcy: 1066, + Hstrok: 294, + Iacute: 205, + Igrave: 204, + Itilde: 296, + Jsercy: 1032, + Kcedil: 310, + Lacute: 313, + Lambda: 923, + Lcaron: 317, + Lcedil: 315, + Lmidot: 319, + Lstrok: 321, + Nacute: 323, + Ncaron: 327, + Ncedil: 325, + Ntilde: 209, + Oacute: 211, + Odblac: 336, + Ograve: 210, + Oslash: 216, + Otilde: 213, + Otimes: 10807, + Racute: 340, + Rarrtl: 10518, + Rcaron: 344, + Rcedil: 342, + SHCHcy: 1065, + SOFTcy: 1068, + Sacute: 346, + Scaron: 352, + Scedil: 350, + Square: 9633, + Subset: 8912, + Supset: 8913, + Tcaron: 356, + Tcedil: 354, + Tstrok: 358, + Uacute: 218, + Ubreve: 364, + Udblac: 368, + Ugrave: 217, + Utilde: 360, + Vdashl: 10982, + Verbar: 8214, + Vvdash: 8874, + Yacute: 221, + Zacute: 377, + Zcaron: 381, + aacute: 225, + abreve: 259, + agrave: 224, + andand: 10837, + angmsd: 8737, + angsph: 8738, + apacir: 10863, + approx: 8776, + atilde: 227, + barvee: 8893, + barwed: 8965, + becaus: 8757, + bernou: 8492, + bigcap: 8898, + bigcup: 8899, + bigvee: 8897, + bkarow: 10509, + bottom: 8869, + bowtie: 8904, + boxbox: 10697, + bprime: 8245, + brvbar: 166, + bullet: 8226, + bumpeq: 8783, + cacute: 263, + capand: 10820, + capcap: 10827, + capcup: 10823, + capdot: 10816, + ccaron: 269, + ccedil: 231, + circeq: 8791, + cirmid: 10991, + colone: 8788, + commat: 64, + compfn: 8728, + conint: 8750, + coprod: 8720, + copysr: 8471, + cularr: 8630, + cupcap: 10822, + cupcup: 10826, + cupdot: 8845, + curarr: 8631, + curren: 164, + cylcty: 9005, + dagger: 8224, + daleth: 8504, + dcaron: 271, + dfisht: 10623, + divide: 247, + divonx: 8903, + dlcorn: 8990, + dlcrop: 8973, + dollar: 36, + drcorn: 8991, + drcrop: 8972, + dstrok: 273, + eacute: 233, + easter: 10862, + ecaron: 283, + ecolon: 8789, + egrave: 232, + egsdot: 10904, + elsdot: 10903, + emptyv: 8709, + emsp13: 8196, + emsp14: 8197, + eparsl: 10723, + eqcirc: 8790, + equals: 61, + equest: 8799, + female: 9792, + ffilig: 64259, + ffllig: 64260, + forall: 8704, + frac12: 189, + frac13: 8531, + frac14: 188, + frac15: 8533, + frac16: 8537, + frac18: 8539, + frac23: 8532, + frac25: 8534, + frac34: 190, + frac35: 8535, + frac38: 8540, + frac45: 8536, + frac56: 8538, + frac58: 8541, + frac78: 8542, + gacute: 501, + gammad: 989, + gbreve: 287, + gesdot: 10880, + gesles: 10900, + gtlPar: 10645, + gtrarr: 10616, + gtrdot: 8919, + gtrsim: 8819, + hairsp: 8202, + hamilt: 8459, + hardcy: 1098, + hearts: 9829, + hellip: 8230, + hercon: 8889, + homtht: 8763, + horbar: 8213, + hslash: 8463, + hstrok: 295, + hybull: 8259, + hyphen: 8208, + iacute: 237, + igrave: 236, + iiiint: 10764, + iinfin: 10716, + incare: 8453, + inodot: 305, + intcal: 8890, + iquest: 191, + isinsv: 8947, + itilde: 297, + jsercy: 1112, + kappav: 1008, + kcedil: 311, + kgreen: 312, + lAtail: 10523, + lacute: 314, + lagran: 8466, + lambda: 955, + langle: 10216, + larrfs: 10525, + larrhk: 8617, + larrlp: 8619, + larrpl: 10553, + larrtl: 8610, + latail: 10521, + lbrace: 123, + lbrack: 91, + lcaron: 318, + lcedil: 316, + ldquor: 8222, + lesdot: 10879, + lesges: 10899, + lfisht: 10620, + lfloor: 8970, + lharul: 10602, + llhard: 10603, + lmidot: 320, + lmoust: 9136, + loplus: 10797, + lowast: 8727, + lowbar: 95, + lparlt: 10643, + lrhard: 10605, + lsaquo: 8249, + lsquor: 8218, + lstrok: 322, + lthree: 8907, + ltimes: 8905, + ltlarr: 10614, + ltrPar: 10646, + mapsto: 8614, + marker: 9646, + mcomma: 10793, + midast: 42, + midcir: 10992, + middot: 183, + minusb: 8863, + minusd: 8760, + mnplus: 8723, + models: 8871, + mstpos: 8766, + nVDash: 8879, + nVdash: 8878, + nacute: 324, + ncaron: 328, + ncedil: 326, + nearhk: 10532, + nequiv: 8802, + nesear: 10536, + nexist: 8708, + nltrie: 8940, + nprcue: 8928, + nrtrie: 8941, + nsccue: 8929, + nsimeq: 8772, + ntilde: 241, + numero: 8470, + nvDash: 8877, + nvHarr: 10500, + nvdash: 8876, + nvlArr: 10498, + nvrArr: 10499, + nwarhk: 10531, + nwnear: 10535, + oacute: 243, + odblac: 337, + odsold: 10684, + ograve: 242, + ominus: 8854, + origof: 8886, + oslash: 248, + otilde: 245, + otimes: 8855, + parsim: 10995, + percnt: 37, + period: 46, + permil: 8240, + phmmat: 8499, + planck: 8463, + plankv: 8463, + plusdo: 8724, + plusdu: 10789, + plusmn: 177, + preceq: 10927, + primes: 8473, + prnsim: 8936, + propto: 8733, + prurel: 8880, + puncsp: 8200, + qprime: 8279, + rAtail: 10524, + racute: 341, + rangle: 10217, + rarrap: 10613, + rarrfs: 10526, + rarrhk: 8618, + rarrlp: 8620, + rarrpl: 10565, + rarrtl: 8611, + ratail: 10522, + rbrace: 125, + rbrack: 93, + rcaron: 345, + rcedil: 343, + rdquor: 8221, + rfisht: 10621, + rfloor: 8971, + rharul: 10604, + rmoust: 9137, + roplus: 10798, + rpargt: 10644, + rsaquo: 8250, + rsquor: 8217, + rthree: 8908, + rtimes: 8906, + sacute: 347, + scaron: 353, + scedil: 351, + scnsim: 8937, + searhk: 10533, + seswar: 10537, + sfrown: 8994, + shchcy: 1097, + sigmaf: 962, + sigmav: 962, + simdot: 10858, + smashp: 10803, + softcy: 1100, + solbar: 9023, + spades: 9824, + sqsube: 8849, + sqsupe: 8850, + square: 9633, + squarf: 9642, + ssetmn: 8726, + ssmile: 8995, + sstarf: 8902, + subdot: 10941, + subset: 8834, + subsim: 10951, + subsub: 10965, + subsup: 10963, + succeq: 10928, + supdot: 10942, + supset: 8835, + supsim: 10952, + supsub: 10964, + supsup: 10966, + swarhk: 10534, + swnwar: 10538, + target: 8982, + tcaron: 357, + tcedil: 355, + telrec: 8981, + there4: 8756, + thetav: 977, + thinsp: 8201, + thksim: 8764, + timesb: 8864, + timesd: 10800, + topbot: 9014, + topcir: 10993, + tprime: 8244, + tridot: 9708, + tstrok: 359, + uacute: 250, + ubreve: 365, + udblac: 369, + ufisht: 10622, + ugrave: 249, + ulcorn: 8988, + ulcrop: 8975, + urcorn: 8989, + urcrop: 8974, + utilde: 361, + vangrt: 10652, + varphi: 966, + varrho: 1009, + veebar: 8891, + vellip: 8942, + verbar: 124, + wedbar: 10847, + wedgeq: 8793, + weierp: 8472, + wreath: 8768, + xoplus: 10753, + xotime: 10754, + xsqcup: 10758, + xuplus: 10756, + xwedge: 8896, + yacute: 253, + zacute: 378, + zcaron: 382, + zeetrf: 8488, + AElig: 198, + Acirc: 194, + Alpha: 913, + Amacr: 256, + Aogon: 260, + Aring: 197, + Breve: 728, + Ccirc: 264, + Colon: 8759, + Cross: 10799, + Dashv: 10980, + Delta: 916, + Ecirc: 202, + Emacr: 274, + Eogon: 280, + Equal: 10869, + Gamma: 915, + Gcirc: 284, + Hacek: 711, + Hcirc: 292, + IJlig: 306, + Icirc: 206, + Imacr: 298, + Iogon: 302, + Iukcy: 1030, + Jcirc: 308, + Jukcy: 1028, + Kappa: 922, + OElig: 338, + Ocirc: 212, + Omacr: 332, + Omega: 937, + Prime: 8243, + RBarr: 10512, + Scirc: 348, + Sigma: 931, + THORN: 222, + TRADE: 8482, + TSHcy: 1035, + Theta: 920, + Tilde: 8764, + Ubrcy: 1038, + Ucirc: 219, + Umacr: 362, + Union: 8899, + Uogon: 370, + UpTee: 8869, + Uring: 366, + VDash: 8875, + Vdash: 8873, + Wcirc: 372, + Wedge: 8896, + Ycirc: 374, + acirc: 226, + acute: 180, + aelig: 230, + aleph: 8501, + alpha: 945, + amacr: 257, + amalg: 10815, + angle: 8736, + angrt: 8735, + angst: 8491, + aogon: 261, + aring: 229, + asymp: 8776, + awint: 10769, + bcong: 8780, + bdquo: 8222, + bepsi: 1014, + blank: 9251, + blk12: 9618, + blk14: 9617, + blk34: 9619, + block: 9608, + boxDL: 9559, + boxDR: 9556, + boxDl: 9558, + boxDr: 9555, + boxHD: 9574, + boxHU: 9577, + boxHd: 9572, + boxHu: 9575, + boxUL: 9565, + boxUR: 9562, + boxUl: 9564, + boxUr: 9561, + boxVH: 9580, + boxVL: 9571, + boxVR: 9568, + boxVh: 9579, + boxVl: 9570, + boxVr: 9567, + boxdL: 9557, + boxdR: 9554, + boxdl: 9488, + boxdr: 9484, + boxhD: 9573, + boxhU: 9576, + boxhd: 9516, + boxhu: 9524, + boxuL: 9563, + boxuR: 9560, + boxul: 9496, + boxur: 9492, + boxvH: 9578, + boxvL: 9569, + boxvR: 9566, + boxvh: 9532, + boxvl: 9508, + boxvr: 9500, + breve: 728, + bsemi: 8271, + bsime: 8909, + bsolb: 10693, + bumpE: 10926, + bumpe: 8783, + caret: 8257, + caron: 711, + ccaps: 10829, + ccirc: 265, + ccups: 10828, + cedil: 184, + check: 10003, + clubs: 9827, + colon: 58, + comma: 44, + crarr: 8629, + cross: 10007, + csube: 10961, + csupe: 10962, + ctdot: 8943, + cuepr: 8926, + cuesc: 8927, + cupor: 10821, + cuvee: 8910, + cuwed: 8911, + cwint: 8753, + dashv: 8867, + dblac: 733, + ddarr: 8650, + delta: 948, + dharl: 8643, + dharr: 8642, + diams: 9830, + disin: 8946, + doteq: 8784, + dtdot: 8945, + dtrif: 9662, + duarr: 8693, + duhar: 10607, + eDDot: 10871, + ecirc: 234, + efDot: 8786, + emacr: 275, + empty: 8709, + eogon: 281, + eplus: 10865, + epsiv: 949, + eqsim: 8770, + equiv: 8801, + erDot: 8787, + erarr: 10609, + esdot: 8784, + exist: 8707, + fflig: 64256, + filig: 64257, + fllig: 64258, + fltns: 9649, + forkv: 10969, + frasl: 8260, + frown: 8994, + gamma: 947, + gcirc: 285, + gescc: 10921, + gimel: 8503, + gneqq: 8809, + gnsim: 8935, + grave: 96, + gsime: 10894, + gsiml: 10896, + gtcir: 10874, + gtdot: 8919, + harrw: 8621, + hcirc: 293, + hoarr: 8703, + icirc: 238, + iexcl: 161, + iiint: 8749, + iiota: 8489, + ijlig: 307, + imacr: 299, + image: 8465, + imath: 305, + imped: 437, + infin: 8734, + iogon: 303, + iprod: 10812, + isinE: 8953, + isins: 8948, + isinv: 8712, + iukcy: 1110, + jcirc: 309, + jmath: 567, + jukcy: 1108, + kappa: 954, + lAarr: 8666, + lBarr: 10510, + langd: 10641, + laquo: 171, + larrb: 8676, + lbarr: 10508, + lbbrk: 10098, + lbrke: 10635, + lceil: 8968, + ldquo: 8220, + lescc: 10920, + lhard: 8637, + lharu: 8636, + lhblk: 9604, + llarr: 8647, + lltri: 9722, + lneqq: 8808, + lnsim: 8934, + loang: 10220, + loarr: 8701, + lobrk: 10214, + lopar: 10629, + lrarr: 8646, + lrhar: 8651, + lrtri: 8895, + lsime: 10893, + lsimg: 10895, + lsquo: 8216, + ltcir: 10873, + ltdot: 8918, + ltrie: 8884, + ltrif: 9666, + mDDot: 8762, + mdash: 8212, + micro: 181, + minus: 8722, + mumap: 8888, + nabla: 8711, + napos: 329, + natur: 9838, + ncong: 8775, + ndash: 8211, + neArr: 8663, + nearr: 8599, + ngsim: 8821, + nhArr: 8654, + nharr: 8622, + nhpar: 10994, + nlArr: 8653, + nlarr: 8602, + nless: 8814, + nlsim: 8820, + nltri: 8938, + notin: 8713, + notni: 8716, + nprec: 8832, + nrArr: 8655, + nrarr: 8603, + nrtri: 8939, + nsime: 8772, + nsmid: 8740, + nspar: 8742, + nsube: 8840, + nsucc: 8833, + nsupe: 8841, + numsp: 8199, + nwArr: 8662, + nwarr: 8598, + ocirc: 244, + odash: 8861, + oelig: 339, + ofcir: 10687, + ohbar: 10677, + olarr: 8634, + olcir: 10686, + oline: 8254, + omacr: 333, + omega: 969, + operp: 10681, + oplus: 8853, + orarr: 8635, + order: 8500, + ovbar: 9021, + parsl: 11005, + phone: 9742, + plusb: 8862, + pluse: 10866, + pound: 163, + prcue: 8828, + prime: 8242, + prnap: 10937, + prsim: 8830, + quest: 63, + rAarr: 8667, + rBarr: 10511, + radic: 8730, + rangd: 10642, + range: 10661, + raquo: 187, + rarrb: 8677, + rarrc: 10547, + rarrw: 8605, + ratio: 8758, + rbarr: 10509, + rbbrk: 10099, + rbrke: 10636, + rceil: 8969, + rdquo: 8221, + reals: 8477, + rhard: 8641, + rharu: 8640, + rlarr: 8644, + rlhar: 8652, + rnmid: 10990, + roang: 10221, + roarr: 8702, + robrk: 10215, + ropar: 10630, + rrarr: 8649, + rsquo: 8217, + rtrie: 8885, + rtrif: 9656, + sbquo: 8218, + sccue: 8829, + scirc: 349, + scnap: 10938, + scsim: 8831, + sdotb: 8865, + sdote: 10854, + seArr: 8664, + searr: 8600, + setmn: 8726, + sharp: 9839, + sigma: 963, + simeq: 8771, + simgE: 10912, + simlE: 10911, + simne: 8774, + slarr: 8592, + smile: 8995, + sqcap: 8851, + sqcup: 8852, + sqsub: 8847, + sqsup: 8848, + srarr: 8594, + starf: 9733, + strns: 175, + subnE: 10955, + subne: 8842, + supnE: 10956, + supne: 8843, + swArr: 8665, + swarr: 8601, + szlig: 223, + theta: 952, + thkap: 8776, + thorn: 254, + tilde: 732, + times: 215, + trade: 8482, + trisb: 10701, + tshcy: 1115, + twixt: 8812, + ubrcy: 1118, + ucirc: 251, + udarr: 8645, + udhar: 10606, + uharl: 8639, + uharr: 8638, + uhblk: 9600, + ultri: 9720, + umacr: 363, + uogon: 371, + uplus: 8846, + upsih: 978, + uring: 367, + urtri: 9721, + utdot: 8944, + utrif: 9652, + uuarr: 8648, + vBarv: 10985, + vDash: 8872, + varpi: 982, + vdash: 8866, + veeeq: 8794, + vltri: 8882, + vprop: 8733, + vrtri: 8883, + wcirc: 373, + wedge: 8743, + xcirc: 9711, + xdtri: 9661, + xhArr: 10234, + xharr: 10231, + xlArr: 10232, + xlarr: 10229, + xodot: 10752, + xrArr: 10233, + xrarr: 10230, + xutri: 9651, + ycirc: 375, + Aopf: 120120, + Ascr: 119964, + Auml: 196, + Barv: 10983, + Beta: 914, + Bopf: 120121, + Bscr: 8492, + CHcy: 1063, + COPY: 169, + Cdot: 266, + Copf: 8450, + Cscr: 119966, + DJcy: 1026, + DScy: 1029, + DZcy: 1039, + Darr: 8609, + Dopf: 120123, + Dscr: 119967, + Edot: 278, + Eopf: 120124, + Escr: 8496, + Esim: 10867, + Euml: 203, + Fopf: 120125, + Fscr: 8497, + GJcy: 1027, + Gdot: 288, + Gopf: 120126, + Gscr: 119970, + Hopf: 8461, + Hscr: 8459, + IEcy: 1045, + IOcy: 1025, + Idot: 304, + Iopf: 120128, + Iota: 921, + Iscr: 8464, + Iuml: 207, + Jopf: 120129, + Jscr: 119973, + KHcy: 1061, + KJcy: 1036, + Kopf: 120130, + Kscr: 119974, + LJcy: 1033, + Lang: 10218, + Larr: 8606, + Lopf: 120131, + Lscr: 8466, + Mopf: 120132, + Mscr: 8499, + NJcy: 1034, + Nopf: 8469, + Nscr: 119977, + Oopf: 120134, + Oscr: 119978, + Ouml: 214, + Popf: 8473, + Pscr: 119979, + QUOT: 34, + Qopf: 8474, + Qscr: 119980, + Rang: 10219, + Rarr: 8608, + Ropf: 8477, + Rscr: 8475, + SHcy: 1064, + Sopf: 120138, + Sqrt: 8730, + Sscr: 119982, + Star: 8902, + TScy: 1062, + Topf: 120139, + Tscr: 119983, + Uarr: 8607, + Uopf: 120140, + Upsi: 978, + Uscr: 119984, + Uuml: 220, + Vbar: 10987, + Vert: 8214, + Vopf: 120141, + Vscr: 119985, + Wopf: 120142, + Wscr: 119986, + Xopf: 120143, + Xscr: 119987, + YAcy: 1071, + YIcy: 1031, + YUcy: 1070, + Yopf: 120144, + Yscr: 119988, + Yuml: 376, + ZHcy: 1046, + Zdot: 379, + Zeta: 918, + Zopf: 8484, + Zscr: 119989, + andd: 10844, + andv: 10842, + ange: 10660, + aopf: 120146, + apid: 8779, + apos: 39, + ascr: 119990, + auml: 228, + bNot: 10989, + bbrk: 9141, + beta: 946, + beth: 8502, + bnot: 8976, + bopf: 120147, + boxH: 9552, + boxV: 9553, + boxh: 9472, + boxv: 9474, + bscr: 119991, + bsim: 8765, + bsol: 92, + bull: 8226, + bump: 8782, + cdot: 267, + cent: 162, + chcy: 1095, + cirE: 10691, + circ: 710, + cire: 8791, + comp: 8705, + cong: 8773, + copf: 120148, + copy: 169, + cscr: 119992, + csub: 10959, + csup: 10960, + dArr: 8659, + dHar: 10597, + darr: 8595, + dash: 8208, + diam: 8900, + djcy: 1106, + dopf: 120149, + dscr: 119993, + dscy: 1109, + dsol: 10742, + dtri: 9663, + dzcy: 1119, + eDot: 8785, + ecir: 8790, + edot: 279, + emsp: 8195, + ensp: 8194, + eopf: 120150, + epar: 8917, + epsi: 1013, + escr: 8495, + esim: 8770, + euml: 235, + euro: 8364, + excl: 33, + flat: 9837, + fnof: 402, + fopf: 120151, + fork: 8916, + fscr: 119995, + gdot: 289, + geqq: 8807, + gjcy: 1107, + gnap: 10890, + gneq: 10888, + gopf: 120152, + gscr: 8458, + gsim: 8819, + gtcc: 10919, + hArr: 8660, + half: 189, + harr: 8596, + hbar: 8463, + hopf: 120153, + hscr: 119997, + iecy: 1077, + imof: 8887, + iocy: 1105, + iopf: 120154, + iota: 953, + iscr: 119998, + isin: 8712, + iuml: 239, + jopf: 120155, + jscr: 119999, + khcy: 1093, + kjcy: 1116, + kopf: 120156, + kscr: 120000, + lArr: 8656, + lHar: 10594, + lang: 10216, + larr: 8592, + late: 10925, + lcub: 123, + ldca: 10550, + ldsh: 8626, + leqq: 8806, + ljcy: 1113, + lnap: 10889, + lneq: 10887, + lopf: 120157, + lozf: 10731, + lpar: 40, + lscr: 120001, + lsim: 8818, + lsqb: 91, + ltcc: 10918, + ltri: 9667, + macr: 175, + male: 9794, + malt: 10016, + mlcp: 10971, + mldr: 8230, + mopf: 120158, + mscr: 120002, + nbsp: 160, + ncap: 10819, + ncup: 10818, + ngeq: 8817, + ngtr: 8815, + nisd: 8954, + njcy: 1114, + nldr: 8229, + nleq: 8816, + nmid: 8740, + nopf: 120159, + npar: 8742, + nscr: 120003, + nsim: 8769, + nsub: 8836, + nsup: 8837, + ntgl: 8825, + ntlg: 8824, + oast: 8859, + ocir: 8858, + odiv: 10808, + odot: 8857, + ogon: 731, + oint: 8750, + omid: 10678, + oopf: 120160, + opar: 10679, + ordf: 170, + ordm: 186, + oror: 10838, + oscr: 8500, + osol: 8856, + ouml: 246, + para: 182, + part: 8706, + perp: 8869, + phiv: 966, + plus: 43, + popf: 120161, + prap: 10935, + prec: 8826, + prnE: 10933, + prod: 8719, + prop: 8733, + pscr: 120005, + qint: 10764, + qopf: 120162, + qscr: 120006, + quot: 34, + rArr: 8658, + rHar: 10596, + race: 10714, + rang: 10217, + rarr: 8594, + rcub: 125, + rdca: 10551, + rdsh: 8627, + real: 8476, + rect: 9645, + rhov: 1009, + ring: 730, + ropf: 120163, + rpar: 41, + rscr: 120007, + rsqb: 93, + rtri: 9657, + scap: 10936, + scnE: 10934, + sdot: 8901, + sect: 167, + semi: 59, + sext: 10038, + shcy: 1096, + sime: 8771, + simg: 10910, + siml: 10909, + smid: 8739, + smte: 10924, + solb: 10692, + sopf: 120164, + spar: 8741, + squf: 9642, + sscr: 120008, + star: 9734, + subE: 10949, + sube: 8838, + succ: 8827, + sung: 9834, + sup1: 185, + sup2: 178, + sup3: 179, + supE: 10950, + supe: 8839, + tbrk: 9140, + tdot: 8411, + tint: 8749, + toea: 10536, + topf: 120165, + tosa: 10537, + trie: 8796, + tscr: 120009, + tscy: 1094, + uArr: 8657, + uHar: 10595, + uarr: 8593, + uopf: 120166, + upsi: 965, + uscr: 120010, + utri: 9653, + uuml: 252, + vArr: 8661, + vBar: 10984, + varr: 8597, + vert: 124, + vopf: 120167, + vscr: 120011, + wopf: 120168, + wscr: 120012, + xcap: 8898, + xcup: 8899, + xmap: 10236, + xnis: 8955, + xopf: 120169, + xscr: 120013, + xvee: 8897, + yacy: 1103, + yicy: 1111, + yopf: 120170, + yscr: 120014, + yucy: 1102, + yuml: 255, + zdot: 380, + zeta: 950, + zhcy: 1078, + zopf: 120171, + zscr: 120015, + zwnj: 8204, + AMP: 38, + Acy: 1040, + Afr: 120068, + And: 10835, + Bcy: 1041, + Bfr: 120069, + Cap: 8914, + Cfr: 8493, + Chi: 935, + Cup: 8915, + Dcy: 1044, + Del: 8711, + Dfr: 120071, + Dot: 168, + ENG: 330, + ETH: 208, + Ecy: 1069, + Efr: 120072, + Eta: 919, + Fcy: 1060, + Ffr: 120073, + Gcy: 1043, + Gfr: 120074, + Hat: 94, + Hfr: 8460, + Icy: 1048, + Ifr: 8465, + Int: 8748, + Jcy: 1049, + Jfr: 120077, + Kcy: 1050, + Kfr: 120078, + Lcy: 1051, + Lfr: 120079, + Lsh: 8624, + Map: 10501, + Mcy: 1052, + Mfr: 120080, + Ncy: 1053, + Nfr: 120081, + Not: 10988, + Ocy: 1054, + Ofr: 120082, + Pcy: 1055, + Pfr: 120083, + Phi: 934, + Psi: 936, + Qfr: 120084, + REG: 174, + Rcy: 1056, + Rfr: 8476, + Rho: 929, + Rsh: 8625, + Scy: 1057, + Sfr: 120086, + Sub: 8912, + Sum: 8721, + Sup: 8913, + Tab: 9, + Tau: 932, + Tcy: 1058, + Tfr: 120087, + Ucy: 1059, + Ufr: 120088, + Vcy: 1042, + Vee: 8897, + Vfr: 120089, + Wfr: 120090, + Xfr: 120091, + Ycy: 1067, + Yfr: 120092, + Zcy: 1047, + Zfr: 8488, + acd: 8767, + acy: 1072, + afr: 120094, + amp: 38, + and: 8743, + ang: 8736, + apE: 10864, + ape: 8778, + ast: 42, + bcy: 1073, + bfr: 120095, + bot: 8869, + cap: 8745, + cfr: 120096, + chi: 967, + cir: 9675, + cup: 8746, + dcy: 1076, + deg: 176, + dfr: 120097, + die: 168, + div: 247, + dot: 729, + ecy: 1101, + efr: 120098, + egs: 10902, + ell: 8467, + els: 10901, + eng: 331, + eta: 951, + eth: 240, + fcy: 1092, + ffr: 120099, + gEl: 10892, + gap: 10886, + gcy: 1075, + gel: 8923, + geq: 8805, + ges: 10878, + gfr: 120100, + ggg: 8921, + glE: 10898, + gla: 10917, + glj: 10916, + gnE: 8809, + gne: 10888, + hfr: 120101, + icy: 1080, + iff: 8660, + ifr: 120102, + int: 8747, + jcy: 1081, + jfr: 120103, + kcy: 1082, + kfr: 120104, + lEg: 10891, + lap: 10885, + lat: 10923, + lcy: 1083, + leg: 8922, + leq: 8804, + les: 10877, + lfr: 120105, + lgE: 10897, + lnE: 8808, + lne: 10887, + loz: 9674, + lrm: 8206, + lsh: 8624, + map: 8614, + mcy: 1084, + mfr: 120106, + mho: 8487, + mid: 8739, + nap: 8777, + ncy: 1085, + nfr: 120107, + nge: 8817, + ngt: 8815, + nis: 8956, + niv: 8715, + nle: 8816, + nlt: 8814, + not: 172, + npr: 8832, + nsc: 8833, + num: 35, + ocy: 1086, + ofr: 120108, + ogt: 10689, + ohm: 8486, + olt: 10688, + ord: 10845, + orv: 10843, + par: 8741, + pcy: 1087, + pfr: 120109, + phi: 966, + piv: 982, + prE: 10931, + pre: 10927, + psi: 968, + qfr: 120110, + rcy: 1088, + reg: 174, + rfr: 120111, + rho: 961, + rlm: 8207, + rsh: 8625, + scE: 10932, + sce: 10928, + scy: 1089, + sfr: 120112, + shy: 173, + sim: 8764, + smt: 10922, + sol: 47, + squ: 9633, + sub: 8834, + sum: 8721, + sup: 8835, + tau: 964, + tcy: 1090, + tfr: 120113, + top: 8868, + ucy: 1091, + ufr: 120114, + uml: 168, + vcy: 1074, + vee: 8744, + vfr: 120115, + wfr: 120116, + xfr: 120117, + ycy: 1099, + yen: 165, + yfr: 120118, + zcy: 1079, + zfr: 120119, + zwj: 8205, + DD: 8517, + GT: 62, + Gg: 8921, + Gt: 8811, + Im: 8465, + LT: 60, + Ll: 8920, + Lt: 8810, + Mu: 924, + Nu: 925, + Or: 10836, + Pi: 928, + Pr: 10939, + Re: 8476, + Sc: 10940, + Xi: 926, + ac: 8766, + af: 8289, + ap: 8776, + dd: 8518, + ee: 8519, + eg: 10906, + el: 10905, + gE: 8807, + ge: 8805, + gg: 8811, + gl: 8823, + gt: 62, + ic: 8291, + ii: 8520, + in: 8712, + it: 8290, + lE: 8806, + le: 8804, + lg: 8822, + ll: 8810, + lt: 60, + mp: 8723, + mu: 956, + ne: 8800, + ni: 8715, + nu: 957, + oS: 9416, + or: 8744, + pi: 960, + pm: 177, + pr: 8826, + rx: 8478, + sc: 8827, + wp: 8472, + wr: 8768, + xi: 958, + }; + + const windows_1252 = [ + 8364, + 129, + 8218, + 402, + 8222, + 8230, + 8224, + 8225, + 710, + 8240, + 352, + 8249, + 338, + 141, + 381, + 143, + 144, + 8216, + 8217, + 8220, + 8221, + 8226, + 8211, + 8212, + 732, + 8482, + 353, + 8250, + 339, + 157, + 382, + 376, + ]; + const entity_pattern = new RegExp(`&(#?(?:x[\\w\\d]+|\\d+|${Object.keys(entities).join('|')}))(?:;|\\b)`, 'g'); + function decode_character_references(html) { + return html.replace(entity_pattern, (match, entity) => { + let code; + // Handle named entities + if (entity[0] !== '#') { + code = entities[entity]; + } + else if (entity[1] === 'x') { + code = parseInt(entity.substring(2), 16); + } + else { + code = parseInt(entity.substring(1), 10); + } + if (!code) { + return match; + } + return String.fromCodePoint(validate_code(code)); + }); + } + const NUL = 0; + // some code points are verboten. If we were inserting HTML, the browser would replace the illegal + // code points with alternatives in some cases - since we're bypassing that mechanism, we need + // to replace them ourselves + // + // Source: http://en.wikipedia.org/wiki/Character_encodings_in_HTML#Illegal_characters + function validate_code(code) { + // line feed becomes generic whitespace + if (code === 10) { + return 32; + } + // ASCII range. (Why someone would use HTML entities for ASCII characters I don't know, but...) + if (code < 128) { + return code; + } + // code points 128-159 are dealt with leniently by browsers, but they're incorrect. We need + // to correct the mistake or we'll end up with missing € signs and so on + if (code <= 159) { + return windows_1252[code - 128]; + } + // basic multilingual plane + if (code < 55296) { + return code; + } + // UTF-16 surrogate halves + if (code <= 57343) { + return NUL; + } + // rest of the basic multilingual plane + if (code <= 65535) { + return code; + } + // supplementary multilingual plane 0x10000 - 0x1ffff + if (code >= 65536 && code <= 131071) { + return code; + } + // supplementary ideographic plane 0x20000 - 0x2ffff + if (code >= 131072 && code <= 196607) { + return code; + } + return NUL; + } + + // Adapted from https://github.com/acornjs/acorn/blob/6584815dca7440e00de841d1dad152302fdd7ca5/src/tokenize.js + // Reproduced under MIT License https://github.com/acornjs/acorn/blob/master/LICENSE + function full_char_code_at(str, i) { + const code = str.charCodeAt(i); + if (code <= 0xd7ff || code >= 0xe000) + return code; + const next = str.charCodeAt(i + 1); + return (code << 10) + next - 0x35fdc00; + } + + const globals = new Set([ + 'alert', + 'Array', + 'Boolean', + 'confirm', + 'console', + 'Date', + 'decodeURI', + 'decodeURIComponent', + 'document', + 'encodeURI', + 'encodeURIComponent', + 'Error', + 'EvalError', + 'Infinity', + 'InternalError', + 'Intl', + 'isFinite', + 'isNaN', + 'JSON', + 'Map', + 'Math', + 'NaN', + 'Number', + 'Object', + 'parseFloat', + 'parseInt', + 'process', + 'Promise', + 'prompt', + 'RangeError', + 'ReferenceError', + 'RegExp', + 'Set', + 'String', + 'SyntaxError', + 'TypeError', + 'undefined', + 'URIError', + 'window' + ]); + const reserved = new Set([ + 'arguments', + 'await', + 'break', + 'case', + 'catch', + 'class', + 'const', + 'continue', + 'debugger', + 'default', + 'delete', + 'do', + 'else', + 'enum', + 'eval', + 'export', + 'extends', + 'false', + 'finally', + 'for', + 'function', + 'if', + 'implements', + 'import', + 'in', + 'instanceof', + 'interface', + 'let', + 'new', + 'null', + 'package', + 'private', + 'protected', + 'public', + 'return', + 'static', + 'super', + 'switch', + 'this', + 'throw', + 'true', + 'try', + 'typeof', + 'var', + 'void', + 'while', + 'with', + 'yield', + ]); + const void_element_names = /^(?:area|base|br|col|command|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)$/; + function is_void(name) { + return void_element_names.test(name) || name.toLowerCase() === '!doctype'; + } + function is_valid(str) { + let i = 0; + while (i < str.length) { + const code = full_char_code_at(str, i); + if (!(i === 0 ? isIdentifierStart : isIdentifierChar)(code, true)) + return false; + i += code <= 0xffff ? 1 : 2; + } + return true; + } + function quote_name_if_necessary(name) { + if (!is_valid(name)) + return `"${name}"`; + return name; + } + function quote_prop_if_necessary(name) { + if (!is_valid(name)) + return `["${name}"]`; + return `.${name}`; + } + function sanitize(name) { + return name + .replace(/[^a-zA-Z0-9_]+/g, '_') + .replace(/^_/, '') + .replace(/_$/, '') + .replace(/^[0-9]/, '_$&'); + } + + function fuzzymatch(name, names) { + const set = new FuzzySet(names); + const matches = set.get(name); + return matches && matches[0] && matches[0][0] > 0.7 ? matches[0][1] : null; + } + // adapted from https://github.com/Glench/fuzzyset.js/blob/master/lib/fuzzyset.js + // BSD Licensed + const GRAM_SIZE_LOWER = 2; + const GRAM_SIZE_UPPER = 3; + // return an edit distance from 0 to 1 + function _distance(str1, str2) { + if (str1 === null && str2 === null) + throw 'Trying to compare two null values'; + if (str1 === null || str2 === null) + return 0; + str1 = String(str1); + str2 = String(str2); + const distance = levenshtein(str1, str2); + if (str1.length > str2.length) { + return 1 - distance / str1.length; + } + else { + return 1 - distance / str2.length; + } + } + // helper functions + function levenshtein(str1, str2) { + const current = []; + let prev; + let value; + for (let i = 0; i <= str2.length; i++) { + for (let j = 0; j <= str1.length; j++) { + if (i && j) { + if (str1.charAt(j - 1) === str2.charAt(i - 1)) { + value = prev; + } + else { + value = Math.min(current[j], current[j - 1], prev) + 1; + } + } + else { + value = i + j; + } + prev = current[j]; + current[j] = value; + } + } + return current.pop(); + } + const non_word_regex = /[^\w, ]+/; + function iterate_grams(value, gram_size = 2) { + const simplified = '-' + value.toLowerCase().replace(non_word_regex, '') + '-'; + const len_diff = gram_size - simplified.length; + const results = []; + if (len_diff > 0) { + for (let i = 0; i < len_diff; ++i) { + value += '-'; + } + } + for (let i = 0; i < simplified.length - gram_size + 1; ++i) { + results.push(simplified.slice(i, i + gram_size)); + } + return results; + } + function gram_counter(value, gram_size = 2) { + // return an object where key=gram, value=number of occurrences + const result = {}; + const grams = iterate_grams(value, gram_size); + let i = 0; + for (i; i < grams.length; ++i) { + if (grams[i] in result) { + result[grams[i]] += 1; + } + else { + result[grams[i]] = 1; + } + } + return result; + } + function sort_descending(a, b) { + return b[0] - a[0]; + } + class FuzzySet { + constructor(arr) { + this.exact_set = {}; + this.match_dict = {}; + this.items = {}; + // initialization + for (let i = GRAM_SIZE_LOWER; i < GRAM_SIZE_UPPER + 1; ++i) { + this.items[i] = []; + } + // add all the items to the set + for (let i = 0; i < arr.length; ++i) { + this.add(arr[i]); + } + } + add(value) { + const normalized_value = value.toLowerCase(); + if (normalized_value in this.exact_set) { + return false; + } + let i = GRAM_SIZE_LOWER; + for (i; i < GRAM_SIZE_UPPER + 1; ++i) { + this._add(value, i); + } + } + _add(value, gram_size) { + const normalized_value = value.toLowerCase(); + const items = this.items[gram_size] || []; + const index = items.length; + items.push(0); + const gram_counts = gram_counter(normalized_value, gram_size); + let sum_of_square_gram_counts = 0; + let gram; + let gram_count; + for (gram in gram_counts) { + gram_count = gram_counts[gram]; + sum_of_square_gram_counts += Math.pow(gram_count, 2); + if (gram in this.match_dict) { + this.match_dict[gram].push([index, gram_count]); + } + else { + this.match_dict[gram] = [[index, gram_count]]; + } + } + const vector_normal = Math.sqrt(sum_of_square_gram_counts); + items[index] = [vector_normal, normalized_value]; + this.items[gram_size] = items; + this.exact_set[normalized_value] = value; + } + get(value) { + const normalized_value = value.toLowerCase(); + const result = this.exact_set[normalized_value]; + if (result) { + return [[1, result]]; + } + let results = []; + // start with high gram size and if there are no results, go to lower gram sizes + for (let gram_size = GRAM_SIZE_UPPER; gram_size >= GRAM_SIZE_LOWER; --gram_size) { + results = this.__get(value, gram_size); + if (results) { + return results; + } + } + return null; + } + __get(value, gram_size) { + const normalized_value = value.toLowerCase(); + const matches = {}; + const gram_counts = gram_counter(normalized_value, gram_size); + const items = this.items[gram_size]; + let sum_of_square_gram_counts = 0; + let gram; + let gram_count; + let i; + let index; + let other_gram_count; + for (gram in gram_counts) { + gram_count = gram_counts[gram]; + sum_of_square_gram_counts += Math.pow(gram_count, 2); + if (gram in this.match_dict) { + for (i = 0; i < this.match_dict[gram].length; ++i) { + index = this.match_dict[gram][i][0]; + other_gram_count = this.match_dict[gram][i][1]; + if (index in matches) { + matches[index] += gram_count * other_gram_count; + } + else { + matches[index] = gram_count * other_gram_count; + } + } + } + } + const vector_normal = Math.sqrt(sum_of_square_gram_counts); + let results = []; + let match_score; + // build a results list of [score, str] + for (const match_index in matches) { + match_score = matches[match_index]; + results.push([ + match_score / (vector_normal * items[match_index][0]), + items[match_index][1], + ]); + } + results.sort(sort_descending); + let new_results = []; + const end_index = Math.min(50, results.length); + // truncate somewhat arbitrarily to 50 + for (let i = 0; i < end_index; ++i) { + new_results.push([ + _distance(results[i][1], normalized_value), + results[i][1], + ]); + } + results = new_results; + results.sort(sort_descending); + new_results = []; + for (let i = 0; i < results.length; ++i) { + if (results[i][0] == results[0][0]) { + new_results.push([results[i][0], this.exact_set[results[i][1]]]); + } + } + return new_results; + } + } + + function list$1(items, conjunction = 'or') { + if (items.length === 1) + return items[0]; + return `${items.slice(0, -1).join(', ')} ${conjunction} ${items[items.length - 1]}`; + } + + // eslint-disable-next-line no-useless-escape + const valid_tag_name = /^\!?[a-zA-Z]{1,}:?[a-zA-Z0-9\-]*/; + const meta_tags = new Map([ + ['svelte:head', 'Head'], + ['svelte:options', 'Options'], + ['svelte:window', 'Window'], + ['svelte:body', 'Body'] + ]); + const valid_meta_tags = Array.from(meta_tags.keys()).concat('svelte:self', 'svelte:component'); + const specials = new Map([ + [ + 'script', + { + read: read_script, + property: 'js', + }, + ], + [ + 'style', + { + read: read_style, + property: 'css', + }, + ], + ]); + // eslint-disable-next-line no-useless-escape + const SELF = /^svelte:self(?=[\s\/>])/; + // eslint-disable-next-line no-useless-escape + const COMPONENT = /^svelte:component(?=[\s\/>])/; + // based on http://developers.whatwg.org/syntax.html#syntax-tag-omission + const disallowed_contents = new Map([ + ['li', new Set(['li'])], + ['dt', new Set(['dt', 'dd'])], + ['dd', new Set(['dt', 'dd'])], + [ + 'p', + new Set('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(' ')), + ], + ['rt', new Set(['rt', 'rp'])], + ['rp', new Set(['rt', 'rp'])], + ['optgroup', new Set(['optgroup'])], + ['option', new Set(['option', 'optgroup'])], + ['thead', new Set(['tbody', 'tfoot'])], + ['tbody', new Set(['tbody', 'tfoot'])], + ['tfoot', new Set(['tbody'])], + ['tr', new Set(['tr', 'tbody'])], + ['td', new Set(['td', 'th', 'tr'])], + ['th', new Set(['td', 'th', 'tr'])], + ]); + function parent_is_head(stack) { + let i = stack.length; + while (i--) { + const { type } = stack[i]; + if (type === 'Head') + return true; + if (type === 'Element' || type === 'InlineComponent') + return false; + } + return false; + } + function tag(parser) { + const start = parser.index++; + let parent = parser.current(); + if (parser.eat('!--')) { + const data = parser.read_until(/-->/); + parser.eat('-->', true, 'comment was left open, expected -->'); + parser.current().children.push({ + start, + end: parser.index, + type: 'Comment', + data, + }); + return; + } + const is_closing_tag = parser.eat('/'); + const name = read_tag_name(parser); + if (meta_tags.has(name)) { + const slug = meta_tags.get(name).toLowerCase(); + if (is_closing_tag) { + if ((name === 'svelte:window' || name === 'svelte:body') && + parser.current().children.length) { + parser.error({ + code: `invalid-${name.slice(7)}-content`, + message: `<${name}> cannot have children` + }, parser.current().children[0].start); + } + } + else { + if (name in parser.meta_tags) { + parser.error({ + code: `duplicate-${slug}`, + message: `A component can only have one <${name}> tag` + }, start); + } + if (parser.stack.length > 1) { + parser.error({ + code: `invalid-${slug}-placement`, + message: `<${name}> tags cannot be inside elements or blocks` + }, start); + } + parser.meta_tags[name] = true; + } + } + const type = meta_tags.has(name) + ? meta_tags.get(name) + : (/[A-Z]/.test(name[0]) || name === 'svelte:self' || name === 'svelte:component') ? 'InlineComponent' + : name === 'title' && parent_is_head(parser.stack) ? 'Title' + : name === 'slot' && !parser.customElement ? 'Slot' : 'Element'; + const element = { + start, + end: null, + type, + name, + attributes: [], + children: [], + }; + parser.allow_whitespace(); + if (is_closing_tag) { + if (is_void(name)) { + parser.error({ + code: `invalid-void-content`, + message: `<${name}> is a void element and cannot have children, or a closing tag` + }, start); + } + parser.eat('>', true); + // close any elements that don't have their own closing tags, e.g.

+ while (parent.name !== name) { + if (parent.type !== 'Element') + parser.error({ + code: `invalid-closing-tag`, + message: ` attempted to close an element that was not open` + }, start); + parent.end = start; + parser.stack.pop(); + parent = parser.current(); + } + parent.end = parser.index; + parser.stack.pop(); + return; + } + else if (disallowed_contents.has(parent.name)) { + // can this be a child of the parent element, or does it implicitly + // close it, like `
  • one
  • two`? + if (disallowed_contents.get(parent.name).has(name)) { + parent.end = start; + parser.stack.pop(); + } + } + const unique_names = new Set(); + let attribute; + while ((attribute = read_attribute(parser, unique_names))) { + element.attributes.push(attribute); + parser.allow_whitespace(); + } + if (name === 'svelte:component') { + const index = element.attributes.findIndex(attr => attr.type === 'Attribute' && attr.name === 'this'); + if (!~index) { + parser.error({ + code: `missing-component-definition`, + message: ` must have a 'this' attribute` + }, start); + } + const definition = element.attributes.splice(index, 1)[0]; + if (definition.value === true || definition.value.length !== 1 || definition.value[0].type === 'Text') { + parser.error({ + code: `invalid-component-definition`, + message: `invalid component definition` + }, definition.start); + } + element.expression = definition.value[0].expression; + } + // special cases – top-level ', true); + element.end = parser.index; + } + else if (name === 'style') { + // special case + const start = parser.index; + const data = parser.read_until(/<\/style>/); + const end = parser.index; + element.children.push({ start, end, type: 'Text', data }); + parser.eat('', true); + } + else { + parser.stack.push(element); + } + } + function read_tag_name(parser) { + const start = parser.index; + if (parser.read(SELF)) { + // check we're inside a block, otherwise this + // will cause infinite recursion + let i = parser.stack.length; + let legal = false; + while (i--) { + const fragment = parser.stack[i]; + if (fragment.type === 'IfBlock' || fragment.type === 'EachBlock') { + legal = true; + break; + } + } + if (!legal) { + parser.error({ + code: `invalid-self-placement`, + message: ` components can only exist inside if-blocks or each-blocks` + }, start); + } + return 'svelte:self'; + } + if (parser.read(COMPONENT)) + return 'svelte:component'; + const name = parser.read_until(/(\s|\/|>)/); + if (meta_tags.has(name)) + return name; + if (name.startsWith('svelte:')) { + const match = fuzzymatch(name.slice(7), valid_meta_tags); + let message = `Valid tag names are ${list$1(valid_meta_tags)}`; + if (match) + message += ` (did you mean '${match}'?)`; + parser.error({ + code: 'invalid-tag-name', + message + }, start); + } + if (!valid_tag_name.test(name)) { + parser.error({ + code: `invalid-tag-name`, + message: `Expected valid tag name` + }, start); + } + return name; + } + function read_attribute(parser, unique_names) { + const start = parser.index; + if (parser.eat('{')) { + parser.allow_whitespace(); + if (parser.eat('...')) { + const expression = read_expression(parser); + parser.allow_whitespace(); + parser.eat('}', true); + return { + start, + end: parser.index, + type: 'Spread', + expression + }; + } + else { + const value_start = parser.index; + const name = parser.read_identifier(); + parser.allow_whitespace(); + parser.eat('}', true); + return { + start, + end: parser.index, + type: 'Attribute', + name, + value: [{ + start: value_start, + end: value_start + name.length, + type: 'AttributeShorthand', + expression: { + start: value_start, + end: value_start + name.length, + type: 'Identifier', + name + } + }] + }; + } + } + // eslint-disable-next-line no-useless-escape + const name = parser.read_until(/[\s=\/>"']/); + if (!name) + return null; + let end = parser.index; + parser.allow_whitespace(); + const colon_index = name.indexOf(':'); + const type = colon_index !== -1 && get_directive_type(name.slice(0, colon_index)); + if (unique_names.has(name)) { + parser.error({ + code: `duplicate-attribute`, + message: 'Attributes need to be unique' + }, start); + } + if (type !== "EventHandler") { + unique_names.add(name); + } + let value = true; + if (parser.eat('=')) { + parser.allow_whitespace(); + value = read_attribute_value(parser); + end = parser.index; + } + else if (parser.match_regex(/["']/)) { + parser.error({ + code: `unexpected-token`, + message: `Expected =` + }, parser.index); + } + if (type) { + const [directive_name, ...modifiers] = name.slice(colon_index + 1).split('|'); + if (type === 'Ref') { + parser.error({ + code: `invalid-ref-directive`, + message: `The ref directive is no longer supported — use \`bind:this={${directive_name}}\` instead` + }, start); + } + if (value[0]) { + if (value.length > 1 || value[0].type === 'Text') { + parser.error({ + code: `invalid-directive-value`, + message: `Directive value must be a JavaScript expression enclosed in curly braces` + }, value[0].start); + } + } + const directive = { + start, + end, + type, + name: directive_name, + modifiers, + expression: (value[0] && value[0].expression) || null + }; + if (type === 'Transition') { + const direction = name.slice(0, colon_index); + directive.intro = direction === 'in' || direction === 'transition'; + directive.outro = direction === 'out' || direction === 'transition'; + } + if (!directive.expression && (type === 'Binding' || type === 'Class')) { + directive.expression = { + start: directive.start + colon_index + 1, + end: directive.end, + type: 'Identifier', + name: directive.name + }; + } + return directive; + } + return { + start, + end, + type: 'Attribute', + name, + value, + }; + } + function get_directive_type(name) { + if (name === 'use') + return 'Action'; + if (name === 'animate') + return 'Animation'; + if (name === 'bind') + return 'Binding'; + if (name === 'class') + return 'Class'; + if (name === 'on') + return 'EventHandler'; + if (name === 'let') + return 'Let'; + if (name === 'ref') + return 'Ref'; + if (name === 'in' || name === 'out' || name === 'transition') + return 'Transition'; + } + function read_attribute_value(parser) { + const quote_mark = parser.eat(`'`) ? `'` : parser.eat(`"`) ? `"` : null; + const regex = (quote_mark === `'` ? /'/ : + quote_mark === `"` ? /"/ : + /(\/>|[\s"'=<>`])/); + const value = read_sequence(parser, () => !!parser.match_regex(regex)); + if (quote_mark) + parser.index += 1; + return value; + } + function read_sequence(parser, done) { + let current_chunk = { + start: parser.index, + end: null, + type: 'Text', + raw: '', + data: null + }; + function flush() { + if (current_chunk.raw) { + current_chunk.data = decode_character_references(current_chunk.raw); + current_chunk.end = parser.index; + chunks.push(current_chunk); + } + } + const chunks = []; + while (parser.index < parser.template.length) { + const index = parser.index; + if (done()) { + flush(); + return chunks; + } + else if (parser.eat('{')) { + flush(); + parser.allow_whitespace(); + const expression = read_expression(parser); + parser.allow_whitespace(); + parser.eat('}', true); + chunks.push({ + start: index, + end: parser.index, + type: 'MustacheTag', + expression, + }); + current_chunk = { + start: parser.index, + end: null, + type: 'Text', + raw: '', + data: null + }; + } + else { + current_chunk.raw += parser.template[parser.index++]; + } + } + parser.error({ + code: `unexpected-eof`, + message: `Unexpected end of input` + }); + } + + function error_on_assignment_pattern(parser) { + if (parser.eat('=')) { + parser.error({ + code: 'invalid-assignment-pattern', + message: 'Assignment patterns are not supported' + }, parser.index - 1); + } + } + function error_on_rest_pattern_not_last(parser) { + parser.error({ + code: 'rest-pattern-not-last', + message: 'Rest destructuring expected to be last' + }, parser.index); + } + function read_context(parser) { + const context = { + start: parser.index, + end: null, + type: null + }; + if (parser.eat('[')) { + context.type = 'ArrayPattern'; + context.elements = []; + do { + parser.allow_whitespace(); + const lastContext = context.elements[context.elements.length - 1]; + if (lastContext && lastContext.type === 'RestIdentifier') { + error_on_rest_pattern_not_last(parser); + } + if (parser.template[parser.index] === ',') { + context.elements.push(null); + } + else { + context.elements.push(read_context(parser)); + parser.allow_whitespace(); + } + } while (parser.eat(',')); + error_on_assignment_pattern(parser); + parser.eat(']', true); + context.end = parser.index; + } + else if (parser.eat('{')) { + context.type = 'ObjectPattern'; + context.properties = []; + do { + parser.allow_whitespace(); + if (parser.eat('...')) { + parser.allow_whitespace(); + const start = parser.index; + const name = parser.read_identifier(); + const key = { + start, + end: parser.index, + type: 'Identifier', + name + }; + const property = { + start, + end: parser.index, + type: 'Property', + kind: 'rest', + shorthand: true, + key, + value: key + }; + context.properties.push(property); + parser.allow_whitespace(); + if (parser.eat(',')) { + parser.error({ + code: `comma-after-rest`, + message: `Comma is not permitted after the rest element` + }, parser.index - 1); + } + break; + } + const start = parser.index; + const name = parser.read_identifier(); + const key = { + start, + end: parser.index, + type: 'Identifier', + name + }; + parser.allow_whitespace(); + const value = parser.eat(':') + ? (parser.allow_whitespace(), read_context(parser)) + : key; + const property = { + start, + end: value.end, + type: 'Property', + kind: 'init', + shorthand: value.type === 'Identifier' && value.name === name, + key, + value + }; + context.properties.push(property); + parser.allow_whitespace(); + } while (parser.eat(',')); + error_on_assignment_pattern(parser); + parser.eat('}', true); + context.end = parser.index; + } + else if (parser.eat('...')) { + const name = parser.read_identifier(); + if (name) { + context.type = 'RestIdentifier'; + context.end = parser.index; + context.name = name; + } + else { + parser.error({ + code: 'invalid-context', + message: 'Expected a rest pattern' + }); + } + } + else { + const name = parser.read_identifier(); + if (name) { + context.type = 'Identifier'; + context.end = parser.index; + context.name = name; + } + else { + parser.error({ + code: 'invalid-context', + message: 'Expected a name, array pattern or object pattern' + }); + } + error_on_assignment_pattern(parser); + } + return context; + } + + const whitespace = /[ \t\r\n]/; + const dimensions = /^(?:offset|client)(?:Width|Height)$/; + + function trim_start(str) { + let i = 0; + while (whitespace.test(str[i])) + i += 1; + return str.slice(i); + } + function trim_end(str) { + let i = str.length; + while (whitespace.test(str[i - 1])) + i -= 1; + return str.slice(0, i); + } + + function trim_whitespace(block, trim_before, trim_after) { + if (!block.children || block.children.length === 0) + return; // AwaitBlock + const first_child = block.children[0]; + const last_child = block.children[block.children.length - 1]; + if (first_child.type === 'Text' && trim_before) { + first_child.data = trim_start(first_child.data); + if (!first_child.data) + block.children.shift(); + } + if (last_child.type === 'Text' && trim_after) { + last_child.data = trim_end(last_child.data); + if (!last_child.data) + block.children.pop(); + } + if (block.else) { + trim_whitespace(block.else, trim_before, trim_after); + } + if (first_child.elseif) { + trim_whitespace(first_child, trim_before, trim_after); + } + } + function mustache(parser) { + const start = parser.index; + parser.index += 1; + parser.allow_whitespace(); + // {/if}, {/each} or {/await} + if (parser.eat('/')) { + let block = parser.current(); + let expected; + if (block.type === 'ElseBlock' || block.type === 'PendingBlock' || block.type === 'ThenBlock' || block.type === 'CatchBlock') { + block.end = start; + parser.stack.pop(); + block = parser.current(); + expected = 'await'; + } + if (block.type === 'IfBlock') { + expected = 'if'; + } + else if (block.type === 'EachBlock') { + expected = 'each'; + } + else if (block.type === 'AwaitBlock') { + expected = 'await'; + } + else { + parser.error({ + code: `unexpected-block-close`, + message: `Unexpected block closing tag` + }); + } + parser.eat(expected, true); + parser.allow_whitespace(); + parser.eat('}', true); + while (block.elseif) { + block.end = parser.index; + parser.stack.pop(); + block = parser.current(); + if (block.else) { + block.else.end = start; + } + } + // strip leading/trailing whitespace as necessary + const char_before = parser.template[block.start - 1]; + const char_after = parser.template[parser.index]; + const trim_before = !char_before || whitespace.test(char_before); + const trim_after = !char_after || whitespace.test(char_after); + trim_whitespace(block, trim_before, trim_after); + block.end = parser.index; + parser.stack.pop(); + } + else if (parser.eat(':else')) { + if (parser.eat('if')) { + parser.error({ + code: 'invalid-elseif', + message: `'elseif' should be 'else if'` + }); + } + parser.allow_whitespace(); + // :else if + if (parser.eat('if')) { + const block = parser.current(); + if (block.type !== 'IfBlock') + parser.error({ + code: `invalid-elseif-placement`, + message: 'Cannot have an {:else if ...} block outside an {#if ...} block' + }); + parser.require_whitespace(); + const expression = read_expression(parser); + parser.allow_whitespace(); + parser.eat('}', true); + block.else = { + start: parser.index, + end: null, + type: 'ElseBlock', + children: [ + { + start: parser.index, + end: null, + type: 'IfBlock', + elseif: true, + expression, + children: [], + }, + ], + }; + parser.stack.push(block.else.children[0]); + } + // :else + else { + const block = parser.current(); + if (block.type !== 'IfBlock' && block.type !== 'EachBlock') { + parser.error({ + code: `invalid-else-placement`, + message: 'Cannot have an {:else} block outside an {#if ...} or {#each ...} block' + }); + } + parser.allow_whitespace(); + parser.eat('}', true); + block.else = { + start: parser.index, + end: null, + type: 'ElseBlock', + children: [], + }; + parser.stack.push(block.else); + } + } + else if (parser.eat(':then')) { + // TODO DRY out this and the next section + const pending_block = parser.current(); + if (pending_block.type === 'PendingBlock') { + pending_block.end = start; + parser.stack.pop(); + const await_block = parser.current(); + if (!parser.eat('}')) { + parser.require_whitespace(); + await_block.value = parser.read_identifier(); + parser.allow_whitespace(); + parser.eat('}', true); + } + const then_block = { + start, + end: null, + type: 'ThenBlock', + children: [], + skip: false + }; + await_block.then = then_block; + parser.stack.push(then_block); + } + } + else if (parser.eat(':catch')) { + const then_block = parser.current(); + if (then_block.type === 'ThenBlock') { + then_block.end = start; + parser.stack.pop(); + const await_block = parser.current(); + if (!parser.eat('}')) { + parser.require_whitespace(); + await_block.error = parser.read_identifier(); + parser.allow_whitespace(); + parser.eat('}', true); + } + const catch_block = { + start, + end: null, + type: 'CatchBlock', + children: [], + skip: false + }; + await_block.catch = catch_block; + parser.stack.push(catch_block); + } + } + else if (parser.eat('#')) { + // {#if foo}, {#each foo} or {#await foo} + let type; + if (parser.eat('if')) { + type = 'IfBlock'; + } + else if (parser.eat('each')) { + type = 'EachBlock'; + } + else if (parser.eat('await')) { + type = 'AwaitBlock'; + } + else { + parser.error({ + code: `expected-block-type`, + message: `Expected if, each or await` + }); + } + parser.require_whitespace(); + const expression = read_expression(parser); + const block = type === 'AwaitBlock' ? + { + start, + end: null, + type, + expression, + value: null, + error: null, + pending: { + start: null, + end: null, + type: 'PendingBlock', + children: [], + skip: true + }, + then: { + start: null, + end: null, + type: 'ThenBlock', + children: [], + skip: true + }, + catch: { + start: null, + end: null, + type: 'CatchBlock', + children: [], + skip: true + }, + } : + { + start, + end: null, + type, + expression, + children: [], + }; + parser.allow_whitespace(); + // {#each} blocks must declare a context – {#each list as item} + if (type === 'EachBlock') { + parser.eat('as', true); + parser.require_whitespace(); + block.context = read_context(parser); + parser.allow_whitespace(); + if (parser.eat(',')) { + parser.allow_whitespace(); + block.index = parser.read_identifier(); + if (!block.index) + parser.error({ + code: `expected-name`, + message: `Expected name` + }); + parser.allow_whitespace(); + } + if (parser.eat('(')) { + parser.allow_whitespace(); + block.key = read_expression(parser); + parser.allow_whitespace(); + parser.eat(')', true); + parser.allow_whitespace(); + } + } + const await_block_shorthand = type === 'AwaitBlock' && parser.eat('then'); + if (await_block_shorthand) { + parser.require_whitespace(); + block.value = parser.read_identifier(); + parser.allow_whitespace(); + } + parser.eat('}', true); + parser.current().children.push(block); + parser.stack.push(block); + if (type === 'AwaitBlock') { + let child_block; + if (await_block_shorthand) { + block.then.skip = false; + child_block = block.then; + } + else { + block.pending.skip = false; + child_block = block.pending; + } + child_block.start = parser.index; + parser.stack.push(child_block); + } + } + else if (parser.eat('@html')) { + // {@html content} tag + parser.require_whitespace(); + const expression = read_expression(parser); + parser.allow_whitespace(); + parser.eat('}', true); + parser.current().children.push({ + start, + end: parser.index, + type: 'RawMustacheTag', + expression, + }); + } + else if (parser.eat('@debug')) { + let identifiers; + // Implies {@debug} which indicates "debug all" + if (parser.read(/\s*}/)) { + identifiers = []; + } + else { + const expression = read_expression(parser); + identifiers = expression.type === 'SequenceExpression' + ? expression.expressions + : [expression]; + identifiers.forEach(node => { + if (node.type !== 'Identifier') { + parser.error({ + code: 'invalid-debug-args', + message: '{@debug ...} arguments must be identifiers, not arbitrary expressions' + }, node.start); + } + }); + parser.allow_whitespace(); + parser.eat('}', true); + } + parser.current().children.push({ + start, + end: parser.index, + type: 'DebugTag', + identifiers + }); + } + else { + const expression = read_expression(parser); + parser.allow_whitespace(); + parser.eat('}', true); + parser.current().children.push({ + start, + end: parser.index, + type: 'MustacheTag', + expression, + }); + } + } + + function text(parser) { + const start = parser.index; + let data = ''; + while (parser.index < parser.template.length && + !parser.match('<') && + !parser.match('{')) { + data += parser.template[parser.index++]; + } + const node = { + start, + end: parser.index, + type: 'Text', + raw: data, + data: decode_character_references(data), + }; + parser.current().children.push(node); + } + + function fragment(parser) { + if (parser.match('<')) { + return tag; + } + if (parser.match('{')) { + return mustache; + } + return text; + } + + function getLocator(source, options) { + if (options === void 0) { options = {}; } + var offsetLine = options.offsetLine || 0; + var offsetColumn = options.offsetColumn || 0; + var originalLines = source.split('\n'); + var start = 0; + var lineRanges = originalLines.map(function (line, i) { + var end = start + line.length + 1; + var range = { start: start, end: end, line: i }; + start = end; + return range; + }); + var i = 0; + function rangeContains(range, index) { + return range.start <= index && index < range.end; + } + function getLocation(range, index) { + return { line: offsetLine + range.line, column: offsetColumn + index - range.start, character: index }; + } + function locate(search, startIndex) { + if (typeof search === 'string') { + search = source.indexOf(search, startIndex || 0); + } + var range = lineRanges[i]; + var d = search >= range.end ? 1 : -1; + while (range) { + if (rangeContains(range, search)) + return getLocation(range, search); + i += d; + range = lineRanges[i]; + } + } + return locate; + } + function locate(source, search, options) { + if (typeof options === 'number') { + throw new Error('locate takes a { startIndex, offsetLine, offsetColumn } object as the third argument'); + } + return getLocator(source, options)(search, options && options.startIndex); + } + + function tabs_to_spaces(str) { + return str.replace(/^\t+/, match => match.split('\t').join(' ')); + } + function get_code_frame(source, line, column) { + const lines = source.split('\n'); + const frame_start = Math.max(0, line - 2); + const frame_end = Math.min(line + 3, lines.length); + const digits = String(frame_end + 1).length; + return lines + .slice(frame_start, frame_end) + .map((str, i) => { + const isErrorLine = frame_start + i === line; + let line_num = String(i + frame_start + 1); + while (line_num.length < digits) + line_num = ` ${line_num}`; + if (isErrorLine) { + const indicator = repeat(' ', digits + 2 + tabs_to_spaces(str.slice(0, column)).length) + '^'; + return `${line_num}: ${tabs_to_spaces(str)}\n${indicator}`; + } + return `${line_num}: ${tabs_to_spaces(str)}`; + }) + .join('\n'); + } + + class CompileError extends Error { + toString() { + return `${this.message} (${this.start.line}:${this.start.column})\n${this.frame}`; + } + } + function error$1(message, props) { + const error = new CompileError(message); + error.name = props.name; + const start = locate(props.source, props.start, { offsetLine: 1 }); + const end = locate(props.source, props.end || props.start, { offsetLine: 1 }); + error.code = props.code; + error.start = start; + error.end = end; + error.pos = props.start; + error.filename = props.filename; + error.frame = get_code_frame(props.source, start.line - 1, start.column); + throw error; + } + + class Parser$2 { + constructor(template, options) { + this.index = 0; + this.stack = []; + this.css = []; + this.js = []; + this.meta_tags = {}; + if (typeof template !== 'string') { + throw new TypeError('Template must be a string'); + } + this.template = template.replace(/\s+$/, ''); + this.filename = options.filename; + this.customElement = options.customElement; + this.html = { + start: null, + end: null, + type: 'Fragment', + children: [], + }; + this.stack.push(this.html); + let state = fragment; + while (this.index < this.template.length) { + state = state(this) || fragment; + } + if (this.stack.length > 1) { + const current = this.current(); + const type = current.type === 'Element' ? `<${current.name}>` : 'Block'; + const slug = current.type === 'Element' ? 'element' : 'block'; + this.error({ + code: `unclosed-${slug}`, + message: `${type} was left open` + }, current.start); + } + if (state !== fragment) { + this.error({ + code: `unexpected-eof`, + message: 'Unexpected end of input' + }); + } + if (this.html.children.length) { + let start = this.html.children[0] && this.html.children[0].start; + while (/\s/.test(template[start])) + start += 1; + let end = this.html.children[this.html.children.length - 1] && this.html.children[this.html.children.length - 1].end; + while (/\s/.test(template[end - 1])) + end -= 1; + this.html.start = start; + this.html.end = end; + } + else { + this.html.start = this.html.end = null; + } + } + current() { + return this.stack[this.stack.length - 1]; + } + acorn_error(err) { + this.error({ + code: `parse-error`, + message: err.message.replace(/ \(\d+:\d+\)$/, '') + }, err.pos); + } + error({ code, message }, index = this.index) { + error$1(message, { + name: 'ParseError', + code, + source: this.template, + start: index, + filename: this.filename + }); + } + eat(str, required, message) { + if (this.match(str)) { + this.index += str.length; + return true; + } + if (required) { + this.error({ + code: `unexpected-${this.index === this.template.length ? 'eof' : 'token'}`, + message: message || `Expected ${str}` + }); + } + return false; + } + match(str) { + return this.template.slice(this.index, this.index + str.length) === str; + } + match_regex(pattern) { + const match = pattern.exec(this.template.slice(this.index)); + if (!match || match.index !== 0) + return null; + return match[0]; + } + allow_whitespace() { + while (this.index < this.template.length && + whitespace.test(this.template[this.index])) { + this.index++; + } + } + read(pattern) { + const result = this.match_regex(pattern); + if (result) + this.index += result.length; + return result; + } + read_identifier() { + const start = this.index; + let i = this.index; + const code = full_char_code_at(this.template, i); + if (!isIdentifierStart(code, true)) + return null; + i += code <= 0xffff ? 1 : 2; + while (i < this.template.length) { + const code = full_char_code_at(this.template, i); + if (!isIdentifierChar(code, true)) + break; + i += code <= 0xffff ? 1 : 2; + } + const identifier = this.template.slice(this.index, this.index = i); + if (reserved.has(identifier)) { + this.error({ + code: `unexpected-reserved-word`, + message: `'${identifier}' is a reserved word in JavaScript and cannot be used here` + }, start); + } + return identifier; + } + read_until(pattern) { + if (this.index >= this.template.length) + this.error({ + code: `unexpected-eof`, + message: 'Unexpected end of input' + }); + const start = this.index; + const match = pattern.exec(this.template.slice(start)); + if (match) { + this.index = start + match.index; + return this.template.slice(start, this.index); + } + this.index = this.template.length; + return this.template.slice(start); + } + require_whitespace() { + if (!whitespace.test(this.template[this.index])) { + this.error({ + code: `missing-whitespace`, + message: `Expected whitespace` + }); + } + this.allow_whitespace(); + } + } + function parse$2(template, options = {}) { + const parser = new Parser$2(template, options); + // TODO we way want to allow multiple \`;`} + + @init(this, { target: this.shadowRoot }, ${definition}, create_fragment, ${not_equal}, ${prop_names}); + + ${dev_props_check} + + if (options) { + if (options.target) { + @insert(options.target, this, options.anchor); + } + + ${(props.length > 0 || uses_props) && deindent ` + if (options.props) { + this.$set(options.props); + @flush(); + }`} + } + } + + ${props.length > 0 && deindent ` + static get observedAttributes() { + return ${JSON.stringify(props.map(x => x.export_name))}; + }`} + + ${body.length > 0 && body.join('\n\n')} + } + `); + if (component.tag != null) { + builder.add_block(deindent ` + @_customElements.define("${component.tag}", ${name}); + `); + } + } + else { + const superclass = options.dev ? 'SvelteComponentDev' : 'SvelteComponent'; + builder.add_block(deindent ` + class ${name} extends @${superclass} { + constructor(options) { + super(${options.dev && `options`}); + ${should_add_css && `if (!@_document.getElementById("${component.stylesheet.id}-style")) ${add_css}();`} + @init(this, options, ${definition}, create_fragment, ${not_equal}, ${prop_names}); + + ${dev_props_check} + } + + ${body.length > 0 && body.join('\n\n')} + } + `); + } + return builder.toString(); + } + + function AwaitBlock (node, renderer, options) { + renderer.append('${(function(__value) { if(@is_promise(__value)) return `'); + renderer.render(node.pending.children, options); + renderer.append('`; return function(' + (node.value || '') + ') { return `'); + renderer.render(node.then.children, options); + const snippet = snip(node.expression); + renderer.append(`\`;}(__value);}(${snippet})) }`); + } + + function Comment$1 (node, renderer, options) { + if (options.preserveComments) { + renderer.append(``); + } + } + + function DebugTag (node, renderer, options) { + if (!options.dev) + return; + const filename = options.filename || null; + const { line, column } = options.locate(node.start + 1); + const obj = node.expressions.length === 0 + ? `{}` + : `{ ${node.expressions + .map(e => e.node.name) + .join(', ')} }`; + const str = '${@debug(' + `${filename && stringify(filename)}, ${line}, ${column}, ${obj})}`; + renderer.append(str); + } + + function EachBlock (node, renderer, options) { + const snippet = snip(node.expression); + const { start, end } = node.context_node; + const ctx = node.index + ? `([✂${start}-${end}✂], ${node.index})` + : `([✂${start}-${end}✂])`; + const open = `\${${node.else ? `${snippet}.length ? ` : ''}@each(${snippet}, ${ctx} => \``; + renderer.append(open); + renderer.render(node.children, options); + const close = `\`)`; + renderer.append(close); + if (node.else) { + renderer.append(` : \``); + renderer.render(node.else.children, options); + renderer.append(`\``); + } + renderer.append('}'); + } + + function get_slot_scope(lets) { + if (lets.length === 0) + return ''; + return `{ ${lets.map(l => l.value ? `${l.name}: ${l.value}` : l.name).join(', ')} }`; + } + + // source: https://gist.github.com/ArjanSchouten/0b8574a6ad7f5065a5e7 + const boolean_attributes = new Set([ + 'async', + 'autocomplete', + 'autofocus', + 'autoplay', + 'border', + 'challenge', + 'checked', + 'compact', + 'contenteditable', + 'controls', + 'default', + 'defer', + 'disabled', + 'formnovalidate', + 'frameborder', + 'hidden', + 'indeterminate', + 'ismap', + 'loop', + 'multiple', + 'muted', + 'nohref', + 'noresize', + 'noshade', + 'novalidate', + 'nowrap', + 'open', + 'readonly', + 'required', + 'reversed', + 'scoped', + 'scrolling', + 'seamless', + 'selected', + 'sortable', + 'spellcheck', + 'translate' + ]); + function Element (node, renderer, options) { + let opening_tag = `<${node.name}`; + // awkward special case + let node_contents; + let value; + const contenteditable = (node.name !== 'textarea' && + node.name !== 'input' && + node.attributes.some((attribute) => attribute.name === 'contenteditable')); + const slot = node.get_static_attribute_value('slot'); + const component = node.find_nearest(/InlineComponent/); + if (slot && component) { + const slot = node.attributes.find((attribute) => attribute.name === 'slot'); + const slot_name = slot.chunks[0].data; + const target = renderer.targets[renderer.targets.length - 1]; + target.slot_stack.push(slot_name); + target.slots[slot_name] = ''; + const lets = node.lets; + const seen = new Set(lets.map(l => l.name)); + component.lets.forEach(l => { + if (!seen.has(l.name)) + lets.push(l); + }); + options.slot_scopes.set(slot_name, get_slot_scope(node.lets)); + } + const class_expression = node.classes.map((class_directive) => { + const { expression, name } = class_directive; + const snippet = expression ? snip(expression) : `ctx${quote_prop_if_necessary(name)}`; + return `${snippet} ? "${name}" : ""`; + }).join(', '); + let add_class_attribute = class_expression ? true : false; + if (node.attributes.find(attr => attr.is_spread)) { + // TODO dry this out + const args = []; + node.attributes.forEach(attribute => { + if (attribute.is_spread) { + args.push(snip(attribute.expression)); + } + else { + if (attribute.name === 'value' && node.name === 'textarea') { + node_contents = stringify_attribute(attribute, true); + } + else if (attribute.is_true) { + args.push(`{ ${quote_name_if_necessary(attribute.name)}: true }`); + } + else if (boolean_attributes.has(attribute.name) && + attribute.chunks.length === 1 && + attribute.chunks[0].type !== 'Text') { + // a boolean attribute with one non-Text chunk + args.push(`{ ${quote_name_if_necessary(attribute.name)}: ${snip(attribute.chunks[0])} }`); + } + else { + args.push(`{ ${quote_name_if_necessary(attribute.name)}: \`${stringify_attribute(attribute, true)}\` }`); + } + } + }); + opening_tag += "${@spread([" + args.join(', ') + "])}"; + } + else { + node.attributes.forEach((attribute) => { + if (attribute.type !== 'Attribute') + return; + if (attribute.name === 'value' && node.name === 'textarea') { + node_contents = stringify_attribute(attribute, true); + } + else if (attribute.is_true) { + opening_tag += ` ${attribute.name}`; + } + else if (boolean_attributes.has(attribute.name) && + attribute.chunks.length === 1 && + attribute.chunks[0].type !== 'Text') { + // a boolean attribute with one non-Text chunk + opening_tag += '${' + snip(attribute.chunks[0]) + ' ? " ' + attribute.name + '" : "" }'; + } + else if (attribute.name === 'class' && class_expression) { + add_class_attribute = false; + opening_tag += ` class="\${[\`${stringify_attribute(attribute, true)}\`, ${class_expression}].join(' ').trim() }"`; + } + else if (attribute.chunks.length === 1 && attribute.chunks[0].type !== 'Text') { + const { name } = attribute; + const snippet = snip(attribute.chunks[0]); + opening_tag += '${(v => v == null ? "" : ` ' + name + '="${@escape(' + snippet + ')}"`)(' + snippet + ')}'; + } + else { + opening_tag += ` ${attribute.name}="${stringify_attribute(attribute, true)}"`; + } + }); + } + node.bindings.forEach(binding => { + const { name, expression } = binding; + if (binding.is_readonly) { + return; + } + if (name === 'group') ; + else if (contenteditable && (name === 'textContent' || name === 'innerHTML')) { + node_contents = snip(expression); + value = name === 'textContent' ? '@escape($$value)' : '$$value'; + } + else if (binding.name === 'value' && node.name === 'textarea') { + const snippet = snip(expression); + node_contents = '${(' + snippet + ') || ""}'; + } + else { + const snippet = snip(expression); + opening_tag += '${@add_attribute("' + name + '", ' + snippet + ')}'; + } + }); + if (add_class_attribute) { + opening_tag += `\${@add_classes([${class_expression}].join(' ').trim())}`; + } + opening_tag += '>'; + renderer.append(opening_tag); + if (node_contents !== undefined) { + if (contenteditable) { + renderer.append('${($$value => $$value === void 0 ? `'); + renderer.render(node.children, options); + renderer.append('` : ' + value + ')(' + node_contents + ')}'); + } + else { + renderer.append(node_contents); + } + } + else { + renderer.render(node.children, options); + } + if (!is_void(node.name)) { + renderer.append(``); + } + } + + function Head (node, renderer, options) { + renderer.append('${($$result.head += `'); + renderer.render(node.children, options); + renderer.append('`, "")}'); + } + + function HtmlTag (node, renderer, _options) { + renderer.append('${' + snip(node.expression) + '}'); + } + + function IfBlock (node, renderer, options) { + const snippet = snip(node.expression); + renderer.append('${ ' + snippet + ' ? `'); + renderer.render(node.children, options); + renderer.append('` : `'); + if (node.else) { + renderer.render(node.else.children, options); + } + renderer.append('` }'); + } + + function stringify_attribute$1(chunk) { + if (chunk.type === 'Text') { + return escape_template(escape(chunk.data)); + } + return '${@escape(' + snip(chunk) + ')}'; + } + function get_attribute_value(attribute) { + if (attribute.is_true) + return `true`; + if (attribute.chunks.length === 0) + return `''`; + if (attribute.chunks.length === 1) { + const chunk = attribute.chunks[0]; + if (chunk.type === 'Text') { + return stringify(chunk.data); + } + return snip(chunk); + } + return '`' + attribute.chunks.map(stringify_attribute$1).join('') + '`'; + } + function InlineComponent (node, renderer, options) { + const binding_props = []; + const binding_fns = []; + node.bindings.forEach(binding => { + renderer.has_bindings = true; + // TODO this probably won't work for contextual bindings + const snippet = snip(binding.expression); + binding_props.push(`${binding.name}: ${snippet}`); + binding_fns.push(`${binding.name}: $$value => { ${snippet} = $$value; $$settled = false }`); + }); + const uses_spread = node.attributes.find(attr => attr.is_spread); + let props; + if (uses_spread) { + props = `@_Object.assign(${node.attributes + .map(attribute => { + if (attribute.is_spread) { + return snip(attribute.expression); + } + else { + return `{ ${attribute.name}: ${get_attribute_value(attribute)} }`; + } + }) + .concat(binding_props.map(p => `{ ${p} }`)) + .join(', ')})`; + } + else { + props = stringify_props(node.attributes + .map(attribute => `${attribute.name}: ${get_attribute_value(attribute)}`) + .concat(binding_props)); + } + const bindings = stringify_props(binding_fns); + const expression = (node.name === 'svelte:self' + ? '__svelte:self__' // TODO conflict-proof this + : node.name === 'svelte:component' + ? `((${snip(node.expression)}) || @missing_component)` + : node.name); + const slot_fns = []; + if (node.children.length) { + const target = { + slots: { default: '' }, + slot_stack: ['default'] + }; + renderer.targets.push(target); + const slot_scopes = new Map(); + slot_scopes.set('default', get_slot_scope(node.lets)); + renderer.render(node.children, Object.assign({}, options, { + slot_scopes + })); + Object.keys(target.slots).forEach(name => { + const slot_scope = slot_scopes.get(name); + slot_fns.push(`${quote_name_if_necessary(name)}: (${slot_scope}) => \`${target.slots[name]}\``); + }); + renderer.targets.pop(); + } + const slots = stringify_props(slot_fns); + renderer.append(`\${@validate_component(${expression}, '${node.name}').$$render($$result, ${props}, ${bindings}, ${slots})}`); + } + + function Slot (node, renderer, options) { + const prop = quote_prop_if_necessary(node.slot_name); + const slot_data = get_slot_data(node.values, true); + const arg = slot_data.length > 0 ? `{ ${slot_data.join(', ')} }` : ''; + renderer.append(`\${$$slots${prop} ? $$slots${prop}(${arg}) : \``); + renderer.render(node.children, options); + renderer.append(`\`}`); + } + + function Tag$1 (node, renderer, _options) { + const snippet = snip(node.expression); + renderer.append(node.parent && + node.parent.type === 'Element' && + node.parent.name === 'style' + ? '${' + snippet + '}' + : '${@escape(' + snippet + ')}'); + } + + function Text (node, renderer, _options) { + let text = node.data; + if (!node.parent || + node.parent.type !== 'Element' || + (node.parent.name !== 'script' && node.parent.name !== 'style')) { + // unless this Text node is inside a ` : match; + }); + } + for (const fn of style) { + source = await replace_async(source, /([^]*?)<\/style>/gi, async (match, attributes = '', content) => { + const processed = await fn({ + content, + attributes: parse_attributes(attributes), + filename + }); + if (processed && processed.dependencies) + dependencies.push(...processed.dependencies); + return processed ? `${processed.code}` : match; + }); + } + return { + // TODO return separated output, in future version where svelte.compile supports it: + // style: { code: styleCode, map: styleMap }, + // script { code: scriptCode, map: scriptMap }, + // markup { code: markupCode, map: markupMap }, + code: source, + dependencies: [...new Set(dependencies)], + toString() { + return source; + } + }; + } + + const VERSION = '3.6.7'; + + exports.VERSION = VERSION; + exports.compile = compile; + exports.parse = parse$2; + exports.preprocess = preprocess; + exports.walk = walk; + + Object.defineProperty(exports, '__esModule', { value: true }); + +})); +//# sourceMappingURL=compiler.js.map diff --git a/compiler.js.map b/compiler.js.map new file mode 100644 index 000000000000..4512ffcfeae7 --- /dev/null +++ b/compiler.js.map @@ -0,0 +1 @@ +{"version":3,"file":"compiler.js","sources":["src/runtime/internal/utils.ts","src/compiler/Stats.ts","node_modules/acorn/dist/acorn.mjs","node_modules/acorn-dynamic-import/lib/index.js","src/compiler/parse/acorn.ts","src/compiler/parse/read/expression.ts","src/compiler/utils/repeat.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","node_modules/estree-walker/src/estree-walker.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/read/context.ts","src/compiler/utils/patterns.ts","src/compiler/utils/trim.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/utils/deindent.ts","src/compiler/compile/utils/stringify.ts","src/compiler/compile/utils/CodeBuilder.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/Body.ts","src/compiler/compile/utils/add_to_set.ts","src/compiler/compile/render_dom/wrappers/DebugTag.ts","src/compiler/compile/utils/tail.ts","src/compiler/compile/render_dom/wrappers/EachBlock.ts","src/compiler/compile/render_dom/wrappers/Element/fix_attribute_casing.ts","src/compiler/utils/namespaces.ts","src/compiler/compile/render_dom/wrappers/Element/Attribute.ts","src/compiler/compile/render_dom/wrappers/Element/StyleAttribute.ts","src/compiler/compile/utils/unwrap_parens.ts","src/compiler/compile/utils/get_object.ts","src/compiler/compile/utils/flatten_reference.ts","src/compiler/compile/render_dom/wrappers/Element/Binding.ts","src/compiler/compile/render_dom/wrappers/shared/add_event_handlers.ts","src/compiler/compile/render_dom/wrappers/shared/add_actions.ts","src/compiler/compile/render_dom/wrappers/shared/get_context_merger.ts","src/compiler/compile/render_dom/wrappers/shared/bind_this.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/utils/stringify_props.ts","src/compiler/compile/render_dom/wrappers/shared/is_dynamic.ts","src/compiler/compile/render_dom/wrappers/InlineComponent/index.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/utils/snip.ts","src/compiler/compile/utils/stringify_attribute.ts","src/compiler/compile/utils/get_slot_data.ts","src/compiler/compile/render_dom/wrappers/Slot.ts","src/compiler/compile/render_dom/wrappers/Text.ts","src/compiler/compile/render_dom/wrappers/Title.ts","src/compiler/compile/render_dom/wrappers/Window.ts","src/compiler/compile/render_dom/wrappers/Fragment.ts","src/compiler/compile/render_dom/Renderer.ts","node_modules/is-reference/dist/is-reference.es.js","src/compiler/compile/utils/scope.ts","src/compiler/utils/nodes_match.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_slot_scope.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","node_modules/sourcemap-codec/dist/sourcemap-codec.es.js","node_modules/magic-string/dist/magic-string.es.js","src/compiler/compile/create_module.ts","src/compiler/compile/css/gather_possible_values.ts","src/compiler/compile/css/Selector.ts","src/compiler/compile/css/Stylesheet.ts","src/compiler/config.ts","src/compiler/compile/nodes/shared/Node.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/Expression.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/Action.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/utils/indentation.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(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(value: any): value is PromiseLike {\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 validate_store(store, name) {\n\tif (!store || 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(component, store, callback) {\n\tconst unsub = store.subscribe(callback);\n\n\tcomponent.$$.on_destroy.push(unsub.unsubscribe\n\t\t? () => unsub.unsubscribe()\n\t\t: unsub);\n}\n\nexport function create_slot(definition, ctx, fn) {\n\tif (definition) {\n\t\tconst slot_ctx = get_slot_context(definition, ctx, fn);\n\t\treturn definition[0](slot_ctx);\n\t}\n}\n\nexport function get_slot_context(definition, ctx, fn) {\n\treturn definition[1]\n\t\t? assign({}, assign(ctx.$$scope.ctx, definition[1](fn ? fn(ctx) : {})))\n\t\t: ctx.$$scope.ctx;\n}\n\nexport function get_slot_changes(definition, ctx, changed, fn) {\n\treturn definition[1]\n\t\t? assign({}, assign(ctx.$$scope.changed || {}, definition[1](fn ? fn(changed) : {})))\n\t\t: ctx.$$scope.changed || {};\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 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","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 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`.\n\nvar nonASCIIidentifierStartChars = \"aab5bac0-d6d8-f6f8-\\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-\\u08bd\\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\\u0d05-\\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-\\u31ba\\u31f0-\\u31ff\\u3400-\\u4db5\\u4e00-\\u9fef\\ua000-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7bf\\ua7c2-\\ua7c6\\ua7f7-\\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-\\uab67\\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\\u200db7\\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\\u0b56\\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\\u0d82\\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\\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\\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,477,28,11,0,9,21,155,22,13,52,76,44,33,24,27,35,30,0,12,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,0,33,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,230,43,117,63,32,0,161,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,270,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,754,9486,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,42710,42,4148,12,221,3,5761,15,7472,3104,541];\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,525,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,4,9,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,232,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,19723,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,792487,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 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\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 9.\n ecmaVersion: 9,\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 : 5]);\n var reserved = \"\";\n if (!options.allowReserved) {\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\") { return true }\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 if (this.options.ecmaVersion >= 6) {\n node.sourceType = this.options.sourceType;\n }\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) // '('\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) {\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.eat(types.braceR)) {\n var stmt = this.parseStatement(null);\n node.body.push(stmt);\n }\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.eat(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 node.body = this.finishNode(classBody, \"ClassBody\");\n this.strict = oldStrict;\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 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 \"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 \"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 && refDestructuringErrors.doubleProto < 0) { 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, oldShorthandAssign = -1;\n if (refDestructuringErrors) {\n oldParenAssign = refDestructuringErrors.parenthesizedAssign;\n oldTrailingComma = refDestructuringErrors.trailingComma;\n oldShorthandAssign = refDestructuringErrors.shorthandAssign;\n refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = refDestructuringErrors.shorthandAssign = -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) { DestructuringErrors.call(refDestructuringErrors); }\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 if (oldShorthandAssign > -1) { refDestructuringErrors.shorthandAssign = oldShorthandAssign; }\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 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);\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 var skipArrowSubscripts = expr.type === \"ArrowFunctionExpression\" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== \")\";\n if (this.checkExpressionErrors(refDestructuringErrors) || skipArrowSubscripts) { 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() && this.input.slice(base.start, base.end) === \"async\";\n while (true) {\n var element = this.parseSubscript(base, startPos, startLoc, noCalls, maybeAsyncArrow);\n if (element === base || element.type === \"ArrowFunctionExpression\") { return element }\n base = element;\n }\n};\n\npp$3.parseSubscript = function(base, startPos, startLoc, noCalls, maybeAsyncArrow) {\n var computed = this.eat(types.bracketL);\n if (computed || this.eat(types.dot)) {\n var node = this.startNodeAt(startPos, startLoc);\n node.object = base;\n node.property = computed ? this.parseExpression() : this.parseIdent(true);\n node.computed = !!computed;\n if (computed) { this.expect(types.bracketR); }\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 && base.type !== \"Import\", false, refDestructuringErrors);\n if (maybeAsyncArrow && !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 (node$1.callee.type === \"Import\") {\n if (node$1.arguments.length !== 1) {\n this.raise(node$1.start, \"import() requires exactly one argument\");\n }\n\n var importArg = node$1.arguments[0];\n if (importArg && importArg.type === \"SpreadElement\") {\n this.raise(importArg.start, \"... is not allowed in import()\");\n }\n }\n base = this.finishNode(node$1, \"CallExpression\");\n } else if (this.type === types.backQuote) {\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 > 10) {\n return this.parseDynamicImport()\n } else {\n return this.unexpected()\n }\n\n default:\n this.unexpected();\n }\n};\n\npp$3.parseDynamicImport = function() {\n var node = this.startNode();\n this.next();\n if (this.type !== types.parenL) {\n this.unexpected();\n }\n return this.finishNode(node, \"Import\")\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 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\" || containsEsc)\n { this.raiseRecoverable(node.property.start, \"The only valid meta property for new is new.target\"); }\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;\n node.callee = this.parseSubscripts(this.parseExprAtom(), startPos, startLoc, true);\n if (this.options.ecmaVersion > 10 && node.callee.type === \"Import\") {\n this.raise(node.callee.start, \"Cannot use new with import(...)\");\n }\n if (this.eat(types.parenL)) { node.arguments = this.parseExprList(types.parenR, this.options.ecmaVersion >= 8 && node.callee.type !== \"Import\", 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.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)) {\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(true)\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 node.body = this.parseBlock(false);\n node.expression = false;\n this.adaptDirectivePrologue(node.body.body);\n this.labels = oldLabels;\n }\n this.exitScope();\n\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 this.strict = oldStrict;\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 (liberal && this.options.allowReserved === \"never\") { liberal = false; }\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();\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, true);\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 unicodeBinaryProperties = {\n 9: ecma9BinaryProperties,\n 10: ecma9BinaryProperties + \" Extended_Pictographic\"\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 unicodeScriptValues = {\n 9: ecma9ScriptValues,\n 10: ecma9ScriptValues + \" Dogra Dogr Elymaic Elym Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Nandinagari Nand Nyiakeng_Puachue_Hmong Hmnp Old_Sogdian Sogo Sogdian Sogd Wancho Wcho\"\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);\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 >= 10 ? 10 : 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) {\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 (!this.switchU || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l) {\n return c\n }\n return (c << 10) + s.charCodeAt(i + 1) - 0x35FDC00\n};\n\nRegExpValidationState.prototype.nextIndex = function nextIndex (i) {\n var s = this.source;\n var l = s.length;\n if (i >= l) {\n return l\n }\n var c = s.charCodeAt(i);\n if (!this.switchU || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l) {\n return i + 1\n }\n return i + 2\n};\n\nRegExpValidationState.prototype.current = function current () {\n return this.at(this.pos)\n};\n\nRegExpValidationState.prototype.lookahead = function lookahead () {\n return this.at(this.nextIndex(this.pos))\n};\n\nRegExpValidationState.prototype.advance = function advance () {\n this.pos = this.nextIndex(this.pos);\n};\n\nRegExpValidationState.prototype.eat = function eat (ch) {\n if (this.current() === ch) {\n this.advance();\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[U] ::\n// [empty]\n// `?` GroupName[?U]\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[U] ::\n// `<` RegExpIdentifierName[?U] `>`\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[U] ::\n// RegExpIdentifierStart[?U]\n// RegExpIdentifierName[?U] RegExpIdentifierPart[?U]\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[U] ::\n// UnicodeIDStart\n// `$`\n// `_`\n// `\\` RegExpUnicodeEscapeSequence[?U]\npp$8.regexp_eatRegExpIdentifierStart = function(state) {\n var start = state.pos;\n var ch = state.current();\n state.advance();\n\n if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state)) {\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[U] ::\n// UnicodeIDContinue\n// `$`\n// `_`\n// `\\` RegExpUnicodeEscapeSequence[?U]\n// \n// \npp$8.regexp_eatRegExpIdentifierPart = function(state) {\n var start = state.pos;\n var ch = state.current();\n state.advance();\n\n if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state)) {\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 /* */ || ch === 0x200D /* */\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) ||\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) {\n var start = state.pos;\n\n if (state.eat(0x75 /* u */)) {\n if (this.regexp_eatFixedHexDigits(state, 4)) {\n var lead = state.lastIntValue;\n if (state.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 state.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 (state.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; /* */\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() {\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 // `\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 \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: '',\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 || '';\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 (',' ? )? ')'\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 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 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","export function walk(ast, { enter, leave }) {\n\tvisit(ast, null, enter, leave);\n}\n\nlet shouldSkip = false;\nconst context = { skip: () => shouldSkip = true };\n\nexport const childKeys = {};\n\nconst toString = Object.prototype.toString;\n\nfunction isArray(thing) {\n\treturn toString.call(thing) === '[object Array]';\n}\n\nfunction visit(node, parent, enter, leave, prop, index) {\n\tif (!node) return;\n\n\tif (enter) {\n\t\tconst _shouldSkip = shouldSkip;\n\t\tshouldSkip = false;\n\t\tenter.call(context, node, parent, prop, index);\n\t\tconst skipped = shouldSkip;\n\t\tshouldSkip = _shouldSkip;\n\n\t\tif (skipped) return;\n\t}\n\n\tconst keys = node.type && childKeys[node.type] || (\n\t\tchildKeys[node.type] = Object.keys(node).filter(key => typeof node[key] === 'object')\n\t);\n\n\tfor (let i = 0; i < keys.length; i += 1) {\n\t\tconst key = keys[i];\n\t\tconst value = node[key];\n\n\t\tif (isArray(value)) {\n\t\t\tfor (let j = 0; j < value.length; j += 1) {\n\t\t\t\tvalue[j] && value[j].type && visit(value[j], node, enter, leave, key, j);\n\t\t\t}\n\t\t}\n\n\t\telse if (value && value.type) {\n\t\t\tvisit(value, node, enter, leave, key, null);\n\t\t}\n\t}\n\n\tif (leave) {\n\t\tleave(node, parent, prop, index);\n\t}\n}\n","import parse from 'css-tree/lib/parser/index.js';\nimport { walk } from 'estree-walker';\nimport { Parser } from '../index';\nimport { Node } from '../../interfaces';\n\nexport default function read_style(parser: Parser, start: number, attributes: Node[]) {\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: 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.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('', true);\n\tconst end = parser.index;\n\n\treturn {\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: Node, b: Node) {\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}","// 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","// 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'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'Infinity',\n\t'InternalError',\n\t'Intl',\n\t'isFinite',\n\t'isNaN',\n\t'JSON',\n\t'Map',\n\t'Math',\n\t'NaN',\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'Set',\n\t'String',\n\t'SyntaxError',\n\t'TypeError',\n\t'undefined',\n\t'URIError',\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\nfunction 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 quote_name_if_necessary(name: string) {\n\tif (!is_valid(name)) return `\"${name}\"`;\n\treturn name;\n}\n\nexport function quote_prop_if_necessary(name: string) {\n\tif (!is_valid(name)) return `[\"${name}\"]`;\n\treturn `.${name}`;\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 } from '../utils/html';\nimport { is_void } from '../../utils/names';\nimport { Parser } from '../index';\nimport { Directive, DirectiveType, Node, 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\n// eslint-disable-next-line no-useless-escape\nconst SELF = /^svelte:self(?=[\\s\\/>])/;\n// eslint-disable-next-line no-useless-escape\nconst COMPONENT = /^svelte:component(?=[\\s\\/>])/;\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\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-${name.slice(7)}-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: Node = {\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.

    \n\t\twhile (parent.name !== name) {\n\t\t\tif (parent.type !== 'Element')\n\t\t\t\tparser.error({\n\t\t\t\t\tcode: `invalid-closing-tag`,\n\t\t\t\t\tmessage: ` attempted to close an element that was not open`\n\t\t\t\t}, start);\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\treturn;\n\t} else if (disallowed_contents.has(parent.name)) {\n\t\t// can this be a child of the parent element, or does it implicitly\n\t\t// close it, like `
  • one
  • two`?\n\t\tif (disallowed_contents.get(parent.name).has(name)) {\n\t\t\tparent.end = start;\n\t\t\tparser.stack.pop();\n\t\t}\n\t}\n\n\tconst unique_names: Set = 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: ` 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 ', 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('', 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') {\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: ` components can only exist inside if-blocks or each-blocks`\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 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) {\n\tconst start = parser.index;\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\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\tif (unique_names.has(name)) {\n\t\tparser.error({\n\t\t\tcode: `duplicate-attribute`,\n\t\t\tmessage: 'Attributes need to be unique'\n\t\t}, start);\n\t}\n\n\tif (type !== \"EventHandler\") {\n\t\tunique_names.add(name);\n\t}\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 === '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};\n\t\t}\n\n\t\treturn directive;\n\t}\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): Node[] {\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: Node[] = [];\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","import { Parser } from '../index';\n\ninterface Identifier {\n\tstart: number;\n\tend: number;\n\ttype: 'Identifier';\n\tname: string;\n}\n\ninterface Property {\n\tstart: number;\n\tend: number;\n\ttype: 'Property';\n\tkind: 'init' | 'rest';\n\tshorthand: boolean;\n\tkey: Identifier;\n\tvalue: Context;\n}\n\ninterface Context {\n\tstart: number;\n\tend: number;\n\ttype: 'Identifier' | 'ArrayPattern' | 'ObjectPattern' | 'RestIdentifier';\n\tname?: string;\n\telements?: Context[];\n\tproperties?: Property[];\n}\n\nfunction error_on_assignment_pattern(parser: Parser) {\n\tif (parser.eat('=')) {\n\t\tparser.error({\n\t\t\tcode: 'invalid-assignment-pattern',\n\t\t\tmessage: 'Assignment patterns are not supported'\n\t\t}, parser.index - 1);\n\t}\n}\n\nfunction error_on_rest_pattern_not_last(parser: Parser) {\n\tparser.error({\n\t\tcode: 'rest-pattern-not-last',\n\t\tmessage: 'Rest destructuring expected to be last'\n\t}, parser.index);\n}\n\nexport default function read_context(parser: Parser) {\n\tconst context: Context = {\n\t\tstart: parser.index,\n\t\tend: null,\n\t\ttype: null\n\t};\n\n\tif (parser.eat('[')) {\n\t\tcontext.type = 'ArrayPattern';\n\t\tcontext.elements = [];\n\n\t\tdo {\n\t\t\tparser.allow_whitespace();\n\n\t\t\tconst lastContext = context.elements[context.elements.length - 1];\n\t\t\tif (lastContext && lastContext.type === 'RestIdentifier') {\n\t\t\t\terror_on_rest_pattern_not_last(parser);\n\t\t\t}\n\n\t\t\tif (parser.template[parser.index] === ',') {\n\t\t\t\tcontext.elements.push(null);\n\t\t\t} else {\n\t\t\t\tcontext.elements.push(read_context(parser));\n\t\t\t\tparser.allow_whitespace();\n\t\t\t}\n\t\t} while (parser.eat(','));\n\n\t\terror_on_assignment_pattern(parser);\n\t\tparser.eat(']', true);\n\t\tcontext.end = parser.index;\n\t}\n\n\telse if (parser.eat('{')) {\n\t\tcontext.type = 'ObjectPattern';\n\t\tcontext.properties = [];\n\n\t\tdo {\n\t\t\tparser.allow_whitespace();\n\n\t\t\tif (parser.eat('...')) {\n\t\t\t\tparser.allow_whitespace();\n\n\t\t\t\tconst start = parser.index;\n\t\t\t\tconst name = parser.read_identifier();\n\t\t\t\tconst key: Identifier = {\n\t\t\t\t\tstart,\n\t\t\t\t\tend: parser.index,\n\t\t\t\t\ttype: 'Identifier',\n\t\t\t\t\tname\n\t\t\t\t};\n\t\t\t\tconst property: Property = {\n\t\t\t\t\tstart,\n\t\t\t\t\tend: parser.index,\n\t\t\t\t\ttype: 'Property',\n\t\t\t\t\tkind: 'rest',\n\t\t\t\t\tshorthand: true,\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue: key\n\t\t\t\t};\n\n\t\t\t\tcontext.properties.push(property);\n\n\t\t\t\tparser.allow_whitespace();\n\n\t\t\t\tif (parser.eat(',')) {\n\t\t\t\t\tparser.error({\n\t\t\t\t\t\tcode: `comma-after-rest`,\n\t\t\t\t\t\tmessage: `Comma is not permitted after the rest element`\n\t\t\t\t\t}, parser.index - 1);\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst start = parser.index;\n\t\t\tconst name = parser.read_identifier();\n\t\t\tconst key: Identifier = {\n\t\t\t\tstart,\n\t\t\t\tend: parser.index,\n\t\t\t\ttype: 'Identifier',\n\t\t\t\tname\n\t\t\t};\n\t\t\tparser.allow_whitespace();\n\n\t\t\tconst value = parser.eat(':')\n\t\t\t\t? (parser.allow_whitespace(), read_context(parser))\n\t\t\t\t: key;\n\n\t\t\tconst property: Property = {\n\t\t\t\tstart,\n\t\t\t\tend: value.end,\n\t\t\t\ttype: 'Property',\n\t\t\t\tkind: 'init',\n\t\t\t\tshorthand: value.type === 'Identifier' && value.name === name,\n\t\t\t\tkey,\n\t\t\t\tvalue\n\t\t\t};\n\n\t\t\tcontext.properties.push(property);\n\n\t\t\tparser.allow_whitespace();\n\t\t} while (parser.eat(','));\n\n\t\terror_on_assignment_pattern(parser);\n\t\tparser.eat('}', true);\n\t\tcontext.end = parser.index;\n\t}\n\n\telse if (parser.eat('...')) {\n\t\tconst name = parser.read_identifier();\n\t\tif (name) {\n\t\t\tcontext.type = 'RestIdentifier';\n\t\t\tcontext.end = parser.index;\n\t\t\tcontext.name = name;\n\t\t}\n\n\t\telse {\n\t\t\tparser.error({\n\t\t\t\tcode: 'invalid-context',\n\t\t\t\tmessage: 'Expected a rest pattern'\n\t\t\t});\n\t\t}\n\t}\n\n\telse {\n\t\tconst name = parser.read_identifier();\n\t\tif (name) {\n\t\t\tcontext.type = 'Identifier';\n\t\t\tcontext.end = parser.index;\n\t\t\tcontext.name = name;\n\t\t}\n\n\t\telse {\n\t\t\tparser.error({\n\t\t\t\tcode: 'invalid-context',\n\t\t\t\tmessage: 'Expected a name, array pattern or object pattern'\n\t\t\t});\n\t\t}\n\n\t\terror_on_assignment_pattern(parser);\n\t}\n\n\treturn context;\n}\n","export const whitespace = /[ \\t\\r\\n]/;\n\nexport const dimensions = /^(?:offset|client)(?:Width|Height)$/;\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 read_context from '../read/context';\nimport read_expression from '../read/expression';\nimport { whitespace } from '../../utils/patterns';\nimport { trim_start, trim_end } from '../../utils/trim';\nimport { Parser } from '../index';\nimport { Node } from '../../interfaces';\n\nfunction trim_whitespace(block: Node, 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 (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: 'Cannot have an {:else if ...} block outside an {#if ...} block'\n\t\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: '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.eat(':then')) {\n\t\t// TODO DRY out this and the next section\n\t\tconst pending_block = parser.current();\n\t\tif (pending_block.type === 'PendingBlock') {\n\t\t\tpending_block.end = start;\n\t\t\tparser.stack.pop();\n\t\t\tconst await_block = parser.current();\n\n\t\t\tif (!parser.eat('}')) {\n\t\t\t\tparser.require_whitespace();\n\t\t\t\tawait_block.value = parser.read_identifier();\n\t\t\t\tparser.allow_whitespace();\n\t\t\t\tparser.eat('}', true);\n\t\t\t}\n\n\t\t\tconst then_block: Node = {\n\t\t\t\tstart,\n\t\t\t\tend: null,\n\t\t\t\ttype: 'ThenBlock',\n\t\t\t\tchildren: [],\n\t\t\t\tskip: false\n\t\t\t};\n\n\t\t\tawait_block.then = then_block;\n\t\t\tparser.stack.push(then_block);\n\t\t}\n\t} else if (parser.eat(':catch')) {\n\t\tconst then_block = parser.current();\n\t\tif (then_block.type === 'ThenBlock') {\n\t\t\tthen_block.end = start;\n\t\t\tparser.stack.pop();\n\t\t\tconst await_block = parser.current();\n\n\t\t\tif (!parser.eat('}')) {\n\t\t\t\tparser.require_whitespace();\n\t\t\t\tawait_block.error = parser.read_identifier();\n\t\t\t\tparser.allow_whitespace();\n\t\t\t\tparser.eat('}', true);\n\t\t\t}\n\n\t\t\tconst catch_block: Node = {\n\t\t\t\tstart,\n\t\t\t\tend: null,\n\t\t\t\ttype: 'CatchBlock',\n\t\t\t\tchildren: [],\n\t\t\t\tskip: false\n\t\t\t};\n\n\t\t\tawait_block.catch = catch_block;\n\t\t\tparser.stack.push(catch_block);\n\t\t}\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: Node = 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 = parser.read_identifier();\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 {\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 };","import repeat from './repeat';\n\nfunction 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\n\t\t\tlet line_num = String(i + frame_start + 1);\n\t\t\twhile (line_num.length < digits) line_num = ` ${line_num}`;\n\n\t\t\tif (isErrorLine) {\n\t\t\t\tconst indicator =\n\t\t\t\t\trepeat(' ', 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}) {\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 { Node, Ast, ParserOptions } from '../interfaces';\nimport error from '../utils/error';\n\ntype ParserState = (parser: Parser) => (ParserState | void);\n\nexport class Parser {\n\treadonly template: string;\n\treadonly filename?: string;\n\treadonly customElement: boolean;\n\n\tindex = 0;\n\tstack: Node[] = [];\n\n\thtml: Node;\n\tcss: Node[] = [];\n\tjs: Node[] = [];\n\tmeta_tags = {};\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] && this.html.children[0].start;\n\t\t\twhile (/\\s/.test(template[start])) start += 1;\n\n\t\t\tlet end = this.html.children[this.html.children.length - 1] && this.html.children[this.html.children.length - 1].end;\n\t\t\twhile (/\\s/.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() {\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 (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 way want to allow multiple \\`;`}\n\n\t\t\t\t\t@init(this, { target: this.shadowRoot }, ${definition}, create_fragment, ${not_equal}, ${prop_names});\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) && deindent`\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\n\t\t\t\t${props.length > 0 && deindent`\n\t\t\t\tstatic get observedAttributes() {\n\t\t\t\t\treturn ${JSON.stringify(props.map(x => x.export_name))};\n\t\t\t\t}`}\n\n\t\t\t\t${body.length > 0 && body.join('\\n\\n')}\n\t\t\t}\n\t\t`);\n\n\t\tif (component.tag != null) {\n\t\t\tbuilder.add_block(deindent`\n\t\t\t\t@_customElements.define(\"${component.tag}\", ${name});\n\t\t\t`);\n\t\t}\n\t} else {\n\t\tconst superclass = options.dev ? 'SvelteComponentDev' : 'SvelteComponent';\n\n\t\tbuilder.add_block(deindent`\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 && `if (!@_document.getElementById(\"${component.stylesheet.id}-style\")) ${add_css}();`}\n\t\t\t\t\t@init(this, options, ${definition}, create_fragment, ${not_equal}, ${prop_names});\n\n\t\t\t\t\t${dev_props_check}\n\t\t\t\t}\n\n\t\t\t\t${body.length > 0 && body.join('\\n\\n')}\n\t\t\t}\n\t\t`);\n\t}\n\n\treturn builder.toString();\n}\n","import Renderer, { RenderOptions } from '../Renderer';\nimport { snip } from '../../utils/snip';\nimport AwaitBlock from '../../nodes/AwaitBlock';\n\nexport default function(node: AwaitBlock, renderer: Renderer, options: RenderOptions) {\n\trenderer.append('${(function(__value) { if(@is_promise(__value)) return `');\n\n\trenderer.render(node.pending.children, options);\n\n\trenderer.append('`; return function(' + (node.value || '') + ') { return `');\n\n\trenderer.render(node.then.children, options);\n\n\tconst snippet = snip(node.expression);\n\trenderer.append(`\\`;}(__value);}(${snippet})) }`);\n}\n","import Renderer, { RenderOptions } from '../Renderer';\nimport Comment from '../../nodes/Comment';\n\nexport default function(node: Comment, renderer: Renderer, options: RenderOptions) {\n\tif (options.preserveComments) {\n\t\trenderer.append(``);\n\t}\n}\n","import { stringify } from '../../utils/stringify';\nimport DebugTag from '../../nodes/DebugTag';\nimport Renderer, { RenderOptions } from '../Renderer';\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 = node.expressions.length === 0\n\t\t? `{}`\n\t\t: `{ ${node.expressions\n\t\t\t.map(e => e.node.name)\n\t\t\t.join(', ')} }`;\n\n\tconst str = '${@debug(' + `${filename && stringify(filename)}, ${line}, ${column}, ${obj})}`;\n\n\trenderer.append(str);\n}\n","import { snip } from '../../utils/snip';\nimport Renderer, { RenderOptions } from '../Renderer';\nimport EachBlock from '../../nodes/EachBlock';\n\nexport default function(node: EachBlock, renderer: Renderer, options: RenderOptions) {\n\tconst snippet = snip(node.expression);\n\n\tconst { start, end } = node.context_node;\n\n\tconst ctx = node.index\n\t\t? `([✂${start}-${end}✂], ${node.index})`\n\t\t: `([✂${start}-${end}✂])`;\n\n\tconst open = `\\${${node.else ? `${snippet}.length ? ` : ''}@each(${snippet}, ${ctx} => \\``;\n\trenderer.append(open);\n\n\trenderer.render(node.children, options);\n\n\tconst close = `\\`)`;\n\trenderer.append(close);\n\n\tif (node.else) {\n\t\trenderer.append(` : \\``);\n\t\trenderer.render(node.else.children, options);\n\t\trenderer.append(`\\``);\n\t}\n\n\trenderer.append('}');\n}\n","import Let from '../../../nodes/Let';\n\nexport function get_slot_scope(lets: Let[]) {\n\tif (lets.length === 0) return '';\n\treturn `{ ${lets.map(l => l.value ? `${l.name}: ${l.value}` : l.name).join(', ')} }`;\n}","import { is_void, quote_prop_if_necessary, quote_name_if_necessary } from '../../../utils/names';\nimport Attribute from '../../nodes/Attribute';\nimport Class from '../../nodes/Class';\nimport { snip } from '../../utils/snip';\nimport { stringify_attribute } from '../../utils/stringify_attribute';\nimport { get_slot_scope } from './shared/get_slot_scope';\nimport Renderer, { RenderOptions } from '../Renderer';\nimport Element from '../../nodes/Element';\nimport Text from '../../nodes/Text';\n\n// source: https://gist.github.com/ArjanSchouten/0b8574a6ad7f5065a5e7\nconst boolean_attributes = new Set([\n\t'async',\n\t'autocomplete',\n\t'autofocus',\n\t'autoplay',\n\t'border',\n\t'challenge',\n\t'checked',\n\t'compact',\n\t'contenteditable',\n\t'controls',\n\t'default',\n\t'defer',\n\t'disabled',\n\t'formnovalidate',\n\t'frameborder',\n\t'hidden',\n\t'indeterminate',\n\t'ismap',\n\t'loop',\n\t'multiple',\n\t'muted',\n\t'nohref',\n\t'noresize',\n\t'noshade',\n\t'novalidate',\n\t'nowrap',\n\t'open',\n\t'readonly',\n\t'required',\n\t'reversed',\n\t'scoped',\n\t'scrolling',\n\t'seamless',\n\t'selected',\n\t'sortable',\n\t'spellcheck',\n\t'translate'\n]);\n\nexport default function(node: Element, renderer: Renderer, options: RenderOptions & {\n\tslot_scopes: Map;\n}) {\n\tlet opening_tag = `<${node.name}`;\n\n\t// awkward special case\n\tlet node_contents;\n\tlet value;\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 component = node.find_nearest(/InlineComponent/);\n\tif (slot && component) {\n\t\tconst slot = node.attributes.find((attribute) => attribute.name === 'slot');\n\t\tconst slot_name = (slot.chunks[0] as Text).data;\n\t\tconst target = renderer.targets[renderer.targets.length - 1];\n\t\ttarget.slot_stack.push(slot_name);\n\t\ttarget.slots[slot_name] = '';\n\n\t\tconst lets = node.lets;\n\t\tconst seen = new Set(lets.map(l => l.name));\n\n\t\tcomponent.lets.forEach(l => {\n\t\t\tif (!seen.has(l.name)) lets.push(l);\n\t\t});\n\n\t\toptions.slot_scopes.set(slot_name, get_slot_scope(node.lets));\n\t}\n\n\tconst class_expression = node.classes.map((class_directive: Class) => {\n\t\tconst { expression, name } = class_directive;\n\t\tconst snippet = expression ? snip(expression) : `ctx${quote_prop_if_necessary(name)}`;\n\t\treturn `${snippet} ? \"${name}\" : \"\"`;\n\t}).join(', ');\n\n\tlet add_class_attribute = class_expression ? true : false;\n\n\tif (node.attributes.find(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(snip(attribute.expression));\n\t\t\t} else {\n\t\t\t\tif (attribute.name === 'value' && node.name === 'textarea') {\n\t\t\t\t\tnode_contents = stringify_attribute(attribute, true);\n\t\t\t\t} else if (attribute.is_true) {\n\t\t\t\t\targs.push(`{ ${quote_name_if_necessary(attribute.name)}: true }`);\n\t\t\t\t} else if (\n\t\t\t\t\tboolean_attributes.has(attribute.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(`{ ${quote_name_if_necessary(attribute.name)}: ${snip(attribute.chunks[0])} }`);\n\t\t\t\t} else {\n\t\t\t\t\targs.push(`{ ${quote_name_if_necessary(attribute.name)}: \\`${stringify_attribute(attribute, true)}\\` }`);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\topening_tag += \"${@spread([\" + args.join(', ') + \"])}\";\n\t} else {\n\t\tnode.attributes.forEach((attribute: Attribute) => {\n\t\t\tif (attribute.type !== 'Attribute') return;\n\n\t\t\tif (attribute.name === 'value' && node.name === 'textarea') {\n\t\t\t\tnode_contents = stringify_attribute(attribute, true);\n\t\t\t} else if (attribute.is_true) {\n\t\t\t\topening_tag += ` ${attribute.name}`;\n\t\t\t} else if (\n\t\t\t\tboolean_attributes.has(attribute.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\topening_tag += '${' + snip(attribute.chunks[0]) + ' ? \" ' + attribute.name + '\" : \"\" }';\n\t\t\t} else if (attribute.name === 'class' && class_expression) {\n\t\t\t\tadd_class_attribute = false;\n\t\t\t\topening_tag += ` class=\"\\${[\\`${stringify_attribute(attribute, true)}\\`, ${class_expression}].join(' ').trim() }\"`;\n\t\t\t} else if (attribute.chunks.length === 1 && attribute.chunks[0].type !== 'Text') {\n\t\t\t\tconst { name } = attribute;\n\t\t\t\tconst snippet = snip(attribute.chunks[0]);\n\n\t\t\t\topening_tag += '${(v => v == null ? \"\" : ` ' + name + '=\"${@escape(' + snippet + ')}\"`)(' + snippet + ')}';\n\t\t\t} else {\n\t\t\t\topening_tag += ` ${attribute.name}=\"${stringify_attribute(attribute, true)}\"`;\n\t\t\t}\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 = snip(expression);\n\t\t\tvalue = name === 'textContent' ? '@escape($$value)' : '$$value';\n\t\t} else if (binding.name === 'value' && node.name === 'textarea') {\n\t\t\tconst snippet = snip(expression);\n\t\t\tnode_contents = '${(' + snippet + ') || \"\"}';\n\t\t} else {\n\t\t\tconst snippet = snip(expression);\n\t\t\topening_tag += '${@add_attribute(\"' + name + '\", ' + snippet + ')}';\n\t\t}\n\t});\n\n\tif (add_class_attribute) {\n\t\topening_tag += `\\${@add_classes([${class_expression}].join(' ').trim())}`;\n\t}\n\n\topening_tag += '>';\n\n\trenderer.append(opening_tag);\n\n\tif (node_contents !== undefined) {\n\t\tif (contenteditable) {\n\t\t\trenderer.append('${($$value => $$value === void 0 ? `');\n\t\t\trenderer.render(node.children, options);\n\t\t\trenderer.append('` : ' + value + ')(' + node_contents + ')}');\n\t\t} else {\n\t\t\trenderer.append(node_contents);\n\t\t}\n\t} else {\n\t\trenderer.render(node.children, options);\n\t}\n\n\tif (!is_void(node.name)) {\n\t\trenderer.append(``);\n\t}\n}\n","import Renderer, { RenderOptions } from '../Renderer';\nimport Head from '../../nodes/Head';\n\nexport default function(node: Head, renderer: Renderer, options: RenderOptions) {\n\trenderer.append('${($$result.head += `');\n\n\trenderer.render(node.children, options);\n\n\trenderer.append('`, \"\")}');\n}\n","import { snip } from '../../utils/snip';\nimport Renderer, { RenderOptions } from '../Renderer';\nimport RawMustacheTag from '../../nodes/RawMustacheTag';\n\nexport default function(node: RawMustacheTag, renderer: Renderer, _options: RenderOptions) {\n\trenderer.append('${' + snip(node.expression) + '}');\n}\n","import { snip } from '../../utils/snip';\nimport IfBlock from '../../nodes/IfBlock';\nimport Renderer, { RenderOptions } from '../Renderer';\nexport default function(node: IfBlock, renderer: Renderer, options: RenderOptions) {\n\tconst snippet = snip(node.expression);\n\n\trenderer.append('${ ' + snippet + ' ? `');\n\n\trenderer.render(node.children, options);\n\n\trenderer.append('` : `');\n\n\tif (node.else) {\n\t\trenderer.render(node.else.children, options);\n\t}\n\n\trenderer.append('` }');\n}\n","import { escape, escape_template, stringify } from '../../utils/stringify';\nimport { quote_name_if_necessary } from '../../../utils/names';\nimport { snip } from '../../utils/snip';\nimport Renderer, { RenderOptions } from '../Renderer';\nimport { stringify_props } from '../../utils/stringify_props';\nimport { get_slot_scope } from './shared/get_slot_scope';\nimport { AppendTarget } from '../../../interfaces';\nimport InlineComponent from '../../nodes/InlineComponent';\nimport { INode } from '../../nodes/interfaces';\nimport Text from '../../nodes/Text';\n\nfunction stringify_attribute(chunk: INode) {\n\tif (chunk.type === 'Text') {\n\t\treturn escape_template(escape((chunk as Text).data));\n\t}\n\n\treturn '${@escape(' + snip(chunk) + ')}';\n}\n\nfunction get_attribute_value(attribute) {\n\tif (attribute.is_true) return `true`;\n\tif (attribute.chunks.length === 0) return `''`;\n\n\tif (attribute.chunks.length === 1) {\n\t\tconst chunk = attribute.chunks[0];\n\t\tif (chunk.type === 'Text') {\n\t\t\treturn stringify(chunk.data);\n\t\t}\n\n\t\treturn snip(chunk);\n\t}\n\n\treturn '`' + attribute.chunks.map(stringify_attribute).join('') + '`';\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 = snip(binding.expression);\n\n\t\tbinding_props.push(`${binding.name}: ${snippet}`);\n\t\tbinding_fns.push(`${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 = `@_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 snip(attribute.expression);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn `{ ${attribute.name}: ${get_attribute_value(attribute)} }`;\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.concat(binding_props.map(p => `{ ${p} }`))\n\t\t\t\t.join(', ')\n\t\t})`;\n\t} else {\n\t\tprops = stringify_props(\n\t\t\tnode.attributes\n\t\t\t\t.map(attribute => `${attribute.name}: ${get_attribute_value(attribute)}`)\n\t\t\t\t.concat(binding_props)\n\t\t);\n\t}\n\n\tconst bindings = stringify_props(binding_fns);\n\n\tconst expression = (\n\t\tnode.name === 'svelte:self'\n\t\t\t? '__svelte:self__' // TODO conflict-proof this\n\t\t\t: node.name === 'svelte:component'\n\t\t\t\t? `((${snip(node.expression)}) || @missing_component)`\n\t\t\t\t: node.name\n\t);\n\n\tconst slot_fns = [];\n\n\tif (node.children.length) {\n\t\tconst target: AppendTarget = {\n\t\t\tslots: { default: '' },\n\t\t\tslot_stack: ['default']\n\t\t};\n\n\t\trenderer.targets.push(target);\n\n\t\tconst slot_scopes = new Map();\n\t\tslot_scopes.set('default', get_slot_scope(node.lets));\n\n\t\trenderer.render(node.children, Object.assign({}, options, {\n\t\t\tslot_scopes\n\t\t}));\n\n\t\tObject.keys(target.slots).forEach(name => {\n\t\t\tconst slot_scope = slot_scopes.get(name);\n\n\t\t\tslot_fns.push(\n\t\t\t\t`${quote_name_if_necessary(name)}: (${slot_scope}) => \\`${target.slots[name]}\\``\n\t\t\t);\n\t\t});\n\n\t\trenderer.targets.pop();\n\t}\n\n\tconst slots = stringify_props(slot_fns);\n\n\trenderer.append(`\\${@validate_component(${expression}, '${node.name}').$$render($$result, ${props}, ${bindings}, ${slots})}`);\n}\n","import { quote_prop_if_necessary } from '../../../utils/names';\nimport get_slot_data from '../../utils/get_slot_data';\nimport Renderer, { RenderOptions } from '../Renderer';\nimport Slot from '../../nodes/Slot';\n\nexport default function(node: Slot, renderer: Renderer, options: RenderOptions) {\n\tconst prop = quote_prop_if_necessary(node.slot_name);\n\n\tconst slot_data = get_slot_data(node.values, true);\n\n\tconst arg = slot_data.length > 0 ? `{ ${slot_data.join(', ')} }` : '';\n\n\trenderer.append(`\\${$$slots${prop} ? $$slots${prop}(${arg}) : \\``);\n\n\trenderer.render(node.children, options);\n\n\trenderer.append(`\\`}`);\n}\n","import { snip } from '../../utils/snip';\nimport Renderer, { RenderOptions } from '../Renderer';\nexport default function(node, renderer: Renderer, _options: RenderOptions) {\n\tconst snippet = snip(node.expression);\n\n\trenderer.append(\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: '${@escape(' + snippet + ')}'\n\t);\n}\n","import { escape_html, escape_template, escape } 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 ` : 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>/gi,\n\t\t\tasync (match, attributes = '', content) => {\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 ? `${processed.code}` : 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__';"],"names":["Parser","acorn.Parser","parse","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","toString","isArray","list","error","whitespace","Block","Binding","is_dynamic","AwaitBlock","Body","DebugTag","EachBlock","Element","Head","IfBlock","InlineComponent","MustacheTag","RawMustacheTag","Slot","Text","Title","Window","Scope","is_reference","stringify_attribute","noop","Comment","Tag","Renderer","getLocator","wrappers","Selector","Rule","Declaration","Atrule","Node","svg","render_ssr","render_dom"],"mappings":";;;;;;UAIgB,MAAM,CAAO,GAAM,EAAE,GAAM;;KAE1C,KAAK,MAAM,CAAC,IAAI,GAAG;SAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;KACrC,OAAO,GAAY,CAAC;CACrB,CAAC;;CCRD,MAAM,GAAG,GAAG,CAAC,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,MAAM;OAC1D;SACD,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;SAC3B,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;MAC/B;OACC,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;CAShC,SAAS,gBAAgB,CAAC,OAAO;KAChC,MAAM,MAAM,GAAG,EAAE,CAAC;KAClB,OAAO,CAAC,OAAO,CAAC,MAAM;SACrB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;aACpC,KAAK,EAAE,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK;UAChC,EAAE,MAAM,CAAC,QAAQ,IAAI,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;MACzD,CAAC,CAAC;KACH,OAAO,MAAM,CAAC;CACf,CAAC;AAED,OAAqB,KAAK;KAOzB;SACC,IAAI,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC;SACxB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;SAChB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;MAC1C;KAED,KAAK,CAAC,KAAK;SACV,MAAM,MAAM,GAAG;aACd,KAAK;aACL,KAAK,EAAE,GAAG,EAAE;aACZ,GAAG,EAAE,IAAI;aACT,QAAQ,EAAE,EAAE;UACZ,CAAC;SAEF,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAExB,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;SAC7B,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CAAC;MACxC;KAED,IAAI,CAAC,KAAK;SACT,IAAI,KAAK,KAAK,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;aACxC,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,CAAC,cAAc,CAAC,KAAK,SAAS,KAAK,GAAG,CAAC,CAAC;UAClG;SAED,IAAI,CAAC,cAAc,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;SAChC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;SACjB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SACxD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;MAC1F;KAED,MAAM;SACL,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;aAC7B,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU;UAC9B,EAAE,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;SAEnC,OAAO;aACN,OAAO;UACP,CAAC;MACF;EACD;;CCxED;;CAEA,IAAI,aAAa,GAAG;CACpB,EAAE,CAAC,EAAE,qNAAqN;CAC1N,EAAE,CAAC,EAAE,8CAA8C;CACnD,EAAE,CAAC,EAAE,MAAM;CACX,EAAE,MAAM,EAAE,wEAAwE;CAClF,EAAE,UAAU,EAAE,gBAAgB;CAC9B,CAAC,CAAC;;CAEF;;CAEA,IAAI,oBAAoB,GAAG,6KAA6K,CAAC;;CAEzM,IAAI,QAAQ,GAAG;CACf,EAAE,CAAC,EAAE,oBAAoB;CACzB,EAAE,CAAC,EAAE,oBAAoB,GAAG,0CAA0C;CACtE,CAAC,CAAC;;CAEF,IAAI,yBAAyB,GAAG,iBAAiB,CAAC;;CAElD;;CAEA;CACA;CACA;CACA;CACA;;CAEA,IAAI,4BAA4B,GAAG,uqIAAuqI,CAAC;CAC3sI,IAAI,uBAAuB,GAAG,giFAAgiF,CAAC;;CAE/jF,IAAI,uBAAuB,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,4BAA4B,GAAG,GAAG,CAAC,CAAC;CACnF,IAAI,kBAAkB,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,4BAA4B,GAAG,uBAAuB,GAAG,GAAG,CAAC,CAAC;;CAExG,4BAA4B,GAAG,uBAAuB,GAAG,IAAI,CAAC;;CAE9D;CACA;CACA;CACA;CACA;;CAEA;CACA,IAAI,0BAA0B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,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,CAAC,CAAC,EAAE,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,GAAG,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,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,GAAG,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,CAAC;;CAE7uC;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,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,CAAC,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,GAAG,CAAC,CAAC,CAAC,CAAC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E,IAAI;KACpB,cAAc,EAAE,IAAI;KACpB,cAAc,EAAE,IAAI;KACpB,cAAc,EAAE,IAAI;KACpB,cAAc,EAAE,IAAI;KACpB,cAAc,EAAE,IAAI;KACpB,cAAc,EAAE,IAAI;KACpB,cAAc,EAAE,IAAI;KACpB,cAAc,EAAE,IAAI;KACpB,cAAc,EAAE,KAAK;KACrB,cAAc,EAAE,IAAI;KACpB,cAAc,EAAE,IAAI;KACpB,cAAc,EAAE,IAAI;KACpB,cAAc,EAAE,IAAI;KACpB,cAAc,EAAE,IAAI;KACpB,cAAc,EAAE,IAAI;KACpB,cAAc,EAAE,IAAI;KACpB,aAAa,EAAE,IAAI;KACnB,aAAa,EAAE,IAAI;KACnB,aAAa,EAAE,KAAK;KACpB,aAAa,EAAE,IAAI;KACnB,aAAa,EAAE,KAAK;KACpB,aAAa,EAAE,KAAK;KACpB,aAAa,EAAE,IAAI;KACnB,aAAa,EAAE,KAAK;KACpB,aAAa,EAAE,KAAK;KACpB,aAAa,EAAE,IAAI;KACnB,aAAa,EAAE,IAAI;KACnB,aAAa,EAAE,IAAI;KACnB,aAAa,EAAE,KAAK;KACpB,aAAa,EAAE,IAAI;KACnB,aAAa,EAAE,IAAI;KACnB,aAAa,EAAE,IAAI;KACnB,aAAa,EAAE,IAAI;KACnB,aAAa,EAAE,IAAI;KACnB,aAAa,EAAE,KAAK;KACpB,aAAa,EAAE,IAAI;KACnB,aAAa,EAAE,IAAI;KACnB,aAAa,EAAE,KAAK;KACpB,aAAa,EAAE,IAAI;KACnB,aAAa,EAAE,IAAI;KACnB,aAAa,EAAE,IAAI;KACnB,aAAa,EAAE,IAAI;KACnB,aAAa,EAAE,IAAI;KACnB,aAAa,EAAE,IAAI;KACnB,aAAa,EAAE,IAAI;KACnB,aAAa,EAAE,IAAI;KACnB,aAAa,EAAE,IAAI;KACnB,aAAa,EAAE,KAAK;KACpB,aAAa,EAAE,IAAI;KACnB,aAAa,EAAE,IAAI;KACnB,aAAa,EAAE,IAAI;KACnB,aAAa,EAAE,IAAI;KACnB,aAAa,EAAE,IAAI;KACnB,aAAa,EAAE,IAAI;KACnB,aAAa,EAAE,IAAI;KACnB,YAAY,EAAE,KAAK;KACnB,YAAY,EAAE,IAAI;KAClB,YAAY,EAAE,IAAI;KAClB,YAAY,EAAE,IAAI;KAClB,YAAY,EAAE,IAAI;KAClB,YAAY,EAAE,IAAI;KAClB,YAAY,EAAE,IAAI;KAClB,YAAY,EAAE,IAAI;KAClB,YAAY,EAAE,IAAI;KAClB,YAAY,EAAE,IAAI;KAClB,YAAY,EAAE,IAAI;KAClB,YAAY,EAAE,IAAI;KAClB,YAAY,EAAE,IAAI;KAClB,YAAY,EAAE,IAAI;KAClB,YAAY,EAAE,IAAI;KAClB,YAAY,EAAE,IAAI;KAClB,YAAY,EAAE,IAAI;KAClB,YAAY,EAAE,KAAK;KACnB,YAAY,EAAE,IAAI;KAClB,YAAY,EAAE,IAAI;KAClB,YAAY,EAAE,IAAI;KAClB,YAAY,EAAE,GAAG;KACjB,YAAY,EAAE,KAAK;KACnB,YAAY,EAAE,IAAI;KAClB,YAAY,EAAE,IAAI;KAClB,YAAY,EAAE,IAAI;KAClB,YAAY,EAAE,IAAI;KAClB,WAAW,EAAE,IAAI;KACjB,WAAW,EAAE,IAAI;KACjB,WAAW,EAAE,IAAI;KACjB,WAAW,EAAE,IAAI;KACjB,WAAW,EAAE,IAAI;KACjB,WAAW,EAAE,IAAI;KACjB,WAAW,EAAE,IAAI;KACjB,WAAW,EAAE,IAAI;KACjB,WAAW,EAAE,IAAI;KACjB,WAAW,EAAE,IAAI;KACjB,WAAW,EAAE,IAAI;KACjB,WAAW,EAAE,IAAI;KACjB,WAAW,EAAE,KAAK;KAClB,WAAW,EAAE,IAAI;KACjB,WAAW,EAAE,IAAI;KACjB,WAAW,EAAE,IAAI;KACjB,WAAW,EAAE,IAAI;KACjB,WAAW,EAAE,IAAI;KACjB,WAAW,EAAE,IAAI;KACjB,WAAW,EAAE,IAAI;KACjB,WAAW,EAAE,IAAI;KACjB,WAAW,EAAE,IAAI;KACjB,WAAW,EAAE,IAAI;KACjB,WAAW,EAAE,IAAI;KACjB,WAAW,EAAE,IAAI;KACjB,WAAW,EAAE,IAAI;KACjB,WAAW,EAAE,KAAK;KAClB,WAAW,EAAE,IAAI;KACjB,WAAW,EAAE,IAAI;KACjB,WAAW,EAAE,IAAI;KACjB,WAAW,EAAE,IAAI;KACjB,WAAW,EAAE,KAAK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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,IAAI;KACd,QAAQ,EAAE,IAAI;KACd,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,KAAK;KACf,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,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,EAAE,IAAI;KACV,IAAI,EAAE,MAAM;KACZ,IAAI,EAAE,MAAM;KACZ,IAAI,EAAE,GAAG;KACT,IAAI,EAAE,MAAM;KACZ,IAAI,EAAE,IAAI;KACV,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,MAAM;KACZ,IAAI,EAAE,MAAM;KACZ,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,GAAG;KACT,IAAI,EAAE,MAAM;KACZ,IAAI,EAAE,GAAG;KACT,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,GAAG;KACT,IAAI,EAAE,MAAM;KACZ,IAAI,EAAE,MAAM;KACZ,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,MAAM;KACZ,IAAI,EAAE,MAAM;KACZ,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,KAAK;KACX,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,MAAM;KACZ,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,MAAM;KACZ,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,IAAI;KACV,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IAAI,EAAE,IAAI;KACV,IAAI,EAAE,KAAK;KACX,IAAI,EAAE,KAAK;KACX,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,KAAK;KACX,IAAI,EAAE,KAAK;KACX,IAAI,EAAE,MAAM;KACZ,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,MAAM;KACZ,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,KAAK;KACX,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,GAAG;KACT,IAAI,EAAE,GAAG;KACT,IAAI,EAAE,GAAG;KACT,IAAI,EAAE,KAAK;KACX,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,KAAK;KACX,IAAI,EAAE,MAAM;KACZ,IAAI,EAAE,KAAK;KACX,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,MAAM;KACZ,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,KAAK;KACX,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,MAAM;KACZ,IAAI,EAAE,GAAG;KACT,IAAI,EAAE,MAAM;KACZ,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,GAAG;KACT,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,KAAK;KACX,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,GAAG;KACT,IAAI,EAAE,MAAM;KACZ,IAAI,EAAE,MAAM;KACZ,IAAI,EAAE,MAAM;KACZ,IAAI,EAAE,MAAM;KACZ,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,KAAK;KACX,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,MAAM;KACZ,IAAI,EAAE,MAAM;KACZ,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,MAAM;KACZ,IAAI,EAAE,MAAM;KACZ,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,GAAG;KACT,IAAI,EAAE,GAAG;KACT,IAAI,EAAE,GAAG;KACT,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"} \ No newline at end of file diff --git a/easing/index.d.ts b/easing/index.d.ts new file mode 100644 index 000000000000..ccba949940fc --- /dev/null +++ b/easing/index.d.ts @@ -0,0 +1 @@ +export * from '../types/runtime/easing/index'; \ No newline at end of file diff --git a/easing/index.js b/easing/index.js new file mode 100644 index 000000000000..163064b78487 --- /dev/null +++ b/easing/index.js @@ -0,0 +1,183 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var internal = require('../internal'); + +/* +Adapted from https://github.com/mattdesl +Distributed under MIT License https://github.com/mattdesl/eases/blob/master/LICENSE.md +*/ +function backInOut(t) { + const s = 1.70158 * 1.525; + if ((t *= 2) < 1) + return 0.5 * (t * t * ((s + 1) * t - s)); + return 0.5 * ((t -= 2) * t * ((s + 1) * t + s) + 2); +} +function backIn(t) { + const s = 1.70158; + return t * t * ((s + 1) * t - s); +} +function backOut(t) { + const s = 1.70158; + return --t * t * ((s + 1) * t + s) + 1; +} +function bounceOut(t) { + const a = 4.0 / 11.0; + const b = 8.0 / 11.0; + const c = 9.0 / 10.0; + const ca = 4356.0 / 361.0; + const cb = 35442.0 / 1805.0; + const cc = 16061.0 / 1805.0; + const t2 = t * t; + return t < a + ? 7.5625 * t2 + : t < b + ? 9.075 * t2 - 9.9 * t + 3.4 + : t < c + ? ca * t2 - cb * t + cc + : 10.8 * t * t - 20.52 * t + 10.72; +} +function bounceInOut(t) { + return t < 0.5 + ? 0.5 * (1.0 - bounceOut(1.0 - t * 2.0)) + : 0.5 * bounceOut(t * 2.0 - 1.0) + 0.5; +} +function bounceIn(t) { + return 1.0 - bounceOut(1.0 - t); +} +function circInOut(t) { + if ((t *= 2) < 1) + return -0.5 * (Math.sqrt(1 - t * t) - 1); + return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1); +} +function circIn(t) { + return 1.0 - Math.sqrt(1.0 - t * t); +} +function circOut(t) { + return Math.sqrt(1 - --t * t); +} +function cubicInOut(t) { + return t < 0.5 ? 4.0 * t * t * t : 0.5 * Math.pow(2.0 * t - 2.0, 3.0) + 1.0; +} +function cubicIn(t) { + return t * t * t; +} +function cubicOut(t) { + const f = t - 1.0; + return f * f * f + 1.0; +} +function elasticInOut(t) { + return t < 0.5 + ? 0.5 * + Math.sin(((+13.0 * Math.PI) / 2) * 2.0 * t) * + Math.pow(2.0, 10.0 * (2.0 * t - 1.0)) + : 0.5 * + Math.sin(((-13.0 * Math.PI) / 2) * (2.0 * t - 1.0 + 1.0)) * + Math.pow(2.0, -10.0 * (2.0 * t - 1.0)) + + 1.0; +} +function elasticIn(t) { + return Math.sin((13.0 * t * Math.PI) / 2) * Math.pow(2.0, 10.0 * (t - 1.0)); +} +function elasticOut(t) { + return (Math.sin((-13.0 * (t + 1.0) * Math.PI) / 2) * Math.pow(2.0, -10.0 * t) + 1.0); +} +function expoInOut(t) { + return t === 0.0 || t === 1.0 + ? t + : t < 0.5 + ? +0.5 * Math.pow(2.0, 20.0 * t - 10.0) + : -0.5 * Math.pow(2.0, 10.0 - t * 20.0) + 1.0; +} +function expoIn(t) { + return t === 0.0 ? t : Math.pow(2.0, 10.0 * (t - 1.0)); +} +function expoOut(t) { + return t === 1.0 ? t : 1.0 - Math.pow(2.0, -10.0 * t); +} +function quadInOut(t) { + t /= 0.5; + if (t < 1) + return 0.5 * t * t; + t--; + return -0.5 * (t * (t - 2) - 1); +} +function quadIn(t) { + return t * t; +} +function quadOut(t) { + return -t * (t - 2.0); +} +function quartInOut(t) { + return t < 0.5 + ? +8.0 * Math.pow(t, 4.0) + : -8.0 * Math.pow(t - 1.0, 4.0) + 1.0; +} +function quartIn(t) { + return Math.pow(t, 4.0); +} +function quartOut(t) { + return Math.pow(t - 1.0, 3.0) * (1.0 - t) + 1.0; +} +function quintInOut(t) { + if ((t *= 2) < 1) + return 0.5 * t * t * t * t * t; + return 0.5 * ((t -= 2) * t * t * t * t + 2); +} +function quintIn(t) { + return t * t * t * t * t; +} +function quintOut(t) { + return --t * t * t * t * t + 1; +} +function sineInOut(t) { + return -0.5 * (Math.cos(Math.PI * t) - 1); +} +function sineIn(t) { + const v = Math.cos(t * Math.PI * 0.5); + if (Math.abs(v) < 1e-14) + return 1; + else + return 1 - v; +} +function sineOut(t) { + return Math.sin((t * Math.PI) / 2); +} + +Object.defineProperty(exports, 'linear', { + enumerable: true, + get: function () { + return internal.identity; + } +}); +exports.backIn = backIn; +exports.backInOut = backInOut; +exports.backOut = backOut; +exports.bounceIn = bounceIn; +exports.bounceInOut = bounceInOut; +exports.bounceOut = bounceOut; +exports.circIn = circIn; +exports.circInOut = circInOut; +exports.circOut = circOut; +exports.cubicIn = cubicIn; +exports.cubicInOut = cubicInOut; +exports.cubicOut = cubicOut; +exports.elasticIn = elasticIn; +exports.elasticInOut = elasticInOut; +exports.elasticOut = elasticOut; +exports.expoIn = expoIn; +exports.expoInOut = expoInOut; +exports.expoOut = expoOut; +exports.quadIn = quadIn; +exports.quadInOut = quadInOut; +exports.quadOut = quadOut; +exports.quartIn = quartIn; +exports.quartInOut = quartInOut; +exports.quartOut = quartOut; +exports.quintIn = quintIn; +exports.quintInOut = quintInOut; +exports.quintOut = quintOut; +exports.sineIn = sineIn; +exports.sineInOut = sineInOut; +exports.sineOut = sineOut; diff --git a/easing/index.mjs b/easing/index.mjs new file mode 100644 index 000000000000..735609fc8920 --- /dev/null +++ b/easing/index.mjs @@ -0,0 +1,144 @@ +export { identity as linear } from '../internal'; + +/* +Adapted from https://github.com/mattdesl +Distributed under MIT License https://github.com/mattdesl/eases/blob/master/LICENSE.md +*/ +function backInOut(t) { + const s = 1.70158 * 1.525; + if ((t *= 2) < 1) + return 0.5 * (t * t * ((s + 1) * t - s)); + return 0.5 * ((t -= 2) * t * ((s + 1) * t + s) + 2); +} +function backIn(t) { + const s = 1.70158; + return t * t * ((s + 1) * t - s); +} +function backOut(t) { + const s = 1.70158; + return --t * t * ((s + 1) * t + s) + 1; +} +function bounceOut(t) { + const a = 4.0 / 11.0; + const b = 8.0 / 11.0; + const c = 9.0 / 10.0; + const ca = 4356.0 / 361.0; + const cb = 35442.0 / 1805.0; + const cc = 16061.0 / 1805.0; + const t2 = t * t; + return t < a + ? 7.5625 * t2 + : t < b + ? 9.075 * t2 - 9.9 * t + 3.4 + : t < c + ? ca * t2 - cb * t + cc + : 10.8 * t * t - 20.52 * t + 10.72; +} +function bounceInOut(t) { + return t < 0.5 + ? 0.5 * (1.0 - bounceOut(1.0 - t * 2.0)) + : 0.5 * bounceOut(t * 2.0 - 1.0) + 0.5; +} +function bounceIn(t) { + return 1.0 - bounceOut(1.0 - t); +} +function circInOut(t) { + if ((t *= 2) < 1) + return -0.5 * (Math.sqrt(1 - t * t) - 1); + return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1); +} +function circIn(t) { + return 1.0 - Math.sqrt(1.0 - t * t); +} +function circOut(t) { + return Math.sqrt(1 - --t * t); +} +function cubicInOut(t) { + return t < 0.5 ? 4.0 * t * t * t : 0.5 * Math.pow(2.0 * t - 2.0, 3.0) + 1.0; +} +function cubicIn(t) { + return t * t * t; +} +function cubicOut(t) { + const f = t - 1.0; + return f * f * f + 1.0; +} +function elasticInOut(t) { + return t < 0.5 + ? 0.5 * + Math.sin(((+13.0 * Math.PI) / 2) * 2.0 * t) * + Math.pow(2.0, 10.0 * (2.0 * t - 1.0)) + : 0.5 * + Math.sin(((-13.0 * Math.PI) / 2) * (2.0 * t - 1.0 + 1.0)) * + Math.pow(2.0, -10.0 * (2.0 * t - 1.0)) + + 1.0; +} +function elasticIn(t) { + return Math.sin((13.0 * t * Math.PI) / 2) * Math.pow(2.0, 10.0 * (t - 1.0)); +} +function elasticOut(t) { + return (Math.sin((-13.0 * (t + 1.0) * Math.PI) / 2) * Math.pow(2.0, -10.0 * t) + 1.0); +} +function expoInOut(t) { + return t === 0.0 || t === 1.0 + ? t + : t < 0.5 + ? +0.5 * Math.pow(2.0, 20.0 * t - 10.0) + : -0.5 * Math.pow(2.0, 10.0 - t * 20.0) + 1.0; +} +function expoIn(t) { + return t === 0.0 ? t : Math.pow(2.0, 10.0 * (t - 1.0)); +} +function expoOut(t) { + return t === 1.0 ? t : 1.0 - Math.pow(2.0, -10.0 * t); +} +function quadInOut(t) { + t /= 0.5; + if (t < 1) + return 0.5 * t * t; + t--; + return -0.5 * (t * (t - 2) - 1); +} +function quadIn(t) { + return t * t; +} +function quadOut(t) { + return -t * (t - 2.0); +} +function quartInOut(t) { + return t < 0.5 + ? +8.0 * Math.pow(t, 4.0) + : -8.0 * Math.pow(t - 1.0, 4.0) + 1.0; +} +function quartIn(t) { + return Math.pow(t, 4.0); +} +function quartOut(t) { + return Math.pow(t - 1.0, 3.0) * (1.0 - t) + 1.0; +} +function quintInOut(t) { + if ((t *= 2) < 1) + return 0.5 * t * t * t * t * t; + return 0.5 * ((t -= 2) * t * t * t * t + 2); +} +function quintIn(t) { + return t * t * t * t * t; +} +function quintOut(t) { + return --t * t * t * t * t + 1; +} +function sineInOut(t) { + return -0.5 * (Math.cos(Math.PI * t) - 1); +} +function sineIn(t) { + const v = Math.cos(t * Math.PI * 0.5); + if (Math.abs(v) < 1e-14) + return 1; + else + return 1 - v; +} +function sineOut(t) { + return Math.sin((t * Math.PI) / 2); +} + +export { backIn, backInOut, backOut, bounceIn, bounceInOut, bounceOut, circIn, circInOut, circOut, cubicIn, cubicInOut, cubicOut, elasticIn, elasticInOut, elasticOut, expoIn, expoInOut, expoOut, quadIn, quadInOut, quadOut, quartIn, quartInOut, quartOut, quintIn, quintInOut, quintOut, sineIn, sineInOut, sineOut }; diff --git a/easing/package.json b/easing/package.json new file mode 100644 index 000000000000..598aeeaf5115 --- /dev/null +++ b/easing/package.json @@ -0,0 +1,5 @@ +{ + "main": "./index", + "module": "./index.mjs", + "types": "./index.d.ts" +} \ No newline at end of file diff --git a/index.js b/index.js new file mode 100644 index 000000000000..069564531c1d --- /dev/null +++ b/index.js @@ -0,0 +1,56 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var internal = require('./internal'); + + + +Object.defineProperty(exports, 'afterUpdate', { + enumerable: true, + get: function () { + return internal.afterUpdate; + } +}); +Object.defineProperty(exports, 'beforeUpdate', { + enumerable: true, + get: function () { + return internal.beforeUpdate; + } +}); +Object.defineProperty(exports, 'createEventDispatcher', { + enumerable: true, + get: function () { + return internal.createEventDispatcher; + } +}); +Object.defineProperty(exports, 'getContext', { + enumerable: true, + get: function () { + return internal.getContext; + } +}); +Object.defineProperty(exports, 'onDestroy', { + enumerable: true, + get: function () { + return internal.onDestroy; + } +}); +Object.defineProperty(exports, 'onMount', { + enumerable: true, + get: function () { + return internal.onMount; + } +}); +Object.defineProperty(exports, 'setContext', { + enumerable: true, + get: function () { + return internal.setContext; + } +}); +Object.defineProperty(exports, 'tick', { + enumerable: true, + get: function () { + return internal.tick; + } +}); diff --git a/index.mjs b/index.mjs new file mode 100644 index 000000000000..5e961da27e7b --- /dev/null +++ b/index.mjs @@ -0,0 +1 @@ +export { afterUpdate, beforeUpdate, createEventDispatcher, getContext, onDestroy, onMount, setContext, tick } from './internal'; diff --git a/internal/index.d.ts b/internal/index.d.ts new file mode 100644 index 000000000000..5c4d1818976c --- /dev/null +++ b/internal/index.d.ts @@ -0,0 +1 @@ +export * from '../types/runtime/internal/index'; \ No newline at end of file diff --git a/internal/index.js b/internal/index.js new file mode 100644 index 000000000000..222af2e12919 --- /dev/null +++ b/internal/index.js @@ -0,0 +1,1444 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +function noop() { } +const identity = x => x; +function assign(tar, src) { + // @ts-ignore + for (const k in src) + tar[k] = src[k]; + return tar; +} +function is_promise(value) { + return value && typeof value === 'object' && typeof value.then === 'function'; +} +function add_location(element, file, line, column, char) { + element.__svelte_meta = { + loc: { file, line, column, char } + }; +} +function run(fn) { + return fn(); +} +function blank_object() { + return Object.create(null); +} +function run_all(fns) { + fns.forEach(run); +} +function is_function(thing) { + return typeof thing === 'function'; +} +function safe_not_equal(a, b) { + return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function'); +} +function not_equal(a, b) { + return a != a ? b == b : a !== b; +} +function validate_store(store, name) { + if (!store || typeof store.subscribe !== 'function') { + throw new Error(`'${name}' is not a store with a 'subscribe' method`); + } +} +function subscribe(component, store, callback) { + const unsub = store.subscribe(callback); + component.$$.on_destroy.push(unsub.unsubscribe + ? () => unsub.unsubscribe() + : unsub); +} +function create_slot(definition, ctx, fn) { + if (definition) { + const slot_ctx = get_slot_context(definition, ctx, fn); + return definition[0](slot_ctx); + } +} +function get_slot_context(definition, ctx, fn) { + return definition[1] + ? assign({}, assign(ctx.$$scope.ctx, definition[1](fn ? fn(ctx) : {}))) + : ctx.$$scope.ctx; +} +function get_slot_changes(definition, ctx, changed, fn) { + return definition[1] + ? assign({}, assign(ctx.$$scope.changed || {}, definition[1](fn ? fn(changed) : {}))) + : ctx.$$scope.changed || {}; +} +function exclude_internal_props(props) { + const result = {}; + for (const k in props) + if (k[0] !== '$') + result[k] = props[k]; + return result; +} +function once(fn) { + let ran = false; + return function (...args) { + if (ran) + return; + ran = true; + fn.call(this, ...args); + }; +} + +const is_client = typeof window !== 'undefined'; +exports.now = is_client + ? () => window.performance.now() + : () => Date.now(); +exports.raf = cb => requestAnimationFrame(cb); +// used internally for testing +function set_now(fn) { + exports.now = fn; +} +function set_raf(fn) { + exports.raf = fn; +} + +const tasks = new Set(); +let running = false; +function run_tasks() { + tasks.forEach(task => { + if (!task[0](exports.now())) { + tasks.delete(task); + task[1](); + } + }); + running = tasks.size > 0; + if (running) + exports.raf(run_tasks); +} +function clear_loops() { + // for testing... + tasks.forEach(task => tasks.delete(task)); + running = false; +} +function loop(fn) { + let task; + if (!running) { + running = true; + exports.raf(run_tasks); + } + return { + promise: new Promise(fulfil => { + tasks.add(task = [fn, fulfil]); + }), + abort() { + tasks.delete(task); + } + }; +} + +function append(target, node) { + target.appendChild(node); +} +function insert(target, node, anchor) { + target.insertBefore(node, anchor || null); +} +function detach(node) { + node.parentNode.removeChild(node); +} +function detach_between(before, after) { + while (before.nextSibling && before.nextSibling !== after) { + before.parentNode.removeChild(before.nextSibling); + } +} +function detach_before(after) { + while (after.previousSibling) { + after.parentNode.removeChild(after.previousSibling); + } +} +function detach_after(before) { + while (before.nextSibling) { + before.parentNode.removeChild(before.nextSibling); + } +} +function destroy_each(iterations, detaching) { + for (let i = 0; i < iterations.length; i += 1) { + if (iterations[i]) + iterations[i].d(detaching); + } +} +function element(name) { + return document.createElement(name); +} +function object_without_properties(obj, exclude) { + // eslint-disable-next-line @typescript-eslint/no-object-literal-type-assertion + const target = {}; + for (const k in obj) { + if (Object.prototype.hasOwnProperty.call(obj, k) + // @ts-ignore + && exclude.indexOf(k) === -1) { + // @ts-ignore + target[k] = obj[k]; + } + } + return target; +} +function svg_element(name) { + return document.createElementNS('http://www.w3.org/2000/svg', name); +} +function text(data) { + return document.createTextNode(data); +} +function space() { + return text(' '); +} +function empty() { + return text(''); +} +function listen(node, event, handler, options) { + node.addEventListener(event, handler, options); + return () => node.removeEventListener(event, handler, options); +} +function prevent_default(fn) { + return function (event) { + event.preventDefault(); + // @ts-ignore + return fn.call(this, event); + }; +} +function stop_propagation(fn) { + return function (event) { + event.stopPropagation(); + // @ts-ignore + return fn.call(this, event); + }; +} +function attr(node, attribute, value) { + if (value == null) + node.removeAttribute(attribute); + else + node.setAttribute(attribute, value); +} +function set_attributes(node, attributes) { + for (const key in attributes) { + if (key === 'style') { + node.style.cssText = attributes[key]; + } + else if (key in node) { + node[key] = attributes[key]; + } + else { + attr(node, key, attributes[key]); + } + } +} +function set_custom_element_data(node, prop, value) { + if (prop in node) { + node[prop] = value; + } + else { + attr(node, prop, value); + } +} +function xlink_attr(node, attribute, value) { + node.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value); +} +function get_binding_group_value(group) { + const value = []; + for (let i = 0; i < group.length; i += 1) { + if (group[i].checked) + value.push(group[i].__value); + } + return value; +} +function to_number(value) { + return value === '' ? undefined : +value; +} +function time_ranges_to_array(ranges) { + const array = []; + for (let i = 0; i < ranges.length; i += 1) { + array.push({ start: ranges.start(i), end: ranges.end(i) }); + } + return array; +} +function children(element) { + return Array.from(element.childNodes); +} +function claim_element(nodes, name, attributes, svg) { + for (let i = 0; i < nodes.length; i += 1) { + const node = nodes[i]; + if (node.nodeName === name) { + for (let j = 0; j < node.attributes.length; j += 1) { + const attribute = node.attributes[j]; + if (!attributes[attribute.name]) + node.removeAttribute(attribute.name); + } + return nodes.splice(i, 1)[0]; // TODO strip unwanted attributes + } + } + return svg ? svg_element(name) : element(name); +} +function claim_text(nodes, data) { + for (let i = 0; i < nodes.length; i += 1) { + const node = nodes[i]; + if (node.nodeType === 3) { + node.data = data; + return nodes.splice(i, 1)[0]; + } + } + return text(data); +} +function set_data(text, data) { + data = '' + data; + if (text.data !== data) + text.data = data; +} +function set_input_type(input, type) { + try { + input.type = type; + } + catch (e) { + // do nothing + } +} +function set_style(node, key, value) { + node.style.setProperty(key, value); +} +function select_option(select, value) { + for (let i = 0; i < select.options.length; i += 1) { + const option = select.options[i]; + if (option.__value === value) { + option.selected = true; + return; + } + } +} +function select_options(select, value) { + for (let i = 0; i < select.options.length; i += 1) { + const option = select.options[i]; + option.selected = ~value.indexOf(option.__value); + } +} +function select_value(select) { + const selected_option = select.querySelector(':checked') || select.options[0]; + return selected_option && selected_option.__value; +} +function select_multiple_value(select) { + return [].map.call(select.querySelectorAll(':checked'), option => option.__value); +} +function add_resize_listener(element, fn) { + if (getComputedStyle(element).position === 'static') { + element.style.position = 'relative'; + } + const object = document.createElement('object'); + object.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; pointer-events: none; z-index: -1;'); + object.type = 'text/html'; + object.tabIndex = -1; + let win; + object.onload = () => { + win = object.contentDocument.defaultView; + win.addEventListener('resize', fn); + }; + if (/Trident/.test(navigator.userAgent)) { + element.appendChild(object); + object.data = 'about:blank'; + } + else { + object.data = 'about:blank'; + element.appendChild(object); + } + return { + cancel: () => { + win && win.removeEventListener && win.removeEventListener('resize', fn); + element.removeChild(object); + } + }; +} +function toggle_class(element, name, toggle) { + element.classList[toggle ? 'add' : 'remove'](name); +} +function custom_event(type, detail) { + const e = document.createEvent('CustomEvent'); + e.initCustomEvent(type, false, false, detail); + return e; +} + +let stylesheet; +let active = 0; +let current_rules = {}; +// https://github.com/darkskyapp/string-hash/blob/master/index.js +function hash(str) { + let hash = 5381; + let i = str.length; + while (i--) + hash = ((hash << 5) - hash) ^ str.charCodeAt(i); + return hash >>> 0; +} +function create_rule(node, a, b, duration, delay, ease, fn, uid = 0) { + const step = 16.666 / duration; + let keyframes = '{\n'; + for (let p = 0; p <= 1; p += step) { + const t = a + (b - a) * ease(p); + keyframes += p * 100 + `%{${fn(t, 1 - t)}}\n`; + } + const rule = keyframes + `100% {${fn(b, 1 - b)}}\n}`; + const name = `__svelte_${hash(rule)}_${uid}`; + if (!current_rules[name]) { + if (!stylesheet) { + const style = element('style'); + document.head.appendChild(style); + stylesheet = style.sheet; + } + current_rules[name] = true; + stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length); + } + const animation = node.style.animation || ''; + node.style.animation = `${animation ? `${animation}, ` : ``}${name} ${duration}ms linear ${delay}ms 1 both`; + active += 1; + return name; +} +function delete_rule(node, name) { + node.style.animation = (node.style.animation || '') + .split(', ') + .filter(name + ? anim => anim.indexOf(name) < 0 // remove specific animation + : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations + ) + .join(', '); + if (name && !--active) + clear_rules(); +} +function clear_rules() { + exports.raf(() => { + if (active) + return; + let i = stylesheet.cssRules.length; + while (i--) + stylesheet.deleteRule(i); + current_rules = {}; + }); +} + +function create_animation(node, from, fn, params) { + if (!from) + return noop; + const to = node.getBoundingClientRect(); + if (from.left === to.left && from.right === to.right && from.top === to.top && from.bottom === to.bottom) + return noop; + const { delay = 0, duration = 300, easing = identity, + // @ts-ignore todo: should this be separated from destructuring? Or start/end added to public api and documentation? + start: start_time = exports.now() + delay, + // @ts-ignore todo: + end = start_time + duration, tick = noop, css } = fn(node, { from, to }, params); + let running = true; + let started = false; + let name; + function start() { + if (css) { + name = create_rule(node, 0, 1, duration, delay, easing, css); + } + if (!delay) { + started = true; + } + } + function stop() { + if (css) + delete_rule(node, name); + running = false; + } + loop(now => { + if (!started && now >= start_time) { + started = true; + } + if (started && now >= end) { + tick(1, 0); + stop(); + } + if (!running) { + return false; + } + if (started) { + const p = now - start_time; + const t = 0 + 1 * easing(p / duration); + tick(t, 1 - t); + } + return true; + }); + start(); + tick(0, 1); + return stop; +} +function fix_position(node) { + const style = getComputedStyle(node); + if (style.position !== 'absolute' && style.position !== 'fixed') { + const { width, height } = style; + const a = node.getBoundingClientRect(); + node.style.position = 'absolute'; + node.style.width = width; + node.style.height = height; + add_transform(node, a); + } +} +function add_transform(node, a) { + const b = node.getBoundingClientRect(); + if (a.left !== b.left || a.top !== b.top) { + const style = getComputedStyle(node); + const transform = style.transform === 'none' ? '' : style.transform; + node.style.transform = `${transform} translate(${a.left - b.left}px, ${a.top - b.top}px)`; + } +} + +function set_current_component(component) { + exports.current_component = component; +} +function get_current_component() { + if (!exports.current_component) + throw new Error(`Function called outside component initialization`); + return exports.current_component; +} +function beforeUpdate(fn) { + get_current_component().$$.before_update.push(fn); +} +function onMount(fn) { + get_current_component().$$.on_mount.push(fn); +} +function afterUpdate(fn) { + get_current_component().$$.after_update.push(fn); +} +function onDestroy(fn) { + get_current_component().$$.on_destroy.push(fn); +} +function createEventDispatcher() { + const component = exports.current_component; + return (type, detail) => { + const callbacks = component.$$.callbacks[type]; + if (callbacks) { + // TODO are there situations where events could be dispatched + // in a server (non-DOM) environment? + const event = custom_event(type, detail); + callbacks.slice().forEach(fn => { + fn.call(component, event); + }); + } + }; +} +function setContext(key, context) { + get_current_component().$$.context.set(key, context); +} +function getContext(key) { + return get_current_component().$$.context.get(key); +} +// TODO figure out if we still want to support +// shorthand events, or if we want to implement +// a real bubbling mechanism +function bubble(component, event) { + const callbacks = component.$$.callbacks[event.type]; + if (callbacks) { + callbacks.slice().forEach(fn => fn(event)); + } +} + +const dirty_components = []; +const intros = { enabled: false }; +const binding_callbacks = []; +const render_callbacks = []; +const flush_callbacks = []; +const resolved_promise = Promise.resolve(); +let update_scheduled = false; +function schedule_update() { + if (!update_scheduled) { + update_scheduled = true; + resolved_promise.then(flush); + } +} +function tick() { + schedule_update(); + return resolved_promise; +} +function add_render_callback(fn) { + render_callbacks.push(fn); +} +function add_flush_callback(fn) { + flush_callbacks.push(fn); +} +function flush() { + const seen_callbacks = new Set(); + do { + // first, call beforeUpdate functions + // and update components + while (dirty_components.length) { + const component = dirty_components.shift(); + set_current_component(component); + update(component.$$); + } + while (binding_callbacks.length) + binding_callbacks.pop()(); + // then, once components are updated, call + // afterUpdate functions. This may cause + // subsequent updates... + for (let i = 0; i < render_callbacks.length; i += 1) { + const callback = render_callbacks[i]; + if (!seen_callbacks.has(callback)) { + callback(); + // ...so guard against infinite loops + seen_callbacks.add(callback); + } + } + render_callbacks.length = 0; + } while (dirty_components.length); + while (flush_callbacks.length) { + flush_callbacks.pop()(); + } + update_scheduled = false; +} +function update($$) { + if ($$.fragment) { + $$.update($$.dirty); + run_all($$.before_update); + $$.fragment.p($$.dirty, $$.ctx); + $$.dirty = null; + $$.after_update.forEach(add_render_callback); + } +} + +let promise; +function wait() { + if (!promise) { + promise = Promise.resolve(); + promise.then(() => { + promise = null; + }); + } + return promise; +} +function dispatch(node, direction, kind) { + node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`)); +} +const outroing = new Set(); +let outros; +function group_outros() { + outros = { + r: 0, + c: [], + p: outros // parent group + }; +} +function check_outros() { + if (!outros.r) { + run_all(outros.c); + } + outros = outros.p; +} +function transition_in(block, local) { + if (block && block.i) { + outroing.delete(block); + block.i(local); + } +} +function transition_out(block, local, detach, callback) { + if (block && block.o) { + if (outroing.has(block)) + return; + outroing.add(block); + outros.c.push(() => { + outroing.delete(block); + if (callback) { + if (detach) + block.d(1); + callback(); + } + }); + block.o(local); + } +} +function create_in_transition(node, fn, params) { + let config = fn(node, params); + let running = false; + let animation_name; + let task; + let uid = 0; + function cleanup() { + if (animation_name) + delete_rule(node, animation_name); + } + function go() { + const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config; + if (css) + animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++); + tick(0, 1); + const start_time = exports.now() + delay; + const end_time = start_time + duration; + if (task) + task.abort(); + running = true; + add_render_callback(() => dispatch(node, true, 'start')); + task = loop(now => { + if (running) { + if (now >= end_time) { + tick(1, 0); + dispatch(node, true, 'end'); + cleanup(); + return running = false; + } + if (now >= start_time) { + const t = easing((now - start_time) / duration); + tick(t, 1 - t); + } + } + return running; + }); + } + let started = false; + return { + start() { + if (started) + return; + delete_rule(node); + if (is_function(config)) { + config = config(); + wait().then(go); + } + else { + go(); + } + }, + invalidate() { + started = false; + }, + end() { + if (running) { + cleanup(); + running = false; + } + } + }; +} +function create_out_transition(node, fn, params) { + let config = fn(node, params); + let running = true; + let animation_name; + const group = outros; + group.r += 1; + function go() { + const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config; + if (css) + animation_name = create_rule(node, 1, 0, duration, delay, easing, css); + const start_time = exports.now() + delay; + const end_time = start_time + duration; + add_render_callback(() => dispatch(node, false, 'start')); + loop(now => { + if (running) { + if (now >= end_time) { + tick(0, 1); + dispatch(node, false, 'end'); + if (!--group.r) { + // this will result in `end()` being called, + // so we don't need to clean up here + run_all(group.c); + } + return false; + } + if (now >= start_time) { + const t = easing((now - start_time) / duration); + tick(1 - t, t); + } + } + return running; + }); + } + if (is_function(config)) { + wait().then(() => { + // @ts-ignore + config = config(); + go(); + }); + } + else { + go(); + } + return { + end(reset) { + if (reset && config.tick) { + config.tick(1, 0); + } + if (running) { + if (animation_name) + delete_rule(node, animation_name); + running = false; + } + } + }; +} +function create_bidirectional_transition(node, fn, params, intro) { + let config = fn(node, params); + let t = intro ? 0 : 1; + let running_program = null; + let pending_program = null; + let animation_name = null; + function clear_animation() { + if (animation_name) + delete_rule(node, animation_name); + } + function init(program, duration) { + const d = program.b - t; + duration *= Math.abs(d); + return { + a: t, + b: program.b, + d, + duration, + start: program.start, + end: program.start + duration, + group: program.group + }; + } + function go(b) { + const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config; + const program = { + start: exports.now() + delay, + b + }; + if (!b) { + // @ts-ignore todo: improve typings + program.group = outros; + outros.r += 1; + } + if (running_program) { + pending_program = program; + } + else { + // if this is an intro, and there's a delay, we need to do + // an initial tick and/or apply CSS animation immediately + if (css) { + clear_animation(); + animation_name = create_rule(node, t, b, duration, delay, easing, css); + } + if (b) + tick(0, 1); + running_program = init(program, duration); + add_render_callback(() => dispatch(node, b, 'start')); + loop(now => { + if (pending_program && now > pending_program.start) { + running_program = init(pending_program, duration); + pending_program = null; + dispatch(node, running_program.b, 'start'); + if (css) { + clear_animation(); + animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css); + } + } + if (running_program) { + if (now >= running_program.end) { + tick(t = running_program.b, 1 - t); + dispatch(node, running_program.b, 'end'); + if (!pending_program) { + // we're done + if (running_program.b) { + // intro — we can tidy up immediately + clear_animation(); + } + else { + // outro — needs to be coordinated + if (!--running_program.group.r) + run_all(running_program.group.c); + } + } + running_program = null; + } + else if (now >= running_program.start) { + const p = now - running_program.start; + t = running_program.a + running_program.d * easing(p / running_program.duration); + tick(t, 1 - t); + } + } + return !!(running_program || pending_program); + }); + } + } + return { + run(b) { + if (is_function(config)) { + wait().then(() => { + // @ts-ignore + config = config(); + go(b); + }); + } + else { + go(b); + } + }, + end() { + clear_animation(); + running_program = pending_program = null; + } + }; +} + +function handle_promise(promise, info) { + const token = info.token = {}; + function update(type, index, key, value) { + if (info.token !== token) + return; + info.resolved = key && { [key]: value }; + const child_ctx = assign(assign({}, info.ctx), info.resolved); + const block = type && (info.current = type)(child_ctx); + if (info.block) { + if (info.blocks) { + info.blocks.forEach((block, i) => { + if (i !== index && block) { + group_outros(); + transition_out(block, 1, 1, () => { + info.blocks[i] = null; + }); + check_outros(); + } + }); + } + else { + info.block.d(1); + } + block.c(); + transition_in(block, 1); + block.m(info.mount(), info.anchor); + flush(); + } + info.block = block; + if (info.blocks) + info.blocks[index] = block; + } + if (is_promise(promise)) { + promise.then(value => { + update(info.then, 1, info.value, value); + }, error => { + update(info.catch, 2, info.error, error); + }); + // if we previously had a then/catch block, destroy it + if (info.current !== info.pending) { + update(info.pending, 0); + return true; + } + } + else { + if (info.current !== info.then) { + update(info.then, 1, info.value, promise); + return true; + } + info.resolved = { [info.value]: promise }; + } +} + +const globals = (typeof window !== 'undefined' ? window : global); + +function destroy_block(block, lookup) { + block.d(1); + lookup.delete(block.key); +} +function outro_and_destroy_block(block, lookup) { + transition_out(block, 1, 1, () => { + lookup.delete(block.key); + }); +} +function fix_and_destroy_block(block, lookup) { + block.f(); + destroy_block(block, lookup); +} +function fix_and_outro_and_destroy_block(block, lookup) { + block.f(); + outro_and_destroy_block(block, lookup); +} +function update_keyed_each(old_blocks, changed, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) { + let o = old_blocks.length; + let n = list.length; + let i = o; + const old_indexes = {}; + while (i--) + old_indexes[old_blocks[i].key] = i; + const new_blocks = []; + const new_lookup = new Map(); + const deltas = new Map(); + i = n; + while (i--) { + const child_ctx = get_context(ctx, list, i); + const key = get_key(child_ctx); + let block = lookup.get(key); + if (!block) { + block = create_each_block(key, child_ctx); + block.c(); + } + else if (dynamic) { + block.p(changed, child_ctx); + } + new_lookup.set(key, new_blocks[i] = block); + if (key in old_indexes) + deltas.set(key, Math.abs(i - old_indexes[key])); + } + const will_move = new Set(); + const did_move = new Set(); + function insert(block) { + transition_in(block, 1); + block.m(node, next); + lookup.set(block.key, block); + next = block.first; + n--; + } + while (o && n) { + const new_block = new_blocks[n - 1]; + const old_block = old_blocks[o - 1]; + const new_key = new_block.key; + const old_key = old_block.key; + if (new_block === old_block) { + // do nothing + next = new_block.first; + o--; + n--; + } + else if (!new_lookup.has(old_key)) { + // remove old block + destroy(old_block, lookup); + o--; + } + else if (!lookup.has(new_key) || will_move.has(new_key)) { + insert(new_block); + } + else if (did_move.has(old_key)) { + o--; + } + else if (deltas.get(new_key) > deltas.get(old_key)) { + did_move.add(new_key); + insert(new_block); + } + else { + will_move.add(old_key); + o--; + } + } + while (o--) { + const old_block = old_blocks[o]; + if (!new_lookup.has(old_block.key)) + destroy(old_block, lookup); + } + while (n) + insert(new_blocks[n - 1]); + return new_blocks; +} +function measure(blocks) { + const rects = {}; + let i = blocks.length; + while (i--) + rects[blocks[i].key] = blocks[i].node.getBoundingClientRect(); + return rects; +} + +function get_spread_update(levels, updates) { + const update = {}; + const to_null_out = {}; + const accounted_for = { $$scope: 1 }; + let i = levels.length; + while (i--) { + const o = levels[i]; + const n = updates[i]; + if (n) { + for (const key in o) { + if (!(key in n)) + to_null_out[key] = 1; + } + for (const key in n) { + if (!accounted_for[key]) { + update[key] = n[key]; + accounted_for[key] = 1; + } + } + levels[i] = n; + } + else { + for (const key in o) { + accounted_for[key] = 1; + } + } + } + for (const key in to_null_out) { + if (!(key in update)) + update[key] = undefined; + } + return update; +} + +const invalid_attribute_name_character = /[\s'">/=\u{FDD0}-\u{FDEF}\u{FFFE}\u{FFFF}\u{1FFFE}\u{1FFFF}\u{2FFFE}\u{2FFFF}\u{3FFFE}\u{3FFFF}\u{4FFFE}\u{4FFFF}\u{5FFFE}\u{5FFFF}\u{6FFFE}\u{6FFFF}\u{7FFFE}\u{7FFFF}\u{8FFFE}\u{8FFFF}\u{9FFFE}\u{9FFFF}\u{AFFFE}\u{AFFFF}\u{BFFFE}\u{BFFFF}\u{CFFFE}\u{CFFFF}\u{DFFFE}\u{DFFFF}\u{EFFFE}\u{EFFFF}\u{FFFFE}\u{FFFFF}\u{10FFFE}\u{10FFFF}]/u; +// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 +// https://infra.spec.whatwg.org/#noncharacter +function spread(args) { + const attributes = Object.assign({}, ...args); + let str = ''; + Object.keys(attributes).forEach(name => { + if (invalid_attribute_name_character.test(name)) + return; + const value = attributes[name]; + if (value === undefined) + return; + if (value === true) + str += " " + name; + const escaped = String(value) + .replace(/"/g, '"') + .replace(/'/g, '''); + str += " " + name + "=" + JSON.stringify(escaped); + }); + return str; +} +const escaped = { + '"': '"', + "'": ''', + '&': '&', + '<': '<', + '>': '>' +}; +function escape(html) { + return String(html).replace(/["'&<>]/g, match => escaped[match]); +} +function each(items, fn) { + let str = ''; + for (let i = 0; i < items.length; i += 1) { + str += fn(items[i], i); + } + return str; +} +const missing_component = { + $$render: () => '' +}; +function validate_component(component, name) { + if (!component || !component.$$render) { + if (name === 'svelte:component') + name += ' this={...}'; + throw new Error(`<${name}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules`); + } + return component; +} +function debug(file, line, column, values) { + console.log(`{@debug} ${file ? file + ' ' : ''}(${line}:${column})`); // eslint-disable-line no-console + console.log(values); // eslint-disable-line no-console + return ''; +} +let on_destroy; +function create_ssr_component(fn) { + function $$render(result, props, bindings, slots) { + const parent_component = exports.current_component; + const $$ = { + on_destroy, + context: new Map(parent_component ? parent_component.$$.context : []), + // these will be immediately discarded + on_mount: [], + before_update: [], + after_update: [], + callbacks: blank_object() + }; + set_current_component({ $$ }); + const html = fn(result, props, bindings, slots); + set_current_component(parent_component); + return html; + } + return { + render: (props = {}, options = {}) => { + on_destroy = []; + const result = { head: '', css: new Set() }; + const html = $$render(result, props, {}, options); + run_all(on_destroy); + return { + html, + css: { + code: Array.from(result.css).map(css => css.code).join('\n'), + map: null // TODO + }, + head: result.head + }; + }, + $$render + }; +} +/** + * Get the current value from a store by subscribing and immediately unsubscribing. + * @param store readable + */ +function get_store_value(store) { + let value; + const unsubscribe = store.subscribe(_ => value = _); + if (unsubscribe.unsubscribe) + unsubscribe.unsubscribe(); + else + unsubscribe(); + return value; +} +function add_attribute(name, value) { + if (!value) + return ''; + return ` ${name}${value === true ? '' : `=${typeof value === 'string' ? JSON.stringify(value) : `"${value}"`}`}`; +} +function add_classes(classes) { + return classes ? ` class="${classes}"` : ``; +} + +function bind(component, name, callback) { + if (component.$$.props.indexOf(name) === -1) + return; + component.$$.bound[name] = callback; + callback(component.$$.ctx[name]); +} +function mount_component(component, target, anchor) { + const { fragment, on_mount, on_destroy, after_update } = component.$$; + fragment.m(target, anchor); + // onMount happens before the initial afterUpdate + add_render_callback(() => { + const new_on_destroy = on_mount.map(run).filter(is_function); + if (on_destroy) { + on_destroy.push(...new_on_destroy); + } + else { + // Edge case - component was destroyed immediately, + // most likely as a result of a binding initialising + run_all(new_on_destroy); + } + component.$$.on_mount = []; + }); + after_update.forEach(add_render_callback); +} +function destroy_component(component, detaching) { + if (component.$$.fragment) { + run_all(component.$$.on_destroy); + component.$$.fragment.d(detaching); + // TODO null out other refs, including component.$$ (but need to + // preserve final state?) + component.$$.on_destroy = component.$$.fragment = null; + component.$$.ctx = {}; + } +} +function make_dirty(component, key) { + if (!component.$$.dirty) { + dirty_components.push(component); + schedule_update(); + component.$$.dirty = blank_object(); + } + component.$$.dirty[key] = true; +} +function init(component, options, instance, create_fragment, not_equal, prop_names) { + const parent_component = exports.current_component; + set_current_component(component); + const props = options.props || {}; + const $$ = component.$$ = { + fragment: null, + ctx: null, + // state + props: prop_names, + update: noop, + not_equal, + bound: blank_object(), + // lifecycle + on_mount: [], + on_destroy: [], + before_update: [], + after_update: [], + context: new Map(parent_component ? parent_component.$$.context : []), + // everything else + callbacks: blank_object(), + dirty: null + }; + let ready = false; + $$.ctx = instance + ? instance(component, props, (key, value) => { + if ($$.ctx && not_equal($$.ctx[key], $$.ctx[key] = value)) { + if ($$.bound[key]) + $$.bound[key](value); + if (ready) + make_dirty(component, key); + } + }) + : props; + $$.update(); + ready = true; + run_all($$.before_update); + $$.fragment = create_fragment($$.ctx); + if (options.target) { + if (options.hydrate) { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + $$.fragment.l(children(options.target)); + } + else { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + $$.fragment.c(); + } + if (options.intro) + transition_in(component.$$.fragment); + mount_component(component, options.target, options.anchor); + flush(); + } + set_current_component(parent_component); +} +if (typeof HTMLElement !== 'undefined') { + exports.SvelteElement = class extends HTMLElement { + constructor() { + super(); + this.attachShadow({ mode: 'open' }); + } + connectedCallback() { + // @ts-ignore todo: improve typings + for (const key in this.$$.slotted) { + // @ts-ignore todo: improve typings + this.appendChild(this.$$.slotted[key]); + } + } + attributeChangedCallback(attr, _oldValue, newValue) { + this[attr] = newValue; + } + $destroy() { + destroy_component(this, 1); + this.$destroy = noop; + } + $on(type, callback) { + // TODO should this delegate to addEventListener? + const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = [])); + callbacks.push(callback); + return () => { + const index = callbacks.indexOf(callback); + if (index !== -1) + callbacks.splice(index, 1); + }; + } + $set() { + // overridden by instance, if it has props + } + }; +} +class SvelteComponent { + $destroy() { + destroy_component(this, 1); + this.$destroy = noop; + } + $on(type, callback) { + const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = [])); + callbacks.push(callback); + return () => { + const index = callbacks.indexOf(callback); + if (index !== -1) + callbacks.splice(index, 1); + }; + } + $set() { + // overridden by instance, if it has props + } +} +class SvelteComponentDev extends SvelteComponent { + constructor(options) { + if (!options || (!options.target && !options.$$inline)) { + throw new Error(`'target' is a required option`); + } + super(); + } + $destroy() { + super.$destroy(); + this.$destroy = () => { + console.warn(`Component was already destroyed`); // eslint-disable-line no-console + }; + } +} + +exports.SvelteComponent = SvelteComponent; +exports.SvelteComponentDev = SvelteComponentDev; +exports.add_attribute = add_attribute; +exports.add_classes = add_classes; +exports.add_flush_callback = add_flush_callback; +exports.add_location = add_location; +exports.add_render_callback = add_render_callback; +exports.add_resize_listener = add_resize_listener; +exports.add_transform = add_transform; +exports.afterUpdate = afterUpdate; +exports.append = append; +exports.assign = assign; +exports.attr = attr; +exports.beforeUpdate = beforeUpdate; +exports.bind = bind; +exports.binding_callbacks = binding_callbacks; +exports.blank_object = blank_object; +exports.bubble = bubble; +exports.check_outros = check_outros; +exports.children = children; +exports.claim_element = claim_element; +exports.claim_text = claim_text; +exports.clear_loops = clear_loops; +exports.createEventDispatcher = createEventDispatcher; +exports.create_animation = create_animation; +exports.create_bidirectional_transition = create_bidirectional_transition; +exports.create_in_transition = create_in_transition; +exports.create_out_transition = create_out_transition; +exports.create_slot = create_slot; +exports.create_ssr_component = create_ssr_component; +exports.custom_event = custom_event; +exports.debug = debug; +exports.destroy_block = destroy_block; +exports.destroy_component = destroy_component; +exports.destroy_each = destroy_each; +exports.detach = detach; +exports.detach_after = detach_after; +exports.detach_before = detach_before; +exports.detach_between = detach_between; +exports.dirty_components = dirty_components; +exports.each = each; +exports.element = element; +exports.empty = empty; +exports.escape = escape; +exports.escaped = escaped; +exports.exclude_internal_props = exclude_internal_props; +exports.fix_and_destroy_block = fix_and_destroy_block; +exports.fix_and_outro_and_destroy_block = fix_and_outro_and_destroy_block; +exports.fix_position = fix_position; +exports.flush = flush; +exports.getContext = getContext; +exports.get_binding_group_value = get_binding_group_value; +exports.get_slot_changes = get_slot_changes; +exports.get_slot_context = get_slot_context; +exports.get_spread_update = get_spread_update; +exports.get_store_value = get_store_value; +exports.globals = globals; +exports.group_outros = group_outros; +exports.handle_promise = handle_promise; +exports.identity = identity; +exports.init = init; +exports.insert = insert; +exports.intros = intros; +exports.invalid_attribute_name_character = invalid_attribute_name_character; +exports.is_client = is_client; +exports.is_function = is_function; +exports.is_promise = is_promise; +exports.listen = listen; +exports.loop = loop; +exports.measure = measure; +exports.missing_component = missing_component; +exports.mount_component = mount_component; +exports.noop = noop; +exports.not_equal = not_equal; +exports.object_without_properties = object_without_properties; +exports.onDestroy = onDestroy; +exports.onMount = onMount; +exports.once = once; +exports.outro_and_destroy_block = outro_and_destroy_block; +exports.prevent_default = prevent_default; +exports.run = run; +exports.run_all = run_all; +exports.safe_not_equal = safe_not_equal; +exports.schedule_update = schedule_update; +exports.select_multiple_value = select_multiple_value; +exports.select_option = select_option; +exports.select_options = select_options; +exports.select_value = select_value; +exports.setContext = setContext; +exports.set_attributes = set_attributes; +exports.set_current_component = set_current_component; +exports.set_custom_element_data = set_custom_element_data; +exports.set_data = set_data; +exports.set_input_type = set_input_type; +exports.set_now = set_now; +exports.set_raf = set_raf; +exports.set_style = set_style; +exports.space = space; +exports.spread = spread; +exports.stop_propagation = stop_propagation; +exports.subscribe = subscribe; +exports.svg_element = svg_element; +exports.text = text; +exports.tick = tick; +exports.time_ranges_to_array = time_ranges_to_array; +exports.to_number = to_number; +exports.toggle_class = toggle_class; +exports.transition_in = transition_in; +exports.transition_out = transition_out; +exports.update_keyed_each = update_keyed_each; +exports.validate_component = validate_component; +exports.validate_store = validate_store; +exports.xlink_attr = xlink_attr; diff --git a/internal/index.mjs b/internal/index.mjs new file mode 100644 index 000000000000..446651194ce4 --- /dev/null +++ b/internal/index.mjs @@ -0,0 +1,1330 @@ +function noop() { } +const identity = x => x; +function assign(tar, src) { + // @ts-ignore + for (const k in src) + tar[k] = src[k]; + return tar; +} +function is_promise(value) { + return value && typeof value === 'object' && typeof value.then === 'function'; +} +function add_location(element, file, line, column, char) { + element.__svelte_meta = { + loc: { file, line, column, char } + }; +} +function run(fn) { + return fn(); +} +function blank_object() { + return Object.create(null); +} +function run_all(fns) { + fns.forEach(run); +} +function is_function(thing) { + return typeof thing === 'function'; +} +function safe_not_equal(a, b) { + return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function'); +} +function not_equal(a, b) { + return a != a ? b == b : a !== b; +} +function validate_store(store, name) { + if (!store || typeof store.subscribe !== 'function') { + throw new Error(`'${name}' is not a store with a 'subscribe' method`); + } +} +function subscribe(component, store, callback) { + const unsub = store.subscribe(callback); + component.$$.on_destroy.push(unsub.unsubscribe + ? () => unsub.unsubscribe() + : unsub); +} +function create_slot(definition, ctx, fn) { + if (definition) { + const slot_ctx = get_slot_context(definition, ctx, fn); + return definition[0](slot_ctx); + } +} +function get_slot_context(definition, ctx, fn) { + return definition[1] + ? assign({}, assign(ctx.$$scope.ctx, definition[1](fn ? fn(ctx) : {}))) + : ctx.$$scope.ctx; +} +function get_slot_changes(definition, ctx, changed, fn) { + return definition[1] + ? assign({}, assign(ctx.$$scope.changed || {}, definition[1](fn ? fn(changed) : {}))) + : ctx.$$scope.changed || {}; +} +function exclude_internal_props(props) { + const result = {}; + for (const k in props) + if (k[0] !== '$') + result[k] = props[k]; + return result; +} +function once(fn) { + let ran = false; + return function (...args) { + if (ran) + return; + ran = true; + fn.call(this, ...args); + }; +} + +const is_client = typeof window !== 'undefined'; +let now = is_client + ? () => window.performance.now() + : () => Date.now(); +let raf = cb => requestAnimationFrame(cb); +// used internally for testing +function set_now(fn) { + now = fn; +} +function set_raf(fn) { + raf = fn; +} + +const tasks = new Set(); +let running = false; +function run_tasks() { + tasks.forEach(task => { + if (!task[0](now())) { + tasks.delete(task); + task[1](); + } + }); + running = tasks.size > 0; + if (running) + raf(run_tasks); +} +function clear_loops() { + // for testing... + tasks.forEach(task => tasks.delete(task)); + running = false; +} +function loop(fn) { + let task; + if (!running) { + running = true; + raf(run_tasks); + } + return { + promise: new Promise(fulfil => { + tasks.add(task = [fn, fulfil]); + }), + abort() { + tasks.delete(task); + } + }; +} + +function append(target, node) { + target.appendChild(node); +} +function insert(target, node, anchor) { + target.insertBefore(node, anchor || null); +} +function detach(node) { + node.parentNode.removeChild(node); +} +function detach_between(before, after) { + while (before.nextSibling && before.nextSibling !== after) { + before.parentNode.removeChild(before.nextSibling); + } +} +function detach_before(after) { + while (after.previousSibling) { + after.parentNode.removeChild(after.previousSibling); + } +} +function detach_after(before) { + while (before.nextSibling) { + before.parentNode.removeChild(before.nextSibling); + } +} +function destroy_each(iterations, detaching) { + for (let i = 0; i < iterations.length; i += 1) { + if (iterations[i]) + iterations[i].d(detaching); + } +} +function element(name) { + return document.createElement(name); +} +function object_without_properties(obj, exclude) { + // eslint-disable-next-line @typescript-eslint/no-object-literal-type-assertion + const target = {}; + for (const k in obj) { + if (Object.prototype.hasOwnProperty.call(obj, k) + // @ts-ignore + && exclude.indexOf(k) === -1) { + // @ts-ignore + target[k] = obj[k]; + } + } + return target; +} +function svg_element(name) { + return document.createElementNS('http://www.w3.org/2000/svg', name); +} +function text(data) { + return document.createTextNode(data); +} +function space() { + return text(' '); +} +function empty() { + return text(''); +} +function listen(node, event, handler, options) { + node.addEventListener(event, handler, options); + return () => node.removeEventListener(event, handler, options); +} +function prevent_default(fn) { + return function (event) { + event.preventDefault(); + // @ts-ignore + return fn.call(this, event); + }; +} +function stop_propagation(fn) { + return function (event) { + event.stopPropagation(); + // @ts-ignore + return fn.call(this, event); + }; +} +function attr(node, attribute, value) { + if (value == null) + node.removeAttribute(attribute); + else + node.setAttribute(attribute, value); +} +function set_attributes(node, attributes) { + for (const key in attributes) { + if (key === 'style') { + node.style.cssText = attributes[key]; + } + else if (key in node) { + node[key] = attributes[key]; + } + else { + attr(node, key, attributes[key]); + } + } +} +function set_custom_element_data(node, prop, value) { + if (prop in node) { + node[prop] = value; + } + else { + attr(node, prop, value); + } +} +function xlink_attr(node, attribute, value) { + node.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value); +} +function get_binding_group_value(group) { + const value = []; + for (let i = 0; i < group.length; i += 1) { + if (group[i].checked) + value.push(group[i].__value); + } + return value; +} +function to_number(value) { + return value === '' ? undefined : +value; +} +function time_ranges_to_array(ranges) { + const array = []; + for (let i = 0; i < ranges.length; i += 1) { + array.push({ start: ranges.start(i), end: ranges.end(i) }); + } + return array; +} +function children(element) { + return Array.from(element.childNodes); +} +function claim_element(nodes, name, attributes, svg) { + for (let i = 0; i < nodes.length; i += 1) { + const node = nodes[i]; + if (node.nodeName === name) { + for (let j = 0; j < node.attributes.length; j += 1) { + const attribute = node.attributes[j]; + if (!attributes[attribute.name]) + node.removeAttribute(attribute.name); + } + return nodes.splice(i, 1)[0]; // TODO strip unwanted attributes + } + } + return svg ? svg_element(name) : element(name); +} +function claim_text(nodes, data) { + for (let i = 0; i < nodes.length; i += 1) { + const node = nodes[i]; + if (node.nodeType === 3) { + node.data = data; + return nodes.splice(i, 1)[0]; + } + } + return text(data); +} +function set_data(text, data) { + data = '' + data; + if (text.data !== data) + text.data = data; +} +function set_input_type(input, type) { + try { + input.type = type; + } + catch (e) { + // do nothing + } +} +function set_style(node, key, value) { + node.style.setProperty(key, value); +} +function select_option(select, value) { + for (let i = 0; i < select.options.length; i += 1) { + const option = select.options[i]; + if (option.__value === value) { + option.selected = true; + return; + } + } +} +function select_options(select, value) { + for (let i = 0; i < select.options.length; i += 1) { + const option = select.options[i]; + option.selected = ~value.indexOf(option.__value); + } +} +function select_value(select) { + const selected_option = select.querySelector(':checked') || select.options[0]; + return selected_option && selected_option.__value; +} +function select_multiple_value(select) { + return [].map.call(select.querySelectorAll(':checked'), option => option.__value); +} +function add_resize_listener(element, fn) { + if (getComputedStyle(element).position === 'static') { + element.style.position = 'relative'; + } + const object = document.createElement('object'); + object.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; pointer-events: none; z-index: -1;'); + object.type = 'text/html'; + object.tabIndex = -1; + let win; + object.onload = () => { + win = object.contentDocument.defaultView; + win.addEventListener('resize', fn); + }; + if (/Trident/.test(navigator.userAgent)) { + element.appendChild(object); + object.data = 'about:blank'; + } + else { + object.data = 'about:blank'; + element.appendChild(object); + } + return { + cancel: () => { + win && win.removeEventListener && win.removeEventListener('resize', fn); + element.removeChild(object); + } + }; +} +function toggle_class(element, name, toggle) { + element.classList[toggle ? 'add' : 'remove'](name); +} +function custom_event(type, detail) { + const e = document.createEvent('CustomEvent'); + e.initCustomEvent(type, false, false, detail); + return e; +} + +let stylesheet; +let active = 0; +let current_rules = {}; +// https://github.com/darkskyapp/string-hash/blob/master/index.js +function hash(str) { + let hash = 5381; + let i = str.length; + while (i--) + hash = ((hash << 5) - hash) ^ str.charCodeAt(i); + return hash >>> 0; +} +function create_rule(node, a, b, duration, delay, ease, fn, uid = 0) { + const step = 16.666 / duration; + let keyframes = '{\n'; + for (let p = 0; p <= 1; p += step) { + const t = a + (b - a) * ease(p); + keyframes += p * 100 + `%{${fn(t, 1 - t)}}\n`; + } + const rule = keyframes + `100% {${fn(b, 1 - b)}}\n}`; + const name = `__svelte_${hash(rule)}_${uid}`; + if (!current_rules[name]) { + if (!stylesheet) { + const style = element('style'); + document.head.appendChild(style); + stylesheet = style.sheet; + } + current_rules[name] = true; + stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length); + } + const animation = node.style.animation || ''; + node.style.animation = `${animation ? `${animation}, ` : ``}${name} ${duration}ms linear ${delay}ms 1 both`; + active += 1; + return name; +} +function delete_rule(node, name) { + node.style.animation = (node.style.animation || '') + .split(', ') + .filter(name + ? anim => anim.indexOf(name) < 0 // remove specific animation + : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations + ) + .join(', '); + if (name && !--active) + clear_rules(); +} +function clear_rules() { + raf(() => { + if (active) + return; + let i = stylesheet.cssRules.length; + while (i--) + stylesheet.deleteRule(i); + current_rules = {}; + }); +} + +function create_animation(node, from, fn, params) { + if (!from) + return noop; + const to = node.getBoundingClientRect(); + if (from.left === to.left && from.right === to.right && from.top === to.top && from.bottom === to.bottom) + return noop; + const { delay = 0, duration = 300, easing = identity, + // @ts-ignore todo: should this be separated from destructuring? Or start/end added to public api and documentation? + start: start_time = now() + delay, + // @ts-ignore todo: + end = start_time + duration, tick = noop, css } = fn(node, { from, to }, params); + let running = true; + let started = false; + let name; + function start() { + if (css) { + name = create_rule(node, 0, 1, duration, delay, easing, css); + } + if (!delay) { + started = true; + } + } + function stop() { + if (css) + delete_rule(node, name); + running = false; + } + loop(now => { + if (!started && now >= start_time) { + started = true; + } + if (started && now >= end) { + tick(1, 0); + stop(); + } + if (!running) { + return false; + } + if (started) { + const p = now - start_time; + const t = 0 + 1 * easing(p / duration); + tick(t, 1 - t); + } + return true; + }); + start(); + tick(0, 1); + return stop; +} +function fix_position(node) { + const style = getComputedStyle(node); + if (style.position !== 'absolute' && style.position !== 'fixed') { + const { width, height } = style; + const a = node.getBoundingClientRect(); + node.style.position = 'absolute'; + node.style.width = width; + node.style.height = height; + add_transform(node, a); + } +} +function add_transform(node, a) { + const b = node.getBoundingClientRect(); + if (a.left !== b.left || a.top !== b.top) { + const style = getComputedStyle(node); + const transform = style.transform === 'none' ? '' : style.transform; + node.style.transform = `${transform} translate(${a.left - b.left}px, ${a.top - b.top}px)`; + } +} + +let current_component; +function set_current_component(component) { + current_component = component; +} +function get_current_component() { + if (!current_component) + throw new Error(`Function called outside component initialization`); + return current_component; +} +function beforeUpdate(fn) { + get_current_component().$$.before_update.push(fn); +} +function onMount(fn) { + get_current_component().$$.on_mount.push(fn); +} +function afterUpdate(fn) { + get_current_component().$$.after_update.push(fn); +} +function onDestroy(fn) { + get_current_component().$$.on_destroy.push(fn); +} +function createEventDispatcher() { + const component = current_component; + return (type, detail) => { + const callbacks = component.$$.callbacks[type]; + if (callbacks) { + // TODO are there situations where events could be dispatched + // in a server (non-DOM) environment? + const event = custom_event(type, detail); + callbacks.slice().forEach(fn => { + fn.call(component, event); + }); + } + }; +} +function setContext(key, context) { + get_current_component().$$.context.set(key, context); +} +function getContext(key) { + return get_current_component().$$.context.get(key); +} +// TODO figure out if we still want to support +// shorthand events, or if we want to implement +// a real bubbling mechanism +function bubble(component, event) { + const callbacks = component.$$.callbacks[event.type]; + if (callbacks) { + callbacks.slice().forEach(fn => fn(event)); + } +} + +const dirty_components = []; +const intros = { enabled: false }; +const binding_callbacks = []; +const render_callbacks = []; +const flush_callbacks = []; +const resolved_promise = Promise.resolve(); +let update_scheduled = false; +function schedule_update() { + if (!update_scheduled) { + update_scheduled = true; + resolved_promise.then(flush); + } +} +function tick() { + schedule_update(); + return resolved_promise; +} +function add_render_callback(fn) { + render_callbacks.push(fn); +} +function add_flush_callback(fn) { + flush_callbacks.push(fn); +} +function flush() { + const seen_callbacks = new Set(); + do { + // first, call beforeUpdate functions + // and update components + while (dirty_components.length) { + const component = dirty_components.shift(); + set_current_component(component); + update(component.$$); + } + while (binding_callbacks.length) + binding_callbacks.pop()(); + // then, once components are updated, call + // afterUpdate functions. This may cause + // subsequent updates... + for (let i = 0; i < render_callbacks.length; i += 1) { + const callback = render_callbacks[i]; + if (!seen_callbacks.has(callback)) { + callback(); + // ...so guard against infinite loops + seen_callbacks.add(callback); + } + } + render_callbacks.length = 0; + } while (dirty_components.length); + while (flush_callbacks.length) { + flush_callbacks.pop()(); + } + update_scheduled = false; +} +function update($$) { + if ($$.fragment) { + $$.update($$.dirty); + run_all($$.before_update); + $$.fragment.p($$.dirty, $$.ctx); + $$.dirty = null; + $$.after_update.forEach(add_render_callback); + } +} + +let promise; +function wait() { + if (!promise) { + promise = Promise.resolve(); + promise.then(() => { + promise = null; + }); + } + return promise; +} +function dispatch(node, direction, kind) { + node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`)); +} +const outroing = new Set(); +let outros; +function group_outros() { + outros = { + r: 0, + c: [], + p: outros // parent group + }; +} +function check_outros() { + if (!outros.r) { + run_all(outros.c); + } + outros = outros.p; +} +function transition_in(block, local) { + if (block && block.i) { + outroing.delete(block); + block.i(local); + } +} +function transition_out(block, local, detach, callback) { + if (block && block.o) { + if (outroing.has(block)) + return; + outroing.add(block); + outros.c.push(() => { + outroing.delete(block); + if (callback) { + if (detach) + block.d(1); + callback(); + } + }); + block.o(local); + } +} +function create_in_transition(node, fn, params) { + let config = fn(node, params); + let running = false; + let animation_name; + let task; + let uid = 0; + function cleanup() { + if (animation_name) + delete_rule(node, animation_name); + } + function go() { + const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config; + if (css) + animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++); + tick(0, 1); + const start_time = now() + delay; + const end_time = start_time + duration; + if (task) + task.abort(); + running = true; + add_render_callback(() => dispatch(node, true, 'start')); + task = loop(now => { + if (running) { + if (now >= end_time) { + tick(1, 0); + dispatch(node, true, 'end'); + cleanup(); + return running = false; + } + if (now >= start_time) { + const t = easing((now - start_time) / duration); + tick(t, 1 - t); + } + } + return running; + }); + } + let started = false; + return { + start() { + if (started) + return; + delete_rule(node); + if (is_function(config)) { + config = config(); + wait().then(go); + } + else { + go(); + } + }, + invalidate() { + started = false; + }, + end() { + if (running) { + cleanup(); + running = false; + } + } + }; +} +function create_out_transition(node, fn, params) { + let config = fn(node, params); + let running = true; + let animation_name; + const group = outros; + group.r += 1; + function go() { + const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config; + if (css) + animation_name = create_rule(node, 1, 0, duration, delay, easing, css); + const start_time = now() + delay; + const end_time = start_time + duration; + add_render_callback(() => dispatch(node, false, 'start')); + loop(now => { + if (running) { + if (now >= end_time) { + tick(0, 1); + dispatch(node, false, 'end'); + if (!--group.r) { + // this will result in `end()` being called, + // so we don't need to clean up here + run_all(group.c); + } + return false; + } + if (now >= start_time) { + const t = easing((now - start_time) / duration); + tick(1 - t, t); + } + } + return running; + }); + } + if (is_function(config)) { + wait().then(() => { + // @ts-ignore + config = config(); + go(); + }); + } + else { + go(); + } + return { + end(reset) { + if (reset && config.tick) { + config.tick(1, 0); + } + if (running) { + if (animation_name) + delete_rule(node, animation_name); + running = false; + } + } + }; +} +function create_bidirectional_transition(node, fn, params, intro) { + let config = fn(node, params); + let t = intro ? 0 : 1; + let running_program = null; + let pending_program = null; + let animation_name = null; + function clear_animation() { + if (animation_name) + delete_rule(node, animation_name); + } + function init(program, duration) { + const d = program.b - t; + duration *= Math.abs(d); + return { + a: t, + b: program.b, + d, + duration, + start: program.start, + end: program.start + duration, + group: program.group + }; + } + function go(b) { + const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config; + const program = { + start: now() + delay, + b + }; + if (!b) { + // @ts-ignore todo: improve typings + program.group = outros; + outros.r += 1; + } + if (running_program) { + pending_program = program; + } + else { + // if this is an intro, and there's a delay, we need to do + // an initial tick and/or apply CSS animation immediately + if (css) { + clear_animation(); + animation_name = create_rule(node, t, b, duration, delay, easing, css); + } + if (b) + tick(0, 1); + running_program = init(program, duration); + add_render_callback(() => dispatch(node, b, 'start')); + loop(now => { + if (pending_program && now > pending_program.start) { + running_program = init(pending_program, duration); + pending_program = null; + dispatch(node, running_program.b, 'start'); + if (css) { + clear_animation(); + animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css); + } + } + if (running_program) { + if (now >= running_program.end) { + tick(t = running_program.b, 1 - t); + dispatch(node, running_program.b, 'end'); + if (!pending_program) { + // we're done + if (running_program.b) { + // intro — we can tidy up immediately + clear_animation(); + } + else { + // outro — needs to be coordinated + if (!--running_program.group.r) + run_all(running_program.group.c); + } + } + running_program = null; + } + else if (now >= running_program.start) { + const p = now - running_program.start; + t = running_program.a + running_program.d * easing(p / running_program.duration); + tick(t, 1 - t); + } + } + return !!(running_program || pending_program); + }); + } + } + return { + run(b) { + if (is_function(config)) { + wait().then(() => { + // @ts-ignore + config = config(); + go(b); + }); + } + else { + go(b); + } + }, + end() { + clear_animation(); + running_program = pending_program = null; + } + }; +} + +function handle_promise(promise, info) { + const token = info.token = {}; + function update(type, index, key, value) { + if (info.token !== token) + return; + info.resolved = key && { [key]: value }; + const child_ctx = assign(assign({}, info.ctx), info.resolved); + const block = type && (info.current = type)(child_ctx); + if (info.block) { + if (info.blocks) { + info.blocks.forEach((block, i) => { + if (i !== index && block) { + group_outros(); + transition_out(block, 1, 1, () => { + info.blocks[i] = null; + }); + check_outros(); + } + }); + } + else { + info.block.d(1); + } + block.c(); + transition_in(block, 1); + block.m(info.mount(), info.anchor); + flush(); + } + info.block = block; + if (info.blocks) + info.blocks[index] = block; + } + if (is_promise(promise)) { + promise.then(value => { + update(info.then, 1, info.value, value); + }, error => { + update(info.catch, 2, info.error, error); + }); + // if we previously had a then/catch block, destroy it + if (info.current !== info.pending) { + update(info.pending, 0); + return true; + } + } + else { + if (info.current !== info.then) { + update(info.then, 1, info.value, promise); + return true; + } + info.resolved = { [info.value]: promise }; + } +} + +const globals = (typeof window !== 'undefined' ? window : global); + +function destroy_block(block, lookup) { + block.d(1); + lookup.delete(block.key); +} +function outro_and_destroy_block(block, lookup) { + transition_out(block, 1, 1, () => { + lookup.delete(block.key); + }); +} +function fix_and_destroy_block(block, lookup) { + block.f(); + destroy_block(block, lookup); +} +function fix_and_outro_and_destroy_block(block, lookup) { + block.f(); + outro_and_destroy_block(block, lookup); +} +function update_keyed_each(old_blocks, changed, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) { + let o = old_blocks.length; + let n = list.length; + let i = o; + const old_indexes = {}; + while (i--) + old_indexes[old_blocks[i].key] = i; + const new_blocks = []; + const new_lookup = new Map(); + const deltas = new Map(); + i = n; + while (i--) { + const child_ctx = get_context(ctx, list, i); + const key = get_key(child_ctx); + let block = lookup.get(key); + if (!block) { + block = create_each_block(key, child_ctx); + block.c(); + } + else if (dynamic) { + block.p(changed, child_ctx); + } + new_lookup.set(key, new_blocks[i] = block); + if (key in old_indexes) + deltas.set(key, Math.abs(i - old_indexes[key])); + } + const will_move = new Set(); + const did_move = new Set(); + function insert(block) { + transition_in(block, 1); + block.m(node, next); + lookup.set(block.key, block); + next = block.first; + n--; + } + while (o && n) { + const new_block = new_blocks[n - 1]; + const old_block = old_blocks[o - 1]; + const new_key = new_block.key; + const old_key = old_block.key; + if (new_block === old_block) { + // do nothing + next = new_block.first; + o--; + n--; + } + else if (!new_lookup.has(old_key)) { + // remove old block + destroy(old_block, lookup); + o--; + } + else if (!lookup.has(new_key) || will_move.has(new_key)) { + insert(new_block); + } + else if (did_move.has(old_key)) { + o--; + } + else if (deltas.get(new_key) > deltas.get(old_key)) { + did_move.add(new_key); + insert(new_block); + } + else { + will_move.add(old_key); + o--; + } + } + while (o--) { + const old_block = old_blocks[o]; + if (!new_lookup.has(old_block.key)) + destroy(old_block, lookup); + } + while (n) + insert(new_blocks[n - 1]); + return new_blocks; +} +function measure(blocks) { + const rects = {}; + let i = blocks.length; + while (i--) + rects[blocks[i].key] = blocks[i].node.getBoundingClientRect(); + return rects; +} + +function get_spread_update(levels, updates) { + const update = {}; + const to_null_out = {}; + const accounted_for = { $$scope: 1 }; + let i = levels.length; + while (i--) { + const o = levels[i]; + const n = updates[i]; + if (n) { + for (const key in o) { + if (!(key in n)) + to_null_out[key] = 1; + } + for (const key in n) { + if (!accounted_for[key]) { + update[key] = n[key]; + accounted_for[key] = 1; + } + } + levels[i] = n; + } + else { + for (const key in o) { + accounted_for[key] = 1; + } + } + } + for (const key in to_null_out) { + if (!(key in update)) + update[key] = undefined; + } + return update; +} + +const invalid_attribute_name_character = /[\s'">/=\u{FDD0}-\u{FDEF}\u{FFFE}\u{FFFF}\u{1FFFE}\u{1FFFF}\u{2FFFE}\u{2FFFF}\u{3FFFE}\u{3FFFF}\u{4FFFE}\u{4FFFF}\u{5FFFE}\u{5FFFF}\u{6FFFE}\u{6FFFF}\u{7FFFE}\u{7FFFF}\u{8FFFE}\u{8FFFF}\u{9FFFE}\u{9FFFF}\u{AFFFE}\u{AFFFF}\u{BFFFE}\u{BFFFF}\u{CFFFE}\u{CFFFF}\u{DFFFE}\u{DFFFF}\u{EFFFE}\u{EFFFF}\u{FFFFE}\u{FFFFF}\u{10FFFE}\u{10FFFF}]/u; +// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 +// https://infra.spec.whatwg.org/#noncharacter +function spread(args) { + const attributes = Object.assign({}, ...args); + let str = ''; + Object.keys(attributes).forEach(name => { + if (invalid_attribute_name_character.test(name)) + return; + const value = attributes[name]; + if (value === undefined) + return; + if (value === true) + str += " " + name; + const escaped = String(value) + .replace(/"/g, '"') + .replace(/'/g, '''); + str += " " + name + "=" + JSON.stringify(escaped); + }); + return str; +} +const escaped = { + '"': '"', + "'": ''', + '&': '&', + '<': '<', + '>': '>' +}; +function escape(html) { + return String(html).replace(/["'&<>]/g, match => escaped[match]); +} +function each(items, fn) { + let str = ''; + for (let i = 0; i < items.length; i += 1) { + str += fn(items[i], i); + } + return str; +} +const missing_component = { + $$render: () => '' +}; +function validate_component(component, name) { + if (!component || !component.$$render) { + if (name === 'svelte:component') + name += ' this={...}'; + throw new Error(`<${name}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules`); + } + return component; +} +function debug(file, line, column, values) { + console.log(`{@debug} ${file ? file + ' ' : ''}(${line}:${column})`); // eslint-disable-line no-console + console.log(values); // eslint-disable-line no-console + return ''; +} +let on_destroy; +function create_ssr_component(fn) { + function $$render(result, props, bindings, slots) { + const parent_component = current_component; + const $$ = { + on_destroy, + context: new Map(parent_component ? parent_component.$$.context : []), + // these will be immediately discarded + on_mount: [], + before_update: [], + after_update: [], + callbacks: blank_object() + }; + set_current_component({ $$ }); + const html = fn(result, props, bindings, slots); + set_current_component(parent_component); + return html; + } + return { + render: (props = {}, options = {}) => { + on_destroy = []; + const result = { head: '', css: new Set() }; + const html = $$render(result, props, {}, options); + run_all(on_destroy); + return { + html, + css: { + code: Array.from(result.css).map(css => css.code).join('\n'), + map: null // TODO + }, + head: result.head + }; + }, + $$render + }; +} +/** + * Get the current value from a store by subscribing and immediately unsubscribing. + * @param store readable + */ +function get_store_value(store) { + let value; + const unsubscribe = store.subscribe(_ => value = _); + if (unsubscribe.unsubscribe) + unsubscribe.unsubscribe(); + else + unsubscribe(); + return value; +} +function add_attribute(name, value) { + if (!value) + return ''; + return ` ${name}${value === true ? '' : `=${typeof value === 'string' ? JSON.stringify(value) : `"${value}"`}`}`; +} +function add_classes(classes) { + return classes ? ` class="${classes}"` : ``; +} + +function bind(component, name, callback) { + if (component.$$.props.indexOf(name) === -1) + return; + component.$$.bound[name] = callback; + callback(component.$$.ctx[name]); +} +function mount_component(component, target, anchor) { + const { fragment, on_mount, on_destroy, after_update } = component.$$; + fragment.m(target, anchor); + // onMount happens before the initial afterUpdate + add_render_callback(() => { + const new_on_destroy = on_mount.map(run).filter(is_function); + if (on_destroy) { + on_destroy.push(...new_on_destroy); + } + else { + // Edge case - component was destroyed immediately, + // most likely as a result of a binding initialising + run_all(new_on_destroy); + } + component.$$.on_mount = []; + }); + after_update.forEach(add_render_callback); +} +function destroy_component(component, detaching) { + if (component.$$.fragment) { + run_all(component.$$.on_destroy); + component.$$.fragment.d(detaching); + // TODO null out other refs, including component.$$ (but need to + // preserve final state?) + component.$$.on_destroy = component.$$.fragment = null; + component.$$.ctx = {}; + } +} +function make_dirty(component, key) { + if (!component.$$.dirty) { + dirty_components.push(component); + schedule_update(); + component.$$.dirty = blank_object(); + } + component.$$.dirty[key] = true; +} +function init(component, options, instance, create_fragment, not_equal, prop_names) { + const parent_component = current_component; + set_current_component(component); + const props = options.props || {}; + const $$ = component.$$ = { + fragment: null, + ctx: null, + // state + props: prop_names, + update: noop, + not_equal, + bound: blank_object(), + // lifecycle + on_mount: [], + on_destroy: [], + before_update: [], + after_update: [], + context: new Map(parent_component ? parent_component.$$.context : []), + // everything else + callbacks: blank_object(), + dirty: null + }; + let ready = false; + $$.ctx = instance + ? instance(component, props, (key, value) => { + if ($$.ctx && not_equal($$.ctx[key], $$.ctx[key] = value)) { + if ($$.bound[key]) + $$.bound[key](value); + if (ready) + make_dirty(component, key); + } + }) + : props; + $$.update(); + ready = true; + run_all($$.before_update); + $$.fragment = create_fragment($$.ctx); + if (options.target) { + if (options.hydrate) { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + $$.fragment.l(children(options.target)); + } + else { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + $$.fragment.c(); + } + if (options.intro) + transition_in(component.$$.fragment); + mount_component(component, options.target, options.anchor); + flush(); + } + set_current_component(parent_component); +} +let SvelteElement; +if (typeof HTMLElement !== 'undefined') { + SvelteElement = class extends HTMLElement { + constructor() { + super(); + this.attachShadow({ mode: 'open' }); + } + connectedCallback() { + // @ts-ignore todo: improve typings + for (const key in this.$$.slotted) { + // @ts-ignore todo: improve typings + this.appendChild(this.$$.slotted[key]); + } + } + attributeChangedCallback(attr, _oldValue, newValue) { + this[attr] = newValue; + } + $destroy() { + destroy_component(this, 1); + this.$destroy = noop; + } + $on(type, callback) { + // TODO should this delegate to addEventListener? + const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = [])); + callbacks.push(callback); + return () => { + const index = callbacks.indexOf(callback); + if (index !== -1) + callbacks.splice(index, 1); + }; + } + $set() { + // overridden by instance, if it has props + } + }; +} +class SvelteComponent { + $destroy() { + destroy_component(this, 1); + this.$destroy = noop; + } + $on(type, callback) { + const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = [])); + callbacks.push(callback); + return () => { + const index = callbacks.indexOf(callback); + if (index !== -1) + callbacks.splice(index, 1); + }; + } + $set() { + // overridden by instance, if it has props + } +} +class SvelteComponentDev extends SvelteComponent { + constructor(options) { + if (!options || (!options.target && !options.$$inline)) { + throw new Error(`'target' is a required option`); + } + super(); + } + $destroy() { + super.$destroy(); + this.$destroy = () => { + console.warn(`Component was already destroyed`); // eslint-disable-line no-console + }; + } +} + +export { SvelteComponent, SvelteComponentDev, SvelteElement, add_attribute, add_classes, add_flush_callback, add_location, add_render_callback, add_resize_listener, add_transform, afterUpdate, append, assign, attr, beforeUpdate, bind, binding_callbacks, blank_object, bubble, check_outros, children, claim_element, claim_text, clear_loops, createEventDispatcher, create_animation, create_bidirectional_transition, create_in_transition, create_out_transition, create_slot, create_ssr_component, current_component, custom_event, debug, destroy_block, destroy_component, destroy_each, detach, detach_after, detach_before, detach_between, dirty_components, each, element, 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_slot_changes, get_slot_context, get_spread_update, get_store_value, globals, group_outros, handle_promise, identity, init, insert, intros, invalid_attribute_name_character, is_client, is_function, is_promise, listen, loop, measure, missing_component, mount_component, noop, not_equal, now, object_without_properties, onDestroy, onMount, once, outro_and_destroy_block, prevent_default, raf, run, run_all, safe_not_equal, schedule_update, select_multiple_value, select_option, select_options, select_value, setContext, set_attributes, set_current_component, set_custom_element_data, set_data, set_input_type, set_now, set_raf, set_style, space, spread, stop_propagation, subscribe, svg_element, text, tick, time_ranges_to_array, to_number, toggle_class, transition_in, transition_out, update_keyed_each, validate_component, validate_store, xlink_attr }; diff --git a/internal/package.json b/internal/package.json new file mode 100644 index 000000000000..598aeeaf5115 --- /dev/null +++ b/internal/package.json @@ -0,0 +1,5 @@ +{ + "main": "./index", + "module": "./index.mjs", + "types": "./index.d.ts" +} \ No newline at end of file diff --git a/motion/index.d.ts b/motion/index.d.ts new file mode 100644 index 000000000000..8fd1d8b2dace --- /dev/null +++ b/motion/index.d.ts @@ -0,0 +1 @@ +export * from '../types/runtime/motion/index'; \ No newline at end of file diff --git a/motion/index.js b/motion/index.js new file mode 100644 index 000000000000..75316b522762 --- /dev/null +++ b/motion/index.js @@ -0,0 +1,204 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var store = require('../store'); +var internal = require('../internal'); +var easing = require('../easing'); + +function is_date(obj) { + return Object.prototype.toString.call(obj) === '[object Date]'; +} + +function tick_spring(ctx, last_value, current_value, target_value) { + if (typeof current_value === 'number' || is_date(current_value)) { + // @ts-ignore + const delta = target_value - current_value; + // @ts-ignore + const velocity = (current_value - last_value) / (ctx.dt || 1 / 60); // guard div by 0 + const spring = ctx.opts.stiffness * delta; + const damper = ctx.opts.damping * velocity; + const acceleration = (spring - damper) * ctx.inv_mass; + const d = (velocity + acceleration) * ctx.dt; + if (Math.abs(d) < ctx.opts.precision && Math.abs(delta) < ctx.opts.precision) { + return target_value; // settled + } + else { + ctx.settled = false; // signal loop to keep ticking + // @ts-ignore + return is_date(current_value) ? + new Date(current_value.getTime() + d) : current_value + d; + } + } + else if (Array.isArray(current_value)) { + // @ts-ignore + return current_value.map((_, i) => tick_spring(ctx, last_value[i], current_value[i], target_value[i])); + } + else if (typeof current_value === 'object') { + const next_value = {}; + for (const k in current_value) + // @ts-ignore + next_value[k] = tick_spring(ctx, last_value[k], current_value[k], target_value[k]); + // @ts-ignore + return next_value; + } + else { + throw new Error(`Cannot spring ${typeof current_value} values`); + } +} +function spring(value, opts = {}) { + const store$1 = store.writable(value); + const { stiffness = 0.15, damping = 0.8, precision = 0.01 } = opts; + let last_time; + let task; + let current_token; + let last_value = value; + let target_value = value; + let inv_mass = 1; + let inv_mass_recovery_rate = 0; + let cancel_task = false; + /* eslint-disable @typescript-eslint/no-use-before-define */ + function set(new_value, opts = {}) { + target_value = new_value; + const token = current_token = {}; + if (opts.hard || (spring.stiffness >= 1 && spring.damping >= 1)) { + cancel_task = true; // cancel any running animation + last_time = internal.now(); + last_value = value; + store$1.set(value = target_value); + return new Promise(f => f()); // fulfil immediately + } + else if (opts.soft) { + const rate = opts.soft === true ? .5 : +opts.soft; + inv_mass_recovery_rate = 1 / (rate * 60); + inv_mass = 0; // infinite mass, unaffected by spring forces + } + if (!task) { + last_time = internal.now(); + cancel_task = false; + task = internal.loop(now => { + if (cancel_task) { + cancel_task = false; + task = null; + return false; + } + inv_mass = Math.min(inv_mass + inv_mass_recovery_rate, 1); + const ctx = { + inv_mass, + opts: spring, + settled: true, + dt: (now - last_time) * 60 / 1000 + }; + const next_value = tick_spring(ctx, last_value, value, target_value); + last_time = now; + last_value = value; + store$1.set(value = next_value); + if (ctx.settled) + task = null; + return !ctx.settled; + }); + } + return new Promise(fulfil => { + task.promise.then(() => { + if (token === current_token) + fulfil(); + }); + }); + } + /* eslint-enable @typescript-eslint/no-use-before-define */ + const spring = { + set, + update: (fn, opts) => set(fn(target_value, value), opts), + subscribe: store$1.subscribe, + stiffness, + damping, + precision + }; + return spring; +} + +function get_interpolator(a, b) { + if (a === b || a !== a) + return () => a; + const type = typeof a; + if (type !== typeof b || Array.isArray(a) !== Array.isArray(b)) { + throw new Error('Cannot interpolate values of different type'); + } + if (Array.isArray(a)) { + const arr = b.map((bi, i) => { + return get_interpolator(a[i], bi); + }); + return t => arr.map(fn => fn(t)); + } + if (type === 'object') { + if (!a || !b) + throw new Error('Object cannot be null'); + if (is_date(a) && is_date(b)) { + a = a.getTime(); + b = b.getTime(); + const delta = b - a; + return t => new Date(a + t * delta); + } + const keys = Object.keys(b); + const interpolators = {}; + keys.forEach(key => { + interpolators[key] = get_interpolator(a[key], b[key]); + }); + return t => { + const result = {}; + keys.forEach(key => { + result[key] = interpolators[key](t); + }); + return result; + }; + } + if (type === 'number') { + const delta = b - a; + return t => a + t * delta; + } + throw new Error(`Cannot interpolate ${type} values`); +} +function tweened(value, defaults = {}) { + const store$1 = store.writable(value); + let task; + let target_value = value; + function set(new_value, opts) { + target_value = new_value; + let previous_task = task; + let started = false; + let { delay = 0, duration = 400, easing: easing$1 = easing.linear, interpolate = get_interpolator } = internal.assign(internal.assign({}, defaults), opts); + const start = internal.now() + delay; + let fn; + task = internal.loop(now => { + if (now < start) + return true; + if (!started) { + fn = interpolate(value, new_value); + if (typeof duration === 'function') + duration = duration(value, new_value); + started = true; + } + if (previous_task) { + previous_task.abort(); + previous_task = null; + } + const elapsed = now - start; + if (elapsed > duration) { + store$1.set(value = new_value); + return false; + } + // @ts-ignore + store$1.set(value = fn(easing$1(elapsed / duration))); + return true; + }); + return task.promise; + } + return { + set, + update: (fn, opts) => set(fn(target_value, value), opts), + subscribe: store$1.subscribe + }; +} + +exports.spring = spring; +exports.tweened = tweened; diff --git a/motion/index.mjs b/motion/index.mjs new file mode 100644 index 000000000000..d450f5276ea2 --- /dev/null +++ b/motion/index.mjs @@ -0,0 +1,199 @@ +import { writable } from '../store'; +import { now, loop, assign } from '../internal'; +import { linear } from '../easing'; + +function is_date(obj) { + return Object.prototype.toString.call(obj) === '[object Date]'; +} + +function tick_spring(ctx, last_value, current_value, target_value) { + if (typeof current_value === 'number' || is_date(current_value)) { + // @ts-ignore + const delta = target_value - current_value; + // @ts-ignore + const velocity = (current_value - last_value) / (ctx.dt || 1 / 60); // guard div by 0 + const spring = ctx.opts.stiffness * delta; + const damper = ctx.opts.damping * velocity; + const acceleration = (spring - damper) * ctx.inv_mass; + const d = (velocity + acceleration) * ctx.dt; + if (Math.abs(d) < ctx.opts.precision && Math.abs(delta) < ctx.opts.precision) { + return target_value; // settled + } + else { + ctx.settled = false; // signal loop to keep ticking + // @ts-ignore + return is_date(current_value) ? + new Date(current_value.getTime() + d) : current_value + d; + } + } + else if (Array.isArray(current_value)) { + // @ts-ignore + return current_value.map((_, i) => tick_spring(ctx, last_value[i], current_value[i], target_value[i])); + } + else if (typeof current_value === 'object') { + const next_value = {}; + for (const k in current_value) + // @ts-ignore + next_value[k] = tick_spring(ctx, last_value[k], current_value[k], target_value[k]); + // @ts-ignore + return next_value; + } + else { + throw new Error(`Cannot spring ${typeof current_value} values`); + } +} +function spring(value, opts = {}) { + const store = writable(value); + const { stiffness = 0.15, damping = 0.8, precision = 0.01 } = opts; + let last_time; + let task; + let current_token; + let last_value = value; + let target_value = value; + let inv_mass = 1; + let inv_mass_recovery_rate = 0; + let cancel_task = false; + /* eslint-disable @typescript-eslint/no-use-before-define */ + function set(new_value, opts = {}) { + target_value = new_value; + const token = current_token = {}; + if (opts.hard || (spring.stiffness >= 1 && spring.damping >= 1)) { + cancel_task = true; // cancel any running animation + last_time = now(); + last_value = value; + store.set(value = target_value); + return new Promise(f => f()); // fulfil immediately + } + else if (opts.soft) { + const rate = opts.soft === true ? .5 : +opts.soft; + inv_mass_recovery_rate = 1 / (rate * 60); + inv_mass = 0; // infinite mass, unaffected by spring forces + } + if (!task) { + last_time = now(); + cancel_task = false; + task = loop(now => { + if (cancel_task) { + cancel_task = false; + task = null; + return false; + } + inv_mass = Math.min(inv_mass + inv_mass_recovery_rate, 1); + const ctx = { + inv_mass, + opts: spring, + settled: true, + dt: (now - last_time) * 60 / 1000 + }; + const next_value = tick_spring(ctx, last_value, value, target_value); + last_time = now; + last_value = value; + store.set(value = next_value); + if (ctx.settled) + task = null; + return !ctx.settled; + }); + } + return new Promise(fulfil => { + task.promise.then(() => { + if (token === current_token) + fulfil(); + }); + }); + } + /* eslint-enable @typescript-eslint/no-use-before-define */ + const spring = { + set, + update: (fn, opts) => set(fn(target_value, value), opts), + subscribe: store.subscribe, + stiffness, + damping, + precision + }; + return spring; +} + +function get_interpolator(a, b) { + if (a === b || a !== a) + return () => a; + const type = typeof a; + if (type !== typeof b || Array.isArray(a) !== Array.isArray(b)) { + throw new Error('Cannot interpolate values of different type'); + } + if (Array.isArray(a)) { + const arr = b.map((bi, i) => { + return get_interpolator(a[i], bi); + }); + return t => arr.map(fn => fn(t)); + } + if (type === 'object') { + if (!a || !b) + throw new Error('Object cannot be null'); + if (is_date(a) && is_date(b)) { + a = a.getTime(); + b = b.getTime(); + const delta = b - a; + return t => new Date(a + t * delta); + } + const keys = Object.keys(b); + const interpolators = {}; + keys.forEach(key => { + interpolators[key] = get_interpolator(a[key], b[key]); + }); + return t => { + const result = {}; + keys.forEach(key => { + result[key] = interpolators[key](t); + }); + return result; + }; + } + if (type === 'number') { + const delta = b - a; + return t => a + t * delta; + } + throw new Error(`Cannot interpolate ${type} values`); +} +function tweened(value, defaults = {}) { + const store = writable(value); + let task; + let target_value = value; + function set(new_value, opts) { + target_value = new_value; + let previous_task = task; + let started = false; + let { delay = 0, duration = 400, easing = linear, interpolate = get_interpolator } = assign(assign({}, defaults), opts); + const start = now() + delay; + let fn; + task = loop(now => { + if (now < start) + return true; + if (!started) { + fn = interpolate(value, new_value); + if (typeof duration === 'function') + duration = duration(value, new_value); + started = true; + } + if (previous_task) { + previous_task.abort(); + previous_task = null; + } + const elapsed = now - start; + if (elapsed > duration) { + store.set(value = new_value); + return false; + } + // @ts-ignore + store.set(value = fn(easing(elapsed / duration))); + return true; + }); + return task.promise; + } + return { + set, + update: (fn, opts) => set(fn(target_value, value), opts), + subscribe: store.subscribe + }; +} + +export { spring, tweened }; diff --git a/motion/package.json b/motion/package.json new file mode 100644 index 000000000000..598aeeaf5115 --- /dev/null +++ b/motion/package.json @@ -0,0 +1,5 @@ +{ + "main": "./index", + "module": "./index.mjs", + "types": "./index.d.ts" +} \ No newline at end of file diff --git a/store/index.d.ts b/store/index.d.ts new file mode 100644 index 000000000000..fd7820553b78 --- /dev/null +++ b/store/index.d.ts @@ -0,0 +1 @@ +export * from '../types/runtime/store/index'; \ No newline at end of file diff --git a/store/index.js b/store/index.js new file mode 100644 index 000000000000..fb9c4a67339e --- /dev/null +++ b/store/index.js @@ -0,0 +1,137 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var internal = require('../internal'); + +/** + * Creates a `Readable` store that allows reading by subscription. + * @param value initial value + * @param {StartStopNotifier}start start and stop notifications for subscriptions + */ +function readable(value, start) { + return { + subscribe: writable(value, start).subscribe, + }; +} +/** + * Create a `Writable` store that allows both updating and reading by subscription. + * @param {*=}value initial value + * @param {StartStopNotifier=}start start and stop notifications for subscriptions + */ +function writable(value, start = internal.noop) { + let stop; + const subscribers = []; + function set(new_value) { + if (internal.safe_not_equal(value, new_value)) { + value = new_value; + if (stop) { // store is ready + subscribers.forEach((s) => s[1]()); + subscribers.forEach((s) => s[0](value)); + } + } + } + function update(fn) { + return set(fn(value)); + } + function subscribe(run, invalidate = internal.noop) { + const subscriber = [run, invalidate]; + subscribers.push(subscriber); + if (subscribers.length === 1) { + stop = start(set) || internal.noop; + } + run(value); + return () => { + const index = subscribers.indexOf(subscriber); + if (index !== -1) { + subscribers.splice(index, 1); + } + if (subscribers.length === 0) { + stop(); + stop = null; + } + }; + } + return { set, update, subscribe }; +} +/** + * Derived value store by synchronizing one or more readable stores and + * applying an aggregation function over its input values. + * @param {Stores} stores input stores + * @param {function(Stores=, function(*)=):*}fn function callback that aggregates the values + * @param {*=}initial_value when used asynchronously + */ +function derived(stores, fn, initial_value) { + const single = !Array.isArray(stores); + const stores_array = single + ? [stores] + : stores; + const auto = fn.length < 2; + const subscribers = []; + const invalidators = []; + let value = initial_value; + const store = readable(initial_value, (set) => { + let inited = false; + const values = []; + let pending = 0; + let cleanup = internal.noop; + const sync = () => { + if (pending) { + return; + } + cleanup(); + const result = fn(single ? values[0] : values, set); + if (auto) { + set(result); + const dirty = internal.safe_not_equal(value, result); + value = result; + if (!dirty) { + subscribers.forEach(s => s(value)); + } + } + else { + cleanup = internal.is_function(result) ? result : internal.noop; + } + }; + const unsubscribers = stores_array.map((store, i) => store.subscribe((value) => { + values[i] = value; + pending &= ~(1 << i); + if (inited) { + sync(); + } + }, () => { + internal.run_all(invalidators); + pending |= (1 << i); + })); + inited = true; + sync(); + return function stop() { + internal.run_all(unsubscribers); + cleanup(); + }; + }); + return { + subscribe(run, invalidate = internal.noop) { + subscribers.push(run); + invalidators.push(invalidate); + const unsubscribe = store.subscribe(run, invalidate); + return () => { + const index = invalidators.indexOf(invalidate); + if (index !== -1) { + invalidators.splice(index, 1); + } + unsubscribe(); + }; + } + }; +} + +Object.defineProperty(exports, 'get', { + enumerable: true, + get: function () { + return internal.get_store_value; + } +}); +exports.derived = derived; +exports.readable = readable; +exports.writable = writable; diff --git a/store/index.mjs b/store/index.mjs new file mode 100644 index 000000000000..19ae2a25e250 --- /dev/null +++ b/store/index.mjs @@ -0,0 +1,126 @@ +import { safe_not_equal, noop, run_all, is_function } from '../internal'; +export { get_store_value as get } from '../internal'; + +/** + * Creates a `Readable` store that allows reading by subscription. + * @param value initial value + * @param {StartStopNotifier}start start and stop notifications for subscriptions + */ +function readable(value, start) { + return { + subscribe: writable(value, start).subscribe, + }; +} +/** + * Create a `Writable` store that allows both updating and reading by subscription. + * @param {*=}value initial value + * @param {StartStopNotifier=}start start and stop notifications for subscriptions + */ +function writable(value, start = noop) { + let stop; + const subscribers = []; + function set(new_value) { + if (safe_not_equal(value, new_value)) { + value = new_value; + if (stop) { // store is ready + subscribers.forEach((s) => s[1]()); + subscribers.forEach((s) => s[0](value)); + } + } + } + function update(fn) { + return set(fn(value)); + } + function subscribe(run, invalidate = noop) { + const subscriber = [run, invalidate]; + subscribers.push(subscriber); + if (subscribers.length === 1) { + stop = start(set) || noop; + } + run(value); + return () => { + const index = subscribers.indexOf(subscriber); + if (index !== -1) { + subscribers.splice(index, 1); + } + if (subscribers.length === 0) { + stop(); + stop = null; + } + }; + } + return { set, update, subscribe }; +} +/** + * Derived value store by synchronizing one or more readable stores and + * applying an aggregation function over its input values. + * @param {Stores} stores input stores + * @param {function(Stores=, function(*)=):*}fn function callback that aggregates the values + * @param {*=}initial_value when used asynchronously + */ +function derived(stores, fn, initial_value) { + const single = !Array.isArray(stores); + const stores_array = single + ? [stores] + : stores; + const auto = fn.length < 2; + const subscribers = []; + const invalidators = []; + let value = initial_value; + const store = readable(initial_value, (set) => { + let inited = false; + const values = []; + let pending = 0; + let cleanup = noop; + const sync = () => { + if (pending) { + return; + } + cleanup(); + const result = fn(single ? values[0] : values, set); + if (auto) { + set(result); + const dirty = safe_not_equal(value, result); + value = result; + if (!dirty) { + subscribers.forEach(s => s(value)); + } + } + else { + cleanup = is_function(result) ? result : noop; + } + }; + const unsubscribers = stores_array.map((store, i) => store.subscribe((value) => { + values[i] = value; + pending &= ~(1 << i); + if (inited) { + sync(); + } + }, () => { + run_all(invalidators); + pending |= (1 << i); + })); + inited = true; + sync(); + return function stop() { + run_all(unsubscribers); + cleanup(); + }; + }); + return { + subscribe(run, invalidate = noop) { + subscribers.push(run); + invalidators.push(invalidate); + const unsubscribe = store.subscribe(run, invalidate); + return () => { + const index = invalidators.indexOf(invalidate); + if (index !== -1) { + invalidators.splice(index, 1); + } + unsubscribe(); + }; + } + }; +} + +export { derived, readable, writable }; diff --git a/store/package.json b/store/package.json new file mode 100644 index 000000000000..598aeeaf5115 --- /dev/null +++ b/store/package.json @@ -0,0 +1,5 @@ +{ + "main": "./index", + "module": "./index.mjs", + "types": "./index.d.ts" +} \ No newline at end of file diff --git a/transition/index.d.ts b/transition/index.d.ts new file mode 100644 index 000000000000..096460ee475e --- /dev/null +++ b/transition/index.d.ts @@ -0,0 +1 @@ +export * from '../types/runtime/transition/index'; \ No newline at end of file diff --git a/transition/index.js b/transition/index.js new file mode 100644 index 000000000000..1aaaf16a361e --- /dev/null +++ b/transition/index.js @@ -0,0 +1,174 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var easing = require('../easing'); +var internal = require('../internal'); + +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. All rights reserved. +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at http://www.apache.org/licenses/LICENSE-2.0 + +THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED +WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, +MERCHANTABLITY OR NON-INFRINGEMENT. + +See the Apache Version 2.0 License for specific language governing permissions +and limitations under the License. +***************************************************************************** */ + +function __rest(s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; +} + +function fade(node, { delay = 0, duration = 400 }) { + const o = +getComputedStyle(node).opacity; + return { + delay, + duration, + css: t => `opacity: ${t * o}` + }; +} +function fly(node, { delay = 0, duration = 400, easing: easing$1 = easing.cubicOut, x = 0, y = 0, opacity = 0 }) { + const style = getComputedStyle(node); + const target_opacity = +style.opacity; + const transform = style.transform === 'none' ? '' : style.transform; + const od = target_opacity * (1 - opacity); + return { + delay, + duration, + easing: easing$1, + css: (t, u) => ` + transform: ${transform} translate(${(1 - t) * x}px, ${(1 - t) * y}px); + opacity: ${target_opacity - (od * u)}` + }; +} +function slide(node, { delay = 0, duration = 400, easing: easing$1 = easing.cubicOut }) { + const style = getComputedStyle(node); + const opacity = +style.opacity; + const height = parseFloat(style.height); + const padding_top = parseFloat(style.paddingTop); + const padding_bottom = parseFloat(style.paddingBottom); + const margin_top = parseFloat(style.marginTop); + const margin_bottom = parseFloat(style.marginBottom); + const border_top_width = parseFloat(style.borderTopWidth); + const border_bottom_width = parseFloat(style.borderBottomWidth); + return { + delay, + duration, + easing: easing$1, + css: t => `overflow: hidden;` + + `opacity: ${Math.min(t * 20, 1) * opacity};` + + `height: ${t * height}px;` + + `padding-top: ${t * padding_top}px;` + + `padding-bottom: ${t * padding_bottom}px;` + + `margin-top: ${t * margin_top}px;` + + `margin-bottom: ${t * margin_bottom}px;` + + `border-top-width: ${t * border_top_width}px;` + + `border-bottom-width: ${t * border_bottom_width}px;` + }; +} +function scale(node, { delay = 0, duration = 400, easing: easing$1 = easing.cubicOut, start = 0, opacity = 0 }) { + const style = getComputedStyle(node); + const target_opacity = +style.opacity; + const transform = style.transform === 'none' ? '' : style.transform; + const sd = 1 - start; + const od = target_opacity * (1 - opacity); + return { + delay, + duration, + easing: easing$1, + css: (_t, u) => ` + transform: ${transform} scale(${1 - (sd * u)}); + opacity: ${target_opacity - (od * u)} + ` + }; +} +function draw(node, { delay = 0, speed, duration, easing: easing$1 = easing.cubicInOut }) { + const len = node.getTotalLength(); + if (duration === undefined) { + if (speed === undefined) { + duration = 800; + } + else { + duration = len / speed; + } + } + else if (typeof duration === 'function') { + duration = duration(len); + } + return { + delay, + duration, + easing: easing$1, + css: (t, u) => `stroke-dasharray: ${t * len} ${u * len}` + }; +} +function crossfade(_a) { + var { fallback } = _a, defaults = __rest(_a, ["fallback"]); + const to_receive = new Map(); + const to_send = new Map(); + function crossfade(from, node, params) { + const { delay = 0, duration = d => Math.sqrt(d) * 30, easing: easing$1 = easing.cubicOut } = internal.assign(internal.assign({}, defaults), params); + const to = node.getBoundingClientRect(); + const dx = from.left - to.left; + const dy = from.top - to.top; + const dw = from.width / to.width; + const dh = from.height / to.height; + const d = Math.sqrt(dx * dx + dy * dy); + const style = getComputedStyle(node); + const transform = style.transform === 'none' ? '' : style.transform; + const opacity = +style.opacity; + return { + delay, + duration: internal.is_function(duration) ? duration(d) : duration, + easing: easing$1, + css: (t, u) => ` + opacity: ${t * opacity}; + transform-origin: top left; + transform: ${transform} translate(${u * dx}px,${u * dy}px) scale(${t + (1 - t) * dw}, ${t + (1 - t) * dh}); + ` + }; + } + function transition(items, counterparts, intro) { + return (node, params) => { + items.set(params.key, { + rect: node.getBoundingClientRect() + }); + return () => { + if (counterparts.has(params.key)) { + const { rect } = counterparts.get(params.key); + counterparts.delete(params.key); + return crossfade(rect, node, params); + } + // if the node is disappearing altogether + // (i.e. wasn't claimed by the other list) + // then we need to supply an outro + items.delete(params.key); + return fallback && fallback(node, params, intro); + }; + }; + } + return [ + transition(to_send, to_receive, false), + transition(to_receive, to_send, true) + ]; +} + +exports.crossfade = crossfade; +exports.draw = draw; +exports.fade = fade; +exports.fly = fly; +exports.scale = scale; +exports.slide = slide; diff --git a/transition/index.mjs b/transition/index.mjs new file mode 100644 index 000000000000..610f54b768c8 --- /dev/null +++ b/transition/index.mjs @@ -0,0 +1,165 @@ +import { cubicOut, cubicInOut } from '../easing'; +import { is_function, assign } from '../internal'; + +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. All rights reserved. +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at http://www.apache.org/licenses/LICENSE-2.0 + +THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED +WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, +MERCHANTABLITY OR NON-INFRINGEMENT. + +See the Apache Version 2.0 License for specific language governing permissions +and limitations under the License. +***************************************************************************** */ + +function __rest(s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; +} + +function fade(node, { delay = 0, duration = 400 }) { + const o = +getComputedStyle(node).opacity; + return { + delay, + duration, + css: t => `opacity: ${t * o}` + }; +} +function fly(node, { delay = 0, duration = 400, easing = cubicOut, x = 0, y = 0, opacity = 0 }) { + const style = getComputedStyle(node); + const target_opacity = +style.opacity; + const transform = style.transform === 'none' ? '' : style.transform; + const od = target_opacity * (1 - opacity); + return { + delay, + duration, + easing, + css: (t, u) => ` + transform: ${transform} translate(${(1 - t) * x}px, ${(1 - t) * y}px); + opacity: ${target_opacity - (od * u)}` + }; +} +function slide(node, { delay = 0, duration = 400, easing = cubicOut }) { + const style = getComputedStyle(node); + const opacity = +style.opacity; + const height = parseFloat(style.height); + const padding_top = parseFloat(style.paddingTop); + const padding_bottom = parseFloat(style.paddingBottom); + const margin_top = parseFloat(style.marginTop); + const margin_bottom = parseFloat(style.marginBottom); + const border_top_width = parseFloat(style.borderTopWidth); + const border_bottom_width = parseFloat(style.borderBottomWidth); + return { + delay, + duration, + easing, + css: t => `overflow: hidden;` + + `opacity: ${Math.min(t * 20, 1) * opacity};` + + `height: ${t * height}px;` + + `padding-top: ${t * padding_top}px;` + + `padding-bottom: ${t * padding_bottom}px;` + + `margin-top: ${t * margin_top}px;` + + `margin-bottom: ${t * margin_bottom}px;` + + `border-top-width: ${t * border_top_width}px;` + + `border-bottom-width: ${t * border_bottom_width}px;` + }; +} +function scale(node, { delay = 0, duration = 400, easing = cubicOut, start = 0, opacity = 0 }) { + const style = getComputedStyle(node); + const target_opacity = +style.opacity; + const transform = style.transform === 'none' ? '' : style.transform; + const sd = 1 - start; + const od = target_opacity * (1 - opacity); + return { + delay, + duration, + easing, + css: (_t, u) => ` + transform: ${transform} scale(${1 - (sd * u)}); + opacity: ${target_opacity - (od * u)} + ` + }; +} +function draw(node, { delay = 0, speed, duration, easing = cubicInOut }) { + const len = node.getTotalLength(); + if (duration === undefined) { + if (speed === undefined) { + duration = 800; + } + else { + duration = len / speed; + } + } + else if (typeof duration === 'function') { + duration = duration(len); + } + return { + delay, + duration, + easing, + css: (t, u) => `stroke-dasharray: ${t * len} ${u * len}` + }; +} +function crossfade(_a) { + var { fallback } = _a, defaults = __rest(_a, ["fallback"]); + const to_receive = new Map(); + const to_send = new Map(); + function crossfade(from, node, params) { + const { delay = 0, duration = d => Math.sqrt(d) * 30, easing = cubicOut } = assign(assign({}, defaults), params); + const to = node.getBoundingClientRect(); + const dx = from.left - to.left; + const dy = from.top - to.top; + const dw = from.width / to.width; + const dh = from.height / to.height; + const d = Math.sqrt(dx * dx + dy * dy); + const style = getComputedStyle(node); + const transform = style.transform === 'none' ? '' : style.transform; + const opacity = +style.opacity; + return { + delay, + duration: is_function(duration) ? duration(d) : duration, + easing, + css: (t, u) => ` + opacity: ${t * opacity}; + transform-origin: top left; + transform: ${transform} translate(${u * dx}px,${u * dy}px) scale(${t + (1 - t) * dw}, ${t + (1 - t) * dh}); + ` + }; + } + function transition(items, counterparts, intro) { + return (node, params) => { + items.set(params.key, { + rect: node.getBoundingClientRect() + }); + return () => { + if (counterparts.has(params.key)) { + const { rect } = counterparts.get(params.key); + counterparts.delete(params.key); + return crossfade(rect, node, params); + } + // if the node is disappearing altogether + // (i.e. wasn't claimed by the other list) + // then we need to supply an outro + items.delete(params.key); + return fallback && fallback(node, params, intro); + }; + }; + } + return [ + transition(to_send, to_receive, false), + transition(to_receive, to_send, true) + ]; +} + +export { crossfade, draw, fade, fly, scale, slide }; diff --git a/transition/package.json b/transition/package.json new file mode 100644 index 000000000000..598aeeaf5115 --- /dev/null +++ b/transition/package.json @@ -0,0 +1,5 @@ +{ + "main": "./index", + "module": "./index.mjs", + "types": "./index.d.ts" +} \ No newline at end of file diff --git a/types/compiler/Stats.d.ts b/types/compiler/Stats.d.ts new file mode 100644 index 000000000000..0e01e61f982a --- /dev/null +++ b/types/compiler/Stats.d.ts @@ -0,0 +1,22 @@ +interface Timing { + label: string; + start: number; + end: number; + children: Timing[]; +} +export default class Stats { + start_time: number; + current_timing: Timing; + current_children: Timing[]; + timings: Timing[]; + stack: Timing[]; + constructor(); + start(label: any): void; + stop(label: any): void; + render(): { + timings: { + total: number; + }; + }; +} +export {}; diff --git a/types/compiler/compile/Component.d.ts b/types/compiler/compile/Component.d.ts new file mode 100644 index 000000000000..4c4b2afe0fc7 --- /dev/null +++ b/types/compiler/compile/Component.d.ts @@ -0,0 +1,127 @@ +import MagicString from 'magic-string'; +import Stats from '../Stats'; +import { Scope } from './utils/scope'; +import Stylesheet from './css/Stylesheet'; +import Fragment from './nodes/Fragment'; +import { Node, Ast, CompileOptions, Var, Warning } from '../interfaces'; +import TemplateScope from './nodes/shared/TemplateScope'; +import Slot from './nodes/Slot'; +interface ComponentOptions { + namespace?: string; + tag?: string; + immutable?: boolean; + accessors?: boolean; + preserveWhitespace?: boolean; +} +export default class Component { + stats: Stats; + warnings: Warning[]; + ast: Ast; + source: string; + code: MagicString; + name: string; + compile_options: CompileOptions; + fragment: Fragment; + module_scope: Scope; + instance_scope: Scope; + instance_scope_map: WeakMap; + component_options: ComponentOptions; + namespace: string; + tag: string; + accessors: boolean; + vars: Var[]; + var_lookup: Map; + imports: Node[]; + module_javascript: string; + javascript: string; + hoistable_nodes: Set; + node_for_declaration: Map; + partly_hoisted: string[]; + fully_hoisted: string[]; + reactive_declarations: Array<{ + assignees: Set; + dependencies: Set; + node: Node; + declaration: Node; + }>; + reactive_declaration_nodes: Set; + has_reactive_assignments: boolean; + injected_reactive_declaration_vars: Set; + helpers: Map; + globals: Map; + indirect_dependencies: Map>; + file: string; + locate: (c: number) => { + line: number; + column: number; + }; + locator: (search: number, startIndex?: number) => { + line: number; + column: number; + }; + stylesheet: Stylesheet; + aliases: Map; + used_names: Set; + globally_used_names: Set; + slots: Map; + slot_outlets: Set; + constructor(ast: Ast, source: string, name: string, compile_options: CompileOptions, stats: Stats, warnings: Warning[]); + add_var(variable: Var): void; + add_reference(name: string): void; + add_sourcemap_locations(node: Node): void; + alias(name: string): string; + helper(name: string): string; + global(name: string): string; + generate(result: string): { + js: any; + css: any; + ast: Ast; + warnings: Warning[]; + vars: { + name: string; + export_name: string; + injected: boolean; + module: boolean; + mutated: boolean; + reassigned: boolean; + referenced: boolean; + writable: boolean; + }[]; + stats: { + timings: { + total: number; + }; + }; + }; + get_unique_name(name: string): string; + get_unique_name_maker(): (name: string) => string; + error(pos: { + start: number; + end: number; + }, e: { + code: string; + message: string; + }): void; + warn(pos: { + start: number; + end: number; + }, warning: { + code: string; + message: string; + }): void; + extract_imports(content: any): void; + extract_exports(content: any): void; + extract_javascript(script: any): string; + walk_module_js(): void; + walk_instance_js_pre_template(): void; + walk_instance_js_post_template(): void; + track_mutations(): void; + extract_reactive_store_references(): void; + invalidate(name: any, value?: any): any; + rewrite_props(get_insert: (variable: Var) => string): void; + hoist_instance_declarations(): void; + extract_reactive_declarations(): void; + qualify(name: any): any; + warn_if_undefined(name: string, node: any, template_scope: TemplateScope): void; +} +export {}; diff --git a/types/compiler/compile/create_module.d.ts b/types/compiler/compile/create_module.d.ts new file mode 100644 index 000000000000..1c5db9ed19cd --- /dev/null +++ b/types/compiler/compile/create_module.d.ts @@ -0,0 +1,13 @@ +import { ModuleFormat, Node } from '../interfaces'; +interface Export { + name: string; + as: string; +} +export default function create_module(code: string, format: ModuleFormat, name: string, banner: string, sveltePath: string, helpers: Array<{ + name: string; + alias: string; +}>, globals: Array<{ + name: string; + alias: string; +}>, imports: Node[], module_exports: Export[], source: string): string; +export {}; diff --git a/types/compiler/compile/css/Selector.d.ts b/types/compiler/compile/css/Selector.d.ts new file mode 100644 index 000000000000..1429fdbd8381 --- /dev/null +++ b/types/compiler/compile/css/Selector.d.ts @@ -0,0 +1,27 @@ +import MagicString from 'magic-string'; +import Stylesheet from './Stylesheet'; +import { Node } from '../../interfaces'; +import Component from '../Component'; +export default class Selector { + node: Node; + stylesheet: Stylesheet; + blocks: Block[]; + local_blocks: Block[]; + used: boolean; + constructor(node: Node, stylesheet: Stylesheet); + apply(node: Node, stack: Node[]): void; + minify(code: MagicString): void; + transform(code: MagicString, attr: string): void; + validate(component: Component): void; +} +declare class Block { + global: boolean; + combinator: Node; + selectors: Node[]; + start: number; + end: number; + should_encapsulate: boolean; + constructor(combinator: Node); + add(selector: Node): void; +} +export {}; diff --git a/types/compiler/compile/css/Stylesheet.d.ts b/types/compiler/compile/css/Stylesheet.d.ts new file mode 100644 index 000000000000..436c233b7e73 --- /dev/null +++ b/types/compiler/compile/css/Stylesheet.d.ts @@ -0,0 +1,56 @@ +import MagicString from 'magic-string'; +import Selector from './Selector'; +import Element from '../nodes/Element'; +import { Node, Ast } from '../../interfaces'; +import Component from '../Component'; +declare class Rule { + selectors: Selector[]; + declarations: Declaration[]; + node: Node; + parent: Atrule; + constructor(node: Node, stylesheet: any, parent?: Atrule); + apply(node: Element, stack: Element[]): void; + is_used(dev: boolean): boolean; + minify(code: MagicString, _dev: boolean): void; + transform(code: MagicString, id: string, keyframes: Map): boolean; + validate(component: Component): void; + warn_on_unused_selector(handler: (selector: Selector) => void): void; +} +declare class Declaration { + node: Node; + constructor(node: Node); + transform(code: MagicString, keyframes: Map): void; + minify(code: MagicString): void; +} +declare class Atrule { + node: Node; + children: Array; + constructor(node: Node); + apply(node: Element, stack: Element[]): void; + is_used(_dev: boolean): boolean; + minify(code: MagicString, dev: boolean): void; + transform(code: MagicString, id: string, keyframes: Map): void; + validate(component: Component): void; + warn_on_unused_selector(handler: (selector: Selector) => void): void; +} +export default class Stylesheet { + source: string; + ast: Ast; + filename: string; + dev: boolean; + has_styles: boolean; + id: string; + children: Array; + keyframes: Map; + nodes_with_css_class: Set; + constructor(source: string, ast: Ast, filename: string, dev: boolean); + apply(node: Element): void; + reify(): void; + render(file: string, should_transform_selectors: boolean): { + code: string; + map: import("magic-string").SourceMap; + }; + validate(component: Component): void; + warn_on_unused_selectors(component: Component): void; +} +export {}; diff --git a/types/compiler/compile/css/gather_possible_values.d.ts b/types/compiler/compile/css/gather_possible_values.d.ts new file mode 100644 index 000000000000..f77bca7fb0e1 --- /dev/null +++ b/types/compiler/compile/css/gather_possible_values.d.ts @@ -0,0 +1,3 @@ +import { Node } from '../../interfaces'; +export declare const UNKNOWN: {}; +export declare function gather_possible_values(node: Node, set: Set): void; diff --git a/types/compiler/compile/index.d.ts b/types/compiler/compile/index.d.ts new file mode 100644 index 000000000000..bf29a73823ae --- /dev/null +++ b/types/compiler/compile/index.d.ts @@ -0,0 +1,22 @@ +import { CompileOptions, Warning } from '../interfaces'; +export default function compile(source: string, options?: CompileOptions): { + js: any; + css: any; + ast: import("../interfaces").Ast; + warnings: Warning[]; + vars: { + name: string; + export_name: string; + injected: boolean; + module: boolean; + mutated: boolean; + reassigned: boolean; + referenced: boolean; + writable: boolean; + }[]; + stats: { + timings: { + total: number; + }; + }; +}; diff --git a/types/compiler/compile/internal_exports.d.ts b/types/compiler/compile/internal_exports.d.ts new file mode 100644 index 000000000000..1829c318fb71 --- /dev/null +++ b/types/compiler/compile/internal_exports.d.ts @@ -0,0 +1,2 @@ +declare const _default: Set; +export default _default; diff --git a/types/compiler/compile/nodes/Action.d.ts b/types/compiler/compile/nodes/Action.d.ts new file mode 100644 index 000000000000..a27e8fa00f56 --- /dev/null +++ b/types/compiler/compile/nodes/Action.d.ts @@ -0,0 +1,10 @@ +import Node from './shared/Node'; +import Expression from './shared/Expression'; +import Component from '../Component'; +export default class Action extends Node { + type: 'Action'; + name: string; + expression: Expression; + uses_context: boolean; + constructor(component: Component, parent: any, scope: any, info: any); +} diff --git a/types/compiler/compile/nodes/Animation.d.ts b/types/compiler/compile/nodes/Animation.d.ts new file mode 100644 index 000000000000..c0e1aaf9d70e --- /dev/null +++ b/types/compiler/compile/nodes/Animation.d.ts @@ -0,0 +1,9 @@ +import Node from './shared/Node'; +import Expression from './shared/Expression'; +import Component from '../Component'; +export default class Animation extends Node { + type: 'Animation'; + name: string; + expression: Expression; + constructor(component: Component, parent: any, scope: any, info: any); +} diff --git a/types/compiler/compile/nodes/Attribute.d.ts b/types/compiler/compile/nodes/Attribute.d.ts new file mode 100644 index 000000000000..064645557e01 --- /dev/null +++ b/types/compiler/compile/nodes/Attribute.d.ts @@ -0,0 +1,26 @@ +import Component from '../Component'; +import Node from './shared/Node'; +import Element from './Element'; +import Text from './Text'; +import Expression from './shared/Expression'; +export default class Attribute extends Node { + type: 'Attribute'; + start: number; + end: number; + component: Component; + parent: Element; + name: string; + is_spread: boolean; + is_true: boolean; + is_dynamic: boolean; + is_static: boolean; + is_synthetic: boolean; + should_cache: boolean; + expression?: Expression; + chunks: Array; + dependencies: Set; + constructor(component: any, parent: any, scope: any, info: any); + get_dependencies(): unknown[]; + get_value(block: any): any; + get_static_value(): string | true; +} diff --git a/types/compiler/compile/nodes/AwaitBlock.d.ts b/types/compiler/compile/nodes/AwaitBlock.d.ts new file mode 100644 index 000000000000..515fcbfb5ecd --- /dev/null +++ b/types/compiler/compile/nodes/AwaitBlock.d.ts @@ -0,0 +1,15 @@ +import Node from './shared/Node'; +import PendingBlock from './PendingBlock'; +import ThenBlock from './ThenBlock'; +import CatchBlock from './CatchBlock'; +import Expression from './shared/Expression'; +export default class AwaitBlock extends Node { + type: 'AwaitBlock'; + expression: Expression; + value: string; + error: string; + pending: PendingBlock; + then: ThenBlock; + catch: CatchBlock; + constructor(component: any, parent: any, scope: any, info: any); +} diff --git a/types/compiler/compile/nodes/Binding.d.ts b/types/compiler/compile/nodes/Binding.d.ts new file mode 100644 index 000000000000..e240c7914a1b --- /dev/null +++ b/types/compiler/compile/nodes/Binding.d.ts @@ -0,0 +1,15 @@ +import Node from './shared/Node'; +import Expression from './shared/Expression'; +import Component from '../Component'; +import TemplateScope from './shared/TemplateScope'; +export default class Binding extends Node { + type: 'Binding'; + name: string; + expression: Expression; + is_contextual: boolean; + obj: string; + prop: string; + is_readonly: boolean; + constructor(component: Component, parent: any, scope: TemplateScope, info: any); + is_readonly_media_attribute(): boolean; +} diff --git a/types/compiler/compile/nodes/Body.d.ts b/types/compiler/compile/nodes/Body.d.ts new file mode 100644 index 000000000000..0b28b461c0f2 --- /dev/null +++ b/types/compiler/compile/nodes/Body.d.ts @@ -0,0 +1,7 @@ +import Node from './shared/Node'; +import EventHandler from './EventHandler'; +export default class Body extends Node { + type: 'Body'; + handlers: EventHandler[]; + constructor(component: any, parent: any, scope: any, info: any); +} diff --git a/types/compiler/compile/nodes/CatchBlock.d.ts b/types/compiler/compile/nodes/CatchBlock.d.ts new file mode 100644 index 000000000000..e05166ef86d3 --- /dev/null +++ b/types/compiler/compile/nodes/CatchBlock.d.ts @@ -0,0 +1,7 @@ +import TemplateScope from './shared/TemplateScope'; +import AbstractBlock from './shared/AbstractBlock'; +export default class CatchBlock extends AbstractBlock { + type: 'CatchBlock'; + scope: TemplateScope; + constructor(component: any, parent: any, scope: any, info: any); +} diff --git a/types/compiler/compile/nodes/Class.d.ts b/types/compiler/compile/nodes/Class.d.ts new file mode 100644 index 000000000000..8d2643529f7b --- /dev/null +++ b/types/compiler/compile/nodes/Class.d.ts @@ -0,0 +1,8 @@ +import Node from './shared/Node'; +import Expression from './shared/Expression'; +export default class Class extends Node { + type: 'Class'; + name: string; + expression: Expression; + constructor(component: any, parent: any, scope: any, info: any); +} diff --git a/types/compiler/compile/nodes/Comment.d.ts b/types/compiler/compile/nodes/Comment.d.ts new file mode 100644 index 000000000000..b28cd3f2cd29 --- /dev/null +++ b/types/compiler/compile/nodes/Comment.d.ts @@ -0,0 +1,6 @@ +import Node from './shared/Node'; +export default class Comment extends Node { + type: 'Comment'; + data: string; + constructor(component: any, parent: any, scope: any, info: any); +} diff --git a/types/compiler/compile/nodes/DebugTag.d.ts b/types/compiler/compile/nodes/DebugTag.d.ts new file mode 100644 index 000000000000..bc7591af175c --- /dev/null +++ b/types/compiler/compile/nodes/DebugTag.d.ts @@ -0,0 +1,7 @@ +import Node from './shared/Node'; +import Expression from './shared/Expression'; +export default class DebugTag extends Node { + type: 'DebugTag'; + expressions: Expression[]; + constructor(component: any, parent: any, scope: any, info: any); +} diff --git a/types/compiler/compile/nodes/EachBlock.d.ts b/types/compiler/compile/nodes/EachBlock.d.ts new file mode 100644 index 000000000000..3bd780454a59 --- /dev/null +++ b/types/compiler/compile/nodes/EachBlock.d.ts @@ -0,0 +1,27 @@ +import Node from './shared/Node'; +import ElseBlock from './ElseBlock'; +import Expression from './shared/Expression'; +import TemplateScope from './shared/TemplateScope'; +import AbstractBlock from './shared/AbstractBlock'; +import { Node as INode } from '../../interfaces'; +interface Context { + key: INode; + name?: string; + tail: string; +} +export default class EachBlock extends AbstractBlock { + type: 'EachBlock'; + expression: Expression; + context_node: Node; + iterations: string; + index: string; + context: string; + key: Expression; + scope: TemplateScope; + contexts: Context[]; + has_animation: boolean; + has_binding: boolean; + else?: ElseBlock; + constructor(component: any, parent: any, scope: any, info: any); +} +export {}; diff --git a/types/compiler/compile/nodes/Element.d.ts b/types/compiler/compile/nodes/Element.d.ts new file mode 100644 index 000000000000..ffd0da602775 --- /dev/null +++ b/types/compiler/compile/nodes/Element.d.ts @@ -0,0 +1,35 @@ +import Node from './shared/Node'; +import Attribute from './Attribute'; +import Binding from './Binding'; +import EventHandler from './EventHandler'; +import Transition from './Transition'; +import Animation from './Animation'; +import Action from './Action'; +import Class from './Class'; +import Let from './Let'; +import TemplateScope from './shared/TemplateScope'; +import { INode } from './interfaces'; +export default class Element extends Node { + type: 'Element'; + name: string; + scope: TemplateScope; + attributes: Attribute[]; + actions: Action[]; + bindings: Binding[]; + classes: Class[]; + handlers: EventHandler[]; + lets: Let[]; + intro?: Transition; + outro?: Transition; + animation?: Animation; + children: INode[]; + namespace: string; + constructor(component: any, parent: any, scope: any, info: any); + validate(): void; + validate_attributes(): void; + validate_bindings(): void; + validate_content(): void; + validate_event_handlers(): void; + is_media_node(): boolean; + add_css_class(class_name?: string): void; +} diff --git a/types/compiler/compile/nodes/ElseBlock.d.ts b/types/compiler/compile/nodes/ElseBlock.d.ts new file mode 100644 index 000000000000..2feacc50c3bc --- /dev/null +++ b/types/compiler/compile/nodes/ElseBlock.d.ts @@ -0,0 +1,6 @@ +import AbstractBlock from './shared/AbstractBlock'; +import Component from '../Component'; +export default class ElseBlock extends AbstractBlock { + type: 'ElseBlock'; + constructor(component: Component, parent: any, scope: any, info: any); +} diff --git a/types/compiler/compile/nodes/EventHandler.d.ts b/types/compiler/compile/nodes/EventHandler.d.ts new file mode 100644 index 000000000000..a83c0ad9e229 --- /dev/null +++ b/types/compiler/compile/nodes/EventHandler.d.ts @@ -0,0 +1,15 @@ +import Node from './shared/Node'; +import Expression from './shared/Expression'; +import Component from '../Component'; +import Block from '../render_dom/Block'; +export default class EventHandler extends Node { + type: 'EventHandler'; + name: string; + modifiers: Set; + expression: Expression; + handler_name: string; + uses_context: boolean; + can_make_passive: boolean; + constructor(component: Component, parent: any, template_scope: any, info: any); + render(block: Block): string; +} diff --git a/types/compiler/compile/nodes/Fragment.d.ts b/types/compiler/compile/nodes/Fragment.d.ts new file mode 100644 index 000000000000..d245ac6ebde5 --- /dev/null +++ b/types/compiler/compile/nodes/Fragment.d.ts @@ -0,0 +1,12 @@ +import Node from './shared/Node'; +import Component from '../Component'; +import Block from '../render_dom/Block'; +import TemplateScope from './shared/TemplateScope'; +import { INode } from './interfaces'; +export default class Fragment extends Node { + type: 'Fragment'; + block: Block; + children: INode[]; + scope: TemplateScope; + constructor(component: Component, info: any); +} diff --git a/types/compiler/compile/nodes/Head.d.ts b/types/compiler/compile/nodes/Head.d.ts new file mode 100644 index 000000000000..1d34405106cc --- /dev/null +++ b/types/compiler/compile/nodes/Head.d.ts @@ -0,0 +1,6 @@ +import Node from './shared/Node'; +export default class Head extends Node { + type: 'Head'; + children: any[]; + constructor(component: any, parent: any, scope: any, info: any); +} diff --git a/types/compiler/compile/nodes/IfBlock.d.ts b/types/compiler/compile/nodes/IfBlock.d.ts new file mode 100644 index 000000000000..942a7f86f67c --- /dev/null +++ b/types/compiler/compile/nodes/IfBlock.d.ts @@ -0,0 +1,9 @@ +import ElseBlock from './ElseBlock'; +import Expression from './shared/Expression'; +import AbstractBlock from './shared/AbstractBlock'; +export default class IfBlock extends AbstractBlock { + type: 'IfBlock'; + expression: Expression; + else: ElseBlock; + constructor(component: any, parent: any, scope: any, info: any); +} diff --git a/types/compiler/compile/nodes/InlineComponent.d.ts b/types/compiler/compile/nodes/InlineComponent.d.ts new file mode 100644 index 000000000000..4722e31e9210 --- /dev/null +++ b/types/compiler/compile/nodes/InlineComponent.d.ts @@ -0,0 +1,21 @@ +import Node from './shared/Node'; +import Attribute from './Attribute'; +import Binding from './Binding'; +import EventHandler from './EventHandler'; +import Expression from './shared/Expression'; +import Component from '../Component'; +import Let from './Let'; +import TemplateScope from './shared/TemplateScope'; +import { INode } from './interfaces'; +export default class InlineComponent extends Node { + type: 'InlineComponent'; + name: string; + expression: Expression; + attributes: Attribute[]; + bindings: Binding[]; + handlers: EventHandler[]; + lets: Let[]; + children: INode[]; + scope: TemplateScope; + constructor(component: Component, parent: any, scope: any, info: any); +} diff --git a/types/compiler/compile/nodes/Let.d.ts b/types/compiler/compile/nodes/Let.d.ts new file mode 100644 index 000000000000..4d9e8709e8f4 --- /dev/null +++ b/types/compiler/compile/nodes/Let.d.ts @@ -0,0 +1,9 @@ +import Node from './shared/Node'; +import Component from '../Component'; +export default class Let extends Node { + type: 'Let'; + name: string; + value: string; + names: string[]; + constructor(component: Component, parent: any, scope: any, info: any); +} diff --git a/types/compiler/compile/nodes/MustacheTag.d.ts b/types/compiler/compile/nodes/MustacheTag.d.ts new file mode 100644 index 000000000000..f659e3d44339 --- /dev/null +++ b/types/compiler/compile/nodes/MustacheTag.d.ts @@ -0,0 +1,4 @@ +import Tag from './shared/Tag'; +export default class MustacheTag extends Tag { + type: 'MustacheTag'; +} diff --git a/types/compiler/compile/nodes/Options.d.ts b/types/compiler/compile/nodes/Options.d.ts new file mode 100644 index 000000000000..d114122fb508 --- /dev/null +++ b/types/compiler/compile/nodes/Options.d.ts @@ -0,0 +1,4 @@ +import Node from './shared/Node'; +export default class Options extends Node { + type: 'Options'; +} diff --git a/types/compiler/compile/nodes/PendingBlock.d.ts b/types/compiler/compile/nodes/PendingBlock.d.ts new file mode 100644 index 000000000000..cc8091d5ce8d --- /dev/null +++ b/types/compiler/compile/nodes/PendingBlock.d.ts @@ -0,0 +1,5 @@ +import AbstractBlock from './shared/AbstractBlock'; +export default class PendingBlock extends AbstractBlock { + type: 'PendingBlock'; + constructor(component: any, parent: any, scope: any, info: any); +} diff --git a/types/compiler/compile/nodes/RawMustacheTag.d.ts b/types/compiler/compile/nodes/RawMustacheTag.d.ts new file mode 100644 index 000000000000..98b279d86b1d --- /dev/null +++ b/types/compiler/compile/nodes/RawMustacheTag.d.ts @@ -0,0 +1,4 @@ +import Tag from './shared/Tag'; +export default class RawMustacheTag extends Tag { + type: 'RawMustacheTag'; +} diff --git a/types/compiler/compile/nodes/Slot.d.ts b/types/compiler/compile/nodes/Slot.d.ts new file mode 100644 index 000000000000..5b96830cd245 --- /dev/null +++ b/types/compiler/compile/nodes/Slot.d.ts @@ -0,0 +1,13 @@ +import Element from './Element'; +import Attribute from './Attribute'; +import Component from '../Component'; +import TemplateScope from './shared/TemplateScope'; +import { INode } from './interfaces'; +export default class Slot extends Element { + type: 'Element'; + name: string; + children: INode[]; + slot_name: string; + values: Map; + constructor(component: Component, parent: INode, scope: TemplateScope, info: any); +} diff --git a/types/compiler/compile/nodes/Text.d.ts b/types/compiler/compile/nodes/Text.d.ts new file mode 100644 index 000000000000..4c794ec68d7c --- /dev/null +++ b/types/compiler/compile/nodes/Text.d.ts @@ -0,0 +1,9 @@ +import Node from './shared/Node'; +import Component from '../Component'; +import TemplateScope from './shared/TemplateScope'; +import { INode } from './interfaces'; +export default class Text extends Node { + type: 'Text'; + data: string; + constructor(component: Component, parent: INode, scope: TemplateScope, info: any); +} diff --git a/types/compiler/compile/nodes/ThenBlock.d.ts b/types/compiler/compile/nodes/ThenBlock.d.ts new file mode 100644 index 000000000000..06c917dd80ff --- /dev/null +++ b/types/compiler/compile/nodes/ThenBlock.d.ts @@ -0,0 +1,7 @@ +import TemplateScope from './shared/TemplateScope'; +import AbstractBlock from './shared/AbstractBlock'; +export default class ThenBlock extends AbstractBlock { + type: 'ThenBlock'; + scope: TemplateScope; + constructor(component: any, parent: any, scope: any, info: any); +} diff --git a/types/compiler/compile/nodes/Title.d.ts b/types/compiler/compile/nodes/Title.d.ts new file mode 100644 index 000000000000..bb4e96974930 --- /dev/null +++ b/types/compiler/compile/nodes/Title.d.ts @@ -0,0 +1,9 @@ +import Node from './shared/Node'; +import { Children } from './shared/map_children'; +import Component from '../Component'; +export default class Title extends Node { + type: 'Title'; + children: Children; + should_cache: boolean; + constructor(component: Component, parent: any, scope: any, info: any); +} diff --git a/types/compiler/compile/nodes/Transition.d.ts b/types/compiler/compile/nodes/Transition.d.ts new file mode 100644 index 000000000000..b0fba3661096 --- /dev/null +++ b/types/compiler/compile/nodes/Transition.d.ts @@ -0,0 +1,11 @@ +import Node from './shared/Node'; +import Expression from './shared/Expression'; +import Component from '../Component'; +export default class Transition extends Node { + type: 'Transition'; + name: string; + directive: string; + expression: Expression; + is_local: boolean; + constructor(component: Component, parent: any, scope: any, info: any); +} diff --git a/types/compiler/compile/nodes/Window.d.ts b/types/compiler/compile/nodes/Window.d.ts new file mode 100644 index 000000000000..b9de1f32b577 --- /dev/null +++ b/types/compiler/compile/nodes/Window.d.ts @@ -0,0 +1,11 @@ +import Node from './shared/Node'; +import Binding from './Binding'; +import EventHandler from './EventHandler'; +import Action from './Action'; +export default class Window extends Node { + type: 'Window'; + handlers: EventHandler[]; + bindings: Binding[]; + actions: Action[]; + constructor(component: any, parent: any, scope: any, info: any); +} diff --git a/types/compiler/compile/nodes/interfaces.d.ts b/types/compiler/compile/nodes/interfaces.d.ts new file mode 100644 index 000000000000..9dc11db59df1 --- /dev/null +++ b/types/compiler/compile/nodes/interfaces.d.ts @@ -0,0 +1,31 @@ +import Tag from './shared/Tag'; +import Action from './Action'; +import Animation from './Animation'; +import Attribute from './Attribute'; +import AwaitBlock from './AwaitBlock'; +import Binding from './Binding'; +import Body from './Body'; +import CatchBlock from './CatchBlock'; +import Class from './Class'; +import Comment from './Comment'; +import DebugTag from './DebugTag'; +import EachBlock from './EachBlock'; +import Element from './Element'; +import ElseBlock from './ElseBlock'; +import EventHandler from './EventHandler'; +import Fragment from './Fragment'; +import Head from './Head'; +import IfBlock from './IfBlock'; +import InlineComponent from './InlineComponent'; +import Let from './Let'; +import MustacheTag from './MustacheTag'; +import Options from './Options'; +import PendingBlock from './PendingBlock'; +import RawMustacheTag from './RawMustacheTag'; +import Slot from './Slot'; +import Text from './Text'; +import ThenBlock from './ThenBlock'; +import Title from './Title'; +import Transition from './Transition'; +import Window from './Window'; +export declare type INode = Action | Animation | Attribute | AwaitBlock | Binding | Body | CatchBlock | Class | Comment | DebugTag | EachBlock | Element | ElseBlock | EventHandler | Fragment | Head | IfBlock | InlineComponent | Let | MustacheTag | Options | PendingBlock | RawMustacheTag | Slot | Tag | Text | ThenBlock | Title | Transition | Window; diff --git a/types/compiler/compile/nodes/shared/AbstractBlock.d.ts b/types/compiler/compile/nodes/shared/AbstractBlock.d.ts new file mode 100644 index 000000000000..9dea594b8084 --- /dev/null +++ b/types/compiler/compile/nodes/shared/AbstractBlock.d.ts @@ -0,0 +1,10 @@ +import Block from '../../render_dom/Block'; +import Component from '../../Component'; +import Node from './Node'; +import { INode } from '../interfaces'; +export default class AbstractBlock extends Node { + block: Block; + children: INode[]; + constructor(component: Component, parent: any, scope: any, info: any); + warn_if_empty_block(): void; +} diff --git a/types/compiler/compile/nodes/shared/Expression.d.ts b/types/compiler/compile/nodes/shared/Expression.d.ts new file mode 100644 index 000000000000..b7791c47c13e --- /dev/null +++ b/types/compiler/compile/nodes/shared/Expression.d.ts @@ -0,0 +1,30 @@ +import Component from '../../Component'; +import { Scope } from '../../utils/scope'; +import { Node } from '../../../interfaces'; +import Wrapper from '../../render_dom/wrappers/shared/Wrapper'; +import TemplateScope from './TemplateScope'; +import Block from '../../render_dom/Block'; +import { INode } from '../interfaces'; +declare type Owner = Wrapper | INode; +export default class Expression { + type: 'Expression'; + component: Component; + owner: Owner; + node: any; + snippet: string; + references: Set; + dependencies: Set; + contextual_dependencies: Set; + template_scope: TemplateScope; + scope: Scope; + scope_map: WeakMap; + is_synthetic: boolean; + declarations: string[]; + uses_context: boolean; + rendered: string; + constructor(component: Component, owner: Owner, template_scope: TemplateScope, info: any, lazy?: boolean); + dynamic_dependencies(): string[]; + get_precedence(): number; + render(block?: Block): string; +} +export {}; diff --git a/types/compiler/compile/nodes/shared/Node.d.ts b/types/compiler/compile/nodes/shared/Node.d.ts new file mode 100644 index 000000000000..838c6b12d7d0 --- /dev/null +++ b/types/compiler/compile/nodes/shared/Node.d.ts @@ -0,0 +1,20 @@ +import Attribute from '../Attribute'; +import Component from '../../Component'; +import { INode } from '../interfaces'; +export default class Node { + readonly start: number; + readonly end: number; + readonly component: Component; + readonly parent: INode; + readonly type: string; + prev?: INode; + next?: INode; + can_use_innerhtml: boolean; + var: string; + attributes: Attribute[]; + constructor(component: Component, parent: any, _scope: any, info: any); + cannot_use_innerhtml(): void; + find_nearest(selector: RegExp): any; + get_static_attribute_value(name: string): string | true; + has_ancestor(type: string): any; +} diff --git a/types/compiler/compile/nodes/shared/Tag.d.ts b/types/compiler/compile/nodes/shared/Tag.d.ts new file mode 100644 index 000000000000..8c5db1895893 --- /dev/null +++ b/types/compiler/compile/nodes/shared/Tag.d.ts @@ -0,0 +1,8 @@ +import Node from './Node'; +import Expression from './Expression'; +export default class Tag extends Node { + type: 'MustacheTag' | 'RawMustacheTag'; + expression: Expression; + should_cache: boolean; + constructor(component: any, parent: any, scope: any, info: any); +} diff --git a/types/compiler/compile/nodes/shared/TemplateScope.d.ts b/types/compiler/compile/nodes/shared/TemplateScope.d.ts new file mode 100644 index 000000000000..78c67558e626 --- /dev/null +++ b/types/compiler/compile/nodes/shared/TemplateScope.d.ts @@ -0,0 +1,19 @@ +import EachBlock from '../EachBlock'; +import ThenBlock from '../ThenBlock'; +import CatchBlock from '../CatchBlock'; +import InlineComponent from '../InlineComponent'; +import Element from '../Element'; +declare type NodeWithScope = EachBlock | ThenBlock | CatchBlock | InlineComponent | Element; +export default class TemplateScope { + names: Set; + dependencies_for_name: Map>; + owners: Map; + parent?: TemplateScope; + constructor(parent?: TemplateScope); + add(name: any, dependencies: Set, owner: any): this; + child(): TemplateScope; + is_top_level(name: string): any; + get_owner(name: string): NodeWithScope; + is_let(name: string): boolean; +} +export {}; diff --git a/types/compiler/compile/nodes/shared/map_children.d.ts b/types/compiler/compile/nodes/shared/map_children.d.ts new file mode 100644 index 000000000000..028de8fce18a --- /dev/null +++ b/types/compiler/compile/nodes/shared/map_children.d.ts @@ -0,0 +1,18 @@ +import AwaitBlock from '../AwaitBlock'; +import Body from '../Body'; +import Comment from '../Comment'; +import EachBlock from '../EachBlock'; +import Element from '../Element'; +import Head from '../Head'; +import IfBlock from '../IfBlock'; +import InlineComponent from '../InlineComponent'; +import MustacheTag from '../MustacheTag'; +import Options from '../Options'; +import RawMustacheTag from '../RawMustacheTag'; +import DebugTag from '../DebugTag'; +import Text from '../Text'; +import Title from '../Title'; +import Window from '../Window'; +import { Node } from '../../../interfaces'; +export declare type Children = ReturnType; +export default function map_children(component: any, parent: any, scope: any, children: Node[]): (AwaitBlock | Body | Comment | DebugTag | EachBlock | Element | Head | IfBlock | InlineComponent | MustacheTag | Options | RawMustacheTag | Text | Title | Window)[]; diff --git a/types/compiler/compile/render_dom/Block.d.ts b/types/compiler/compile/render_dom/Block.d.ts new file mode 100644 index 000000000000..2538c6822279 --- /dev/null +++ b/types/compiler/compile/render_dom/Block.d.ts @@ -0,0 +1,71 @@ +import CodeBuilder from '../utils/CodeBuilder'; +import Renderer from './Renderer'; +import Wrapper from './wrappers/shared/Wrapper'; +export interface BlockOptions { + parent?: Block; + name: string; + renderer?: Renderer; + comment?: string; + key?: string; + bindings?: Map; + dependencies?: Set; +} +export default class Block { + parent?: Block; + renderer: Renderer; + name: string; + comment?: string; + wrappers: Wrapper[]; + key: string; + first: string; + dependencies: Set; + bindings: Map; + builders: { + init: CodeBuilder; + create: CodeBuilder; + claim: CodeBuilder; + hydrate: CodeBuilder; + mount: CodeBuilder; + measure: CodeBuilder; + fix: CodeBuilder; + animate: CodeBuilder; + intro: CodeBuilder; + update: CodeBuilder; + outro: CodeBuilder; + destroy: CodeBuilder; + }; + event_listeners: string[]; + maintain_context: boolean; + has_animation: boolean; + has_intros: boolean; + has_outros: boolean; + has_intro_method: boolean; + has_outro_method: boolean; + outros: number; + aliases: Map; + variables: Map; + get_unique_name: (name: string) => string; + has_update_method: boolean; + autofocus: string; + constructor(options: BlockOptions); + assign_variable_names(): void; + add_dependencies(dependencies: Set): void; + add_element(name: string, render_statement: string, claim_statement: string, parent_node: string, no_detach?: boolean): void; + add_intro(local?: boolean): void; + add_outro(local?: boolean): void; + add_animation(): void; + add_variable(name: string, init?: string): void; + alias(name: string): string; + child(options: BlockOptions): Block; + get_contents(local_key?: string): string; + render_listeners(chunk?: string): void; + toString(): string; +} diff --git a/types/compiler/compile/render_dom/Renderer.d.ts b/types/compiler/compile/render_dom/Renderer.d.ts new file mode 100644 index 000000000000..b6ca6742a4c8 --- /dev/null +++ b/types/compiler/compile/render_dom/Renderer.d.ts @@ -0,0 +1,21 @@ +import Block from './Block'; +import { CompileOptions } from '../../interfaces'; +import Component from '../Component'; +import FragmentWrapper from './wrappers/Fragment'; +import CodeBuilder from '../utils/CodeBuilder'; +export default class Renderer { + component: Component; + options: CompileOptions; + blocks: Array; + readonly: Set; + meta_bindings: CodeBuilder; + binding_groups: string[]; + block: Block; + fragment: FragmentWrapper; + file_var: string; + locate: (c: number) => { + line: number; + column: number; + }; + constructor(component: Component, options: CompileOptions); +} diff --git a/types/compiler/compile/render_dom/index.d.ts b/types/compiler/compile/render_dom/index.d.ts new file mode 100644 index 000000000000..d2f2617140e7 --- /dev/null +++ b/types/compiler/compile/render_dom/index.d.ts @@ -0,0 +1,3 @@ +import Component from '../Component'; +import { CompileOptions } from '../../interfaces'; +export default function dom(component: Component, options: CompileOptions): string; diff --git a/types/compiler/compile/render_dom/wrappers/AwaitBlock.d.ts b/types/compiler/compile/render_dom/wrappers/AwaitBlock.d.ts new file mode 100644 index 000000000000..8cea183795f5 --- /dev/null +++ b/types/compiler/compile/render_dom/wrappers/AwaitBlock.d.ts @@ -0,0 +1,26 @@ +import Wrapper from './shared/Wrapper'; +import Renderer from '../Renderer'; +import Block from '../Block'; +import AwaitBlock from '../../nodes/AwaitBlock'; +import FragmentWrapper from './Fragment'; +import PendingBlock from '../../nodes/PendingBlock'; +import ThenBlock from '../../nodes/ThenBlock'; +import CatchBlock from '../../nodes/CatchBlock'; +declare class AwaitBlockBranch extends Wrapper { + node: PendingBlock | ThenBlock | CatchBlock; + block: Block; + fragment: FragmentWrapper; + is_dynamic: boolean; + var: any; + constructor(status: string, renderer: Renderer, block: Block, parent: Wrapper, node: AwaitBlock, strip_whitespace: boolean, next_sibling: Wrapper); +} +export default class AwaitBlockWrapper extends Wrapper { + node: AwaitBlock; + pending: AwaitBlockBranch; + then: AwaitBlockBranch; + catch: AwaitBlockBranch; + var: string; + constructor(renderer: Renderer, block: Block, parent: Wrapper, node: AwaitBlock, strip_whitespace: boolean, next_sibling: Wrapper); + render(block: Block, parent_node: string, parent_nodes: string): void; +} +export {}; diff --git a/types/compiler/compile/render_dom/wrappers/Body.d.ts b/types/compiler/compile/render_dom/wrappers/Body.d.ts new file mode 100644 index 000000000000..d1ef65733b7c --- /dev/null +++ b/types/compiler/compile/render_dom/wrappers/Body.d.ts @@ -0,0 +1,7 @@ +import Block from '../Block'; +import Wrapper from './shared/Wrapper'; +import Body from '../../nodes/Body'; +export default class BodyWrapper extends Wrapper { + node: Body; + render(block: Block, _parent_node: string, _parent_nodes: string): void; +} diff --git a/types/compiler/compile/render_dom/wrappers/DebugTag.d.ts b/types/compiler/compile/render_dom/wrappers/DebugTag.d.ts new file mode 100644 index 000000000000..b18e1300e35f --- /dev/null +++ b/types/compiler/compile/render_dom/wrappers/DebugTag.d.ts @@ -0,0 +1,9 @@ +import Renderer from '../Renderer'; +import Wrapper from './shared/Wrapper'; +import Block from '../Block'; +import DebugTag from '../../nodes/DebugTag'; +export default class DebugTagWrapper extends Wrapper { + node: DebugTag; + constructor(renderer: Renderer, block: Block, parent: Wrapper, node: DebugTag, _strip_whitespace: boolean, _next_sibling: Wrapper); + render(block: Block, _parent_node: string, _parent_nodes: string): void; +} diff --git a/types/compiler/compile/render_dom/wrappers/EachBlock.d.ts b/types/compiler/compile/render_dom/wrappers/EachBlock.d.ts new file mode 100644 index 000000000000..05130cdaa419 --- /dev/null +++ b/types/compiler/compile/render_dom/wrappers/EachBlock.d.ts @@ -0,0 +1,54 @@ +import Renderer from '../Renderer'; +import Block from '../Block'; +import Wrapper from './shared/Wrapper'; +import EachBlock from '../../nodes/EachBlock'; +import FragmentWrapper from './Fragment'; +import ElseBlock from '../../nodes/ElseBlock'; +export declare class ElseBlockWrapper extends Wrapper { + node: ElseBlock; + block: Block; + fragment: FragmentWrapper; + is_dynamic: boolean; + var: any; + constructor(renderer: Renderer, block: Block, parent: Wrapper, node: ElseBlock, strip_whitespace: boolean, next_sibling: Wrapper); +} +export default class EachBlockWrapper extends Wrapper { + block: Block; + node: EachBlock; + fragment: FragmentWrapper; + else?: ElseBlockWrapper; + vars: { + create_each_block: string; + each_block_value: string; + get_each_context: string; + iterations: string; + fixed_length: number; + data_length: string; + view_length: string; + length: string; + }; + context_props: string[]; + index_name: string; + var: string; + constructor(renderer: Renderer, block: Block, parent: Wrapper, node: EachBlock, strip_whitespace: boolean, next_sibling: Wrapper); + render(block: Block, parent_node: string, parent_nodes: string): void; + render_keyed({ block, parent_node, parent_nodes, snippet, initial_anchor_node, initial_mount_node, update_anchor_node, update_mount_node }: { + block: Block; + parent_node: string; + parent_nodes: string; + snippet: string; + initial_anchor_node: string; + initial_mount_node: string; + update_anchor_node: string; + update_mount_node: string; + }): void; + render_unkeyed({ block, parent_nodes, snippet, initial_anchor_node, initial_mount_node, update_anchor_node, update_mount_node }: { + block: Block; + parent_nodes: string; + snippet: string; + initial_anchor_node: string; + initial_mount_node: string; + update_anchor_node: string; + update_mount_node: string; + }): void; +} diff --git a/types/compiler/compile/render_dom/wrappers/Element/Attribute.d.ts b/types/compiler/compile/render_dom/wrappers/Element/Attribute.d.ts new file mode 100644 index 000000000000..6c629ab9c8c8 --- /dev/null +++ b/types/compiler/compile/render_dom/wrappers/Element/Attribute.d.ts @@ -0,0 +1,10 @@ +import Attribute from '../../../nodes/Attribute'; +import Block from '../../Block'; +import ElementWrapper from './index'; +export default class AttributeWrapper { + node: Attribute; + parent: ElementWrapper; + constructor(parent: ElementWrapper, block: Block, node: Attribute); + render(block: Block): void; + stringify(): string; +} diff --git a/types/compiler/compile/render_dom/wrappers/Element/Binding.d.ts b/types/compiler/compile/render_dom/wrappers/Element/Binding.d.ts new file mode 100644 index 000000000000..65b49ab01e24 --- /dev/null +++ b/types/compiler/compile/render_dom/wrappers/Element/Binding.d.ts @@ -0,0 +1,21 @@ +import Binding from '../../../nodes/Binding'; +import ElementWrapper from '../Element'; +import Block from '../../Block'; +export default class BindingWrapper { + node: Binding; + parent: ElementWrapper; + object: string; + handler: { + uses_context: boolean; + mutation: string; + contextual_dependencies: Set; + snippet?: string; + }; + snippet: string; + is_readonly: boolean; + needs_lock: boolean; + constructor(block: Block, node: Binding, parent: ElementWrapper); + get_dependencies(): Set; + is_readonly_media_attribute(): boolean; + render(block: Block, lock: string): void; +} diff --git a/types/compiler/compile/render_dom/wrappers/Element/StyleAttribute.d.ts b/types/compiler/compile/render_dom/wrappers/Element/StyleAttribute.d.ts new file mode 100644 index 000000000000..64d3fadbd74f --- /dev/null +++ b/types/compiler/compile/render_dom/wrappers/Element/StyleAttribute.d.ts @@ -0,0 +1,15 @@ +import Attribute from '../../../nodes/Attribute'; +import Block from '../../Block'; +import AttributeWrapper from './Attribute'; +import ElementWrapper from '../Element'; +import Expression from '../../../nodes/shared/Expression'; +import Text from '../../../nodes/Text'; +export interface StyleProp { + key: string; + value: Array; +} +export default class StyleAttributeWrapper extends AttributeWrapper { + node: Attribute; + parent: ElementWrapper; + render(block: Block): void; +} diff --git a/types/compiler/compile/render_dom/wrappers/Element/fix_attribute_casing.d.ts b/types/compiler/compile/render_dom/wrappers/Element/fix_attribute_casing.d.ts new file mode 100644 index 000000000000..fb7c2f6fc1e6 --- /dev/null +++ b/types/compiler/compile/render_dom/wrappers/Element/fix_attribute_casing.d.ts @@ -0,0 +1 @@ +export default function fix_attribute_casing(name: any): any; diff --git a/types/compiler/compile/render_dom/wrappers/Element/index.d.ts b/types/compiler/compile/render_dom/wrappers/Element/index.d.ts new file mode 100644 index 000000000000..291c04e658f5 --- /dev/null +++ b/types/compiler/compile/render_dom/wrappers/Element/index.d.ts @@ -0,0 +1,29 @@ +import Renderer from '../../Renderer'; +import Element from '../../../nodes/Element'; +import Wrapper from '../shared/Wrapper'; +import Block from '../../Block'; +import FragmentWrapper from '../Fragment'; +import AttributeWrapper from './Attribute'; +import Binding from './Binding'; +export default class ElementWrapper extends Wrapper { + node: Element; + fragment: FragmentWrapper; + attributes: AttributeWrapper[]; + bindings: Binding[]; + class_dependencies: string[]; + slot_block: Block; + select_binding_dependencies?: Set; + var: string; + constructor(renderer: Renderer, block: Block, parent: Wrapper, node: Element, strip_whitespace: boolean, next_sibling: Wrapper); + render(block: Block, parent_node: string, parent_nodes: string): void; + get_render_statement(): string; + get_claim_statement(nodes: string): string; + add_bindings(block: Block): void; + add_attributes(block: Block): void; + add_spread_attributes(block: Block): void; + add_event_handlers(block: Block): void; + add_transitions(block: Block): void; + add_animation(block: Block): void; + add_actions(block: Block): void; + add_classes(block: Block): void; +} diff --git a/types/compiler/compile/render_dom/wrappers/Fragment.d.ts b/types/compiler/compile/render_dom/wrappers/Fragment.d.ts new file mode 100644 index 000000000000..e8ecb2adeae1 --- /dev/null +++ b/types/compiler/compile/render_dom/wrappers/Fragment.d.ts @@ -0,0 +1,9 @@ +import Wrapper from './shared/Wrapper'; +import { INode } from '../../nodes/interfaces'; +import Renderer from '../Renderer'; +import Block from '../Block'; +export default class FragmentWrapper { + nodes: Wrapper[]; + constructor(renderer: Renderer, block: Block, nodes: INode[], parent: Wrapper, strip_whitespace: boolean, next_sibling: Wrapper); + render(block: Block, parent_node: string, parent_nodes: string): void; +} diff --git a/types/compiler/compile/render_dom/wrappers/Head.d.ts b/types/compiler/compile/render_dom/wrappers/Head.d.ts new file mode 100644 index 000000000000..5ffb89a2ac60 --- /dev/null +++ b/types/compiler/compile/render_dom/wrappers/Head.d.ts @@ -0,0 +1,10 @@ +import Wrapper from './shared/Wrapper'; +import Renderer from '../Renderer'; +import Block from '../Block'; +import Head from '../../nodes/Head'; +import FragmentWrapper from './Fragment'; +export default class HeadWrapper extends Wrapper { + fragment: FragmentWrapper; + constructor(renderer: Renderer, block: Block, parent: Wrapper, node: Head, strip_whitespace: boolean, next_sibling: Wrapper); + render(block: Block, _parent_node: string, _parent_nodes: string): void; +} diff --git a/types/compiler/compile/render_dom/wrappers/IfBlock.d.ts b/types/compiler/compile/render_dom/wrappers/IfBlock.d.ts new file mode 100644 index 000000000000..887bb4bfe61d --- /dev/null +++ b/types/compiler/compile/render_dom/wrappers/IfBlock.d.ts @@ -0,0 +1,42 @@ +import Wrapper from './shared/Wrapper'; +import Renderer from '../Renderer'; +import Block from '../Block'; +import EachBlock from '../../nodes/EachBlock'; +import IfBlock from '../../nodes/IfBlock'; +import ElseBlock from '../../nodes/ElseBlock'; +import FragmentWrapper from './Fragment'; +declare class IfBlockBranch extends Wrapper { + block: Block; + fragment: FragmentWrapper; + condition: string; + is_dynamic: boolean; + var: any; + constructor(renderer: Renderer, block: Block, parent: IfBlockWrapper, node: IfBlock | ElseBlock, strip_whitespace: boolean, next_sibling: Wrapper); +} +export default class IfBlockWrapper extends Wrapper { + node: IfBlock; + branches: IfBlockBranch[]; + var: string; + constructor(renderer: Renderer, block: Block, parent: Wrapper, node: EachBlock, strip_whitespace: boolean, next_sibling: Wrapper); + render(block: Block, parent_node: string, parent_nodes: string): void; + render_compound(block: Block, parent_node: string, _parent_nodes: string, dynamic: any, { name, anchor, has_else, if_name, has_transitions }: { + name: any; + anchor: any; + has_else: any; + if_name: any; + has_transitions: any; + }, detaching: any): void; + render_compound_with_outros(block: Block, parent_node: string, _parent_nodes: string, dynamic: any, { name, anchor, has_else, has_transitions }: { + name: any; + anchor: any; + has_else: any; + has_transitions: any; + }, detaching: any): void; + render_simple(block: Block, parent_node: string, _parent_nodes: string, dynamic: any, { name, anchor, if_name, has_transitions }: { + name: any; + anchor: any; + if_name: any; + has_transitions: any; + }, detaching: any): void; +} +export {}; diff --git a/types/compiler/compile/render_dom/wrappers/InlineComponent/index.d.ts b/types/compiler/compile/render_dom/wrappers/InlineComponent/index.d.ts new file mode 100644 index 000000000000..7848b9a1d9ba --- /dev/null +++ b/types/compiler/compile/render_dom/wrappers/InlineComponent/index.d.ts @@ -0,0 +1,18 @@ +import Wrapper from '../shared/Wrapper'; +import Renderer from '../../Renderer'; +import Block from '../../Block'; +import InlineComponent from '../../../nodes/InlineComponent'; +import FragmentWrapper from '../Fragment'; +import TemplateScope from '../../../nodes/shared/TemplateScope'; +export default class InlineComponentWrapper extends Wrapper { + var: string; + slots: Map; + node: InlineComponent; + fragment: FragmentWrapper; + constructor(renderer: Renderer, block: Block, parent: Wrapper, node: InlineComponent, strip_whitespace: boolean, next_sibling: Wrapper); + render(block: Block, parent_node: string, parent_nodes: string): void; +} diff --git a/types/compiler/compile/render_dom/wrappers/MustacheTag.d.ts b/types/compiler/compile/render_dom/wrappers/MustacheTag.d.ts new file mode 100644 index 000000000000..7c0a748b82c3 --- /dev/null +++ b/types/compiler/compile/render_dom/wrappers/MustacheTag.d.ts @@ -0,0 +1,11 @@ +import Renderer from '../Renderer'; +import Block from '../Block'; +import Tag from './shared/Tag'; +import Wrapper from './shared/Wrapper'; +import MustacheTag from '../../nodes/MustacheTag'; +import RawMustacheTag from '../../nodes/RawMustacheTag'; +export default class MustacheTagWrapper extends Tag { + var: string; + constructor(renderer: Renderer, block: Block, parent: Wrapper, node: MustacheTag | RawMustacheTag); + render(block: Block, parent_node: string, parent_nodes: string): void; +} diff --git a/types/compiler/compile/render_dom/wrappers/RawMustacheTag.d.ts b/types/compiler/compile/render_dom/wrappers/RawMustacheTag.d.ts new file mode 100644 index 000000000000..b88322de61b4 --- /dev/null +++ b/types/compiler/compile/render_dom/wrappers/RawMustacheTag.d.ts @@ -0,0 +1,11 @@ +import Renderer from '../Renderer'; +import Block from '../Block'; +import Tag from './shared/Tag'; +import Wrapper from './shared/Wrapper'; +import MustacheTag from '../../nodes/MustacheTag'; +import RawMustacheTag from '../../nodes/RawMustacheTag'; +export default class RawMustacheTagWrapper extends Tag { + var: string; + constructor(renderer: Renderer, block: Block, parent: Wrapper, node: MustacheTag | RawMustacheTag); + render(block: Block, parent_node: string, parent_nodes: string): void; +} diff --git a/types/compiler/compile/render_dom/wrappers/Slot.d.ts b/types/compiler/compile/render_dom/wrappers/Slot.d.ts new file mode 100644 index 000000000000..47ced5cd72d9 --- /dev/null +++ b/types/compiler/compile/render_dom/wrappers/Slot.d.ts @@ -0,0 +1,13 @@ +import Wrapper from './shared/Wrapper'; +import Renderer from '../Renderer'; +import Block from '../Block'; +import Slot from '../../nodes/Slot'; +import FragmentWrapper from './Fragment'; +export default class SlotWrapper extends Wrapper { + node: Slot; + fragment: FragmentWrapper; + var: string; + dependencies: Set; + constructor(renderer: Renderer, block: Block, parent: Wrapper, node: Slot, strip_whitespace: boolean, next_sibling: Wrapper); + render(block: Block, parent_node: string, parent_nodes: string): void; +} diff --git a/types/compiler/compile/render_dom/wrappers/Text.d.ts b/types/compiler/compile/render_dom/wrappers/Text.d.ts new file mode 100644 index 000000000000..1f9810f6a0dc --- /dev/null +++ b/types/compiler/compile/render_dom/wrappers/Text.d.ts @@ -0,0 +1,13 @@ +import Renderer from '../Renderer'; +import Block from '../Block'; +import Text from '../../nodes/Text'; +import Wrapper from './shared/Wrapper'; +export default class TextWrapper extends Wrapper { + node: Text; + data: string; + skip: boolean; + var: string; + constructor(renderer: Renderer, block: Block, parent: Wrapper, node: Text, data: string); + use_space(): boolean; + render(block: Block, parent_node: string, parent_nodes: string): void; +} diff --git a/types/compiler/compile/render_dom/wrappers/Title.d.ts b/types/compiler/compile/render_dom/wrappers/Title.d.ts new file mode 100644 index 000000000000..520a77eea32d --- /dev/null +++ b/types/compiler/compile/render_dom/wrappers/Title.d.ts @@ -0,0 +1,9 @@ +import Wrapper from './shared/Wrapper'; +import Renderer from '../Renderer'; +import Block from '../Block'; +import Title from '../../nodes/Title'; +export default class TitleWrapper extends Wrapper { + node: Title; + constructor(renderer: Renderer, block: Block, parent: Wrapper, node: Title, _strip_whitespace: boolean, _next_sibling: Wrapper); + render(block: Block, _parent_node: string, _parent_nodes: string): void; +} diff --git a/types/compiler/compile/render_dom/wrappers/Window.d.ts b/types/compiler/compile/render_dom/wrappers/Window.d.ts new file mode 100644 index 000000000000..2875c022d45f --- /dev/null +++ b/types/compiler/compile/render_dom/wrappers/Window.d.ts @@ -0,0 +1,10 @@ +import Renderer from '../Renderer'; +import Block from '../Block'; +import Wrapper from './shared/Wrapper'; +import Window from '../../nodes/Window'; +import { INode } from '../../nodes/interfaces'; +export default class WindowWrapper extends Wrapper { + node: Window; + constructor(renderer: Renderer, block: Block, parent: Wrapper, node: INode); + render(block: Block, _parent_node: string, _parent_nodes: string): void; +} diff --git a/types/compiler/compile/render_dom/wrappers/shared/Tag.d.ts b/types/compiler/compile/render_dom/wrappers/shared/Tag.d.ts new file mode 100644 index 000000000000..8453021f7315 --- /dev/null +++ b/types/compiler/compile/render_dom/wrappers/shared/Tag.d.ts @@ -0,0 +1,12 @@ +import Wrapper from './Wrapper'; +import Renderer from '../../Renderer'; +import Block from '../../Block'; +import MustacheTag from '../../../nodes/MustacheTag'; +import RawMustacheTag from '../../../nodes/RawMustacheTag'; +export default class Tag extends Wrapper { + node: MustacheTag | RawMustacheTag; + constructor(renderer: Renderer, block: Block, parent: Wrapper, node: MustacheTag | RawMustacheTag); + rename_this_method(block: Block, update: ((value: string) => string)): { + init: string; + }; +} diff --git a/types/compiler/compile/render_dom/wrappers/shared/Wrapper.d.ts b/types/compiler/compile/render_dom/wrappers/shared/Wrapper.d.ts new file mode 100644 index 000000000000..a3cdeb8ee6a7 --- /dev/null +++ b/types/compiler/compile/render_dom/wrappers/shared/Wrapper.d.ts @@ -0,0 +1,18 @@ +import Renderer from '../../Renderer'; +import Block from '../../Block'; +import { INode } from '../../../nodes/interfaces'; +export default class Wrapper { + renderer: Renderer; + parent: Wrapper; + node: INode; + prev: Wrapper | null; + next: Wrapper | null; + var: string; + can_use_innerhtml: boolean; + constructor(renderer: Renderer, block: Block, parent: Wrapper, node: INode); + cannot_use_innerhtml(): void; + get_or_create_anchor(block: Block, parent_node: string, parent_nodes: string): string; + get_update_mount_node(anchor: string): string; + is_dom_node(): boolean; + render(_block: Block, _parent_node: string, _parent_nodes: string): void; +} diff --git a/types/compiler/compile/render_dom/wrappers/shared/add_actions.d.ts b/types/compiler/compile/render_dom/wrappers/shared/add_actions.d.ts new file mode 100644 index 000000000000..6630ff83aff7 --- /dev/null +++ b/types/compiler/compile/render_dom/wrappers/shared/add_actions.d.ts @@ -0,0 +1,4 @@ +import Block from '../../Block'; +import Action from '../../../nodes/Action'; +import Component from '../../../Component'; +export default function add_actions(component: Component, block: Block, target: string, actions: Action[]): void; diff --git a/types/compiler/compile/render_dom/wrappers/shared/add_event_handlers.d.ts b/types/compiler/compile/render_dom/wrappers/shared/add_event_handlers.d.ts new file mode 100644 index 000000000000..2d00d701f79d --- /dev/null +++ b/types/compiler/compile/render_dom/wrappers/shared/add_event_handlers.d.ts @@ -0,0 +1,3 @@ +import Block from '../../Block'; +import EventHandler from '../../../nodes/EventHandler'; +export default function add_event_handlers(block: Block, target: string, handlers: EventHandler[]): void; diff --git a/types/compiler/compile/render_dom/wrappers/shared/bind_this.d.ts b/types/compiler/compile/render_dom/wrappers/shared/bind_this.d.ts new file mode 100644 index 000000000000..331284e2afd0 --- /dev/null +++ b/types/compiler/compile/render_dom/wrappers/shared/bind_this.d.ts @@ -0,0 +1,4 @@ +import Component from '../../../Component'; +import Block from '../../Block'; +import Binding from '../../../nodes/Binding'; +export default function bind_this(component: Component, block: Block, binding: Binding, variable: string): string; diff --git a/types/compiler/compile/render_dom/wrappers/shared/create_debugging_comment.d.ts b/types/compiler/compile/render_dom/wrappers/shared/create_debugging_comment.d.ts new file mode 100644 index 000000000000..a8155e07129f --- /dev/null +++ b/types/compiler/compile/render_dom/wrappers/shared/create_debugging_comment.d.ts @@ -0,0 +1,3 @@ +import Component from '../../../Component'; +import { INode } from '../../../nodes/interfaces'; +export default function create_debugging_comment(node: INode, component: Component): string; diff --git a/types/compiler/compile/render_dom/wrappers/shared/get_context_merger.d.ts b/types/compiler/compile/render_dom/wrappers/shared/get_context_merger.d.ts new file mode 100644 index 000000000000..b6ba550c17ac --- /dev/null +++ b/types/compiler/compile/render_dom/wrappers/shared/get_context_merger.d.ts @@ -0,0 +1,2 @@ +import Let from '../../../nodes/Let'; +export declare function get_context_merger(lets: Let[]): string; diff --git a/types/compiler/compile/render_dom/wrappers/shared/is_dynamic.d.ts b/types/compiler/compile/render_dom/wrappers/shared/is_dynamic.d.ts new file mode 100644 index 000000000000..ccc3a7115ea4 --- /dev/null +++ b/types/compiler/compile/render_dom/wrappers/shared/is_dynamic.d.ts @@ -0,0 +1,2 @@ +import { Var } from '../../../../interfaces'; +export default function is_dynamic(variable: Var): boolean; diff --git a/types/compiler/compile/render_ssr/Renderer.d.ts b/types/compiler/compile/render_ssr/Renderer.d.ts new file mode 100644 index 000000000000..a5c8c6a3c99c --- /dev/null +++ b/types/compiler/compile/render_ssr/Renderer.d.ts @@ -0,0 +1,15 @@ +import { AppendTarget, CompileOptions } from '../../interfaces'; +import { INode } from '../nodes/interfaces'; +export interface RenderOptions extends CompileOptions { + locate: (c: number) => { + line: number; + column: number; + }; +} +export default class Renderer { + has_bindings: boolean; + code: string; + targets: AppendTarget[]; + append(code: string): void; + render(nodes: INode[], options: RenderOptions): void; +} diff --git a/types/compiler/compile/render_ssr/handlers/AwaitBlock.d.ts b/types/compiler/compile/render_ssr/handlers/AwaitBlock.d.ts new file mode 100644 index 000000000000..9ac74d66344f --- /dev/null +++ b/types/compiler/compile/render_ssr/handlers/AwaitBlock.d.ts @@ -0,0 +1,3 @@ +import Renderer, { RenderOptions } from '../Renderer'; +import AwaitBlock from '../../nodes/AwaitBlock'; +export default function (node: AwaitBlock, renderer: Renderer, options: RenderOptions): void; diff --git a/types/compiler/compile/render_ssr/handlers/Comment.d.ts b/types/compiler/compile/render_ssr/handlers/Comment.d.ts new file mode 100644 index 000000000000..3ceb965c1c30 --- /dev/null +++ b/types/compiler/compile/render_ssr/handlers/Comment.d.ts @@ -0,0 +1,3 @@ +import Renderer, { RenderOptions } from '../Renderer'; +import Comment from '../../nodes/Comment'; +export default function (node: Comment, renderer: Renderer, options: RenderOptions): void; diff --git a/types/compiler/compile/render_ssr/handlers/DebugTag.d.ts b/types/compiler/compile/render_ssr/handlers/DebugTag.d.ts new file mode 100644 index 000000000000..737c104d024e --- /dev/null +++ b/types/compiler/compile/render_ssr/handlers/DebugTag.d.ts @@ -0,0 +1,3 @@ +import DebugTag from '../../nodes/DebugTag'; +import Renderer, { RenderOptions } from '../Renderer'; +export default function (node: DebugTag, renderer: Renderer, options: RenderOptions): void; diff --git a/types/compiler/compile/render_ssr/handlers/EachBlock.d.ts b/types/compiler/compile/render_ssr/handlers/EachBlock.d.ts new file mode 100644 index 000000000000..5ecd8599aae0 --- /dev/null +++ b/types/compiler/compile/render_ssr/handlers/EachBlock.d.ts @@ -0,0 +1,3 @@ +import Renderer, { RenderOptions } from '../Renderer'; +import EachBlock from '../../nodes/EachBlock'; +export default function (node: EachBlock, renderer: Renderer, options: RenderOptions): void; diff --git a/types/compiler/compile/render_ssr/handlers/Element.d.ts b/types/compiler/compile/render_ssr/handlers/Element.d.ts new file mode 100644 index 000000000000..43ac0f40faca --- /dev/null +++ b/types/compiler/compile/render_ssr/handlers/Element.d.ts @@ -0,0 +1,5 @@ +import Renderer, { RenderOptions } from '../Renderer'; +import Element from '../../nodes/Element'; +export default function (node: Element, renderer: Renderer, options: RenderOptions & { + slot_scopes: Map; +}): void; diff --git a/types/compiler/compile/render_ssr/handlers/Head.d.ts b/types/compiler/compile/render_ssr/handlers/Head.d.ts new file mode 100644 index 000000000000..add6c178eca6 --- /dev/null +++ b/types/compiler/compile/render_ssr/handlers/Head.d.ts @@ -0,0 +1,3 @@ +import Renderer, { RenderOptions } from '../Renderer'; +import Head from '../../nodes/Head'; +export default function (node: Head, renderer: Renderer, options: RenderOptions): void; diff --git a/types/compiler/compile/render_ssr/handlers/HtmlTag.d.ts b/types/compiler/compile/render_ssr/handlers/HtmlTag.d.ts new file mode 100644 index 000000000000..19f8f6342b67 --- /dev/null +++ b/types/compiler/compile/render_ssr/handlers/HtmlTag.d.ts @@ -0,0 +1,3 @@ +import Renderer, { RenderOptions } from '../Renderer'; +import RawMustacheTag from '../../nodes/RawMustacheTag'; +export default function (node: RawMustacheTag, renderer: Renderer, _options: RenderOptions): void; diff --git a/types/compiler/compile/render_ssr/handlers/IfBlock.d.ts b/types/compiler/compile/render_ssr/handlers/IfBlock.d.ts new file mode 100644 index 000000000000..c5be3d092026 --- /dev/null +++ b/types/compiler/compile/render_ssr/handlers/IfBlock.d.ts @@ -0,0 +1,3 @@ +import IfBlock from '../../nodes/IfBlock'; +import Renderer, { RenderOptions } from '../Renderer'; +export default function (node: IfBlock, renderer: Renderer, options: RenderOptions): void; diff --git a/types/compiler/compile/render_ssr/handlers/InlineComponent.d.ts b/types/compiler/compile/render_ssr/handlers/InlineComponent.d.ts new file mode 100644 index 000000000000..fd52d3a18766 --- /dev/null +++ b/types/compiler/compile/render_ssr/handlers/InlineComponent.d.ts @@ -0,0 +1,3 @@ +import Renderer, { RenderOptions } from '../Renderer'; +import InlineComponent from '../../nodes/InlineComponent'; +export default function (node: InlineComponent, renderer: Renderer, options: RenderOptions): void; diff --git a/types/compiler/compile/render_ssr/handlers/Slot.d.ts b/types/compiler/compile/render_ssr/handlers/Slot.d.ts new file mode 100644 index 000000000000..5872cb6ab51b --- /dev/null +++ b/types/compiler/compile/render_ssr/handlers/Slot.d.ts @@ -0,0 +1,3 @@ +import Renderer, { RenderOptions } from '../Renderer'; +import Slot from '../../nodes/Slot'; +export default function (node: Slot, renderer: Renderer, options: RenderOptions): void; diff --git a/types/compiler/compile/render_ssr/handlers/Tag.d.ts b/types/compiler/compile/render_ssr/handlers/Tag.d.ts new file mode 100644 index 000000000000..a37afab5ea48 --- /dev/null +++ b/types/compiler/compile/render_ssr/handlers/Tag.d.ts @@ -0,0 +1,2 @@ +import Renderer, { RenderOptions } from '../Renderer'; +export default function (node: any, renderer: Renderer, _options: RenderOptions): void; diff --git a/types/compiler/compile/render_ssr/handlers/Text.d.ts b/types/compiler/compile/render_ssr/handlers/Text.d.ts new file mode 100644 index 000000000000..8b6a668f43bb --- /dev/null +++ b/types/compiler/compile/render_ssr/handlers/Text.d.ts @@ -0,0 +1,3 @@ +import Renderer, { RenderOptions } from '../Renderer'; +import Text from '../../nodes/Text'; +export default function (node: Text, renderer: Renderer, _options: RenderOptions): void; diff --git a/types/compiler/compile/render_ssr/handlers/Title.d.ts b/types/compiler/compile/render_ssr/handlers/Title.d.ts new file mode 100644 index 000000000000..14d4b2d4d551 --- /dev/null +++ b/types/compiler/compile/render_ssr/handlers/Title.d.ts @@ -0,0 +1,3 @@ +import Renderer, { RenderOptions } from '../Renderer'; +import Title from '../../nodes/Title'; +export default function (node: Title, renderer: Renderer, options: RenderOptions): void; diff --git a/types/compiler/compile/render_ssr/handlers/shared/get_slot_scope.d.ts b/types/compiler/compile/render_ssr/handlers/shared/get_slot_scope.d.ts new file mode 100644 index 000000000000..2661745a1923 --- /dev/null +++ b/types/compiler/compile/render_ssr/handlers/shared/get_slot_scope.d.ts @@ -0,0 +1,2 @@ +import Let from '../../../nodes/Let'; +export declare function get_slot_scope(lets: Let[]): string; diff --git a/types/compiler/compile/render_ssr/index.d.ts b/types/compiler/compile/render_ssr/index.d.ts new file mode 100644 index 000000000000..a38d6abe69da --- /dev/null +++ b/types/compiler/compile/render_ssr/index.d.ts @@ -0,0 +1,3 @@ +import Component from '../Component'; +import { CompileOptions } from '../../interfaces'; +export default function ssr(component: Component, options: CompileOptions): string; diff --git a/types/compiler/compile/utils/CodeBuilder.d.ts b/types/compiler/compile/utils/CodeBuilder.d.ts new file mode 100644 index 000000000000..162a284c5a10 --- /dev/null +++ b/types/compiler/compile/utils/CodeBuilder.d.ts @@ -0,0 +1,27 @@ +interface Chunk { + parent?: BlockChunk; + type: 'root' | 'line' | 'condition'; + children?: Chunk[]; + line?: string; + block?: boolean; + condition?: string; +} +interface BlockChunk extends Chunk { + type: 'root' | 'condition'; + children: Chunk[]; + parent: BlockChunk; +} +export default class CodeBuilder { + root: BlockChunk; + last: Chunk; + current: BlockChunk; + constructor(str?: string); + add_conditional(condition: string, body: string): void; + add_line(line: string): void; + add_block(block: string): void; + is_empty(): boolean; + push_condition(condition: string): void; + pop_condition(): void; + toString(): string; +} +export {}; diff --git a/types/compiler/compile/utils/__test__.d.ts b/types/compiler/compile/utils/__test__.d.ts new file mode 100644 index 000000000000..cb0ff5c3b541 --- /dev/null +++ b/types/compiler/compile/utils/__test__.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/types/compiler/compile/utils/add_to_set.d.ts b/types/compiler/compile/utils/add_to_set.d.ts new file mode 100644 index 000000000000..b620fbcc21e5 --- /dev/null +++ b/types/compiler/compile/utils/add_to_set.d.ts @@ -0,0 +1 @@ +export default function add_to_set(a: Set, b: Set | T[]): void; diff --git a/types/compiler/compile/utils/deindent.d.ts b/types/compiler/compile/utils/deindent.d.ts new file mode 100644 index 000000000000..05434c3ab809 --- /dev/null +++ b/types/compiler/compile/utils/deindent.d.ts @@ -0,0 +1 @@ +export default function deindent(strings: TemplateStringsArray, ...values: any[]): string; diff --git a/types/compiler/compile/utils/flatten_reference.d.ts b/types/compiler/compile/utils/flatten_reference.d.ts new file mode 100644 index 000000000000..16e2ef948699 --- /dev/null +++ b/types/compiler/compile/utils/flatten_reference.d.ts @@ -0,0 +1,7 @@ +import { Node } from '../../interfaces'; +export default function flatten_reference(node: Node): { + name: any; + nodes: any[]; + parts: any[]; + keypath: string; +}; diff --git a/types/compiler/compile/utils/get_name_from_filename.d.ts b/types/compiler/compile/utils/get_name_from_filename.d.ts new file mode 100644 index 000000000000..25751c0f6e15 --- /dev/null +++ b/types/compiler/compile/utils/get_name_from_filename.d.ts @@ -0,0 +1 @@ +export default function get_name_from_filename(filename: string): string; diff --git a/types/compiler/compile/utils/get_object.d.ts b/types/compiler/compile/utils/get_object.d.ts new file mode 100644 index 000000000000..3c5b95923709 --- /dev/null +++ b/types/compiler/compile/utils/get_object.d.ts @@ -0,0 +1,2 @@ +import { Node } from '../../interfaces'; +export default function get_object(node: Node): Node; diff --git a/types/compiler/compile/utils/get_slot_data.d.ts b/types/compiler/compile/utils/get_slot_data.d.ts new file mode 100644 index 000000000000..e32bada590c3 --- /dev/null +++ b/types/compiler/compile/utils/get_slot_data.d.ts @@ -0,0 +1,2 @@ +import Attribute from '../nodes/Attribute'; +export default function get_slot_data(values: Map, is_ssr: boolean): string[]; diff --git a/types/compiler/compile/utils/scope.d.ts b/types/compiler/compile/utils/scope.d.ts new file mode 100644 index 000000000000..bd190c209be4 --- /dev/null +++ b/types/compiler/compile/utils/scope.d.ts @@ -0,0 +1,18 @@ +import { Node } from '../../interfaces'; +export declare function create_scopes(expression: Node): { + map: WeakMap; + scope: Scope; + globals: Map; +}; +export declare class Scope { + parent: Scope; + block: boolean; + declarations: Map; + initialised_declarations: Set; + constructor(parent: Scope, block: boolean); + add_declaration(node: Node): void; + find_owner(name: string): Scope; + has(name: string): boolean; +} +export declare function extract_names(param: Node): any[]; +export declare function extract_identifiers(param: Node): Node[]; diff --git a/types/compiler/compile/utils/snip.d.ts b/types/compiler/compile/utils/snip.d.ts new file mode 100644 index 000000000000..3d6a81bd177b --- /dev/null +++ b/types/compiler/compile/utils/snip.d.ts @@ -0,0 +1 @@ +export declare function snip(expression: any): string; diff --git a/types/compiler/compile/utils/stringify.d.ts b/types/compiler/compile/utils/stringify.d.ts new file mode 100644 index 000000000000..c1b97f88c1e1 --- /dev/null +++ b/types/compiler/compile/utils/stringify.d.ts @@ -0,0 +1,6 @@ +export declare function stringify(data: string, options?: {}): string; +export declare function escape(data: string, { only_escape_at_symbol }?: { + only_escape_at_symbol?: boolean; +}): string; +export declare function escape_html(html: any): string; +export declare function escape_template(str: any): any; diff --git a/types/compiler/compile/utils/stringify_attribute.d.ts b/types/compiler/compile/utils/stringify_attribute.d.ts new file mode 100644 index 000000000000..a44b1b8e83bb --- /dev/null +++ b/types/compiler/compile/utils/stringify_attribute.d.ts @@ -0,0 +1,2 @@ +import Attribute from '../nodes/Attribute'; +export declare function stringify_attribute(attribute: Attribute, is_ssr: boolean): string; diff --git a/types/compiler/compile/utils/stringify_props.d.ts b/types/compiler/compile/utils/stringify_props.d.ts new file mode 100644 index 000000000000..602c0dca3e31 --- /dev/null +++ b/types/compiler/compile/utils/stringify_props.d.ts @@ -0,0 +1 @@ +export declare function stringify_props(props: string[]): string; diff --git a/types/compiler/compile/utils/tail.d.ts b/types/compiler/compile/utils/tail.d.ts new file mode 100644 index 000000000000..69ef15252e90 --- /dev/null +++ b/types/compiler/compile/utils/tail.d.ts @@ -0,0 +1,2 @@ +export declare function new_tail(): string; +export declare function attach_head(head: string, tail: string): string; diff --git a/types/compiler/compile/utils/unwrap_parens.d.ts b/types/compiler/compile/utils/unwrap_parens.d.ts new file mode 100644 index 000000000000..8be5e94a12c6 --- /dev/null +++ b/types/compiler/compile/utils/unwrap_parens.d.ts @@ -0,0 +1,2 @@ +import { Node } from '../../interfaces'; +export default function unwrap_parens(node: Node): Node; diff --git a/types/compiler/config.d.ts b/types/compiler/config.d.ts new file mode 100644 index 000000000000..66cb4d4e8841 --- /dev/null +++ b/types/compiler/config.d.ts @@ -0,0 +1 @@ +export declare const test: string; diff --git a/types/compiler/index.d.ts b/types/compiler/index.d.ts new file mode 100644 index 000000000000..99fe8e027e80 --- /dev/null +++ b/types/compiler/index.d.ts @@ -0,0 +1,5 @@ +export { default as compile } from './compile/index'; +export { default as parse } from './parse/index'; +export { default as preprocess } from './preprocess/index'; +export { walk } from 'estree-walker'; +export declare const VERSION = "__VERSION__"; diff --git a/types/compiler/interfaces.d.ts b/types/compiler/interfaces.d.ts new file mode 100644 index 000000000000..438d2df8824b --- /dev/null +++ b/types/compiler/interfaces.d.ts @@ -0,0 +1,111 @@ +interface BaseNode { + start: number; + end: number; + type: string; + children?: Node[]; + [prop_name: string]: any; +} +export interface Text extends BaseNode { + type: 'Text'; + data: string; +} +export interface MustacheTag extends BaseNode { + type: 'MustacheTag'; + expression: Node; +} +export declare type DirectiveType = 'Action' | 'Animation' | 'Binding' | 'Class' | 'EventHandler' | 'Let' | 'Ref' | 'Transition'; +interface BaseDirective extends BaseNode { + type: DirectiveType; + expression: null | Node; + name: string; + modifiers: string[]; +} +export interface Transition extends BaseDirective { + type: 'Transition'; + intro: boolean; + outro: boolean; +} +export declare type Directive = BaseDirective | Transition; +export declare type Node = Text | MustacheTag | BaseNode | Directive | Transition; +export interface Parser { + readonly template: string; + readonly filename?: string; + index: number; + stack: Node[]; + html: Node; + css: Node; + js: Node; + meta_tags: {}; +} +export interface Ast { + html: Node; + css: Node; + instance: Node; + module: Node; +} +export interface Warning { + start?: { + line: number; + column: number; + pos?: number; + }; + end?: { + line: number; + column: number; + }; + pos?: number; + code: string; + message: string; + filename?: string; + frame?: string; + toString: () => string; +} +export declare type ModuleFormat = 'esm' | 'cjs'; +export interface CompileOptions { + format?: ModuleFormat; + name?: string; + filename?: string; + generate?: string | false; + outputFilename?: string; + cssOutputFilename?: string; + sveltePath?: string; + dev?: boolean; + accessors?: boolean; + immutable?: boolean; + hydratable?: boolean; + legacy?: boolean; + customElement?: boolean; + tag?: string; + css?: boolean; + preserveComments?: boolean; + preserveWhitespace?: boolean; +} +export interface ParserOptions { + filename?: string; + customElement?: boolean; +} +export interface Visitor { + enter: (node: Node) => void; + leave?: (node: Node) => void; +} +export interface AppendTarget { + slots: Record; + slot_stack: string[]; +} +export interface Var { + name: string; + export_name?: string; + injected?: boolean; + module?: boolean; + mutated?: boolean; + reassigned?: boolean; + referenced?: boolean; + writable?: boolean; + global?: boolean; + internal?: boolean; + initialised?: boolean; + hoistable?: boolean; + subscribable?: boolean; + is_reactive_dependency?: boolean; +} +export {}; diff --git a/types/compiler/parse/acorn.d.ts b/types/compiler/parse/acorn.d.ts new file mode 100644 index 000000000000..7120cc47a0e1 --- /dev/null +++ b/types/compiler/parse/acorn.d.ts @@ -0,0 +1,3 @@ +import * as acorn from 'acorn'; +export declare const parse: (source: string) => acorn.Node; +export declare const parse_expression_at: (source: string, index: number) => acorn.Node; diff --git a/types/compiler/parse/index.d.ts b/types/compiler/parse/index.d.ts new file mode 100644 index 000000000000..041c6f611a2c --- /dev/null +++ b/types/compiler/parse/index.d.ts @@ -0,0 +1,28 @@ +import { Node, Ast, ParserOptions } from '../interfaces'; +export declare class Parser { + readonly template: string; + readonly filename?: string; + readonly customElement: boolean; + index: number; + stack: Node[]; + html: Node; + css: Node[]; + js: Node[]; + meta_tags: {}; + constructor(template: string, options: ParserOptions); + current(): Node; + acorn_error(err: any): void; + error({ code, message }: { + code: string; + message: string; + }, index?: number): void; + eat(str: string, required?: boolean, message?: string): boolean; + match(str: string): boolean; + match_regex(pattern: RegExp): string; + allow_whitespace(): void; + read(pattern: RegExp): string; + read_identifier(): string; + read_until(pattern: RegExp): string; + require_whitespace(): void; +} +export default function parse(template: string, options?: ParserOptions): Ast; diff --git a/types/compiler/parse/read/context.d.ts b/types/compiler/parse/read/context.d.ts new file mode 100644 index 000000000000..0e91b70f093d --- /dev/null +++ b/types/compiler/parse/read/context.d.ts @@ -0,0 +1,26 @@ +import { Parser } from '../index'; +interface Identifier { + start: number; + end: number; + type: 'Identifier'; + name: string; +} +interface Property { + start: number; + end: number; + type: 'Property'; + kind: 'init' | 'rest'; + shorthand: boolean; + key: Identifier; + value: Context; +} +interface Context { + start: number; + end: number; + type: 'Identifier' | 'ArrayPattern' | 'ObjectPattern' | 'RestIdentifier'; + name?: string; + elements?: Context[]; + properties?: Property[]; +} +export default function read_context(parser: Parser): Context; +export {}; diff --git a/types/compiler/parse/read/expression.d.ts b/types/compiler/parse/read/expression.d.ts new file mode 100644 index 000000000000..2f74b1ae35ba --- /dev/null +++ b/types/compiler/parse/read/expression.d.ts @@ -0,0 +1,3 @@ +import { Parser } from '../index'; +import { Node } from 'estree'; +export default function read_expression(parser: Parser): Node; diff --git a/types/compiler/parse/read/script.d.ts b/types/compiler/parse/read/script.d.ts new file mode 100644 index 000000000000..ac791b808e0f --- /dev/null +++ b/types/compiler/parse/read/script.d.ts @@ -0,0 +1,8 @@ +import { Parser } from '../index'; +import { Node } from '../../interfaces'; +export default function read_script(parser: Parser, start: number, attributes: Node[]): { + start: number; + end: number; + context: any; + content: any; +}; diff --git a/types/compiler/parse/read/style.d.ts b/types/compiler/parse/read/style.d.ts new file mode 100644 index 000000000000..fdc9ca82cede --- /dev/null +++ b/types/compiler/parse/read/style.d.ts @@ -0,0 +1,13 @@ +import { Parser } from '../index'; +import { Node } from '../../interfaces'; +export default function read_style(parser: Parser, start: number, attributes: Node[]): { + start: number; + end: number; + attributes: Node[]; + children: any; + content: { + start: number; + end: number; + styles: string; + }; +}; diff --git a/types/compiler/parse/state/fragment.d.ts b/types/compiler/parse/state/fragment.d.ts new file mode 100644 index 000000000000..ec6073ba7ece --- /dev/null +++ b/types/compiler/parse/state/fragment.d.ts @@ -0,0 +1,3 @@ +import tag from './tag'; +import { Parser } from '../index'; +export default function fragment(parser: Parser): typeof tag; diff --git a/types/compiler/parse/state/mustache.d.ts b/types/compiler/parse/state/mustache.d.ts new file mode 100644 index 000000000000..8a4b8b539058 --- /dev/null +++ b/types/compiler/parse/state/mustache.d.ts @@ -0,0 +1,2 @@ +import { Parser } from '../index'; +export default function mustache(parser: Parser): void; diff --git a/types/compiler/parse/state/tag.d.ts b/types/compiler/parse/state/tag.d.ts new file mode 100644 index 000000000000..1e0a29c571b8 --- /dev/null +++ b/types/compiler/parse/state/tag.d.ts @@ -0,0 +1,2 @@ +import { Parser } from '../index'; +export default function tag(parser: Parser): void; diff --git a/types/compiler/parse/state/text.d.ts b/types/compiler/parse/state/text.d.ts new file mode 100644 index 000000000000..88f2671f5d5c --- /dev/null +++ b/types/compiler/parse/state/text.d.ts @@ -0,0 +1,2 @@ +import { Parser } from '../index'; +export default function text(parser: Parser): void; diff --git a/types/compiler/parse/utils/entities.d.ts b/types/compiler/parse/utils/entities.d.ts new file mode 100644 index 000000000000..41902a659898 --- /dev/null +++ b/types/compiler/parse/utils/entities.d.ts @@ -0,0 +1,2034 @@ +declare const _default: { + CounterClockwiseContourIntegral: number; + ClockwiseContourIntegral: number; + DoubleLongLeftRightArrow: number; + DiacriticalDoubleAcute: number; + NotSquareSupersetEqual: number; + CloseCurlyDoubleQuote: number; + DoubleContourIntegral: number; + FilledVerySmallSquare: number; + NegativeVeryThinSpace: number; + NotPrecedesSlantEqual: number; + NotRightTriangleEqual: number; + NotSucceedsSlantEqual: number; + CapitalDifferentialD: number; + DoubleLeftRightArrow: number; + DoubleLongRightArrow: number; + EmptyVerySmallSquare: number; + NestedGreaterGreater: number; + NotDoubleVerticalBar: number; + NotLeftTriangleEqual: number; + NotSquareSubsetEqual: number; + OpenCurlyDoubleQuote: number; + ReverseUpEquilibrium: number; + DoubleLongLeftArrow: number; + DownLeftRightVector: number; + LeftArrowRightArrow: number; + NegativeMediumSpace: number; + RightArrowLeftArrow: number; + SquareSupersetEqual: number; + leftrightsquigarrow: number; + DownRightTeeVector: number; + DownRightVectorBar: number; + LongLeftRightArrow: number; + Longleftrightarrow: number; + NegativeThickSpace: number; + PrecedesSlantEqual: number; + ReverseEquilibrium: number; + RightDoubleBracket: number; + RightDownTeeVector: number; + RightDownVectorBar: number; + RightTriangleEqual: number; + SquareIntersection: number; + SucceedsSlantEqual: number; + blacktriangleright: number; + longleftrightarrow: number; + DoubleUpDownArrow: number; + DoubleVerticalBar: number; + DownLeftTeeVector: number; + DownLeftVectorBar: number; + FilledSmallSquare: number; + GreaterSlantEqual: number; + LeftDoubleBracket: number; + LeftDownTeeVector: number; + LeftDownVectorBar: number; + LeftTriangleEqual: number; + NegativeThinSpace: number; + NotReverseElement: number; + NotTildeFullEqual: number; + RightAngleBracket: number; + RightUpDownVector: number; + SquareSubsetEqual: number; + VerticalSeparator: number; + blacktriangledown: number; + blacktriangleleft: number; + leftrightharpoons: number; + rightleftharpoons: number; + twoheadrightarrow: number; + DiacriticalAcute: number; + DiacriticalGrave: number; + DiacriticalTilde: number; + DoubleRightArrow: number; + DownArrowUpArrow: number; + EmptySmallSquare: number; + GreaterEqualLess: number; + GreaterFullEqual: number; + LeftAngleBracket: number; + LeftUpDownVector: number; + LessEqualGreater: number; + NonBreakingSpace: number; + NotRightTriangle: number; + NotSupersetEqual: number; + RightTriangleBar: number; + RightUpTeeVector: number; + RightUpVectorBar: number; + UnderParenthesis: number; + UpArrowDownArrow: number; + circlearrowright: number; + downharpoonright: number; + ntrianglerighteq: number; + rightharpoondown: number; + rightrightarrows: number; + twoheadleftarrow: number; + vartriangleright: number; + CloseCurlyQuote: number; + ContourIntegral: number; + DoubleDownArrow: number; + DoubleLeftArrow: number; + DownRightVector: number; + LeftRightVector: number; + LeftTriangleBar: number; + LeftUpTeeVector: number; + LeftUpVectorBar: number; + LowerRightArrow: number; + NotGreaterEqual: number; + NotGreaterTilde: number; + NotLeftTriangle: number; + OverParenthesis: number; + RightDownVector: number; + ShortRightArrow: number; + UpperRightArrow: number; + bigtriangledown: number; + circlearrowleft: number; + curvearrowright: number; + downharpoonleft: number; + leftharpoondown: number; + leftrightarrows: number; + nLeftrightarrow: number; + nleftrightarrow: number; + ntrianglelefteq: number; + rightleftarrows: number; + rightsquigarrow: number; + rightthreetimes: number; + straightepsilon: number; + trianglerighteq: number; + vartriangleleft: number; + DiacriticalDot: number; + DoubleRightTee: number; + DownLeftVector: number; + GreaterGreater: number; + HorizontalLine: number; + InvisibleComma: number; + InvisibleTimes: number; + LeftDownVector: number; + LeftRightArrow: number; + Leftrightarrow: number; + LessSlantEqual: number; + LongRightArrow: number; + Longrightarrow: number; + LowerLeftArrow: number; + NestedLessLess: number; + NotGreaterLess: number; + NotLessGreater: number; + NotSubsetEqual: number; + NotVerticalBar: number; + OpenCurlyQuote: number; + ReverseElement: number; + RightTeeVector: number; + RightVectorBar: number; + ShortDownArrow: number; + ShortLeftArrow: number; + SquareSuperset: number; + TildeFullEqual: number; + UpperLeftArrow: number; + ZeroWidthSpace: number; + curvearrowleft: number; + doublebarwedge: number; + downdownarrows: number; + hookrightarrow: number; + leftleftarrows: number; + leftrightarrow: number; + leftthreetimes: number; + longrightarrow: number; + looparrowright: number; + nshortparallel: number; + ntriangleright: number; + rightarrowtail: number; + rightharpoonup: number; + trianglelefteq: number; + upharpoonright: number; + ApplyFunction: number; + DifferentialD: number; + DoubleLeftTee: number; + DoubleUpArrow: number; + LeftTeeVector: number; + LeftVectorBar: number; + LessFullEqual: number; + LongLeftArrow: number; + Longleftarrow: number; + NotTildeEqual: number; + NotTildeTilde: number; + Poincareplane: number; + PrecedesEqual: number; + PrecedesTilde: number; + RightArrowBar: number; + RightTeeArrow: number; + RightTriangle: number; + RightUpVector: number; + SucceedsEqual: number; + SucceedsTilde: number; + SupersetEqual: number; + UpEquilibrium: number; + VerticalTilde: number; + VeryThinSpace: number; + bigtriangleup: number; + blacktriangle: number; + divideontimes: number; + fallingdotseq: number; + hookleftarrow: number; + leftarrowtail: number; + leftharpoonup: number; + longleftarrow: number; + looparrowleft: number; + measuredangle: number; + ntriangleleft: number; + shortparallel: number; + smallsetminus: number; + triangleright: number; + upharpoonleft: number; + DownArrowBar: number; + DownTeeArrow: number; + ExponentialE: number; + GreaterEqual: number; + GreaterTilde: number; + HilbertSpace: number; + HumpDownHump: number; + Intersection: number; + LeftArrowBar: number; + LeftTeeArrow: number; + LeftTriangle: number; + LeftUpVector: number; + NotCongruent: number; + NotLessEqual: number; + NotLessTilde: number; + Proportional: number; + RightCeiling: number; + RoundImplies: number; + ShortUpArrow: number; + SquareSubset: number; + UnderBracket: number; + VerticalLine: number; + blacklozenge: number; + exponentiale: number; + risingdotseq: number; + triangledown: number; + triangleleft: number; + CircleMinus: number; + CircleTimes: number; + Equilibrium: number; + GreaterLess: number; + LeftCeiling: number; + LessGreater: number; + MediumSpace: number; + NotPrecedes: number; + NotSucceeds: number; + OverBracket: number; + RightVector: number; + Rrightarrow: number; + RuleDelayed: number; + SmallCircle: number; + SquareUnion: number; + SubsetEqual: number; + UpDownArrow: number; + Updownarrow: number; + VerticalBar: number; + backepsilon: number; + blacksquare: number; + circledcirc: number; + circleddash: number; + curlyeqprec: number; + curlyeqsucc: number; + diamondsuit: number; + eqslantless: number; + expectation: number; + nRightarrow: number; + nrightarrow: number; + preccurlyeq: number; + precnapprox: number; + quaternions: number; + straightphi: number; + succcurlyeq: number; + succnapprox: number; + thickapprox: number; + updownarrow: number; + Bernoullis: number; + CirclePlus: number; + EqualTilde: number; + Fouriertrf: number; + ImaginaryI: number; + Laplacetrf: number; + LeftVector: number; + Lleftarrow: number; + NotElement: number; + NotGreater: number; + Proportion: number; + RightArrow: number; + RightFloor: number; + Rightarrow: number; + TildeEqual: number; + TildeTilde: number; + UnderBrace: number; + UpArrowBar: number; + UpTeeArrow: number; + circledast: number; + complement: number; + curlywedge: number; + eqslantgtr: number; + gtreqqless: number; + lessapprox: number; + lesseqqgtr: number; + lmoustache: number; + longmapsto: number; + mapstodown: number; + mapstoleft: number; + nLeftarrow: number; + nleftarrow: number; + precapprox: number; + rightarrow: number; + rmoustache: number; + sqsubseteq: number; + sqsupseteq: number; + subsetneqq: number; + succapprox: number; + supsetneqq: number; + upuparrows: number; + varepsilon: number; + varnothing: number; + Backslash: number; + CenterDot: number; + CircleDot: number; + Congruent: number; + Coproduct: number; + DoubleDot: number; + DownArrow: number; + DownBreve: number; + Downarrow: number; + HumpEqual: number; + LeftArrow: number; + LeftFloor: number; + Leftarrow: number; + LessTilde: number; + Mellintrf: number; + MinusPlus: number; + NotCupCap: number; + NotExists: number; + OverBrace: number; + PlusMinus: number; + Therefore: number; + ThinSpace: number; + TripleDot: number; + UnionPlus: number; + backprime: number; + backsimeq: number; + bigotimes: number; + centerdot: number; + checkmark: number; + complexes: number; + dotsquare: number; + downarrow: number; + gtrapprox: number; + gtreqless: number; + heartsuit: number; + leftarrow: number; + lesseqgtr: number; + nparallel: number; + nshortmid: number; + nsubseteq: number; + nsupseteq: number; + pitchfork: number; + rationals: number; + spadesuit: number; + subseteqq: number; + subsetneq: number; + supseteqq: number; + supsetneq: number; + therefore: number; + triangleq: number; + varpropto: number; + DDotrahd: number; + DotEqual: number; + Integral: number; + LessLess: number; + NotEqual: number; + NotTilde: number; + PartialD: number; + Precedes: number; + RightTee: number; + Succeeds: number; + SuchThat: number; + Superset: number; + Uarrocir: number; + UnderBar: number; + andslope: number; + angmsdaa: number; + angmsdab: number; + angmsdac: number; + angmsdad: number; + angmsdae: number; + angmsdaf: number; + angmsdag: number; + angmsdah: number; + angrtvbd: number; + approxeq: number; + awconint: number; + backcong: number; + barwedge: number; + bbrktbrk: number; + bigoplus: number; + bigsqcup: number; + biguplus: number; + bigwedge: number; + boxminus: number; + boxtimes: number; + capbrcup: number; + circledR: number; + circledS: number; + cirfnint: number; + clubsuit: number; + cupbrcap: number; + curlyvee: number; + cwconint: number; + doteqdot: number; + dotminus: number; + drbkarow: number; + dzigrarr: number; + elinters: number; + emptyset: number; + eqvparsl: number; + fpartint: number; + geqslant: number; + gesdotol: number; + gnapprox: number; + hksearow: number; + hkswarow: number; + imagline: number; + imagpart: number; + infintie: number; + integers: number; + intercal: number; + intlarhk: number; + laemptyv: number; + ldrushar: number; + leqslant: number; + lesdotor: number; + llcorner: number; + lnapprox: number; + lrcorner: number; + lurdshar: number; + mapstoup: number; + multimap: number; + naturals: number; + otimesas: number; + parallel: number; + plusacir: number; + pointint: number; + precneqq: number; + precnsim: number; + profalar: number; + profline: number; + profsurf: number; + raemptyv: number; + realpart: number; + rppolint: number; + rtriltri: number; + scpolint: number; + setminus: number; + shortmid: number; + smeparsl: number; + sqsubset: number; + sqsupset: number; + subseteq: number; + succneqq: number; + succnsim: number; + supseteq: number; + thetasym: number; + thicksim: number; + timesbar: number; + triangle: number; + triminus: number; + trpezium: number; + ulcorner: number; + urcorner: number; + varkappa: number; + varsigma: number; + vartheta: number; + Because: number; + Cayleys: number; + Cconint: number; + Cedilla: number; + Diamond: number; + DownTee: number; + Element: number; + Epsilon: number; + Implies: number; + LeftTee: number; + NewLine: number; + NoBreak: number; + NotLess: number; + Omicron: number; + OverBar: number; + Product: number; + UpArrow: number; + Uparrow: number; + Upsilon: number; + alefsym: number; + angrtvb: number; + angzarr: number; + asympeq: number; + backsim: number; + because: number; + bemptyv: number; + between: number; + bigcirc: number; + bigodot: number; + bigstar: number; + boxplus: number; + ccupssm: number; + cemptyv: number; + cirscir: number; + coloneq: number; + congdot: number; + cudarrl: number; + cudarrr: number; + cularrp: number; + curarrm: number; + dbkarow: number; + ddagger: number; + ddotseq: number; + demptyv: number; + diamond: number; + digamma: number; + dotplus: number; + dwangle: number; + epsilon: number; + eqcolon: number; + equivDD: number; + gesdoto: number; + gtquest: number; + gtrless: number; + harrcir: number; + intprod: number; + isindot: number; + larrbfs: number; + larrsim: number; + lbrksld: number; + lbrkslu: number; + ldrdhar: number; + lesdoto: number; + lessdot: number; + lessgtr: number; + lesssim: number; + lotimes: number; + lozenge: number; + ltquest: number; + luruhar: number; + maltese: number; + minusdu: number; + napprox: number; + natural: number; + nearrow: number; + nexists: number; + notinva: number; + notinvb: number; + notinvc: number; + notniva: number; + notnivb: number; + notnivc: number; + npolint: number; + nsqsube: number; + nsqsupe: number; + nvinfin: number; + nwarrow: number; + olcross: number; + omicron: number; + orderof: number; + orslope: number; + pertenk: number; + planckh: number; + pluscir: number; + plussim: number; + plustwo: number; + precsim: number; + quatint: number; + questeq: number; + rarrbfs: number; + rarrsim: number; + rbrksld: number; + rbrkslu: number; + rdldhar: number; + realine: number; + rotimes: number; + ruluhar: number; + searrow: number; + simplus: number; + simrarr: number; + subedot: number; + submult: number; + subplus: number; + subrarr: number; + succsim: number; + supdsub: number; + supedot: number; + suphsub: number; + suplarr: number; + supmult: number; + supplus: number; + swarrow: number; + topfork: number; + triplus: number; + tritime: number; + uparrow: number; + upsilon: number; + uwangle: number; + vzigzag: number; + zigrarr: number; + Aacute: number; + Abreve: number; + Agrave: number; + Assign: number; + Atilde: number; + Barwed: number; + Bumpeq: number; + Cacute: number; + Ccaron: number; + Ccedil: number; + Colone: number; + Conint: number; + CupCap: number; + Dagger: number; + Dcaron: number; + DotDot: number; + Dstrok: number; + Eacute: number; + Ecaron: number; + Egrave: number; + Exists: number; + ForAll: number; + Gammad: number; + Gbreve: number; + Gcedil: number; + HARDcy: number; + Hstrok: number; + Iacute: number; + Igrave: number; + Itilde: number; + Jsercy: number; + Kcedil: number; + Lacute: number; + Lambda: number; + Lcaron: number; + Lcedil: number; + Lmidot: number; + Lstrok: number; + Nacute: number; + Ncaron: number; + Ncedil: number; + Ntilde: number; + Oacute: number; + Odblac: number; + Ograve: number; + Oslash: number; + Otilde: number; + Otimes: number; + Racute: number; + Rarrtl: number; + Rcaron: number; + Rcedil: number; + SHCHcy: number; + SOFTcy: number; + Sacute: number; + Scaron: number; + Scedil: number; + Square: number; + Subset: number; + Supset: number; + Tcaron: number; + Tcedil: number; + Tstrok: number; + Uacute: number; + Ubreve: number; + Udblac: number; + Ugrave: number; + Utilde: number; + Vdashl: number; + Verbar: number; + Vvdash: number; + Yacute: number; + Zacute: number; + Zcaron: number; + aacute: number; + abreve: number; + agrave: number; + andand: number; + angmsd: number; + angsph: number; + apacir: number; + approx: number; + atilde: number; + barvee: number; + barwed: number; + becaus: number; + bernou: number; + bigcap: number; + bigcup: number; + bigvee: number; + bkarow: number; + bottom: number; + bowtie: number; + boxbox: number; + bprime: number; + brvbar: number; + bullet: number; + bumpeq: number; + cacute: number; + capand: number; + capcap: number; + capcup: number; + capdot: number; + ccaron: number; + ccedil: number; + circeq: number; + cirmid: number; + colone: number; + commat: number; + compfn: number; + conint: number; + coprod: number; + copysr: number; + cularr: number; + cupcap: number; + cupcup: number; + cupdot: number; + curarr: number; + curren: number; + cylcty: number; + dagger: number; + daleth: number; + dcaron: number; + dfisht: number; + divide: number; + divonx: number; + dlcorn: number; + dlcrop: number; + dollar: number; + drcorn: number; + drcrop: number; + dstrok: number; + eacute: number; + easter: number; + ecaron: number; + ecolon: number; + egrave: number; + egsdot: number; + elsdot: number; + emptyv: number; + emsp13: number; + emsp14: number; + eparsl: number; + eqcirc: number; + equals: number; + equest: number; + female: number; + ffilig: number; + ffllig: number; + forall: number; + frac12: number; + frac13: number; + frac14: number; + frac15: number; + frac16: number; + frac18: number; + frac23: number; + frac25: number; + frac34: number; + frac35: number; + frac38: number; + frac45: number; + frac56: number; + frac58: number; + frac78: number; + gacute: number; + gammad: number; + gbreve: number; + gesdot: number; + gesles: number; + gtlPar: number; + gtrarr: number; + gtrdot: number; + gtrsim: number; + hairsp: number; + hamilt: number; + hardcy: number; + hearts: number; + hellip: number; + hercon: number; + homtht: number; + horbar: number; + hslash: number; + hstrok: number; + hybull: number; + hyphen: number; + iacute: number; + igrave: number; + iiiint: number; + iinfin: number; + incare: number; + inodot: number; + intcal: number; + iquest: number; + isinsv: number; + itilde: number; + jsercy: number; + kappav: number; + kcedil: number; + kgreen: number; + lAtail: number; + lacute: number; + lagran: number; + lambda: number; + langle: number; + larrfs: number; + larrhk: number; + larrlp: number; + larrpl: number; + larrtl: number; + latail: number; + lbrace: number; + lbrack: number; + lcaron: number; + lcedil: number; + ldquor: number; + lesdot: number; + lesges: number; + lfisht: number; + lfloor: number; + lharul: number; + llhard: number; + lmidot: number; + lmoust: number; + loplus: number; + lowast: number; + lowbar: number; + lparlt: number; + lrhard: number; + lsaquo: number; + lsquor: number; + lstrok: number; + lthree: number; + ltimes: number; + ltlarr: number; + ltrPar: number; + mapsto: number; + marker: number; + mcomma: number; + midast: number; + midcir: number; + middot: number; + minusb: number; + minusd: number; + mnplus: number; + models: number; + mstpos: number; + nVDash: number; + nVdash: number; + nacute: number; + ncaron: number; + ncedil: number; + nearhk: number; + nequiv: number; + nesear: number; + nexist: number; + nltrie: number; + nprcue: number; + nrtrie: number; + nsccue: number; + nsimeq: number; + ntilde: number; + numero: number; + nvDash: number; + nvHarr: number; + nvdash: number; + nvlArr: number; + nvrArr: number; + nwarhk: number; + nwnear: number; + oacute: number; + odblac: number; + odsold: number; + ograve: number; + ominus: number; + origof: number; + oslash: number; + otilde: number; + otimes: number; + parsim: number; + percnt: number; + period: number; + permil: number; + phmmat: number; + planck: number; + plankv: number; + plusdo: number; + plusdu: number; + plusmn: number; + preceq: number; + primes: number; + prnsim: number; + propto: number; + prurel: number; + puncsp: number; + qprime: number; + rAtail: number; + racute: number; + rangle: number; + rarrap: number; + rarrfs: number; + rarrhk: number; + rarrlp: number; + rarrpl: number; + rarrtl: number; + ratail: number; + rbrace: number; + rbrack: number; + rcaron: number; + rcedil: number; + rdquor: number; + rfisht: number; + rfloor: number; + rharul: number; + rmoust: number; + roplus: number; + rpargt: number; + rsaquo: number; + rsquor: number; + rthree: number; + rtimes: number; + sacute: number; + scaron: number; + scedil: number; + scnsim: number; + searhk: number; + seswar: number; + sfrown: number; + shchcy: number; + sigmaf: number; + sigmav: number; + simdot: number; + smashp: number; + softcy: number; + solbar: number; + spades: number; + sqsube: number; + sqsupe: number; + square: number; + squarf: number; + ssetmn: number; + ssmile: number; + sstarf: number; + subdot: number; + subset: number; + subsim: number; + subsub: number; + subsup: number; + succeq: number; + supdot: number; + supset: number; + supsim: number; + supsub: number; + supsup: number; + swarhk: number; + swnwar: number; + target: number; + tcaron: number; + tcedil: number; + telrec: number; + there4: number; + thetav: number; + thinsp: number; + thksim: number; + timesb: number; + timesd: number; + topbot: number; + topcir: number; + tprime: number; + tridot: number; + tstrok: number; + uacute: number; + ubreve: number; + udblac: number; + ufisht: number; + ugrave: number; + ulcorn: number; + ulcrop: number; + urcorn: number; + urcrop: number; + utilde: number; + vangrt: number; + varphi: number; + varrho: number; + veebar: number; + vellip: number; + verbar: number; + wedbar: number; + wedgeq: number; + weierp: number; + wreath: number; + xoplus: number; + xotime: number; + xsqcup: number; + xuplus: number; + xwedge: number; + yacute: number; + zacute: number; + zcaron: number; + zeetrf: number; + AElig: number; + Acirc: number; + Alpha: number; + Amacr: number; + Aogon: number; + Aring: number; + Breve: number; + Ccirc: number; + Colon: number; + Cross: number; + Dashv: number; + Delta: number; + Ecirc: number; + Emacr: number; + Eogon: number; + Equal: number; + Gamma: number; + Gcirc: number; + Hacek: number; + Hcirc: number; + IJlig: number; + Icirc: number; + Imacr: number; + Iogon: number; + Iukcy: number; + Jcirc: number; + Jukcy: number; + Kappa: number; + OElig: number; + Ocirc: number; + Omacr: number; + Omega: number; + Prime: number; + RBarr: number; + Scirc: number; + Sigma: number; + THORN: number; + TRADE: number; + TSHcy: number; + Theta: number; + Tilde: number; + Ubrcy: number; + Ucirc: number; + Umacr: number; + Union: number; + Uogon: number; + UpTee: number; + Uring: number; + VDash: number; + Vdash: number; + Wcirc: number; + Wedge: number; + Ycirc: number; + acirc: number; + acute: number; + aelig: number; + aleph: number; + alpha: number; + amacr: number; + amalg: number; + angle: number; + angrt: number; + angst: number; + aogon: number; + aring: number; + asymp: number; + awint: number; + bcong: number; + bdquo: number; + bepsi: number; + blank: number; + blk12: number; + blk14: number; + blk34: number; + block: number; + boxDL: number; + boxDR: number; + boxDl: number; + boxDr: number; + boxHD: number; + boxHU: number; + boxHd: number; + boxHu: number; + boxUL: number; + boxUR: number; + boxUl: number; + boxUr: number; + boxVH: number; + boxVL: number; + boxVR: number; + boxVh: number; + boxVl: number; + boxVr: number; + boxdL: number; + boxdR: number; + boxdl: number; + boxdr: number; + boxhD: number; + boxhU: number; + boxhd: number; + boxhu: number; + boxuL: number; + boxuR: number; + boxul: number; + boxur: number; + boxvH: number; + boxvL: number; + boxvR: number; + boxvh: number; + boxvl: number; + boxvr: number; + breve: number; + bsemi: number; + bsime: number; + bsolb: number; + bumpE: number; + bumpe: number; + caret: number; + caron: number; + ccaps: number; + ccirc: number; + ccups: number; + cedil: number; + check: number; + clubs: number; + colon: number; + comma: number; + crarr: number; + cross: number; + csube: number; + csupe: number; + ctdot: number; + cuepr: number; + cuesc: number; + cupor: number; + cuvee: number; + cuwed: number; + cwint: number; + dashv: number; + dblac: number; + ddarr: number; + delta: number; + dharl: number; + dharr: number; + diams: number; + disin: number; + doteq: number; + dtdot: number; + dtrif: number; + duarr: number; + duhar: number; + eDDot: number; + ecirc: number; + efDot: number; + emacr: number; + empty: number; + eogon: number; + eplus: number; + epsiv: number; + eqsim: number; + equiv: number; + erDot: number; + erarr: number; + esdot: number; + exist: number; + fflig: number; + filig: number; + fllig: number; + fltns: number; + forkv: number; + frasl: number; + frown: number; + gamma: number; + gcirc: number; + gescc: number; + gimel: number; + gneqq: number; + gnsim: number; + grave: number; + gsime: number; + gsiml: number; + gtcir: number; + gtdot: number; + harrw: number; + hcirc: number; + hoarr: number; + icirc: number; + iexcl: number; + iiint: number; + iiota: number; + ijlig: number; + imacr: number; + image: number; + imath: number; + imped: number; + infin: number; + iogon: number; + iprod: number; + isinE: number; + isins: number; + isinv: number; + iukcy: number; + jcirc: number; + jmath: number; + jukcy: number; + kappa: number; + lAarr: number; + lBarr: number; + langd: number; + laquo: number; + larrb: number; + lbarr: number; + lbbrk: number; + lbrke: number; + lceil: number; + ldquo: number; + lescc: number; + lhard: number; + lharu: number; + lhblk: number; + llarr: number; + lltri: number; + lneqq: number; + lnsim: number; + loang: number; + loarr: number; + lobrk: number; + lopar: number; + lrarr: number; + lrhar: number; + lrtri: number; + lsime: number; + lsimg: number; + lsquo: number; + ltcir: number; + ltdot: number; + ltrie: number; + ltrif: number; + mDDot: number; + mdash: number; + micro: number; + minus: number; + mumap: number; + nabla: number; + napos: number; + natur: number; + ncong: number; + ndash: number; + neArr: number; + nearr: number; + ngsim: number; + nhArr: number; + nharr: number; + nhpar: number; + nlArr: number; + nlarr: number; + nless: number; + nlsim: number; + nltri: number; + notin: number; + notni: number; + nprec: number; + nrArr: number; + nrarr: number; + nrtri: number; + nsime: number; + nsmid: number; + nspar: number; + nsube: number; + nsucc: number; + nsupe: number; + numsp: number; + nwArr: number; + nwarr: number; + ocirc: number; + odash: number; + oelig: number; + ofcir: number; + ohbar: number; + olarr: number; + olcir: number; + oline: number; + omacr: number; + omega: number; + operp: number; + oplus: number; + orarr: number; + order: number; + ovbar: number; + parsl: number; + phone: number; + plusb: number; + pluse: number; + pound: number; + prcue: number; + prime: number; + prnap: number; + prsim: number; + quest: number; + rAarr: number; + rBarr: number; + radic: number; + rangd: number; + range: number; + raquo: number; + rarrb: number; + rarrc: number; + rarrw: number; + ratio: number; + rbarr: number; + rbbrk: number; + rbrke: number; + rceil: number; + rdquo: number; + reals: number; + rhard: number; + rharu: number; + rlarr: number; + rlhar: number; + rnmid: number; + roang: number; + roarr: number; + robrk: number; + ropar: number; + rrarr: number; + rsquo: number; + rtrie: number; + rtrif: number; + sbquo: number; + sccue: number; + scirc: number; + scnap: number; + scsim: number; + sdotb: number; + sdote: number; + seArr: number; + searr: number; + setmn: number; + sharp: number; + sigma: number; + simeq: number; + simgE: number; + simlE: number; + simne: number; + slarr: number; + smile: number; + sqcap: number; + sqcup: number; + sqsub: number; + sqsup: number; + srarr: number; + starf: number; + strns: number; + subnE: number; + subne: number; + supnE: number; + supne: number; + swArr: number; + swarr: number; + szlig: number; + theta: number; + thkap: number; + thorn: number; + tilde: number; + times: number; + trade: number; + trisb: number; + tshcy: number; + twixt: number; + ubrcy: number; + ucirc: number; + udarr: number; + udhar: number; + uharl: number; + uharr: number; + uhblk: number; + ultri: number; + umacr: number; + uogon: number; + uplus: number; + upsih: number; + uring: number; + urtri: number; + utdot: number; + utrif: number; + uuarr: number; + vBarv: number; + vDash: number; + varpi: number; + vdash: number; + veeeq: number; + vltri: number; + vprop: number; + vrtri: number; + wcirc: number; + wedge: number; + xcirc: number; + xdtri: number; + xhArr: number; + xharr: number; + xlArr: number; + xlarr: number; + xodot: number; + xrArr: number; + xrarr: number; + xutri: number; + ycirc: number; + Aopf: number; + Ascr: number; + Auml: number; + Barv: number; + Beta: number; + Bopf: number; + Bscr: number; + CHcy: number; + COPY: number; + Cdot: number; + Copf: number; + Cscr: number; + DJcy: number; + DScy: number; + DZcy: number; + Darr: number; + Dopf: number; + Dscr: number; + Edot: number; + Eopf: number; + Escr: number; + Esim: number; + Euml: number; + Fopf: number; + Fscr: number; + GJcy: number; + Gdot: number; + Gopf: number; + Gscr: number; + Hopf: number; + Hscr: number; + IEcy: number; + IOcy: number; + Idot: number; + Iopf: number; + Iota: number; + Iscr: number; + Iuml: number; + Jopf: number; + Jscr: number; + KHcy: number; + KJcy: number; + Kopf: number; + Kscr: number; + LJcy: number; + Lang: number; + Larr: number; + Lopf: number; + Lscr: number; + Mopf: number; + Mscr: number; + NJcy: number; + Nopf: number; + Nscr: number; + Oopf: number; + Oscr: number; + Ouml: number; + Popf: number; + Pscr: number; + QUOT: number; + Qopf: number; + Qscr: number; + Rang: number; + Rarr: number; + Ropf: number; + Rscr: number; + SHcy: number; + Sopf: number; + Sqrt: number; + Sscr: number; + Star: number; + TScy: number; + Topf: number; + Tscr: number; + Uarr: number; + Uopf: number; + Upsi: number; + Uscr: number; + Uuml: number; + Vbar: number; + Vert: number; + Vopf: number; + Vscr: number; + Wopf: number; + Wscr: number; + Xopf: number; + Xscr: number; + YAcy: number; + YIcy: number; + YUcy: number; + Yopf: number; + Yscr: number; + Yuml: number; + ZHcy: number; + Zdot: number; + Zeta: number; + Zopf: number; + Zscr: number; + andd: number; + andv: number; + ange: number; + aopf: number; + apid: number; + apos: number; + ascr: number; + auml: number; + bNot: number; + bbrk: number; + beta: number; + beth: number; + bnot: number; + bopf: number; + boxH: number; + boxV: number; + boxh: number; + boxv: number; + bscr: number; + bsim: number; + bsol: number; + bull: number; + bump: number; + cdot: number; + cent: number; + chcy: number; + cirE: number; + circ: number; + cire: number; + comp: number; + cong: number; + copf: number; + copy: number; + cscr: number; + csub: number; + csup: number; + dArr: number; + dHar: number; + darr: number; + dash: number; + diam: number; + djcy: number; + dopf: number; + dscr: number; + dscy: number; + dsol: number; + dtri: number; + dzcy: number; + eDot: number; + ecir: number; + edot: number; + emsp: number; + ensp: number; + eopf: number; + epar: number; + epsi: number; + escr: number; + esim: number; + euml: number; + euro: number; + excl: number; + flat: number; + fnof: number; + fopf: number; + fork: number; + fscr: number; + gdot: number; + geqq: number; + gjcy: number; + gnap: number; + gneq: number; + gopf: number; + gscr: number; + gsim: number; + gtcc: number; + hArr: number; + half: number; + harr: number; + hbar: number; + hopf: number; + hscr: number; + iecy: number; + imof: number; + iocy: number; + iopf: number; + iota: number; + iscr: number; + isin: number; + iuml: number; + jopf: number; + jscr: number; + khcy: number; + kjcy: number; + kopf: number; + kscr: number; + lArr: number; + lHar: number; + lang: number; + larr: number; + late: number; + lcub: number; + ldca: number; + ldsh: number; + leqq: number; + ljcy: number; + lnap: number; + lneq: number; + lopf: number; + lozf: number; + lpar: number; + lscr: number; + lsim: number; + lsqb: number; + ltcc: number; + ltri: number; + macr: number; + male: number; + malt: number; + mlcp: number; + mldr: number; + mopf: number; + mscr: number; + nbsp: number; + ncap: number; + ncup: number; + ngeq: number; + ngtr: number; + nisd: number; + njcy: number; + nldr: number; + nleq: number; + nmid: number; + nopf: number; + npar: number; + nscr: number; + nsim: number; + nsub: number; + nsup: number; + ntgl: number; + ntlg: number; + oast: number; + ocir: number; + odiv: number; + odot: number; + ogon: number; + oint: number; + omid: number; + oopf: number; + opar: number; + ordf: number; + ordm: number; + oror: number; + oscr: number; + osol: number; + ouml: number; + para: number; + part: number; + perp: number; + phiv: number; + plus: number; + popf: number; + prap: number; + prec: number; + prnE: number; + prod: number; + prop: number; + pscr: number; + qint: number; + qopf: number; + qscr: number; + quot: number; + rArr: number; + rHar: number; + race: number; + rang: number; + rarr: number; + rcub: number; + rdca: number; + rdsh: number; + real: number; + rect: number; + rhov: number; + ring: number; + ropf: number; + rpar: number; + rscr: number; + rsqb: number; + rtri: number; + scap: number; + scnE: number; + sdot: number; + sect: number; + semi: number; + sext: number; + shcy: number; + sime: number; + simg: number; + siml: number; + smid: number; + smte: number; + solb: number; + sopf: number; + spar: number; + squf: number; + sscr: number; + star: number; + subE: number; + sube: number; + succ: number; + sung: number; + sup1: number; + sup2: number; + sup3: number; + supE: number; + supe: number; + tbrk: number; + tdot: number; + tint: number; + toea: number; + topf: number; + tosa: number; + trie: number; + tscr: number; + tscy: number; + uArr: number; + uHar: number; + uarr: number; + uopf: number; + upsi: number; + uscr: number; + utri: number; + uuml: number; + vArr: number; + vBar: number; + varr: number; + vert: number; + vopf: number; + vscr: number; + wopf: number; + wscr: number; + xcap: number; + xcup: number; + xmap: number; + xnis: number; + xopf: number; + xscr: number; + xvee: number; + yacy: number; + yicy: number; + yopf: number; + yscr: number; + yucy: number; + yuml: number; + zdot: number; + zeta: number; + zhcy: number; + zopf: number; + zscr: number; + zwnj: number; + AMP: number; + Acy: number; + Afr: number; + And: number; + Bcy: number; + Bfr: number; + Cap: number; + Cfr: number; + Chi: number; + Cup: number; + Dcy: number; + Del: number; + Dfr: number; + Dot: number; + ENG: number; + ETH: number; + Ecy: number; + Efr: number; + Eta: number; + Fcy: number; + Ffr: number; + Gcy: number; + Gfr: number; + Hat: number; + Hfr: number; + Icy: number; + Ifr: number; + Int: number; + Jcy: number; + Jfr: number; + Kcy: number; + Kfr: number; + Lcy: number; + Lfr: number; + Lsh: number; + Map: number; + Mcy: number; + Mfr: number; + Ncy: number; + Nfr: number; + Not: number; + Ocy: number; + Ofr: number; + Pcy: number; + Pfr: number; + Phi: number; + Psi: number; + Qfr: number; + REG: number; + Rcy: number; + Rfr: number; + Rho: number; + Rsh: number; + Scy: number; + Sfr: number; + Sub: number; + Sum: number; + Sup: number; + Tab: number; + Tau: number; + Tcy: number; + Tfr: number; + Ucy: number; + Ufr: number; + Vcy: number; + Vee: number; + Vfr: number; + Wfr: number; + Xfr: number; + Ycy: number; + Yfr: number; + Zcy: number; + Zfr: number; + acd: number; + acy: number; + afr: number; + amp: number; + and: number; + ang: number; + apE: number; + ape: number; + ast: number; + bcy: number; + bfr: number; + bot: number; + cap: number; + cfr: number; + chi: number; + cir: number; + cup: number; + dcy: number; + deg: number; + dfr: number; + die: number; + div: number; + dot: number; + ecy: number; + efr: number; + egs: number; + ell: number; + els: number; + eng: number; + eta: number; + eth: number; + fcy: number; + ffr: number; + gEl: number; + gap: number; + gcy: number; + gel: number; + geq: number; + ges: number; + gfr: number; + ggg: number; + glE: number; + gla: number; + glj: number; + gnE: number; + gne: number; + hfr: number; + icy: number; + iff: number; + ifr: number; + int: number; + jcy: number; + jfr: number; + kcy: number; + kfr: number; + lEg: number; + lap: number; + lat: number; + lcy: number; + leg: number; + leq: number; + les: number; + lfr: number; + lgE: number; + lnE: number; + lne: number; + loz: number; + lrm: number; + lsh: number; + map: number; + mcy: number; + mfr: number; + mho: number; + mid: number; + nap: number; + ncy: number; + nfr: number; + nge: number; + ngt: number; + nis: number; + niv: number; + nle: number; + nlt: number; + not: number; + npr: number; + nsc: number; + num: number; + ocy: number; + ofr: number; + ogt: number; + ohm: number; + olt: number; + ord: number; + orv: number; + par: number; + pcy: number; + pfr: number; + phi: number; + piv: number; + prE: number; + pre: number; + psi: number; + qfr: number; + rcy: number; + reg: number; + rfr: number; + rho: number; + rlm: number; + rsh: number; + scE: number; + sce: number; + scy: number; + sfr: number; + shy: number; + sim: number; + smt: number; + sol: number; + squ: number; + sub: number; + sum: number; + sup: number; + tau: number; + tcy: number; + tfr: number; + top: number; + ucy: number; + ufr: number; + uml: number; + vcy: number; + vee: number; + vfr: number; + wfr: number; + xfr: number; + ycy: number; + yen: number; + yfr: number; + zcy: number; + zfr: number; + zwj: number; + DD: number; + GT: number; + Gg: number; + Gt: number; + Im: number; + LT: number; + Ll: number; + Lt: number; + Mu: number; + Nu: number; + Or: number; + Pi: number; + Pr: number; + Re: number; + Sc: number; + Xi: number; + ac: number; + af: number; + ap: number; + dd: number; + ee: number; + eg: number; + el: number; + gE: number; + ge: number; + gg: number; + gl: number; + gt: number; + ic: number; + ii: number; + in: number; + it: number; + lE: number; + le: number; + lg: number; + ll: number; + lt: number; + mp: number; + mu: number; + ne: number; + ni: number; + nu: number; + oS: number; + or: number; + pi: number; + pm: number; + pr: number; + rx: number; + sc: number; + wp: number; + wr: number; + xi: number; +}; +export default _default; diff --git a/types/compiler/parse/utils/html.d.ts b/types/compiler/parse/utils/html.d.ts new file mode 100644 index 000000000000..891c237290c8 --- /dev/null +++ b/types/compiler/parse/utils/html.d.ts @@ -0,0 +1 @@ +export declare function decode_character_references(html: string): string; diff --git a/types/compiler/preprocess/index.d.ts b/types/compiler/preprocess/index.d.ts new file mode 100644 index 000000000000..6fd24ba0377f --- /dev/null +++ b/types/compiler/preprocess/index.d.ts @@ -0,0 +1,29 @@ +import { SourceMap } from 'magic-string'; +export interface PreprocessorGroup { + markup?: (options: { + content: string; + filename: string; + }) => { + code: string; + map?: SourceMap | string; + dependencies?: string[]; + }; + style?: Preprocessor; + script?: Preprocessor; +} +export declare type Preprocessor = (options: { + content: string; + attributes: Record; + filename?: string; +}) => { + code: string; + map?: SourceMap | string; + dependencies?: string[]; +}; +export default function preprocess(source: string, preprocessor: PreprocessorGroup | PreprocessorGroup[], options?: { + filename?: string; +}): Promise<{ + code: string; + dependencies: any[]; + toString(): string; +}>; diff --git a/types/compiler/utils/error.d.ts b/types/compiler/utils/error.d.ts new file mode 100644 index 000000000000..185145dbade0 --- /dev/null +++ b/types/compiler/utils/error.d.ts @@ -0,0 +1,8 @@ +export default function error(message: string, props: { + name: string; + code: string; + source: string; + filename: string; + start: number; + end?: number; +}): void; diff --git a/types/compiler/utils/full_char_code_at.d.ts b/types/compiler/utils/full_char_code_at.d.ts new file mode 100644 index 000000000000..f0d6763971a4 --- /dev/null +++ b/types/compiler/utils/full_char_code_at.d.ts @@ -0,0 +1 @@ +export default function full_char_code_at(str: string, i: number): number; diff --git a/types/compiler/utils/fuzzymatch.d.ts b/types/compiler/utils/fuzzymatch.d.ts new file mode 100644 index 000000000000..6aa4e011dfb4 --- /dev/null +++ b/types/compiler/utils/fuzzymatch.d.ts @@ -0,0 +1 @@ +export default function fuzzymatch(name: string, names: string[]): any; diff --git a/types/compiler/utils/get_code_frame.d.ts b/types/compiler/utils/get_code_frame.d.ts new file mode 100644 index 000000000000..50943dc998ed --- /dev/null +++ b/types/compiler/utils/get_code_frame.d.ts @@ -0,0 +1 @@ +export default function get_code_frame(source: string, line: number, column: number): string; diff --git a/types/compiler/utils/indentation.d.ts b/types/compiler/utils/indentation.d.ts new file mode 100644 index 000000000000..33596e8836d6 --- /dev/null +++ b/types/compiler/utils/indentation.d.ts @@ -0,0 +1,4 @@ +import MagicString from 'magic-string'; +import { Node } from '../interfaces'; +export declare function remove_indentation(code: MagicString, node: Node): void; +export declare function add_indentation(code: MagicString, node: Node, levels?: number): void; diff --git a/types/compiler/utils/list.d.ts b/types/compiler/utils/list.d.ts new file mode 100644 index 000000000000..b61de6978b04 --- /dev/null +++ b/types/compiler/utils/list.d.ts @@ -0,0 +1 @@ +export default function list(items: string[], conjunction?: string): string; diff --git a/types/compiler/utils/names.d.ts b/types/compiler/utils/names.d.ts new file mode 100644 index 000000000000..8d5b66f7eb93 --- /dev/null +++ b/types/compiler/utils/names.d.ts @@ -0,0 +1,6 @@ +export declare const globals: Set; +export declare const reserved: Set; +export declare function is_void(name: string): boolean; +export declare function quote_name_if_necessary(name: string): string; +export declare function quote_prop_if_necessary(name: string): string; +export declare function sanitize(name: string): string; diff --git a/types/compiler/utils/namespaces.d.ts b/types/compiler/utils/namespaces.d.ts new file mode 100644 index 000000000000..90c790dd27c6 --- /dev/null +++ b/types/compiler/utils/namespaces.d.ts @@ -0,0 +1,8 @@ +export declare const html = "http://www.w3.org/1999/xhtml"; +export declare const mathml = "http://www.w3.org/1998/Math/MathML"; +export declare const svg = "http://www.w3.org/2000/svg"; +export declare const xlink = "http://www.w3.org/1999/xlink"; +export declare const xml = "http://www.w3.org/XML/1998/namespace"; +export declare const xmlns = "http://www.w3.org/2000/xmlns"; +export declare const valid_namespaces: string[]; +export declare const namespaces: Record; diff --git a/types/compiler/utils/nodes_match.d.ts b/types/compiler/utils/nodes_match.d.ts new file mode 100644 index 000000000000..065e81bcc737 --- /dev/null +++ b/types/compiler/utils/nodes_match.d.ts @@ -0,0 +1 @@ +export declare function nodes_match(a: any, b: any): any; diff --git a/types/compiler/utils/patterns.d.ts b/types/compiler/utils/patterns.d.ts new file mode 100644 index 000000000000..be6dcdec8c49 --- /dev/null +++ b/types/compiler/utils/patterns.d.ts @@ -0,0 +1,2 @@ +export declare const whitespace: RegExp; +export declare const dimensions: RegExp; diff --git a/types/compiler/utils/repeat.d.ts b/types/compiler/utils/repeat.d.ts new file mode 100644 index 000000000000..a20ac93b75cd --- /dev/null +++ b/types/compiler/utils/repeat.d.ts @@ -0,0 +1 @@ +export default function repeat(str: string, i: number): string; diff --git a/types/compiler/utils/trim.d.ts b/types/compiler/utils/trim.d.ts new file mode 100644 index 000000000000..7f8e2824a7f1 --- /dev/null +++ b/types/compiler/utils/trim.d.ts @@ -0,0 +1,2 @@ +export declare function trim_start(str: string): string; +export declare function trim_end(str: string): string; diff --git a/types/runtime/ambient.d.ts b/types/runtime/ambient.d.ts new file mode 100644 index 000000000000..85e4ae2c0e99 --- /dev/null +++ b/types/runtime/ambient.d.ts @@ -0,0 +1,16 @@ +declare module '*.svelte' { + type Props = Record; + export default class { + constructor(options: { + target: Element; + anchor?: Element; + props?: Props; + hydrate?: boolean; + intro?: boolean; + }); + $set(props: Props): void; + $on(event: string, callback: (event: CustomEvent) => void): () => void; + $destroy(): void; + [accessor: string]: any; + } +} diff --git a/types/runtime/animate/index.d.ts b/types/runtime/animate/index.d.ts new file mode 100644 index 000000000000..405aa395f040 --- /dev/null +++ b/types/runtime/animate/index.d.ts @@ -0,0 +1,17 @@ +export interface AnimationConfig { + delay?: number; + duration?: number; + easing?: (t: number) => number; + css?: (t: number, u: number) => string; + tick?: (t: number, u: number) => void; +} +interface FlipParams { + delay: number; + duration: number | ((len: number) => number); + easing: (t: number) => number; +} +export declare function flip(node: Element, animation: { + from: DOMRect; + to: DOMRect; +}, params: FlipParams): AnimationConfig; +export {}; diff --git a/types/runtime/easing/index.d.ts b/types/runtime/easing/index.d.ts new file mode 100644 index 000000000000..c8d34d21b1c6 --- /dev/null +++ b/types/runtime/easing/index.d.ts @@ -0,0 +1,31 @@ +export { identity as linear } from 'svelte/internal'; +export declare function backInOut(t: number): number; +export declare function backIn(t: number): number; +export declare function backOut(t: number): number; +export declare function bounceOut(t: number): number; +export declare function bounceInOut(t: number): number; +export declare function bounceIn(t: number): number; +export declare function circInOut(t: number): number; +export declare function circIn(t: number): number; +export declare function circOut(t: number): number; +export declare function cubicInOut(t: number): number; +export declare function cubicIn(t: number): number; +export declare function cubicOut(t: number): number; +export declare function elasticInOut(t: number): number; +export declare function elasticIn(t: number): number; +export declare function elasticOut(t: number): number; +export declare function expoInOut(t: number): number; +export declare function expoIn(t: number): number; +export declare function expoOut(t: number): number; +export declare function quadInOut(t: number): number; +export declare function quadIn(t: number): number; +export declare function quadOut(t: number): number; +export declare function quartInOut(t: number): number; +export declare function quartIn(t: number): number; +export declare function quartOut(t: number): number; +export declare function quintInOut(t: number): number; +export declare function quintIn(t: number): number; +export declare function quintOut(t: number): number; +export declare function sineInOut(t: number): number; +export declare function sineIn(t: number): number; +export declare function sineOut(t: number): number; diff --git a/types/runtime/index.d.ts b/types/runtime/index.d.ts new file mode 100644 index 000000000000..1bd1f018a101 --- /dev/null +++ b/types/runtime/index.d.ts @@ -0,0 +1,2 @@ +import './ambient'; +export { onMount, onDestroy, beforeUpdate, afterUpdate, setContext, getContext, tick, createEventDispatcher } from 'svelte/internal'; diff --git a/types/runtime/internal/Component.d.ts b/types/runtime/internal/Component.d.ts new file mode 100644 index 000000000000..110fe3914e23 --- /dev/null +++ b/types/runtime/internal/Component.d.ts @@ -0,0 +1,31 @@ +interface T$$ { + dirty: null; + ctx: null | any; + bound: any; + update: () => void; + callbacks: any; + after_update: any[]; + props: any; + fragment: null | any; + not_equal: any; + before_update: any[]; + context: Map; + on_mount: any[]; + on_destroy: any[]; +} +export declare function bind(component: any, name: any, callback: any): void; +export declare function mount_component(component: any, target: any, anchor: any): void; +export declare function destroy_component(component: any, detaching: any): void; +export declare function init(component: any, options: any, instance: any, create_fragment: any, not_equal: any, prop_names: any): void; +export declare let SvelteElement: any; +export declare class SvelteComponent { + $$: T$$; + $destroy(): void; + $on(type: any, callback: any): () => void; + $set(): void; +} +export declare class SvelteComponentDev extends SvelteComponent { + constructor(options: any); + $destroy(): void; +} +export {}; diff --git a/types/runtime/internal/animations.d.ts b/types/runtime/internal/animations.d.ts new file mode 100644 index 000000000000..515861186732 --- /dev/null +++ b/types/runtime/internal/animations.d.ts @@ -0,0 +1,11 @@ +import { noop } from './utils'; +import { AnimationConfig } from '../animate'; +declare type PositionRect = DOMRect | ClientRect; +declare type AnimationFn = (node: Element, { from, to }: { + from: PositionRect; + to: PositionRect; +}, params: any) => AnimationConfig; +export declare function create_animation(node: Element & ElementCSSInlineStyle, from: PositionRect, fn: AnimationFn, params: any): typeof noop; +export declare function fix_position(node: Element & ElementCSSInlineStyle): void; +export declare function add_transform(node: Element & ElementCSSInlineStyle, a: PositionRect): void; +export {}; diff --git a/types/runtime/internal/await_block.d.ts b/types/runtime/internal/await_block.d.ts new file mode 100644 index 000000000000..b8f689dedb7f --- /dev/null +++ b/types/runtime/internal/await_block.d.ts @@ -0,0 +1 @@ +export declare function handle_promise(promise: any, info: any): boolean; diff --git a/types/runtime/internal/dom.d.ts b/types/runtime/internal/dom.d.ts new file mode 100644 index 000000000000..962e6964e1ea --- /dev/null +++ b/types/runtime/internal/dom.d.ts @@ -0,0 +1,40 @@ +export declare function append(target: Node, node: Node): void; +export declare function insert(target: Node, node: Node, anchor?: Node): void; +export declare function detach(node: Node): void; +export declare function detach_between(before: Node, after: Node): void; +export declare function detach_before(after: Node): void; +export declare function detach_after(before: Node): void; +export declare function destroy_each(iterations: any, detaching: any): void; +export declare function element(name: K): HTMLElementTagNameMap[K]; +export declare function object_without_properties(obj: T, exclude: K[]): Pick>; +export declare function svg_element(name: K): SVGElement; +export declare function text(data: string): Text; +export declare function space(): Text; +export declare function empty(): Text; +export declare function listen(node: Node, event: string, handler: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions | EventListenerOptions): () => void; +export declare function prevent_default(fn: any): (event: any) => any; +export declare function stop_propagation(fn: any): (event: any) => any; +export declare function attr(node: Element, attribute: string, value?: string): void; +export declare function set_attributes(node: Element & ElementCSSInlineStyle, attributes: { + [x: string]: string; +}): void; +export declare function set_custom_element_data(node: any, prop: any, value: any): void; +export declare function xlink_attr(node: any, attribute: any, value: any): void; +export declare function get_binding_group_value(group: any): any[]; +export declare function to_number(value: any): number; +export declare function time_ranges_to_array(ranges: any): any[]; +export declare function children(element: any): unknown[]; +export declare function claim_element(nodes: any, name: any, attributes: any, svg: any): any; +export declare function claim_text(nodes: any, data: any): any; +export declare function set_data(text: any, data: any): void; +export declare function set_input_type(input: any, type: any): void; +export declare function set_style(node: any, key: any, value: any): void; +export declare function select_option(select: any, value: any): void; +export declare function select_options(select: any, value: any): void; +export declare function select_value(select: any): any; +export declare function select_multiple_value(select: any): any; +export declare function add_resize_listener(element: any, fn: any): { + cancel: () => void; +}; +export declare function toggle_class(element: any, name: any, toggle: any): void; +export declare function custom_event(type: string, detail?: T): CustomEvent; diff --git a/types/runtime/internal/environment.d.ts b/types/runtime/internal/environment.d.ts new file mode 100644 index 000000000000..ae85662314db --- /dev/null +++ b/types/runtime/internal/environment.d.ts @@ -0,0 +1,5 @@ +export declare const is_client: boolean; +export declare let now: () => number; +export declare let raf: (cb: any) => number; +export declare function set_now(fn: any): void; +export declare function set_raf(fn: any): void; diff --git a/types/runtime/internal/globals.d.ts b/types/runtime/internal/globals.d.ts new file mode 100644 index 000000000000..53f84ffc2683 --- /dev/null +++ b/types/runtime/internal/globals.d.ts @@ -0,0 +1 @@ +export declare const globals: typeof globalThis; diff --git a/types/runtime/internal/index.d.ts b/types/runtime/internal/index.d.ts new file mode 100644 index 000000000000..0d0a6fd90fd0 --- /dev/null +++ b/types/runtime/internal/index.d.ts @@ -0,0 +1,14 @@ +export * from './animations'; +export * from './await_block'; +export * from './dom'; +export * from './environment'; +export * from './globals'; +export * from './keyed_each'; +export * from './lifecycle'; +export * from './loop'; +export * from './scheduler'; +export * from './spread'; +export * from './ssr'; +export * from './transitions'; +export * from './utils'; +export * from './Component'; diff --git a/types/runtime/internal/keyed_each.d.ts b/types/runtime/internal/keyed_each.d.ts new file mode 100644 index 000000000000..fe41a86bd5a0 --- /dev/null +++ b/types/runtime/internal/keyed_each.d.ts @@ -0,0 +1,6 @@ +export declare function destroy_block(block: any, lookup: any): void; +export declare function outro_and_destroy_block(block: any, lookup: any): void; +export declare function fix_and_destroy_block(block: any, lookup: any): void; +export declare function fix_and_outro_and_destroy_block(block: any, lookup: any): void; +export declare function update_keyed_each(old_blocks: any, changed: any, get_key: any, dynamic: any, ctx: any, list: any, lookup: any, node: any, destroy: any, create_each_block: any, next: any, get_context: any): any[]; +export declare function measure(blocks: any): {}; diff --git a/types/runtime/internal/lifecycle.d.ts b/types/runtime/internal/lifecycle.d.ts new file mode 100644 index 000000000000..010e9910fe30 --- /dev/null +++ b/types/runtime/internal/lifecycle.d.ts @@ -0,0 +1,10 @@ +export declare let current_component: any; +export declare function set_current_component(component: any): void; +export declare function beforeUpdate(fn: any): void; +export declare function onMount(fn: any): void; +export declare function afterUpdate(fn: any): void; +export declare function onDestroy(fn: any): void; +export declare function createEventDispatcher(): (type: any, detail: any) => void; +export declare function setContext(key: any, context: any): void; +export declare function getContext(key: any): any; +export declare function bubble(component: any, event: any): void; diff --git a/types/runtime/internal/loop.d.ts b/types/runtime/internal/loop.d.ts new file mode 100644 index 000000000000..8fc40504dae9 --- /dev/null +++ b/types/runtime/internal/loop.d.ts @@ -0,0 +1,6 @@ +export interface Task { + abort(): void; + promise: Promise; +} +export declare function clear_loops(): void; +export declare function loop(fn: (number: any) => void): Task; diff --git a/types/runtime/internal/scheduler.d.ts b/types/runtime/internal/scheduler.d.ts new file mode 100644 index 000000000000..6f6cbf320daa --- /dev/null +++ b/types/runtime/internal/scheduler.d.ts @@ -0,0 +1,10 @@ +export declare const dirty_components: any[]; +export declare const intros: { + enabled: boolean; +}; +export declare const binding_callbacks: any[]; +export declare function schedule_update(): void; +export declare function tick(): Promise; +export declare function add_render_callback(fn: any): void; +export declare function add_flush_callback(fn: any): void; +export declare function flush(): void; diff --git a/types/runtime/internal/spread.d.ts b/types/runtime/internal/spread.d.ts new file mode 100644 index 000000000000..8bcd4fb2a82f --- /dev/null +++ b/types/runtime/internal/spread.d.ts @@ -0,0 +1 @@ +export declare function get_spread_update(levels: any, updates: any): {}; diff --git a/types/runtime/internal/ssr.d.ts b/types/runtime/internal/ssr.d.ts new file mode 100644 index 000000000000..189fda6a1c37 --- /dev/null +++ b/types/runtime/internal/ssr.d.ts @@ -0,0 +1,35 @@ +import { Readable } from 'svelte/store'; +export declare const invalid_attribute_name_character: RegExp; +export declare function spread(args: any): string; +export declare const escaped: { + '"': string; + "'": string; + '&': string; + '<': string; + '>': string; +}; +export declare function escape(html: any): string; +export declare function each(items: any, fn: any): string; +export declare const missing_component: { + $$render: () => string; +}; +export declare function validate_component(component: any, name: any): any; +export declare function debug(file: any, line: any, column: any, values: any): string; +export declare function create_ssr_component(fn: any): { + render: (props?: {}, options?: {}) => { + html: any; + css: { + code: string; + map: any; + }; + head: string; + }; + $$render: (result: any, props: any, bindings: any, slots: any) => any; +}; +/** + * Get the current value from a store by subscribing and immediately unsubscribing. + * @param store readable + */ +export declare function get_store_value(store: Readable): T | undefined; +export declare function add_attribute(name: any, value: any): string; +export declare function add_classes(classes: any): string; diff --git a/types/runtime/internal/style_manager.d.ts b/types/runtime/internal/style_manager.d.ts new file mode 100644 index 000000000000..9b669eeb5265 --- /dev/null +++ b/types/runtime/internal/style_manager.d.ts @@ -0,0 +1,3 @@ +export declare function create_rule(node: Element & ElementCSSInlineStyle, a: number, b: number, duration: number, delay: number, ease: (t: number) => number, fn: (t: number, u: number) => string, uid?: number): string; +export declare function delete_rule(node: Element & ElementCSSInlineStyle, name?: string): void; +export declare function clear_rules(): void; diff --git a/types/runtime/internal/transitions.d.ts b/types/runtime/internal/transitions.d.ts new file mode 100644 index 000000000000..cd9fbd505a27 --- /dev/null +++ b/types/runtime/internal/transitions.d.ts @@ -0,0 +1,19 @@ +import { TransitionConfig } from '../transition'; +export declare function group_outros(): void; +export declare function check_outros(): void; +export declare function transition_in(block: any, local?: 0 | 1): void; +export declare function transition_out(block: any, local: 0 | 1, detach: 0 | 1, callback: any): void; +declare type TransitionFn = (node: Element, params: any) => TransitionConfig; +export declare function create_in_transition(node: Element & ElementCSSInlineStyle, fn: TransitionFn, params: any): { + start(): void; + invalidate(): void; + end(): void; +}; +export declare function create_out_transition(node: Element & ElementCSSInlineStyle, fn: TransitionFn, params: any): { + end(reset: any): void; +}; +export declare function create_bidirectional_transition(node: Element & ElementCSSInlineStyle, fn: TransitionFn, params: any, intro: boolean): { + run(b: any): void; + end(): void; +}; +export {}; diff --git a/types/runtime/internal/utils.d.ts b/types/runtime/internal/utils.d.ts new file mode 100644 index 000000000000..25ace037e2dc --- /dev/null +++ b/types/runtime/internal/utils.d.ts @@ -0,0 +1,18 @@ +export declare function noop(): void; +export declare const identity: (x: any) => any; +export declare function assign(tar: T, src: S): T & S; +export declare function is_promise(value: any): value is PromiseLike; +export declare function add_location(element: any, file: any, line: any, column: any, char: any): void; +export declare function run(fn: any): any; +export declare function blank_object(): any; +export declare function run_all(fns: any): void; +export declare function is_function(thing: any): thing is Function; +export declare function safe_not_equal(a: any, b: any): boolean; +export declare function not_equal(a: any, b: any): boolean; +export declare function validate_store(store: any, name: any): void; +export declare function subscribe(component: any, store: any, callback: any): void; +export declare function create_slot(definition: any, ctx: any, fn: any): any; +export declare function get_slot_context(definition: any, ctx: any, fn: any): any; +export declare function get_slot_changes(definition: any, ctx: any, changed: any, fn: any): any; +export declare function exclude_internal_props(props: any): {}; +export declare function once(fn: any): (this: any, ...args: any[]) => void; diff --git a/types/runtime/motion/index.d.ts b/types/runtime/motion/index.d.ts new file mode 100644 index 000000000000..ea6c646dd94b --- /dev/null +++ b/types/runtime/motion/index.d.ts @@ -0,0 +1,2 @@ +export * from './spring'; +export * from './tweened'; diff --git a/types/runtime/motion/spring.d.ts b/types/runtime/motion/spring.d.ts new file mode 100644 index 000000000000..6395681256da --- /dev/null +++ b/types/runtime/motion/spring.d.ts @@ -0,0 +1,20 @@ +import { Readable } from 'svelte/store'; +interface SpringOpts { + stiffness?: number; + damping?: number; + precision?: number; +} +interface SpringUpdateOpts { + hard?: any; + soft?: string | number | boolean; +} +declare type Updater = (target_value: T, value: T) => T; +interface Spring extends Readable { + set: (new_value: T, opts?: SpringUpdateOpts) => Promise; + update: (fn: Updater, opts?: SpringUpdateOpts) => Promise; + precision: number; + damping: number; + stiffness: number; +} +export declare function spring(value: T, opts?: SpringOpts): Spring; +export {}; diff --git a/types/runtime/motion/tweened.d.ts b/types/runtime/motion/tweened.d.ts new file mode 100644 index 000000000000..edbb79eb7b63 --- /dev/null +++ b/types/runtime/motion/tweened.d.ts @@ -0,0 +1,14 @@ +import { Readable } from 'svelte/store'; +interface Options { + delay?: number; + duration?: number | ((from: T, to: T) => number); + easing?: (t: number) => number; + interpolate?: (a: T, b: T) => (t: number) => T; +} +declare type Updater = (target_value: T, value: T) => T; +interface Tweened extends Readable { + set(value: T, opts: Options): Promise; + update(updater: Updater, opts: Options): Promise; +} +export declare function tweened(value: T, defaults?: Options): Tweened; +export {}; diff --git a/types/runtime/motion/utils.d.ts b/types/runtime/motion/utils.d.ts new file mode 100644 index 000000000000..1fc2001074c0 --- /dev/null +++ b/types/runtime/motion/utils.d.ts @@ -0,0 +1 @@ +export declare function is_date(obj: any): obj is Date; diff --git a/types/runtime/store/index.d.ts b/types/runtime/store/index.d.ts new file mode 100644 index 000000000000..94e29da6cd28 --- /dev/null +++ b/types/runtime/store/index.d.ts @@ -0,0 +1,59 @@ +export { get_store_value as get } from 'svelte/internal'; +/** Callback to inform of a value updates. */ +declare type Subscriber = (value: T) => void; +/** Unsubscribes from value updates. */ +declare type Unsubscriber = () => void; +/** Callback to update a value. */ +declare type Updater = (value: T) => T; +/** Cleanup logic callback. */ +declare type Invalidator = (value?: T) => void; +/** Start and stop notification callbacks. */ +declare type StartStopNotifier = (set: Subscriber) => Unsubscriber | void; +/** Readable interface for subscribing. */ +export interface Readable { + /** + * Subscribe on value changes. + * @param run subscription callback + * @param invalidate cleanup callback + */ + subscribe(run: Subscriber, invalidate?: Invalidator): Unsubscriber; +} +/** Writable interface for both updating and subscribing. */ +export interface Writable extends Readable { + /** + * Set value and inform subscribers. + * @param value to set + */ + set(value: T): void; + /** + * Update value using callback and inform subscribers. + * @param updater callback + */ + update(updater: Updater): void; +} +/** + * Creates a `Readable` store that allows reading by subscription. + * @param value initial value + * @param {StartStopNotifier}start start and stop notifications for subscriptions + */ +export declare function readable(value: T, start: StartStopNotifier): Readable; +/** + * Create a `Writable` store that allows both updating and reading by subscription. + * @param {*=}value initial value + * @param {StartStopNotifier=}start start and stop notifications for subscriptions + */ +export declare function writable(value: T, start?: StartStopNotifier): Writable; +/** One or more `Readable`s. */ +declare type Stores = Readable | [Readable, ...Array>]; +/** One or more values from `Readable` stores. */ +declare type StoresValues = T extends Readable ? U : { + [K in keyof T]: T[K] extends Readable ? U : never; +}; +/** + * Derived value store by synchronizing one or more readable stores and + * applying an aggregation function over its input values. + * @param {Stores} stores input stores + * @param {function(Stores=, function(*)=):*}fn function callback that aggregates the values + * @param {*=}initial_value when used asynchronously + */ +export declare function derived(stores: S, fn: (values: StoresValues, set?: Subscriber) => T | Unsubscriber | void, initial_value?: T): Readable; diff --git a/types/runtime/transition/index.d.ts b/types/runtime/transition/index.d.ts new file mode 100644 index 000000000000..29ade05924e0 --- /dev/null +++ b/types/runtime/transition/index.d.ts @@ -0,0 +1,55 @@ +export interface TransitionConfig { + delay?: number; + duration?: number; + easing?: (t: number) => number; + css?: (t: number, u: number) => string; + tick?: (t: number, u: number) => void; +} +interface FadeParams { + delay: number; + duration: number; +} +export declare function fade(node: Element, { delay, duration }: FadeParams): TransitionConfig; +interface FlyParams { + delay: number; + duration: number; + easing: (t: number) => number; + x: number; + y: number; + opacity: number; +} +export declare function fly(node: Element, { delay, duration, easing, x, y, opacity }: FlyParams): TransitionConfig; +interface SlideParams { + delay: number; + duration: number; + easing: (t: number) => number; +} +export declare function slide(node: Element, { delay, duration, easing }: SlideParams): TransitionConfig; +interface ScaleParams { + delay: number; + duration: number; + easing: (t: number) => number; + start: number; + opacity: number; +} +export declare function scale(node: Element, { delay, duration, easing, start, opacity }: ScaleParams): TransitionConfig; +interface DrawParams { + delay: number; + speed: number; + duration: number | ((len: number) => number); + easing: (t: number) => number; +} +export declare function draw(node: SVGElement & { + getTotalLength(): number; +}, { delay, speed, duration, easing }: DrawParams): TransitionConfig; +interface CrossfadeParams { + delay: number; + duration: number | ((len: number) => number); + easing: (t: number) => number; +} +export declare function crossfade({ fallback, ...defaults }: CrossfadeParams & { + fallback: (node: Element, params: CrossfadeParams, intro: boolean) => TransitionConfig; +}): ((node: Element, params: CrossfadeParams & { + key: any; +}) => () => TransitionConfig)[]; +export {};