You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
typesetting/pitfall/pdfkit/node_modules/dfa/compile.js.map

1 line
61 KiB
Plaintext

{"version":3,"file":null,"sources":["src/utils.js","src/nodes.js","src/grammar.js","src/SymbolTable.js","src/dfa.js","src/StateMachine.js","src/compile.js"],"sourcesContent":["/**\n * Returns a new set representing the union of a and b.\n */\nexport function union(a, b) {\n let s = new Set(a);\n addAll(s, b);\n return s;\n}\n\n/**\n * Adds all items from the set b to a.\n */\nexport function addAll(a, b) {\n for (let x of b) {\n a.add(x);\n }\n}\n\n/**\n * Returns whether two sets are equal\n */\nexport function equal(a, b) {\n if (a === b)\n return true;\n\n if (a.size !== b.size)\n return false;\n\n for (let x of a) {\n if (!b.has(x)) {\n return false;\n }\n }\n\n return true;\n}\n","import {addAll, union} from './utils';\n\n/**\n * Base AST node\n */\nexport class Node {\n constructor() {\n Object.defineProperty(this, 'followpos', {value: new Set})\n }\n\n calcFollowpos() {\n for (let key in this) {\n if (this[key] instanceof Node) {\n this[key].calcFollowpos();\n }\n }\n }\n}\n\n/**\n * Represents a variable reference\n */\nexport class Variable extends Node {\n constructor(name) {\n super();\n this.name = name;\n }\n}\n\n/**\n * Represents a comment\n */\nexport class Comment extends Node {\n constructor(value) {\n super();\n this.value = value;\n }\n}\n\n/**\n * Represents an assignment statement.\n * e.g. `variable = expression;`\n */\nexport class Assignment extends Node {\n constructor(variable, expression) {\n super();\n this.variable = variable;\n this.expression = expression;\n }\n}\n\n/**\n * Represents an alternation.\n * e.g. `a | b`\n */\nexport class Alternation extends Node {\n constructor(a, b) {\n super();\n this.a = a;\n this.b = b;\n }\n\n get nullable() {\n return this.a.nullable || this.b.nullable;\n }\n\n get firstpos() {\n return union(this.a.firstpos, this.b.firstpos);\n }\n\n get lastpos() {\n return union(this.a.lastpos, this.b.lastpos);\n }\n\n copy() {\n return new Alternation(this.a.copy(), this.b.copy());\n }\n}\n\n/**\n * Represents a concatenation, or chain.\n * e.g. `a b c`\n */\nexport class Concatenation extends Node {\n constructor(a, b) {\n super();\n this.a = a;\n this.b = b;\n }\n\n get nullable() {\n return this.a.nullable && this.b.nullable;\n }\n\n get firstpos() {\n let s = this.a.firstpos;\n if (this.a.nullable) {\n s = union(s, this.b.firstpos);\n }\n\n return s;\n }\n\n get lastpos() {\n let s = this.b.lastpos;\n if (this.b.nullable) {\n s = union(s, this.a.lastpos);\n }\n\n return s;\n }\n\n calcFollowpos() {\n super.calcFollowpos();\n for (let n of this.a.lastpos) {\n addAll(n.followpos, this.b.firstpos);\n }\n }\n\n copy() {\n return new Concatenation(this.a.copy(), this.b.copy());\n }\n}\n\n/**\n * Represents a repetition.\n * e.g. `a+`, `b*`, or `c?`\n */\nexport class Repeat extends Node {\n constructor(expression, op) {\n super();\n this.expression = expression;\n this.op = op;\n }\n\n get nullable() {\n return this.op === '*' || this.op === '?';\n }\n\n get firstpos() {\n return this.expression.firstpos;\n }\n\n get lastpos() {\n return this.expression.lastpos;\n }\n\n calcFollowpos() {\n super.calcFollowpos();\n if (this.op === '*' || this.op === '+') {\n for (let n of this.lastpos) {\n addAll(n.followpos, this.firstpos);\n }\n }\n }\n\n copy() {\n return new Repeat(this.expression.copy(), this.op);\n }\n}\n\n/**\n * Base class for leaf nodes\n */\nclass Leaf extends Node {\n get nullable() {\n return false;\n }\n\n get firstpos() {\n return new Set([this]);\n }\n\n get lastpos() {\n return new Set([this]);\n }\n}\n\n/**\n * Represents a literal value, e.g. a number\n */\nexport class Literal extends Leaf {\n constructor(value) {\n super();\n this.value = value;\n }\n\n copy() {\n return new Literal(this.value);\n }\n}\n\n/**\n * Marks the end of an expression\n */\nexport class EndMarker extends Leaf {}\n\n/**\n * Represents a tag\n * e.g. `a:(a b)`\n */\nexport class Tag extends Leaf {\n constructor(name) {\n super();\n this.name = name;\n }\n\n get nullable() {\n return true;\n }\n\n copy() {\n return new Tag(this.name);\n }\n}\n","/*\n * Generated by PEG.js 0.10.0.\n *\n * http://pegjs.org/\n */\n\n\"use strict\";\n\nfunction peg$subclass(child, parent) {\n function ctor() { this.constructor = child; }\n ctor.prototype = parent.prototype;\n child.prototype = new ctor();\n}\n\nfunction peg$SyntaxError(message, expected, found, location) {\n this.message = message;\n this.expected = expected;\n this.found = found;\n this.location = location;\n this.name = \"SyntaxError\";\n\n if (typeof Error.captureStackTrace === \"function\") {\n Error.captureStackTrace(this, peg$SyntaxError);\n }\n}\n\npeg$subclass(peg$SyntaxError, Error);\n\npeg$SyntaxError.buildMessage = function(expected, found) {\n var DESCRIBE_EXPECTATION_FNS = {\n literal: function(expectation) {\n return \"\\\"\" + literalEscape(expectation.text) + \"\\\"\";\n },\n\n \"class\": function(expectation) {\n var escapedParts = \"\",\n i;\n\n for (i = 0; i < expectation.parts.length; i++) {\n escapedParts += expectation.parts[i] instanceof Array\n ? classEscape(expectation.parts[i][0]) + \"-\" + classEscape(expectation.parts[i][1])\n : classEscape(expectation.parts[i]);\n }\n\n return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts + \"]\";\n },\n\n any: function(expectation) {\n return \"any character\";\n },\n\n end: function(expectation) {\n return \"end of input\";\n },\n\n other: function(expectation) {\n return expectation.description;\n }\n };\n\n function hex(ch) {\n return ch.charCodeAt(0).toString(16).toUpperCase();\n }\n\n function literalEscape(s) {\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\0/g, '\\\\0')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return '\\\\x' + hex(ch); });\n }\n\n function classEscape(s) {\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\\]/g, '\\\\]')\n .replace(/\\^/g, '\\\\^')\n .replace(/-/g, '\\\\-')\n .replace(/\\0/g, '\\\\0')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return '\\\\x' + hex(ch); });\n }\n\n function describeExpectation(expectation) {\n return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n }\n\n function describeExpected(expected) {\n var descriptions = new Array(expected.length),\n i, j;\n\n for (i = 0; i < expected.length; i++) {\n descriptions[i] = describeExpectation(expected[i]);\n }\n\n descriptions.sort();\n\n if (descriptions.length > 0) {\n for (i = 1, j = 1; i < descriptions.length; i++) {\n if (descriptions[i - 1] !== descriptions[i]) {\n descriptions[j] = descriptions[i];\n j++;\n }\n }\n descriptions.length = j;\n }\n\n switch (descriptions.length) {\n case 1:\n return descriptions[0];\n\n case 2:\n return descriptions[0] + \" or \" + descriptions[1];\n\n default:\n return descriptions.slice(0, -1).join(\", \")\n + \", or \"\n + descriptions[descriptions.length - 1];\n }\n }\n\n function describeFound(found) {\n return found ? \"\\\"\" + literalEscape(found) + \"\\\"\" : \"end of input\";\n }\n\n return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n};\n\nfunction peg$parse(input, options) {\n options = options !== void 0 ? options : {};\n\n var peg$FAILED = {},\n\n peg$startRuleFunctions = { rules: peg$parserules },\n peg$startRuleFunction = peg$parserules,\n\n peg$c0 = function(s) { return s },\n peg$c1 = \"#\",\n peg$c2 = peg$literalExpectation(\"#\", false),\n peg$c3 = /^[^\\r\\n]/,\n peg$c4 = peg$classExpectation([\"\\r\", \"\\n\"], true, false),\n peg$c5 = /^[\\r\\n]/,\n peg$c6 = peg$classExpectation([\"\\r\", \"\\n\"], false, false),\n peg$c7 = function(v) { return new n.Comment(v.join('')) },\n peg$c8 = \"=\",\n peg$c9 = peg$literalExpectation(\"=\", false),\n peg$c10 = \";\",\n peg$c11 = peg$literalExpectation(\";\", false),\n peg$c12 = function(v, e) { return new n.Assignment(v, e) },\n peg$c13 = function(v) { return new n.Variable(v) },\n peg$c14 = \"|\",\n peg$c15 = peg$literalExpectation(\"|\", false),\n peg$c16 = function(a, b) { return new n.Alternation(a, b) },\n peg$c17 = function(a, b) { return new n.Concatenation(a, b) },\n peg$c18 = \":\",\n peg$c19 = peg$literalExpectation(\":\", false),\n peg$c20 = function(t, e) { return new n.Concatenation(e, new n.Tag(t)) },\n peg$c21 = \"*\",\n peg$c22 = peg$literalExpectation(\"*\", false),\n peg$c23 = function(t) { return new n.Repeat(t, '*') },\n peg$c24 = \"?\",\n peg$c25 = peg$literalExpectation(\"?\", false),\n peg$c26 = function(t) { return new n.Repeat(t, '?') },\n peg$c27 = \"+\",\n peg$c28 = peg$literalExpectation(\"+\", false),\n peg$c29 = function(t) { return new n.Repeat(t, '+') },\n peg$c30 = function(x) { return new n.Literal(x) },\n peg$c31 = \"(\",\n peg$c32 = peg$literalExpectation(\"(\", false),\n peg$c33 = \")\",\n peg$c34 = peg$literalExpectation(\")\", false),\n peg$c35 = function(e) { return e },\n peg$c36 = function(a, b) { return a + b.join('') },\n peg$c37 = \"_\",\n peg$c38 = peg$literalExpectation(\"_\", false),\n peg$c39 = /^[a-zA-Z]/,\n peg$c40 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"]], false, false),\n peg$c41 = /^[0-9]/,\n peg$c42 = peg$classExpectation([[\"0\", \"9\"]], false, false),\n peg$c43 = function(num) { return parseInt(num.join('')) },\n peg$c44 = /^[ \\t\\r\\n]/,\n peg$c45 = peg$classExpectation([\" \", \"\\t\", \"\\r\", \"\\n\"], false, false),\n\n peg$currPos = 0,\n peg$savedPos = 0,\n peg$posDetailsCache = [{ line: 1, column: 1 }],\n peg$maxFailPos = 0,\n peg$maxFailExpected = [],\n peg$silentFails = 0,\n\n peg$result;\n\n if (\"startRule\" in options) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text() {\n return input.substring(peg$savedPos, peg$currPos);\n }\n\n function location() {\n return peg$computeLocation(peg$savedPos, peg$currPos);\n }\n\n function expected(description, location) {\n location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos)\n\n throw peg$buildStructuredError(\n [peg$otherExpectation(description)],\n input.substring(peg$savedPos, peg$currPos),\n location\n );\n }\n\n function error(message, location) {\n location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos)\n\n throw peg$buildSimpleError(message, location);\n }\n\n function peg$literalExpectation(text, ignoreCase) {\n return { type: \"literal\", text: text, ignoreCase: ignoreCase };\n }\n\n function peg$classExpectation(parts, inverted, ignoreCase) {\n return { type: \"class\", parts: parts, inverted: inverted, ignoreCase: ignoreCase };\n }\n\n function peg$anyExpectation() {\n return { type: \"any\" };\n }\n\n function peg$endExpectation() {\n return { type: \"end\" };\n }\n\n function peg$otherExpectation(description) {\n return { type: \"other\", description: description };\n }\n\n function peg$computePosDetails(pos) {\n var details = peg$posDetailsCache[pos], p;\n\n if (details) {\n return details;\n } else {\n p = pos - 1;\n while (!peg$posDetailsCache[p]) {\n p--;\n }\n\n details = peg$posDetailsCache[p];\n details = {\n line: details.line,\n column: details.column\n };\n\n while (p < pos) {\n if (input.charCodeAt(p) === 10) {\n details.line++;\n details.column = 1;\n } else {\n details.column++;\n }\n\n p++;\n }\n\n peg$posDetailsCache[pos] = details;\n return details;\n }\n }\n\n function peg$computeLocation(startPos, endPos) {\n var startPosDetails = peg$computePosDetails(startPos),\n endPosDetails = peg$computePosDetails(endPos);\n\n return {\n start: {\n offset: startPos,\n line: startPosDetails.line,\n column: startPosDetails.column\n },\n end: {\n offset: endPos,\n line: endPosDetails.line,\n column: endPosDetails.column\n }\n };\n }\n\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) { return; }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected);\n }\n\n function peg$buildSimpleError(message, location) {\n return new peg$SyntaxError(message, null, null, location);\n }\n\n function peg$buildStructuredError(expected, found, location) {\n return new peg$SyntaxError(\n peg$SyntaxError.buildMessage(expected, found),\n expected,\n found,\n location\n );\n }\n\n function peg$parserules() {\n var s0, s1;\n\n s0 = [];\n s1 = peg$parsestatement();\n if (s1 !== peg$FAILED) {\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$parsestatement();\n }\n } else {\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsestatement() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = peg$parsestatement_type();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c0(s1);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsestatement_type() {\n var s0;\n\n s0 = peg$parseassignment();\n if (s0 === peg$FAILED) {\n s0 = peg$parsecomment();\n }\n\n return s0;\n }\n\n function peg$parsecomment() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 35) {\n s1 = peg$c1;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c2); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n if (peg$c3.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c4); }\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n if (peg$c3.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c4); }\n }\n }\n if (s2 !== peg$FAILED) {\n if (peg$c5.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c7(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseassignment() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parsevariable();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 61) {\n s3 = peg$c8;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c9); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseexpr();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n if (s6 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 59) {\n s7 = peg$c10;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c11); }\n }\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c12(s1, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsevariable() {\n var s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parsename();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c13(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseexpr() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseexpr_q();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 124) {\n s3 = peg$c14;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c15); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseexpr();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c16(s1, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseexpr_q();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseexpr();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c17(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseexpr_q();\n }\n }\n\n return s0;\n }\n\n function peg$parseexpr_q() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parsename();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s2 = peg$c18;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c19); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parseexpr_q();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c20(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseterm();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 42) {\n s2 = peg$c21;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c22); }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c23(s1);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseterm();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 63) {\n s2 = peg$c24;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c25); }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c26(s1);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseterm();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 43) {\n s2 = peg$c27;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c28); }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c29(s1);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseterm();\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseterm() {\n var s0, s1, s2, s3;\n\n s0 = peg$parsevariable();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsenumber();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c30(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 40) {\n s1 = peg$c31;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c32); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseexpr();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 41) {\n s3 = peg$c33;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c34); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c35(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsename() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parsename_start_char();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsename_char();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsename_char();\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c36(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsename_start_char() {\n var s0;\n\n if (input.charCodeAt(peg$currPos) === 95) {\n s0 = peg$c37;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c38); }\n }\n if (s0 === peg$FAILED) {\n if (peg$c39.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c40); }\n }\n }\n\n return s0;\n }\n\n function peg$parsename_char() {\n var s0;\n\n s0 = peg$parsename_start_char();\n if (s0 === peg$FAILED) {\n if (peg$c41.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c42); }\n }\n }\n\n return s0;\n }\n\n function peg$parsenumber() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n if (peg$c41.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c42); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n if (peg$c41.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c42); }\n }\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c43(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parse_() {\n var s0, s1;\n\n s0 = [];\n if (peg$c44.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c45); }\n }\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n if (peg$c44.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c45); }\n }\n }\n\n return s0;\n }\n\n\n var n = require('./nodes');\n\n\n peg$result = peg$startRuleFunction();\n\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n } else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail(peg$endExpectation());\n }\n\n throw peg$buildStructuredError(\n peg$maxFailExpected,\n peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n peg$maxFailPos < input.length\n ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n );\n }\n}\n\nmodule.exports = {\n SyntaxError: peg$SyntaxError,\n parse: peg$parse\n};\n","import {Assignment, Literal, Node, Variable} from './nodes';\n\n/**\n * Processes a list of statements into a symbol table\n */\nexport default class SymbolTable {\n constructor(statements, externalSymbols = {}) {\n this.variables = {};\n this.symbols = {};\n this.main = null;\n this.size = 0;\n\n this.addExternalSymbols(externalSymbols);\n this.process(statements);\n }\n\n addExternalSymbols(externalSymbols) {\n for (let key in externalSymbols) {\n this.variables[key] = new Literal(externalSymbols[key]);\n this.symbols[key] = externalSymbols[key];\n this.size++;\n }\n }\n\n process(statements) {\n for (let statement of statements) {\n if (statement instanceof Assignment) {\n this.variables[statement.variable.name] = this.processExpression(statement.expression);\n\n if (statement.expression instanceof Literal) {\n this.symbols[statement.variable.name] = statement.expression.value;\n this.size++;\n }\n }\n }\n\n this.main = this.variables.main;\n if (!this.main) {\n throw new Error('No main variable declaration found');\n }\n }\n\n processExpression(expr) {\n // Process children\n for (let key in expr) {\n if (expr[key] instanceof Node) {\n expr[key] = this.processExpression(expr[key]);\n }\n }\n\n // Replace variable references with their values\n if (expr instanceof Variable) {\n let value = this.variables[expr.name];\n if (value == null)\n throw new Error(`Undeclared indentifier ${expr.name}`);\n\n expr = this.processExpression(value.copy());\n }\n\n return expr;\n }\n}\n","import {EndMarker, Concatenation, Literal, Tag} from './nodes';\nimport {addAll, equal} from './utils';\n\nconst END_MARKER = new EndMarker;\n\n/**\n * This is an implementation of the direct regular expression to DFA algorithm described\n * in section 3.9.5 of \"Compilers: Principles, Techniques, and Tools\" by Aho,\n * Lam, Sethi, and Ullman. http://dragonbook.stanford.edu\n * There is a PDF of the book here:\n * http://www.informatik.uni-bremen.de/agbkb/lehre/ccfl/Material/ALSUdragonbook.pdf\n */\nexport default function buildDFA(root, numSymbols) {\n root = new Concatenation(root, END_MARKER);\n root.calcFollowpos();\n\n let failState = new State(new Set, numSymbols);\n let initialState = new State(root.firstpos, numSymbols);\n let dstates = [failState, initialState];\n\n // while there is an unmarked state S in dstates\n while (1) {\n let s = null;\n\n for (let j = 1; j < dstates.length; j++) {\n if (!dstates[j].marked) {\n s = dstates[j];\n break;\n }\n }\n\n if (s == null) {\n break;\n }\n\n // mark S\n s.marked = true;\n\n // for each input symbol a\n for (let a = 0; a < numSymbols; a++) {\n // let U be the union of followpos(p) for all\n // p in S that correspond to a\n let u = new Set;\n for (let p of s.positions) {\n if (p instanceof Literal && p.value === a) {\n addAll(u, p.followpos);\n }\n }\n\n if (u.size === 0) {\n continue;\n }\n\n // if U is not in dstates\n let ux = -1;\n for (let i = 0; i < dstates.length; i++) {\n if (equal(u, dstates[i].positions)) {\n ux = i;\n break;\n }\n }\n\n if (ux === -1) {\n // Add U as an unmarked state to dstates\n dstates.push(new State(u, numSymbols));\n ux = dstates.length - 1;\n }\n\n s.transitions[a] = ux;\n }\n }\n\n return dstates;\n}\n\nclass State {\n constructor(positions, len) {\n this.positions = positions;\n this.transitions = new Uint16Array(len);\n this.accepting = positions.has(END_MARKER);\n this.marked = false;\n this.tags = new Set;\n\n for (let pos of positions) {\n if (pos instanceof Tag) {\n this.tags.add(pos.name);\n }\n }\n }\n}\n","const INITIAL_STATE = 1;\nconst FAIL_STATE = 0;\n\n/**\n * A StateMachine represents a deterministic finite automaton.\n * It can perform matches over a sequence of values, similar to a regular expression.\n */\nexport default class StateMachine {\n constructor(dfa) {\n this.stateTable = dfa.stateTable;\n this.accepting = dfa.accepting;\n this.tags = dfa.tags;\n }\n\n /**\n * Returns an iterable object that yields pattern matches over the input sequence.\n * Matches are of the form [startIndex, endIndex, tags].\n */\n match(str) {\n let self = this;\n return {\n *[Symbol.iterator]() {\n let state = INITIAL_STATE;\n let startRun = null;\n let lastAccepting = null;\n let lastState = null;\n\n for (let p = 0; p < str.length; p++) {\n let c = str[p];\n\n lastState = state;\n state = self.stateTable[state][c];\n\n if (state === FAIL_STATE) {\n // yield the last match if any\n if (startRun != null && lastAccepting != null && lastAccepting >= startRun) {\n yield [startRun, lastAccepting, self.tags[lastState]];\n }\n\n // reset the state as if we started over from the initial state\n state = self.stateTable[INITIAL_STATE][c];\n startRun = null;\n }\n\n // start a run if not in the failure state\n if (state !== FAIL_STATE && startRun == null) {\n startRun = p;\n }\n\n // if accepting, mark the potential match end\n if (self.accepting[state]) {\n lastAccepting = p;\n }\n\n // reset the state to the initial state if we get into the failure state\n if (state === FAIL_STATE) {\n state = INITIAL_STATE;\n }\n }\n\n // yield the last match if any\n if (startRun != null && lastAccepting != null && lastAccepting >= startRun) {\n yield [startRun, lastAccepting, self.tags[state]];\n }\n }\n };\n }\n\n /**\n * For each match over the input sequence, action functions matching\n * the tag definitions in the input pattern are called with the startIndex,\n * endIndex, and sub-match sequence.\n */\n apply(str, actions) {\n for (let [start, end, tags] of this.match(str)) {\n for (let tag of tags) {\n if (typeof actions[tag] === 'function') {\n actions[tag](start, end, str.slice(start, end + 1));\n }\n }\n }\n }\n}\n","import grammar from './grammar';\nimport SymbolTable from './SymbolTable';\nimport buildDFA from './dfa';\nimport StateMachine from './StateMachine';\n\nexport function parse(string, externalSymbols) {\n let ast = grammar.parse(string);\n return new SymbolTable(ast, externalSymbols);\n}\n\nexport function build(symbolTable) {\n let states = buildDFA(symbolTable.main, symbolTable.size);\n\n return new StateMachine({\n stateTable: states.map(s => Array.from(s.transitions)),\n accepting: states.map(s => s.accepting),\n tags: states.map(s => Array.from(s.tags))\n });\n}\n\nexport default function compile(string, externalSymbols) {\n return build(parse(string, externalSymbols));\n}\n"],"names":["union","a","b","s","addAll","x","add","equal","size","has","Node","defineProperty","value","key","calcFollowpos","Variable","name","Comment","Assignment","variable","expression","Alternation","copy","nullable","firstpos","lastpos","Concatenation","n","followpos","Repeat","op","Leaf","Literal","EndMarker","Tag","peg$subclass","child","parent","ctor","constructor","prototype","peg$SyntaxError","message","expected","found","location","Error","captureStackTrace","buildMessage","DESCRIBE_EXPECTATION_FNS","expectation","literalEscape","text","escapedParts","i","parts","length","Array","classEscape","inverted","description","hex","ch","charCodeAt","toString","toUpperCase","replace","describeExpectation","type","describeExpected","descriptions","j","sort","slice","join","describeFound","peg$parse","input","options","peg$FAILED","peg$startRuleFunctions","rules","peg$parserules","peg$startRuleFunction","peg$c0","peg$c1","peg$c2","peg$literalExpectation","peg$c3","peg$c4","peg$classExpectation","peg$c5","peg$c6","peg$c7","v","peg$c8","peg$c9","peg$c10","peg$c11","peg$c12","e","peg$c13","peg$c14","peg$c15","peg$c16","peg$c17","peg$c18","peg$c19","peg$c20","t","peg$c21","peg$c22","peg$c23","peg$c24","peg$c25","peg$c26","peg$c27","peg$c28","peg$c29","peg$c30","peg$c31","peg$c32","peg$c33","peg$c34","peg$c35","peg$c36","peg$c37","peg$c38","peg$c39","peg$c40","peg$c41","peg$c42","peg$c43","num","parseInt","peg$c44","peg$c45","peg$currPos","peg$savedPos","peg$posDetailsCache","line","column","peg$maxFailPos","peg$maxFailExpected","peg$silentFails","peg$result","startRule","substring","peg$computeLocation","peg$buildStructuredError","peg$otherExpectation","error","peg$buildSimpleError","ignoreCase","peg$anyExpectation","peg$endExpectation","peg$computePosDetails","pos","details","p","startPos","endPos","startPosDetails","endPosDetails","peg$fail","push","s0","s1","peg$parsestatement","s2","peg$parsestatement_type","peg$parse_","peg$parseassignment","peg$parsecomment","s3","test","charAt","s4","s5","s6","s7","peg$parsevariable","peg$parseexpr","peg$parsename","peg$parseexpr_q","peg$parseterm","peg$parsenumber","peg$parsename_start_char","peg$parsename_char","require$$0","SymbolTable","statements","externalSymbols","variables","symbols","main","addExternalSymbols","process","statement","processExpression","expr","END_MARKER","buildDFA","root","numSymbols","failState","State","initialState","dstates","marked","u","positions","ux","transitions","len","Uint16Array","accepting","tags","INITIAL_STATE","FAIL_STATE","StateMachine","dfa","stateTable","str","self","state","c","startRun","lastAccepting","lastState","actions","match","start","end","tag","parse","string","ast","grammar","build","symbolTable","states","map","compile"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;;;AAGA,AAAO,SAASA,KAAT,CAAeC,CAAf,EAAkBC,CAAlB,EAAqB;MACtBC,IAAI,SAAQF,CAAR,CAAR;SACOE,CAAP,EAAUD,CAAV;SACOC,CAAP;;;;;;AAMF,AAAO,SAASC,MAAT,CAAgBH,CAAhB,EAAmBC,CAAnB,EAAsB;;;;;;sCACbA,CAAd,4GAAiB;UAARG,CAAQ;;QACbC,GAAF,CAAMD,CAAN;;;;;;;;;;;;;;;;;;;;;AAOJ,AAAO,SAASE,KAAT,CAAeN,CAAf,EAAkBC,CAAlB,EAAqB;MACtBD,MAAMC,CAAV,EACE,OAAO,IAAP;;MAEED,EAAEO,IAAF,KAAWN,EAAEM,IAAjB,EACE,OAAO,KAAP;;;;;;;uCAEYP,CAAd,iHAAiB;UAARI,CAAQ;;UACX,CAACH,EAAEO,GAAF,CAAMJ,CAAN,CAAL,EAAe;eACN,KAAP;;;;;;;;;;;;;;;;;;SAIG,IAAP;;;AChCF;;;AAGA,IAAaK,IAAb;kBACgB;;;WACLC,cAAP,CAAsB,IAAtB,EAA4B,WAA5B,EAAyC,EAACC,OAAO,UAAR,EAAzC;;;;;oCAGc;WACT,IAAIC,GAAT,IAAgB,IAAhB,EAAsB;YAChB,KAAKA,GAAL,aAAqBH,IAAzB,EAA+B;eACxBG,GAAL,EAAUC,aAAV;;;;;;;;;;;;AASR,IAAaC,QAAb;;;oBACcC,IAAZ,EAAkB;;;;;UAEXA,IAAL,GAAYA,IAAZ;;;;;EAH0BN,IAA9B;;;;;AAUA,IAAaO,OAAb;;;mBACcL,KAAZ,EAAmB;;;;;WAEZA,KAAL,GAAaA,KAAb;;;;;EAHyBF,IAA7B;;;;;;AAWA,IAAaQ,UAAb;;;sBACcC,QAAZ,EAAsBC,UAAtB,EAAkC;;;;;WAE3BD,QAAL,GAAgBA,QAAhB;WACKC,UAAL,GAAkBA,UAAlB;;;;;EAJ4BV,IAAhC;;;;;;AAYA,IAAaW,WAAb;;;uBACcpB,CAAZ,EAAeC,CAAf,EAAkB;;;;;WAEXD,CAAL,GAASA,CAAT;WACKC,CAAL,GAASA,CAAT;;;;;;2BAeK;aACE,IAAImB,WAAJ,CAAgB,KAAKpB,CAAL,CAAOqB,IAAP,EAAhB,EAA+B,KAAKpB,CAAL,CAAOoB,IAAP,EAA/B,CAAP;;;;wBAba;aACN,KAAKrB,CAAL,CAAOsB,QAAP,IAAmB,KAAKrB,CAAL,CAAOqB,QAAjC;;;;wBAGa;aACNvB,MAAM,KAAKC,CAAL,CAAOuB,QAAb,EAAuB,KAAKtB,CAAL,CAAOsB,QAA9B,CAAP;;;;wBAGY;aACLxB,MAAM,KAAKC,CAAL,CAAOwB,OAAb,EAAsB,KAAKvB,CAAL,CAAOuB,OAA7B,CAAP;;;;;EAhB6Bf,IAAjC;;;;;;AA4BA,IAAagB,aAAb;;;yBACczB,CAAZ,EAAeC,CAAf,EAAkB;;;;;WAEXD,CAAL,GAASA,CAAT;WACKC,CAAL,GAASA,CAAT;;;;;;oCAyBc;;;;;;;0CAEA,KAAKD,CAAL,CAAOwB,OAArB,4GAA8B;cAArBE,CAAqB;;iBACrBA,EAAEC,SAAT,EAAoB,KAAK1B,CAAL,CAAOsB,QAA3B;;;;;;;;;;;;;;;;;;;2BAIG;aACE,IAAIE,aAAJ,CAAkB,KAAKzB,CAAL,CAAOqB,IAAP,EAAlB,EAAiC,KAAKpB,CAAL,CAAOoB,IAAP,EAAjC,CAAP;;;;wBA9Ba;aACN,KAAKrB,CAAL,CAAOsB,QAAP,IAAmB,KAAKrB,CAAL,CAAOqB,QAAjC;;;;wBAGa;UACTpB,IAAI,KAAKF,CAAL,CAAOuB,QAAf;UACI,KAAKvB,CAAL,CAAOsB,QAAX,EAAqB;YACfvB,MAAMG,CAAN,EAAS,KAAKD,CAAL,CAAOsB,QAAhB,CAAJ;;;aAGKrB,CAAP;;;;wBAGY;UACRA,IAAI,KAAKD,CAAL,CAAOuB,OAAf;UACI,KAAKvB,CAAL,CAAOqB,QAAX,EAAqB;YACfvB,MAAMG,CAAN,EAAS,KAAKF,CAAL,CAAOwB,OAAhB,CAAJ;;;aAGKtB,CAAP;;;;;EA1B+BO,IAAnC;;;;;;AA6CA,IAAamB,MAAb;;;kBACcT,UAAZ,EAAwBU,EAAxB,EAA4B;;;;;WAErBV,UAAL,GAAkBA,UAAlB;WACKU,EAAL,GAAUA,EAAV;;;;;;oCAec;;UAEV,KAAKA,EAAL,KAAY,GAAZ,IAAmB,KAAKA,EAAL,KAAY,GAAnC,EAAwC;;;;;;6CACxB,KAAKL,OAAnB,iHAA4B;gBAAnBE,CAAmB;;mBACnBA,EAAEC,SAAT,EAAoB,KAAKJ,QAAzB;;;;;;;;;;;;;;;;;;;;2BAKC;aACE,IAAIK,MAAJ,CAAW,KAAKT,UAAL,CAAgBE,IAAhB,EAAX,EAAmC,KAAKQ,EAAxC,CAAP;;;;wBAtBa;aACN,KAAKA,EAAL,KAAY,GAAZ,IAAmB,KAAKA,EAAL,KAAY,GAAtC;;;;wBAGa;aACN,KAAKV,UAAL,CAAgBI,QAAvB;;;;wBAGY;aACL,KAAKJ,UAAL,CAAgBK,OAAvB;;;;;EAhBwBf,IAA5B;;;;;;IAoCMqB;;;;;;;;;;;wBACW;aACN,KAAP;;;;wBAGa;aACN,SAAQ,CAAC,IAAD,CAAR,CAAP;;;;wBAGY;aACL,SAAQ,CAAC,IAAD,CAAR,CAAP;;;;;EAVerB;;;;;;;AAiBnB,IAAasB,OAAb;;;mBACcpB,KAAZ,EAAmB;;;;;WAEZA,KAAL,GAAaA,KAAb;;;;;;2BAGK;aACE,IAAIoB,OAAJ,CAAY,KAAKpB,KAAjB,CAAP;;;;;EAPyBmB,IAA7B;;;;;AAcA,IAAaE,SAAb;;;;;;;;;;EAA+BF,IAA/B;;;;;;AAMA,IAAaG,GAAb;;;eACclB,IAAZ,EAAkB;;;;;YAEXA,IAAL,GAAYA,IAAZ;;;;;;2BAOK;aACE,IAAIkB,GAAJ,CAAQ,KAAKlB,IAAb,CAAP;;;;wBALa;aACN,IAAP;;;;;EAPqBe,IAAzB;;;;;;;;;;;;;;;;;ACjMA,SAASI,YAAT,CAAsBC,KAAtB,EAA6BC,MAA7B,EAAqC;WAC1BC,IAAT,GAAgB;SAAOC,WAAL,GAAmBH,KAAnB;;OACbI,SAAL,GAAiBH,OAAOG,SAAxB;QACMA,SAAN,GAAkB,IAAIF,IAAJ,EAAlB;;;AAGF,SAASG,eAAT,CAAyBC,OAAzB,EAAkCC,QAAlC,EAA4CC,KAA5C,EAAmDC,QAAnD,EAA6D;OACtDH,OAAL,GAAgBA,OAAhB;OACKC,QAAL,GAAgBA,QAAhB;OACKC,KAAL,GAAgBA,KAAhB;OACKC,QAAL,GAAgBA,QAAhB;OACK7B,IAAL,GAAgB,aAAhB;;MAEI,OAAO8B,MAAMC,iBAAb,KAAmC,UAAvC,EAAmD;UAC3CA,iBAAN,CAAwB,IAAxB,EAA8BN,eAA9B;;;;AAIJN,aAAaM,eAAb,EAA8BK,KAA9B;;AAEAL,gBAAgBO,YAAhB,GAA+B,UAASL,QAAT,EAAmBC,KAAnB,EAA0B;MACnDK,2BAA2B;aAChB,iBAASC,WAAT,EAAsB;aACtB,OAAOC,cAAcD,YAAYE,IAA1B,CAAP,GAAyC,IAAhD;KAFuB;;aAKhB,gBAASF,WAAT,EAAsB;UACzBG,eAAe,EAAnB;UACIC,CADJ;;WAGKA,IAAI,CAAT,EAAYA,IAAIJ,YAAYK,KAAZ,CAAkBC,MAAlC,EAA0CF,GAA1C,EAA+C;wBAC7BJ,YAAYK,KAAZ,CAAkBD,CAAlB,aAAgCG,KAAhC,GACZC,YAAYR,YAAYK,KAAZ,CAAkBD,CAAlB,EAAqB,CAArB,CAAZ,IAAuC,GAAvC,GAA6CI,YAAYR,YAAYK,KAAZ,CAAkBD,CAAlB,EAAqB,CAArB,CAAZ,CADjC,GAEZI,YAAYR,YAAYK,KAAZ,CAAkBD,CAAlB,CAAZ,CAFJ;;;aAKK,OAAOJ,YAAYS,QAAZ,GAAuB,GAAvB,GAA6B,EAApC,IAA0CN,YAA1C,GAAyD,GAAhE;KAfuB;;SAkBpB,aAASH,WAAT,EAAsB;aAClB,eAAP;KAnBuB;;SAsBpB,aAASA,WAAT,EAAsB;aAClB,cAAP;KAvBuB;;WA0BlB,eAASA,WAAT,EAAsB;aACpBA,YAAYU,WAAnB;;GA3BR;;WA+BSC,GAAT,CAAaC,EAAb,EAAiB;WACRA,GAAGC,UAAH,CAAc,CAAd,EAAiBC,QAAjB,CAA0B,EAA1B,EAA8BC,WAA9B,EAAP;;;WAGOd,aAAT,CAAuBhD,CAAvB,EAA0B;WACjBA,EACJ+D,OADI,CACI,KADJ,EACW,MADX,EAEJA,OAFI,CAEI,IAFJ,EAEW,KAFX,EAGJA,OAHI,CAGI,KAHJ,EAGW,KAHX,EAIJA,OAJI,CAII,KAJJ,EAIW,KAJX,EAKJA,OALI,CAKI,KALJ,EAKW,KALX,EAMJA,OANI,CAMI,KANJ,EAMW,KANX,EAOJA,OAPI,CAOI,cAPJ,EAO6B,UAASJ,EAAT,EAAa;aAAS,SAASD,IAAIC,EAAJ,CAAhB;KAP5C,EAQJI,OARI,CAQI,uBARJ,EAQ6B,UAASJ,EAAT,EAAa;aAAS,QAASD,IAAIC,EAAJ,CAAhB;KAR5C,CAAP;;;WAWOJ,WAAT,CAAqBvD,CAArB,EAAwB;WACfA,EACJ+D,OADI,CACI,KADJ,EACW,MADX,EAEJA,OAFI,CAEI,KAFJ,EAEW,KAFX,EAGJA,OAHI,CAGI,KAHJ,EAGW,KAHX,EAIJA,OAJI,CAII,IAJJ,EAIW,KAJX,EAKJA,OALI,CAKI,KALJ,EAKW,KALX,EAMJA,OANI,CAMI,KANJ,EAMW,KANX,EAOJA,OAPI,CAOI,KAPJ,EAOW,KAPX,EAQJA,OARI,CAQI,KARJ,EAQW,KARX,EASJA,OATI,CASI,cATJ,EAS6B,UAASJ,EAAT,EAAa;aAAS,SAASD,IAAIC,EAAJ,CAAhB;KAT5C,EAUJI,OAVI,CAUI,uBAVJ,EAU6B,UAASJ,EAAT,EAAa;aAAS,QAASD,IAAIC,EAAJ,CAAhB;KAV5C,CAAP;;;WAaOK,mBAAT,CAA6BjB,WAA7B,EAA0C;WACjCD,yBAAyBC,YAAYkB,IAArC,EAA2ClB,WAA3C,CAAP;;;WAGOmB,gBAAT,CAA0B1B,QAA1B,EAAoC;QAC9B2B,eAAe,IAAIb,KAAJ,CAAUd,SAASa,MAAnB,CAAnB;QACIF,CADJ;QACOiB,CADP;;SAGKjB,IAAI,CAAT,EAAYA,IAAIX,SAASa,MAAzB,EAAiCF,GAAjC,EAAsC;mBACvBA,CAAb,IAAkBa,oBAAoBxB,SAASW,CAAT,CAApB,CAAlB;;;iBAGWkB,IAAb;;QAEIF,aAAad,MAAb,GAAsB,CAA1B,EAA6B;WACtBF,IAAI,CAAJ,EAAOiB,IAAI,CAAhB,EAAmBjB,IAAIgB,aAAad,MAApC,EAA4CF,GAA5C,EAAiD;YAC3CgB,aAAahB,IAAI,CAAjB,MAAwBgB,aAAahB,CAAb,CAA5B,EAA6C;uBAC9BiB,CAAb,IAAkBD,aAAahB,CAAb,CAAlB;;;;mBAISE,MAAb,GAAsBe,CAAtB;;;YAGMD,aAAad,MAArB;WACO,CAAL;eACSc,aAAa,CAAb,CAAP;;WAEG,CAAL;eACSA,aAAa,CAAb,IAAkB,MAAlB,GAA2BA,aAAa,CAAb,CAAlC;;;eAGOA,aAAaG,KAAb,CAAmB,CAAnB,EAAsB,CAAC,CAAvB,EAA0BC,IAA1B,CAA+B,IAA/B,IACH,OADG,GAEHJ,aAAaA,aAAad,MAAb,GAAsB,CAAnC,CAFJ;;;;WAMGmB,aAAT,CAAuB/B,KAAvB,EAA8B;WACrBA,QAAQ,OAAOO,cAAcP,KAAd,CAAP,GAA8B,IAAtC,GAA6C,cAApD;;;SAGK,cAAcyB,iBAAiB1B,QAAjB,CAAd,GAA2C,OAA3C,GAAqDgC,cAAc/B,KAAd,CAArD,GAA4E,SAAnF;CAxGF;;AA2GA,SAASgC,SAAT,CAAmBC,KAAnB,EAA0BC,OAA1B,EAAmC;YACvBA,YAAY,KAAK,CAAjB,GAAqBA,OAArB,GAA+B,EAAzC;;MAEIC,aAAa,EAAjB;MAEIC,yBAAyB,EAAEC,OAAOC,cAAT,EAF7B;MAGIC,wBAAyBD,cAH7B;MAKIE,SAAS,SAATA,MAAS,CAASjF,CAAT,EAAY;WAASA,CAAP;GAL3B;MAMIkF,SAAS,GANb;MAOIC,SAASC,uBAAuB,GAAvB,EAA4B,KAA5B,CAPb;MAQIC,SAAS,UARb;MASIC,SAASC,qBAAqB,CAAC,IAAD,EAAO,IAAP,CAArB,EAAmC,IAAnC,EAAyC,KAAzC,CATb;MAUIC,SAAS,SAVb;MAWIC,SAASF,qBAAqB,CAAC,IAAD,EAAO,IAAP,CAArB,EAAmC,KAAnC,EAA0C,KAA1C,CAXb;MAYIG,SAAS,SAATA,MAAS,CAASC,CAAT,EAAY;WAAS,IAAInE,EAAEV,OAAN,CAAc6E,EAAEpB,IAAF,CAAO,EAAP,CAAd,CAAP;GAZ3B;MAaIqB,SAAS,GAbb;MAcIC,SAAST,uBAAuB,GAAvB,EAA4B,KAA5B,CAdb;MAeIU,UAAU,GAfd;MAgBIC,UAAUX,uBAAuB,GAAvB,EAA4B,KAA5B,CAhBd;MAiBIY,UAAU,SAAVA,OAAU,CAASL,CAAT,EAAYM,CAAZ,EAAe;WAAS,IAAIzE,EAAET,UAAN,CAAiB4E,CAAjB,EAAoBM,CAApB,CAAP;GAjB/B;MAkBIC,UAAU,SAAVA,OAAU,CAASP,CAAT,EAAY;WAAS,IAAInE,EAAEZ,QAAN,CAAe+E,CAAf,CAAP;GAlB5B;MAmBIQ,UAAU,GAnBd;MAoBIC,UAAUhB,uBAAuB,GAAvB,EAA4B,KAA5B,CApBd;MAqBIiB,UAAU,SAAVA,OAAU,CAASvG,CAAT,EAAYC,CAAZ,EAAe;WAAS,IAAIyB,EAAEN,WAAN,CAAkBpB,CAAlB,EAAqBC,CAArB,CAAP;GArB/B;MAsBIuG,UAAU,SAAVA,OAAU,CAASxG,CAAT,EAAYC,CAAZ,EAAe;WAAS,IAAIyB,EAAED,aAAN,CAAoBzB,CAApB,EAAuBC,CAAvB,CAAP;GAtB/B;MAuBIwG,UAAU,GAvBd;MAwBIC,UAAUpB,uBAAuB,GAAvB,EAA4B,KAA5B,CAxBd;MAyBIqB,UAAU,SAAVA,OAAU,CAASC,CAAT,EAAYT,CAAZ,EAAe;WAAS,IAAIzE,EAAED,aAAN,CAAoB0E,CAApB,EAAuB,IAAIzE,EAAEO,GAAN,CAAU2E,CAAV,CAAvB,CAAP;GAzB/B;MA0BIC,UAAU,GA1Bd;MA2BIC,UAAUxB,uBAAuB,GAAvB,EAA4B,KAA5B,CA3Bd;MA4BIyB,UAAU,SAAVA,OAAU,CAASH,CAAT,EAAY;WAAS,IAAIlF,EAAEE,MAAN,CAAagF,CAAb,EAAgB,GAAhB,CAAP;GA5B5B;MA6BII,UAAU,GA7Bd;MA8BIC,UAAU3B,uBAAuB,GAAvB,EAA4B,KAA5B,CA9Bd;MA+BI4B,UAAU,SAAVA,OAAU,CAASN,CAAT,EAAY;WAAS,IAAIlF,EAAEE,MAAN,CAAagF,CAAb,EAAgB,GAAhB,CAAP;GA/B5B;MAgCIO,UAAU,GAhCd;MAiCIC,UAAU9B,uBAAuB,GAAvB,EAA4B,KAA5B,CAjCd;MAkCI+B,UAAU,SAAVA,OAAU,CAAST,CAAT,EAAY;WAAS,IAAIlF,EAAEE,MAAN,CAAagF,CAAb,EAAgB,GAAhB,CAAP;GAlC5B;MAmCIU,UAAU,SAAVA,OAAU,CAASlH,CAAT,EAAY;WAAS,IAAIsB,EAAEK,OAAN,CAAc3B,CAAd,CAAP;GAnC5B;MAoCImH,UAAU,GApCd;MAqCIC,UAAUlC,uBAAuB,GAAvB,EAA4B,KAA5B,CArCd;MAsCImC,UAAU,GAtCd;MAuCIC,UAAUpC,uBAAuB,GAAvB,EAA4B,KAA5B,CAvCd;MAwCIqC,UAAU,SAAVA,OAAU,CAASxB,CAAT,EAAY;WAASA,CAAP;GAxC5B;MAyCIyB,UAAU,SAAVA,OAAU,CAAS5H,CAAT,EAAYC,CAAZ,EAAe;WAASD,IAAIC,EAAEwE,IAAF,CAAO,EAAP,CAAX;GAzC/B;MA0CIoD,UAAU,GA1Cd;MA2CIC,UAAUxC,uBAAuB,GAAvB,EAA4B,KAA5B,CA3Cd;MA4CIyC,UAAU,WA5Cd;MA6CIC,UAAUvC,qBAAqB,CAAC,CAAC,GAAD,EAAM,GAAN,CAAD,EAAa,CAAC,GAAD,EAAM,GAAN,CAAb,CAArB,EAA+C,KAA/C,EAAsD,KAAtD,CA7Cd;MA8CIwC,UAAU,QA9Cd;MA+CIC,UAAUzC,qBAAqB,CAAC,CAAC,GAAD,EAAM,GAAN,CAAD,CAArB,EAAmC,KAAnC,EAA0C,KAA1C,CA/Cd;MAgDI0C,UAAU,SAAVA,OAAU,CAASC,GAAT,EAAc;WAASC,SAASD,IAAI3D,IAAJ,CAAS,EAAT,CAAT,CAAP;GAhD9B;MAiDI6D,UAAU,YAjDd;MAkDIC,UAAU9C,qBAAqB,CAAC,GAAD,EAAM,IAAN,EAAY,IAAZ,EAAkB,IAAlB,CAArB,EAA8C,KAA9C,EAAqD,KAArD,CAlDd;MAoDI+C,cAAuB,CApD3B;MAqDIC,eAAuB,CArD3B;MAsDIC,sBAAuB,CAAC,EAAEC,MAAM,CAAR,EAAWC,QAAQ,CAAnB,EAAD,CAtD3B;MAuDIC,iBAAuB,CAvD3B;MAwDIC,sBAAuB,EAxD3B;MAyDIC,kBAAuB,CAzD3B;MA2DIC,UA3DJ;;MA6DI,eAAenE,OAAnB,EAA4B;QACtB,EAAEA,QAAQoE,SAAR,IAAqBlE,sBAAvB,CAAJ,EAAoD;YAC5C,IAAIlC,KAAJ,CAAU,qCAAqCgC,QAAQoE,SAA7C,GAAyD,KAAnE,CAAN;;;4BAGsBlE,uBAAuBF,QAAQoE,SAA/B,CAAxB;;;WAGO9F,IAAT,GAAgB;WACPyB,MAAMsE,SAAN,CAAgBT,YAAhB,EAA8BD,WAA9B,CAAP;;;WAGO5F,QAAT,GAAoB;WACXuG,oBAAoBV,YAApB,EAAkCD,WAAlC,CAAP;;;WAGO9F,QAAT,CAAkBiB,WAAlB,EAA+Bf,QAA/B,EAAyC;eAC5BA,aAAa,KAAK,CAAlB,GAAsBA,QAAtB,GAAiCuG,oBAAoBV,YAApB,EAAkCD,WAAlC,CAA5C;;UAEMY,yBACJ,CAACC,qBAAqB1F,WAArB,CAAD,CADI,EAEJiB,MAAMsE,SAAN,CAAgBT,YAAhB,EAA8BD,WAA9B,CAFI,EAGJ5F,QAHI,CAAN;;;WAOO0G,KAAT,CAAe7G,OAAf,EAAwBG,QAAxB,EAAkC;eACrBA,aAAa,KAAK,CAAlB,GAAsBA,QAAtB,GAAiCuG,oBAAoBV,YAApB,EAAkCD,WAAlC,CAA5C;;UAEMe,qBAAqB9G,OAArB,EAA8BG,QAA9B,CAAN;;;WAGO0C,sBAAT,CAAgCnC,IAAhC,EAAsCqG,UAAtC,EAAkD;WACzC,EAAErF,MAAM,SAAR,EAAmBhB,MAAMA,IAAzB,EAA+BqG,YAAYA,UAA3C,EAAP;;;WAGO/D,oBAAT,CAA8BnC,KAA9B,EAAqCI,QAArC,EAA+C8F,UAA/C,EAA2D;WAClD,EAAErF,MAAM,OAAR,EAAiBb,OAAOA,KAAxB,EAA+BI,UAAUA,QAAzC,EAAmD8F,YAAYA,UAA/D,EAAP;;;WAGOC,kBAAT,GAA8B;WACrB,EAAEtF,MAAM,KAAR,EAAP;;;WAGOuF,kBAAT,GAA8B;WACrB,EAAEvF,MAAM,KAAR,EAAP;;;WAGOkF,oBAAT,CAA8B1F,WAA9B,EAA2C;WAClC,EAAEQ,MAAM,OAAR,EAAiBR,aAAaA,WAA9B,EAAP;;;WAGOgG,qBAAT,CAA+BC,GAA/B,EAAoC;QAC9BC,UAAUnB,oBAAoBkB,GAApB,CAAd;QAAwCE,CAAxC;;QAEID,OAAJ,EAAa;aACJA,OAAP;KADF,MAEO;UACDD,MAAM,CAAV;aACO,CAAClB,oBAAoBoB,CAApB,CAAR,EAAgC;;;;gBAItBpB,oBAAoBoB,CAApB,CAAV;gBACU;cACAD,QAAQlB,IADR;gBAEAkB,QAAQjB;OAFlB;;aAKOkB,IAAIF,GAAX,EAAgB;YACVhF,MAAMd,UAAN,CAAiBgG,CAAjB,MAAwB,EAA5B,EAAgC;kBACtBnB,IAAR;kBACQC,MAAR,GAAiB,CAAjB;SAFF,MAGO;kBACGA,MAAR;;;;;;0BAMgBgB,GAApB,IAA2BC,OAA3B;aACOA,OAAP;;;;WAIKV,mBAAT,CAA6BY,QAA7B,EAAuCC,MAAvC,EAA+C;QACzCC,kBAAkBN,sBAAsBI,QAAtB,CAAtB;QACIG,gBAAkBP,sBAAsBK,MAAtB,CADtB;;WAGO;aACE;gBACGD,QADH;cAEGE,gBAAgBtB,IAFnB;gBAGGsB,gBAAgBrB;OAJrB;WAMA;gBACKoB,MADL;cAEKE,cAAcvB,IAFnB;gBAGKuB,cAActB;;KAT1B;;;WAcOuB,QAAT,CAAkBzH,QAAlB,EAA4B;QACtB8F,cAAcK,cAAlB,EAAkC;;;;QAE9BL,cAAcK,cAAlB,EAAkC;uBACfL,WAAjB;4BACsB,EAAtB;;;wBAGkB4B,IAApB,CAAyB1H,QAAzB;;;WAGO6G,oBAAT,CAA8B9G,OAA9B,EAAuCG,QAAvC,EAAiD;WACxC,IAAIJ,eAAJ,CAAoBC,OAApB,EAA6B,IAA7B,EAAmC,IAAnC,EAAyCG,QAAzC,CAAP;;;WAGOwG,wBAAT,CAAkC1G,QAAlC,EAA4CC,KAA5C,EAAmDC,QAAnD,EAA6D;WACpD,IAAIJ,eAAJ,CACLA,gBAAgBO,YAAhB,CAA6BL,QAA7B,EAAuCC,KAAvC,CADK,EAELD,QAFK,EAGLC,KAHK,EAILC,QAJK,CAAP;;;WAQOqC,cAAT,GAA0B;QACpBoF,EAAJ,EAAQC,EAAR;;SAEK,EAAL;SACKC,oBAAL;QACID,OAAOxF,UAAX,EAAuB;aACdwF,OAAOxF,UAAd,EAA0B;WACrBsF,IAAH,CAAQE,EAAR;aACKC,oBAAL;;KAHJ,MAKO;WACAzF,UAAL;;;WAGKuF,EAAP;;;WAGOE,kBAAT,GAA8B;QACxBF,EAAJ,EAAQC,EAAR,EAAYE,EAAZ;;SAEKhC,WAAL;SACKiC,yBAAL;QACIH,OAAOxF,UAAX,EAAuB;WAChB4F,YAAL;UACIF,OAAO1F,UAAX,EAAuB;uBACNuF,EAAf;aACKlF,OAAOmF,EAAP,CAAL;aACKA,EAAL;OAHF,MAIO;sBACSD,EAAd;aACKvF,UAAL;;KARJ,MAUO;oBACSuF,EAAd;WACKvF,UAAL;;;WAGKuF,EAAP;;;WAGOI,uBAAT,GAAmC;QAC7BJ,EAAJ;;SAEKM,qBAAL;QACIN,OAAOvF,UAAX,EAAuB;WAChB8F,kBAAL;;;WAGKP,EAAP;;;WAGOO,gBAAT,GAA4B;QACtBP,EAAJ,EAAQC,EAAR,EAAYE,EAAZ,EAAgBK,EAAhB;;SAEKrC,WAAL;QACI5D,MAAMd,UAAN,CAAiB0E,WAAjB,MAAkC,EAAtC,EAA0C;WACnCpD,MAAL;;KADF,MAGO;WACAN,UAAL;UACIiE,oBAAoB,CAAxB,EAA2B;iBAAW1D,MAAT;;;QAE3BiF,OAAOxF,UAAX,EAAuB;WAChB,EAAL;UACIS,OAAOuF,IAAP,CAAYlG,MAAMmG,MAAN,CAAavC,WAAb,CAAZ,CAAJ,EAA4C;aACrC5D,MAAMmG,MAAN,CAAavC,WAAb,CAAL;;OADF,MAGO;aACA1D,UAAL;YACIiE,oBAAoB,CAAxB,EAA2B;mBAAWvD,MAAT;;;aAExBqF,OAAO/F,UAAd,EAA0B;WACrBsF,IAAH,CAAQS,EAAR;YACItF,OAAOuF,IAAP,CAAYlG,MAAMmG,MAAN,CAAavC,WAAb,CAAZ,CAAJ,EAA4C;eACrC5D,MAAMmG,MAAN,CAAavC,WAAb,CAAL;;SADF,MAGO;eACA1D,UAAL;cACIiE,oBAAoB,CAAxB,EAA2B;qBAAWvD,MAAT;;;;UAG7BgF,OAAO1F,UAAX,EAAuB;YACjBY,OAAOoF,IAAP,CAAYlG,MAAMmG,MAAN,CAAavC,WAAb,CAAZ,CAAJ,EAA4C;eACrC5D,MAAMmG,MAAN,CAAavC,WAAb,CAAL;;SADF,MAGO;eACA1D,UAAL;cACIiE,oBAAoB,CAAxB,EAA2B;qBAAWpD,MAAT;;;YAE3BkF,OAAO/F,UAAX,EAAuB;yBACNuF,EAAf;eACKzE,OAAO4E,EAAP,CAAL;eACKF,EAAL;SAHF,MAIO;wBACSD,EAAd;eACKvF,UAAL;;OAdJ,MAgBO;sBACSuF,EAAd;aACKvF,UAAL;;KArCJ,MAuCO;oBACSuF,EAAd;WACKvF,UAAL;;;WAGKuF,EAAP;;;WAGOM,mBAAT,GAA+B;QACzBN,EAAJ,EAAQC,EAAR,EAAYE,EAAZ,EAAgBK,EAAhB,EAAoBG,EAApB,EAAwBC,EAAxB,EAA4BC,EAA5B,EAAgCC,EAAhC;;SAEK3C,WAAL;SACK4C,mBAAL;QACId,OAAOxF,UAAX,EAAuB;WAChB4F,YAAL;UACIF,OAAO1F,UAAX,EAAuB;YACjBF,MAAMd,UAAN,CAAiB0E,WAAjB,MAAkC,EAAtC,EAA0C;eACnC1C,MAAL;;SADF,MAGO;eACAhB,UAAL;cACIiE,oBAAoB,CAAxB,EAA2B;qBAAWhD,MAAT;;;YAE3B8E,OAAO/F,UAAX,EAAuB;eAChB4F,YAAL;cACIM,OAAOlG,UAAX,EAAuB;iBAChBuG,eAAL;gBACIJ,OAAOnG,UAAX,EAAuB;mBAChB4F,YAAL;kBACIQ,OAAOpG,UAAX,EAAuB;oBACjBF,MAAMd,UAAN,CAAiB0E,WAAjB,MAAkC,EAAtC,EAA0C;uBACnCxC,OAAL;;iBADF,MAGO;uBACAlB,UAAL;sBACIiE,oBAAoB,CAAxB,EAA2B;6BAAW9C,OAAT;;;oBAE3BkF,OAAOrG,UAAX,EAAuB;iCACNuF,EAAf;uBACKnE,QAAQoE,EAAR,EAAYW,EAAZ,CAAL;uBACKX,EAAL;iBAHF,MAIO;gCACSD,EAAd;uBACKvF,UAAL;;eAdJ,MAgBO;8BACSuF,EAAd;qBACKvF,UAAL;;aApBJ,MAsBO;4BACSuF,EAAd;mBACKvF,UAAL;;WA1BJ,MA4BO;0BACSuF,EAAd;iBACKvF,UAAL;;SAhCJ,MAkCO;wBACSuF,EAAd;eACKvF,UAAL;;OA5CJ,MA8CO;sBACSuF,EAAd;aACKvF,UAAL;;KAlDJ,MAoDO;oBACSuF,EAAd;WACKvF,UAAL;;;WAGKuF,EAAP;;;WAGOe,iBAAT,GAA6B;QACvBf,EAAJ,EAAQC,EAAR;;SAEK9B,WAAL;SACK8C,eAAL;QACIhB,OAAOxF,UAAX,EAAuB;qBACNuF,EAAf;WACKjE,QAAQkE,EAAR,CAAL;;SAEGA,EAAL;;WAEOD,EAAP;;;WAGOgB,aAAT,GAAyB;QACnBhB,EAAJ,EAAQC,EAAR,EAAYE,EAAZ,EAAgBK,EAAhB,EAAoBG,EAApB,EAAwBC,EAAxB;;SAEKzC,WAAL;SACK+C,iBAAL;QACIjB,OAAOxF,UAAX,EAAuB;WAChB4F,YAAL;UACIF,OAAO1F,UAAX,EAAuB;YACjBF,MAAMd,UAAN,CAAiB0E,WAAjB,MAAkC,GAAtC,EAA2C;eACpCnC,OAAL;;SADF,MAGO;eACAvB,UAAL;cACIiE,oBAAoB,CAAxB,EAA2B;qBAAWzC,OAAT;;;YAE3BuE,OAAO/F,UAAX,EAAuB;eAChB4F,YAAL;cACIM,OAAOlG,UAAX,EAAuB;iBAChBuG,eAAL;gBACIJ,OAAOnG,UAAX,EAAuB;6BACNuF,EAAf;mBACK9D,QAAQ+D,EAAR,EAAYW,EAAZ,CAAL;mBACKX,EAAL;aAHF,MAIO;4BACSD,EAAd;mBACKvF,UAAL;;WARJ,MAUO;0BACSuF,EAAd;iBACKvF,UAAL;;SAdJ,MAgBO;wBACSuF,EAAd;eACKvF,UAAL;;OA1BJ,MA4BO;sBACSuF,EAAd;aACKvF,UAAL;;KAhCJ,MAkCO;oBACSuF,EAAd;WACKvF,UAAL;;QAEEuF,OAAOvF,UAAX,EAAuB;WAChB0D,WAAL;WACK+C,iBAAL;UACIjB,OAAOxF,UAAX,EAAuB;aAChB4F,YAAL;YACIF,OAAO1F,UAAX,EAAuB;eAChBuG,eAAL;cACIR,OAAO/F,UAAX,EAAuB;2BACNuF,EAAf;iBACK7D,QAAQ8D,EAAR,EAAYO,EAAZ,CAAL;iBACKP,EAAL;WAHF,MAIO;0BACSD,EAAd;iBACKvF,UAAL;;SARJ,MAUO;wBACSuF,EAAd;eACKvF,UAAL;;OAdJ,MAgBO;sBACSuF,EAAd;aACKvF,UAAL;;UAEEuF,OAAOvF,UAAX,EAAuB;aAChByG,iBAAL;;;;WAIGlB,EAAP;;;WAGOkB,eAAT,GAA2B;QACrBlB,EAAJ,EAAQC,EAAR,EAAYE,EAAZ,EAAgBK,EAAhB;;SAEKrC,WAAL;SACK8C,eAAL;QACIhB,OAAOxF,UAAX,EAAuB;UACjBF,MAAMd,UAAN,CAAiB0E,WAAjB,MAAkC,EAAtC,EAA0C;aACnC/B,OAAL;;OADF,MAGO;aACA3B,UAAL;YACIiE,oBAAoB,CAAxB,EAA2B;mBAAWrC,OAAT;;;UAE3B8D,OAAO1F,UAAX,EAAuB;aAChByG,iBAAL;YACIV,OAAO/F,UAAX,EAAuB;yBACNuF,EAAf;eACK1D,QAAQ2D,EAAR,EAAYO,EAAZ,CAAL;eACKP,EAAL;SAHF,MAIO;wBACSD,EAAd;eACKvF,UAAL;;OARJ,MAUO;sBACSuF,EAAd;aACKvF,UAAL;;KApBJ,MAsBO;oBACSuF,EAAd;WACKvF,UAAL;;QAEEuF,OAAOvF,UAAX,EAAuB;WAChB0D,WAAL;WACKgD,eAAL;UACIlB,OAAOxF,UAAX,EAAuB;YACjBF,MAAMd,UAAN,CAAiB0E,WAAjB,MAAkC,EAAtC,EAA0C;eACnC3B,OAAL;;SADF,MAGO;eACA/B,UAAL;cACIiE,oBAAoB,CAAxB,EAA2B;qBAAWjC,OAAT;;;YAE3B0D,OAAO1F,UAAX,EAAuB;yBACNuF,EAAf;eACKtD,QAAQuD,EAAR,CAAL;eACKA,EAAL;SAHF,MAIO;wBACSD,EAAd;eACKvF,UAAL;;OAdJ,MAgBO;sBACSuF,EAAd;aACKvF,UAAL;;UAEEuF,OAAOvF,UAAX,EAAuB;aAChB0D,WAAL;aACKgD,eAAL;YACIlB,OAAOxF,UAAX,EAAuB;cACjBF,MAAMd,UAAN,CAAiB0E,WAAjB,MAAkC,EAAtC,EAA0C;iBACnCxB,OAAL;;WADF,MAGO;iBACAlC,UAAL;gBACIiE,oBAAoB,CAAxB,EAA2B;uBAAW9B,OAAT;;;cAE3BuD,OAAO1F,UAAX,EAAuB;2BACNuF,EAAf;iBACKnD,QAAQoD,EAAR,CAAL;iBACKA,EAAL;WAHF,MAIO;0BACSD,EAAd;iBACKvF,UAAL;;SAdJ,MAgBO;wBACSuF,EAAd;eACKvF,UAAL;;YAEEuF,OAAOvF,UAAX,EAAuB;eAChB0D,WAAL;eACKgD,eAAL;cACIlB,OAAOxF,UAAX,EAAuB;gBACjBF,MAAMd,UAAN,CAAiB0E,WAAjB,MAAkC,EAAtC,EAA0C;mBACnCrB,OAAL;;aADF,MAGO;mBACArC,UAAL;kBACIiE,oBAAoB,CAAxB,EAA2B;yBAAW3B,OAAT;;;gBAE3BoD,OAAO1F,UAAX,EAAuB;6BACNuF,EAAf;mBACKhD,QAAQiD,EAAR,CAAL;mBACKA,EAAL;aAHF,MAIO;4BACSD,EAAd;mBACKvF,UAAL;;WAdJ,MAgBO;0BACSuF,EAAd;iBACKvF,UAAL;;cAEEuF,OAAOvF,UAAX,EAAuB;iBAChB0G,eAAL;;;;;;WAMDnB,EAAP;;;WAGOmB,aAAT,GAAyB;QACnBnB,EAAJ,EAAQC,EAAR,EAAYE,EAAZ,EAAgBK,EAAhB;;SAEKO,mBAAL;QACIf,OAAOvF,UAAX,EAAuB;WAChB0D,WAAL;WACKiD,iBAAL;UACInB,OAAOxF,UAAX,EAAuB;uBACNuF,EAAf;aACK/C,QAAQgD,EAAR,CAAL;;WAEGA,EAAL;UACID,OAAOvF,UAAX,EAAuB;aAChB0D,WAAL;YACI5D,MAAMd,UAAN,CAAiB0E,WAAjB,MAAkC,EAAtC,EAA0C;eACnCjB,OAAL;;SADF,MAGO;eACAzC,UAAL;cACIiE,oBAAoB,CAAxB,EAA2B;qBAAWvB,OAAT;;;YAE3B8C,OAAOxF,UAAX,EAAuB;eAChBuG,eAAL;cACIb,OAAO1F,UAAX,EAAuB;gBACjBF,MAAMd,UAAN,CAAiB0E,WAAjB,MAAkC,EAAtC,EAA0C;mBACnCf,OAAL;;aADF,MAGO;mBACA3C,UAAL;kBACIiE,oBAAoB,CAAxB,EAA2B;yBAAWrB,OAAT;;;gBAE3BmD,OAAO/F,UAAX,EAAuB;6BACNuF,EAAf;mBACK1C,QAAQ6C,EAAR,CAAL;mBACKF,EAAL;aAHF,MAIO;4BACSD,EAAd;mBACKvF,UAAL;;WAdJ,MAgBO;0BACSuF,EAAd;iBACKvF,UAAL;;SApBJ,MAsBO;wBACSuF,EAAd;eACKvF,UAAL;;;;;WAKCuF,EAAP;;;WAGOiB,aAAT,GAAyB;QACnBjB,EAAJ,EAAQC,EAAR,EAAYE,EAAZ,EAAgBK,EAAhB;;SAEKrC,WAAL;SACKkD,0BAAL;QACIpB,OAAOxF,UAAX,EAAuB;WAChB,EAAL;WACK6G,oBAAL;aACOd,OAAO/F,UAAd,EAA0B;WACrBsF,IAAH,CAAQS,EAAR;aACKc,oBAAL;;UAEEnB,OAAO1F,UAAX,EAAuB;uBACNuF,EAAf;aACKzC,QAAQ0C,EAAR,EAAYE,EAAZ,CAAL;aACKF,EAAL;OAHF,MAIO;sBACSD,EAAd;aACKvF,UAAL;;KAbJ,MAeO;oBACSuF,EAAd;WACKvF,UAAL;;;WAGKuF,EAAP;;;WAGOqB,wBAAT,GAAoC;QAC9BrB,EAAJ;;QAEIzF,MAAMd,UAAN,CAAiB0E,WAAjB,MAAkC,EAAtC,EAA0C;WACnCX,OAAL;;KADF,MAGO;WACA/C,UAAL;UACIiE,oBAAoB,CAAxB,EAA2B;iBAAWjB,OAAT;;;QAE3BuC,OAAOvF,UAAX,EAAuB;UACjBiD,QAAQ+C,IAAR,CAAalG,MAAMmG,MAAN,CAAavC,WAAb,CAAb,CAAJ,EAA6C;aACtC5D,MAAMmG,MAAN,CAAavC,WAAb,CAAL;;OADF,MAGO;aACA1D,UAAL;YACIiE,oBAAoB,CAAxB,EAA2B;mBAAWf,OAAT;;;;;WAI1BqC,EAAP;;;WAGOsB,kBAAT,GAA8B;QACxBtB,EAAJ;;SAEKqB,0BAAL;QACIrB,OAAOvF,UAAX,EAAuB;UACjBmD,QAAQ6C,IAAR,CAAalG,MAAMmG,MAAN,CAAavC,WAAb,CAAb,CAAJ,EAA6C;aACtC5D,MAAMmG,MAAN,CAAavC,WAAb,CAAL;;OADF,MAGO;aACA1D,UAAL;YACIiE,oBAAoB,CAAxB,EAA2B;mBAAWb,OAAT;;;;;WAI1BmC,EAAP;;;WAGOoB,eAAT,GAA2B;QACrBpB,EAAJ,EAAQC,EAAR,EAAYE,EAAZ;;SAEKhC,WAAL;SACK,EAAL;QACIP,QAAQ6C,IAAR,CAAalG,MAAMmG,MAAN,CAAavC,WAAb,CAAb,CAAJ,EAA6C;WACtC5D,MAAMmG,MAAN,CAAavC,WAAb,CAAL;;KADF,MAGO;WACA1D,UAAL;UACIiE,oBAAoB,CAAxB,EAA2B;iBAAWb,OAAT;;;QAE3BsC,OAAO1F,UAAX,EAAuB;aACd0F,OAAO1F,UAAd,EAA0B;WACrBsF,IAAH,CAAQI,EAAR;YACIvC,QAAQ6C,IAAR,CAAalG,MAAMmG,MAAN,CAAavC,WAAb,CAAb,CAAJ,EAA6C;eACtC5D,MAAMmG,MAAN,CAAavC,WAAb,CAAL;;SADF,MAGO;eACA1D,UAAL;cACIiE,oBAAoB,CAAxB,EAA2B;qBAAWb,OAAT;;;;KARnC,MAWO;WACApD,UAAL;;QAEEwF,OAAOxF,UAAX,EAAuB;qBACNuF,EAAf;WACKlC,QAAQmC,EAAR,CAAL;;SAEGA,EAAL;;WAEOD,EAAP;;;WAGOK,UAAT,GAAsB;QAChBL,EAAJ,EAAQC,EAAR;;SAEK,EAAL;QACIhC,QAAQwC,IAAR,CAAalG,MAAMmG,MAAN,CAAavC,WAAb,CAAb,CAAJ,EAA6C;WACtC5D,MAAMmG,MAAN,CAAavC,WAAb,CAAL;;KADF,MAGO;WACA1D,UAAL;UACIiE,oBAAoB,CAAxB,EAA2B;iBAAWR,OAAT;;;WAExB+B,OAAOxF,UAAd,EAA0B;SACrBsF,IAAH,CAAQE,EAAR;UACIhC,QAAQwC,IAAR,CAAalG,MAAMmG,MAAN,CAAavC,WAAb,CAAb,CAAJ,EAA6C;aACtC5D,MAAMmG,MAAN,CAAavC,WAAb,CAAL;;OADF,MAGO;aACA1D,UAAL;YACIiE,oBAAoB,CAAxB,EAA2B;mBAAWR,OAAT;;;;;WAI1B8B,EAAP;;;MAII3I,IAAIkK,UAAR;;eAGW1G,uBAAb;;MAEI8D,eAAelE,UAAf,IAA6B0D,gBAAgB5D,MAAMrB,MAAvD,EAA+D;WACtDyF,UAAP;GADF,MAEO;QACDA,eAAelE,UAAf,IAA6B0D,cAAc5D,MAAMrB,MAArD,EAA6D;eAClDmG,oBAAT;;;UAGIN,yBACJN,mBADI,EAEJD,iBAAiBjE,MAAMrB,MAAvB,GAAgCqB,MAAMmG,MAAN,CAAalC,cAAb,CAAhC,GAA+D,IAF3D,EAGJA,iBAAiBjE,MAAMrB,MAAvB,GACI4F,oBAAoBN,cAApB,EAAoCA,iBAAiB,CAArD,CADJ,GAEIM,oBAAoBN,cAApB,EAAoCA,cAApC,CALA,CAAN;;;;AAUJ,cAAiB;eACFrG,eADE;SAEFmC;CAFf;;ACp4BA;;;;IAGqBkH;uBACPC,UAAZ,EAA8C;QAAtBC,eAAsB,uEAAJ,EAAI;;;;SACvCC,SAAL,GAAiB,EAAjB;SACKC,OAAL,GAAe,EAAf;SACKC,IAAL,GAAY,IAAZ;SACK3L,IAAL,GAAY,CAAZ;;SAEK4L,kBAAL,CAAwBJ,eAAxB;SACKK,OAAL,CAAaN,UAAb;;;;;uCAGiBC,iBAAiB;WAC7B,IAAInL,GAAT,IAAgBmL,eAAhB,EAAiC;aAC1BC,SAAL,CAAepL,GAAf,IAAsB,IAAImB,OAAJ,CAAYgK,gBAAgBnL,GAAhB,CAAZ,CAAtB;aACKqL,OAAL,CAAarL,GAAb,IAAoBmL,gBAAgBnL,GAAhB,CAApB;aACKL,IAAL;;;;;4BAIIuL,YAAY;;;;;;0CACIA,UAAtB,4GAAkC;cAAzBO,SAAyB;;cAC5BA,qBAAqBpL,UAAzB,EAAqC;iBAC9B+K,SAAL,CAAeK,UAAUnL,QAAV,CAAmBH,IAAlC,IAA0C,KAAKuL,iBAAL,CAAuBD,UAAUlL,UAAjC,CAA1C;;gBAEIkL,UAAUlL,UAAV,YAAgCY,OAApC,EAA6C;mBACtCkK,OAAL,CAAaI,UAAUnL,QAAV,CAAmBH,IAAhC,IAAwCsL,UAAUlL,UAAV,CAAqBR,KAA7D;mBACKJ,IAAL;;;;;;;;;;;;;;;;;;;WAKD2L,IAAL,GAAY,KAAKF,SAAL,CAAeE,IAA3B;UACI,CAAC,KAAKA,IAAV,EAAgB;cACR,IAAIrJ,KAAJ,CAAU,oCAAV,CAAN;;;;;sCAIc0J,MAAM;;WAEjB,IAAI3L,GAAT,IAAgB2L,IAAhB,EAAsB;YAChBA,KAAK3L,GAAL,aAAqBH,IAAzB,EAA+B;eACxBG,GAAL,IAAY,KAAK0L,iBAAL,CAAuBC,KAAK3L,GAAL,CAAvB,CAAZ;;;;;UAKA2L,gBAAgBzL,QAApB,EAA8B;YACxBH,QAAQ,KAAKqL,SAAL,CAAeO,KAAKxL,IAApB,CAAZ;YACIJ,SAAS,IAAb,EACE,MAAM,IAAIkC,KAAJ,6BAAoC0J,KAAKxL,IAAzC,CAAN;;eAEK,KAAKuL,iBAAL,CAAuB3L,MAAMU,IAAN,EAAvB,CAAP;;;aAGKkL,IAAP;;;;;;;ACxDJ,IAAMC,aAAa,IAAIxK,SAAJ,EAAnB;;;;;;;;;AASA,AAAe,SAASyK,QAAT,CAAkBC,IAAlB,EAAwBC,UAAxB,EAAoC;SAC1C,IAAIlL,aAAJ,CAAkBiL,IAAlB,EAAwBF,UAAxB,CAAP;OACK3L,aAAL;;MAEI+L,YAAY,IAAIC,KAAJ,CAAU,UAAV,EAAmBF,UAAnB,CAAhB;MACIG,eAAe,IAAID,KAAJ,CAAUH,KAAKnL,QAAf,EAAyBoL,UAAzB,CAAnB;MACII,UAAU,CAACH,SAAD,EAAYE,YAAZ,CAAd;;;SAGO,CAAP,EAAU;QACJ5M,IAAI,IAAR;;SAEK,IAAIoE,IAAI,CAAb,EAAgBA,IAAIyI,QAAQxJ,MAA5B,EAAoCe,GAApC,EAAyC;UACnC,CAACyI,QAAQzI,CAAR,EAAW0I,MAAhB,EAAwB;YAClBD,QAAQzI,CAAR,CAAJ;;;;;QAKApE,KAAK,IAAT,EAAe;;;;;MAKb8M,MAAF,GAAW,IAAX;;;SAGK,IAAIhN,IAAI,CAAb,EAAgBA,IAAI2M,UAApB,EAAgC3M,GAAhC,EAAqC;;;UAG/BiN,IAAI,UAAR;;;;;;0CACc/M,EAAEgN,SAAhB,4GAA2B;cAAlBpD,CAAkB;;cACrBA,aAAa/H,OAAb,IAAwB+H,EAAEnJ,KAAF,KAAYX,CAAxC,EAA2C;mBAClCiN,CAAP,EAAUnD,EAAEnI,SAAZ;;;;;;;;;;;;;;;;;;UAIAsL,EAAE1M,IAAF,KAAW,CAAf,EAAkB;;;;;UAKd4M,KAAK,CAAC,CAAV;WACK,IAAI9J,IAAI,CAAb,EAAgBA,IAAI0J,QAAQxJ,MAA5B,EAAoCF,GAApC,EAAyC;YACnC/C,MAAM2M,CAAN,EAASF,QAAQ1J,CAAR,EAAW6J,SAApB,CAAJ,EAAoC;eAC7B7J,CAAL;;;;;UAKA8J,OAAO,CAAC,CAAZ,EAAe;;gBAEL/C,IAAR,CAAa,IAAIyC,KAAJ,CAAUI,CAAV,EAAaN,UAAb,CAAb;aACKI,QAAQxJ,MAAR,GAAiB,CAAtB;;;QAGA6J,WAAF,CAAcpN,CAAd,IAAmBmN,EAAnB;;;;SAIGJ,OAAP;;;IAGIF,QACJ,eAAYK,SAAZ,EAAuBG,GAAvB,EAA4B;;;OACrBH,SAAL,GAAiBA,SAAjB;OACKE,WAAL,GAAmB,IAAIE,WAAJ,CAAgBD,GAAhB,CAAnB;OACKE,SAAL,GAAiBL,UAAU1M,GAAV,CAAcgM,UAAd,CAAjB;OACKQ,MAAL,GAAc,KAAd;OACKQ,IAAL,GAAY,UAAZ;;;;;;;uCAEgBN,SAAhB,iHAA2B;UAAlBtD,GAAkB;;UACrBA,eAAe3H,GAAnB,EAAwB;aACjBuL,IAAL,CAAUnN,GAAV,CAAcuJ,IAAI7I,IAAlB;;;;;;;;;;;;;;;;;;;ACrFR,IAAM0M,gBAAgB,CAAtB;AACA,IAAMC,aAAa,CAAnB;;;;;;;IAMqBC;wBACPC,GAAZ,EAAiB;;;SACVC,UAAL,GAAkBD,IAAIC,UAAtB;SACKN,SAAL,GAAiBK,IAAIL,SAArB;SACKC,IAAL,GAAYI,IAAIJ,IAAhB;;;;;;;;;;;0BAOIM,KAAK;UACLC,OAAO,IAAX;;;;;;;qBACA,GAEgBN,aAFhB;wBAAA,GAGmB,IAHnB;6BAAA,GAIwB,IAJxB;yBAAA,GAKoB,IALpB;iBAAA,GAOiB,CAPjB;;;sBAOoB3D,IAAIgE,IAAIvK,MAP5B;;;;;iBAAA,GAQcuK,IAAIhE,CAAJ,CARd;;;4BAUkBkE,KAAZ;wBACQD,KAAKF,UAAL,CAAgBG,KAAhB,EAAuBC,CAAvB,CAAR;;sBAEID,UAAUN,UAbpB;;;;;sBAeYQ,YAAY,IAAZ,IAAoBC,iBAAiB,IAArC,IAA6CA,iBAAiBD,QAf1E;;;;;;uBAgBgB,CAACA,QAAD,EAAWC,aAAX,EAA0BJ,KAAKP,IAAL,CAAUY,SAAV,CAA1B,CAhBhB;;;;;wBAoBgBL,KAAKF,UAAL,CAAgBJ,aAAhB,EAA+BQ,CAA/B,CAAR;2BACW,IAAX;;;;;oBAIED,UAAUN,UAAV,IAAwBQ,YAAY,IAAxC,EAA8C;6BACjCpE,CAAX;;;;oBAIEiE,KAAKR,SAAL,CAAeS,KAAf,CAAJ,EAA2B;kCACTlE,CAAhB;;;;oBAIEkE,UAAUN,UAAd,EAA0B;0BAChBD,aAAR;;;;mBApCR;;;;;sBAyCQS,YAAY,IAAZ,IAAoBC,iBAAiB,IAArC,IAA6CA,iBAAiBD,QAzCtE;;;;;;uBA0CY,CAACA,QAAD,EAAWC,aAAX,EAA0BJ,KAAKP,IAAL,CAAUQ,KAAV,CAA1B,CA1CZ;;;;;;;;;;;;;;;;;;;0BAqDIF,KAAKO,SAAS;;;;;;0CACa,KAAKC,KAAL,CAAWR,GAAX,CAA/B,4GAAgD;;;cAAtCS,KAAsC;cAA/BC,GAA+B;cAA1BhB,IAA0B;;;;;;+CAC9BA,IAAhB,iHAAsB;kBAAbiB,GAAa;;kBAChB,OAAOJ,QAAQI,GAAR,CAAP,KAAwB,UAA5B,EAAwC;wBAC9BA,GAAR,EAAaF,KAAb,EAAoBC,GAApB,EAAyBV,IAAItJ,KAAJ,CAAU+J,KAAV,EAAiBC,MAAM,CAAvB,CAAzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxEH,SAASE,KAAT,CAAeC,MAAf,EAAuB5C,eAAvB,EAAwC;MACzC6C,MAAMC,QAAQH,KAAR,CAAcC,MAAd,CAAV;SACO,IAAI9C,WAAJ,CAAgB+C,GAAhB,EAAqB7C,eAArB,CAAP;;;AAGF,AAAO,SAAS+C,KAAT,CAAeC,WAAf,EAA4B;MAC7BC,SAASvC,SAASsC,YAAY7C,IAArB,EAA2B6C,YAAYxO,IAAvC,CAAb;;SAEO,IAAIoN,YAAJ,CAAiB;gBACVqB,OAAOC,GAAP,CAAW;aAAK,YAAW/O,EAAEkN,WAAb,CAAL;KAAX,CADU;eAEX4B,OAAOC,GAAP,CAAW;aAAK/O,EAAEqN,SAAP;KAAX,CAFW;UAGhByB,OAAOC,GAAP,CAAW;aAAK,YAAW/O,EAAEsN,IAAb,CAAL;KAAX;GAHD,CAAP;;;AAOF,AAAe,SAAS0B,OAAT,CAAiBP,MAAjB,EAAyB5C,eAAzB,EAA0C;SAChD+C,MAAMJ,MAAMC,MAAN,EAAc5C,eAAd,CAAN,CAAP;;;;;"}