{"version":3,"file":"index.cjs","names":[],"sources":["../libs/decorate-array-for-pegjs.ts","../libs/split-strings.ts","../grammars/latex.pegjs","../grammars/align-environment.pegjs","../grammars/xparse-argspec.pegjs","../grammars/pgfkeys.pegjs","../grammars/macro-substitutions.pegjs","../grammars/ligatures.pegjs","../grammars/xcolor-expressions.pegjs","../grammars/tabular-spec.pegjs","../grammars/systeme-environment.pegjs","../grammars/tex-glue.pegjs","../grammars/tikz.pegjs","../libs/pegjs-parsers.ts","../index.ts"],"sourcesContent":["type StringlikeArray = any[] & string;\n\n/**\n * Pegjs operates on strings. However, strings and arrays are very similar!\n * This function adds `charAt`, `charCodeAt`, and `substring` methods to\n * `array` so that `array` can then be fed to a Pegjs generated parser.\n *\n * @param {[object]} array\n * @returns {[object]}\n */\nexport function decorateArrayForPegjs(array: any[]): StringlikeArray {\n    (array as any).charAt = function (i: number) {\n        return this[i];\n    };\n    // We don't have a hope of imitating `charCodeAt`, so\n    // make it something that won't interfere\n    (array as any).charCodeAt = () => 0;\n    (array as any).substring = function (i: number, j: number) {\n        return this.slice(i, j);\n    };\n    // This function is called when reporting an error,\n    // so we convert back to a string.\n    (array as any).replace = function (a: string, b: string) {\n        const ret = JSON.stringify(this);\n        return ret.replace(a, b);\n    };\n    return array as StringlikeArray;\n}\n","import * as Ast from \"@unified-latex/unified-latex-types\";\nimport { match } from \"@unified-latex/unified-latex-util-match\";\n\n/**\n * Splits all multi-character strings into strings that are all single characters.\n */\nexport function splitStringsIntoSingleChars(nodes: Ast.Node[]): Ast.Node[] {\n    return nodes.flatMap((node) =>\n        match.anyString(node)\n            ? (Array.from(node.content).map((c) => ({\n                  type: \"string\",\n                  content: c,\n              })) as Ast.Node[])\n            : node\n    );\n}\n","export default (\n  // @generated by Peggy 5.1.0.\n  //\n  // https://peggyjs.org/\n  (function() {\n    \"use strict\";\n    class peg$SyntaxError extends SyntaxError {\n      constructor(message, expected, found, location) {\n        super(message);\n        this.expected = expected;\n        this.found = found;\n        this.location = location;\n        this.name = \"SyntaxError\";\n      }\n      format(sources) {\n        let str = \"Error: \" + this.message;\n        if (this.location) {\n          let src = null;\n          const st = sources.find((s2) => s2.source === this.location.source);\n          if (st) {\n            src = st.text.split(/\\r\\n|\\n|\\r/g);\n          }\n          const s = this.location.start;\n          const offset_s = this.location.source && typeof this.location.source.offset === \"function\" ? this.location.source.offset(s) : s;\n          const loc = this.location.source + \":\" + offset_s.line + \":\" + offset_s.column;\n          if (src) {\n            const e = this.location.end;\n            const filler = \"\".padEnd(offset_s.line.toString().length, \" \");\n            const line = src[s.line - 1];\n            const last = s.line === e.line ? e.column : line.length + 1;\n            const hatLen = last - s.column || 1;\n            str += \"\\n --> \" + loc + \"\\n\" + filler + \" |\\n\" + offset_s.line + \" | \" + line + \"\\n\" + filler + \" | \" + \"\".padEnd(s.column - 1, \" \") + \"\".padEnd(hatLen, \"^\");\n          } else {\n            str += \"\\n at \" + loc;\n          }\n        }\n        return str;\n      }\n      static buildMessage(expected, found) {\n        function hex(ch) {\n          return ch.codePointAt(0).toString(16).toUpperCase();\n        }\n        const nonPrintable = Object.prototype.hasOwnProperty.call(RegExp.prototype, \"unicode\") ? new RegExp(\"[\\\\p{C}\\\\p{Mn}\\\\p{Mc}]\", \"gu\") : null;\n        function unicodeEscape(s) {\n          if (nonPrintable) {\n            return s.replace(nonPrintable, (ch) => \"\\\\u{\" + hex(ch) + \"}\");\n          }\n          return s;\n        }\n        function literalEscape(s) {\n          return unicodeEscape(s.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"').replace(/\\0/g, \"\\\\0\").replace(/\\t/g, \"\\\\t\").replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\").replace(/[\\x00-\\x0F]/g, (ch) => \"\\\\x0\" + hex(ch)).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => \"\\\\x\" + hex(ch)));\n        }\n        function classEscape(s) {\n          return unicodeEscape(s.replace(/\\\\/g, \"\\\\\\\\\").replace(/\\]/g, \"\\\\]\").replace(/\\^/g, \"\\\\^\").replace(/-/g, \"\\\\-\").replace(/\\0/g, \"\\\\0\").replace(/\\t/g, \"\\\\t\").replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\").replace(/[\\x00-\\x0F]/g, (ch) => \"\\\\x0\" + hex(ch)).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => \"\\\\x\" + hex(ch)));\n        }\n        const DESCRIBE_EXPECTATION_FNS = {\n          literal(expectation) {\n            return '\"' + literalEscape(expectation.text) + '\"';\n          },\n          class(expectation) {\n            const escapedParts = expectation.parts.map(\n              (part) => Array.isArray(part) ? classEscape(part[0]) + \"-\" + classEscape(part[1]) : classEscape(part)\n            );\n            return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts.join(\"\") + \"]\" + (expectation.unicode ? \"u\" : \"\");\n          },\n          any() {\n            return \"any character\";\n          },\n          end() {\n            return \"end of input\";\n          },\n          other(expectation) {\n            return expectation.description;\n          }\n        };\n        function describeExpectation(expectation) {\n          return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n        }\n        function describeExpected(expected2) {\n          const descriptions = expected2.map(describeExpectation);\n          descriptions.sort();\n          if (descriptions.length > 0) {\n            let j = 1;\n            for (let i = 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          switch (descriptions.length) {\n            case 1:\n              return descriptions[0];\n            case 2:\n              return descriptions[0] + \" or \" + descriptions[1];\n            default:\n              return descriptions.slice(0, -1).join(\", \") + \", or \" + descriptions[descriptions.length - 1];\n          }\n        }\n        function describeFound(found2) {\n          return found2 ? '\"' + literalEscape(found2) + '\"' : \"end of input\";\n        }\n        return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n      }\n    }\n    function peg$parse(input, options) {\n      options = options !== void 0 ? options : {};\n      const peg$FAILED = {};\n      const peg$source = options.grammarSource;\n      const peg$startRuleFunctions = {\n        document: peg$parsedocument,\n        math: peg$parsemath\n      };\n      let peg$startRuleFunction = peg$parsedocument;\n      const peg$c0 = \"%\";\n      const peg$c1 = \".\";\n      const peg$c2 = \"verb*\";\n      const peg$c3 = \"verb\";\n      const peg$c4 = \"[\";\n      const peg$c5 = \"]\";\n      const peg$c6 = \"lstinline\";\n      const peg$c7 = \"mintinline\";\n      const peg$c8 = \"mint\";\n      const peg$c9 = \"minted\";\n      const peg$c10 = \"verbatim*\";\n      const peg$c11 = \"verbatim\";\n      const peg$c12 = \"filecontents*\";\n      const peg$c13 = \"filecontents\";\n      const peg$c14 = \"comment\";\n      const peg$c15 = \"lstlisting\";\n      const peg$c16 = \"(\";\n      const peg$c17 = \")\";\n      const peg$c18 = \"begin\";\n      const peg$c19 = \"end\";\n      const peg$c20 = \"equation*\";\n      const peg$c21 = \"equation\";\n      const peg$c22 = \"align*\";\n      const peg$c23 = \"align\";\n      const peg$c24 = \"alignat*\";\n      const peg$c25 = \"alignat\";\n      const peg$c26 = \"gather*\";\n      const peg$c27 = \"gather\";\n      const peg$c28 = \"multline*\";\n      const peg$c29 = \"multline\";\n      const peg$c30 = \"flalign*\";\n      const peg$c31 = \"flalign\";\n      const peg$c32 = \"split\";\n      const peg$c33 = \"math\";\n      const peg$c34 = \"displaymath\";\n      const peg$c35 = \"\\\\\";\n      const peg$c36 = \"{\";\n      const peg$c37 = \"}\";\n      const peg$c38 = \"$\";\n      const peg$c39 = \"&\";\n      const peg$c40 = \"\\r\";\n      const peg$c41 = \"\\n\";\n      const peg$c42 = \"\\r\\n\";\n      const peg$c43 = \"#\";\n      const peg$c44 = \"^\";\n      const peg$c45 = \"_\";\n      const peg$c46 = \"\\0\";\n      const peg$r0 = /^[^ \\t\\n\\r]/;\n      const peg$r1 = /^[ \\t]/;\n      const peg$r2 = /^[a-zA-Z]/;\n      const peg$r3 = /^[0-9]/;\n      const peg$r4 = /^[.,;:\\-*\\/()!?=+<>[\\]`'\"~]/;\n      const peg$e0 = peg$otherExpectation(\"token\");\n      const peg$e1 = peg$anyExpectation();\n      const peg$e2 = peg$otherExpectation(\"parbreak\");\n      const peg$e3 = peg$otherExpectation(\"math token\");\n      const peg$e4 = peg$otherExpectation(\"nonchar token\");\n      const peg$e5 = peg$literalExpectation(\"%\", false);\n      const peg$e6 = peg$otherExpectation(\"whitespace\");\n      const peg$e7 = peg$otherExpectation(\"number\");\n      const peg$e8 = peg$literalExpectation(\".\", false);\n      const peg$e9 = peg$otherExpectation(\"special macro\");\n      const peg$e10 = peg$literalExpectation(\"verb*\", false);\n      const peg$e11 = peg$literalExpectation(\"verb\", false);\n      const peg$e12 = peg$literalExpectation(\"[\", false);\n      const peg$e13 = peg$literalExpectation(\"]\", false);\n      const peg$e14 = peg$classExpectation([\" \", \"\t\", \"\\n\", \"\\r\"], true, false, false);\n      const peg$e15 = peg$otherExpectation(\"verbatim listings\");\n      const peg$e16 = peg$literalExpectation(\"lstinline\", false);\n      const peg$e17 = peg$otherExpectation(\"verbatim minted\");\n      const peg$e18 = peg$literalExpectation(\"mintinline\", false);\n      const peg$e19 = peg$literalExpectation(\"mint\", false);\n      const peg$e20 = peg$otherExpectation(\"verbatim minted environment\");\n      const peg$e21 = peg$literalExpectation(\"minted\", false);\n      const peg$e22 = peg$otherExpectation(\"verbatim environment with optional arg\");\n      const peg$e23 = peg$otherExpectation(\"verbatim environment\");\n      const peg$e24 = peg$literalExpectation(\"verbatim*\", false);\n      const peg$e25 = peg$literalExpectation(\"verbatim\", false);\n      const peg$e26 = peg$literalExpectation(\"filecontents*\", false);\n      const peg$e27 = peg$literalExpectation(\"filecontents\", false);\n      const peg$e28 = peg$literalExpectation(\"comment\", false);\n      const peg$e29 = peg$literalExpectation(\"lstlisting\", false);\n      const peg$e30 = peg$otherExpectation(\"macro\");\n      const peg$e31 = peg$otherExpectation(\"group\");\n      const peg$e32 = peg$otherExpectation(\"environment\");\n      const peg$e33 = peg$otherExpectation(\"math environment\");\n      const peg$e34 = peg$literalExpectation(\"(\", false);\n      const peg$e35 = peg$literalExpectation(\")\", false);\n      const peg$e36 = peg$literalExpectation(\"begin\", false);\n      const peg$e37 = peg$literalExpectation(\"end\", false);\n      const peg$e38 = peg$literalExpectation(\"equation*\", false);\n      const peg$e39 = peg$literalExpectation(\"equation\", false);\n      const peg$e40 = peg$literalExpectation(\"align*\", false);\n      const peg$e41 = peg$literalExpectation(\"align\", false);\n      const peg$e42 = peg$literalExpectation(\"alignat*\", false);\n      const peg$e43 = peg$literalExpectation(\"alignat\", false);\n      const peg$e44 = peg$literalExpectation(\"gather*\", false);\n      const peg$e45 = peg$literalExpectation(\"gather\", false);\n      const peg$e46 = peg$literalExpectation(\"multline*\", false);\n      const peg$e47 = peg$literalExpectation(\"multline\", false);\n      const peg$e48 = peg$literalExpectation(\"flalign*\", false);\n      const peg$e49 = peg$literalExpectation(\"flalign\", false);\n      const peg$e50 = peg$literalExpectation(\"split\", false);\n      const peg$e51 = peg$literalExpectation(\"math\", false);\n      const peg$e52 = peg$literalExpectation(\"displaymath\", false);\n      const peg$e53 = peg$otherExpectation(\"escape\");\n      const peg$e54 = peg$literalExpectation(\"\\\\\", false);\n      const peg$e55 = peg$literalExpectation(\"{\", false);\n      const peg$e56 = peg$literalExpectation(\"}\", false);\n      const peg$e57 = peg$literalExpectation(\"$\", false);\n      const peg$e58 = peg$literalExpectation(\"&\", false);\n      const peg$e59 = peg$otherExpectation(\"newline\");\n      const peg$e60 = peg$literalExpectation(\"\\r\", false);\n      const peg$e61 = peg$literalExpectation(\"\\n\", false);\n      const peg$e62 = peg$literalExpectation(\"\\r\\n\", false);\n      const peg$e63 = peg$literalExpectation(\"#\", false);\n      const peg$e64 = peg$literalExpectation(\"^\", false);\n      const peg$e65 = peg$literalExpectation(\"_\", false);\n      const peg$e66 = peg$literalExpectation(\"\\0\", false);\n      const peg$e67 = peg$classExpectation([\" \", \"\t\"], false, false, false);\n      const peg$e68 = peg$otherExpectation(\"letter\");\n      const peg$e69 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"]], false, false, false);\n      const peg$e70 = peg$otherExpectation(\"digit\");\n      const peg$e71 = peg$classExpectation([[\"0\", \"9\"]], false, false, false);\n      const peg$e72 = peg$otherExpectation(\"punctuation\");\n      const peg$e73 = peg$classExpectation([\".\", \",\", \";\", \":\", \"-\", \"*\", \"/\", \"(\", \")\", \"!\", \"?\", \"=\", \"+\", \"<\", \">\", \"[\", \"]\", \"`\", \"'\", '\"', \"~\"], false, false, false);\n      const peg$e74 = peg$otherExpectation(\"full comment\");\n      const peg$e75 = peg$otherExpectation(\"comment\");\n      function peg$f0(content) {\n        return createNode(\"root\", { content: content.flatMap((x) => x) });\n      }\n      function peg$f1(t) {\n        return t;\n      }\n      function peg$f2(eq) {\n        return createNode(\"inlinemath\", { content: eq.flatMap((x) => x) });\n      }\n      function peg$f3(s) {\n        return createNode(\"string\", { content: s });\n      }\n      function peg$f4(s) {\n        return createNode(\"string\", { content: s });\n      }\n      function peg$f5() {\n        return createNode(\"parbreak\");\n      }\n      function peg$f6(x) {\n        return x;\n      }\n      function peg$f7(x) {\n        return x;\n      }\n      function peg$f8() {\n        return createNode(\"macro\", { content: \"^\", escapeToken: \"\" });\n      }\n      function peg$f9() {\n        return createNode(\"macro\", { content: \"_\", escapeToken: \"\" });\n      }\n      function peg$f10(s) {\n        return createNode(\"string\", { content: s });\n      }\n      function peg$f11() {\n        return createNode(\"whitespace\");\n      }\n      function peg$f12(a, b) {\n        return a.join(\"\") + \".\" + b.join(\"\");\n      }\n      function peg$f13(b) {\n        return \".\" + b.join(\"\");\n      }\n      function peg$f14(a) {\n        return a.join(\"\") + \".\";\n      }\n      function peg$f15(s) {\n        return createNode(\"string\", { content: s });\n      }\n      function peg$f16(env, e, end) {\n        return end == e;\n      }\n      function peg$f17(env, e, x) {\n        return x;\n      }\n      function peg$f18(env, e, x, end) {\n        return end == e;\n      }\n      function peg$f19(env, e, x) {\n        return createNode(\"verb\", {\n          env,\n          escape: e,\n          content: x.join(\"\")\n        });\n      }\n      function peg$f20(x) {\n        return x;\n      }\n      function peg$f21(x) {\n        return createNode(\"displaymath\", { content: x.flatMap((x2) => x2) });\n      }\n      function peg$f22(x) {\n        return x;\n      }\n      function peg$f23(x) {\n        return createNode(\"inlinemath\", { content: x.flatMap((x2) => x2) });\n      }\n      function peg$f24(x) {\n        return x;\n      }\n      function peg$f25(x) {\n        return createNode(\"displaymath\", { content: x.flatMap((x2) => x2) });\n      }\n      function peg$f26(end) {\n        return end.type === \"string\" && end.content === \"]\";\n      }\n      function peg$f27(x) {\n        return x;\n      }\n      function peg$f28(o) {\n        return [\n          createNode(\"string\", { content: \"[\" }),\n          ...o,\n          createNode(\"string\", { content: \"]\" })\n        ];\n      }\n      function peg$f29(x) {\n        return x;\n      }\n      function peg$f30(v) {\n        return createNode(\"group\", {\n          content: createNode(\"string\", { content: v.join(\"\") })\n        });\n      }\n      function peg$f31(d, end) {\n        return end == d;\n      }\n      function peg$f32(d, x) {\n        return x;\n      }\n      function peg$f33(d, v, end) {\n        return end == d;\n      }\n      function peg$f34(d, v) {\n        return [\n          createNode(\"string\", { content: d }),\n          createNode(\"string\", { content: v.join(\"\") }),\n          createNode(\"string\", { content: d })\n        ];\n      }\n      function peg$f35(macro, option, verbatim) {\n        return [\n          createNode(\"macro\", { content: macro }),\n          ...option || [],\n          ...[].concat(verbatim)\n        ];\n      }\n      function peg$f36(macro, option, language, verbatim) {\n        return [\n          createNode(\"macro\", { content: macro }),\n          ...option || [],\n          language,\n          ...[].concat(verbatim)\n        ];\n      }\n      function peg$f37(env, option, language, end_env) {\n        return compare_env({ content: [env] }, end_env);\n      }\n      function peg$f38(env, option, language, body) {\n        const content = [\n          ...option || [],\n          language,\n          { type: \"string\", content: body }\n        ];\n        return createNode(\"environment\", {\n          env,\n          content\n        });\n      }\n      function peg$f39(env, option, end_env) {\n        return compare_env({ content: [env] }, end_env);\n      }\n      function peg$f40(env, option, x) {\n        return x;\n      }\n      function peg$f41(env, option, body) {\n        const content = option ? [...option, { type: \"string\", content: body }] : [{ type: \"string\", content: body }];\n        return createNode(\"environment\", {\n          env,\n          content\n        });\n      }\n      function peg$f42(env, end_env) {\n        return compare_env({ content: [env] }, end_env);\n      }\n      function peg$f43(env, x) {\n        return x;\n      }\n      function peg$f44(env, body) {\n        return createNode(\"verbatim\", {\n          env,\n          content: body\n        });\n      }\n      function peg$f45(n) {\n        return n.join(\"\");\n      }\n      function peg$f46(n) {\n        return n;\n      }\n      function peg$f47(m) {\n        return createNode(\"macro\", { content: m });\n      }\n      function peg$f48(c) {\n        return c;\n      }\n      function peg$f49(x) {\n        return createNode(\"group\", { content: x.flatMap((x2) => x2) });\n      }\n      function peg$f50(g) {\n        return text().slice(1, -1);\n      }\n      function peg$f51(env, env_comment, end_env) {\n        return compare_env(env, end_env);\n      }\n      function peg$f52(env, env_comment, x) {\n        return x;\n      }\n      function peg$f53(env, env_comment, body) {\n        body = body.flatMap((x) => x);\n        return createNode(\"environment\", {\n          env,\n          content: env_comment ? [env_comment, ...body] : body\n        });\n      }\n      function peg$f54(env, env_comment, end_env) {\n        return compare_env({ content: [env] }, end_env);\n      }\n      function peg$f55(env, env_comment, x) {\n        return x;\n      }\n      function peg$f56(env, env_comment, body) {\n        body = body.flatMap((x) => x);\n        return createNode(\"mathenv\", {\n          env,\n          content: env_comment ? [env_comment, ...body] : body\n        });\n      }\n      function peg$f57(e) {\n        return createNode(\"string\", { content: e });\n      }\n      function peg$f58() {\n        return createNode(\"string\", { content: \"\\\\\" });\n      }\n      function peg$f59(s) {\n        return createNode(\"string\", { content: s });\n      }\n      function peg$f60(s) {\n        return createNode(\"string\", { content: s });\n      }\n      function peg$f61(s) {\n        return createNode(\"string\", { content: s });\n      }\n      function peg$f62(s) {\n        return createNode(\"string\", { content: s });\n      }\n      function peg$f63(s) {\n        return createNode(\"string\", { content: s });\n      }\n      function peg$f64(s) {\n        return createNode(\"string\", { content: s });\n      }\n      function peg$f65(s) {\n        return createNode(\"string\", { content: s });\n      }\n      function peg$f66() {\n        return \" \";\n      }\n      function peg$f67(p) {\n        return createNode(\"string\", { content: p });\n      }\n      function peg$f68(leading_sp, comment) {\n        return createNode(\"comment\", {\n          ...comment,\n          sameline: false,\n          leadingWhitespace: leading_sp.length > 0\n        });\n      }\n      function peg$f69(spaces, x) {\n        return createNode(\"comment\", {\n          ...x,\n          sameline: true,\n          leadingWhitespace: spaces.length > 0\n        });\n      }\n      function peg$f70(c) {\n        return c;\n      }\n      function peg$f71(c) {\n        return { content: c.join(\"\"), suffixParbreak: true };\n      }\n      function peg$f72(c) {\n        return c;\n      }\n      function peg$f73(c) {\n        return { content: c.join(\"\") };\n      }\n      function peg$f74() {\n        var loc = location();\n        return loc.start.column === 1;\n      }\n      let peg$currPos = options.peg$currPos | 0;\n      let peg$savedPos = peg$currPos;\n      const peg$posDetailsCache = [{ line: 1, column: 1 }];\n      let peg$maxFailPos = peg$currPos;\n      let peg$maxFailExpected = options.peg$maxFailExpected || [];\n      let peg$silentFails = options.peg$silentFails | 0;\n      let peg$resultsCache = {};\n      let peg$result;\n      if (options.startRule) {\n        if (!(options.startRule in peg$startRuleFunctions)) {\n          throw new Error(`Can't start parsing from rule \"` + options.startRule + '\".');\n        }\n        peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n      }\n      function text() {\n        return input.substring(peg$savedPos, peg$currPos);\n      }\n      function offset() {\n        return peg$savedPos;\n      }\n      function range() {\n        return {\n          source: peg$source,\n          start: peg$savedPos,\n          end: peg$currPos\n        };\n      }\n      function location() {\n        return peg$computeLocation(peg$savedPos, peg$currPos);\n      }\n      function expected(description, location2) {\n        location2 = location2 !== void 0 ? location2 : peg$computeLocation(peg$savedPos, peg$currPos);\n        throw peg$buildStructuredError(\n          [peg$otherExpectation(description)],\n          input.substring(peg$savedPos, peg$currPos),\n          location2\n        );\n      }\n      function error(message, location2) {\n        location2 = location2 !== void 0 ? location2 : peg$computeLocation(peg$savedPos, peg$currPos);\n        throw peg$buildSimpleError(message, location2);\n      }\n      function peg$getUnicode(pos = peg$currPos) {\n        const cp = input.codePointAt(pos);\n        if (cp === void 0) {\n          return \"\";\n        }\n        return String.fromCodePoint(cp);\n      }\n      function peg$literalExpectation(text2, ignoreCase) {\n        return { type: \"literal\", text: text2, ignoreCase };\n      }\n      function peg$classExpectation(parts, inverted, ignoreCase, unicode) {\n        return { type: \"class\", parts, inverted, ignoreCase, unicode };\n      }\n      function peg$anyExpectation() {\n        return { type: \"any\" };\n      }\n      function peg$endExpectation() {\n        return { type: \"end\" };\n      }\n      function peg$otherExpectation(description) {\n        return { type: \"other\", description };\n      }\n      function peg$computePosDetails(pos) {\n        let details = peg$posDetailsCache[pos];\n        let p;\n        if (details) {\n          return details;\n        } else {\n          if (pos >= peg$posDetailsCache.length) {\n            p = peg$posDetailsCache.length - 1;\n          } else {\n            p = pos;\n            while (!peg$posDetailsCache[--p]) {\n            }\n          }\n          details = peg$posDetailsCache[p];\n          details = {\n            line: details.line,\n            column: details.column\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            p++;\n          }\n          peg$posDetailsCache[pos] = details;\n          return details;\n        }\n      }\n      function peg$computeLocation(startPos, endPos, offset2) {\n        const startPosDetails = peg$computePosDetails(startPos);\n        const endPosDetails = peg$computePosDetails(endPos);\n        const res = {\n          source: peg$source,\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        if (offset2 && peg$source && typeof peg$source.offset === \"function\") {\n          res.start = peg$source.offset(res.start);\n          res.end = peg$source.offset(res.end);\n        }\n        return res;\n      }\n      function peg$fail(expected2) {\n        if (peg$currPos < peg$maxFailPos) {\n          return;\n        }\n        if (peg$currPos > peg$maxFailPos) {\n          peg$maxFailPos = peg$currPos;\n          peg$maxFailExpected = [];\n        }\n        peg$maxFailExpected.push(expected2);\n      }\n      function peg$buildSimpleError(message, location2) {\n        return new peg$SyntaxError(message, null, null, location2);\n      }\n      function peg$buildStructuredError(expected2, found, location2) {\n        return new peg$SyntaxError(\n          peg$SyntaxError.buildMessage(expected2, found),\n          expected2,\n          found,\n          location2\n        );\n      }\n      function peg$parsedocument() {\n        let s0, s1, s2;\n        const key = peg$currPos * 53 + 0;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = [];\n        s2 = peg$parsetoken();\n        while (s2 !== peg$FAILED) {\n          s1.push(s2);\n          s2 = peg$parsetoken();\n        }\n        peg$savedPos = s0;\n        s1 = peg$f0(s1);\n        s0 = s1;\n        peg$silentFails--;\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parsemath() {\n        let s0, s1;\n        const key = peg$currPos * 53 + 1;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        peg$silentFails++;\n        s0 = [];\n        s1 = peg$parsemath_token();\n        while (s1 !== peg$FAILED) {\n          s0.push(s1);\n          s1 = peg$parsemath_token();\n        }\n        peg$silentFails--;\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parsetoken() {\n        let s0, s1, s2, s3, s4, s5;\n        const key = peg$currPos * 53 + 2;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        peg$silentFails++;\n        s0 = peg$parsespecial_macro();\n        if (s0 === peg$FAILED) {\n          s0 = peg$parsemacro();\n          if (s0 === peg$FAILED) {\n            s0 = peg$parsefull_comment();\n            if (s0 === peg$FAILED) {\n              s0 = peg$parsegroup();\n              if (s0 === peg$FAILED) {\n                s0 = peg$currPos;\n                s1 = peg$parsemath_shift();\n                if (s1 !== peg$FAILED) {\n                  s2 = [];\n                  s3 = peg$currPos;\n                  s4 = peg$currPos;\n                  peg$silentFails++;\n                  s5 = peg$parsemath_shift();\n                  peg$silentFails--;\n                  if (s5 === peg$FAILED) {\n                    s4 = void 0;\n                  } else {\n                    peg$currPos = s4;\n                    s4 = peg$FAILED;\n                  }\n                  if (s4 !== peg$FAILED) {\n                    s5 = peg$parsemath_token();\n                    if (s5 !== peg$FAILED) {\n                      peg$savedPos = s3;\n                      s3 = peg$f1(s5);\n                    } else {\n                      peg$currPos = s3;\n                      s3 = peg$FAILED;\n                    }\n                  } else {\n                    peg$currPos = s3;\n                    s3 = peg$FAILED;\n                  }\n                  if (s3 !== peg$FAILED) {\n                    while (s3 !== peg$FAILED) {\n                      s2.push(s3);\n                      s3 = peg$currPos;\n                      s4 = peg$currPos;\n                      peg$silentFails++;\n                      s5 = peg$parsemath_shift();\n                      peg$silentFails--;\n                      if (s5 === peg$FAILED) {\n                        s4 = void 0;\n                      } else {\n                        peg$currPos = s4;\n                        s4 = peg$FAILED;\n                      }\n                      if (s4 !== peg$FAILED) {\n                        s5 = peg$parsemath_token();\n                        if (s5 !== peg$FAILED) {\n                          peg$savedPos = s3;\n                          s3 = peg$f1(s5);\n                        } else {\n                          peg$currPos = s3;\n                          s3 = peg$FAILED;\n                        }\n                      } else {\n                        peg$currPos = s3;\n                        s3 = peg$FAILED;\n                      }\n                    }\n                  } else {\n                    s2 = peg$FAILED;\n                  }\n                  if (s2 !== peg$FAILED) {\n                    s3 = peg$parsemath_shift();\n                    if (s3 !== peg$FAILED) {\n                      peg$savedPos = s0;\n                      s0 = peg$f2(s2);\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$parsealignment_tab();\n                  if (s0 === peg$FAILED) {\n                    s0 = peg$parseparbreak();\n                    if (s0 === peg$FAILED) {\n                      s0 = peg$parsemacro_parameter();\n                      if (s0 === peg$FAILED) {\n                        s0 = peg$parseignore();\n                        if (s0 === peg$FAILED) {\n                          s0 = peg$parsenumber();\n                          if (s0 === peg$FAILED) {\n                            s0 = peg$parsewhitespace();\n                            if (s0 === peg$FAILED) {\n                              s0 = peg$parsepunctuation();\n                              if (s0 === peg$FAILED) {\n                                s0 = peg$currPos;\n                                s1 = peg$currPos;\n                                s2 = [];\n                                s3 = peg$currPos;\n                                s4 = peg$currPos;\n                                peg$silentFails++;\n                                s5 = peg$parsenonchar_token();\n                                peg$silentFails--;\n                                if (s5 === peg$FAILED) {\n                                  s4 = void 0;\n                                } else {\n                                  peg$currPos = s4;\n                                  s4 = peg$FAILED;\n                                }\n                                if (s4 !== peg$FAILED) {\n                                  if (input.length > peg$currPos) {\n                                    s5 = input.charAt(peg$currPos);\n                                    peg$currPos++;\n                                  } else {\n                                    s5 = peg$FAILED;\n                                    if (peg$silentFails === 0) {\n                                      peg$fail(peg$e1);\n                                    }\n                                  }\n                                  if (s5 !== peg$FAILED) {\n                                    s4 = [s4, s5];\n                                    s3 = s4;\n                                  } else {\n                                    peg$currPos = s3;\n                                    s3 = peg$FAILED;\n                                  }\n                                } else {\n                                  peg$currPos = s3;\n                                  s3 = peg$FAILED;\n                                }\n                                if (s3 !== peg$FAILED) {\n                                  while (s3 !== peg$FAILED) {\n                                    s2.push(s3);\n                                    s3 = peg$currPos;\n                                    s4 = peg$currPos;\n                                    peg$silentFails++;\n                                    s5 = peg$parsenonchar_token();\n                                    peg$silentFails--;\n                                    if (s5 === peg$FAILED) {\n                                      s4 = void 0;\n                                    } else {\n                                      peg$currPos = s4;\n                                      s4 = peg$FAILED;\n                                    }\n                                    if (s4 !== peg$FAILED) {\n                                      if (input.length > peg$currPos) {\n                                        s5 = input.charAt(peg$currPos);\n                                        peg$currPos++;\n                                      } else {\n                                        s5 = peg$FAILED;\n                                        if (peg$silentFails === 0) {\n                                          peg$fail(peg$e1);\n                                        }\n                                      }\n                                      if (s5 !== peg$FAILED) {\n                                        s4 = [s4, s5];\n                                        s3 = s4;\n                                      } else {\n                                        peg$currPos = s3;\n                                        s3 = peg$FAILED;\n                                      }\n                                    } else {\n                                      peg$currPos = s3;\n                                      s3 = peg$FAILED;\n                                    }\n                                  }\n                                } else {\n                                  s2 = peg$FAILED;\n                                }\n                                if (s2 !== peg$FAILED) {\n                                  s1 = input.substring(s1, peg$currPos);\n                                } else {\n                                  s1 = s2;\n                                }\n                                if (s1 !== peg$FAILED) {\n                                  peg$savedPos = s0;\n                                  s1 = peg$f3(s1);\n                                }\n                                s0 = s1;\n                                if (s0 === peg$FAILED) {\n                                  s0 = peg$parsebegin_group();\n                                  if (s0 === peg$FAILED) {\n                                    s0 = peg$parseend_group();\n                                    if (s0 === peg$FAILED) {\n                                      s0 = peg$parsemath_shift();\n                                      if (s0 === peg$FAILED) {\n                                        s0 = peg$currPos;\n                                        if (input.length > peg$currPos) {\n                                          s1 = input.charAt(peg$currPos);\n                                          peg$currPos++;\n                                        } else {\n                                          s1 = peg$FAILED;\n                                          if (peg$silentFails === 0) {\n                                            peg$fail(peg$e1);\n                                          }\n                                        }\n                                        if (s1 !== peg$FAILED) {\n                                          peg$savedPos = s0;\n                                          s1 = peg$f4(s1);\n                                        }\n                                        s0 = s1;\n                                      }\n                                    }\n                                  }\n                                }\n                              }\n                            }\n                          }\n                        }\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parseparbreak() {\n        let s0, s1, s2, s3, s4, s5, s6, s7;\n        const key = peg$currPos * 53 + 3;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = peg$currPos;\n        s2 = [];\n        s3 = peg$parsesp();\n        while (s3 !== peg$FAILED) {\n          s2.push(s3);\n          s3 = peg$parsesp();\n        }\n        s3 = peg$parsenl();\n        if (s3 !== peg$FAILED) {\n          s4 = [];\n          s5 = peg$currPos;\n          s6 = [];\n          s7 = peg$parsesp();\n          while (s7 !== peg$FAILED) {\n            s6.push(s7);\n            s7 = peg$parsesp();\n          }\n          s7 = peg$parsenl();\n          if (s7 !== peg$FAILED) {\n            s6 = [s6, s7];\n            s5 = s6;\n          } else {\n            peg$currPos = s5;\n            s5 = peg$FAILED;\n          }\n          if (s5 !== peg$FAILED) {\n            while (s5 !== peg$FAILED) {\n              s4.push(s5);\n              s5 = peg$currPos;\n              s6 = [];\n              s7 = peg$parsesp();\n              while (s7 !== peg$FAILED) {\n                s6.push(s7);\n                s7 = peg$parsesp();\n              }\n              s7 = peg$parsenl();\n              if (s7 !== peg$FAILED) {\n                s6 = [s6, s7];\n                s5 = s6;\n              } else {\n                peg$currPos = s5;\n                s5 = peg$FAILED;\n              }\n            }\n          } else {\n            s4 = peg$FAILED;\n          }\n          if (s4 !== peg$FAILED) {\n            s5 = [];\n            s6 = peg$parsesp();\n            while (s6 !== peg$FAILED) {\n              s5.push(s6);\n              s6 = peg$parsesp();\n            }\n            s6 = peg$currPos;\n            peg$silentFails++;\n            s7 = peg$parsecomment_start();\n            peg$silentFails--;\n            if (s7 === peg$FAILED) {\n              s6 = void 0;\n            } else {\n              peg$currPos = s6;\n              s6 = peg$FAILED;\n            }\n            if (s6 !== peg$FAILED) {\n              s2 = [s2, s3, s4, s5, s6];\n              s1 = s2;\n            } else {\n              peg$currPos = s1;\n              s1 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s1;\n            s1 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n        if (s1 === peg$FAILED) {\n          s1 = peg$currPos;\n          s2 = [];\n          s3 = peg$parsesp();\n          while (s3 !== peg$FAILED) {\n            s2.push(s3);\n            s3 = peg$parsesp();\n          }\n          s3 = peg$parsenl();\n          if (s3 !== peg$FAILED) {\n            s4 = [];\n            s5 = peg$currPos;\n            s6 = [];\n            s7 = peg$parsesp();\n            while (s7 !== peg$FAILED) {\n              s6.push(s7);\n              s7 = peg$parsesp();\n            }\n            s7 = peg$parsenl();\n            if (s7 !== peg$FAILED) {\n              s6 = [s6, s7];\n              s5 = s6;\n            } else {\n              peg$currPos = s5;\n              s5 = peg$FAILED;\n            }\n            if (s5 !== peg$FAILED) {\n              while (s5 !== peg$FAILED) {\n                s4.push(s5);\n                s5 = peg$currPos;\n                s6 = [];\n                s7 = peg$parsesp();\n                while (s7 !== peg$FAILED) {\n                  s6.push(s7);\n                  s7 = peg$parsesp();\n                }\n                s7 = peg$parsenl();\n                if (s7 !== peg$FAILED) {\n                  s6 = [s6, s7];\n                  s5 = s6;\n                } else {\n                  peg$currPos = s5;\n                  s5 = peg$FAILED;\n                }\n              }\n            } else {\n              s4 = peg$FAILED;\n            }\n            if (s4 !== peg$FAILED) {\n              s2 = [s2, s3, s4];\n              s1 = s2;\n            } else {\n              peg$currPos = s1;\n              s1 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s1;\n            s1 = peg$FAILED;\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$f5();\n        }\n        s0 = s1;\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e2);\n          }\n        }\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parsemath_token() {\n        let s0, s1, s2, s3, s4;\n        const key = peg$currPos * 53 + 4;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        peg$silentFails++;\n        s0 = peg$parsespecial_macro();\n        if (s0 === peg$FAILED) {\n          s0 = peg$parsemacro();\n          if (s0 === peg$FAILED) {\n            s0 = peg$parsefull_comment();\n            if (s0 === peg$FAILED) {\n              s0 = peg$currPos;\n              s1 = [];\n              s2 = peg$parsewhitespace();\n              while (s2 !== peg$FAILED) {\n                s1.push(s2);\n                s2 = peg$parsewhitespace();\n              }\n              s2 = peg$parsegroup();\n              if (s2 !== peg$FAILED) {\n                s3 = [];\n                s4 = peg$parsewhitespace();\n                while (s4 !== peg$FAILED) {\n                  s3.push(s4);\n                  s4 = peg$parsewhitespace();\n                }\n                peg$savedPos = s0;\n                s0 = peg$f6(s2);\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n              if (s0 === peg$FAILED) {\n                s0 = peg$currPos;\n                s1 = [];\n                s2 = peg$parsewhitespace();\n                while (s2 !== peg$FAILED) {\n                  s1.push(s2);\n                  s2 = peg$parsewhitespace();\n                }\n                s2 = peg$parsealignment_tab();\n                if (s2 !== peg$FAILED) {\n                  s3 = [];\n                  s4 = peg$parsewhitespace();\n                  while (s4 !== peg$FAILED) {\n                    s3.push(s4);\n                    s4 = peg$parsewhitespace();\n                  }\n                  peg$savedPos = s0;\n                  s0 = peg$f7(s2);\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n                if (s0 === peg$FAILED) {\n                  s0 = peg$parsemacro_parameter();\n                  if (s0 === peg$FAILED) {\n                    s0 = peg$currPos;\n                    s1 = [];\n                    s2 = peg$parsewhitespace();\n                    while (s2 !== peg$FAILED) {\n                      s1.push(s2);\n                      s2 = peg$parsewhitespace();\n                    }\n                    s2 = peg$parsesuperscript();\n                    if (s2 !== peg$FAILED) {\n                      s3 = [];\n                      s4 = peg$parsewhitespace();\n                      while (s4 !== peg$FAILED) {\n                        s3.push(s4);\n                        s4 = peg$parsewhitespace();\n                      }\n                      peg$savedPos = s0;\n                      s0 = peg$f8();\n                    } else {\n                      peg$currPos = s0;\n                      s0 = peg$FAILED;\n                    }\n                    if (s0 === peg$FAILED) {\n                      s0 = peg$currPos;\n                      s1 = [];\n                      s2 = peg$parsewhitespace();\n                      while (s2 !== peg$FAILED) {\n                        s1.push(s2);\n                        s2 = peg$parsewhitespace();\n                      }\n                      s2 = peg$parsesubscript();\n                      if (s2 !== peg$FAILED) {\n                        s3 = [];\n                        s4 = peg$parsewhitespace();\n                        while (s4 !== peg$FAILED) {\n                          s3.push(s4);\n                          s4 = peg$parsewhitespace();\n                        }\n                        peg$savedPos = s0;\n                        s0 = peg$f9();\n                      } else {\n                        peg$currPos = s0;\n                        s0 = peg$FAILED;\n                      }\n                      if (s0 === peg$FAILED) {\n                        s0 = peg$parseignore();\n                        if (s0 === peg$FAILED) {\n                          s0 = peg$parsewhitespace();\n                          if (s0 === peg$FAILED) {\n                            s0 = peg$currPos;\n                            if (input.length > peg$currPos) {\n                              s1 = input.charAt(peg$currPos);\n                              peg$currPos++;\n                            } else {\n                              s1 = peg$FAILED;\n                              if (peg$silentFails === 0) {\n                                peg$fail(peg$e1);\n                              }\n                            }\n                            if (s1 !== peg$FAILED) {\n                              peg$savedPos = s0;\n                              s1 = peg$f10(s1);\n                            }\n                            s0 = s1;\n                          }\n                        }\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e3);\n          }\n        }\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parsenonchar_token() {\n        let s0, s1;\n        const key = peg$currPos * 53 + 5;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        peg$silentFails++;\n        s0 = peg$parseescape();\n        if (s0 === peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 37) {\n            s0 = peg$c0;\n            peg$currPos++;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e5);\n            }\n          }\n          if (s0 === peg$FAILED) {\n            s0 = peg$parsebegin_group();\n            if (s0 === peg$FAILED) {\n              s0 = peg$parseend_group();\n              if (s0 === peg$FAILED) {\n                s0 = peg$parsemath_shift();\n                if (s0 === peg$FAILED) {\n                  s0 = peg$parsealignment_tab();\n                  if (s0 === peg$FAILED) {\n                    s0 = peg$parsenl();\n                    if (s0 === peg$FAILED) {\n                      s0 = peg$parsemacro_parameter();\n                      if (s0 === peg$FAILED) {\n                        s0 = peg$parseignore();\n                        if (s0 === peg$FAILED) {\n                          s0 = peg$parsesp();\n                          if (s0 === peg$FAILED) {\n                            s0 = peg$parsepunctuation();\n                            if (s0 === peg$FAILED) {\n                              s0 = peg$parseEOF();\n                            }\n                          }\n                        }\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e4);\n          }\n        }\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parsewhitespace() {\n        let s0, s1, s2, s3, s4, s5, s6, s7;\n        const key = peg$currPos * 53 + 6;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = peg$currPos;\n        s2 = peg$parsenl();\n        if (s2 !== peg$FAILED) {\n          s3 = [];\n          s4 = peg$parsesp();\n          while (s4 !== peg$FAILED) {\n            s3.push(s4);\n            s4 = peg$parsesp();\n          }\n          s2 = [s2, s3];\n          s1 = s2;\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n        if (s1 === peg$FAILED) {\n          s1 = peg$currPos;\n          s2 = [];\n          s3 = peg$parsesp();\n          if (s3 !== peg$FAILED) {\n            while (s3 !== peg$FAILED) {\n              s2.push(s3);\n              s3 = peg$parsesp();\n            }\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            s3 = peg$parsenl();\n            if (s3 !== peg$FAILED) {\n              s4 = peg$currPos;\n              peg$silentFails++;\n              s5 = peg$parsecomment_start();\n              peg$silentFails--;\n              if (s5 === peg$FAILED) {\n                s4 = void 0;\n              } else {\n                peg$currPos = s4;\n                s4 = peg$FAILED;\n              }\n              if (s4 !== peg$FAILED) {\n                s5 = [];\n                s6 = peg$parsesp();\n                while (s6 !== peg$FAILED) {\n                  s5.push(s6);\n                  s6 = peg$parsesp();\n                }\n                s6 = peg$currPos;\n                peg$silentFails++;\n                s7 = peg$parsenl();\n                peg$silentFails--;\n                if (s7 === peg$FAILED) {\n                  s6 = void 0;\n                } else {\n                  peg$currPos = s6;\n                  s6 = peg$FAILED;\n                }\n                if (s6 !== peg$FAILED) {\n                  s2 = [s2, s3, s4, s5, s6];\n                  s1 = s2;\n                } else {\n                  peg$currPos = s1;\n                  s1 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s1;\n                s1 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s1;\n              s1 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s1;\n            s1 = peg$FAILED;\n          }\n          if (s1 === peg$FAILED) {\n            s1 = [];\n            s2 = peg$parsesp();\n            if (s2 !== peg$FAILED) {\n              while (s2 !== peg$FAILED) {\n                s1.push(s2);\n                s2 = peg$parsesp();\n              }\n            } else {\n              s1 = peg$FAILED;\n            }\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$f11();\n        }\n        s0 = s1;\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e6);\n          }\n        }\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parsenumber() {\n        let s0, s1, s2, s3, s4, s5;\n        const key = peg$currPos * 53 + 7;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = peg$currPos;\n        s2 = [];\n        s3 = peg$parsenum();\n        if (s3 !== peg$FAILED) {\n          while (s3 !== peg$FAILED) {\n            s2.push(s3);\n            s3 = peg$parsenum();\n          }\n        } else {\n          s2 = peg$FAILED;\n        }\n        if (s2 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 46) {\n            s3 = peg$c1;\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e8);\n            }\n          }\n          if (s3 !== peg$FAILED) {\n            s4 = [];\n            s5 = peg$parsenum();\n            if (s5 !== peg$FAILED) {\n              while (s5 !== peg$FAILED) {\n                s4.push(s5);\n                s5 = peg$parsenum();\n              }\n            } else {\n              s4 = peg$FAILED;\n            }\n            if (s4 !== peg$FAILED) {\n              peg$savedPos = s1;\n              s1 = peg$f12(s2, s4);\n            } else {\n              peg$currPos = s1;\n              s1 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s1;\n            s1 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n        if (s1 === peg$FAILED) {\n          s1 = peg$currPos;\n          if (input.charCodeAt(peg$currPos) === 46) {\n            s2 = peg$c1;\n            peg$currPos++;\n          } else {\n            s2 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e8);\n            }\n          }\n          if (s2 !== peg$FAILED) {\n            s3 = [];\n            s4 = peg$parsenum();\n            if (s4 !== peg$FAILED) {\n              while (s4 !== peg$FAILED) {\n                s3.push(s4);\n                s4 = peg$parsenum();\n              }\n            } else {\n              s3 = peg$FAILED;\n            }\n            if (s3 !== peg$FAILED) {\n              peg$savedPos = s1;\n              s1 = peg$f13(s3);\n            } else {\n              peg$currPos = s1;\n              s1 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s1;\n            s1 = peg$FAILED;\n          }\n          if (s1 === peg$FAILED) {\n            s1 = peg$currPos;\n            s2 = [];\n            s3 = peg$parsenum();\n            if (s3 !== peg$FAILED) {\n              while (s3 !== peg$FAILED) {\n                s2.push(s3);\n                s3 = peg$parsenum();\n              }\n            } else {\n              s2 = peg$FAILED;\n            }\n            if (s2 !== peg$FAILED) {\n              if (input.charCodeAt(peg$currPos) === 46) {\n                s3 = peg$c1;\n                peg$currPos++;\n              } else {\n                s3 = peg$FAILED;\n                if (peg$silentFails === 0) {\n                  peg$fail(peg$e8);\n                }\n              }\n              if (s3 !== peg$FAILED) {\n                peg$savedPos = s1;\n                s1 = peg$f14(s2);\n              } else {\n                peg$currPos = s1;\n                s1 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s1;\n              s1 = peg$FAILED;\n            }\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$f15(s1);\n        }\n        s0 = s1;\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e7);\n          }\n        }\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parsespecial_macro() {\n        let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;\n        const key = peg$currPos * 53 + 8;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = peg$parseescape();\n        if (s1 !== peg$FAILED) {\n          if (input.substr(peg$currPos, 5) === peg$c2) {\n            s2 = peg$c2;\n            peg$currPos += 5;\n          } else {\n            s2 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e10);\n            }\n          }\n          if (s2 === peg$FAILED) {\n            if (input.substr(peg$currPos, 4) === peg$c3) {\n              s2 = peg$c3;\n              peg$currPos += 4;\n            } else {\n              s2 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e11);\n              }\n            }\n          }\n          if (s2 !== peg$FAILED) {\n            if (input.length > peg$currPos) {\n              s3 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s3 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e1);\n              }\n            }\n            if (s3 !== peg$FAILED) {\n              s4 = [];\n              s5 = peg$currPos;\n              s6 = peg$currPos;\n              peg$silentFails++;\n              s7 = peg$currPos;\n              if (input.length > peg$currPos) {\n                s8 = input.charAt(peg$currPos);\n                peg$currPos++;\n              } else {\n                s8 = peg$FAILED;\n                if (peg$silentFails === 0) {\n                  peg$fail(peg$e1);\n                }\n              }\n              if (s8 !== peg$FAILED) {\n                peg$savedPos = peg$currPos;\n                s9 = peg$f16(s2, s3, s8);\n                if (s9) {\n                  s9 = void 0;\n                } else {\n                  s9 = peg$FAILED;\n                }\n                if (s9 !== peg$FAILED) {\n                  s8 = [s8, s9];\n                  s7 = s8;\n                } else {\n                  peg$currPos = s7;\n                  s7 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s7;\n                s7 = peg$FAILED;\n              }\n              peg$silentFails--;\n              if (s7 === peg$FAILED) {\n                s6 = void 0;\n              } else {\n                peg$currPos = s6;\n                s6 = peg$FAILED;\n              }\n              if (s6 !== peg$FAILED) {\n                if (input.length > peg$currPos) {\n                  s7 = input.charAt(peg$currPos);\n                  peg$currPos++;\n                } else {\n                  s7 = peg$FAILED;\n                  if (peg$silentFails === 0) {\n                    peg$fail(peg$e1);\n                  }\n                }\n                if (s7 !== peg$FAILED) {\n                  peg$savedPos = s5;\n                  s5 = peg$f17(s2, s3, s7);\n                } else {\n                  peg$currPos = s5;\n                  s5 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s5;\n                s5 = peg$FAILED;\n              }\n              while (s5 !== peg$FAILED) {\n                s4.push(s5);\n                s5 = peg$currPos;\n                s6 = peg$currPos;\n                peg$silentFails++;\n                s7 = peg$currPos;\n                if (input.length > peg$currPos) {\n                  s8 = input.charAt(peg$currPos);\n                  peg$currPos++;\n                } else {\n                  s8 = peg$FAILED;\n                  if (peg$silentFails === 0) {\n                    peg$fail(peg$e1);\n                  }\n                }\n                if (s8 !== peg$FAILED) {\n                  peg$savedPos = peg$currPos;\n                  s9 = peg$f16(s2, s3, s8);\n                  if (s9) {\n                    s9 = void 0;\n                  } else {\n                    s9 = peg$FAILED;\n                  }\n                  if (s9 !== peg$FAILED) {\n                    s8 = [s8, s9];\n                    s7 = s8;\n                  } else {\n                    peg$currPos = s7;\n                    s7 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s7;\n                  s7 = peg$FAILED;\n                }\n                peg$silentFails--;\n                if (s7 === peg$FAILED) {\n                  s6 = void 0;\n                } else {\n                  peg$currPos = s6;\n                  s6 = peg$FAILED;\n                }\n                if (s6 !== peg$FAILED) {\n                  if (input.length > peg$currPos) {\n                    s7 = input.charAt(peg$currPos);\n                    peg$currPos++;\n                  } else {\n                    s7 = peg$FAILED;\n                    if (peg$silentFails === 0) {\n                      peg$fail(peg$e1);\n                    }\n                  }\n                  if (s7 !== peg$FAILED) {\n                    peg$savedPos = s5;\n                    s5 = peg$f17(s2, s3, s7);\n                  } else {\n                    peg$currPos = s5;\n                    s5 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s5;\n                  s5 = peg$FAILED;\n                }\n              }\n              s5 = peg$currPos;\n              if (input.length > peg$currPos) {\n                s6 = input.charAt(peg$currPos);\n                peg$currPos++;\n              } else {\n                s6 = peg$FAILED;\n                if (peg$silentFails === 0) {\n                  peg$fail(peg$e1);\n                }\n              }\n              if (s6 !== peg$FAILED) {\n                peg$savedPos = peg$currPos;\n                s7 = peg$f18(s2, s3, s4, s6);\n                if (s7) {\n                  s7 = void 0;\n                } else {\n                  s7 = peg$FAILED;\n                }\n                if (s7 !== peg$FAILED) {\n                  s6 = [s6, s7];\n                  s5 = s6;\n                } else {\n                  peg$currPos = s5;\n                  s5 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s5;\n                s5 = peg$FAILED;\n              }\n              if (s5 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s0 = peg$f19(s2, s3, s4);\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$parseverbatim_listings();\n          if (s0 === peg$FAILED) {\n            s0 = peg$parseverbatim_minted();\n            if (s0 === peg$FAILED) {\n              s0 = peg$parseverbatim_minted_environment();\n              if (s0 === peg$FAILED) {\n                s0 = peg$parseverbatim_environment_with_optional_arg();\n                if (s0 === peg$FAILED) {\n                  s0 = peg$parseverbatim_environment();\n                  if (s0 === peg$FAILED) {\n                    s0 = peg$currPos;\n                    s1 = peg$parsebegin_display_math();\n                    if (s1 !== peg$FAILED) {\n                      s2 = [];\n                      s3 = peg$currPos;\n                      s4 = peg$currPos;\n                      peg$silentFails++;\n                      s5 = peg$parseend_display_math();\n                      peg$silentFails--;\n                      if (s5 === peg$FAILED) {\n                        s4 = void 0;\n                      } else {\n                        peg$currPos = s4;\n                        s4 = peg$FAILED;\n                      }\n                      if (s4 !== peg$FAILED) {\n                        s5 = peg$parsemath_token();\n                        if (s5 !== peg$FAILED) {\n                          peg$savedPos = s3;\n                          s3 = peg$f20(s5);\n                        } else {\n                          peg$currPos = s3;\n                          s3 = peg$FAILED;\n                        }\n                      } else {\n                        peg$currPos = s3;\n                        s3 = peg$FAILED;\n                      }\n                      while (s3 !== peg$FAILED) {\n                        s2.push(s3);\n                        s3 = peg$currPos;\n                        s4 = peg$currPos;\n                        peg$silentFails++;\n                        s5 = peg$parseend_display_math();\n                        peg$silentFails--;\n                        if (s5 === peg$FAILED) {\n                          s4 = void 0;\n                        } else {\n                          peg$currPos = s4;\n                          s4 = peg$FAILED;\n                        }\n                        if (s4 !== peg$FAILED) {\n                          s5 = peg$parsemath_token();\n                          if (s5 !== peg$FAILED) {\n                            peg$savedPos = s3;\n                            s3 = peg$f20(s5);\n                          } else {\n                            peg$currPos = s3;\n                            s3 = peg$FAILED;\n                          }\n                        } else {\n                          peg$currPos = s3;\n                          s3 = peg$FAILED;\n                        }\n                      }\n                      s3 = peg$parseend_display_math();\n                      if (s3 !== peg$FAILED) {\n                        peg$savedPos = s0;\n                        s0 = peg$f21(s2);\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$parsebegin_inline_math();\n                      if (s1 !== peg$FAILED) {\n                        s2 = [];\n                        s3 = peg$currPos;\n                        s4 = peg$currPos;\n                        peg$silentFails++;\n                        s5 = peg$parseend_inline_math();\n                        peg$silentFails--;\n                        if (s5 === peg$FAILED) {\n                          s4 = void 0;\n                        } else {\n                          peg$currPos = s4;\n                          s4 = peg$FAILED;\n                        }\n                        if (s4 !== peg$FAILED) {\n                          s5 = peg$parsemath_token();\n                          if (s5 !== peg$FAILED) {\n                            peg$savedPos = s3;\n                            s3 = peg$f22(s5);\n                          } else {\n                            peg$currPos = s3;\n                            s3 = peg$FAILED;\n                          }\n                        } else {\n                          peg$currPos = s3;\n                          s3 = peg$FAILED;\n                        }\n                        while (s3 !== peg$FAILED) {\n                          s2.push(s3);\n                          s3 = peg$currPos;\n                          s4 = peg$currPos;\n                          peg$silentFails++;\n                          s5 = peg$parseend_inline_math();\n                          peg$silentFails--;\n                          if (s5 === peg$FAILED) {\n                            s4 = void 0;\n                          } else {\n                            peg$currPos = s4;\n                            s4 = peg$FAILED;\n                          }\n                          if (s4 !== peg$FAILED) {\n                            s5 = peg$parsemath_token();\n                            if (s5 !== peg$FAILED) {\n                              peg$savedPos = s3;\n                              s3 = peg$f22(s5);\n                            } else {\n                              peg$currPos = s3;\n                              s3 = peg$FAILED;\n                            }\n                          } else {\n                            peg$currPos = s3;\n                            s3 = peg$FAILED;\n                          }\n                        }\n                        s3 = peg$parseend_inline_math();\n                        if (s3 !== peg$FAILED) {\n                          peg$savedPos = s0;\n                          s0 = peg$f23(s2);\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$parsemath_shift();\n                        if (s1 !== peg$FAILED) {\n                          s2 = peg$parsemath_shift();\n                          if (s2 !== peg$FAILED) {\n                            s3 = [];\n                            s4 = peg$currPos;\n                            s5 = peg$currPos;\n                            peg$silentFails++;\n                            s6 = peg$currPos;\n                            s7 = peg$parsemath_shift();\n                            if (s7 !== peg$FAILED) {\n                              s8 = peg$parsemath_shift();\n                              if (s8 !== peg$FAILED) {\n                                s7 = [s7, s8];\n                                s6 = s7;\n                              } else {\n                                peg$currPos = s6;\n                                s6 = peg$FAILED;\n                              }\n                            } else {\n                              peg$currPos = s6;\n                              s6 = peg$FAILED;\n                            }\n                            peg$silentFails--;\n                            if (s6 === peg$FAILED) {\n                              s5 = void 0;\n                            } else {\n                              peg$currPos = s5;\n                              s5 = peg$FAILED;\n                            }\n                            if (s5 !== peg$FAILED) {\n                              s6 = peg$parsemath_token();\n                              if (s6 !== peg$FAILED) {\n                                peg$savedPos = s4;\n                                s4 = peg$f24(s6);\n                              } else {\n                                peg$currPos = s4;\n                                s4 = peg$FAILED;\n                              }\n                            } else {\n                              peg$currPos = s4;\n                              s4 = peg$FAILED;\n                            }\n                            while (s4 !== peg$FAILED) {\n                              s3.push(s4);\n                              s4 = peg$currPos;\n                              s5 = peg$currPos;\n                              peg$silentFails++;\n                              s6 = peg$currPos;\n                              s7 = peg$parsemath_shift();\n                              if (s7 !== peg$FAILED) {\n                                s8 = peg$parsemath_shift();\n                                if (s8 !== peg$FAILED) {\n                                  s7 = [s7, s8];\n                                  s6 = s7;\n                                } else {\n                                  peg$currPos = s6;\n                                  s6 = peg$FAILED;\n                                }\n                              } else {\n                                peg$currPos = s6;\n                                s6 = peg$FAILED;\n                              }\n                              peg$silentFails--;\n                              if (s6 === peg$FAILED) {\n                                s5 = void 0;\n                              } else {\n                                peg$currPos = s5;\n                                s5 = peg$FAILED;\n                              }\n                              if (s5 !== peg$FAILED) {\n                                s6 = peg$parsemath_token();\n                                if (s6 !== peg$FAILED) {\n                                  peg$savedPos = s4;\n                                  s4 = peg$f24(s6);\n                                } else {\n                                  peg$currPos = s4;\n                                  s4 = peg$FAILED;\n                                }\n                              } else {\n                                peg$currPos = s4;\n                                s4 = peg$FAILED;\n                              }\n                            }\n                            s4 = peg$parsemath_shift();\n                            if (s4 !== peg$FAILED) {\n                              s5 = peg$parsemath_shift();\n                              if (s5 !== peg$FAILED) {\n                                peg$savedPos = s0;\n                                s0 = peg$f25(s3);\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$parsemath_environment();\n                          if (s0 === peg$FAILED) {\n                            s0 = peg$parseenvironment();\n                          }\n                        }\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e9);\n          }\n        }\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parsesquare_bracket_argument() {\n        let s0, s1, s2, s3, s4, s5, s6, s7;\n        const key = peg$currPos * 53 + 9;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 91) {\n          s1 = peg$c4;\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e12);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          s2 = [];\n          s3 = peg$currPos;\n          s4 = peg$currPos;\n          peg$silentFails++;\n          s5 = peg$currPos;\n          s6 = peg$parsetoken();\n          if (s6 !== peg$FAILED) {\n            peg$savedPos = peg$currPos;\n            s7 = peg$f26(s6);\n            if (s7) {\n              s7 = void 0;\n            } else {\n              s7 = peg$FAILED;\n            }\n            if (s7 !== peg$FAILED) {\n              s6 = [s6, s7];\n              s5 = s6;\n            } else {\n              peg$currPos = s5;\n              s5 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s5;\n            s5 = peg$FAILED;\n          }\n          peg$silentFails--;\n          if (s5 === peg$FAILED) {\n            s4 = void 0;\n          } else {\n            peg$currPos = s4;\n            s4 = peg$FAILED;\n          }\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parsetoken();\n            if (s5 !== peg$FAILED) {\n              peg$savedPos = s3;\n              s3 = peg$f27(s5);\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n          while (s3 !== peg$FAILED) {\n            s2.push(s3);\n            s3 = peg$currPos;\n            s4 = peg$currPos;\n            peg$silentFails++;\n            s5 = peg$currPos;\n            s6 = peg$parsetoken();\n            if (s6 !== peg$FAILED) {\n              peg$savedPos = peg$currPos;\n              s7 = peg$f26(s6);\n              if (s7) {\n                s7 = void 0;\n              } else {\n                s7 = peg$FAILED;\n              }\n              if (s7 !== peg$FAILED) {\n                s6 = [s6, s7];\n                s5 = s6;\n              } else {\n                peg$currPos = s5;\n                s5 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s5;\n              s5 = peg$FAILED;\n            }\n            peg$silentFails--;\n            if (s5 === peg$FAILED) {\n              s4 = void 0;\n            } else {\n              peg$currPos = s4;\n              s4 = peg$FAILED;\n            }\n            if (s4 !== peg$FAILED) {\n              s5 = peg$parsetoken();\n              if (s5 !== peg$FAILED) {\n                peg$savedPos = s3;\n                s3 = peg$f27(s5);\n              } else {\n                peg$currPos = s3;\n                s3 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          }\n          if (input.charCodeAt(peg$currPos) === 93) {\n            s3 = peg$c5;\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e13);\n            }\n          }\n          if (s3 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f28(s2);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parseverbatim_group() {\n        let s0, s1, s2, s3, s4, s5;\n        const key = peg$currPos * 53 + 10;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        s0 = peg$currPos;\n        s1 = peg$parsebegin_group();\n        if (s1 !== peg$FAILED) {\n          s2 = [];\n          s3 = peg$currPos;\n          s4 = peg$currPos;\n          peg$silentFails++;\n          s5 = peg$parseend_group();\n          peg$silentFails--;\n          if (s5 === peg$FAILED) {\n            s4 = void 0;\n          } else {\n            peg$currPos = s4;\n            s4 = peg$FAILED;\n          }\n          if (s4 !== peg$FAILED) {\n            if (input.length > peg$currPos) {\n              s5 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s5 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e1);\n              }\n            }\n            if (s5 !== peg$FAILED) {\n              peg$savedPos = s3;\n              s3 = peg$f29(s5);\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n          while (s3 !== peg$FAILED) {\n            s2.push(s3);\n            s3 = peg$currPos;\n            s4 = peg$currPos;\n            peg$silentFails++;\n            s5 = peg$parseend_group();\n            peg$silentFails--;\n            if (s5 === peg$FAILED) {\n              s4 = void 0;\n            } else {\n              peg$currPos = s4;\n              s4 = peg$FAILED;\n            }\n            if (s4 !== peg$FAILED) {\n              if (input.length > peg$currPos) {\n                s5 = input.charAt(peg$currPos);\n                peg$currPos++;\n              } else {\n                s5 = peg$FAILED;\n                if (peg$silentFails === 0) {\n                  peg$fail(peg$e1);\n                }\n              }\n              if (s5 !== peg$FAILED) {\n                peg$savedPos = s3;\n                s3 = peg$f29(s5);\n              } else {\n                peg$currPos = s3;\n                s3 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          }\n          s3 = peg$parseend_group();\n          if (s3 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f30(s2);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parseverbatim_delimited_by_char() {\n        let s0, s1, s2, s3, s4, s5, s6, s7;\n        const key = peg$currPos * 53 + 11;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        s0 = peg$currPos;\n        s1 = input.charAt(peg$currPos);\n        if (peg$r0.test(s1)) {\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e14);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          s2 = [];\n          s3 = peg$currPos;\n          s4 = peg$currPos;\n          peg$silentFails++;\n          s5 = peg$currPos;\n          if (input.length > peg$currPos) {\n            s6 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s6 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e1);\n            }\n          }\n          if (s6 !== peg$FAILED) {\n            peg$savedPos = peg$currPos;\n            s7 = peg$f31(s1, s6);\n            if (s7) {\n              s7 = void 0;\n            } else {\n              s7 = peg$FAILED;\n            }\n            if (s7 !== peg$FAILED) {\n              s6 = [s6, s7];\n              s5 = s6;\n            } else {\n              peg$currPos = s5;\n              s5 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s5;\n            s5 = peg$FAILED;\n          }\n          peg$silentFails--;\n          if (s5 === peg$FAILED) {\n            s4 = void 0;\n          } else {\n            peg$currPos = s4;\n            s4 = peg$FAILED;\n          }\n          if (s4 !== peg$FAILED) {\n            if (input.length > peg$currPos) {\n              s5 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s5 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e1);\n              }\n            }\n            if (s5 !== peg$FAILED) {\n              peg$savedPos = s3;\n              s3 = peg$f32(s1, s5);\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n          while (s3 !== peg$FAILED) {\n            s2.push(s3);\n            s3 = peg$currPos;\n            s4 = peg$currPos;\n            peg$silentFails++;\n            s5 = peg$currPos;\n            if (input.length > peg$currPos) {\n              s6 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s6 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e1);\n              }\n            }\n            if (s6 !== peg$FAILED) {\n              peg$savedPos = peg$currPos;\n              s7 = peg$f31(s1, s6);\n              if (s7) {\n                s7 = void 0;\n              } else {\n                s7 = peg$FAILED;\n              }\n              if (s7 !== peg$FAILED) {\n                s6 = [s6, s7];\n                s5 = s6;\n              } else {\n                peg$currPos = s5;\n                s5 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s5;\n              s5 = peg$FAILED;\n            }\n            peg$silentFails--;\n            if (s5 === peg$FAILED) {\n              s4 = void 0;\n            } else {\n              peg$currPos = s4;\n              s4 = peg$FAILED;\n            }\n            if (s4 !== peg$FAILED) {\n              if (input.length > peg$currPos) {\n                s5 = input.charAt(peg$currPos);\n                peg$currPos++;\n              } else {\n                s5 = peg$FAILED;\n                if (peg$silentFails === 0) {\n                  peg$fail(peg$e1);\n                }\n              }\n              if (s5 !== peg$FAILED) {\n                peg$savedPos = s3;\n                s3 = peg$f32(s1, s5);\n              } else {\n                peg$currPos = s3;\n                s3 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          }\n          s3 = peg$currPos;\n          if (input.length > peg$currPos) {\n            s4 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s4 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e1);\n            }\n          }\n          if (s4 !== peg$FAILED) {\n            peg$savedPos = peg$currPos;\n            s5 = peg$f33(s1, s2, s4);\n            if (s5) {\n              s5 = void 0;\n            } else {\n              s5 = peg$FAILED;\n            }\n            if (s5 !== peg$FAILED) {\n              s4 = [s4, s5];\n              s3 = s4;\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n          if (s3 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f34(s1, s2);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parseverbatim_listings() {\n        let s0, s1, s2, s3, s4;\n        const key = peg$currPos * 53 + 12;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = peg$parseescape();\n        if (s1 !== peg$FAILED) {\n          if (input.substr(peg$currPos, 9) === peg$c6) {\n            s2 = peg$c6;\n            peg$currPos += 9;\n          } else {\n            s2 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e16);\n            }\n          }\n          if (s2 !== peg$FAILED) {\n            s3 = peg$parsesquare_bracket_argument();\n            if (s3 === peg$FAILED) {\n              s3 = null;\n            }\n            s4 = peg$parseverbatim_group();\n            if (s4 === peg$FAILED) {\n              s4 = peg$parseverbatim_delimited_by_char();\n            }\n            if (s4 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s0 = peg$f35(s2, s3, s4);\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        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e15);\n          }\n        }\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parseverbatim_minted() {\n        let s0, s1, s2, s3, s4, s5;\n        const key = peg$currPos * 53 + 13;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = peg$parseescape();\n        if (s1 !== peg$FAILED) {\n          if (input.substr(peg$currPos, 10) === peg$c7) {\n            s2 = peg$c7;\n            peg$currPos += 10;\n          } else {\n            s2 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e18);\n            }\n          }\n          if (s2 === peg$FAILED) {\n            if (input.substr(peg$currPos, 4) === peg$c8) {\n              s2 = peg$c8;\n              peg$currPos += 4;\n            } else {\n              s2 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e19);\n              }\n            }\n          }\n          if (s2 !== peg$FAILED) {\n            s3 = peg$parsesquare_bracket_argument();\n            if (s3 === peg$FAILED) {\n              s3 = null;\n            }\n            s4 = peg$parsegroup();\n            if (s4 !== peg$FAILED) {\n              s5 = peg$parseverbatim_group();\n              if (s5 === peg$FAILED) {\n                s5 = peg$parseverbatim_delimited_by_char();\n              }\n              if (s5 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s0 = peg$f36(s2, s3, s4, s5);\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        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e17);\n          }\n        }\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parseverbatim_minted_environment() {\n        let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14;\n        const key = peg$currPos * 53 + 14;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = peg$parsebegin_env();\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parsebegin_group();\n          if (s2 !== peg$FAILED) {\n            if (input.substr(peg$currPos, 6) === peg$c9) {\n              s3 = peg$c9;\n              peg$currPos += 6;\n            } else {\n              s3 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e21);\n              }\n            }\n            if (s3 !== peg$FAILED) {\n              s4 = peg$parseend_group();\n              if (s4 !== peg$FAILED) {\n                s5 = peg$parsesquare_bracket_argument();\n                if (s5 === peg$FAILED) {\n                  s5 = null;\n                }\n                s6 = peg$parsegroup();\n                if (s6 !== peg$FAILED) {\n                  s7 = peg$currPos;\n                  s8 = [];\n                  s9 = peg$currPos;\n                  s10 = peg$currPos;\n                  peg$silentFails++;\n                  s11 = peg$currPos;\n                  s12 = peg$parseend_env();\n                  if (s12 !== peg$FAILED) {\n                    s13 = peg$parsegroup();\n                    if (s13 !== peg$FAILED) {\n                      peg$savedPos = peg$currPos;\n                      s14 = peg$f37(s3, s5, s6, s13);\n                      if (s14) {\n                        s14 = void 0;\n                      } else {\n                        s14 = peg$FAILED;\n                      }\n                      if (s14 !== peg$FAILED) {\n                        s12 = [s12, s13, s14];\n                        s11 = s12;\n                      } else {\n                        peg$currPos = s11;\n                        s11 = peg$FAILED;\n                      }\n                    } else {\n                      peg$currPos = s11;\n                      s11 = peg$FAILED;\n                    }\n                  } else {\n                    peg$currPos = s11;\n                    s11 = peg$FAILED;\n                  }\n                  peg$silentFails--;\n                  if (s11 === peg$FAILED) {\n                    s10 = void 0;\n                  } else {\n                    peg$currPos = s10;\n                    s10 = peg$FAILED;\n                  }\n                  if (s10 !== peg$FAILED) {\n                    if (input.length > peg$currPos) {\n                      s11 = input.charAt(peg$currPos);\n                      peg$currPos++;\n                    } else {\n                      s11 = peg$FAILED;\n                      if (peg$silentFails === 0) {\n                        peg$fail(peg$e1);\n                      }\n                    }\n                    if (s11 !== peg$FAILED) {\n                      s10 = [s10, s11];\n                      s9 = s10;\n                    } else {\n                      peg$currPos = s9;\n                      s9 = peg$FAILED;\n                    }\n                  } else {\n                    peg$currPos = s9;\n                    s9 = peg$FAILED;\n                  }\n                  while (s9 !== peg$FAILED) {\n                    s8.push(s9);\n                    s9 = peg$currPos;\n                    s10 = peg$currPos;\n                    peg$silentFails++;\n                    s11 = peg$currPos;\n                    s12 = peg$parseend_env();\n                    if (s12 !== peg$FAILED) {\n                      s13 = peg$parsegroup();\n                      if (s13 !== peg$FAILED) {\n                        peg$savedPos = peg$currPos;\n                        s14 = peg$f37(s3, s5, s6, s13);\n                        if (s14) {\n                          s14 = void 0;\n                        } else {\n                          s14 = peg$FAILED;\n                        }\n                        if (s14 !== peg$FAILED) {\n                          s12 = [s12, s13, s14];\n                          s11 = s12;\n                        } else {\n                          peg$currPos = s11;\n                          s11 = peg$FAILED;\n                        }\n                      } else {\n                        peg$currPos = s11;\n                        s11 = peg$FAILED;\n                      }\n                    } else {\n                      peg$currPos = s11;\n                      s11 = peg$FAILED;\n                    }\n                    peg$silentFails--;\n                    if (s11 === peg$FAILED) {\n                      s10 = void 0;\n                    } else {\n                      peg$currPos = s10;\n                      s10 = peg$FAILED;\n                    }\n                    if (s10 !== peg$FAILED) {\n                      if (input.length > peg$currPos) {\n                        s11 = input.charAt(peg$currPos);\n                        peg$currPos++;\n                      } else {\n                        s11 = peg$FAILED;\n                        if (peg$silentFails === 0) {\n                          peg$fail(peg$e1);\n                        }\n                      }\n                      if (s11 !== peg$FAILED) {\n                        s10 = [s10, s11];\n                        s9 = s10;\n                      } else {\n                        peg$currPos = s9;\n                        s9 = peg$FAILED;\n                      }\n                    } else {\n                      peg$currPos = s9;\n                      s9 = peg$FAILED;\n                    }\n                  }\n                  s7 = input.substring(s7, peg$currPos);\n                  s8 = peg$parseend_env();\n                  if (s8 !== peg$FAILED) {\n                    s9 = peg$parsebegin_group();\n                    if (s9 !== peg$FAILED) {\n                      if (input.substr(peg$currPos, 6) === peg$c9) {\n                        s10 = peg$c9;\n                        peg$currPos += 6;\n                      } else {\n                        s10 = peg$FAILED;\n                        if (peg$silentFails === 0) {\n                          peg$fail(peg$e21);\n                        }\n                      }\n                      if (s10 !== peg$FAILED) {\n                        s11 = peg$parseend_group();\n                        if (s11 !== peg$FAILED) {\n                          peg$savedPos = s0;\n                          s0 = peg$f38(s3, s5, s6, s7);\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          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e20);\n          }\n        }\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parseverbatim_environment_with_optional_arg() {\n        let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13;\n        const key = peg$currPos * 53 + 15;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = peg$parsebegin_env();\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parsebegin_group();\n          if (s2 !== peg$FAILED) {\n            s3 = peg$parseverbatim_env_name_allows_optional_arg();\n            if (s3 !== peg$FAILED) {\n              s4 = peg$parseend_group();\n              if (s4 !== peg$FAILED) {\n                s5 = peg$parsesquare_bracket_argument();\n                if (s5 === peg$FAILED) {\n                  s5 = null;\n                }\n                s6 = peg$currPos;\n                s7 = [];\n                s8 = peg$currPos;\n                s9 = peg$currPos;\n                peg$silentFails++;\n                s10 = peg$currPos;\n                s11 = peg$parseend_env();\n                if (s11 !== peg$FAILED) {\n                  s12 = peg$parsegroup();\n                  if (s12 !== peg$FAILED) {\n                    peg$savedPos = peg$currPos;\n                    s13 = peg$f39(s3, s5, s12);\n                    if (s13) {\n                      s13 = void 0;\n                    } else {\n                      s13 = peg$FAILED;\n                    }\n                    if (s13 !== peg$FAILED) {\n                      s11 = [s11, s12, s13];\n                      s10 = s11;\n                    } else {\n                      peg$currPos = s10;\n                      s10 = peg$FAILED;\n                    }\n                  } else {\n                    peg$currPos = s10;\n                    s10 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s10;\n                  s10 = peg$FAILED;\n                }\n                peg$silentFails--;\n                if (s10 === peg$FAILED) {\n                  s9 = void 0;\n                } else {\n                  peg$currPos = s9;\n                  s9 = peg$FAILED;\n                }\n                if (s9 !== peg$FAILED) {\n                  if (input.length > peg$currPos) {\n                    s10 = input.charAt(peg$currPos);\n                    peg$currPos++;\n                  } else {\n                    s10 = peg$FAILED;\n                    if (peg$silentFails === 0) {\n                      peg$fail(peg$e1);\n                    }\n                  }\n                  if (s10 !== peg$FAILED) {\n                    peg$savedPos = s8;\n                    s8 = peg$f40(s3, s5, s10);\n                  } else {\n                    peg$currPos = s8;\n                    s8 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s8;\n                  s8 = peg$FAILED;\n                }\n                while (s8 !== peg$FAILED) {\n                  s7.push(s8);\n                  s8 = peg$currPos;\n                  s9 = peg$currPos;\n                  peg$silentFails++;\n                  s10 = peg$currPos;\n                  s11 = peg$parseend_env();\n                  if (s11 !== peg$FAILED) {\n                    s12 = peg$parsegroup();\n                    if (s12 !== peg$FAILED) {\n                      peg$savedPos = peg$currPos;\n                      s13 = peg$f39(s3, s5, s12);\n                      if (s13) {\n                        s13 = void 0;\n                      } else {\n                        s13 = peg$FAILED;\n                      }\n                      if (s13 !== peg$FAILED) {\n                        s11 = [s11, s12, s13];\n                        s10 = s11;\n                      } else {\n                        peg$currPos = s10;\n                        s10 = peg$FAILED;\n                      }\n                    } else {\n                      peg$currPos = s10;\n                      s10 = peg$FAILED;\n                    }\n                  } else {\n                    peg$currPos = s10;\n                    s10 = peg$FAILED;\n                  }\n                  peg$silentFails--;\n                  if (s10 === peg$FAILED) {\n                    s9 = void 0;\n                  } else {\n                    peg$currPos = s9;\n                    s9 = peg$FAILED;\n                  }\n                  if (s9 !== peg$FAILED) {\n                    if (input.length > peg$currPos) {\n                      s10 = input.charAt(peg$currPos);\n                      peg$currPos++;\n                    } else {\n                      s10 = peg$FAILED;\n                      if (peg$silentFails === 0) {\n                        peg$fail(peg$e1);\n                      }\n                    }\n                    if (s10 !== peg$FAILED) {\n                      peg$savedPos = s8;\n                      s8 = peg$f40(s3, s5, s10);\n                    } else {\n                      peg$currPos = s8;\n                      s8 = peg$FAILED;\n                    }\n                  } else {\n                    peg$currPos = s8;\n                    s8 = peg$FAILED;\n                  }\n                }\n                s6 = input.substring(s6, peg$currPos);\n                s7 = peg$parseend_env();\n                if (s7 !== peg$FAILED) {\n                  s8 = peg$parsebegin_group();\n                  if (s8 !== peg$FAILED) {\n                    s9 = peg$parseverbatim_env_name_allows_optional_arg();\n                    if (s9 !== peg$FAILED) {\n                      s10 = peg$parseend_group();\n                      if (s10 !== peg$FAILED) {\n                        peg$savedPos = s0;\n                        s0 = peg$f41(s3, s5, s6);\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        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e22);\n          }\n        }\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parseverbatim_environment() {\n        let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12;\n        const key = peg$currPos * 53 + 16;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = peg$parsebegin_env();\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parsebegin_group();\n          if (s2 !== peg$FAILED) {\n            s3 = peg$parseverbatim_env_name();\n            if (s3 !== peg$FAILED) {\n              s4 = peg$parseend_group();\n              if (s4 !== peg$FAILED) {\n                s5 = peg$currPos;\n                s6 = [];\n                s7 = peg$currPos;\n                s8 = peg$currPos;\n                peg$silentFails++;\n                s9 = peg$currPos;\n                s10 = peg$parseend_env();\n                if (s10 !== peg$FAILED) {\n                  s11 = peg$parsegroup();\n                  if (s11 !== peg$FAILED) {\n                    peg$savedPos = peg$currPos;\n                    s12 = peg$f42(s3, s11);\n                    if (s12) {\n                      s12 = void 0;\n                    } else {\n                      s12 = peg$FAILED;\n                    }\n                    if (s12 !== peg$FAILED) {\n                      s10 = [s10, s11, s12];\n                      s9 = s10;\n                    } else {\n                      peg$currPos = s9;\n                      s9 = peg$FAILED;\n                    }\n                  } else {\n                    peg$currPos = s9;\n                    s9 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s9;\n                  s9 = peg$FAILED;\n                }\n                peg$silentFails--;\n                if (s9 === peg$FAILED) {\n                  s8 = void 0;\n                } else {\n                  peg$currPos = s8;\n                  s8 = peg$FAILED;\n                }\n                if (s8 !== peg$FAILED) {\n                  if (input.length > peg$currPos) {\n                    s9 = input.charAt(peg$currPos);\n                    peg$currPos++;\n                  } else {\n                    s9 = peg$FAILED;\n                    if (peg$silentFails === 0) {\n                      peg$fail(peg$e1);\n                    }\n                  }\n                  if (s9 !== peg$FAILED) {\n                    peg$savedPos = s7;\n                    s7 = peg$f43(s3, s9);\n                  } else {\n                    peg$currPos = s7;\n                    s7 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s7;\n                  s7 = peg$FAILED;\n                }\n                while (s7 !== peg$FAILED) {\n                  s6.push(s7);\n                  s7 = peg$currPos;\n                  s8 = peg$currPos;\n                  peg$silentFails++;\n                  s9 = peg$currPos;\n                  s10 = peg$parseend_env();\n                  if (s10 !== peg$FAILED) {\n                    s11 = peg$parsegroup();\n                    if (s11 !== peg$FAILED) {\n                      peg$savedPos = peg$currPos;\n                      s12 = peg$f42(s3, s11);\n                      if (s12) {\n                        s12 = void 0;\n                      } else {\n                        s12 = peg$FAILED;\n                      }\n                      if (s12 !== peg$FAILED) {\n                        s10 = [s10, s11, s12];\n                        s9 = s10;\n                      } else {\n                        peg$currPos = s9;\n                        s9 = peg$FAILED;\n                      }\n                    } else {\n                      peg$currPos = s9;\n                      s9 = peg$FAILED;\n                    }\n                  } else {\n                    peg$currPos = s9;\n                    s9 = peg$FAILED;\n                  }\n                  peg$silentFails--;\n                  if (s9 === peg$FAILED) {\n                    s8 = void 0;\n                  } else {\n                    peg$currPos = s8;\n                    s8 = peg$FAILED;\n                  }\n                  if (s8 !== peg$FAILED) {\n                    if (input.length > peg$currPos) {\n                      s9 = input.charAt(peg$currPos);\n                      peg$currPos++;\n                    } else {\n                      s9 = peg$FAILED;\n                      if (peg$silentFails === 0) {\n                        peg$fail(peg$e1);\n                      }\n                    }\n                    if (s9 !== peg$FAILED) {\n                      peg$savedPos = s7;\n                      s7 = peg$f43(s3, s9);\n                    } else {\n                      peg$currPos = s7;\n                      s7 = peg$FAILED;\n                    }\n                  } else {\n                    peg$currPos = s7;\n                    s7 = peg$FAILED;\n                  }\n                }\n                s5 = input.substring(s5, peg$currPos);\n                s6 = peg$parseend_env();\n                if (s6 !== peg$FAILED) {\n                  s7 = peg$parsebegin_group();\n                  if (s7 !== peg$FAILED) {\n                    s8 = peg$parseverbatim_env_name();\n                    if (s8 !== peg$FAILED) {\n                      s9 = peg$parseend_group();\n                      if (s9 !== peg$FAILED) {\n                        peg$savedPos = s0;\n                        s0 = peg$f44(s3, s5);\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        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e23);\n          }\n        }\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parseverbatim_env_name() {\n        let s0;\n        const key = peg$currPos * 53 + 17;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        if (input.substr(peg$currPos, 9) === peg$c10) {\n          s0 = peg$c10;\n          peg$currPos += 9;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e24);\n          }\n        }\n        if (s0 === peg$FAILED) {\n          if (input.substr(peg$currPos, 8) === peg$c11) {\n            s0 = peg$c11;\n            peg$currPos += 8;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e25);\n            }\n          }\n          if (s0 === peg$FAILED) {\n            if (input.substr(peg$currPos, 13) === peg$c12) {\n              s0 = peg$c12;\n              peg$currPos += 13;\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e26);\n              }\n            }\n            if (s0 === peg$FAILED) {\n              if (input.substr(peg$currPos, 12) === peg$c13) {\n                s0 = peg$c13;\n                peg$currPos += 12;\n              } else {\n                s0 = peg$FAILED;\n                if (peg$silentFails === 0) {\n                  peg$fail(peg$e27);\n                }\n              }\n              if (s0 === peg$FAILED) {\n                if (input.substr(peg$currPos, 7) === peg$c14) {\n                  s0 = peg$c14;\n                  peg$currPos += 7;\n                } else {\n                  s0 = peg$FAILED;\n                  if (peg$silentFails === 0) {\n                    peg$fail(peg$e28);\n                  }\n                }\n              }\n            }\n          }\n        }\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parseverbatim_env_name_allows_optional_arg() {\n        let s0;\n        const key = peg$currPos * 53 + 18;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        if (input.substr(peg$currPos, 10) === peg$c15) {\n          s0 = peg$c15;\n          peg$currPos += 10;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e29);\n          }\n        }\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parsemacro() {\n        let s0, s1, s2, s3, s4;\n        const key = peg$currPos * 53 + 19;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = peg$currPos;\n        s2 = peg$parseescape();\n        if (s2 !== peg$FAILED) {\n          s3 = [];\n          s4 = peg$parsechar();\n          if (s4 !== peg$FAILED) {\n            while (s4 !== peg$FAILED) {\n              s3.push(s4);\n              s4 = peg$parsechar();\n            }\n          } else {\n            s3 = peg$FAILED;\n          }\n          if (s3 !== peg$FAILED) {\n            peg$savedPos = s1;\n            s1 = peg$f45(s3);\n          } else {\n            peg$currPos = s1;\n            s1 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n        if (s1 === peg$FAILED) {\n          s1 = peg$currPos;\n          s2 = peg$parseescape();\n          if (s2 !== peg$FAILED) {\n            if (input.length > peg$currPos) {\n              s3 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s3 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e1);\n              }\n            }\n            if (s3 !== peg$FAILED) {\n              peg$savedPos = s1;\n              s1 = peg$f46(s3);\n            } else {\n              peg$currPos = s1;\n              s1 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s1;\n            s1 = peg$FAILED;\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$f47(s1);\n        }\n        s0 = s1;\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e30);\n          }\n        }\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parsegroup() {\n        let s0, s1, s2, s3, s4, s5;\n        const key = peg$currPos * 53 + 20;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = peg$parsebegin_group();\n        if (s1 !== peg$FAILED) {\n          s2 = [];\n          s3 = peg$currPos;\n          s4 = peg$currPos;\n          peg$silentFails++;\n          s5 = peg$parseend_group();\n          peg$silentFails--;\n          if (s5 === peg$FAILED) {\n            s4 = void 0;\n          } else {\n            peg$currPos = s4;\n            s4 = peg$FAILED;\n          }\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parsetoken();\n            if (s5 !== peg$FAILED) {\n              peg$savedPos = s3;\n              s3 = peg$f48(s5);\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n          while (s3 !== peg$FAILED) {\n            s2.push(s3);\n            s3 = peg$currPos;\n            s4 = peg$currPos;\n            peg$silentFails++;\n            s5 = peg$parseend_group();\n            peg$silentFails--;\n            if (s5 === peg$FAILED) {\n              s4 = void 0;\n            } else {\n              peg$currPos = s4;\n              s4 = peg$FAILED;\n            }\n            if (s4 !== peg$FAILED) {\n              s5 = peg$parsetoken();\n              if (s5 !== peg$FAILED) {\n                peg$savedPos = s3;\n                s3 = peg$f48(s5);\n              } else {\n                peg$currPos = s3;\n                s3 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          }\n          s3 = peg$parseend_group();\n          if (s3 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f49(s2);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e31);\n          }\n        }\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parsegroup_contents_as_string() {\n        let s0, s1;\n        const key = peg$currPos * 53 + 21;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        s0 = peg$currPos;\n        s1 = peg$parsegroup();\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$f50(s1);\n        }\n        s0 = s1;\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parseenvironment() {\n        let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;\n        const key = peg$currPos * 53 + 22;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = peg$parsebegin_env();\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parsegroup_contents_as_string();\n          if (s2 !== peg$FAILED) {\n            s3 = peg$parsesameline_comment();\n            if (s3 === peg$FAILED) {\n              s3 = null;\n            }\n            s4 = [];\n            s5 = peg$currPos;\n            s6 = peg$currPos;\n            peg$silentFails++;\n            s7 = peg$currPos;\n            s8 = peg$parseend_env();\n            if (s8 !== peg$FAILED) {\n              s9 = peg$parsegroup_contents_as_string();\n              if (s9 !== peg$FAILED) {\n                peg$savedPos = peg$currPos;\n                s10 = peg$f51(s2, s3, s9);\n                if (s10) {\n                  s10 = void 0;\n                } else {\n                  s10 = peg$FAILED;\n                }\n                if (s10 !== peg$FAILED) {\n                  s8 = [s8, s9, s10];\n                  s7 = s8;\n                } else {\n                  peg$currPos = s7;\n                  s7 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s7;\n                s7 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s7;\n              s7 = peg$FAILED;\n            }\n            peg$silentFails--;\n            if (s7 === peg$FAILED) {\n              s6 = void 0;\n            } else {\n              peg$currPos = s6;\n              s6 = peg$FAILED;\n            }\n            if (s6 !== peg$FAILED) {\n              s7 = peg$parsetoken();\n              if (s7 !== peg$FAILED) {\n                peg$savedPos = s5;\n                s5 = peg$f52(s2, s3, s7);\n              } else {\n                peg$currPos = s5;\n                s5 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s5;\n              s5 = peg$FAILED;\n            }\n            while (s5 !== peg$FAILED) {\n              s4.push(s5);\n              s5 = peg$currPos;\n              s6 = peg$currPos;\n              peg$silentFails++;\n              s7 = peg$currPos;\n              s8 = peg$parseend_env();\n              if (s8 !== peg$FAILED) {\n                s9 = peg$parsegroup_contents_as_string();\n                if (s9 !== peg$FAILED) {\n                  peg$savedPos = peg$currPos;\n                  s10 = peg$f51(s2, s3, s9);\n                  if (s10) {\n                    s10 = void 0;\n                  } else {\n                    s10 = peg$FAILED;\n                  }\n                  if (s10 !== peg$FAILED) {\n                    s8 = [s8, s9, s10];\n                    s7 = s8;\n                  } else {\n                    peg$currPos = s7;\n                    s7 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s7;\n                  s7 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s7;\n                s7 = peg$FAILED;\n              }\n              peg$silentFails--;\n              if (s7 === peg$FAILED) {\n                s6 = void 0;\n              } else {\n                peg$currPos = s6;\n                s6 = peg$FAILED;\n              }\n              if (s6 !== peg$FAILED) {\n                s7 = peg$parsetoken();\n                if (s7 !== peg$FAILED) {\n                  peg$savedPos = s5;\n                  s5 = peg$f52(s2, s3, s7);\n                } else {\n                  peg$currPos = s5;\n                  s5 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s5;\n                s5 = peg$FAILED;\n              }\n            }\n            s5 = peg$parseend_env();\n            if (s5 !== peg$FAILED) {\n              s6 = peg$parsegroup_contents_as_string();\n              if (s6 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s0 = peg$f53(s2, s3, s4);\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        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e32);\n          }\n        }\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parsemath_environment() {\n        let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12;\n        const key = peg$currPos * 53 + 23;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = peg$parsebegin_env();\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parsebegin_group();\n          if (s2 !== peg$FAILED) {\n            s3 = peg$parsemath_env_name();\n            if (s3 !== peg$FAILED) {\n              s4 = peg$parseend_group();\n              if (s4 !== peg$FAILED) {\n                s5 = peg$parsesameline_comment();\n                if (s5 === peg$FAILED) {\n                  s5 = null;\n                }\n                s6 = [];\n                s7 = peg$currPos;\n                s8 = peg$currPos;\n                peg$silentFails++;\n                s9 = peg$currPos;\n                s10 = peg$parseend_env();\n                if (s10 !== peg$FAILED) {\n                  s11 = peg$parsegroup();\n                  if (s11 !== peg$FAILED) {\n                    peg$savedPos = peg$currPos;\n                    s12 = peg$f54(s3, s5, s11);\n                    if (s12) {\n                      s12 = void 0;\n                    } else {\n                      s12 = peg$FAILED;\n                    }\n                    if (s12 !== peg$FAILED) {\n                      s10 = [s10, s11, s12];\n                      s9 = s10;\n                    } else {\n                      peg$currPos = s9;\n                      s9 = peg$FAILED;\n                    }\n                  } else {\n                    peg$currPos = s9;\n                    s9 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s9;\n                  s9 = peg$FAILED;\n                }\n                peg$silentFails--;\n                if (s9 === peg$FAILED) {\n                  s8 = void 0;\n                } else {\n                  peg$currPos = s8;\n                  s8 = peg$FAILED;\n                }\n                if (s8 !== peg$FAILED) {\n                  s9 = peg$parsemath_token();\n                  if (s9 !== peg$FAILED) {\n                    peg$savedPos = s7;\n                    s7 = peg$f55(s3, s5, s9);\n                  } else {\n                    peg$currPos = s7;\n                    s7 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s7;\n                  s7 = peg$FAILED;\n                }\n                while (s7 !== peg$FAILED) {\n                  s6.push(s7);\n                  s7 = peg$currPos;\n                  s8 = peg$currPos;\n                  peg$silentFails++;\n                  s9 = peg$currPos;\n                  s10 = peg$parseend_env();\n                  if (s10 !== peg$FAILED) {\n                    s11 = peg$parsegroup();\n                    if (s11 !== peg$FAILED) {\n                      peg$savedPos = peg$currPos;\n                      s12 = peg$f54(s3, s5, s11);\n                      if (s12) {\n                        s12 = void 0;\n                      } else {\n                        s12 = peg$FAILED;\n                      }\n                      if (s12 !== peg$FAILED) {\n                        s10 = [s10, s11, s12];\n                        s9 = s10;\n                      } else {\n                        peg$currPos = s9;\n                        s9 = peg$FAILED;\n                      }\n                    } else {\n                      peg$currPos = s9;\n                      s9 = peg$FAILED;\n                    }\n                  } else {\n                    peg$currPos = s9;\n                    s9 = peg$FAILED;\n                  }\n                  peg$silentFails--;\n                  if (s9 === peg$FAILED) {\n                    s8 = void 0;\n                  } else {\n                    peg$currPos = s8;\n                    s8 = peg$FAILED;\n                  }\n                  if (s8 !== peg$FAILED) {\n                    s9 = peg$parsemath_token();\n                    if (s9 !== peg$FAILED) {\n                      peg$savedPos = s7;\n                      s7 = peg$f55(s3, s5, s9);\n                    } else {\n                      peg$currPos = s7;\n                      s7 = peg$FAILED;\n                    }\n                  } else {\n                    peg$currPos = s7;\n                    s7 = peg$FAILED;\n                  }\n                }\n                s7 = peg$parseend_env();\n                if (s7 !== peg$FAILED) {\n                  s8 = peg$parsebegin_group();\n                  if (s8 !== peg$FAILED) {\n                    s9 = peg$parsemath_env_name();\n                    if (s9 !== peg$FAILED) {\n                      s10 = peg$parseend_group();\n                      if (s10 !== peg$FAILED) {\n                        peg$savedPos = s0;\n                        s0 = peg$f56(s3, s5, s6);\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        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e33);\n          }\n        }\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parsebegin_display_math() {\n        let s0, s1, s2;\n        const key = peg$currPos * 53 + 24;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        s0 = peg$currPos;\n        s1 = peg$parseescape();\n        if (s1 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 91) {\n            s2 = peg$c4;\n            peg$currPos++;\n          } else {\n            s2 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e12);\n            }\n          }\n          if (s2 !== peg$FAILED) {\n            s1 = [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        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parseend_display_math() {\n        let s0, s1, s2;\n        const key = peg$currPos * 53 + 25;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        s0 = peg$currPos;\n        s1 = peg$parseescape();\n        if (s1 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 93) {\n            s2 = peg$c5;\n            peg$currPos++;\n          } else {\n            s2 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e13);\n            }\n          }\n          if (s2 !== peg$FAILED) {\n            s1 = [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        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parsebegin_inline_math() {\n        let s0, s1, s2;\n        const key = peg$currPos * 53 + 26;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        s0 = peg$currPos;\n        s1 = peg$parseescape();\n        if (s1 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 40) {\n            s2 = peg$c16;\n            peg$currPos++;\n          } else {\n            s2 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e34);\n            }\n          }\n          if (s2 !== peg$FAILED) {\n            s1 = [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        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parseend_inline_math() {\n        let s0, s1, s2;\n        const key = peg$currPos * 53 + 27;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        s0 = peg$currPos;\n        s1 = peg$parseescape();\n        if (s1 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 41) {\n            s2 = peg$c17;\n            peg$currPos++;\n          } else {\n            s2 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e35);\n            }\n          }\n          if (s2 !== peg$FAILED) {\n            s1 = [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        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parsebegin_env() {\n        let s0, s1, s2;\n        const key = peg$currPos * 53 + 28;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        s0 = peg$currPos;\n        s1 = peg$parseescape();\n        if (s1 !== peg$FAILED) {\n          if (input.substr(peg$currPos, 5) === peg$c18) {\n            s2 = peg$c18;\n            peg$currPos += 5;\n          } else {\n            s2 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e36);\n            }\n          }\n          if (s2 !== peg$FAILED) {\n            s1 = [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        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parseend_env() {\n        let s0, s1, s2;\n        const key = peg$currPos * 53 + 29;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        s0 = peg$currPos;\n        s1 = peg$parseescape();\n        if (s1 !== peg$FAILED) {\n          if (input.substr(peg$currPos, 3) === peg$c19) {\n            s2 = peg$c19;\n            peg$currPos += 3;\n          } else {\n            s2 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e37);\n            }\n          }\n          if (s2 !== peg$FAILED) {\n            s1 = [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        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parsemath_env_name() {\n        let s0, s1;\n        const key = peg$currPos * 53 + 30;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        s0 = peg$currPos;\n        if (input.substr(peg$currPos, 9) === peg$c20) {\n          s1 = peg$c20;\n          peg$currPos += 9;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e38);\n          }\n        }\n        if (s1 === peg$FAILED) {\n          if (input.substr(peg$currPos, 8) === peg$c21) {\n            s1 = peg$c21;\n            peg$currPos += 8;\n          } else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e39);\n            }\n          }\n          if (s1 === peg$FAILED) {\n            if (input.substr(peg$currPos, 6) === peg$c22) {\n              s1 = peg$c22;\n              peg$currPos += 6;\n            } else {\n              s1 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e40);\n              }\n            }\n            if (s1 === peg$FAILED) {\n              if (input.substr(peg$currPos, 5) === peg$c23) {\n                s1 = peg$c23;\n                peg$currPos += 5;\n              } else {\n                s1 = peg$FAILED;\n                if (peg$silentFails === 0) {\n                  peg$fail(peg$e41);\n                }\n              }\n              if (s1 === peg$FAILED) {\n                if (input.substr(peg$currPos, 8) === peg$c24) {\n                  s1 = peg$c24;\n                  peg$currPos += 8;\n                } else {\n                  s1 = peg$FAILED;\n                  if (peg$silentFails === 0) {\n                    peg$fail(peg$e42);\n                  }\n                }\n                if (s1 === peg$FAILED) {\n                  if (input.substr(peg$currPos, 7) === peg$c25) {\n                    s1 = peg$c25;\n                    peg$currPos += 7;\n                  } else {\n                    s1 = peg$FAILED;\n                    if (peg$silentFails === 0) {\n                      peg$fail(peg$e43);\n                    }\n                  }\n                  if (s1 === peg$FAILED) {\n                    if (input.substr(peg$currPos, 7) === peg$c26) {\n                      s1 = peg$c26;\n                      peg$currPos += 7;\n                    } else {\n                      s1 = peg$FAILED;\n                      if (peg$silentFails === 0) {\n                        peg$fail(peg$e44);\n                      }\n                    }\n                    if (s1 === peg$FAILED) {\n                      if (input.substr(peg$currPos, 6) === peg$c27) {\n                        s1 = peg$c27;\n                        peg$currPos += 6;\n                      } else {\n                        s1 = peg$FAILED;\n                        if (peg$silentFails === 0) {\n                          peg$fail(peg$e45);\n                        }\n                      }\n                      if (s1 === peg$FAILED) {\n                        if (input.substr(peg$currPos, 9) === peg$c28) {\n                          s1 = peg$c28;\n                          peg$currPos += 9;\n                        } else {\n                          s1 = peg$FAILED;\n                          if (peg$silentFails === 0) {\n                            peg$fail(peg$e46);\n                          }\n                        }\n                        if (s1 === peg$FAILED) {\n                          if (input.substr(peg$currPos, 8) === peg$c29) {\n                            s1 = peg$c29;\n                            peg$currPos += 8;\n                          } else {\n                            s1 = peg$FAILED;\n                            if (peg$silentFails === 0) {\n                              peg$fail(peg$e47);\n                            }\n                          }\n                          if (s1 === peg$FAILED) {\n                            if (input.substr(peg$currPos, 8) === peg$c30) {\n                              s1 = peg$c30;\n                              peg$currPos += 8;\n                            } else {\n                              s1 = peg$FAILED;\n                              if (peg$silentFails === 0) {\n                                peg$fail(peg$e48);\n                              }\n                            }\n                            if (s1 === peg$FAILED) {\n                              if (input.substr(peg$currPos, 7) === peg$c31) {\n                                s1 = peg$c31;\n                                peg$currPos += 7;\n                              } else {\n                                s1 = peg$FAILED;\n                                if (peg$silentFails === 0) {\n                                  peg$fail(peg$e49);\n                                }\n                              }\n                              if (s1 === peg$FAILED) {\n                                if (input.substr(peg$currPos, 5) === peg$c32) {\n                                  s1 = peg$c32;\n                                  peg$currPos += 5;\n                                } else {\n                                  s1 = peg$FAILED;\n                                  if (peg$silentFails === 0) {\n                                    peg$fail(peg$e50);\n                                  }\n                                }\n                                if (s1 === peg$FAILED) {\n                                  if (input.substr(peg$currPos, 4) === peg$c33) {\n                                    s1 = peg$c33;\n                                    peg$currPos += 4;\n                                  } else {\n                                    s1 = peg$FAILED;\n                                    if (peg$silentFails === 0) {\n                                      peg$fail(peg$e51);\n                                    }\n                                  }\n                                  if (s1 === peg$FAILED) {\n                                    if (input.substr(peg$currPos, 11) === peg$c34) {\n                                      s1 = peg$c34;\n                                      peg$currPos += 11;\n                                    } else {\n                                      s1 = peg$FAILED;\n                                      if (peg$silentFails === 0) {\n                                        peg$fail(peg$e52);\n                                      }\n                                    }\n                                  }\n                                }\n                              }\n                            }\n                          }\n                        }\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$f57(s1);\n        }\n        s0 = s1;\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parseescape() {\n        let s0, s1;\n        const key = peg$currPos * 53 + 31;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        peg$silentFails++;\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 92) {\n          s1 = peg$c35;\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e54);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$f58();\n        }\n        s0 = s1;\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e53);\n          }\n        }\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parsebegin_group() {\n        let s0, s1;\n        const key = peg$currPos * 53 + 32;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 123) {\n          s1 = peg$c36;\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e55);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$f59(s1);\n        }\n        s0 = s1;\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parseend_group() {\n        let s0, s1;\n        const key = peg$currPos * 53 + 33;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 125) {\n          s1 = peg$c37;\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e56);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$f60(s1);\n        }\n        s0 = s1;\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parsemath_shift() {\n        let s0, s1;\n        const key = peg$currPos * 53 + 34;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 36) {\n          s1 = peg$c38;\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e57);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$f61(s1);\n        }\n        s0 = s1;\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parsealignment_tab() {\n        let s0, s1;\n        const key = peg$currPos * 53 + 35;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 38) {\n          s1 = peg$c39;\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e58);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$f62(s1);\n        }\n        s0 = s1;\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parsenl() {\n        let s0, s1, s2;\n        const key = peg$currPos * 53 + 36;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = peg$currPos;\n        peg$silentFails++;\n        if (input.charCodeAt(peg$currPos) === 13) {\n          s2 = peg$c40;\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e60);\n          }\n        }\n        peg$silentFails--;\n        if (s2 === peg$FAILED) {\n          s1 = void 0;\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n        if (s1 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 10) {\n            s2 = peg$c41;\n            peg$currPos++;\n          } else {\n            s2 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e61);\n            }\n          }\n          if (s2 !== peg$FAILED) {\n            s1 = [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        if (s0 === peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 13) {\n            s0 = peg$c40;\n            peg$currPos++;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e60);\n            }\n          }\n          if (s0 === peg$FAILED) {\n            if (input.substr(peg$currPos, 2) === peg$c42) {\n              s0 = peg$c42;\n              peg$currPos += 2;\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e62);\n              }\n            }\n          }\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e59);\n          }\n        }\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parsemacro_parameter() {\n        let s0, s1;\n        const key = peg$currPos * 53 + 37;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 35) {\n          s1 = peg$c43;\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e63);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$f63(s1);\n        }\n        s0 = s1;\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parsesuperscript() {\n        let s0, s1;\n        const key = peg$currPos * 53 + 38;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 94) {\n          s1 = peg$c44;\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e64);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$f64(s1);\n        }\n        s0 = s1;\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parsesubscript() {\n        let s0, s1;\n        const key = peg$currPos * 53 + 39;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 95) {\n          s1 = peg$c45;\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e65);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$f65(s1);\n        }\n        s0 = s1;\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parseignore() {\n        let s0;\n        const key = peg$currPos * 53 + 40;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        if (input.charCodeAt(peg$currPos) === 0) {\n          s0 = peg$c46;\n          peg$currPos++;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e66);\n          }\n        }\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parsesp() {\n        let s0, s1, s2;\n        const key = peg$currPos * 53 + 41;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = [];\n        s2 = input.charAt(peg$currPos);\n        if (peg$r1.test(s2)) {\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e67);\n          }\n        }\n        if (s2 !== peg$FAILED) {\n          while (s2 !== peg$FAILED) {\n            s1.push(s2);\n            s2 = input.charAt(peg$currPos);\n            if (peg$r1.test(s2)) {\n              peg$currPos++;\n            } else {\n              s2 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e67);\n              }\n            }\n          }\n        } else {\n          s1 = peg$FAILED;\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$f66();\n        }\n        s0 = s1;\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e6);\n          }\n        }\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parsechar() {\n        let s0, s1;\n        const key = peg$currPos * 53 + 42;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        peg$silentFails++;\n        s0 = input.charAt(peg$currPos);\n        if (peg$r2.test(s0)) {\n          peg$currPos++;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e69);\n          }\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e68);\n          }\n        }\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parsenum() {\n        let s0, s1;\n        const key = peg$currPos * 53 + 43;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        peg$silentFails++;\n        s0 = input.charAt(peg$currPos);\n        if (peg$r3.test(s0)) {\n          peg$currPos++;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e71);\n          }\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e70);\n          }\n        }\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parsepunctuation() {\n        let s0, s1;\n        const key = peg$currPos * 53 + 44;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = input.charAt(peg$currPos);\n        if (peg$r4.test(s1)) {\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e73);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$f67(s1);\n        }\n        s0 = s1;\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e72);\n          }\n        }\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parsecomment_start() {\n        let s0;\n        const key = peg$currPos * 53 + 45;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        if (input.charCodeAt(peg$currPos) === 37) {\n          s0 = peg$c0;\n          peg$currPos++;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e5);\n          }\n        }\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parsefull_comment() {\n        let s0, s1;\n        const key = peg$currPos * 53 + 46;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        peg$silentFails++;\n        s0 = peg$parseownline_comment();\n        if (s0 === peg$FAILED) {\n          s0 = peg$parsesameline_comment();\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e74);\n          }\n        }\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parseownline_comment() {\n        let s0, s1, s2, s3;\n        const key = peg$currPos * 53 + 47;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        s0 = peg$currPos;\n        s1 = peg$currPos;\n        s2 = [];\n        s3 = peg$parsesp();\n        while (s3 !== peg$FAILED) {\n          s2.push(s3);\n          s3 = peg$parsesp();\n        }\n        s3 = peg$parsenl();\n        if (s3 !== peg$FAILED) {\n          s2 = [s2, s3];\n          s1 = s2;\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n        if (s1 === peg$FAILED) {\n          s1 = null;\n        }\n        s2 = peg$parseleading_sp();\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parsecomment();\n          if (s3 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f68(s2, s3);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parsesameline_comment() {\n        let s0, s1, s2;\n        const key = peg$currPos * 53 + 48;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        s0 = peg$currPos;\n        s1 = [];\n        s2 = peg$parsesp();\n        while (s2 !== peg$FAILED) {\n          s1.push(s2);\n          s2 = peg$parsesp();\n        }\n        s2 = peg$parsecomment();\n        if (s2 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s0 = peg$f69(s1, s2);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parsecomment() {\n        let s0, s1, s2, s3, s4, s5, s6, s7;\n        const key = peg$currPos * 53 + 49;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = peg$parsecomment_start();\n        if (s1 !== peg$FAILED) {\n          s2 = [];\n          s3 = peg$currPos;\n          s4 = peg$currPos;\n          peg$silentFails++;\n          s5 = peg$parsenl();\n          peg$silentFails--;\n          if (s5 === peg$FAILED) {\n            s4 = void 0;\n          } else {\n            peg$currPos = s4;\n            s4 = peg$FAILED;\n          }\n          if (s4 !== peg$FAILED) {\n            if (input.length > peg$currPos) {\n              s5 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s5 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e1);\n              }\n            }\n            if (s5 !== peg$FAILED) {\n              peg$savedPos = s3;\n              s3 = peg$f70(s5);\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n          while (s3 !== peg$FAILED) {\n            s2.push(s3);\n            s3 = peg$currPos;\n            s4 = peg$currPos;\n            peg$silentFails++;\n            s5 = peg$parsenl();\n            peg$silentFails--;\n            if (s5 === peg$FAILED) {\n              s4 = void 0;\n            } else {\n              peg$currPos = s4;\n              s4 = peg$FAILED;\n            }\n            if (s4 !== peg$FAILED) {\n              if (input.length > peg$currPos) {\n                s5 = input.charAt(peg$currPos);\n                peg$currPos++;\n              } else {\n                s5 = peg$FAILED;\n                if (peg$silentFails === 0) {\n                  peg$fail(peg$e1);\n                }\n              }\n              if (s5 !== peg$FAILED) {\n                peg$savedPos = s3;\n                s3 = peg$f70(s5);\n              } else {\n                peg$currPos = s3;\n                s3 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          }\n          s3 = peg$currPos;\n          peg$silentFails++;\n          s4 = peg$parseparbreak();\n          peg$silentFails--;\n          if (s4 !== peg$FAILED) {\n            peg$currPos = s3;\n            s3 = void 0;\n          } else {\n            s3 = peg$FAILED;\n          }\n          if (s3 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f71(s2);\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$parsecomment_start();\n          if (s1 !== peg$FAILED) {\n            s2 = [];\n            s3 = peg$currPos;\n            s4 = peg$currPos;\n            peg$silentFails++;\n            s5 = peg$parsenl();\n            peg$silentFails--;\n            if (s5 === peg$FAILED) {\n              s4 = void 0;\n            } else {\n              peg$currPos = s4;\n              s4 = peg$FAILED;\n            }\n            if (s4 !== peg$FAILED) {\n              if (input.length > peg$currPos) {\n                s5 = input.charAt(peg$currPos);\n                peg$currPos++;\n              } else {\n                s5 = peg$FAILED;\n                if (peg$silentFails === 0) {\n                  peg$fail(peg$e1);\n                }\n              }\n              if (s5 !== peg$FAILED) {\n                peg$savedPos = s3;\n                s3 = peg$f72(s5);\n              } else {\n                peg$currPos = s3;\n                s3 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n            while (s3 !== peg$FAILED) {\n              s2.push(s3);\n              s3 = peg$currPos;\n              s4 = peg$currPos;\n              peg$silentFails++;\n              s5 = peg$parsenl();\n              peg$silentFails--;\n              if (s5 === peg$FAILED) {\n                s4 = void 0;\n              } else {\n                peg$currPos = s4;\n                s4 = peg$FAILED;\n              }\n              if (s4 !== peg$FAILED) {\n                if (input.length > peg$currPos) {\n                  s5 = input.charAt(peg$currPos);\n                  peg$currPos++;\n                } else {\n                  s5 = peg$FAILED;\n                  if (peg$silentFails === 0) {\n                    peg$fail(peg$e1);\n                  }\n                }\n                if (s5 !== peg$FAILED) {\n                  peg$savedPos = s3;\n                  s3 = peg$f72(s5);\n                } else {\n                  peg$currPos = s3;\n                  s3 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s3;\n                s3 = peg$FAILED;\n              }\n            }\n            s3 = peg$currPos;\n            s4 = peg$parsenl();\n            if (s4 !== peg$FAILED) {\n              s5 = [];\n              s6 = peg$parsesp();\n              while (s6 !== peg$FAILED) {\n                s5.push(s6);\n                s6 = peg$parsesp();\n              }\n              s6 = peg$currPos;\n              peg$silentFails++;\n              s7 = peg$parsecomment_start();\n              peg$silentFails--;\n              if (s7 === peg$FAILED) {\n                s6 = void 0;\n              } else {\n                peg$currPos = s6;\n                s6 = peg$FAILED;\n              }\n              if (s6 !== peg$FAILED) {\n                s4 = [s4, s5, s6];\n                s3 = s4;\n              } else {\n                peg$currPos = s3;\n                s3 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n            if (s3 === peg$FAILED) {\n              s3 = peg$parsenl();\n              if (s3 === peg$FAILED) {\n                s3 = peg$parseEOF();\n              }\n            }\n            if (s3 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s0 = peg$f73(s2);\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e75);\n          }\n        }\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parseleading_sp() {\n        let s0, s1, s2, s3, s4;\n        const key = peg$currPos * 53 + 50;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        s0 = peg$currPos;\n        s1 = peg$currPos;\n        s2 = peg$parsestart_of_line();\n        if (s2 !== peg$FAILED) {\n          s3 = [];\n          s4 = peg$parsesp();\n          while (s4 !== peg$FAILED) {\n            s3.push(s4);\n            s4 = peg$parsesp();\n          }\n          s2 = [s2, s3];\n          s1 = s2;\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n        if (s1 !== peg$FAILED) {\n          s0 = input.substring(s0, peg$currPos);\n        } else {\n          s0 = s1;\n        }\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parsestart_of_line() {\n        let s0;\n        const key = peg$currPos * 53 + 51;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        peg$savedPos = peg$currPos;\n        s0 = peg$f74();\n        if (s0) {\n          s0 = void 0;\n        } else {\n          s0 = peg$FAILED;\n        }\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function peg$parseEOF() {\n        let s0, s1;\n        const key = peg$currPos * 53 + 52;\n        const cached = peg$resultsCache[key];\n        if (cached) {\n          peg$currPos = cached.nextPos;\n          return cached.result;\n        }\n        s0 = peg$currPos;\n        peg$silentFails++;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e1);\n          }\n        }\n        peg$silentFails--;\n        if (s1 === peg$FAILED) {\n          s0 = void 0;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };\n        return s0;\n      }\n      function toString(e) {\n        if (typeof e === \"string\") {\n          return e;\n        }\n        if (typeof e.content === \"string\") {\n          return e.content;\n        }\n        if (e && e.type === \"whitespace\") {\n          return \" \";\n        }\n        return e;\n      }\n      function compare_env(g1, g2) {\n        const g1Name = typeof g1 === \"string\" ? g1 : g1.content.map(toString).join(\"\");\n        const g2Name = typeof g2 === \"string\" ? g2 : g2.content.map(toString).join(\"\");\n        return g1Name === g2Name;\n      }\n      function createNode(type, extra = {}) {\n        return { type, ...extra, position: location() };\n      }\n      peg$result = peg$startRuleFunction();\n      const peg$success = peg$result !== peg$FAILED && peg$currPos === input.length;\n      function peg$throw() {\n        if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n          peg$fail(peg$endExpectation());\n        }\n        throw peg$buildStructuredError(\n          peg$maxFailExpected,\n          peg$maxFailPos < input.length ? peg$getUnicode(peg$maxFailPos) : null,\n          peg$maxFailPos < input.length ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n        );\n      }\n      if (options.peg$library) {\n        return (\n          /** @type {any} */\n          {\n            peg$result,\n            peg$currPos,\n            peg$FAILED,\n            peg$maxFailExpected,\n            peg$maxFailPos,\n            peg$success,\n            peg$throw: peg$success ? void 0 : peg$throw\n          }\n        );\n      }\n      if (peg$success) {\n        return peg$result;\n      } else {\n        peg$throw();\n      }\n    }\n    return {\n      StartRules: [\"document\", \"math\"],\n      SyntaxError: peg$SyntaxError,\n      parse: peg$parse\n    };\n  })()\n);\n","export default (\n  // @generated by Peggy 5.1.0.\n  //\n  // https://peggyjs.org/\n  (function() {\n    \"use strict\";\n    class peg$SyntaxError extends SyntaxError {\n      constructor(message, expected, found, location) {\n        super(message);\n        this.expected = expected;\n        this.found = found;\n        this.location = location;\n        this.name = \"SyntaxError\";\n      }\n      format(sources) {\n        let str = \"Error: \" + this.message;\n        if (this.location) {\n          let src = null;\n          const st = sources.find((s2) => s2.source === this.location.source);\n          if (st) {\n            src = st.text.split(/\\r\\n|\\n|\\r/g);\n          }\n          const s = this.location.start;\n          const offset_s = this.location.source && typeof this.location.source.offset === \"function\" ? this.location.source.offset(s) : s;\n          const loc = this.location.source + \":\" + offset_s.line + \":\" + offset_s.column;\n          if (src) {\n            const e = this.location.end;\n            const filler = \"\".padEnd(offset_s.line.toString().length, \" \");\n            const line = src[s.line - 1];\n            const last = s.line === e.line ? e.column : line.length + 1;\n            const hatLen = last - s.column || 1;\n            str += \"\\n --> \" + loc + \"\\n\" + filler + \" |\\n\" + offset_s.line + \" | \" + line + \"\\n\" + filler + \" | \" + \"\".padEnd(s.column - 1, \" \") + \"\".padEnd(hatLen, \"^\");\n          } else {\n            str += \"\\n at \" + loc;\n          }\n        }\n        return str;\n      }\n      static buildMessage(expected, found) {\n        function hex(ch) {\n          return ch.codePointAt(0).toString(16).toUpperCase();\n        }\n        const nonPrintable = Object.prototype.hasOwnProperty.call(RegExp.prototype, \"unicode\") ? new RegExp(\"[\\\\p{C}\\\\p{Mn}\\\\p{Mc}]\", \"gu\") : null;\n        function unicodeEscape(s) {\n          if (nonPrintable) {\n            return s.replace(nonPrintable, (ch) => \"\\\\u{\" + hex(ch) + \"}\");\n          }\n          return s;\n        }\n        function literalEscape(s) {\n          return unicodeEscape(s.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"').replace(/\\0/g, \"\\\\0\").replace(/\\t/g, \"\\\\t\").replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\").replace(/[\\x00-\\x0F]/g, (ch) => \"\\\\x0\" + hex(ch)).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => \"\\\\x\" + hex(ch)));\n        }\n        function classEscape(s) {\n          return unicodeEscape(s.replace(/\\\\/g, \"\\\\\\\\\").replace(/\\]/g, \"\\\\]\").replace(/\\^/g, \"\\\\^\").replace(/-/g, \"\\\\-\").replace(/\\0/g, \"\\\\0\").replace(/\\t/g, \"\\\\t\").replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\").replace(/[\\x00-\\x0F]/g, (ch) => \"\\\\x0\" + hex(ch)).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => \"\\\\x\" + hex(ch)));\n        }\n        const DESCRIBE_EXPECTATION_FNS = {\n          literal(expectation) {\n            return '\"' + literalEscape(expectation.text) + '\"';\n          },\n          class(expectation) {\n            const escapedParts = expectation.parts.map(\n              (part) => Array.isArray(part) ? classEscape(part[0]) + \"-\" + classEscape(part[1]) : classEscape(part)\n            );\n            return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts.join(\"\") + \"]\" + (expectation.unicode ? \"u\" : \"\");\n          },\n          any() {\n            return \"any character\";\n          },\n          end() {\n            return \"end of input\";\n          },\n          other(expectation) {\n            return expectation.description;\n          }\n        };\n        function describeExpectation(expectation) {\n          return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n        }\n        function describeExpected(expected2) {\n          const descriptions = expected2.map(describeExpectation);\n          descriptions.sort();\n          if (descriptions.length > 0) {\n            let j = 1;\n            for (let i = 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          switch (descriptions.length) {\n            case 1:\n              return descriptions[0];\n            case 2:\n              return descriptions[0] + \" or \" + descriptions[1];\n            default:\n              return descriptions.slice(0, -1).join(\", \") + \", or \" + descriptions[descriptions.length - 1];\n          }\n        }\n        function describeFound(found2) {\n          return found2 ? '\"' + literalEscape(found2) + '\"' : \"end of input\";\n        }\n        return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n      }\n    }\n    function peg$parse(input, options) {\n      options = options !== void 0 ? options : {};\n      const peg$FAILED = {};\n      const peg$source = options.grammarSource;\n      const peg$startRuleFunctions = {\n        body: peg$parsebody\n      };\n      let peg$startRuleFunction = peg$parsebody;\n      const peg$e0 = peg$anyExpectation();\n      function peg$f0() {\n        return [];\n      }\n      function peg$f1(x) {\n        return { cells: [], colSeps: [], ...x };\n      }\n      function peg$f2(rowItems, rowSep, trailingComment) {\n        return { ...rowItems, rowSep, trailingComment };\n      }\n      function peg$f3(rowItems, trailingComment) {\n        return { ...rowItems, rowSep: null, trailingComment };\n      }\n      function peg$f4(x) {\n        return x;\n      }\n      function peg$f5(x) {\n        return {\n          cells: [],\n          colSeps: [],\n          rowSep: null,\n          trailingComment: x\n        };\n      }\n      function peg$f6(x) {\n        return x;\n      }\n      function peg$f7(colSep, cell) {\n        return { colSep, cell };\n      }\n      function peg$f8(colSep) {\n        return { colSep };\n      }\n      function peg$f9(a, b) {\n        return processRow(a, b);\n      }\n      function peg$f10(b) {\n        return processRow(null, b);\n      }\n      function peg$f11(tok) {\n        return options.isSameLineComment(tok);\n      }\n      function peg$f12(tok) {\n        return tok;\n      }\n      function peg$f13(tok) {\n        return options.isOwnLineComment(tok);\n      }\n      function peg$f14(tok) {\n        return tok;\n      }\n      function peg$f15(tok) {\n        return options.isWhitespace(tok);\n      }\n      function peg$f16(tok) {\n        return tok;\n      }\n      function peg$f17(tok) {\n        return options.isRowSep(tok);\n      }\n      function peg$f18(tok) {\n        return tok;\n      }\n      function peg$f19(tok) {\n        return options.isColSep(tok);\n      }\n      function peg$f20(tok) {\n        return tok;\n      }\n      let peg$currPos = options.peg$currPos | 0;\n      let peg$savedPos = peg$currPos;\n      const peg$posDetailsCache = [{ line: 1, column: 1 }];\n      let peg$maxFailPos = peg$currPos;\n      let peg$maxFailExpected = options.peg$maxFailExpected || [];\n      let peg$silentFails = options.peg$silentFails | 0;\n      let peg$result;\n      if (options.startRule) {\n        if (!(options.startRule in peg$startRuleFunctions)) {\n          throw new Error(`Can't start parsing from rule \"` + options.startRule + '\".');\n        }\n        peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n      }\n      function text() {\n        return input.substring(peg$savedPos, peg$currPos);\n      }\n      function offset() {\n        return peg$savedPos;\n      }\n      function range() {\n        return {\n          source: peg$source,\n          start: peg$savedPos,\n          end: peg$currPos\n        };\n      }\n      function location() {\n        return peg$computeLocation(peg$savedPos, peg$currPos);\n      }\n      function expected(description, location2) {\n        location2 = location2 !== void 0 ? location2 : peg$computeLocation(peg$savedPos, peg$currPos);\n        throw peg$buildStructuredError(\n          [peg$otherExpectation(description)],\n          input.substring(peg$savedPos, peg$currPos),\n          location2\n        );\n      }\n      function error(message, location2) {\n        location2 = location2 !== void 0 ? location2 : peg$computeLocation(peg$savedPos, peg$currPos);\n        throw peg$buildSimpleError(message, location2);\n      }\n      function peg$getUnicode(pos = peg$currPos) {\n        const cp = input.codePointAt(pos);\n        if (cp === void 0) {\n          return \"\";\n        }\n        return String.fromCodePoint(cp);\n      }\n      function peg$literalExpectation(text2, ignoreCase) {\n        return { type: \"literal\", text: text2, ignoreCase };\n      }\n      function peg$classExpectation(parts, inverted, ignoreCase, unicode) {\n        return { type: \"class\", parts, inverted, ignoreCase, unicode };\n      }\n      function peg$anyExpectation() {\n        return { type: \"any\" };\n      }\n      function peg$endExpectation() {\n        return { type: \"end\" };\n      }\n      function peg$otherExpectation(description) {\n        return { type: \"other\", description };\n      }\n      function peg$computePosDetails(pos) {\n        let details = peg$posDetailsCache[pos];\n        let p;\n        if (details) {\n          return details;\n        } else {\n          if (pos >= peg$posDetailsCache.length) {\n            p = peg$posDetailsCache.length - 1;\n          } else {\n            p = pos;\n            while (!peg$posDetailsCache[--p]) {\n            }\n          }\n          details = peg$posDetailsCache[p];\n          details = {\n            line: details.line,\n            column: details.column\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            p++;\n          }\n          peg$posDetailsCache[pos] = details;\n          return details;\n        }\n      }\n      function peg$computeLocation(startPos, endPos, offset2) {\n        const startPosDetails = peg$computePosDetails(startPos);\n        const endPosDetails = peg$computePosDetails(endPos);\n        const res = {\n          source: peg$source,\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        if (offset2 && peg$source && typeof peg$source.offset === \"function\") {\n          res.start = peg$source.offset(res.start);\n          res.end = peg$source.offset(res.end);\n        }\n        return res;\n      }\n      function peg$fail(expected2) {\n        if (peg$currPos < peg$maxFailPos) {\n          return;\n        }\n        if (peg$currPos > peg$maxFailPos) {\n          peg$maxFailPos = peg$currPos;\n          peg$maxFailExpected = [];\n        }\n        peg$maxFailExpected.push(expected2);\n      }\n      function peg$buildSimpleError(message, location2) {\n        return new peg$SyntaxError(message, null, null, location2);\n      }\n      function peg$buildStructuredError(expected2, found, location2) {\n        return new peg$SyntaxError(\n          peg$SyntaxError.buildMessage(expected2, found),\n          expected2,\n          found,\n          location2\n        );\n      }\n      function peg$parsebody() {\n        let s0, s1;\n        s0 = [];\n        s1 = peg$parsecomment_only_line();\n        if (s1 === peg$FAILED) {\n          s1 = peg$parserow_with_end();\n          if (s1 === peg$FAILED) {\n            s1 = peg$parserow_without_end();\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          while (s1 !== peg$FAILED) {\n            s0.push(s1);\n            s1 = peg$parsecomment_only_line();\n            if (s1 === peg$FAILED) {\n              s1 = peg$parserow_with_end();\n              if (s1 === peg$FAILED) {\n                s1 = peg$parserow_without_end();\n              }\n            }\n          }\n        } else {\n          s0 = peg$FAILED;\n        }\n        if (s0 === peg$FAILED) {\n          s0 = peg$currPos;\n          s1 = peg$parseEOL();\n          if (s1 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$f0();\n          }\n          s0 = s1;\n        }\n        return s0;\n      }\n      function peg$parserow_with_end() {\n        let s0, s1, s2, s3;\n        s0 = peg$currPos;\n        s1 = peg$currPos;\n        s2 = peg$parserow_items();\n        if (s2 === peg$FAILED) {\n          s2 = null;\n        }\n        peg$savedPos = s1;\n        s2 = peg$f1(s2);\n        s1 = s2;\n        s2 = peg$parserow_sep();\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parsetrailing_comment();\n          if (s3 === peg$FAILED) {\n            s3 = null;\n          }\n          peg$savedPos = s0;\n          s0 = peg$f2(s1, s2, s3);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parserow_without_end() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        s1 = peg$parserow_items();\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parsetrailing_comment();\n          if (s2 === peg$FAILED) {\n            s2 = null;\n          }\n          peg$savedPos = s0;\n          s0 = peg$f3(s1, s2);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsetrailing_comment() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        s1 = [];\n        s2 = peg$parsewhitespace();\n        while (s2 !== peg$FAILED) {\n          s1.push(s2);\n          s2 = peg$parsewhitespace();\n        }\n        s2 = peg$parsesame_line_comment();\n        if (s2 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s0 = peg$f4(s2);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsecomment_only_line() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        s1 = [];\n        s2 = peg$parsewhitespace();\n        while (s2 !== peg$FAILED) {\n          s1.push(s2);\n          s2 = peg$parsewhitespace();\n        }\n        s2 = peg$parseown_line_comment();\n        if (s2 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s0 = peg$f5(s2);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsetoken() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        s1 = peg$currPos;\n        peg$silentFails++;\n        s2 = peg$parserow_sep();\n        if (s2 === peg$FAILED) {\n          s2 = peg$parsecol_sep();\n          if (s2 === peg$FAILED) {\n            s2 = peg$parsetrailing_comment();\n            if (s2 === peg$FAILED) {\n              s2 = peg$parseown_line_comment();\n            }\n          }\n        }\n        peg$silentFails--;\n        if (s2 === peg$FAILED) {\n          s1 = void 0;\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n        if (s1 !== peg$FAILED) {\n          if (input.length > peg$currPos) {\n            s2 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s2 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e0);\n            }\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f6(s2);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsecell() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        s1 = [];\n        s2 = peg$parsetoken();\n        if (s2 !== peg$FAILED) {\n          while (s2 !== peg$FAILED) {\n            s1.push(s2);\n            s2 = peg$parsetoken();\n          }\n        } else {\n          s1 = peg$FAILED;\n        }\n        if (s1 !== peg$FAILED) {\n          s0 = input.substring(s0, peg$currPos);\n        } else {\n          s0 = s1;\n        }\n        return s0;\n      }\n      function peg$parseseparated_cell() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        s1 = peg$parsecol_sep();\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parsecell();\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f7(s1, s2);\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$parsecol_sep();\n          if (s1 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$f8(s1);\n          }\n          s0 = s1;\n        }\n        return s0;\n      }\n      function peg$parserow_items() {\n        let s0, s1, s2, s3;\n        s0 = peg$currPos;\n        s1 = peg$parsecell();\n        if (s1 !== peg$FAILED) {\n          s2 = [];\n          s3 = peg$parseseparated_cell();\n          while (s3 !== peg$FAILED) {\n            s2.push(s3);\n            s3 = peg$parseseparated_cell();\n          }\n          peg$savedPos = s0;\n          s0 = peg$f9(s1, s2);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        if (s0 === peg$FAILED) {\n          s0 = peg$currPos;\n          s1 = [];\n          s2 = peg$parseseparated_cell();\n          if (s2 !== peg$FAILED) {\n            while (s2 !== peg$FAILED) {\n              s1.push(s2);\n              s2 = peg$parseseparated_cell();\n            }\n          } else {\n            s1 = peg$FAILED;\n          }\n          if (s1 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$f10(s1);\n          }\n          s0 = s1;\n        }\n        return s0;\n      }\n      function peg$parsesame_line_comment() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f11(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f12(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parseown_line_comment() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f13(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f14(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsewhitespace() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f15(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f16(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parserow_sep() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f17(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f18(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsecol_sep() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f19(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f20(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parseEOL() {\n        let s0, s1;\n        s0 = peg$currPos;\n        peg$silentFails++;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        peg$silentFails--;\n        if (s1 === peg$FAILED) {\n          s0 = void 0;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function processRow(leadCell, otherCells) {\n        const cells = [leadCell || []];\n        const seps = [];\n        for (const x of otherCells) {\n          cells.push(x.cell || []);\n          seps.push(x.colSep);\n        }\n        return { cells, colSeps: seps };\n      }\n      if (!options.isWhitespace) {\n        try {\n          Object.assign(\n            options,\n            createMatchers([\"\\\\\", \"hline\", \"cr\"], [\"&\"])\n          );\n        } catch (e) {\n          console.warn(\"Error when initializing parser\", e);\n        }\n      }\n      peg$result = peg$startRuleFunction();\n      const peg$success = peg$result !== peg$FAILED && peg$currPos === input.length;\n      function peg$throw() {\n        if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n          peg$fail(peg$endExpectation());\n        }\n        throw peg$buildStructuredError(\n          peg$maxFailExpected,\n          peg$maxFailPos < input.length ? peg$getUnicode(peg$maxFailPos) : null,\n          peg$maxFailPos < input.length ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n        );\n      }\n      if (options.peg$library) {\n        return (\n          /** @type {any} */\n          {\n            peg$result,\n            peg$currPos,\n            peg$FAILED,\n            peg$maxFailExpected,\n            peg$maxFailPos,\n            peg$success,\n            peg$throw: peg$success ? void 0 : peg$throw\n          }\n        );\n      }\n      if (peg$success) {\n        return peg$result;\n      } else {\n        peg$throw();\n      }\n    }\n    return {\n      StartRules: [\"body\"],\n      SyntaxError: peg$SyntaxError,\n      parse: peg$parse\n    };\n  })()\n);\n","export default (\n  // @generated by Peggy 5.1.0.\n  //\n  // https://peggyjs.org/\n  (function() {\n    \"use strict\";\n    class peg$SyntaxError extends SyntaxError {\n      constructor(message, expected, found, location) {\n        super(message);\n        this.expected = expected;\n        this.found = found;\n        this.location = location;\n        this.name = \"SyntaxError\";\n      }\n      format(sources) {\n        let str = \"Error: \" + this.message;\n        if (this.location) {\n          let src = null;\n          const st = sources.find((s2) => s2.source === this.location.source);\n          if (st) {\n            src = st.text.split(/\\r\\n|\\n|\\r/g);\n          }\n          const s = this.location.start;\n          const offset_s = this.location.source && typeof this.location.source.offset === \"function\" ? this.location.source.offset(s) : s;\n          const loc = this.location.source + \":\" + offset_s.line + \":\" + offset_s.column;\n          if (src) {\n            const e = this.location.end;\n            const filler = \"\".padEnd(offset_s.line.toString().length, \" \");\n            const line = src[s.line - 1];\n            const last = s.line === e.line ? e.column : line.length + 1;\n            const hatLen = last - s.column || 1;\n            str += \"\\n --> \" + loc + \"\\n\" + filler + \" |\\n\" + offset_s.line + \" | \" + line + \"\\n\" + filler + \" | \" + \"\".padEnd(s.column - 1, \" \") + \"\".padEnd(hatLen, \"^\");\n          } else {\n            str += \"\\n at \" + loc;\n          }\n        }\n        return str;\n      }\n      static buildMessage(expected, found) {\n        function hex(ch) {\n          return ch.codePointAt(0).toString(16).toUpperCase();\n        }\n        const nonPrintable = Object.prototype.hasOwnProperty.call(RegExp.prototype, \"unicode\") ? new RegExp(\"[\\\\p{C}\\\\p{Mn}\\\\p{Mc}]\", \"gu\") : null;\n        function unicodeEscape(s) {\n          if (nonPrintable) {\n            return s.replace(nonPrintable, (ch) => \"\\\\u{\" + hex(ch) + \"}\");\n          }\n          return s;\n        }\n        function literalEscape(s) {\n          return unicodeEscape(s.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"').replace(/\\0/g, \"\\\\0\").replace(/\\t/g, \"\\\\t\").replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\").replace(/[\\x00-\\x0F]/g, (ch) => \"\\\\x0\" + hex(ch)).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => \"\\\\x\" + hex(ch)));\n        }\n        function classEscape(s) {\n          return unicodeEscape(s.replace(/\\\\/g, \"\\\\\\\\\").replace(/\\]/g, \"\\\\]\").replace(/\\^/g, \"\\\\^\").replace(/-/g, \"\\\\-\").replace(/\\0/g, \"\\\\0\").replace(/\\t/g, \"\\\\t\").replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\").replace(/[\\x00-\\x0F]/g, (ch) => \"\\\\x0\" + hex(ch)).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => \"\\\\x\" + hex(ch)));\n        }\n        const DESCRIBE_EXPECTATION_FNS = {\n          literal(expectation) {\n            return '\"' + literalEscape(expectation.text) + '\"';\n          },\n          class(expectation) {\n            const escapedParts = expectation.parts.map(\n              (part) => Array.isArray(part) ? classEscape(part[0]) + \"-\" + classEscape(part[1]) : classEscape(part)\n            );\n            return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts.join(\"\") + \"]\" + (expectation.unicode ? \"u\" : \"\");\n          },\n          any() {\n            return \"any character\";\n          },\n          end() {\n            return \"end of input\";\n          },\n          other(expectation) {\n            return expectation.description;\n          }\n        };\n        function describeExpectation(expectation) {\n          return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n        }\n        function describeExpected(expected2) {\n          const descriptions = expected2.map(describeExpectation);\n          descriptions.sort();\n          if (descriptions.length > 0) {\n            let j = 1;\n            for (let i = 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          switch (descriptions.length) {\n            case 1:\n              return descriptions[0];\n            case 2:\n              return descriptions[0] + \" or \" + descriptions[1];\n            default:\n              return descriptions.slice(0, -1).join(\", \") + \", or \" + descriptions[descriptions.length - 1];\n          }\n        }\n        function describeFound(found2) {\n          return found2 ? '\"' + literalEscape(found2) + '\"' : \"end of input\";\n        }\n        return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n      }\n    }\n    function peg$parse(input, options) {\n      options = options !== void 0 ? options : {};\n      const peg$FAILED = {};\n      const peg$source = options.grammarSource;\n      const peg$startRuleFunctions = {\n        args_spec_list: peg$parseargs_spec_list\n      };\n      let peg$startRuleFunction = peg$parseargs_spec_list;\n      const peg$c0 = \"+\";\n      const peg$c1 = \"v\";\n      const peg$c2 = \"b\";\n      const peg$c3 = \"!\";\n      const peg$c4 = \"D\";\n      const peg$c5 = \"d\";\n      const peg$c6 = \"s\";\n      const peg$c7 = \"O\";\n      const peg$c8 = \"o\";\n      const peg$c9 = \"e\";\n      const peg$c10 = \"E\";\n      const peg$c11 = \"t\";\n      const peg$c12 = \"R\";\n      const peg$c13 = \"r\";\n      const peg$c14 = \"u\";\n      const peg$c15 = \"m\";\n      const peg$c16 = \"{\";\n      const peg$c17 = \"}\";\n      const peg$c18 = \"\\\\\";\n      const peg$r0 = /^[{ ]/;\n      const peg$r1 = /^[\\n\\r ]/;\n      const peg$r2 = /^[a-zA-Z]/;\n      const peg$r3 = /^[{}]/;\n      const peg$e0 = peg$literalExpectation(\"+\", false);\n      const peg$e1 = peg$literalExpectation(\"v\", false);\n      const peg$e2 = peg$anyExpectation();\n      const peg$e3 = peg$literalExpectation(\"b\", false);\n      const peg$e4 = peg$literalExpectation(\"!\", false);\n      const peg$e5 = peg$literalExpectation(\"D\", false);\n      const peg$e6 = peg$literalExpectation(\"d\", false);\n      const peg$e7 = peg$literalExpectation(\"s\", false);\n      const peg$e8 = peg$literalExpectation(\"O\", false);\n      const peg$e9 = peg$literalExpectation(\"o\", false);\n      const peg$e10 = peg$literalExpectation(\"e\", false);\n      const peg$e11 = peg$literalExpectation(\"E\", false);\n      const peg$e12 = peg$literalExpectation(\"t\", false);\n      const peg$e13 = peg$literalExpectation(\"R\", false);\n      const peg$e14 = peg$literalExpectation(\"r\", false);\n      const peg$e15 = peg$literalExpectation(\"u\", false);\n      const peg$e16 = peg$classExpectation([\"{\", \" \"], false, false, false);\n      const peg$e17 = peg$literalExpectation(\"m\", false);\n      const peg$e18 = peg$literalExpectation(\"{\", false);\n      const peg$e19 = peg$literalExpectation(\"}\", false);\n      const peg$e20 = peg$classExpectation([\"\\n\", \"\\r\", \" \"], false, false, false);\n      const peg$e21 = peg$literalExpectation(\"\\\\\", false);\n      const peg$e22 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"]], false, false, false);\n      const peg$e23 = peg$classExpectation([\"{\", \"}\"], false, false, false);\n      function peg$f0(x) {\n        return x;\n      }\n      function peg$f1(spec) {\n        return spec;\n      }\n      function peg$f2(spec) {\n        return spec;\n      }\n      function peg$f3(openBrace) {\n        return createNode(\"verbatim\", { openBrace, closeBrace: openBrace });\n      }\n      function peg$f4() {\n        return createNode(\"body\");\n      }\n      function peg$f5(leading_bang, spec) {\n        return leading_bang ? { ...spec, noLeadingWhitespace: true } : spec;\n      }\n      function peg$f6(braceSpec, defaultArg) {\n        return createNode(\"optional\", { ...braceSpec, defaultArg });\n      }\n      function peg$f7(braceSpec) {\n        return createNode(\"optional\", braceSpec);\n      }\n      function peg$f8() {\n        return createNode(\"optionalStar\");\n      }\n      function peg$f9(g) {\n        return createNode(\"optional\", { defaultArg: g });\n      }\n      function peg$f10() {\n        return createNode(\"optional\");\n      }\n      function peg$f11(args) {\n        return createNode(\"embellishment\", {\n          embellishmentTokens: args\n        });\n      }\n      function peg$f12(args, g) {\n        return createNode(\"embellishment\", {\n          embellishmentTokens: args,\n          defaultArg: g\n        });\n      }\n      function peg$f13(tok) {\n        return createNode(\"optionalToken\", { token: tok });\n      }\n      function peg$f14(braceSpec, defaultArg) {\n        return createNode(\"mandatory\", { ...braceSpec, defaultArg });\n      }\n      function peg$f15(braceSpec) {\n        return createNode(\"mandatory\", braceSpec);\n      }\n      function peg$f16(stopTokens) {\n        return createNode(\"until\", { stopTokens });\n      }\n      function peg$f17(x) {\n        return [x];\n      }\n      function peg$f18(g) {\n        return g.content;\n      }\n      function peg$f19() {\n        return createNode(\"mandatory\");\n      }\n      function peg$f20(openBrace, closeBrace) {\n        return { openBrace, closeBrace };\n      }\n      function peg$f21(g) {\n        return g.content.map(groupToStr).join(\"\");\n      }\n      function peg$f22(t) {\n        return [t];\n      }\n      function peg$f23(args) {\n        return args.filter((a) => !a.match(/^\\s*$/));\n      }\n      function peg$f24(content) {\n        return { type: \"group\", content };\n      }\n      function peg$f25() {\n        return \"\";\n      }\n      let peg$currPos = options.peg$currPos | 0;\n      let peg$savedPos = peg$currPos;\n      const peg$posDetailsCache = [{ line: 1, column: 1 }];\n      let peg$maxFailPos = peg$currPos;\n      let peg$maxFailExpected = options.peg$maxFailExpected || [];\n      let peg$silentFails = options.peg$silentFails | 0;\n      let peg$result;\n      if (options.startRule) {\n        if (!(options.startRule in peg$startRuleFunctions)) {\n          throw new Error(`Can't start parsing from rule \"` + options.startRule + '\".');\n        }\n        peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n      }\n      function text() {\n        return input.substring(peg$savedPos, peg$currPos);\n      }\n      function offset() {\n        return peg$savedPos;\n      }\n      function range() {\n        return {\n          source: peg$source,\n          start: peg$savedPos,\n          end: peg$currPos\n        };\n      }\n      function location() {\n        return peg$computeLocation(peg$savedPos, peg$currPos);\n      }\n      function expected(description, location2) {\n        location2 = location2 !== void 0 ? location2 : peg$computeLocation(peg$savedPos, peg$currPos);\n        throw peg$buildStructuredError(\n          [peg$otherExpectation(description)],\n          input.substring(peg$savedPos, peg$currPos),\n          location2\n        );\n      }\n      function error(message, location2) {\n        location2 = location2 !== void 0 ? location2 : peg$computeLocation(peg$savedPos, peg$currPos);\n        throw peg$buildSimpleError(message, location2);\n      }\n      function peg$getUnicode(pos = peg$currPos) {\n        const cp = input.codePointAt(pos);\n        if (cp === void 0) {\n          return \"\";\n        }\n        return String.fromCodePoint(cp);\n      }\n      function peg$literalExpectation(text2, ignoreCase) {\n        return { type: \"literal\", text: text2, ignoreCase };\n      }\n      function peg$classExpectation(parts, inverted, ignoreCase, unicode) {\n        return { type: \"class\", parts, inverted, ignoreCase, unicode };\n      }\n      function peg$anyExpectation() {\n        return { type: \"any\" };\n      }\n      function peg$endExpectation() {\n        return { type: \"end\" };\n      }\n      function peg$otherExpectation(description) {\n        return { type: \"other\", description };\n      }\n      function peg$computePosDetails(pos) {\n        let details = peg$posDetailsCache[pos];\n        let p;\n        if (details) {\n          return details;\n        } else {\n          if (pos >= peg$posDetailsCache.length) {\n            p = peg$posDetailsCache.length - 1;\n          } else {\n            p = pos;\n            while (!peg$posDetailsCache[--p]) {\n            }\n          }\n          details = peg$posDetailsCache[p];\n          details = {\n            line: details.line,\n            column: details.column\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            p++;\n          }\n          peg$posDetailsCache[pos] = details;\n          return details;\n        }\n      }\n      function peg$computeLocation(startPos, endPos, offset2) {\n        const startPosDetails = peg$computePosDetails(startPos);\n        const endPosDetails = peg$computePosDetails(endPos);\n        const res = {\n          source: peg$source,\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        if (offset2 && peg$source && typeof peg$source.offset === \"function\") {\n          res.start = peg$source.offset(res.start);\n          res.end = peg$source.offset(res.end);\n        }\n        return res;\n      }\n      function peg$fail(expected2) {\n        if (peg$currPos < peg$maxFailPos) {\n          return;\n        }\n        if (peg$currPos > peg$maxFailPos) {\n          peg$maxFailPos = peg$currPos;\n          peg$maxFailExpected = [];\n        }\n        peg$maxFailExpected.push(expected2);\n      }\n      function peg$buildSimpleError(message, location2) {\n        return new peg$SyntaxError(message, null, null, location2);\n      }\n      function peg$buildStructuredError(expected2, found, location2) {\n        return new peg$SyntaxError(\n          peg$SyntaxError.buildMessage(expected2, found),\n          expected2,\n          found,\n          location2\n        );\n      }\n      function peg$parseargs_spec_list() {\n        let s0, s1, s2, s3, s4;\n        s0 = peg$currPos;\n        s1 = [];\n        s2 = peg$currPos;\n        s3 = peg$parsewhitespace();\n        s4 = peg$parsearg_spec();\n        if (s4 !== peg$FAILED) {\n          peg$savedPos = s2;\n          s2 = peg$f0(s4);\n        } else {\n          peg$currPos = s2;\n          s2 = peg$FAILED;\n        }\n        while (s2 !== peg$FAILED) {\n          s1.push(s2);\n          s2 = peg$currPos;\n          s3 = peg$parsewhitespace();\n          s4 = peg$parsearg_spec();\n          if (s4 !== peg$FAILED) {\n            peg$savedPos = s2;\n            s2 = peg$f0(s4);\n          } else {\n            peg$currPos = s2;\n            s2 = peg$FAILED;\n          }\n        }\n        s2 = peg$parsewhitespace();\n        peg$savedPos = s0;\n        s0 = peg$f1(s1);\n        return s0;\n      }\n      function peg$parsearg_spec() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 43) {\n          s1 = peg$c0;\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 === peg$FAILED) {\n          s1 = null;\n        }\n        s2 = peg$parseoptional();\n        if (s2 === peg$FAILED) {\n          s2 = peg$parsemandatory();\n          if (s2 === peg$FAILED) {\n            s2 = peg$parseverbatim();\n            if (s2 === peg$FAILED) {\n              s2 = peg$parserequired();\n              if (s2 === peg$FAILED) {\n                s2 = peg$parsebody();\n                if (s2 === peg$FAILED) {\n                  s2 = peg$parseuntil();\n                }\n              }\n            }\n          }\n        }\n        if (s2 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s0 = peg$f2(s2);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parseverbatim() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 118) {\n          s1 = peg$c1;\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e1);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          if (input.length > peg$currPos) {\n            s2 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s2 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e2);\n            }\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f3(s2);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsebody() {\n        let s0, s1;\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 98) {\n          s1 = peg$c2;\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e3);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$f4();\n        }\n        s0 = s1;\n        return s0;\n      }\n      function peg$parseoptional() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 33) {\n          s1 = peg$c3;\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e4);\n          }\n        }\n        if (s1 === peg$FAILED) {\n          s1 = null;\n        }\n        s2 = peg$parseoptional_star();\n        if (s2 === peg$FAILED) {\n          s2 = peg$parseoptional_standard();\n          if (s2 === peg$FAILED) {\n            s2 = peg$parseoptional_delimited();\n            if (s2 === peg$FAILED) {\n              s2 = peg$parseoptional_embellishment();\n              if (s2 === peg$FAILED) {\n                s2 = peg$parseoptional_token();\n              }\n            }\n          }\n        }\n        if (s2 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s0 = peg$f5(s1, s2);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parseoptional_delimited() {\n        let s0, s1, s2, s3;\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 68) {\n          s1 = peg$c4;\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e5);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parsebrace_spec();\n          s3 = peg$parsearg();\n          if (s3 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f6(s2, s3);\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          if (input.charCodeAt(peg$currPos) === 100) {\n            s1 = peg$c5;\n            peg$currPos++;\n          } else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e6);\n            }\n          }\n          if (s1 !== peg$FAILED) {\n            s2 = peg$parsebrace_spec();\n            peg$savedPos = s0;\n            s0 = peg$f7(s2);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        }\n        return s0;\n      }\n      function peg$parseoptional_star() {\n        let s0, s1;\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 115) {\n          s1 = peg$c6;\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e7);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$f8();\n        }\n        s0 = s1;\n        return s0;\n      }\n      function peg$parseoptional_standard() {\n        let s0, s1, s2, s3;\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 79) {\n          s1 = peg$c7;\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e8);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parsewhitespace();\n          s3 = peg$parsearg();\n          if (s3 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f9(s3);\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          if (input.charCodeAt(peg$currPos) === 111) {\n            s1 = peg$c8;\n            peg$currPos++;\n          } else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e9);\n            }\n          }\n          if (s1 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$f10();\n          }\n          s0 = s1;\n        }\n        return s0;\n      }\n      function peg$parseoptional_embellishment() {\n        let s0, s1, s2, s3, s4, s5;\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 101) {\n          s1 = peg$c9;\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e10);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parsewhitespace();\n          s3 = peg$parseargs();\n          if (s3 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f11(s3);\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          if (input.charCodeAt(peg$currPos) === 69) {\n            s1 = peg$c10;\n            peg$currPos++;\n          } else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e11);\n            }\n          }\n          if (s1 !== peg$FAILED) {\n            s2 = peg$parsewhitespace();\n            s3 = peg$parseargs();\n            if (s3 !== peg$FAILED) {\n              s4 = peg$parsewhitespace();\n              s5 = peg$parseargs();\n              if (s5 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s0 = peg$f12(s3, s5);\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      function peg$parseoptional_token() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 116) {\n          s1 = peg$c11;\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e12);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          if (input.length > peg$currPos) {\n            s2 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s2 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e2);\n            }\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f13(s2);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parserequired() {\n        let s0, s1, s2, s3;\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 82) {\n          s1 = peg$c12;\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e13);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parsebrace_spec();\n          s3 = peg$parsearg();\n          if (s3 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f14(s2, s3);\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          if (input.charCodeAt(peg$currPos) === 114) {\n            s1 = peg$c13;\n            peg$currPos++;\n          } else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e14);\n            }\n          }\n          if (s1 !== peg$FAILED) {\n            s2 = peg$parsebrace_spec();\n            peg$savedPos = s0;\n            s0 = peg$f15(s2);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        }\n        return s0;\n      }\n      function peg$parseuntil() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 117) {\n          s1 = peg$c14;\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e15);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parseuntil_stop_token();\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f16(s2);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parseuntil_stop_token() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        s1 = peg$currPos;\n        peg$silentFails++;\n        s2 = input.charAt(peg$currPos);\n        if (peg$r0.test(s2)) {\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e16);\n          }\n        }\n        peg$silentFails--;\n        if (s2 === peg$FAILED) {\n          s1 = void 0;\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n        if (s1 !== peg$FAILED) {\n          if (input.length > peg$currPos) {\n            s2 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s2 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e2);\n            }\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f17(s2);\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$parsebraced_group();\n          if (s1 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$f18(s1);\n          }\n          s0 = s1;\n        }\n        return s0;\n      }\n      function peg$parsemandatory() {\n        let s0, s1;\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 109) {\n          s1 = peg$c15;\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e17);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$f19();\n        }\n        s0 = s1;\n        return s0;\n      }\n      function peg$parsebrace_spec() {\n        let s0, s1, s2, s3, s4, s5;\n        s0 = peg$currPos;\n        s1 = peg$currPos;\n        s2 = peg$currPos;\n        s3 = peg$currPos;\n        peg$silentFails++;\n        s4 = peg$parsewhitespace_token();\n        peg$silentFails--;\n        if (s4 === peg$FAILED) {\n          s3 = void 0;\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parsemacro();\n          if (s4 === peg$FAILED) {\n            if (input.length > peg$currPos) {\n              s4 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s4 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e2);\n              }\n            }\n          }\n          if (s4 !== peg$FAILED) {\n            s3 = [s3, s4];\n            s2 = s3;\n          } else {\n            peg$currPos = s2;\n            s2 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s2;\n          s2 = peg$FAILED;\n        }\n        if (s2 === peg$FAILED) {\n          s2 = null;\n        }\n        s1 = input.substring(s1, peg$currPos);\n        s2 = peg$currPos;\n        s3 = peg$currPos;\n        s4 = peg$currPos;\n        peg$silentFails++;\n        s5 = peg$parsewhitespace_token();\n        peg$silentFails--;\n        if (s5 === peg$FAILED) {\n          s4 = void 0;\n        } else {\n          peg$currPos = s4;\n          s4 = peg$FAILED;\n        }\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parsemacro();\n          if (s5 === peg$FAILED) {\n            if (input.length > peg$currPos) {\n              s5 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s5 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e2);\n              }\n            }\n          }\n          if (s5 !== peg$FAILED) {\n            s4 = [s4, s5];\n            s3 = s4;\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n        if (s3 === peg$FAILED) {\n          s3 = null;\n        }\n        s2 = input.substring(s2, peg$currPos);\n        peg$savedPos = s0;\n        s0 = peg$f20(s1, s2);\n        return s0;\n      }\n      function peg$parsearg() {\n        let s0, s1;\n        s0 = peg$parsetoken();\n        if (s0 === peg$FAILED) {\n          s0 = peg$currPos;\n          s1 = peg$parsebraced_group();\n          if (s1 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$f21(s1);\n          }\n          s0 = s1;\n        }\n        return s0;\n      }\n      function peg$parseargs() {\n        let s0, s1, s2, s3;\n        s0 = peg$currPos;\n        s1 = peg$parsetoken();\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$f22(s1);\n        }\n        s0 = s1;\n        if (s0 === peg$FAILED) {\n          s0 = peg$currPos;\n          if (input.charCodeAt(peg$currPos) === 123) {\n            s1 = peg$c16;\n            peg$currPos++;\n          } else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e18);\n            }\n          }\n          if (s1 !== peg$FAILED) {\n            s2 = [];\n            s3 = peg$parsearg();\n            if (s3 === peg$FAILED) {\n              s3 = peg$parsewhitespace_token();\n            }\n            while (s3 !== peg$FAILED) {\n              s2.push(s3);\n              s3 = peg$parsearg();\n              if (s3 === peg$FAILED) {\n                s3 = peg$parsewhitespace_token();\n              }\n            }\n            if (input.charCodeAt(peg$currPos) === 125) {\n              s3 = peg$c17;\n              peg$currPos++;\n            } else {\n              s3 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e19);\n              }\n            }\n            if (s3 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s0 = peg$f23(s2);\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      function peg$parsebraced_group() {\n        let s0, s1, s2, s3, s4, s5, s6, s7;\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 123) {\n          s1 = peg$c16;\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e18);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          s2 = [];\n          s3 = peg$currPos;\n          s4 = peg$currPos;\n          s5 = peg$currPos;\n          peg$silentFails++;\n          if (input.charCodeAt(peg$currPos) === 125) {\n            s6 = peg$c17;\n            peg$currPos++;\n          } else {\n            s6 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e19);\n            }\n          }\n          peg$silentFails--;\n          if (s6 === peg$FAILED) {\n            s5 = void 0;\n          } else {\n            peg$currPos = s5;\n            s5 = peg$FAILED;\n          }\n          if (s5 !== peg$FAILED) {\n            s6 = peg$currPos;\n            peg$silentFails++;\n            s7 = peg$parsebraced_group();\n            peg$silentFails--;\n            if (s7 === peg$FAILED) {\n              s6 = void 0;\n            } else {\n              peg$currPos = s6;\n              s6 = peg$FAILED;\n            }\n            if (s6 !== peg$FAILED) {\n              s7 = peg$parsetoken();\n              if (s7 === peg$FAILED) {\n                s7 = peg$parsewhitespace_token();\n              }\n              if (s7 !== peg$FAILED) {\n                s5 = [s5, s6, s7];\n                s4 = s5;\n              } else {\n                peg$currPos = s4;\n                s4 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s4;\n              s4 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s4;\n            s4 = peg$FAILED;\n          }\n          if (s4 !== peg$FAILED) {\n            s3 = input.substring(s3, peg$currPos);\n          } else {\n            s3 = s4;\n          }\n          if (s3 === peg$FAILED) {\n            s3 = peg$parsebraced_group();\n          }\n          while (s3 !== peg$FAILED) {\n            s2.push(s3);\n            s3 = peg$currPos;\n            s4 = peg$currPos;\n            s5 = peg$currPos;\n            peg$silentFails++;\n            if (input.charCodeAt(peg$currPos) === 125) {\n              s6 = peg$c17;\n              peg$currPos++;\n            } else {\n              s6 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e19);\n              }\n            }\n            peg$silentFails--;\n            if (s6 === peg$FAILED) {\n              s5 = void 0;\n            } else {\n              peg$currPos = s5;\n              s5 = peg$FAILED;\n            }\n            if (s5 !== peg$FAILED) {\n              s6 = peg$currPos;\n              peg$silentFails++;\n              s7 = peg$parsebraced_group();\n              peg$silentFails--;\n              if (s7 === peg$FAILED) {\n                s6 = void 0;\n              } else {\n                peg$currPos = s6;\n                s6 = peg$FAILED;\n              }\n              if (s6 !== peg$FAILED) {\n                s7 = peg$parsetoken();\n                if (s7 === peg$FAILED) {\n                  s7 = peg$parsewhitespace_token();\n                }\n                if (s7 !== peg$FAILED) {\n                  s5 = [s5, s6, s7];\n                  s4 = s5;\n                } else {\n                  peg$currPos = s4;\n                  s4 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s4;\n                s4 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s4;\n              s4 = peg$FAILED;\n            }\n            if (s4 !== peg$FAILED) {\n              s3 = input.substring(s3, peg$currPos);\n            } else {\n              s3 = s4;\n            }\n            if (s3 === peg$FAILED) {\n              s3 = peg$parsebraced_group();\n            }\n          }\n          if (input.charCodeAt(peg$currPos) === 125) {\n            s3 = peg$c17;\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e19);\n            }\n          }\n          if (s3 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f24(s2);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsewhitespace() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        s1 = [];\n        s2 = peg$parsewhitespace_token();\n        while (s2 !== peg$FAILED) {\n          s1.push(s2);\n          s2 = peg$parsewhitespace_token();\n        }\n        peg$savedPos = s0;\n        s1 = peg$f25();\n        s0 = s1;\n        return s0;\n      }\n      function peg$parsewhitespace_token() {\n        let s0;\n        s0 = input.charAt(peg$currPos);\n        if (peg$r1.test(s0)) {\n          peg$currPos++;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e20);\n          }\n        }\n        return s0;\n      }\n      function peg$parsemacro() {\n        let s0, s1, s2, s3, s4;\n        s0 = peg$currPos;\n        s1 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 92) {\n          s2 = peg$c18;\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e21);\n          }\n        }\n        if (s2 !== peg$FAILED) {\n          s3 = [];\n          s4 = input.charAt(peg$currPos);\n          if (peg$r2.test(s4)) {\n            peg$currPos++;\n          } else {\n            s4 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e22);\n            }\n          }\n          if (s4 !== peg$FAILED) {\n            while (s4 !== peg$FAILED) {\n              s3.push(s4);\n              s4 = input.charAt(peg$currPos);\n              if (peg$r2.test(s4)) {\n                peg$currPos++;\n              } else {\n                s4 = peg$FAILED;\n                if (peg$silentFails === 0) {\n                  peg$fail(peg$e22);\n                }\n              }\n            }\n          } else {\n            s3 = peg$FAILED;\n          }\n          if (s3 !== peg$FAILED) {\n            s2 = [s2, s3];\n            s1 = s2;\n          } else {\n            peg$currPos = s1;\n            s1 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n        if (s1 !== peg$FAILED) {\n          s0 = input.substring(s0, peg$currPos);\n        } else {\n          s0 = s1;\n        }\n        if (s0 === peg$FAILED) {\n          s0 = peg$currPos;\n          s1 = peg$currPos;\n          if (input.charCodeAt(peg$currPos) === 92) {\n            s2 = peg$c18;\n            peg$currPos++;\n          } else {\n            s2 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e21);\n            }\n          }\n          if (s2 !== peg$FAILED) {\n            s3 = peg$currPos;\n            peg$silentFails++;\n            s4 = input.charAt(peg$currPos);\n            if (peg$r2.test(s4)) {\n              peg$currPos++;\n            } else {\n              s4 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e22);\n              }\n            }\n            peg$silentFails--;\n            if (s4 === peg$FAILED) {\n              s3 = void 0;\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n            if (s3 !== peg$FAILED) {\n              if (input.length > peg$currPos) {\n                s4 = input.charAt(peg$currPos);\n                peg$currPos++;\n              } else {\n                s4 = peg$FAILED;\n                if (peg$silentFails === 0) {\n                  peg$fail(peg$e2);\n                }\n              }\n              if (s4 !== peg$FAILED) {\n                s2 = [s2, s3, s4];\n                s1 = s2;\n              } else {\n                peg$currPos = s1;\n                s1 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s1;\n              s1 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s1;\n            s1 = peg$FAILED;\n          }\n          if (s1 !== peg$FAILED) {\n            s0 = input.substring(s0, peg$currPos);\n          } else {\n            s0 = s1;\n          }\n        }\n        return s0;\n      }\n      function peg$parsetoken() {\n        let s0, s1, s2, s3;\n        s0 = peg$parsemacro();\n        if (s0 === peg$FAILED) {\n          s0 = peg$currPos;\n          s1 = peg$currPos;\n          peg$silentFails++;\n          s2 = input.charAt(peg$currPos);\n          if (peg$r3.test(s2)) {\n            peg$currPos++;\n          } else {\n            s2 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e23);\n            }\n          }\n          peg$silentFails--;\n          if (s2 === peg$FAILED) {\n            s1 = void 0;\n          } else {\n            peg$currPos = s1;\n            s1 = peg$FAILED;\n          }\n          if (s1 !== peg$FAILED) {\n            s2 = peg$currPos;\n            peg$silentFails++;\n            s3 = peg$parsewhitespace_token();\n            peg$silentFails--;\n            if (s3 === peg$FAILED) {\n              s2 = void 0;\n            } else {\n              peg$currPos = s2;\n              s2 = peg$FAILED;\n            }\n            if (s2 !== peg$FAILED) {\n              if (input.length > peg$currPos) {\n                s3 = input.charAt(peg$currPos);\n                peg$currPos++;\n              } else {\n                s3 = peg$FAILED;\n                if (peg$silentFails === 0) {\n                  peg$fail(peg$e2);\n                }\n              }\n              if (s3 !== peg$FAILED) {\n                s0 = s3;\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      const DEFAULT_OPTIONS = {\n        optional: { openBrace: \"[\", closeBrace: \"]\" },\n        mandatory: { openBrace: \"{\", closeBrace: \"}\" }\n      };\n      function createNode(type, options2) {\n        const computedOptions = DEFAULT_OPTIONS[type] || {};\n        return { type, ...computedOptions, ...options2 };\n      }\n      function groupToStr(node) {\n        if (typeof node !== \"object\" || !node) {\n          return node;\n        }\n        if (node.type === \"group\") {\n          return `{${node.content.map(groupToStr).join(\"\")}}`;\n        }\n        return node;\n      }\n      peg$result = peg$startRuleFunction();\n      const peg$success = peg$result !== peg$FAILED && peg$currPos === input.length;\n      function peg$throw() {\n        if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n          peg$fail(peg$endExpectation());\n        }\n        throw peg$buildStructuredError(\n          peg$maxFailExpected,\n          peg$maxFailPos < input.length ? peg$getUnicode(peg$maxFailPos) : null,\n          peg$maxFailPos < input.length ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n        );\n      }\n      if (options.peg$library) {\n        return (\n          /** @type {any} */\n          {\n            peg$result,\n            peg$currPos,\n            peg$FAILED,\n            peg$maxFailExpected,\n            peg$maxFailPos,\n            peg$success,\n            peg$throw: peg$success ? void 0 : peg$throw\n          }\n        );\n      }\n      if (peg$success) {\n        return peg$result;\n      } else {\n        peg$throw();\n      }\n    }\n    return {\n      StartRules: [\"args_spec_list\"],\n      SyntaxError: peg$SyntaxError,\n      parse: peg$parse\n    };\n  })()\n);\n","export default (\n  // @generated by Peggy 5.1.0.\n  //\n  // https://peggyjs.org/\n  (function() {\n    \"use strict\";\n    class peg$SyntaxError extends SyntaxError {\n      constructor(message, expected, found, location) {\n        super(message);\n        this.expected = expected;\n        this.found = found;\n        this.location = location;\n        this.name = \"SyntaxError\";\n      }\n      format(sources) {\n        let str = \"Error: \" + this.message;\n        if (this.location) {\n          let src = null;\n          const st = sources.find((s2) => s2.source === this.location.source);\n          if (st) {\n            src = st.text.split(/\\r\\n|\\n|\\r/g);\n          }\n          const s = this.location.start;\n          const offset_s = this.location.source && typeof this.location.source.offset === \"function\" ? this.location.source.offset(s) : s;\n          const loc = this.location.source + \":\" + offset_s.line + \":\" + offset_s.column;\n          if (src) {\n            const e = this.location.end;\n            const filler = \"\".padEnd(offset_s.line.toString().length, \" \");\n            const line = src[s.line - 1];\n            const last = s.line === e.line ? e.column : line.length + 1;\n            const hatLen = last - s.column || 1;\n            str += \"\\n --> \" + loc + \"\\n\" + filler + \" |\\n\" + offset_s.line + \" | \" + line + \"\\n\" + filler + \" | \" + \"\".padEnd(s.column - 1, \" \") + \"\".padEnd(hatLen, \"^\");\n          } else {\n            str += \"\\n at \" + loc;\n          }\n        }\n        return str;\n      }\n      static buildMessage(expected, found) {\n        function hex(ch) {\n          return ch.codePointAt(0).toString(16).toUpperCase();\n        }\n        const nonPrintable = Object.prototype.hasOwnProperty.call(RegExp.prototype, \"unicode\") ? new RegExp(\"[\\\\p{C}\\\\p{Mn}\\\\p{Mc}]\", \"gu\") : null;\n        function unicodeEscape(s) {\n          if (nonPrintable) {\n            return s.replace(nonPrintable, (ch) => \"\\\\u{\" + hex(ch) + \"}\");\n          }\n          return s;\n        }\n        function literalEscape(s) {\n          return unicodeEscape(s.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"').replace(/\\0/g, \"\\\\0\").replace(/\\t/g, \"\\\\t\").replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\").replace(/[\\x00-\\x0F]/g, (ch) => \"\\\\x0\" + hex(ch)).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => \"\\\\x\" + hex(ch)));\n        }\n        function classEscape(s) {\n          return unicodeEscape(s.replace(/\\\\/g, \"\\\\\\\\\").replace(/\\]/g, \"\\\\]\").replace(/\\^/g, \"\\\\^\").replace(/-/g, \"\\\\-\").replace(/\\0/g, \"\\\\0\").replace(/\\t/g, \"\\\\t\").replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\").replace(/[\\x00-\\x0F]/g, (ch) => \"\\\\x0\" + hex(ch)).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => \"\\\\x\" + hex(ch)));\n        }\n        const DESCRIBE_EXPECTATION_FNS = {\n          literal(expectation) {\n            return '\"' + literalEscape(expectation.text) + '\"';\n          },\n          class(expectation) {\n            const escapedParts = expectation.parts.map(\n              (part) => Array.isArray(part) ? classEscape(part[0]) + \"-\" + classEscape(part[1]) : classEscape(part)\n            );\n            return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts.join(\"\") + \"]\" + (expectation.unicode ? \"u\" : \"\");\n          },\n          any() {\n            return \"any character\";\n          },\n          end() {\n            return \"end of input\";\n          },\n          other(expectation) {\n            return expectation.description;\n          }\n        };\n        function describeExpectation(expectation) {\n          return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n        }\n        function describeExpected(expected2) {\n          const descriptions = expected2.map(describeExpectation);\n          descriptions.sort();\n          if (descriptions.length > 0) {\n            let j = 1;\n            for (let i = 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          switch (descriptions.length) {\n            case 1:\n              return descriptions[0];\n            case 2:\n              return descriptions[0] + \" or \" + descriptions[1];\n            default:\n              return descriptions.slice(0, -1).join(\", \") + \", or \" + descriptions[descriptions.length - 1];\n          }\n        }\n        function describeFound(found2) {\n          return found2 ? '\"' + literalEscape(found2) + '\"' : \"end of input\";\n        }\n        return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n      }\n    }\n    function peg$parse(input, options) {\n      options = options !== void 0 ? options : {};\n      const peg$FAILED = {};\n      const peg$source = options.grammarSource;\n      const peg$startRuleFunctions = {\n        body: peg$parsebody\n      };\n      let peg$startRuleFunction = peg$parsebody;\n      const peg$e0 = peg$anyExpectation();\n      function peg$f0() {\n        return [];\n      }\n      function peg$f1(rowItems, trailingComment) {\n        return {\n          itemParts: [],\n          ...rowItems,\n          trailingComment,\n          trailingComma: true\n        };\n      }\n      function peg$f2(rowItems, trailingComment) {\n        return { ...rowItems, trailingComment };\n      }\n      function peg$f3(a, b) {\n        return processItem(a, b);\n      }\n      function peg$f4(b) {\n        return processItem(null, b);\n      }\n      function peg$f5(cell) {\n        return { cell };\n      }\n      function peg$f6() {\n        return {};\n      }\n      function peg$f7(part) {\n        return part;\n      }\n      function peg$f8(x) {\n        return x;\n      }\n      function peg$f9(space, x) {\n        return {\n          trailingComment: x,\n          leadingParbreak: space.parbreak > 0\n        };\n      }\n      function peg$f10(list) {\n        return {\n          whitespace: list.filter((x) => options.isWhitespace(x)).length,\n          parbreak: list.filter((x) => options.isParbreak(x)).length\n        };\n      }\n      function peg$f11() {\n        return !options.allowParenGroups;\n      }\n      function peg$f12(tok) {\n        return options.isSameLineComment(tok);\n      }\n      function peg$f13(tok) {\n        return tok;\n      }\n      function peg$f14(tok) {\n        return options.isOwnLineComment(tok);\n      }\n      function peg$f15(tok) {\n        return tok;\n      }\n      function peg$f16(tok) {\n        return options.isWhitespace(tok);\n      }\n      function peg$f17(tok) {\n        return tok;\n      }\n      function peg$f18(tok) {\n        return options.isParbreak(tok);\n      }\n      function peg$f19(tok) {\n        return tok;\n      }\n      function peg$f20(tok) {\n        return options.isComma(tok);\n      }\n      function peg$f21(tok) {\n        return tok;\n      }\n      function peg$f22(tok) {\n        return options.isEquals(tok);\n      }\n      function peg$f23(tok) {\n        return tok;\n      }\n      function peg$f24(tok) {\n        return options.isChar(tok, \"(\");\n      }\n      function peg$f25(tok) {\n        return tok;\n      }\n      function peg$f26(tok) {\n        return options.isChar(tok, \")\");\n      }\n      function peg$f27(tok) {\n        return tok;\n      }\n      let peg$currPos = options.peg$currPos | 0;\n      let peg$savedPos = peg$currPos;\n      const peg$posDetailsCache = [{ line: 1, column: 1 }];\n      let peg$maxFailPos = peg$currPos;\n      let peg$maxFailExpected = options.peg$maxFailExpected || [];\n      let peg$silentFails = options.peg$silentFails | 0;\n      let peg$result;\n      if (options.startRule) {\n        if (!(options.startRule in peg$startRuleFunctions)) {\n          throw new Error(`Can't start parsing from rule \"` + options.startRule + '\".');\n        }\n        peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n      }\n      function text() {\n        return input.substring(peg$savedPos, peg$currPos);\n      }\n      function offset() {\n        return peg$savedPos;\n      }\n      function range() {\n        return {\n          source: peg$source,\n          start: peg$savedPos,\n          end: peg$currPos\n        };\n      }\n      function location() {\n        return peg$computeLocation(peg$savedPos, peg$currPos);\n      }\n      function expected(description, location2) {\n        location2 = location2 !== void 0 ? location2 : peg$computeLocation(peg$savedPos, peg$currPos);\n        throw peg$buildStructuredError(\n          [peg$otherExpectation(description)],\n          input.substring(peg$savedPos, peg$currPos),\n          location2\n        );\n      }\n      function error(message, location2) {\n        location2 = location2 !== void 0 ? location2 : peg$computeLocation(peg$savedPos, peg$currPos);\n        throw peg$buildSimpleError(message, location2);\n      }\n      function peg$getUnicode(pos = peg$currPos) {\n        const cp = input.codePointAt(pos);\n        if (cp === void 0) {\n          return \"\";\n        }\n        return String.fromCodePoint(cp);\n      }\n      function peg$literalExpectation(text2, ignoreCase) {\n        return { type: \"literal\", text: text2, ignoreCase };\n      }\n      function peg$classExpectation(parts, inverted, ignoreCase, unicode) {\n        return { type: \"class\", parts, inverted, ignoreCase, unicode };\n      }\n      function peg$anyExpectation() {\n        return { type: \"any\" };\n      }\n      function peg$endExpectation() {\n        return { type: \"end\" };\n      }\n      function peg$otherExpectation(description) {\n        return { type: \"other\", description };\n      }\n      function peg$computePosDetails(pos) {\n        let details = peg$posDetailsCache[pos];\n        let p;\n        if (details) {\n          return details;\n        } else {\n          if (pos >= peg$posDetailsCache.length) {\n            p = peg$posDetailsCache.length - 1;\n          } else {\n            p = pos;\n            while (!peg$posDetailsCache[--p]) {\n            }\n          }\n          details = peg$posDetailsCache[p];\n          details = {\n            line: details.line,\n            column: details.column\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            p++;\n          }\n          peg$posDetailsCache[pos] = details;\n          return details;\n        }\n      }\n      function peg$computeLocation(startPos, endPos, offset2) {\n        const startPosDetails = peg$computePosDetails(startPos);\n        const endPosDetails = peg$computePosDetails(endPos);\n        const res = {\n          source: peg$source,\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        if (offset2 && peg$source && typeof peg$source.offset === \"function\") {\n          res.start = peg$source.offset(res.start);\n          res.end = peg$source.offset(res.end);\n        }\n        return res;\n      }\n      function peg$fail(expected2) {\n        if (peg$currPos < peg$maxFailPos) {\n          return;\n        }\n        if (peg$currPos > peg$maxFailPos) {\n          peg$maxFailPos = peg$currPos;\n          peg$maxFailExpected = [];\n        }\n        peg$maxFailExpected.push(expected2);\n      }\n      function peg$buildSimpleError(message, location2) {\n        return new peg$SyntaxError(message, null, null, location2);\n      }\n      function peg$buildStructuredError(expected2, found, location2) {\n        return new peg$SyntaxError(\n          peg$SyntaxError.buildMessage(expected2, found),\n          expected2,\n          found,\n          location2\n        );\n      }\n      function peg$parsebody() {\n        let s0, s1, s2;\n        s0 = [];\n        s1 = peg$parsecomment_only_line();\n        if (s1 === peg$FAILED) {\n          s1 = peg$parseitem_with_end();\n          if (s1 === peg$FAILED) {\n            s1 = peg$parseitem_without_end();\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          while (s1 !== peg$FAILED) {\n            s0.push(s1);\n            s1 = peg$parsecomment_only_line();\n            if (s1 === peg$FAILED) {\n              s1 = peg$parseitem_with_end();\n              if (s1 === peg$FAILED) {\n                s1 = peg$parseitem_without_end();\n              }\n            }\n          }\n        } else {\n          s0 = peg$FAILED;\n        }\n        if (s0 === peg$FAILED) {\n          s0 = peg$currPos;\n          s1 = [];\n          s2 = peg$parsewhitespace();\n          while (s2 !== peg$FAILED) {\n            s1.push(s2);\n            s2 = peg$parsewhitespace();\n          }\n          s2 = peg$parseEOL();\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f0();\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        }\n        return s0;\n      }\n      function peg$parseitem_with_end() {\n        let s0, s1, s2, s3, s4, s5, s6, s7, s8;\n        s0 = peg$currPos;\n        s1 = peg$parsewhitespace_or_parbreaks();\n        s2 = peg$parserow_items();\n        if (s2 === peg$FAILED) {\n          s2 = null;\n        }\n        s3 = peg$parsewhitespace_or_parbreaks();\n        s4 = peg$parseitem_sep();\n        if (s4 !== peg$FAILED) {\n          s5 = [];\n          s6 = peg$parsewhitespace();\n          while (s6 !== peg$FAILED) {\n            s5.push(s6);\n            s6 = peg$parsewhitespace();\n          }\n          s6 = peg$parsetrailing_comment();\n          if (s6 === peg$FAILED) {\n            s6 = null;\n          }\n          s7 = [];\n          s8 = peg$parsewhitespace();\n          while (s8 !== peg$FAILED) {\n            s7.push(s8);\n            s8 = peg$parsewhitespace();\n          }\n          peg$savedPos = s0;\n          s0 = peg$f1(s2, s6);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parseitem_without_end() {\n        let s0, s1, s2, s3;\n        s0 = peg$currPos;\n        s1 = peg$parsewhitespace_or_parbreaks();\n        s2 = peg$parserow_items();\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parsetrailing_comment();\n          if (s3 === peg$FAILED) {\n            s3 = null;\n          }\n          peg$savedPos = s0;\n          s0 = peg$f2(s2, s3);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parserow_items() {\n        let s0, s1, s2, s3;\n        s0 = peg$currPos;\n        s1 = peg$parseitem_part();\n        if (s1 !== peg$FAILED) {\n          s2 = [];\n          s3 = peg$parseseparated_part();\n          while (s3 !== peg$FAILED) {\n            s2.push(s3);\n            s3 = peg$parseseparated_part();\n          }\n          peg$savedPos = s0;\n          s0 = peg$f3(s1, s2);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        if (s0 === peg$FAILED) {\n          s0 = peg$currPos;\n          s1 = [];\n          s2 = peg$parseseparated_part();\n          if (s2 !== peg$FAILED) {\n            while (s2 !== peg$FAILED) {\n              s1.push(s2);\n              s2 = peg$parseseparated_part();\n            }\n          } else {\n            s1 = peg$FAILED;\n          }\n          if (s1 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$f4(s1);\n          }\n          s0 = s1;\n        }\n        return s0;\n      }\n      function peg$parseseparated_part() {\n        let s0, s1, s2, s3, s4;\n        s0 = peg$currPos;\n        s1 = [];\n        s2 = peg$parseparbreak();\n        while (s2 !== peg$FAILED) {\n          s1.push(s2);\n          s2 = peg$parseparbreak();\n        }\n        s2 = peg$parseequals();\n        if (s2 !== peg$FAILED) {\n          s3 = [];\n          s4 = peg$parseparbreak();\n          while (s4 !== peg$FAILED) {\n            s3.push(s4);\n            s4 = peg$parseparbreak();\n          }\n          s4 = peg$parseitem_part();\n          if (s4 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f5(s4);\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 = [];\n          s2 = peg$parseparbreak();\n          while (s2 !== peg$FAILED) {\n            s1.push(s2);\n            s2 = peg$parseparbreak();\n          }\n          s2 = peg$parseequals();\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f6();\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        }\n        return s0;\n      }\n      function peg$parseitem_part() {\n        let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;\n        s0 = peg$currPos;\n        s1 = [];\n        s2 = peg$parsewhitespace();\n        while (s2 !== peg$FAILED) {\n          s1.push(s2);\n          s2 = peg$parsewhitespace();\n        }\n        s2 = peg$currPos;\n        s3 = [];\n        s4 = peg$parsenon_whitespace_non_parbreak_token();\n        if (s4 === peg$FAILED) {\n          s4 = peg$currPos;\n          s5 = peg$parsewhitespace();\n          if (s5 === peg$FAILED) {\n            s5 = peg$parseparbreak();\n          }\n          if (s5 !== peg$FAILED) {\n            s6 = peg$currPos;\n            peg$silentFails++;\n            s7 = peg$currPos;\n            s8 = [];\n            s9 = peg$parsewhitespace();\n            if (s9 === peg$FAILED) {\n              s9 = peg$parseparbreak();\n            }\n            while (s9 !== peg$FAILED) {\n              s8.push(s9);\n              s9 = peg$parsewhitespace();\n              if (s9 === peg$FAILED) {\n                s9 = peg$parseparbreak();\n              }\n            }\n            s9 = peg$parsenon_whitespace_non_parbreak_token();\n            if (s9 !== peg$FAILED) {\n              s8 = [s8, s9];\n              s7 = s8;\n            } else {\n              peg$currPos = s7;\n              s7 = peg$FAILED;\n            }\n            peg$silentFails--;\n            if (s7 !== peg$FAILED) {\n              peg$currPos = s6;\n              s6 = void 0;\n            } else {\n              s6 = peg$FAILED;\n            }\n            if (s6 !== peg$FAILED) {\n              s5 = [s5, s6];\n              s4 = s5;\n            } else {\n              peg$currPos = s4;\n              s4 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s4;\n            s4 = peg$FAILED;\n          }\n        }\n        if (s4 !== peg$FAILED) {\n          while (s4 !== peg$FAILED) {\n            s3.push(s4);\n            s4 = peg$parsenon_whitespace_non_parbreak_token();\n            if (s4 === peg$FAILED) {\n              s4 = peg$currPos;\n              s5 = peg$parsewhitespace();\n              if (s5 === peg$FAILED) {\n                s5 = peg$parseparbreak();\n              }\n              if (s5 !== peg$FAILED) {\n                s6 = peg$currPos;\n                peg$silentFails++;\n                s7 = peg$currPos;\n                s8 = [];\n                s9 = peg$parsewhitespace();\n                if (s9 === peg$FAILED) {\n                  s9 = peg$parseparbreak();\n                }\n                while (s9 !== peg$FAILED) {\n                  s8.push(s9);\n                  s9 = peg$parsewhitespace();\n                  if (s9 === peg$FAILED) {\n                    s9 = peg$parseparbreak();\n                  }\n                }\n                s9 = peg$parsenon_whitespace_non_parbreak_token();\n                if (s9 !== peg$FAILED) {\n                  s8 = [s8, s9];\n                  s7 = s8;\n                } else {\n                  peg$currPos = s7;\n                  s7 = peg$FAILED;\n                }\n                peg$silentFails--;\n                if (s7 !== peg$FAILED) {\n                  peg$currPos = s6;\n                  s6 = void 0;\n                } else {\n                  s6 = peg$FAILED;\n                }\n                if (s6 !== peg$FAILED) {\n                  s5 = [s5, s6];\n                  s4 = s5;\n                } else {\n                  peg$currPos = s4;\n                  s4 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s4;\n                s4 = peg$FAILED;\n              }\n            }\n          }\n        } else {\n          s3 = peg$FAILED;\n        }\n        if (s3 !== peg$FAILED) {\n          s2 = input.substring(s2, peg$currPos);\n        } else {\n          s2 = s3;\n        }\n        if (s2 !== peg$FAILED) {\n          s3 = [];\n          s4 = peg$parsewhitespace();\n          while (s4 !== peg$FAILED) {\n            s3.push(s4);\n            s4 = peg$parsewhitespace();\n          }\n          peg$savedPos = s0;\n          s0 = peg$f7(s2);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsetrailing_comment() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        s1 = [];\n        s2 = peg$parsewhitespace();\n        while (s2 !== peg$FAILED) {\n          s1.push(s2);\n          s2 = peg$parsewhitespace();\n        }\n        s2 = peg$parsesame_line_comment();\n        if (s2 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s0 = peg$f8(s2);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsecomment_only_line() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        s1 = peg$parsewhitespace_or_parbreaks();\n        s2 = peg$parseown_line_comment();\n        if (s2 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s0 = peg$f9(s1, s2);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsetoken() {\n        let s0, s1, s2, s3;\n        s0 = peg$currPos;\n        s1 = peg$currPos;\n        s2 = peg$currPos;\n        peg$silentFails++;\n        s3 = peg$parsenon_token();\n        peg$silentFails--;\n        if (s3 === peg$FAILED) {\n          s2 = void 0;\n        } else {\n          peg$currPos = s2;\n          s2 = peg$FAILED;\n        }\n        if (s2 !== peg$FAILED) {\n          if (input.length > peg$currPos) {\n            s3 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e0);\n            }\n          }\n          if (s3 !== peg$FAILED) {\n            s2 = [s2, s3];\n            s1 = s2;\n          } else {\n            peg$currPos = s1;\n            s1 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n        if (s1 !== peg$FAILED) {\n          s0 = input.substring(s0, peg$currPos);\n        } else {\n          s0 = s1;\n        }\n        return s0;\n      }\n      function peg$parsenon_whitespace_non_parbreak_token() {\n        let s0, s1, s2, s3;\n        s0 = peg$currPos;\n        s1 = peg$currPos;\n        s2 = peg$currPos;\n        peg$silentFails++;\n        s3 = peg$parsewhitespace();\n        if (s3 === peg$FAILED) {\n          s3 = peg$parseparbreak();\n        }\n        peg$silentFails--;\n        if (s3 === peg$FAILED) {\n          s2 = void 0;\n        } else {\n          peg$currPos = s2;\n          s2 = peg$FAILED;\n        }\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parseparen_block();\n          if (s3 === peg$FAILED) {\n            s3 = peg$parsetoken();\n          }\n          if (s3 !== peg$FAILED) {\n            s2 = [s2, s3];\n            s1 = s2;\n          } else {\n            peg$currPos = s1;\n            s1 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n        if (s1 !== peg$FAILED) {\n          s0 = input.substring(s0, peg$currPos);\n        } else {\n          s0 = s1;\n        }\n        return s0;\n      }\n      function peg$parsenon_token() {\n        let s0;\n        s0 = peg$parseitem_sep();\n        if (s0 === peg$FAILED) {\n          s0 = peg$parseequals();\n          if (s0 === peg$FAILED) {\n            s0 = peg$parsetrailing_comment();\n            if (s0 === peg$FAILED) {\n              s0 = peg$parseown_line_comment();\n            }\n          }\n        }\n        return s0;\n      }\n      function peg$parsewhitespace_or_parbreaks() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        s1 = [];\n        s2 = peg$parsewhitespace();\n        if (s2 === peg$FAILED) {\n          s2 = peg$parseparbreak();\n        }\n        while (s2 !== peg$FAILED) {\n          s1.push(s2);\n          s2 = peg$parsewhitespace();\n          if (s2 === peg$FAILED) {\n            s2 = peg$parseparbreak();\n          }\n        }\n        peg$savedPos = s0;\n        s1 = peg$f10(s1);\n        s0 = s1;\n        return s0;\n      }\n      function peg$parseparen_block() {\n        let s0, s1, s2, s3, s4, s5, s6, s7, s8;\n        s0 = peg$currPos;\n        peg$savedPos = peg$currPos;\n        s1 = peg$f11();\n        if (s1) {\n          s1 = peg$FAILED;\n        } else {\n          s1 = void 0;\n        }\n        if (s1 !== peg$FAILED) {\n          s2 = peg$currPos;\n          s3 = peg$currPos;\n          s4 = peg$parseopen_paren();\n          if (s4 !== peg$FAILED) {\n            s5 = [];\n            s6 = peg$currPos;\n            s7 = peg$currPos;\n            peg$silentFails++;\n            s8 = peg$parseclose_paren();\n            peg$silentFails--;\n            if (s8 === peg$FAILED) {\n              s7 = void 0;\n            } else {\n              peg$currPos = s7;\n              s7 = peg$FAILED;\n            }\n            if (s7 !== peg$FAILED) {\n              if (input.length > peg$currPos) {\n                s8 = input.charAt(peg$currPos);\n                peg$currPos++;\n              } else {\n                s8 = peg$FAILED;\n                if (peg$silentFails === 0) {\n                  peg$fail(peg$e0);\n                }\n              }\n              if (s8 !== peg$FAILED) {\n                s7 = [s7, s8];\n                s6 = s7;\n              } else {\n                peg$currPos = s6;\n                s6 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s6;\n              s6 = peg$FAILED;\n            }\n            while (s6 !== peg$FAILED) {\n              s5.push(s6);\n              s6 = peg$currPos;\n              s7 = peg$currPos;\n              peg$silentFails++;\n              s8 = peg$parseclose_paren();\n              peg$silentFails--;\n              if (s8 === peg$FAILED) {\n                s7 = void 0;\n              } else {\n                peg$currPos = s7;\n                s7 = peg$FAILED;\n              }\n              if (s7 !== peg$FAILED) {\n                if (input.length > peg$currPos) {\n                  s8 = input.charAt(peg$currPos);\n                  peg$currPos++;\n                } else {\n                  s8 = peg$FAILED;\n                  if (peg$silentFails === 0) {\n                    peg$fail(peg$e0);\n                  }\n                }\n                if (s8 !== peg$FAILED) {\n                  s7 = [s7, s8];\n                  s6 = s7;\n                } else {\n                  peg$currPos = s6;\n                  s6 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s6;\n                s6 = peg$FAILED;\n              }\n            }\n            s6 = peg$parseclose_paren();\n            if (s6 !== peg$FAILED) {\n              s4 = [s4, s5, s6];\n              s3 = s4;\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n          if (s3 !== peg$FAILED) {\n            s2 = input.substring(s2, peg$currPos);\n          } else {\n            s2 = s3;\n          }\n          if (s2 !== peg$FAILED) {\n            s1 = [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        return s0;\n      }\n      function peg$parsesame_line_comment() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f12(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f13(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parseown_line_comment() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f14(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f15(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsewhitespace() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f16(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f17(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parseparbreak() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f18(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f19(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parseitem_sep() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f20(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f21(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parseequals() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f22(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f23(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parseopen_paren() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f24(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f25(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parseclose_paren() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f26(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f27(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parseEOL() {\n        let s0, s1;\n        s0 = peg$currPos;\n        peg$silentFails++;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        peg$silentFails--;\n        if (s1 === peg$FAILED) {\n          s0 = void 0;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function processItem(leadCell, otherCells) {\n        const cells = [leadCell || []];\n        for (const x of otherCells) {\n          cells.push(x.cell || []);\n        }\n        return { itemParts: cells };\n      }\n      if (!options.isWhitespace) {\n        try {\n          Object.assign(options, {\n            isChar: (node, char) => node.type === \"string\" && node.content === char,\n            isComma(node) {\n              return node.type === \"string\" && node.content === \",\";\n            },\n            isEquals(node) {\n              return node.type === \"string\" && node.content === \"=\";\n            },\n            isParbreak(node) {\n              return node.type === \"parbreak\";\n            },\n            isWhitespace(node) {\n              return node.type === \"whitespace\";\n            },\n            isSameLineComment: (node) => node.type === \"comment\" && node.sameline,\n            isOwnLineComment: (node) => node.type === \"comment\" && !node.sameline,\n            isComment: (node) => node.type === \"comment\",\n            allowParenGroups: true\n          });\n        } catch (e) {\n          console.warn(\"Error when initializing parser\", e);\n        }\n      }\n      peg$result = peg$startRuleFunction();\n      const peg$success = peg$result !== peg$FAILED && peg$currPos === input.length;\n      function peg$throw() {\n        if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n          peg$fail(peg$endExpectation());\n        }\n        throw peg$buildStructuredError(\n          peg$maxFailExpected,\n          peg$maxFailPos < input.length ? peg$getUnicode(peg$maxFailPos) : null,\n          peg$maxFailPos < input.length ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n        );\n      }\n      if (options.peg$library) {\n        return (\n          /** @type {any} */\n          {\n            peg$result,\n            peg$currPos,\n            peg$FAILED,\n            peg$maxFailExpected,\n            peg$maxFailPos,\n            peg$success,\n            peg$throw: peg$success ? void 0 : peg$throw\n          }\n        );\n      }\n      if (peg$success) {\n        return peg$result;\n      } else {\n        peg$throw();\n      }\n    }\n    return {\n      StartRules: [\"body\"],\n      SyntaxError: peg$SyntaxError,\n      parse: peg$parse\n    };\n  })()\n);\n","export default (\n  // @generated by Peggy 5.1.0.\n  //\n  // https://peggyjs.org/\n  (function() {\n    \"use strict\";\n    class peg$SyntaxError extends SyntaxError {\n      constructor(message, expected, found, location) {\n        super(message);\n        this.expected = expected;\n        this.found = found;\n        this.location = location;\n        this.name = \"SyntaxError\";\n      }\n      format(sources) {\n        let str = \"Error: \" + this.message;\n        if (this.location) {\n          let src = null;\n          const st = sources.find((s2) => s2.source === this.location.source);\n          if (st) {\n            src = st.text.split(/\\r\\n|\\n|\\r/g);\n          }\n          const s = this.location.start;\n          const offset_s = this.location.source && typeof this.location.source.offset === \"function\" ? this.location.source.offset(s) : s;\n          const loc = this.location.source + \":\" + offset_s.line + \":\" + offset_s.column;\n          if (src) {\n            const e = this.location.end;\n            const filler = \"\".padEnd(offset_s.line.toString().length, \" \");\n            const line = src[s.line - 1];\n            const last = s.line === e.line ? e.column : line.length + 1;\n            const hatLen = last - s.column || 1;\n            str += \"\\n --> \" + loc + \"\\n\" + filler + \" |\\n\" + offset_s.line + \" | \" + line + \"\\n\" + filler + \" | \" + \"\".padEnd(s.column - 1, \" \") + \"\".padEnd(hatLen, \"^\");\n          } else {\n            str += \"\\n at \" + loc;\n          }\n        }\n        return str;\n      }\n      static buildMessage(expected, found) {\n        function hex(ch) {\n          return ch.codePointAt(0).toString(16).toUpperCase();\n        }\n        const nonPrintable = Object.prototype.hasOwnProperty.call(RegExp.prototype, \"unicode\") ? new RegExp(\"[\\\\p{C}\\\\p{Mn}\\\\p{Mc}]\", \"gu\") : null;\n        function unicodeEscape(s) {\n          if (nonPrintable) {\n            return s.replace(nonPrintable, (ch) => \"\\\\u{\" + hex(ch) + \"}\");\n          }\n          return s;\n        }\n        function literalEscape(s) {\n          return unicodeEscape(s.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"').replace(/\\0/g, \"\\\\0\").replace(/\\t/g, \"\\\\t\").replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\").replace(/[\\x00-\\x0F]/g, (ch) => \"\\\\x0\" + hex(ch)).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => \"\\\\x\" + hex(ch)));\n        }\n        function classEscape(s) {\n          return unicodeEscape(s.replace(/\\\\/g, \"\\\\\\\\\").replace(/\\]/g, \"\\\\]\").replace(/\\^/g, \"\\\\^\").replace(/-/g, \"\\\\-\").replace(/\\0/g, \"\\\\0\").replace(/\\t/g, \"\\\\t\").replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\").replace(/[\\x00-\\x0F]/g, (ch) => \"\\\\x0\" + hex(ch)).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => \"\\\\x\" + hex(ch)));\n        }\n        const DESCRIBE_EXPECTATION_FNS = {\n          literal(expectation) {\n            return '\"' + literalEscape(expectation.text) + '\"';\n          },\n          class(expectation) {\n            const escapedParts = expectation.parts.map(\n              (part) => Array.isArray(part) ? classEscape(part[0]) + \"-\" + classEscape(part[1]) : classEscape(part)\n            );\n            return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts.join(\"\") + \"]\" + (expectation.unicode ? \"u\" : \"\");\n          },\n          any() {\n            return \"any character\";\n          },\n          end() {\n            return \"end of input\";\n          },\n          other(expectation) {\n            return expectation.description;\n          }\n        };\n        function describeExpectation(expectation) {\n          return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n        }\n        function describeExpected(expected2) {\n          const descriptions = expected2.map(describeExpectation);\n          descriptions.sort();\n          if (descriptions.length > 0) {\n            let j = 1;\n            for (let i = 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          switch (descriptions.length) {\n            case 1:\n              return descriptions[0];\n            case 2:\n              return descriptions[0] + \" or \" + descriptions[1];\n            default:\n              return descriptions.slice(0, -1).join(\", \") + \", or \" + descriptions[descriptions.length - 1];\n          }\n        }\n        function describeFound(found2) {\n          return found2 ? '\"' + literalEscape(found2) + '\"' : \"end of input\";\n        }\n        return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n      }\n    }\n    function peg$parse(input, options) {\n      options = options !== void 0 ? options : {};\n      const peg$FAILED = {};\n      const peg$source = options.grammarSource;\n      const peg$startRuleFunctions = {\n        body: peg$parsebody\n      };\n      let peg$startRuleFunction = peg$parsebody;\n      const peg$e0 = peg$anyExpectation();\n      function peg$f0(e) {\n        return [].concat(...e).filter((n) => !!n);\n      }\n      function peg$f1() {\n        return [];\n      }\n      function peg$f2(tok) {\n        return options.isHash(tok);\n      }\n      function peg$f3(tok) {\n        return tok;\n      }\n      function peg$f4(tok) {\n        return options.isNumber(tok);\n      }\n      function peg$f5(tok) {\n        return tok;\n      }\n      function peg$f6() {\n        return { type: \"string\", content: \"#\" };\n      }\n      function peg$f7(num) {\n        const split = options.splitNumber(num);\n        return [{ type: \"hash_number\", number: split.number }, split.rest];\n      }\n      let peg$currPos = options.peg$currPos | 0;\n      let peg$savedPos = peg$currPos;\n      const peg$posDetailsCache = [{ line: 1, column: 1 }];\n      let peg$maxFailPos = peg$currPos;\n      let peg$maxFailExpected = options.peg$maxFailExpected || [];\n      let peg$silentFails = options.peg$silentFails | 0;\n      let peg$result;\n      if (options.startRule) {\n        if (!(options.startRule in peg$startRuleFunctions)) {\n          throw new Error(`Can't start parsing from rule \"` + options.startRule + '\".');\n        }\n        peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n      }\n      function text() {\n        return input.substring(peg$savedPos, peg$currPos);\n      }\n      function offset() {\n        return peg$savedPos;\n      }\n      function range() {\n        return {\n          source: peg$source,\n          start: peg$savedPos,\n          end: peg$currPos\n        };\n      }\n      function location() {\n        return peg$computeLocation(peg$savedPos, peg$currPos);\n      }\n      function expected(description, location2) {\n        location2 = location2 !== void 0 ? location2 : peg$computeLocation(peg$savedPos, peg$currPos);\n        throw peg$buildStructuredError(\n          [peg$otherExpectation(description)],\n          input.substring(peg$savedPos, peg$currPos),\n          location2\n        );\n      }\n      function error(message, location2) {\n        location2 = location2 !== void 0 ? location2 : peg$computeLocation(peg$savedPos, peg$currPos);\n        throw peg$buildSimpleError(message, location2);\n      }\n      function peg$getUnicode(pos = peg$currPos) {\n        const cp = input.codePointAt(pos);\n        if (cp === void 0) {\n          return \"\";\n        }\n        return String.fromCodePoint(cp);\n      }\n      function peg$literalExpectation(text2, ignoreCase) {\n        return { type: \"literal\", text: text2, ignoreCase };\n      }\n      function peg$classExpectation(parts, inverted, ignoreCase, unicode) {\n        return { type: \"class\", parts, inverted, ignoreCase, unicode };\n      }\n      function peg$anyExpectation() {\n        return { type: \"any\" };\n      }\n      function peg$endExpectation() {\n        return { type: \"end\" };\n      }\n      function peg$otherExpectation(description) {\n        return { type: \"other\", description };\n      }\n      function peg$computePosDetails(pos) {\n        let details = peg$posDetailsCache[pos];\n        let p;\n        if (details) {\n          return details;\n        } else {\n          if (pos >= peg$posDetailsCache.length) {\n            p = peg$posDetailsCache.length - 1;\n          } else {\n            p = pos;\n            while (!peg$posDetailsCache[--p]) {\n            }\n          }\n          details = peg$posDetailsCache[p];\n          details = {\n            line: details.line,\n            column: details.column\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            p++;\n          }\n          peg$posDetailsCache[pos] = details;\n          return details;\n        }\n      }\n      function peg$computeLocation(startPos, endPos, offset2) {\n        const startPosDetails = peg$computePosDetails(startPos);\n        const endPosDetails = peg$computePosDetails(endPos);\n        const res = {\n          source: peg$source,\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        if (offset2 && peg$source && typeof peg$source.offset === \"function\") {\n          res.start = peg$source.offset(res.start);\n          res.end = peg$source.offset(res.end);\n        }\n        return res;\n      }\n      function peg$fail(expected2) {\n        if (peg$currPos < peg$maxFailPos) {\n          return;\n        }\n        if (peg$currPos > peg$maxFailPos) {\n          peg$maxFailPos = peg$currPos;\n          peg$maxFailExpected = [];\n        }\n        peg$maxFailExpected.push(expected2);\n      }\n      function peg$buildSimpleError(message, location2) {\n        return new peg$SyntaxError(message, null, null, location2);\n      }\n      function peg$buildStructuredError(expected2, found, location2) {\n        return new peg$SyntaxError(\n          peg$SyntaxError.buildMessage(expected2, found),\n          expected2,\n          found,\n          location2\n        );\n      }\n      function peg$parsebody() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        s1 = [];\n        s2 = peg$parsedouble_hash();\n        if (s2 === peg$FAILED) {\n          s2 = peg$parsehash_number();\n          if (s2 === peg$FAILED) {\n            if (input.length > peg$currPos) {\n              s2 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s2 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e0);\n              }\n            }\n          }\n        }\n        if (s2 !== peg$FAILED) {\n          while (s2 !== peg$FAILED) {\n            s1.push(s2);\n            s2 = peg$parsedouble_hash();\n            if (s2 === peg$FAILED) {\n              s2 = peg$parsehash_number();\n              if (s2 === peg$FAILED) {\n                if (input.length > peg$currPos) {\n                  s2 = input.charAt(peg$currPos);\n                  peg$currPos++;\n                } else {\n                  s2 = peg$FAILED;\n                  if (peg$silentFails === 0) {\n                    peg$fail(peg$e0);\n                  }\n                }\n              }\n            }\n          }\n        } else {\n          s1 = peg$FAILED;\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$f0(s1);\n        }\n        s0 = s1;\n        if (s0 === peg$FAILED) {\n          s0 = peg$currPos;\n          s1 = peg$parseEOL();\n          if (s1 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$f1();\n          }\n          s0 = s1;\n        }\n        return s0;\n      }\n      function peg$parsehash() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f2(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f3(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsenumber() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f4(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f5(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsedouble_hash() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        s1 = peg$parsehash();\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parsehash();\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f6();\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsehash_number() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        s1 = peg$parsehash();\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parsenumber();\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f7(s2);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parseEOL() {\n        let s0, s1;\n        s0 = peg$currPos;\n        peg$silentFails++;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        peg$silentFails--;\n        if (s1 === peg$FAILED) {\n          s0 = void 0;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      if (!options.isHash) {\n        try {\n          Object.assign(options, {\n            isHash: (node) => node.type === \"string\" && node.content === \"#\",\n            isNumber: (node) => node.type === \"string\" && 0 < +node.content.charAt(0),\n            splitNumber: (node) => {\n              const number = +node.content.charAt(0);\n              if (node.content.length > 1) {\n                return {\n                  number,\n                  rest: {\n                    type: \"string\",\n                    content: node.content.slice(1)\n                  }\n                };\n              }\n              return { number };\n            }\n          });\n        } catch (e) {\n          console.warn(\"Error when initializing parser\", e);\n        }\n      }\n      peg$result = peg$startRuleFunction();\n      const peg$success = peg$result !== peg$FAILED && peg$currPos === input.length;\n      function peg$throw() {\n        if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n          peg$fail(peg$endExpectation());\n        }\n        throw peg$buildStructuredError(\n          peg$maxFailExpected,\n          peg$maxFailPos < input.length ? peg$getUnicode(peg$maxFailPos) : null,\n          peg$maxFailPos < input.length ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n        );\n      }\n      if (options.peg$library) {\n        return (\n          /** @type {any} */\n          {\n            peg$result,\n            peg$currPos,\n            peg$FAILED,\n            peg$maxFailExpected,\n            peg$maxFailPos,\n            peg$success,\n            peg$throw: peg$success ? void 0 : peg$throw\n          }\n        );\n      }\n      if (peg$success) {\n        return peg$result;\n      } else {\n        peg$throw();\n      }\n    }\n    return {\n      StartRules: [\"body\"],\n      SyntaxError: peg$SyntaxError,\n      parse: peg$parse\n    };\n  })()\n);\n","export default (\n  // @generated by Peggy 5.1.0.\n  //\n  // https://peggyjs.org/\n  (function() {\n    \"use strict\";\n    class peg$SyntaxError extends SyntaxError {\n      constructor(message, expected, found, location) {\n        super(message);\n        this.expected = expected;\n        this.found = found;\n        this.location = location;\n        this.name = \"SyntaxError\";\n      }\n      format(sources) {\n        let str = \"Error: \" + this.message;\n        if (this.location) {\n          let src = null;\n          const st = sources.find((s2) => s2.source === this.location.source);\n          if (st) {\n            src = st.text.split(/\\r\\n|\\n|\\r/g);\n          }\n          const s = this.location.start;\n          const offset_s = this.location.source && typeof this.location.source.offset === \"function\" ? this.location.source.offset(s) : s;\n          const loc = this.location.source + \":\" + offset_s.line + \":\" + offset_s.column;\n          if (src) {\n            const e = this.location.end;\n            const filler = \"\".padEnd(offset_s.line.toString().length, \" \");\n            const line = src[s.line - 1];\n            const last = s.line === e.line ? e.column : line.length + 1;\n            const hatLen = last - s.column || 1;\n            str += \"\\n --> \" + loc + \"\\n\" + filler + \" |\\n\" + offset_s.line + \" | \" + line + \"\\n\" + filler + \" | \" + \"\".padEnd(s.column - 1, \" \") + \"\".padEnd(hatLen, \"^\");\n          } else {\n            str += \"\\n at \" + loc;\n          }\n        }\n        return str;\n      }\n      static buildMessage(expected, found) {\n        function hex(ch) {\n          return ch.codePointAt(0).toString(16).toUpperCase();\n        }\n        const nonPrintable = Object.prototype.hasOwnProperty.call(RegExp.prototype, \"unicode\") ? new RegExp(\"[\\\\p{C}\\\\p{Mn}\\\\p{Mc}]\", \"gu\") : null;\n        function unicodeEscape(s) {\n          if (nonPrintable) {\n            return s.replace(nonPrintable, (ch) => \"\\\\u{\" + hex(ch) + \"}\");\n          }\n          return s;\n        }\n        function literalEscape(s) {\n          return unicodeEscape(s.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"').replace(/\\0/g, \"\\\\0\").replace(/\\t/g, \"\\\\t\").replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\").replace(/[\\x00-\\x0F]/g, (ch) => \"\\\\x0\" + hex(ch)).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => \"\\\\x\" + hex(ch)));\n        }\n        function classEscape(s) {\n          return unicodeEscape(s.replace(/\\\\/g, \"\\\\\\\\\").replace(/\\]/g, \"\\\\]\").replace(/\\^/g, \"\\\\^\").replace(/-/g, \"\\\\-\").replace(/\\0/g, \"\\\\0\").replace(/\\t/g, \"\\\\t\").replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\").replace(/[\\x00-\\x0F]/g, (ch) => \"\\\\x0\" + hex(ch)).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => \"\\\\x\" + hex(ch)));\n        }\n        const DESCRIBE_EXPECTATION_FNS = {\n          literal(expectation) {\n            return '\"' + literalEscape(expectation.text) + '\"';\n          },\n          class(expectation) {\n            const escapedParts = expectation.parts.map(\n              (part) => Array.isArray(part) ? classEscape(part[0]) + \"-\" + classEscape(part[1]) : classEscape(part)\n            );\n            return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts.join(\"\") + \"]\" + (expectation.unicode ? \"u\" : \"\");\n          },\n          any() {\n            return \"any character\";\n          },\n          end() {\n            return \"end of input\";\n          },\n          other(expectation) {\n            return expectation.description;\n          }\n        };\n        function describeExpectation(expectation) {\n          return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n        }\n        function describeExpected(expected2) {\n          const descriptions = expected2.map(describeExpectation);\n          descriptions.sort();\n          if (descriptions.length > 0) {\n            let j = 1;\n            for (let i = 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          switch (descriptions.length) {\n            case 1:\n              return descriptions[0];\n            case 2:\n              return descriptions[0] + \" or \" + descriptions[1];\n            default:\n              return descriptions.slice(0, -1).join(\", \") + \", or \" + descriptions[descriptions.length - 1];\n          }\n        }\n        function describeFound(found2) {\n          return found2 ? '\"' + literalEscape(found2) + '\"' : \"end of input\";\n        }\n        return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n      }\n    }\n    function peg$parse(input, options) {\n      options = options !== void 0 ? options : {};\n      const peg$FAILED = {};\n      const peg$source = options.grammarSource;\n      const peg$startRuleFunctions = {\n        body: peg$parsebody\n      };\n      let peg$startRuleFunction = peg$parsebody;\n      const peg$e0 = peg$anyExpectation();\n      function peg$f0(e) {\n        return [].concat(...e).filter((n) => !!n);\n      }\n      function peg$f1() {\n        return [];\n      }\n      function peg$f2(toks) {\n        return options.isRecognized(toks);\n      }\n      function peg$f3(toks) {\n        return options.isRecognized(toks);\n      }\n      function peg$f4(tok1, tok2) {\n        const split = options.split(tok2);\n        return options.isRecognized([tok1, split[0]]);\n      }\n      function peg$f5(tok1, tok2) {\n        const split = options.split(tok2);\n        return [options.isRecognized([tok1, split[0]]), split[1]];\n      }\n      function peg$f6(tok1, tok2) {\n        return options.isRecognized([tok1, tok2]);\n      }\n      function peg$f7(tok1, tok2) {\n        return options.isRecognized([tok1, tok2]);\n      }\n      function peg$f8(toks) {\n        return options.isRecognized(toks);\n      }\n      function peg$f9(toks) {\n        return options.isRecognized(toks);\n      }\n      function peg$f10(tok) {\n        return options.isRecognized([tok]);\n      }\n      function peg$f11(tok) {\n        return options.isRecognized([tok]);\n      }\n      function peg$f12(tok) {\n        return options.isMacro(tok);\n      }\n      function peg$f13(tok) {\n        return tok;\n      }\n      function peg$f14(tok) {\n        return options.isWhitespace(tok);\n      }\n      function peg$f15(tok) {\n        return tok;\n      }\n      function peg$f16(tok) {\n        return options.isSplitable(tok);\n      }\n      function peg$f17(tok) {\n        return tok;\n      }\n      let peg$currPos = options.peg$currPos | 0;\n      let peg$savedPos = peg$currPos;\n      const peg$posDetailsCache = [{ line: 1, column: 1 }];\n      let peg$maxFailPos = peg$currPos;\n      let peg$maxFailExpected = options.peg$maxFailExpected || [];\n      let peg$silentFails = options.peg$silentFails | 0;\n      let peg$result;\n      if (options.startRule) {\n        if (!(options.startRule in peg$startRuleFunctions)) {\n          throw new Error(`Can't start parsing from rule \"` + options.startRule + '\".');\n        }\n        peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n      }\n      function text() {\n        return input.substring(peg$savedPos, peg$currPos);\n      }\n      function offset() {\n        return peg$savedPos;\n      }\n      function range() {\n        return {\n          source: peg$source,\n          start: peg$savedPos,\n          end: peg$currPos\n        };\n      }\n      function location() {\n        return peg$computeLocation(peg$savedPos, peg$currPos);\n      }\n      function expected(description, location2) {\n        location2 = location2 !== void 0 ? location2 : peg$computeLocation(peg$savedPos, peg$currPos);\n        throw peg$buildStructuredError(\n          [peg$otherExpectation(description)],\n          input.substring(peg$savedPos, peg$currPos),\n          location2\n        );\n      }\n      function error(message, location2) {\n        location2 = location2 !== void 0 ? location2 : peg$computeLocation(peg$savedPos, peg$currPos);\n        throw peg$buildSimpleError(message, location2);\n      }\n      function peg$getUnicode(pos = peg$currPos) {\n        const cp = input.codePointAt(pos);\n        if (cp === void 0) {\n          return \"\";\n        }\n        return String.fromCodePoint(cp);\n      }\n      function peg$literalExpectation(text2, ignoreCase) {\n        return { type: \"literal\", text: text2, ignoreCase };\n      }\n      function peg$classExpectation(parts, inverted, ignoreCase, unicode) {\n        return { type: \"class\", parts, inverted, ignoreCase, unicode };\n      }\n      function peg$anyExpectation() {\n        return { type: \"any\" };\n      }\n      function peg$endExpectation() {\n        return { type: \"end\" };\n      }\n      function peg$otherExpectation(description) {\n        return { type: \"other\", description };\n      }\n      function peg$computePosDetails(pos) {\n        let details = peg$posDetailsCache[pos];\n        let p;\n        if (details) {\n          return details;\n        } else {\n          if (pos >= peg$posDetailsCache.length) {\n            p = peg$posDetailsCache.length - 1;\n          } else {\n            p = pos;\n            while (!peg$posDetailsCache[--p]) {\n            }\n          }\n          details = peg$posDetailsCache[p];\n          details = {\n            line: details.line,\n            column: details.column\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            p++;\n          }\n          peg$posDetailsCache[pos] = details;\n          return details;\n        }\n      }\n      function peg$computeLocation(startPos, endPos, offset2) {\n        const startPosDetails = peg$computePosDetails(startPos);\n        const endPosDetails = peg$computePosDetails(endPos);\n        const res = {\n          source: peg$source,\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        if (offset2 && peg$source && typeof peg$source.offset === \"function\") {\n          res.start = peg$source.offset(res.start);\n          res.end = peg$source.offset(res.end);\n        }\n        return res;\n      }\n      function peg$fail(expected2) {\n        if (peg$currPos < peg$maxFailPos) {\n          return;\n        }\n        if (peg$currPos > peg$maxFailPos) {\n          peg$maxFailPos = peg$currPos;\n          peg$maxFailExpected = [];\n        }\n        peg$maxFailExpected.push(expected2);\n      }\n      function peg$buildSimpleError(message, location2) {\n        return new peg$SyntaxError(message, null, null, location2);\n      }\n      function peg$buildStructuredError(expected2, found, location2) {\n        return new peg$SyntaxError(\n          peg$SyntaxError.buildMessage(expected2, found),\n          expected2,\n          found,\n          location2\n        );\n      }\n      function peg$parsebody() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        s1 = [];\n        s2 = peg$parsetriple_ligature();\n        if (s2 === peg$FAILED) {\n          s2 = peg$parsedouble_ligature();\n          if (s2 === peg$FAILED) {\n            s2 = peg$parsemono_ligature();\n            if (s2 === peg$FAILED) {\n              if (input.length > peg$currPos) {\n                s2 = input.charAt(peg$currPos);\n                peg$currPos++;\n              } else {\n                s2 = peg$FAILED;\n                if (peg$silentFails === 0) {\n                  peg$fail(peg$e0);\n                }\n              }\n            }\n          }\n        }\n        if (s2 !== peg$FAILED) {\n          while (s2 !== peg$FAILED) {\n            s1.push(s2);\n            s2 = peg$parsetriple_ligature();\n            if (s2 === peg$FAILED) {\n              s2 = peg$parsedouble_ligature();\n              if (s2 === peg$FAILED) {\n                s2 = peg$parsemono_ligature();\n                if (s2 === peg$FAILED) {\n                  if (input.length > peg$currPos) {\n                    s2 = input.charAt(peg$currPos);\n                    peg$currPos++;\n                  } else {\n                    s2 = peg$FAILED;\n                    if (peg$silentFails === 0) {\n                      peg$fail(peg$e0);\n                    }\n                  }\n                }\n              }\n            }\n          }\n        } else {\n          s1 = peg$FAILED;\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$f0(s1);\n        }\n        s0 = s1;\n        if (s0 === peg$FAILED) {\n          s0 = peg$currPos;\n          s1 = peg$parseEOL();\n          if (s1 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$f1();\n          }\n          s0 = s1;\n        }\n        return s0;\n      }\n      function peg$parsetriple_ligature() {\n        let s0, s1, s2, s3, s4;\n        s0 = peg$currPos;\n        s1 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s2 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s2 !== peg$FAILED) {\n          if (input.length > peg$currPos) {\n            s3 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e0);\n            }\n          }\n          if (s3 !== peg$FAILED) {\n            if (input.length > peg$currPos) {\n              s4 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s4 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e0);\n              }\n            }\n            if (s4 !== peg$FAILED) {\n              s2 = [s2, s3, s4];\n              s1 = s2;\n            } else {\n              peg$currPos = s1;\n              s1 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s1;\n            s1 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f2(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f3(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsedouble_ligature() {\n        let s0;\n        s0 = peg$parsedouble_macro_ligature();\n        if (s0 === peg$FAILED) {\n          s0 = peg$parsedouble_macro_ligature_extracted();\n          if (s0 === peg$FAILED) {\n            s0 = peg$parsedouble_char_ligature();\n          }\n        }\n        return s0;\n      }\n      function peg$parsedouble_macro_ligature_extracted() {\n        let s0, s1, s2, s3, s4;\n        s0 = peg$currPos;\n        s1 = peg$parsemacro();\n        if (s1 !== peg$FAILED) {\n          s2 = [];\n          s3 = peg$parsewhitespace();\n          while (s3 !== peg$FAILED) {\n            s2.push(s3);\n            s3 = peg$parsewhitespace();\n          }\n          s3 = peg$parsesplitable();\n          if (s3 !== peg$FAILED) {\n            peg$savedPos = peg$currPos;\n            s4 = peg$f4(s1, s3);\n            if (s4) {\n              s4 = void 0;\n            } else {\n              s4 = peg$FAILED;\n            }\n            if (s4 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s0 = peg$f5(s1, s3);\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        return s0;\n      }\n      function peg$parsedouble_macro_ligature() {\n        let s0, s1, s2, s3, s4;\n        s0 = peg$currPos;\n        s1 = peg$parsemacro();\n        if (s1 !== peg$FAILED) {\n          s2 = [];\n          s3 = peg$parsewhitespace();\n          while (s3 !== peg$FAILED) {\n            s2.push(s3);\n            s3 = peg$parsewhitespace();\n          }\n          if (input.length > peg$currPos) {\n            s3 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e0);\n            }\n          }\n          if (s3 !== peg$FAILED) {\n            peg$savedPos = peg$currPos;\n            s4 = peg$f6(s1, s3);\n            if (s4) {\n              s4 = void 0;\n            } else {\n              s4 = peg$FAILED;\n            }\n            if (s4 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s0 = peg$f7(s1, s3);\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        return s0;\n      }\n      function peg$parsedouble_char_ligature() {\n        let s0, s1, s2, s3;\n        s0 = peg$currPos;\n        s1 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s2 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s2 !== peg$FAILED) {\n          if (input.length > peg$currPos) {\n            s3 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e0);\n            }\n          }\n          if (s3 !== peg$FAILED) {\n            s2 = [s2, s3];\n            s1 = s2;\n          } else {\n            peg$currPos = s1;\n            s1 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f8(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f9(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsemono_ligature() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f10(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f11(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsemacro() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f12(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f13(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsewhitespace() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f14(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f15(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsesplitable() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f16(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f17(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parseEOL() {\n        let s0, s1;\n        s0 = peg$currPos;\n        peg$silentFails++;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        peg$silentFails--;\n        if (s1 === peg$FAILED) {\n          s0 = void 0;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      if (!options.isWhitespace) {\n        try {\n          Object.assign(options, {\n            isMacro: (node) => node.type === \"macro\",\n            isWhitespace: (node) => node.type === \"whitespace\",\n            isRecognized: (nodes) => {\n              if (nodes.length == 2 && nodes[0].content === \"^\" && nodes[1].content === \"o\") {\n                return { type: \"string\", content: \"\\xF4\" };\n              }\n              return null;\n            },\n            isSplitable: (node) => node.type === \"string\" && node.content.length > 1,\n            split: (node) => [\n              { type: \"string\", content: node.content.charAt(0) },\n              { type: \"string\", content: node.content.slice(1) }\n            ]\n          });\n        } catch (e) {\n          console.warn(\"Error when initializing parser\", e);\n        }\n      }\n      peg$result = peg$startRuleFunction();\n      const peg$success = peg$result !== peg$FAILED && peg$currPos === input.length;\n      function peg$throw() {\n        if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n          peg$fail(peg$endExpectation());\n        }\n        throw peg$buildStructuredError(\n          peg$maxFailExpected,\n          peg$maxFailPos < input.length ? peg$getUnicode(peg$maxFailPos) : null,\n          peg$maxFailPos < input.length ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n        );\n      }\n      if (options.peg$library) {\n        return (\n          /** @type {any} */\n          {\n            peg$result,\n            peg$currPos,\n            peg$FAILED,\n            peg$maxFailExpected,\n            peg$maxFailPos,\n            peg$success,\n            peg$throw: peg$success ? void 0 : peg$throw\n          }\n        );\n      }\n      if (peg$success) {\n        return peg$result;\n      } else {\n        peg$throw();\n      }\n    }\n    return {\n      StartRules: [\"body\"],\n      SyntaxError: peg$SyntaxError,\n      parse: peg$parse\n    };\n  })()\n);\n","export default (\n  // @generated by Peggy 5.1.0.\n  //\n  // https://peggyjs.org/\n  (function() {\n    \"use strict\";\n    class peg$SyntaxError extends SyntaxError {\n      constructor(message, expected, found, location) {\n        super(message);\n        this.expected = expected;\n        this.found = found;\n        this.location = location;\n        this.name = \"SyntaxError\";\n      }\n      format(sources) {\n        let str = \"Error: \" + this.message;\n        if (this.location) {\n          let src = null;\n          const st = sources.find((s2) => s2.source === this.location.source);\n          if (st) {\n            src = st.text.split(/\\r\\n|\\n|\\r/g);\n          }\n          const s = this.location.start;\n          const offset_s = this.location.source && typeof this.location.source.offset === \"function\" ? this.location.source.offset(s) : s;\n          const loc = this.location.source + \":\" + offset_s.line + \":\" + offset_s.column;\n          if (src) {\n            const e = this.location.end;\n            const filler = \"\".padEnd(offset_s.line.toString().length, \" \");\n            const line = src[s.line - 1];\n            const last = s.line === e.line ? e.column : line.length + 1;\n            const hatLen = last - s.column || 1;\n            str += \"\\n --> \" + loc + \"\\n\" + filler + \" |\\n\" + offset_s.line + \" | \" + line + \"\\n\" + filler + \" | \" + \"\".padEnd(s.column - 1, \" \") + \"\".padEnd(hatLen, \"^\");\n          } else {\n            str += \"\\n at \" + loc;\n          }\n        }\n        return str;\n      }\n      static buildMessage(expected, found) {\n        function hex(ch) {\n          return ch.codePointAt(0).toString(16).toUpperCase();\n        }\n        const nonPrintable = Object.prototype.hasOwnProperty.call(RegExp.prototype, \"unicode\") ? new RegExp(\"[\\\\p{C}\\\\p{Mn}\\\\p{Mc}]\", \"gu\") : null;\n        function unicodeEscape(s) {\n          if (nonPrintable) {\n            return s.replace(nonPrintable, (ch) => \"\\\\u{\" + hex(ch) + \"}\");\n          }\n          return s;\n        }\n        function literalEscape(s) {\n          return unicodeEscape(s.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"').replace(/\\0/g, \"\\\\0\").replace(/\\t/g, \"\\\\t\").replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\").replace(/[\\x00-\\x0F]/g, (ch) => \"\\\\x0\" + hex(ch)).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => \"\\\\x\" + hex(ch)));\n        }\n        function classEscape(s) {\n          return unicodeEscape(s.replace(/\\\\/g, \"\\\\\\\\\").replace(/\\]/g, \"\\\\]\").replace(/\\^/g, \"\\\\^\").replace(/-/g, \"\\\\-\").replace(/\\0/g, \"\\\\0\").replace(/\\t/g, \"\\\\t\").replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\").replace(/[\\x00-\\x0F]/g, (ch) => \"\\\\x0\" + hex(ch)).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => \"\\\\x\" + hex(ch)));\n        }\n        const DESCRIBE_EXPECTATION_FNS = {\n          literal(expectation) {\n            return '\"' + literalEscape(expectation.text) + '\"';\n          },\n          class(expectation) {\n            const escapedParts = expectation.parts.map(\n              (part) => Array.isArray(part) ? classEscape(part[0]) + \"-\" + classEscape(part[1]) : classEscape(part)\n            );\n            return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts.join(\"\") + \"]\" + (expectation.unicode ? \"u\" : \"\");\n          },\n          any() {\n            return \"any character\";\n          },\n          end() {\n            return \"end of input\";\n          },\n          other(expectation) {\n            return expectation.description;\n          }\n        };\n        function describeExpectation(expectation) {\n          return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n        }\n        function describeExpected(expected2) {\n          const descriptions = expected2.map(describeExpectation);\n          descriptions.sort();\n          if (descriptions.length > 0) {\n            let j = 1;\n            for (let i = 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          switch (descriptions.length) {\n            case 1:\n              return descriptions[0];\n            case 2:\n              return descriptions[0] + \" or \" + descriptions[1];\n            default:\n              return descriptions.slice(0, -1).join(\", \") + \", or \" + descriptions[descriptions.length - 1];\n          }\n        }\n        function describeFound(found2) {\n          return found2 ? '\"' + literalEscape(found2) + '\"' : \"end of input\";\n        }\n        return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n      }\n    }\n    function peg$parse(input, options) {\n      options = options !== void 0 ? options : {};\n      const peg$FAILED = {};\n      const peg$source = options.grammarSource;\n      const peg$startRuleFunctions = {\n        start: peg$parsestart\n      };\n      let peg$startRuleFunction = peg$parsestart;\n      const peg$c0 = \";\";\n      const peg$c1 = \",\";\n      const peg$c2 = \":\";\n      const peg$c3 = \"/\";\n      const peg$c4 = \">\";\n      const peg$c5 = \"!\";\n      const peg$c6 = \".\";\n      const peg$c7 = \"!![\";\n      const peg$c8 = \"]\";\n      const peg$c9 = \"!!\";\n      const peg$c10 = \"+\";\n      const peg$c11 = \"-\";\n      const peg$r0 = /^[a-zA-Z0-9]/;\n      const peg$r1 = /^[0-9]/;\n      const peg$r2 = /^[ \\t\\n\\r]/;\n      const peg$r3 = /^[0-9a-fA-F]/;\n      const peg$e0 = peg$anyExpectation();\n      const peg$e1 = peg$literalExpectation(\";\", false);\n      const peg$e2 = peg$literalExpectation(\",\", false);\n      const peg$e3 = peg$otherExpectation(\"model list\");\n      const peg$e4 = peg$literalExpectation(\":\", false);\n      const peg$e5 = peg$literalExpectation(\"/\", false);\n      const peg$e6 = peg$otherExpectation(\"model\");\n      const peg$e7 = peg$otherExpectation(\"color spec list\");\n      const peg$e8 = peg$otherExpectation(\"color spec\");\n      const peg$e9 = peg$otherExpectation(\"color\");\n      const peg$e10 = peg$otherExpectation(\"function expression\");\n      const peg$e11 = peg$literalExpectation(\">\", false);\n      const peg$e12 = peg$otherExpectation(\"function\");\n      const peg$e13 = peg$otherExpectation(\"extended expression\");\n      const peg$e14 = peg$otherExpectation(\"core model\");\n      const peg$e15 = peg$otherExpectation(\"expr\");\n      const peg$e16 = peg$literalExpectation(\"!\", false);\n      const peg$e17 = peg$otherExpectation(\"name\");\n      const peg$e18 = peg$literalExpectation(\".\", false);\n      const peg$e19 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"], [\"0\", \"9\"]], false, false, false);\n      const peg$e20 = peg$otherExpectation(\"postfix\");\n      const peg$e21 = peg$literalExpectation(\"!![\", false);\n      const peg$e22 = peg$literalExpectation(\"]\", false);\n      const peg$e23 = peg$literalExpectation(\"!!\", false);\n      const peg$e24 = peg$otherExpectation(\"plus\");\n      const peg$e25 = peg$literalExpectation(\"+\", false);\n      const peg$e26 = peg$otherExpectation(\"minus\");\n      const peg$e27 = peg$literalExpectation(\"-\", false);\n      const peg$e28 = peg$otherExpectation(\"num\");\n      const peg$e29 = peg$classExpectation([[\"0\", \"9\"]], false, false, false);\n      const peg$e30 = peg$otherExpectation(\"positive float\");\n      const peg$e31 = peg$otherExpectation(\"divisor\");\n      const peg$e32 = peg$otherExpectation(\"int\");\n      const peg$e33 = peg$classExpectation([\" \", \"\t\", \"\\n\", \"\\r\"], false, false, false);\n      const peg$e34 = peg$classExpectation([[\"0\", \"9\"], [\"a\", \"f\"], [\"A\", \"F\"]], false, false, false);\n      function peg$f0(m) {\n        return m;\n      }\n      function peg$f1(m) {\n        return m;\n      }\n      function peg$f2(m) {\n        return m;\n      }\n      function peg$f3(m) {\n        return m;\n      }\n      function peg$f4(m) {\n        return m;\n      }\n      function peg$f5(a) {\n        return { type: \"invalid_spec\", content: a };\n      }\n      function peg$f6(f, c) {\n        return c;\n      }\n      function peg$f7(f, r) {\n        return { type: \"color_set\", content: [f].concat(r) };\n      }\n      function peg$f8(n, s) {\n        return { type: \"color_set_item\", name: n, spec_list: s };\n      }\n      function peg$f9(c, m) {\n        return { type: \"model_list\", contents: m, core_model: c };\n      }\n      function peg$f10(m) {\n        return { type: \"model_list\", contents: m, core_model: null };\n      }\n      function peg$f11(m, a) {\n        return a;\n      }\n      function peg$f12(m, r) {\n        return [m].concat(r);\n      }\n      function peg$f13(s, a) {\n        return a;\n      }\n      function peg$f14(s, r) {\n        return { type: \"spec_list\", content: [s].concat(r) };\n      }\n      function peg$f15(c) {\n        return { type: \"hex_spec\", content: [c] };\n      }\n      function peg$f16(c, d) {\n        return d;\n      }\n      function peg$f17(c, d) {\n        return d;\n      }\n      function peg$f18(c, r) {\n        return { type: \"num_spec\", content: r ? [c].concat(r) : [c] };\n      }\n      function peg$f19(c, fs) {\n        return { type: \"color\", color: c, functions: fs };\n      }\n      function peg$f20(f, n) {\n        return n;\n      }\n      function peg$f21(f, args) {\n        return { type: \"function\", name: f, args };\n      }\n      function peg$f22(core, d, e, es) {\n        return {\n          type: \"extended_expr\",\n          core_model: core,\n          div: d,\n          expressions: [e].concat(es)\n        };\n      }\n      function peg$f23(core, e, es) {\n        return {\n          type: \"extended_expr\",\n          core_model: core,\n          div: null,\n          expressions: [e].concat(es)\n        };\n      }\n      function peg$f24(e, d) {\n        return { type: \"weighted_expr\", color: e, weight: d };\n      }\n      function peg$f25(e) {\n        return e;\n      }\n      function peg$f26(p, n, e, po) {\n        return {\n          type: \"expr\",\n          prefix: p,\n          name: n,\n          mix_expr: e,\n          postfix: po\n        };\n      }\n      function peg$f27(p, n) {\n        return { type: \"complete_mix\", mix_percent: p, name: n };\n      }\n      function peg$f28(p) {\n        return { type: \"partial_mix\", mix_percent: p };\n      }\n      function peg$f29(c, p) {\n        return c.concat(p || []);\n      }\n      function peg$f30(n) {\n        return { type: \"postfix\", num: n };\n      }\n      function peg$f31(p) {\n        return { type: \"postfix\", plusses: p };\n      }\n      function peg$f32(n) {\n        return parseInt(n, 10);\n      }\n      function peg$f33(n) {\n        return parseFloat(n);\n      }\n      function peg$f34(n) {\n        return n;\n      }\n      function peg$f35(n) {\n        return -n;\n      }\n      function peg$f36(m, n) {\n        return m ? -n : n;\n      }\n      function peg$f37(h) {\n        return h.toUpperCase();\n      }\n      let peg$currPos = options.peg$currPos | 0;\n      let peg$savedPos = peg$currPos;\n      const peg$posDetailsCache = [{ line: 1, column: 1 }];\n      let peg$maxFailPos = peg$currPos;\n      let peg$maxFailExpected = options.peg$maxFailExpected || [];\n      let peg$silentFails = options.peg$silentFails | 0;\n      let peg$result;\n      if (options.startRule) {\n        if (!(options.startRule in peg$startRuleFunctions)) {\n          throw new Error(`Can't start parsing from rule \"` + options.startRule + '\".');\n        }\n        peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n      }\n      function text() {\n        return input.substring(peg$savedPos, peg$currPos);\n      }\n      function offset() {\n        return peg$savedPos;\n      }\n      function range() {\n        return {\n          source: peg$source,\n          start: peg$savedPos,\n          end: peg$currPos\n        };\n      }\n      function location() {\n        return peg$computeLocation(peg$savedPos, peg$currPos);\n      }\n      function expected(description, location2) {\n        location2 = location2 !== void 0 ? location2 : peg$computeLocation(peg$savedPos, peg$currPos);\n        throw peg$buildStructuredError(\n          [peg$otherExpectation(description)],\n          input.substring(peg$savedPos, peg$currPos),\n          location2\n        );\n      }\n      function error(message, location2) {\n        location2 = location2 !== void 0 ? location2 : peg$computeLocation(peg$savedPos, peg$currPos);\n        throw peg$buildSimpleError(message, location2);\n      }\n      function peg$getUnicode(pos = peg$currPos) {\n        const cp = input.codePointAt(pos);\n        if (cp === void 0) {\n          return \"\";\n        }\n        return String.fromCodePoint(cp);\n      }\n      function peg$literalExpectation(text2, ignoreCase) {\n        return { type: \"literal\", text: text2, ignoreCase };\n      }\n      function peg$classExpectation(parts, inverted, ignoreCase, unicode) {\n        return { type: \"class\", parts, inverted, ignoreCase, unicode };\n      }\n      function peg$anyExpectation() {\n        return { type: \"any\" };\n      }\n      function peg$endExpectation() {\n        return { type: \"end\" };\n      }\n      function peg$otherExpectation(description) {\n        return { type: \"other\", description };\n      }\n      function peg$computePosDetails(pos) {\n        let details = peg$posDetailsCache[pos];\n        let p;\n        if (details) {\n          return details;\n        } else {\n          if (pos >= peg$posDetailsCache.length) {\n            p = peg$posDetailsCache.length - 1;\n          } else {\n            p = pos;\n            while (!peg$posDetailsCache[--p]) {\n            }\n          }\n          details = peg$posDetailsCache[p];\n          details = {\n            line: details.line,\n            column: details.column\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            p++;\n          }\n          peg$posDetailsCache[pos] = details;\n          return details;\n        }\n      }\n      function peg$computeLocation(startPos, endPos, offset2) {\n        const startPosDetails = peg$computePosDetails(startPos);\n        const endPosDetails = peg$computePosDetails(endPos);\n        const res = {\n          source: peg$source,\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        if (offset2 && peg$source && typeof peg$source.offset === \"function\") {\n          res.start = peg$source.offset(res.start);\n          res.end = peg$source.offset(res.end);\n        }\n        return res;\n      }\n      function peg$fail(expected2) {\n        if (peg$currPos < peg$maxFailPos) {\n          return;\n        }\n        if (peg$currPos > peg$maxFailPos) {\n          peg$maxFailPos = peg$currPos;\n          peg$maxFailExpected = [];\n        }\n        peg$maxFailExpected.push(expected2);\n      }\n      function peg$buildSimpleError(message, location2) {\n        return new peg$SyntaxError(message, null, null, location2);\n      }\n      function peg$buildStructuredError(expected2, found, location2) {\n        return new peg$SyntaxError(\n          peg$SyntaxError.buildMessage(expected2, found),\n          expected2,\n          found,\n          location2\n        );\n      }\n      function peg$parsestart() {\n        let s0, s1, s2, s3;\n        s0 = peg$currPos;\n        s1 = peg$parsespec();\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parseEOL();\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f0(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$parsespec_list();\n          if (s1 !== peg$FAILED) {\n            s2 = peg$parseEOL();\n            if (s2 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s0 = peg$f1(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$parsecolor();\n            if (s1 !== peg$FAILED) {\n              s2 = peg$parseEOL();\n              if (s2 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s0 = peg$f2(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$parsemodel_list();\n              if (s1 !== peg$FAILED) {\n                s2 = peg$parseEOL();\n                if (s2 !== peg$FAILED) {\n                  peg$savedPos = s0;\n                  s0 = peg$f3(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$parsecolor_set_spec();\n                if (s1 !== peg$FAILED) {\n                  s2 = peg$parseEOL();\n                  if (s2 !== peg$FAILED) {\n                    peg$savedPos = s0;\n                    s0 = peg$f4(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$currPos;\n                  s2 = [];\n                  if (input.length > peg$currPos) {\n                    s3 = input.charAt(peg$currPos);\n                    peg$currPos++;\n                  } else {\n                    s3 = peg$FAILED;\n                    if (peg$silentFails === 0) {\n                      peg$fail(peg$e0);\n                    }\n                  }\n                  while (s3 !== peg$FAILED) {\n                    s2.push(s3);\n                    if (input.length > peg$currPos) {\n                      s3 = input.charAt(peg$currPos);\n                      peg$currPos++;\n                    } else {\n                      s3 = peg$FAILED;\n                      if (peg$silentFails === 0) {\n                        peg$fail(peg$e0);\n                      }\n                    }\n                  }\n                  s1 = input.substring(s1, peg$currPos);\n                  peg$savedPos = s0;\n                  s1 = peg$f5(s1);\n                  s0 = s1;\n                }\n              }\n            }\n          }\n        }\n        return s0;\n      }\n      function peg$parsecolor_set_spec() {\n        let s0, s1, s2, s3, s4, s5;\n        s0 = peg$currPos;\n        s1 = peg$parsecolor_set_item();\n        if (s1 !== peg$FAILED) {\n          s2 = [];\n          s3 = peg$currPos;\n          if (input.charCodeAt(peg$currPos) === 59) {\n            s4 = peg$c0;\n            peg$currPos++;\n          } else {\n            s4 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e1);\n            }\n          }\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parsecolor_set_item();\n            if (s5 !== peg$FAILED) {\n              peg$savedPos = s3;\n              s3 = peg$f6(s1, s5);\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n          while (s3 !== peg$FAILED) {\n            s2.push(s3);\n            s3 = peg$currPos;\n            if (input.charCodeAt(peg$currPos) === 59) {\n              s4 = peg$c0;\n              peg$currPos++;\n            } else {\n              s4 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e1);\n              }\n            }\n            if (s4 !== peg$FAILED) {\n              s5 = peg$parsecolor_set_item();\n              if (s5 !== peg$FAILED) {\n                peg$savedPos = s3;\n                s3 = peg$f6(s1, s5);\n              } else {\n                peg$currPos = s3;\n                s3 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          }\n          peg$savedPos = s0;\n          s0 = peg$f7(s1, s2);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsecolor_set_item() {\n        let s0, s1, s2, s3;\n        s0 = peg$currPos;\n        s1 = peg$parsename();\n        if (s1 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 44) {\n            s2 = peg$c1;\n            peg$currPos++;\n          } else {\n            s2 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e2);\n            }\n          }\n          if (s2 !== peg$FAILED) {\n            s3 = peg$parsespec_list();\n            if (s3 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s0 = peg$f8(s1, s3);\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        return s0;\n      }\n      function peg$parsemodel_list() {\n        let s0, s1, s2, s3;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = peg$parsecore_model();\n        if (s1 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 58) {\n            s2 = peg$c2;\n            peg$currPos++;\n          } else {\n            s2 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e4);\n            }\n          }\n          if (s2 !== peg$FAILED) {\n            s3 = peg$parsemodel_list_tail();\n            if (s3 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s0 = peg$f9(s1, s3);\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$parsemodel_list_tail();\n          if (s1 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$f10(s1);\n          }\n          s0 = s1;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e3);\n          }\n        }\n        return s0;\n      }\n      function peg$parsemodel_list_tail() {\n        let s0, s1, s2, s3, s4, s5;\n        s0 = peg$currPos;\n        s1 = peg$parsemodel();\n        if (s1 !== peg$FAILED) {\n          s2 = [];\n          s3 = peg$currPos;\n          if (input.charCodeAt(peg$currPos) === 47) {\n            s4 = peg$c3;\n            peg$currPos++;\n          } else {\n            s4 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e5);\n            }\n          }\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parsemodel();\n            if (s5 !== peg$FAILED) {\n              peg$savedPos = s3;\n              s3 = peg$f11(s1, s5);\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n          while (s3 !== peg$FAILED) {\n            s2.push(s3);\n            s3 = peg$currPos;\n            if (input.charCodeAt(peg$currPos) === 47) {\n              s4 = peg$c3;\n              peg$currPos++;\n            } else {\n              s4 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e5);\n              }\n            }\n            if (s4 !== peg$FAILED) {\n              s5 = peg$parsemodel();\n              if (s5 !== peg$FAILED) {\n                peg$savedPos = s3;\n                s3 = peg$f11(s1, s5);\n              } else {\n                peg$currPos = s3;\n                s3 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          }\n          peg$savedPos = s0;\n          s0 = peg$f12(s1, s2);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsemodel() {\n        let s0, s1;\n        peg$silentFails++;\n        s0 = peg$parsecore_model();\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e6);\n          }\n        }\n        return s0;\n      }\n      function peg$parsespec_list() {\n        let s0, s1, s2, s3, s4, s5;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = peg$parsespec();\n        if (s1 !== peg$FAILED) {\n          s2 = [];\n          s3 = peg$currPos;\n          if (input.charCodeAt(peg$currPos) === 47) {\n            s4 = peg$c3;\n            peg$currPos++;\n          } else {\n            s4 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e5);\n            }\n          }\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parsespec();\n            if (s5 !== peg$FAILED) {\n              peg$savedPos = s3;\n              s3 = peg$f13(s1, s5);\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n          while (s3 !== peg$FAILED) {\n            s2.push(s3);\n            s3 = peg$currPos;\n            if (input.charCodeAt(peg$currPos) === 47) {\n              s4 = peg$c3;\n              peg$currPos++;\n            } else {\n              s4 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e5);\n              }\n            }\n            if (s4 !== peg$FAILED) {\n              s5 = peg$parsespec();\n              if (s5 !== peg$FAILED) {\n                peg$savedPos = s3;\n                s3 = peg$f13(s1, s5);\n              } else {\n                peg$currPos = s3;\n                s3 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          }\n          peg$savedPos = s0;\n          s0 = peg$f14(s1, s2);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e7);\n          }\n        }\n        return s0;\n      }\n      function peg$parsespec() {\n        let s0, s1, s2, s3, s4, s5, s6, s7, s8;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = peg$currPos;\n        s2 = peg$currPos;\n        s3 = peg$parsehex();\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parsehex();\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parsehex();\n            if (s5 !== peg$FAILED) {\n              s6 = peg$parsehex();\n              if (s6 !== peg$FAILED) {\n                s7 = peg$parsehex();\n                if (s7 !== peg$FAILED) {\n                  s8 = peg$parsehex();\n                  if (s8 !== peg$FAILED) {\n                    s3 = [s3, s4, s5, s6, s7, s8];\n                    s2 = s3;\n                  } else {\n                    peg$currPos = s2;\n                    s2 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s2;\n                  s2 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s2;\n                s2 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s2;\n              s2 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s2;\n            s2 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s2;\n          s2 = peg$FAILED;\n        }\n        if (s2 !== peg$FAILED) {\n          s1 = input.substring(s1, peg$currPos);\n        } else {\n          s1 = s2;\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$f15(s1);\n        }\n        s0 = s1;\n        if (s0 === peg$FAILED) {\n          s0 = peg$currPos;\n          s1 = peg$parsedec();\n          if (s1 !== peg$FAILED) {\n            s2 = [];\n            s3 = peg$currPos;\n            if (input.charCodeAt(peg$currPos) === 44) {\n              s4 = peg$c1;\n              peg$currPos++;\n            } else {\n              s4 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e2);\n              }\n            }\n            if (s4 !== peg$FAILED) {\n              s5 = peg$parsedec();\n              if (s5 !== peg$FAILED) {\n                peg$savedPos = s3;\n                s3 = peg$f16(s1, s5);\n              } else {\n                peg$currPos = s3;\n                s3 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n            if (s3 !== peg$FAILED) {\n              while (s3 !== peg$FAILED) {\n                s2.push(s3);\n                s3 = peg$currPos;\n                if (input.charCodeAt(peg$currPos) === 44) {\n                  s4 = peg$c1;\n                  peg$currPos++;\n                } else {\n                  s4 = peg$FAILED;\n                  if (peg$silentFails === 0) {\n                    peg$fail(peg$e2);\n                  }\n                }\n                if (s4 !== peg$FAILED) {\n                  s5 = peg$parsedec();\n                  if (s5 !== peg$FAILED) {\n                    peg$savedPos = s3;\n                    s3 = peg$f16(s1, s5);\n                  } else {\n                    peg$currPos = s3;\n                    s3 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s3;\n                  s3 = peg$FAILED;\n                }\n              }\n            } else {\n              s2 = peg$FAILED;\n            }\n            if (s2 === peg$FAILED) {\n              s2 = [];\n              s3 = peg$currPos;\n              s4 = peg$parsesp();\n              if (s4 !== peg$FAILED) {\n                s5 = peg$parsedec();\n                if (s5 !== peg$FAILED) {\n                  peg$savedPos = s3;\n                  s3 = peg$f17(s1, s5);\n                } else {\n                  peg$currPos = s3;\n                  s3 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s3;\n                s3 = peg$FAILED;\n              }\n              if (s3 !== peg$FAILED) {\n                while (s3 !== peg$FAILED) {\n                  s2.push(s3);\n                  s3 = peg$currPos;\n                  s4 = peg$parsesp();\n                  if (s4 !== peg$FAILED) {\n                    s5 = peg$parsedec();\n                    if (s5 !== peg$FAILED) {\n                      peg$savedPos = s3;\n                      s3 = peg$f17(s1, s5);\n                    } else {\n                      peg$currPos = s3;\n                      s3 = peg$FAILED;\n                    }\n                  } else {\n                    peg$currPos = s3;\n                    s3 = peg$FAILED;\n                  }\n                }\n              } else {\n                s2 = peg$FAILED;\n              }\n            }\n            if (s2 === peg$FAILED) {\n              s2 = null;\n            }\n            peg$savedPos = s0;\n            s0 = peg$f18(s1, s2);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e8);\n          }\n        }\n        return s0;\n      }\n      function peg$parsecolor() {\n        let s0, s1, s2, s3;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = peg$parsecolor_expr();\n        if (s1 !== peg$FAILED) {\n          s2 = [];\n          s3 = peg$parsefunc_expr();\n          while (s3 !== peg$FAILED) {\n            s2.push(s3);\n            s3 = peg$parsefunc_expr();\n          }\n          peg$savedPos = s0;\n          s0 = peg$f19(s1, s2);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e9);\n          }\n        }\n        return s0;\n      }\n      function peg$parsecolor_expr() {\n        let s0;\n        s0 = peg$parseext_expr();\n        if (s0 === peg$FAILED) {\n          s0 = peg$parseexpr();\n          if (s0 === peg$FAILED) {\n            s0 = peg$parsename();\n          }\n        }\n        return s0;\n      }\n      function peg$parsefunc_expr() {\n        let s0, s1, s2, s3, s4, s5, s6;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 62) {\n          s1 = peg$c4;\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e11);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parsefunction();\n          if (s2 !== peg$FAILED) {\n            s3 = [];\n            s4 = peg$currPos;\n            if (input.charCodeAt(peg$currPos) === 44) {\n              s5 = peg$c1;\n              peg$currPos++;\n            } else {\n              s5 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e2);\n              }\n            }\n            if (s5 !== peg$FAILED) {\n              s6 = peg$parseint();\n              if (s6 !== peg$FAILED) {\n                peg$savedPos = s4;\n                s4 = peg$f20(s2, s6);\n              } else {\n                peg$currPos = s4;\n                s4 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s4;\n              s4 = peg$FAILED;\n            }\n            while (s4 !== peg$FAILED) {\n              s3.push(s4);\n              s4 = peg$currPos;\n              if (input.charCodeAt(peg$currPos) === 44) {\n                s5 = peg$c1;\n                peg$currPos++;\n              } else {\n                s5 = peg$FAILED;\n                if (peg$silentFails === 0) {\n                  peg$fail(peg$e2);\n                }\n              }\n              if (s5 !== peg$FAILED) {\n                s6 = peg$parseint();\n                if (s6 !== peg$FAILED) {\n                  peg$savedPos = s4;\n                  s4 = peg$f20(s2, s6);\n                } else {\n                  peg$currPos = s4;\n                  s4 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s4;\n                s4 = peg$FAILED;\n              }\n            }\n            peg$savedPos = s0;\n            s0 = peg$f21(s2, s3);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e10);\n          }\n        }\n        return s0;\n      }\n      function peg$parsefunction() {\n        let s0, s1;\n        peg$silentFails++;\n        s0 = peg$parsename();\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e12);\n          }\n        }\n        return s0;\n      }\n      function peg$parseext_expr() {\n        let s0, s1, s2, s3, s4, s5, s6, s7;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = peg$parsecore_model();\n        if (s1 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 44) {\n            s2 = peg$c1;\n            peg$currPos++;\n          } else {\n            s2 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e2);\n            }\n          }\n          if (s2 !== peg$FAILED) {\n            s3 = peg$parsediv();\n            if (s3 !== peg$FAILED) {\n              if (input.charCodeAt(peg$currPos) === 58) {\n                s4 = peg$c2;\n                peg$currPos++;\n              } else {\n                s4 = peg$FAILED;\n                if (peg$silentFails === 0) {\n                  peg$fail(peg$e4);\n                }\n              }\n              if (s4 !== peg$FAILED) {\n                s5 = peg$parseweighted_expr();\n                if (s5 !== peg$FAILED) {\n                  s6 = [];\n                  s7 = peg$parseadditional_weighted_expr();\n                  while (s7 !== peg$FAILED) {\n                    s6.push(s7);\n                    s7 = peg$parseadditional_weighted_expr();\n                  }\n                  peg$savedPos = s0;\n                  s0 = peg$f22(s1, s3, s5, s6);\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$parsecore_model();\n          if (s1 !== peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 58) {\n              s2 = peg$c2;\n              peg$currPos++;\n            } else {\n              s2 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e4);\n              }\n            }\n            if (s2 !== peg$FAILED) {\n              s3 = peg$parseweighted_expr();\n              if (s3 !== peg$FAILED) {\n                s4 = [];\n                s5 = peg$parseadditional_weighted_expr();\n                while (s5 !== peg$FAILED) {\n                  s4.push(s5);\n                  s5 = peg$parseadditional_weighted_expr();\n                }\n                peg$savedPos = s0;\n                s0 = peg$f23(s1, s3, s4);\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        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e13);\n          }\n        }\n        return s0;\n      }\n      function peg$parseweighted_expr() {\n        let s0, s1, s2, s3;\n        s0 = peg$currPos;\n        s1 = peg$parseexpr();\n        if (s1 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 44) {\n            s2 = peg$c1;\n            peg$currPos++;\n          } else {\n            s2 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e2);\n            }\n          }\n          if (s2 !== peg$FAILED) {\n            s3 = peg$parsedec();\n            if (s3 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s0 = peg$f24(s1, s3);\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        return s0;\n      }\n      function peg$parseadditional_weighted_expr() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 59) {\n          s1 = peg$c0;\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e1);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parseweighted_expr();\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f25(s2);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsecore_model() {\n        let s0, s1;\n        peg$silentFails++;\n        s0 = peg$parsename();\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e14);\n          }\n        }\n        return s0;\n      }\n      function peg$parseexpr() {\n        let s0, s1, s2, s3, s4;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = peg$parseprefix();\n        s2 = peg$parsename();\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parsemix_expr();\n          s4 = peg$parsepostfix();\n          if (s4 === peg$FAILED) {\n            s4 = null;\n          }\n          peg$savedPos = s0;\n          s0 = peg$f26(s1, s2, s3, s4);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e15);\n          }\n        }\n        return s0;\n      }\n      function peg$parsecomplete_mix() {\n        let s0, s1, s2, s3, s4;\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 33) {\n          s1 = peg$c5;\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e16);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parsepct();\n          if (s2 !== peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 33) {\n              s3 = peg$c5;\n              peg$currPos++;\n            } else {\n              s3 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e16);\n              }\n            }\n            if (s3 !== peg$FAILED) {\n              s4 = peg$parsename();\n              if (s4 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s0 = peg$f27(s2, s4);\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        return s0;\n      }\n      function peg$parsepartial_mix() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 33) {\n          s1 = peg$c5;\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e16);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parsepct();\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f28(s2);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsemix_expr() {\n        let s0, s1, s2;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = [];\n        s2 = peg$parsecomplete_mix();\n        while (s2 !== peg$FAILED) {\n          s1.push(s2);\n          s2 = peg$parsecomplete_mix();\n        }\n        s2 = peg$parsepartial_mix();\n        if (s2 === peg$FAILED) {\n          s2 = null;\n        }\n        peg$savedPos = s0;\n        s0 = peg$f29(s1, s2);\n        peg$silentFails--;\n        return s0;\n      }\n      function peg$parsename() {\n        let s0, s1, s2;\n        peg$silentFails++;\n        if (input.charCodeAt(peg$currPos) === 46) {\n          s0 = peg$c6;\n          peg$currPos++;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e18);\n          }\n        }\n        if (s0 === peg$FAILED) {\n          s0 = peg$currPos;\n          s1 = [];\n          s2 = input.charAt(peg$currPos);\n          if (peg$r0.test(s2)) {\n            peg$currPos++;\n          } else {\n            s2 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e19);\n            }\n          }\n          if (s2 !== peg$FAILED) {\n            while (s2 !== peg$FAILED) {\n              s1.push(s2);\n              s2 = input.charAt(peg$currPos);\n              if (peg$r0.test(s2)) {\n                peg$currPos++;\n              } else {\n                s2 = peg$FAILED;\n                if (peg$silentFails === 0) {\n                  peg$fail(peg$e19);\n                }\n              }\n            }\n          } else {\n            s1 = peg$FAILED;\n          }\n          if (s1 !== peg$FAILED) {\n            s0 = input.substring(s0, peg$currPos);\n          } else {\n            s0 = s1;\n          }\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e17);\n          }\n        }\n        return s0;\n      }\n      function peg$parsepostfix() {\n        let s0, s1, s2, s3, s4;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        if (input.substr(peg$currPos, 3) === peg$c7) {\n          s1 = peg$c7;\n          peg$currPos += 3;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e21);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parsenum();\n          if (s2 !== peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 93) {\n              s3 = peg$c8;\n              peg$currPos++;\n            } else {\n              s3 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e22);\n              }\n            }\n            if (s3 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s0 = peg$f30(s2);\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          if (input.substr(peg$currPos, 2) === peg$c9) {\n            s1 = peg$c9;\n            peg$currPos += 2;\n          } else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e23);\n            }\n          }\n          if (s1 !== peg$FAILED) {\n            s2 = peg$currPos;\n            s3 = [];\n            s4 = peg$parseplus();\n            if (s4 !== peg$FAILED) {\n              while (s4 !== peg$FAILED) {\n                s3.push(s4);\n                s4 = peg$parseplus();\n              }\n            } else {\n              s3 = peg$FAILED;\n            }\n            if (s3 !== peg$FAILED) {\n              s2 = input.substring(s2, peg$currPos);\n            } else {\n              s2 = s3;\n            }\n            if (s2 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s0 = peg$f31(s2);\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e20);\n          }\n        }\n        return s0;\n      }\n      function peg$parseprefix() {\n        let s0;\n        peg$silentFails++;\n        s0 = peg$parseminus();\n        if (s0 === peg$FAILED) {\n          s0 = null;\n        }\n        peg$silentFails--;\n        return s0;\n      }\n      function peg$parseplus() {\n        let s0, s1, s2;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = [];\n        if (input.charCodeAt(peg$currPos) === 43) {\n          s2 = peg$c10;\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e25);\n          }\n        }\n        if (s2 !== peg$FAILED) {\n          while (s2 !== peg$FAILED) {\n            s1.push(s2);\n            if (input.charCodeAt(peg$currPos) === 43) {\n              s2 = peg$c10;\n              peg$currPos++;\n            } else {\n              s2 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e25);\n              }\n            }\n          }\n        } else {\n          s1 = peg$FAILED;\n        }\n        if (s1 !== peg$FAILED) {\n          s0 = input.substring(s0, peg$currPos);\n        } else {\n          s0 = s1;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e24);\n          }\n        }\n        return s0;\n      }\n      function peg$parseminus() {\n        let s0, s1, s2;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = [];\n        if (input.charCodeAt(peg$currPos) === 45) {\n          s2 = peg$c11;\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e27);\n          }\n        }\n        if (s2 !== peg$FAILED) {\n          while (s2 !== peg$FAILED) {\n            s1.push(s2);\n            if (input.charCodeAt(peg$currPos) === 45) {\n              s2 = peg$c11;\n              peg$currPos++;\n            } else {\n              s2 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e27);\n              }\n            }\n          }\n        } else {\n          s1 = peg$FAILED;\n        }\n        if (s1 !== peg$FAILED) {\n          s0 = input.substring(s0, peg$currPos);\n        } else {\n          s0 = s1;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e26);\n          }\n        }\n        return s0;\n      }\n      function peg$parsenum() {\n        let s0, s1, s2, s3;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = peg$currPos;\n        s2 = [];\n        s3 = input.charAt(peg$currPos);\n        if (peg$r1.test(s3)) {\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e29);\n          }\n        }\n        if (s3 !== peg$FAILED) {\n          while (s3 !== peg$FAILED) {\n            s2.push(s3);\n            s3 = input.charAt(peg$currPos);\n            if (peg$r1.test(s3)) {\n              peg$currPos++;\n            } else {\n              s3 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e29);\n              }\n            }\n          }\n        } else {\n          s2 = peg$FAILED;\n        }\n        if (s2 !== peg$FAILED) {\n          s1 = input.substring(s1, peg$currPos);\n        } else {\n          s1 = s2;\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$f32(s1);\n        }\n        s0 = s1;\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e28);\n          }\n        }\n        return s0;\n      }\n      function peg$parsepct() {\n        let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = peg$currPos;\n        s2 = peg$currPos;\n        s3 = peg$currPos;\n        s4 = [];\n        s5 = input.charAt(peg$currPos);\n        if (peg$r1.test(s5)) {\n          peg$currPos++;\n        } else {\n          s5 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e29);\n          }\n        }\n        if (s5 !== peg$FAILED) {\n          while (s5 !== peg$FAILED) {\n            s4.push(s5);\n            s5 = input.charAt(peg$currPos);\n            if (peg$r1.test(s5)) {\n              peg$currPos++;\n            } else {\n              s5 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e29);\n              }\n            }\n          }\n        } else {\n          s4 = peg$FAILED;\n        }\n        if (s4 !== peg$FAILED) {\n          s3 = input.substring(s3, peg$currPos);\n        } else {\n          s3 = s4;\n        }\n        if (s3 !== peg$FAILED) {\n          s4 = peg$currPos;\n          s5 = peg$currPos;\n          if (input.charCodeAt(peg$currPos) === 46) {\n            s6 = peg$c6;\n            peg$currPos++;\n          } else {\n            s6 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e18);\n            }\n          }\n          if (s6 !== peg$FAILED) {\n            s7 = peg$currPos;\n            s8 = [];\n            s9 = input.charAt(peg$currPos);\n            if (peg$r1.test(s9)) {\n              peg$currPos++;\n            } else {\n              s9 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e29);\n              }\n            }\n            while (s9 !== peg$FAILED) {\n              s8.push(s9);\n              s9 = input.charAt(peg$currPos);\n              if (peg$r1.test(s9)) {\n                peg$currPos++;\n              } else {\n                s9 = peg$FAILED;\n                if (peg$silentFails === 0) {\n                  peg$fail(peg$e29);\n                }\n              }\n            }\n            s7 = input.substring(s7, peg$currPos);\n            s6 = [s6, s7];\n            s5 = s6;\n          } else {\n            peg$currPos = s5;\n            s5 = peg$FAILED;\n          }\n          if (s5 === peg$FAILED) {\n            s5 = null;\n          }\n          s4 = input.substring(s4, peg$currPos);\n          s3 = [s3, s4];\n          s2 = s3;\n        } else {\n          peg$currPos = s2;\n          s2 = peg$FAILED;\n        }\n        if (s2 !== peg$FAILED) {\n          s1 = input.substring(s1, peg$currPos);\n        } else {\n          s1 = s2;\n        }\n        if (s1 === peg$FAILED) {\n          s1 = peg$currPos;\n          s2 = peg$currPos;\n          if (input.charCodeAt(peg$currPos) === 46) {\n            s3 = peg$c6;\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e18);\n            }\n          }\n          if (s3 !== peg$FAILED) {\n            s4 = peg$currPos;\n            s5 = [];\n            s6 = input.charAt(peg$currPos);\n            if (peg$r1.test(s6)) {\n              peg$currPos++;\n            } else {\n              s6 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e29);\n              }\n            }\n            if (s6 !== peg$FAILED) {\n              while (s6 !== peg$FAILED) {\n                s5.push(s6);\n                s6 = input.charAt(peg$currPos);\n                if (peg$r1.test(s6)) {\n                  peg$currPos++;\n                } else {\n                  s6 = peg$FAILED;\n                  if (peg$silentFails === 0) {\n                    peg$fail(peg$e29);\n                  }\n                }\n              }\n            } else {\n              s5 = peg$FAILED;\n            }\n            if (s5 !== peg$FAILED) {\n              s4 = input.substring(s4, peg$currPos);\n            } else {\n              s4 = s5;\n            }\n            if (s4 !== peg$FAILED) {\n              s3 = [s3, s4];\n              s2 = s3;\n            } else {\n              peg$currPos = s2;\n              s2 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s2;\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            s1 = input.substring(s1, peg$currPos);\n          } else {\n            s1 = s2;\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$f33(s1);\n        }\n        s0 = s1;\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e30);\n          }\n        }\n        return s0;\n      }\n      function peg$parsediv() {\n        let s0, s1;\n        peg$silentFails++;\n        s0 = peg$parsepct();\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e31);\n          }\n        }\n        return s0;\n      }\n      function peg$parsedec() {\n        let s0, s1, s2;\n        s0 = peg$parsepct();\n        if (s0 === peg$FAILED) {\n          s0 = peg$currPos;\n          if (input.charCodeAt(peg$currPos) === 43) {\n            s1 = peg$c10;\n            peg$currPos++;\n          } else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e25);\n            }\n          }\n          if (s1 !== peg$FAILED) {\n            s2 = peg$parsepct();\n            if (s2 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s0 = peg$f34(s2);\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            if (input.charCodeAt(peg$currPos) === 45) {\n              s1 = peg$c11;\n              peg$currPos++;\n            } else {\n              s1 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e27);\n              }\n            }\n            if (s1 !== peg$FAILED) {\n              s2 = peg$parsepct();\n              if (s2 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s0 = peg$f35(s2);\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        return s0;\n      }\n      function peg$parseint() {\n        let s0, s1, s2;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = peg$parseminus();\n        if (s1 === peg$FAILED) {\n          s1 = null;\n        }\n        s2 = peg$parsenum();\n        if (s2 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s0 = peg$f36(s1, s2);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e32);\n          }\n        }\n        return s0;\n      }\n      function peg$parsesp() {\n        let s0, s1;\n        s0 = [];\n        s1 = input.charAt(peg$currPos);\n        if (peg$r2.test(s1)) {\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e33);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          while (s1 !== peg$FAILED) {\n            s0.push(s1);\n            s1 = input.charAt(peg$currPos);\n            if (peg$r2.test(s1)) {\n              peg$currPos++;\n            } else {\n              s1 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e33);\n              }\n            }\n          }\n        } else {\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsehex() {\n        let s0, s1;\n        s0 = peg$currPos;\n        s1 = input.charAt(peg$currPos);\n        if (peg$r3.test(s1)) {\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e34);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$f37(s1);\n        }\n        s0 = s1;\n        return s0;\n      }\n      function peg$parseEOL() {\n        let s0, s1;\n        s0 = peg$currPos;\n        peg$silentFails++;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        peg$silentFails--;\n        if (s1 === peg$FAILED) {\n          s0 = void 0;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      peg$result = peg$startRuleFunction();\n      const peg$success = peg$result !== peg$FAILED && peg$currPos === input.length;\n      function peg$throw() {\n        if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n          peg$fail(peg$endExpectation());\n        }\n        throw peg$buildStructuredError(\n          peg$maxFailExpected,\n          peg$maxFailPos < input.length ? peg$getUnicode(peg$maxFailPos) : null,\n          peg$maxFailPos < input.length ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n        );\n      }\n      if (options.peg$library) {\n        return (\n          /** @type {any} */\n          {\n            peg$result,\n            peg$currPos,\n            peg$FAILED,\n            peg$maxFailExpected,\n            peg$maxFailPos,\n            peg$success,\n            peg$throw: peg$success ? void 0 : peg$throw\n          }\n        );\n      }\n      if (peg$success) {\n        return peg$result;\n      } else {\n        peg$throw();\n      }\n    }\n    return {\n      StartRules: [\"start\"],\n      SyntaxError: peg$SyntaxError,\n      parse: peg$parse\n    };\n  })()\n);\n","export default (\n  // @generated by Peggy 5.1.0.\n  //\n  // https://peggyjs.org/\n  (function() {\n    \"use strict\";\n    class peg$SyntaxError extends SyntaxError {\n      constructor(message, expected, found, location) {\n        super(message);\n        this.expected = expected;\n        this.found = found;\n        this.location = location;\n        this.name = \"SyntaxError\";\n      }\n      format(sources) {\n        let str = \"Error: \" + this.message;\n        if (this.location) {\n          let src = null;\n          const st = sources.find((s2) => s2.source === this.location.source);\n          if (st) {\n            src = st.text.split(/\\r\\n|\\n|\\r/g);\n          }\n          const s = this.location.start;\n          const offset_s = this.location.source && typeof this.location.source.offset === \"function\" ? this.location.source.offset(s) : s;\n          const loc = this.location.source + \":\" + offset_s.line + \":\" + offset_s.column;\n          if (src) {\n            const e = this.location.end;\n            const filler = \"\".padEnd(offset_s.line.toString().length, \" \");\n            const line = src[s.line - 1];\n            const last = s.line === e.line ? e.column : line.length + 1;\n            const hatLen = last - s.column || 1;\n            str += \"\\n --> \" + loc + \"\\n\" + filler + \" |\\n\" + offset_s.line + \" | \" + line + \"\\n\" + filler + \" | \" + \"\".padEnd(s.column - 1, \" \") + \"\".padEnd(hatLen, \"^\");\n          } else {\n            str += \"\\n at \" + loc;\n          }\n        }\n        return str;\n      }\n      static buildMessage(expected, found) {\n        function hex(ch) {\n          return ch.codePointAt(0).toString(16).toUpperCase();\n        }\n        const nonPrintable = Object.prototype.hasOwnProperty.call(RegExp.prototype, \"unicode\") ? new RegExp(\"[\\\\p{C}\\\\p{Mn}\\\\p{Mc}]\", \"gu\") : null;\n        function unicodeEscape(s) {\n          if (nonPrintable) {\n            return s.replace(nonPrintable, (ch) => \"\\\\u{\" + hex(ch) + \"}\");\n          }\n          return s;\n        }\n        function literalEscape(s) {\n          return unicodeEscape(s.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"').replace(/\\0/g, \"\\\\0\").replace(/\\t/g, \"\\\\t\").replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\").replace(/[\\x00-\\x0F]/g, (ch) => \"\\\\x0\" + hex(ch)).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => \"\\\\x\" + hex(ch)));\n        }\n        function classEscape(s) {\n          return unicodeEscape(s.replace(/\\\\/g, \"\\\\\\\\\").replace(/\\]/g, \"\\\\]\").replace(/\\^/g, \"\\\\^\").replace(/-/g, \"\\\\-\").replace(/\\0/g, \"\\\\0\").replace(/\\t/g, \"\\\\t\").replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\").replace(/[\\x00-\\x0F]/g, (ch) => \"\\\\x0\" + hex(ch)).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => \"\\\\x\" + hex(ch)));\n        }\n        const DESCRIBE_EXPECTATION_FNS = {\n          literal(expectation) {\n            return '\"' + literalEscape(expectation.text) + '\"';\n          },\n          class(expectation) {\n            const escapedParts = expectation.parts.map(\n              (part) => Array.isArray(part) ? classEscape(part[0]) + \"-\" + classEscape(part[1]) : classEscape(part)\n            );\n            return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts.join(\"\") + \"]\" + (expectation.unicode ? \"u\" : \"\");\n          },\n          any() {\n            return \"any character\";\n          },\n          end() {\n            return \"end of input\";\n          },\n          other(expectation) {\n            return expectation.description;\n          }\n        };\n        function describeExpectation(expectation) {\n          return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n        }\n        function describeExpected(expected2) {\n          const descriptions = expected2.map(describeExpectation);\n          descriptions.sort();\n          if (descriptions.length > 0) {\n            let j = 1;\n            for (let i = 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          switch (descriptions.length) {\n            case 1:\n              return descriptions[0];\n            case 2:\n              return descriptions[0] + \" or \" + descriptions[1];\n            default:\n              return descriptions.slice(0, -1).join(\", \") + \", or \" + descriptions[descriptions.length - 1];\n          }\n        }\n        function describeFound(found2) {\n          return found2 ? '\"' + literalEscape(found2) + '\"' : \"end of input\";\n        }\n        return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n      }\n    }\n    function peg$parse(input, options) {\n      options = options !== void 0 ? options : {};\n      const peg$FAILED = {};\n      const peg$source = options.grammarSource;\n      const peg$startRuleFunctions = {\n        body: peg$parsebody\n      };\n      let peg$startRuleFunction = peg$parsebody;\n      const peg$e0 = peg$otherExpectation(\"decl_start\");\n      const peg$e1 = peg$otherExpectation(\"decl_end\");\n      const peg$e2 = peg$otherExpectation(\"vert\");\n      const peg$e3 = peg$anyExpectation();\n      const peg$e4 = peg$otherExpectation(\"l\");\n      const peg$e5 = peg$otherExpectation(\"r\");\n      const peg$e6 = peg$otherExpectation(\"c\");\n      const peg$e7 = peg$otherExpectation(\"p\");\n      const peg$e8 = peg$otherExpectation(\"m\");\n      const peg$e9 = peg$otherExpectation(\"b\");\n      const peg$e10 = peg$otherExpectation(\"w\");\n      const peg$e11 = peg$otherExpectation(\"W\");\n      const peg$e12 = peg$otherExpectation(\"X\");\n      const peg$e13 = peg$otherExpectation(\"!\");\n      const peg$e14 = peg$otherExpectation(\"@\");\n      const peg$e15 = peg$otherExpectation(\"<\");\n      const peg$e16 = peg$otherExpectation(\">\");\n      const peg$e17 = peg$otherExpectation(\"group\");\n      const peg$e18 = peg$otherExpectation(\"whitespace\");\n      function peg$f0(c) {\n        return c;\n      }\n      function peg$f1(cols) {\n        return cols;\n      }\n      function peg$f2() {\n        return [];\n      }\n      function peg$f3(divs1, start, a, end, divs2) {\n        return {\n          type: \"column\",\n          pre_dividers: divs1,\n          post_dividers: divs2,\n          before_start_code: start,\n          before_end_code: end,\n          alignment: a\n        };\n      }\n      function peg$f4() {\n        return {\n          type: \"vert_divider\"\n        };\n      }\n      function peg$f5(b, g) {\n        return {\n          type: \"bang_divider\",\n          content: g[0].content\n        };\n      }\n      function peg$f6(g) {\n        return {\n          type: \"at_divider\",\n          content: g[0].content\n        };\n      }\n      function peg$f7(div) {\n        return div;\n      }\n      function peg$f8(g) {\n        return { type: \"decl_code\", code: g[0].content };\n      }\n      function peg$f9(g) {\n        return { type: \"decl_code\", code: g[0].content };\n      }\n      function peg$f10() {\n        return { type: \"alignment\", alignment: \"left\" };\n      }\n      function peg$f11() {\n        return { type: \"alignment\", alignment: \"center\" };\n      }\n      function peg$f12() {\n        return { type: \"alignment\", alignment: \"right\" };\n      }\n      function peg$f13() {\n        return { type: \"alignment\", alignment: \"X\" };\n      }\n      function peg$f14() {\n        return \"top\";\n      }\n      function peg$f15() {\n        return \"default\";\n      }\n      function peg$f16() {\n        return \"bottom\";\n      }\n      function peg$f17(a, g) {\n        return {\n          type: \"alignment\",\n          alignment: \"parbox\",\n          baseline: a,\n          size: g[0].content\n        };\n      }\n      function peg$f18(g1, g2) {\n        return {\n          type: \"alignment\",\n          alignment: \"parbox\",\n          baseline: g1[0].content,\n          size: g2[0].content\n        };\n      }\n      function peg$f19(tok) {\n        return options.matchChar(tok, \"|\");\n      }\n      function peg$f20(tok) {\n        return options.matchChar(tok, \"l\");\n      }\n      function peg$f21(tok) {\n        return options.matchChar(tok, \"r\");\n      }\n      function peg$f22(tok) {\n        return options.matchChar(tok, \"c\");\n      }\n      function peg$f23(tok) {\n        return options.matchChar(tok, \"p\");\n      }\n      function peg$f24(tok) {\n        return options.matchChar(tok, \"m\");\n      }\n      function peg$f25(tok) {\n        return options.matchChar(tok, \"b\");\n      }\n      function peg$f26(tok) {\n        return options.matchChar(tok, \"w\");\n      }\n      function peg$f27(tok) {\n        return options.matchChar(tok, \"W\");\n      }\n      function peg$f28(tok) {\n        return options.matchChar(tok, \"X\");\n      }\n      function peg$f29(tok) {\n        return options.matchChar(tok, \"!\");\n      }\n      function peg$f30(tok) {\n        return options.matchChar(tok, \"@\");\n      }\n      function peg$f31(tok) {\n        return options.matchChar(tok, \"<\");\n      }\n      function peg$f32(tok) {\n        return options.matchChar(tok, \">\");\n      }\n      function peg$f33(tok) {\n        return options.isGroup(tok);\n      }\n      function peg$f34(tok) {\n        return options.isWhitespace(tok);\n      }\n      let peg$currPos = options.peg$currPos | 0;\n      let peg$savedPos = peg$currPos;\n      const peg$posDetailsCache = [{ line: 1, column: 1 }];\n      let peg$maxFailPos = peg$currPos;\n      let peg$maxFailExpected = options.peg$maxFailExpected || [];\n      let peg$silentFails = options.peg$silentFails | 0;\n      let peg$result;\n      if (options.startRule) {\n        if (!(options.startRule in peg$startRuleFunctions)) {\n          throw new Error(`Can't start parsing from rule \"` + options.startRule + '\".');\n        }\n        peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n      }\n      function text() {\n        return input.substring(peg$savedPos, peg$currPos);\n      }\n      function offset() {\n        return peg$savedPos;\n      }\n      function range() {\n        return {\n          source: peg$source,\n          start: peg$savedPos,\n          end: peg$currPos\n        };\n      }\n      function location() {\n        return peg$computeLocation(peg$savedPos, peg$currPos);\n      }\n      function expected(description, location2) {\n        location2 = location2 !== void 0 ? location2 : peg$computeLocation(peg$savedPos, peg$currPos);\n        throw peg$buildStructuredError(\n          [peg$otherExpectation(description)],\n          input.substring(peg$savedPos, peg$currPos),\n          location2\n        );\n      }\n      function error(message, location2) {\n        location2 = location2 !== void 0 ? location2 : peg$computeLocation(peg$savedPos, peg$currPos);\n        throw peg$buildSimpleError(message, location2);\n      }\n      function peg$getUnicode(pos = peg$currPos) {\n        const cp = input.codePointAt(pos);\n        if (cp === void 0) {\n          return \"\";\n        }\n        return String.fromCodePoint(cp);\n      }\n      function peg$literalExpectation(text2, ignoreCase) {\n        return { type: \"literal\", text: text2, ignoreCase };\n      }\n      function peg$classExpectation(parts, inverted, ignoreCase, unicode) {\n        return { type: \"class\", parts, inverted, ignoreCase, unicode };\n      }\n      function peg$anyExpectation() {\n        return { type: \"any\" };\n      }\n      function peg$endExpectation() {\n        return { type: \"end\" };\n      }\n      function peg$otherExpectation(description) {\n        return { type: \"other\", description };\n      }\n      function peg$computePosDetails(pos) {\n        let details = peg$posDetailsCache[pos];\n        let p;\n        if (details) {\n          return details;\n        } else {\n          if (pos >= peg$posDetailsCache.length) {\n            p = peg$posDetailsCache.length - 1;\n          } else {\n            p = pos;\n            while (!peg$posDetailsCache[--p]) {\n            }\n          }\n          details = peg$posDetailsCache[p];\n          details = {\n            line: details.line,\n            column: details.column\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            p++;\n          }\n          peg$posDetailsCache[pos] = details;\n          return details;\n        }\n      }\n      function peg$computeLocation(startPos, endPos, offset2) {\n        const startPosDetails = peg$computePosDetails(startPos);\n        const endPosDetails = peg$computePosDetails(endPos);\n        const res = {\n          source: peg$source,\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        if (offset2 && peg$source && typeof peg$source.offset === \"function\") {\n          res.start = peg$source.offset(res.start);\n          res.end = peg$source.offset(res.end);\n        }\n        return res;\n      }\n      function peg$fail(expected2) {\n        if (peg$currPos < peg$maxFailPos) {\n          return;\n        }\n        if (peg$currPos > peg$maxFailPos) {\n          peg$maxFailPos = peg$currPos;\n          peg$maxFailExpected = [];\n        }\n        peg$maxFailExpected.push(expected2);\n      }\n      function peg$buildSimpleError(message, location2) {\n        return new peg$SyntaxError(message, null, null, location2);\n      }\n      function peg$buildStructuredError(expected2, found, location2) {\n        return new peg$SyntaxError(\n          peg$SyntaxError.buildMessage(expected2, found),\n          expected2,\n          found,\n          location2\n        );\n      }\n      function peg$parsebody() {\n        let s0, s1, s2, s3, s4, s5;\n        s0 = peg$currPos;\n        s1 = [];\n        s2 = peg$currPos;\n        s3 = peg$parsecolumn();\n        if (s3 !== peg$FAILED) {\n          s4 = [];\n          s5 = peg$parse_();\n          while (s5 !== peg$FAILED) {\n            s4.push(s5);\n            s5 = peg$parse_();\n          }\n          peg$savedPos = s2;\n          s2 = peg$f0(s3);\n        } else {\n          peg$currPos = s2;\n          s2 = peg$FAILED;\n        }\n        if (s2 !== peg$FAILED) {\n          while (s2 !== peg$FAILED) {\n            s1.push(s2);\n            s2 = peg$currPos;\n            s3 = peg$parsecolumn();\n            if (s3 !== peg$FAILED) {\n              s4 = [];\n              s5 = peg$parse_();\n              while (s5 !== peg$FAILED) {\n                s4.push(s5);\n                s5 = peg$parse_();\n              }\n              peg$savedPos = s2;\n              s2 = peg$f0(s3);\n            } else {\n              peg$currPos = s2;\n              s2 = peg$FAILED;\n            }\n          }\n        } else {\n          s1 = peg$FAILED;\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$f1(s1);\n        }\n        s0 = s1;\n        if (s0 === peg$FAILED) {\n          s0 = peg$currPos;\n          s1 = peg$parseEOL();\n          if (s1 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$f2();\n          }\n          s0 = s1;\n        }\n        return s0;\n      }\n      function peg$parsecolumn() {\n        let s0, s1, s2, s3, s4, s5, s6;\n        s0 = peg$currPos;\n        s1 = [];\n        s2 = peg$parsecolumn_divider();\n        while (s2 !== peg$FAILED) {\n          s1.push(s2);\n          s2 = peg$parsecolumn_divider();\n        }\n        s2 = peg$parsedecl_start();\n        if (s2 === peg$FAILED) {\n          s2 = null;\n        }\n        s3 = peg$parsealignment();\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parsedecl_end();\n          if (s4 === peg$FAILED) {\n            s4 = null;\n          }\n          s5 = [];\n          s6 = peg$parsecolumn_divider();\n          while (s6 !== peg$FAILED) {\n            s5.push(s6);\n            s6 = peg$parsecolumn_divider();\n          }\n          peg$savedPos = s0;\n          s0 = peg$f3(s1, s2, s3, s4, s5);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsecolumn_divider() {\n        let s0, s1, s2, s3, s4;\n        s0 = peg$currPos;\n        s1 = [];\n        s2 = peg$parse_();\n        while (s2 !== peg$FAILED) {\n          s1.push(s2);\n          s2 = peg$parse_();\n        }\n        s2 = peg$currPos;\n        s3 = peg$parsevert();\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s2;\n          s3 = peg$f4();\n        }\n        s2 = s3;\n        if (s2 === peg$FAILED) {\n          s2 = peg$currPos;\n          s3 = peg$parsebang();\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parsegroup();\n            if (s4 !== peg$FAILED) {\n              peg$savedPos = s2;\n              s2 = peg$f5(s3, s4);\n            } else {\n              peg$currPos = s2;\n              s2 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s2;\n            s2 = peg$FAILED;\n          }\n          if (s2 === peg$FAILED) {\n            s2 = peg$currPos;\n            s3 = peg$parseat();\n            if (s3 !== peg$FAILED) {\n              s4 = peg$parsegroup();\n              if (s4 !== peg$FAILED) {\n                peg$savedPos = s2;\n                s2 = peg$f6(s4);\n              } else {\n                peg$currPos = s2;\n                s2 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s2;\n              s2 = peg$FAILED;\n            }\n          }\n        }\n        if (s2 !== peg$FAILED) {\n          s3 = [];\n          s4 = peg$parse_();\n          while (s4 !== peg$FAILED) {\n            s3.push(s4);\n            s4 = peg$parse_();\n          }\n          peg$savedPos = s0;\n          s0 = peg$f7(s2);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsedecl_start() {\n        let s0, s1, s2;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = peg$parsegreater();\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parsegroup();\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f8(s2);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        return s0;\n      }\n      function peg$parsedecl_end() {\n        let s0, s1, s2;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = peg$parseless();\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parsegroup();\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f9(s2);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e1);\n          }\n        }\n        return s0;\n      }\n      function peg$parsealignment() {\n        let s0, s1, s2, s3, s4, s5;\n        s0 = peg$currPos;\n        s1 = peg$parsel();\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$f10();\n        }\n        s0 = s1;\n        if (s0 === peg$FAILED) {\n          s0 = peg$currPos;\n          s1 = peg$parsec();\n          if (s1 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$f11();\n          }\n          s0 = s1;\n          if (s0 === peg$FAILED) {\n            s0 = peg$currPos;\n            s1 = peg$parser();\n            if (s1 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s1 = peg$f12();\n            }\n            s0 = s1;\n            if (s0 === peg$FAILED) {\n              s0 = peg$currPos;\n              s1 = peg$parseX();\n              if (s1 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$f13();\n              }\n              s0 = s1;\n              if (s0 === peg$FAILED) {\n                s0 = peg$currPos;\n                s1 = peg$currPos;\n                s2 = peg$parsep();\n                if (s2 !== peg$FAILED) {\n                  peg$savedPos = s1;\n                  s2 = peg$f14();\n                }\n                s1 = s2;\n                if (s1 === peg$FAILED) {\n                  s1 = peg$currPos;\n                  s2 = peg$parsem();\n                  if (s2 !== peg$FAILED) {\n                    peg$savedPos = s1;\n                    s2 = peg$f15();\n                  }\n                  s1 = s2;\n                  if (s1 === peg$FAILED) {\n                    s1 = peg$currPos;\n                    s2 = peg$parseb();\n                    if (s2 !== peg$FAILED) {\n                      peg$savedPos = s1;\n                      s2 = peg$f16();\n                    }\n                    s1 = s2;\n                  }\n                }\n                if (s1 !== peg$FAILED) {\n                  s2 = [];\n                  s3 = peg$parse_();\n                  while (s3 !== peg$FAILED) {\n                    s2.push(s3);\n                    s3 = peg$parse_();\n                  }\n                  s3 = peg$parsegroup();\n                  if (s3 !== peg$FAILED) {\n                    peg$savedPos = s0;\n                    s0 = peg$f17(s1, s3);\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$parsew();\n                  if (s1 === peg$FAILED) {\n                    s1 = peg$parseW();\n                  }\n                  if (s1 !== peg$FAILED) {\n                    s2 = [];\n                    s3 = peg$parse_();\n                    while (s3 !== peg$FAILED) {\n                      s2.push(s3);\n                      s3 = peg$parse_();\n                    }\n                    s3 = peg$parsegroup();\n                    if (s3 !== peg$FAILED) {\n                      s4 = [];\n                      s5 = peg$parse_();\n                      while (s5 !== peg$FAILED) {\n                        s4.push(s5);\n                        s5 = peg$parse_();\n                      }\n                      s5 = peg$parsegroup();\n                      if (s5 !== peg$FAILED) {\n                        peg$savedPos = s0;\n                        s0 = peg$f18(s3, s5);\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          }\n        }\n        return s0;\n      }\n      function peg$parsevert() {\n        let s0, s1, s2;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e3);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f19(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            s1 = [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        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e2);\n          }\n        }\n        return s0;\n      }\n      function peg$parsel() {\n        let s0, s1, s2;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e3);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f20(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            s1 = [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        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e4);\n          }\n        }\n        return s0;\n      }\n      function peg$parser() {\n        let s0, s1, s2;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e3);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f21(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            s1 = [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        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e5);\n          }\n        }\n        return s0;\n      }\n      function peg$parsec() {\n        let s0, s1, s2;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e3);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f22(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            s1 = [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        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e6);\n          }\n        }\n        return s0;\n      }\n      function peg$parsep() {\n        let s0, s1, s2;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e3);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f23(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            s1 = [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        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e7);\n          }\n        }\n        return s0;\n      }\n      function peg$parsem() {\n        let s0, s1, s2;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e3);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f24(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            s1 = [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        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e8);\n          }\n        }\n        return s0;\n      }\n      function peg$parseb() {\n        let s0, s1, s2;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e3);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f25(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            s1 = [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        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e9);\n          }\n        }\n        return s0;\n      }\n      function peg$parsew() {\n        let s0, s1, s2;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e3);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f26(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            s1 = [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        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e10);\n          }\n        }\n        return s0;\n      }\n      function peg$parseW() {\n        let s0, s1, s2;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e3);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f27(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            s1 = [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        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e11);\n          }\n        }\n        return s0;\n      }\n      function peg$parseX() {\n        let s0, s1, s2;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e3);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f28(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            s1 = [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        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e12);\n          }\n        }\n        return s0;\n      }\n      function peg$parsebang() {\n        let s0, s1, s2;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e3);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f29(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            s1 = [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        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e13);\n          }\n        }\n        return s0;\n      }\n      function peg$parseat() {\n        let s0, s1, s2;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e3);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f30(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            s1 = [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        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e14);\n          }\n        }\n        return s0;\n      }\n      function peg$parseless() {\n        let s0, s1, s2;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e3);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f31(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            s1 = [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        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e15);\n          }\n        }\n        return s0;\n      }\n      function peg$parsegreater() {\n        let s0, s1, s2;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e3);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f32(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            s1 = [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        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e16);\n          }\n        }\n        return s0;\n      }\n      function peg$parsegroup() {\n        let s0, s1, s2;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e3);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f33(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            s1 = [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        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e17);\n          }\n        }\n        return s0;\n      }\n      function peg$parse_() {\n        let s0, s1, s2;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e3);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f34(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            s1 = [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        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e18);\n          }\n        }\n        return s0;\n      }\n      function peg$parseEOL() {\n        let s0, s1;\n        s0 = peg$currPos;\n        peg$silentFails++;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e3);\n          }\n        }\n        peg$silentFails--;\n        if (s1 === peg$FAILED) {\n          s0 = void 0;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      if (!options.isHash) {\n        try {\n          Object.assign(options, {\n            matchChar: (node, char) => node.type === \"string\" && node.content === char,\n            isGroup: (node) => node.type === \"group\",\n            isWhitespace: (node) => node.type === \"whitespace\"\n          });\n        } catch (e) {\n          console.warn(\"Error when initializing parser\", e);\n        }\n      }\n      peg$result = peg$startRuleFunction();\n      const peg$success = peg$result !== peg$FAILED && peg$currPos === input.length;\n      function peg$throw() {\n        if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n          peg$fail(peg$endExpectation());\n        }\n        throw peg$buildStructuredError(\n          peg$maxFailExpected,\n          peg$maxFailPos < input.length ? peg$getUnicode(peg$maxFailPos) : null,\n          peg$maxFailPos < input.length ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n        );\n      }\n      if (options.peg$library) {\n        return (\n          /** @type {any} */\n          {\n            peg$result,\n            peg$currPos,\n            peg$FAILED,\n            peg$maxFailExpected,\n            peg$maxFailPos,\n            peg$success,\n            peg$throw: peg$success ? void 0 : peg$throw\n          }\n        );\n      }\n      if (peg$success) {\n        return peg$result;\n      } else {\n        peg$throw();\n      }\n    }\n    return {\n      StartRules: [\"body\"],\n      SyntaxError: peg$SyntaxError,\n      parse: peg$parse\n    };\n  })()\n);\n","export default (\n  // @generated by Peggy 5.1.0.\n  //\n  // https://peggyjs.org/\n  (function() {\n    \"use strict\";\n    class peg$SyntaxError extends SyntaxError {\n      constructor(message, expected, found, location) {\n        super(message);\n        this.expected = expected;\n        this.found = found;\n        this.location = location;\n        this.name = \"SyntaxError\";\n      }\n      format(sources) {\n        let str = \"Error: \" + this.message;\n        if (this.location) {\n          let src = null;\n          const st = sources.find((s2) => s2.source === this.location.source);\n          if (st) {\n            src = st.text.split(/\\r\\n|\\n|\\r/g);\n          }\n          const s = this.location.start;\n          const offset_s = this.location.source && typeof this.location.source.offset === \"function\" ? this.location.source.offset(s) : s;\n          const loc = this.location.source + \":\" + offset_s.line + \":\" + offset_s.column;\n          if (src) {\n            const e = this.location.end;\n            const filler = \"\".padEnd(offset_s.line.toString().length, \" \");\n            const line = src[s.line - 1];\n            const last = s.line === e.line ? e.column : line.length + 1;\n            const hatLen = last - s.column || 1;\n            str += \"\\n --> \" + loc + \"\\n\" + filler + \" |\\n\" + offset_s.line + \" | \" + line + \"\\n\" + filler + \" | \" + \"\".padEnd(s.column - 1, \" \") + \"\".padEnd(hatLen, \"^\");\n          } else {\n            str += \"\\n at \" + loc;\n          }\n        }\n        return str;\n      }\n      static buildMessage(expected, found) {\n        function hex(ch) {\n          return ch.codePointAt(0).toString(16).toUpperCase();\n        }\n        const nonPrintable = Object.prototype.hasOwnProperty.call(RegExp.prototype, \"unicode\") ? new RegExp(\"[\\\\p{C}\\\\p{Mn}\\\\p{Mc}]\", \"gu\") : null;\n        function unicodeEscape(s) {\n          if (nonPrintable) {\n            return s.replace(nonPrintable, (ch) => \"\\\\u{\" + hex(ch) + \"}\");\n          }\n          return s;\n        }\n        function literalEscape(s) {\n          return unicodeEscape(s.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"').replace(/\\0/g, \"\\\\0\").replace(/\\t/g, \"\\\\t\").replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\").replace(/[\\x00-\\x0F]/g, (ch) => \"\\\\x0\" + hex(ch)).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => \"\\\\x\" + hex(ch)));\n        }\n        function classEscape(s) {\n          return unicodeEscape(s.replace(/\\\\/g, \"\\\\\\\\\").replace(/\\]/g, \"\\\\]\").replace(/\\^/g, \"\\\\^\").replace(/-/g, \"\\\\-\").replace(/\\0/g, \"\\\\0\").replace(/\\t/g, \"\\\\t\").replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\").replace(/[\\x00-\\x0F]/g, (ch) => \"\\\\x0\" + hex(ch)).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => \"\\\\x\" + hex(ch)));\n        }\n        const DESCRIBE_EXPECTATION_FNS = {\n          literal(expectation) {\n            return '\"' + literalEscape(expectation.text) + '\"';\n          },\n          class(expectation) {\n            const escapedParts = expectation.parts.map(\n              (part) => Array.isArray(part) ? classEscape(part[0]) + \"-\" + classEscape(part[1]) : classEscape(part)\n            );\n            return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts.join(\"\") + \"]\" + (expectation.unicode ? \"u\" : \"\");\n          },\n          any() {\n            return \"any character\";\n          },\n          end() {\n            return \"end of input\";\n          },\n          other(expectation) {\n            return expectation.description;\n          }\n        };\n        function describeExpectation(expectation) {\n          return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n        }\n        function describeExpected(expected2) {\n          const descriptions = expected2.map(describeExpectation);\n          descriptions.sort();\n          if (descriptions.length > 0) {\n            let j = 1;\n            for (let i = 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          switch (descriptions.length) {\n            case 1:\n              return descriptions[0];\n            case 2:\n              return descriptions[0] + \" or \" + descriptions[1];\n            default:\n              return descriptions.slice(0, -1).join(\", \") + \", or \" + descriptions[descriptions.length - 1];\n          }\n        }\n        function describeFound(found2) {\n          return found2 ? '\"' + literalEscape(found2) + '\"' : \"end of input\";\n        }\n        return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n      }\n    }\n    function peg$parse(input, options) {\n      options = options !== void 0 ? options : {};\n      const peg$FAILED = {};\n      const peg$source = options.grammarSource;\n      const peg$startRuleFunctions = {\n        body: peg$parsebody\n      };\n      let peg$startRuleFunction = peg$parsebody;\n      const peg$e0 = peg$otherExpectation(\"item\");\n      const peg$e1 = peg$anyExpectation();\n      const peg$e2 = peg$otherExpectation(\"trailing comment\");\n      const peg$e3 = peg$otherExpectation(\"comment only line\");\n      const peg$e4 = peg$otherExpectation(\"non-var token\");\n      const peg$e5 = peg$otherExpectation(\"token\");\n      const peg$e6 = peg$otherExpectation(\"same line comment\");\n      const peg$e7 = peg$otherExpectation(\"own line comment\");\n      const peg$e8 = peg$otherExpectation(\",\");\n      const peg$e9 = peg$otherExpectation(\"@\");\n      const peg$e10 = peg$otherExpectation(\"variable token\");\n      const peg$e11 = peg$otherExpectation(\"+/-\");\n      const peg$e12 = peg$otherExpectation(\"=\");\n      function peg$f0(a, b) {\n        return a.concat(b ? b : []);\n      }\n      function peg$f1() {\n        return [];\n      }\n      function peg$f2(op, a, b, c) {\n        return { type: \"item\", op, variable: b, content: a.concat(b, c) };\n      }\n      function peg$f3(op, a) {\n        return { type: \"item\", op, variable: null, content: a };\n      }\n      function peg$f4(line, sep, comment) {\n        return { ...line, sep: [].concat(sep), trailingComment: comment };\n      }\n      function peg$f5(line, comment) {\n        return { ...line, trailingComment: comment };\n      }\n      function peg$f6(eq, ann) {\n        return {\n          type: \"line\",\n          equation: eq,\n          annotation: ann,\n          sep: null\n        };\n      }\n      function peg$f7(at, ann) {\n        return at ? { type: \"annotation\", marker: at, content: ann } : null;\n      }\n      function peg$f8(left, eq, right) {\n        return { type: \"equation\", left, right, equals: eq };\n      }\n      function peg$f9(x) {\n        return x;\n      }\n      function peg$f10(x) {\n        return {\n          type: \"line\",\n          trailingComment: x\n        };\n      }\n      function peg$f11(v, s) {\n        return [v].concat(s ? s : []);\n      }\n      function peg$f12(t) {\n        return t;\n      }\n      function peg$f13(x) {\n        return x;\n      }\n      function peg$f14(x) {\n        return x;\n      }\n      function peg$f15(tok) {\n        return options.isSameLineComment(tok);\n      }\n      function peg$f16(tok) {\n        return tok;\n      }\n      function peg$f17(tok) {\n        return options.isOwnLineComment(tok);\n      }\n      function peg$f18(tok) {\n        return tok;\n      }\n      function peg$f19(tok) {\n        return options.isWhitespace(tok);\n      }\n      function peg$f20(tok) {\n        return tok;\n      }\n      function peg$f21(tok) {\n        return options.isSep(tok);\n      }\n      function peg$f22(tok) {\n        return tok;\n      }\n      function peg$f23(tok) {\n        return options.isAt(tok);\n      }\n      function peg$f24(tok) {\n        return tok;\n      }\n      function peg$f25(tok) {\n        return options.isVar(tok);\n      }\n      function peg$f26(tok) {\n        return tok;\n      }\n      function peg$f27(tok) {\n        return options.isOperation(tok);\n      }\n      function peg$f28(tok) {\n        return tok;\n      }\n      function peg$f29(tok) {\n        return options.isEquals(tok);\n      }\n      function peg$f30(tok) {\n        return tok;\n      }\n      function peg$f31(tok) {\n        return options.isSubscript(tok);\n      }\n      function peg$f32(tok) {\n        return tok;\n      }\n      let peg$currPos = options.peg$currPos | 0;\n      let peg$savedPos = peg$currPos;\n      const peg$posDetailsCache = [{ line: 1, column: 1 }];\n      let peg$maxFailPos = peg$currPos;\n      let peg$maxFailExpected = options.peg$maxFailExpected || [];\n      let peg$silentFails = options.peg$silentFails | 0;\n      let peg$result;\n      if (options.startRule) {\n        if (!(options.startRule in peg$startRuleFunctions)) {\n          throw new Error(`Can't start parsing from rule \"` + options.startRule + '\".');\n        }\n        peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n      }\n      function text() {\n        return input.substring(peg$savedPos, peg$currPos);\n      }\n      function offset() {\n        return peg$savedPos;\n      }\n      function range() {\n        return {\n          source: peg$source,\n          start: peg$savedPos,\n          end: peg$currPos\n        };\n      }\n      function location() {\n        return peg$computeLocation(peg$savedPos, peg$currPos);\n      }\n      function expected(description, location2) {\n        location2 = location2 !== void 0 ? location2 : peg$computeLocation(peg$savedPos, peg$currPos);\n        throw peg$buildStructuredError(\n          [peg$otherExpectation(description)],\n          input.substring(peg$savedPos, peg$currPos),\n          location2\n        );\n      }\n      function error(message, location2) {\n        location2 = location2 !== void 0 ? location2 : peg$computeLocation(peg$savedPos, peg$currPos);\n        throw peg$buildSimpleError(message, location2);\n      }\n      function peg$getUnicode(pos = peg$currPos) {\n        const cp = input.codePointAt(pos);\n        if (cp === void 0) {\n          return \"\";\n        }\n        return String.fromCodePoint(cp);\n      }\n      function peg$literalExpectation(text2, ignoreCase) {\n        return { type: \"literal\", text: text2, ignoreCase };\n      }\n      function peg$classExpectation(parts, inverted, ignoreCase, unicode) {\n        return { type: \"class\", parts, inverted, ignoreCase, unicode };\n      }\n      function peg$anyExpectation() {\n        return { type: \"any\" };\n      }\n      function peg$endExpectation() {\n        return { type: \"end\" };\n      }\n      function peg$otherExpectation(description) {\n        return { type: \"other\", description };\n      }\n      function peg$computePosDetails(pos) {\n        let details = peg$posDetailsCache[pos];\n        let p;\n        if (details) {\n          return details;\n        } else {\n          if (pos >= peg$posDetailsCache.length) {\n            p = peg$posDetailsCache.length - 1;\n          } else {\n            p = pos;\n            while (!peg$posDetailsCache[--p]) {\n            }\n          }\n          details = peg$posDetailsCache[p];\n          details = {\n            line: details.line,\n            column: details.column\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            p++;\n          }\n          peg$posDetailsCache[pos] = details;\n          return details;\n        }\n      }\n      function peg$computeLocation(startPos, endPos, offset2) {\n        const startPosDetails = peg$computePosDetails(startPos);\n        const endPosDetails = peg$computePosDetails(endPos);\n        const res = {\n          source: peg$source,\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        if (offset2 && peg$source && typeof peg$source.offset === \"function\") {\n          res.start = peg$source.offset(res.start);\n          res.end = peg$source.offset(res.end);\n        }\n        return res;\n      }\n      function peg$fail(expected2) {\n        if (peg$currPos < peg$maxFailPos) {\n          return;\n        }\n        if (peg$currPos > peg$maxFailPos) {\n          peg$maxFailPos = peg$currPos;\n          peg$maxFailExpected = [];\n        }\n        peg$maxFailExpected.push(expected2);\n      }\n      function peg$buildSimpleError(message, location2) {\n        return new peg$SyntaxError(message, null, null, location2);\n      }\n      function peg$buildStructuredError(expected2, found, location2) {\n        return new peg$SyntaxError(\n          peg$SyntaxError.buildMessage(expected2, found),\n          expected2,\n          found,\n          location2\n        );\n      }\n      function peg$parsebody() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        s1 = [];\n        s2 = peg$parsecomment_only_line();\n        if (s2 === peg$FAILED) {\n          s2 = peg$parseline_with_sep();\n          if (s2 === peg$FAILED) {\n            s2 = peg$parsepartial_line_with_comment();\n          }\n        }\n        while (s2 !== peg$FAILED) {\n          s1.push(s2);\n          s2 = peg$parsecomment_only_line();\n          if (s2 === peg$FAILED) {\n            s2 = peg$parseline_with_sep();\n            if (s2 === peg$FAILED) {\n              s2 = peg$parsepartial_line_with_comment();\n            }\n          }\n        }\n        s2 = peg$parseline_without_sep();\n        if (s2 === peg$FAILED) {\n          s2 = peg$parseEOL();\n        }\n        if (s2 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s0 = peg$f0(s1, s2);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        if (s0 === peg$FAILED) {\n          s0 = peg$currPos;\n          s1 = peg$parseEOL();\n          if (s1 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$f1();\n          }\n          s0 = s1;\n        }\n        return s0;\n      }\n      function peg$parseitem() {\n        let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = peg$parseoperation();\n        if (s1 === peg$FAILED) {\n          s1 = null;\n        }\n        s2 = [];\n        s3 = peg$parse_();\n        while (s3 !== peg$FAILED) {\n          s2.push(s3);\n          s3 = peg$parse_();\n        }\n        s3 = [];\n        s4 = peg$parsenon_var_token();\n        while (s4 !== peg$FAILED) {\n          s3.push(s4);\n          s4 = peg$parsenon_var_token();\n        }\n        s4 = [];\n        s5 = peg$parse_();\n        while (s5 !== peg$FAILED) {\n          s4.push(s5);\n          s5 = peg$parse_();\n        }\n        s5 = peg$parsevar();\n        if (s5 !== peg$FAILED) {\n          s6 = [];\n          s7 = peg$parse_();\n          while (s7 !== peg$FAILED) {\n            s6.push(s7);\n            s7 = peg$parse_();\n          }\n          s7 = [];\n          s8 = peg$parsetoken();\n          while (s8 !== peg$FAILED) {\n            s7.push(s8);\n            s8 = peg$parsetoken();\n          }\n          s8 = [];\n          s9 = peg$parse_();\n          while (s9 !== peg$FAILED) {\n            s8.push(s9);\n            s9 = peg$parse_();\n          }\n          peg$savedPos = s0;\n          s0 = peg$f2(s1, s3, s5, s7);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        if (s0 === peg$FAILED) {\n          s0 = peg$currPos;\n          s1 = peg$parseoperation();\n          if (s1 === peg$FAILED) {\n            s1 = null;\n          }\n          s2 = [];\n          s3 = peg$parse_();\n          while (s3 !== peg$FAILED) {\n            s2.push(s3);\n            s3 = peg$parse_();\n          }\n          s3 = [];\n          s4 = peg$parsenon_var_token();\n          if (s4 !== peg$FAILED) {\n            while (s4 !== peg$FAILED) {\n              s3.push(s4);\n              s4 = peg$parsenon_var_token();\n            }\n          } else {\n            s3 = peg$FAILED;\n          }\n          if (s3 !== peg$FAILED) {\n            s4 = [];\n            s5 = peg$parse_();\n            while (s5 !== peg$FAILED) {\n              s4.push(s5);\n              s5 = peg$parse_();\n            }\n            peg$savedPos = s0;\n            s0 = peg$f3(s1, s3);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        return s0;\n      }\n      function peg$parseline_with_sep() {\n        let s0, s1, s2, s3;\n        s0 = peg$currPos;\n        s1 = peg$parseline_without_sep();\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parsesep();\n          if (s2 !== peg$FAILED) {\n            s3 = peg$parsetrailing_comment();\n            if (s3 === peg$FAILED) {\n              s3 = null;\n            }\n            peg$savedPos = s0;\n            s0 = peg$f4(s1, s2, s3);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsepartial_line_with_comment() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        s1 = peg$parseline_without_sep();\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parsetrailing_comment();\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f5(s1, s2);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parseline_without_sep() {\n        let s0, s1, s2, s3;\n        s0 = peg$currPos;\n        s1 = peg$currPos;\n        peg$silentFails++;\n        if (input.length > peg$currPos) {\n          s2 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e1);\n          }\n        }\n        peg$silentFails--;\n        if (s2 !== peg$FAILED) {\n          peg$currPos = s1;\n          s1 = void 0;\n        } else {\n          s1 = peg$FAILED;\n        }\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parseequation();\n          s3 = peg$parseannotation();\n          if (s3 === peg$FAILED) {\n            s3 = null;\n          }\n          peg$savedPos = s0;\n          s0 = peg$f6(s2, s3);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parseannotation() {\n        let s0, s1, s2, s3;\n        s0 = peg$currPos;\n        s1 = peg$parseat();\n        if (s1 !== peg$FAILED) {\n          s2 = [];\n          s3 = peg$parsenon_sep_token();\n          while (s3 !== peg$FAILED) {\n            s2.push(s3);\n            s3 = peg$parsenon_sep_token();\n          }\n          peg$savedPos = s0;\n          s0 = peg$f7(s1, s2);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parseequation() {\n        let s0, s1, s2, s3, s4;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = [];\n        s2 = peg$parseitem();\n        while (s2 !== peg$FAILED) {\n          s1.push(s2);\n          s2 = peg$parseitem();\n        }\n        s2 = peg$parseequals();\n        if (s2 === peg$FAILED) {\n          s2 = null;\n        }\n        s3 = [];\n        s4 = peg$parsetoken();\n        if (s4 === peg$FAILED) {\n          s4 = peg$parseoperation();\n        }\n        while (s4 !== peg$FAILED) {\n          s3.push(s4);\n          s4 = peg$parsetoken();\n          if (s4 === peg$FAILED) {\n            s4 = peg$parseoperation();\n          }\n        }\n        peg$savedPos = s0;\n        s0 = peg$f8(s1, s2, s3);\n        peg$silentFails--;\n        return s0;\n      }\n      function peg$parsetrailing_comment() {\n        let s0, s1, s2;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = [];\n        s2 = peg$parse_();\n        while (s2 !== peg$FAILED) {\n          s1.push(s2);\n          s2 = peg$parse_();\n        }\n        s2 = peg$parsesame_line_comment();\n        if (s2 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s0 = peg$f9(s2);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e2);\n          }\n        }\n        return s0;\n      }\n      function peg$parsecomment_only_line() {\n        let s0, s1, s2;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = [];\n        s2 = peg$parse_();\n        while (s2 !== peg$FAILED) {\n          s1.push(s2);\n          s2 = peg$parse_();\n        }\n        s2 = peg$parseown_line_comment();\n        if (s2 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s0 = peg$f10(s2);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e3);\n          }\n        }\n        return s0;\n      }\n      function peg$parsevar() {\n        let s0, s1, s2, s3;\n        s0 = peg$currPos;\n        s1 = peg$parsevar_token();\n        if (s1 !== peg$FAILED) {\n          s2 = [];\n          s3 = peg$parse_();\n          while (s3 !== peg$FAILED) {\n            s2.push(s3);\n            s3 = peg$parse_();\n          }\n          s3 = peg$parsesubscript();\n          if (s3 === peg$FAILED) {\n            s3 = null;\n          }\n          peg$savedPos = s0;\n          s0 = peg$f11(s1, s3);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsenon_var_token() {\n        let s0, s1, s2;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = peg$currPos;\n        peg$silentFails++;\n        s2 = peg$parsevar();\n        peg$silentFails--;\n        if (s2 === peg$FAILED) {\n          s1 = void 0;\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parsetoken();\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f12(s2);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e4);\n          }\n        }\n        return s0;\n      }\n      function peg$parsenon_sep_token() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        s1 = peg$currPos;\n        peg$silentFails++;\n        s2 = peg$parsesep();\n        if (s2 === peg$FAILED) {\n          s2 = peg$parsetrailing_comment();\n          if (s2 === peg$FAILED) {\n            s2 = peg$parseown_line_comment();\n          }\n        }\n        peg$silentFails--;\n        if (s2 === peg$FAILED) {\n          s1 = void 0;\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n        if (s1 !== peg$FAILED) {\n          if (input.length > peg$currPos) {\n            s2 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s2 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e1);\n            }\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f13(s2);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsetoken() {\n        let s0, s1, s2;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = peg$currPos;\n        peg$silentFails++;\n        s2 = peg$parsesep();\n        if (s2 === peg$FAILED) {\n          s2 = peg$parseat();\n          if (s2 === peg$FAILED) {\n            s2 = peg$parseoperation();\n            if (s2 === peg$FAILED) {\n              s2 = peg$parseequals();\n              if (s2 === peg$FAILED) {\n                s2 = peg$parsetrailing_comment();\n                if (s2 === peg$FAILED) {\n                  s2 = peg$parseown_line_comment();\n                }\n              }\n            }\n          }\n        }\n        peg$silentFails--;\n        if (s2 === peg$FAILED) {\n          s1 = void 0;\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n        if (s1 !== peg$FAILED) {\n          if (input.length > peg$currPos) {\n            s2 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s2 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e1);\n            }\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f14(s2);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e5);\n          }\n        }\n        return s0;\n      }\n      function peg$parsesame_line_comment() {\n        let s0, s1, s2;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e1);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f15(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f16(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e6);\n          }\n        }\n        return s0;\n      }\n      function peg$parseown_line_comment() {\n        let s0, s1, s2;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e1);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f17(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f18(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e7);\n          }\n        }\n        return s0;\n      }\n      function peg$parse_() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e1);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f19(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f20(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsesep() {\n        let s0, s1, s2;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e1);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f21(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f22(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e8);\n          }\n        }\n        return s0;\n      }\n      function peg$parseat() {\n        let s0, s1, s2;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e1);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f23(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f24(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e9);\n          }\n        }\n        return s0;\n      }\n      function peg$parsevar_token() {\n        let s0, s1, s2;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e1);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f25(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f26(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e10);\n          }\n        }\n        return s0;\n      }\n      function peg$parseoperation() {\n        let s0, s1, s2, s3, s4;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = [];\n        s2 = peg$parse_();\n        while (s2 !== peg$FAILED) {\n          s1.push(s2);\n          s2 = peg$parse_();\n        }\n        if (input.length > peg$currPos) {\n          s2 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e1);\n          }\n        }\n        if (s2 !== peg$FAILED) {\n          s3 = [];\n          s4 = peg$parse_();\n          while (s4 !== peg$FAILED) {\n            s3.push(s4);\n            s4 = peg$parse_();\n          }\n          peg$savedPos = peg$currPos;\n          s4 = peg$f27(s2);\n          if (s4) {\n            s4 = void 0;\n          } else {\n            s4 = peg$FAILED;\n          }\n          if (s4 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f28(s2);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e11);\n          }\n        }\n        return s0;\n      }\n      function peg$parseequals() {\n        let s0, s1, s2;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e1);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f29(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f30(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e12);\n          }\n        }\n        return s0;\n      }\n      function peg$parsesubscript() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e1);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f31(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f32(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parseEOL() {\n        let s0, s1;\n        s0 = peg$currPos;\n        peg$silentFails++;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e1);\n          }\n        }\n        peg$silentFails--;\n        if (s1 === peg$FAILED) {\n          s0 = void 0;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      if (!options.isWhitespace) {\n        try {\n          Object.assign(options, {\n            isSep: (node) => node.type === \"string\" && node.content === \",\",\n            isVar: (node) => node.type === \"string\" && node.content.match(/[a-zA-Z]/),\n            isOperation: (node) => node.type === \"string\" && node.content.match(/[+-]/),\n            isEquals: (node) => node.type === \"string\" && node.content === \"=\",\n            isAt: (node) => node.type === \"string\" && node.content === \"@\",\n            isSubscript: (node) => node.content === \"_\",\n            isWhitespace: (node) => node.type === \"whitespace\",\n            isSameLineComment: (node) => node.type === \"comment\" && node.sameline,\n            isOwnLineComment: (node) => node.type === \"comment\" && !node.sameline\n          });\n        } catch (e) {\n          console.warn(\"Error when initializing parser\", e);\n        }\n      }\n      peg$result = peg$startRuleFunction();\n      const peg$success = peg$result !== peg$FAILED && peg$currPos === input.length;\n      function peg$throw() {\n        if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n          peg$fail(peg$endExpectation());\n        }\n        throw peg$buildStructuredError(\n          peg$maxFailExpected,\n          peg$maxFailPos < input.length ? peg$getUnicode(peg$maxFailPos) : null,\n          peg$maxFailPos < input.length ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n        );\n      }\n      if (options.peg$library) {\n        return (\n          /** @type {any} */\n          {\n            peg$result,\n            peg$currPos,\n            peg$FAILED,\n            peg$maxFailExpected,\n            peg$maxFailPos,\n            peg$success,\n            peg$throw: peg$success ? void 0 : peg$throw\n          }\n        );\n      }\n      if (peg$success) {\n        return peg$result;\n      } else {\n        peg$throw();\n      }\n    }\n    return {\n      StartRules: [\"body\"],\n      SyntaxError: peg$SyntaxError,\n      parse: peg$parse\n    };\n  })()\n);\n","export default (\n  // @generated by Peggy 5.1.0.\n  //\n  // https://peggyjs.org/\n  (function() {\n    \"use strict\";\n    class peg$SyntaxError extends SyntaxError {\n      constructor(message, expected, found, location) {\n        super(message);\n        this.expected = expected;\n        this.found = found;\n        this.location = location;\n        this.name = \"SyntaxError\";\n      }\n      format(sources) {\n        let str = \"Error: \" + this.message;\n        if (this.location) {\n          let src = null;\n          const st = sources.find((s2) => s2.source === this.location.source);\n          if (st) {\n            src = st.text.split(/\\r\\n|\\n|\\r/g);\n          }\n          const s = this.location.start;\n          const offset_s = this.location.source && typeof this.location.source.offset === \"function\" ? this.location.source.offset(s) : s;\n          const loc = this.location.source + \":\" + offset_s.line + \":\" + offset_s.column;\n          if (src) {\n            const e = this.location.end;\n            const filler = \"\".padEnd(offset_s.line.toString().length, \" \");\n            const line = src[s.line - 1];\n            const last = s.line === e.line ? e.column : line.length + 1;\n            const hatLen = last - s.column || 1;\n            str += \"\\n --> \" + loc + \"\\n\" + filler + \" |\\n\" + offset_s.line + \" | \" + line + \"\\n\" + filler + \" | \" + \"\".padEnd(s.column - 1, \" \") + \"\".padEnd(hatLen, \"^\");\n          } else {\n            str += \"\\n at \" + loc;\n          }\n        }\n        return str;\n      }\n      static buildMessage(expected, found) {\n        function hex(ch) {\n          return ch.codePointAt(0).toString(16).toUpperCase();\n        }\n        const nonPrintable = Object.prototype.hasOwnProperty.call(RegExp.prototype, \"unicode\") ? new RegExp(\"[\\\\p{C}\\\\p{Mn}\\\\p{Mc}]\", \"gu\") : null;\n        function unicodeEscape(s) {\n          if (nonPrintable) {\n            return s.replace(nonPrintable, (ch) => \"\\\\u{\" + hex(ch) + \"}\");\n          }\n          return s;\n        }\n        function literalEscape(s) {\n          return unicodeEscape(s.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"').replace(/\\0/g, \"\\\\0\").replace(/\\t/g, \"\\\\t\").replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\").replace(/[\\x00-\\x0F]/g, (ch) => \"\\\\x0\" + hex(ch)).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => \"\\\\x\" + hex(ch)));\n        }\n        function classEscape(s) {\n          return unicodeEscape(s.replace(/\\\\/g, \"\\\\\\\\\").replace(/\\]/g, \"\\\\]\").replace(/\\^/g, \"\\\\^\").replace(/-/g, \"\\\\-\").replace(/\\0/g, \"\\\\0\").replace(/\\t/g, \"\\\\t\").replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\").replace(/[\\x00-\\x0F]/g, (ch) => \"\\\\x0\" + hex(ch)).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => \"\\\\x\" + hex(ch)));\n        }\n        const DESCRIBE_EXPECTATION_FNS = {\n          literal(expectation) {\n            return '\"' + literalEscape(expectation.text) + '\"';\n          },\n          class(expectation) {\n            const escapedParts = expectation.parts.map(\n              (part) => Array.isArray(part) ? classEscape(part[0]) + \"-\" + classEscape(part[1]) : classEscape(part)\n            );\n            return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts.join(\"\") + \"]\" + (expectation.unicode ? \"u\" : \"\");\n          },\n          any() {\n            return \"any character\";\n          },\n          end() {\n            return \"end of input\";\n          },\n          other(expectation) {\n            return expectation.description;\n          }\n        };\n        function describeExpectation(expectation) {\n          return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n        }\n        function describeExpected(expected2) {\n          const descriptions = expected2.map(describeExpectation);\n          descriptions.sort();\n          if (descriptions.length > 0) {\n            let j = 1;\n            for (let i = 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          switch (descriptions.length) {\n            case 1:\n              return descriptions[0];\n            case 2:\n              return descriptions[0] + \" or \" + descriptions[1];\n            default:\n              return descriptions.slice(0, -1).join(\", \") + \", or \" + descriptions[descriptions.length - 1];\n          }\n        }\n        function describeFound(found2) {\n          return found2 ? '\"' + literalEscape(found2) + '\"' : \"end of input\";\n        }\n        return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n      }\n    }\n    function peg$parse(input, options) {\n      options = options !== void 0 ? options : {};\n      const peg$FAILED = {};\n      const peg$source = options.grammarSource;\n      const peg$startRuleFunctions = {\n        root: peg$parseroot\n      };\n      let peg$startRuleFunction = peg$parseroot;\n      const peg$c0 = \"plus\";\n      const peg$c1 = \"minus\";\n      const peg$c2 = \"pt\";\n      const peg$c3 = \"mm\";\n      const peg$c4 = \"cm\";\n      const peg$c5 = \"in\";\n      const peg$c6 = \"ex\";\n      const peg$c7 = \"em\";\n      const peg$c8 = \"bp\";\n      const peg$c9 = \"pc\";\n      const peg$c10 = \"dd\";\n      const peg$c11 = \"cc\";\n      const peg$c12 = \"nd\";\n      const peg$c13 = \"nc\";\n      const peg$c14 = \"sp\";\n      const peg$c15 = \"filll\";\n      const peg$c16 = \"fill\";\n      const peg$c17 = \"fil\";\n      const peg$c18 = \".\";\n      const peg$r0 = /^[0-9]/;\n      const peg$r1 = /^[+\\-]/;\n      const peg$e0 = peg$anyExpectation();\n      const peg$e1 = peg$literalExpectation(\"plus\", false);\n      const peg$e2 = peg$literalExpectation(\"minus\", false);\n      const peg$e3 = peg$literalExpectation(\"pt\", false);\n      const peg$e4 = peg$literalExpectation(\"mm\", false);\n      const peg$e5 = peg$literalExpectation(\"cm\", false);\n      const peg$e6 = peg$literalExpectation(\"in\", false);\n      const peg$e7 = peg$literalExpectation(\"ex\", false);\n      const peg$e8 = peg$literalExpectation(\"em\", false);\n      const peg$e9 = peg$literalExpectation(\"bp\", false);\n      const peg$e10 = peg$literalExpectation(\"pc\", false);\n      const peg$e11 = peg$literalExpectation(\"dd\", false);\n      const peg$e12 = peg$literalExpectation(\"cc\", false);\n      const peg$e13 = peg$literalExpectation(\"nd\", false);\n      const peg$e14 = peg$literalExpectation(\"nc\", false);\n      const peg$e15 = peg$literalExpectation(\"sp\", false);\n      const peg$e16 = peg$literalExpectation(\"filll\", false);\n      const peg$e17 = peg$literalExpectation(\"fill\", false);\n      const peg$e18 = peg$literalExpectation(\"fil\", false);\n      const peg$e19 = peg$otherExpectation(\"number\");\n      const peg$e20 = peg$classExpectation([[\"0\", \"9\"]], false, false, false);\n      const peg$e21 = peg$literalExpectation(\".\", false);\n      const peg$e22 = peg$classExpectation([\"+\", \"-\"], false, false, false);\n      function peg$f0(b, st, sh) {\n        return {\n          type: \"glue\",\n          fixed: b,\n          stretchable: st,\n          shrinkable: sh,\n          position: location()\n        };\n      }\n      function peg$f1(glue) {\n        return glue;\n      }\n      function peg$f2(n, u) {\n        return { type: \"dim\", value: n, unit: u };\n      }\n      function peg$f3(n, u) {\n        return { type: \"dim\", value: n, unit: u };\n      }\n      function peg$f4(n, u) {\n        return { type: \"dim\", value: n, unit: u };\n      }\n      function peg$f5(n) {\n        return parseFloat(n);\n      }\n      let peg$currPos = options.peg$currPos | 0;\n      let peg$savedPos = peg$currPos;\n      const peg$posDetailsCache = [{ line: 1, column: 1 }];\n      let peg$maxFailPos = peg$currPos;\n      let peg$maxFailExpected = options.peg$maxFailExpected || [];\n      let peg$silentFails = options.peg$silentFails | 0;\n      let peg$result;\n      if (options.startRule) {\n        if (!(options.startRule in peg$startRuleFunctions)) {\n          throw new Error(`Can't start parsing from rule \"` + options.startRule + '\".');\n        }\n        peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n      }\n      function text() {\n        return input.substring(peg$savedPos, peg$currPos);\n      }\n      function offset() {\n        return peg$savedPos;\n      }\n      function range() {\n        return {\n          source: peg$source,\n          start: peg$savedPos,\n          end: peg$currPos\n        };\n      }\n      function location() {\n        return peg$computeLocation(peg$savedPos, peg$currPos);\n      }\n      function expected(description, location2) {\n        location2 = location2 !== void 0 ? location2 : peg$computeLocation(peg$savedPos, peg$currPos);\n        throw peg$buildStructuredError(\n          [peg$otherExpectation(description)],\n          input.substring(peg$savedPos, peg$currPos),\n          location2\n        );\n      }\n      function error(message, location2) {\n        location2 = location2 !== void 0 ? location2 : peg$computeLocation(peg$savedPos, peg$currPos);\n        throw peg$buildSimpleError(message, location2);\n      }\n      function peg$getUnicode(pos = peg$currPos) {\n        const cp = input.codePointAt(pos);\n        if (cp === void 0) {\n          return \"\";\n        }\n        return String.fromCodePoint(cp);\n      }\n      function peg$literalExpectation(text2, ignoreCase) {\n        return { type: \"literal\", text: text2, ignoreCase };\n      }\n      function peg$classExpectation(parts, inverted, ignoreCase, unicode) {\n        return { type: \"class\", parts, inverted, ignoreCase, unicode };\n      }\n      function peg$anyExpectation() {\n        return { type: \"any\" };\n      }\n      function peg$endExpectation() {\n        return { type: \"end\" };\n      }\n      function peg$otherExpectation(description) {\n        return { type: \"other\", description };\n      }\n      function peg$computePosDetails(pos) {\n        let details = peg$posDetailsCache[pos];\n        let p;\n        if (details) {\n          return details;\n        } else {\n          if (pos >= peg$posDetailsCache.length) {\n            p = peg$posDetailsCache.length - 1;\n          } else {\n            p = pos;\n            while (!peg$posDetailsCache[--p]) {\n            }\n          }\n          details = peg$posDetailsCache[p];\n          details = {\n            line: details.line,\n            column: details.column\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            p++;\n          }\n          peg$posDetailsCache[pos] = details;\n          return details;\n        }\n      }\n      function peg$computeLocation(startPos, endPos, offset2) {\n        const startPosDetails = peg$computePosDetails(startPos);\n        const endPosDetails = peg$computePosDetails(endPos);\n        const res = {\n          source: peg$source,\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        if (offset2 && peg$source && typeof peg$source.offset === \"function\") {\n          res.start = peg$source.offset(res.start);\n          res.end = peg$source.offset(res.end);\n        }\n        return res;\n      }\n      function peg$fail(expected2) {\n        if (peg$currPos < peg$maxFailPos) {\n          return;\n        }\n        if (peg$currPos > peg$maxFailPos) {\n          peg$maxFailPos = peg$currPos;\n          peg$maxFailExpected = [];\n        }\n        peg$maxFailExpected.push(expected2);\n      }\n      function peg$buildSimpleError(message, location2) {\n        return new peg$SyntaxError(message, null, null, location2);\n      }\n      function peg$buildStructuredError(expected2, found, location2) {\n        return new peg$SyntaxError(\n          peg$SyntaxError.buildMessage(expected2, found),\n          expected2,\n          found,\n          location2\n        );\n      }\n      function peg$parseroot() {\n        let s0, s1, s2, s3, s4;\n        s0 = peg$currPos;\n        s1 = peg$currPos;\n        s2 = peg$parsebase();\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parsestretchable();\n          if (s3 === peg$FAILED) {\n            s3 = null;\n          }\n          s4 = peg$parseshrinkable();\n          if (s4 === peg$FAILED) {\n            s4 = null;\n          }\n          peg$savedPos = s1;\n          s1 = peg$f0(s2, s3, s4);\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n        if (s1 !== peg$FAILED) {\n          s2 = [];\n          if (input.length > peg$currPos) {\n            s3 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e0);\n            }\n          }\n          while (s3 !== peg$FAILED) {\n            s2.push(s3);\n            if (input.length > peg$currPos) {\n              s3 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s3 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e0);\n              }\n            }\n          }\n          peg$savedPos = s0;\n          s0 = peg$f1(s1);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsebase() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        s1 = peg$parsenumber();\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parseunit();\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f2(s1, s2);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsestretchable() {\n        let s0, s1, s2, s3;\n        s0 = peg$currPos;\n        if (input.substr(peg$currPos, 4) === peg$c0) {\n          s1 = peg$c0;\n          peg$currPos += 4;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e1);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parsenumber();\n          if (s2 !== peg$FAILED) {\n            s3 = peg$parserubber_unit();\n            if (s3 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s0 = peg$f3(s2, s3);\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        return s0;\n      }\n      function peg$parseshrinkable() {\n        let s0, s1, s2, s3;\n        s0 = peg$currPos;\n        if (input.substr(peg$currPos, 5) === peg$c1) {\n          s1 = peg$c1;\n          peg$currPos += 5;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e2);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parsenumber();\n          if (s2 !== peg$FAILED) {\n            s3 = peg$parserubber_unit();\n            if (s3 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s0 = peg$f4(s2, s3);\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        return s0;\n      }\n      function peg$parseunit() {\n        let s0;\n        if (input.substr(peg$currPos, 2) === peg$c2) {\n          s0 = peg$c2;\n          peg$currPos += 2;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e3);\n          }\n        }\n        if (s0 === peg$FAILED) {\n          if (input.substr(peg$currPos, 2) === peg$c3) {\n            s0 = peg$c3;\n            peg$currPos += 2;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e4);\n            }\n          }\n          if (s0 === peg$FAILED) {\n            if (input.substr(peg$currPos, 2) === peg$c4) {\n              s0 = peg$c4;\n              peg$currPos += 2;\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e5);\n              }\n            }\n            if (s0 === peg$FAILED) {\n              if (input.substr(peg$currPos, 2) === peg$c5) {\n                s0 = peg$c5;\n                peg$currPos += 2;\n              } else {\n                s0 = peg$FAILED;\n                if (peg$silentFails === 0) {\n                  peg$fail(peg$e6);\n                }\n              }\n              if (s0 === peg$FAILED) {\n                if (input.substr(peg$currPos, 2) === peg$c6) {\n                  s0 = peg$c6;\n                  peg$currPos += 2;\n                } else {\n                  s0 = peg$FAILED;\n                  if (peg$silentFails === 0) {\n                    peg$fail(peg$e7);\n                  }\n                }\n                if (s0 === peg$FAILED) {\n                  if (input.substr(peg$currPos, 2) === peg$c7) {\n                    s0 = peg$c7;\n                    peg$currPos += 2;\n                  } else {\n                    s0 = peg$FAILED;\n                    if (peg$silentFails === 0) {\n                      peg$fail(peg$e8);\n                    }\n                  }\n                  if (s0 === peg$FAILED) {\n                    if (input.substr(peg$currPos, 2) === peg$c8) {\n                      s0 = peg$c8;\n                      peg$currPos += 2;\n                    } else {\n                      s0 = peg$FAILED;\n                      if (peg$silentFails === 0) {\n                        peg$fail(peg$e9);\n                      }\n                    }\n                    if (s0 === peg$FAILED) {\n                      if (input.substr(peg$currPos, 2) === peg$c9) {\n                        s0 = peg$c9;\n                        peg$currPos += 2;\n                      } else {\n                        s0 = peg$FAILED;\n                        if (peg$silentFails === 0) {\n                          peg$fail(peg$e10);\n                        }\n                      }\n                      if (s0 === peg$FAILED) {\n                        if (input.substr(peg$currPos, 2) === peg$c10) {\n                          s0 = peg$c10;\n                          peg$currPos += 2;\n                        } else {\n                          s0 = peg$FAILED;\n                          if (peg$silentFails === 0) {\n                            peg$fail(peg$e11);\n                          }\n                        }\n                        if (s0 === peg$FAILED) {\n                          if (input.substr(peg$currPos, 2) === peg$c11) {\n                            s0 = peg$c11;\n                            peg$currPos += 2;\n                          } else {\n                            s0 = peg$FAILED;\n                            if (peg$silentFails === 0) {\n                              peg$fail(peg$e12);\n                            }\n                          }\n                          if (s0 === peg$FAILED) {\n                            if (input.substr(peg$currPos, 2) === peg$c12) {\n                              s0 = peg$c12;\n                              peg$currPos += 2;\n                            } else {\n                              s0 = peg$FAILED;\n                              if (peg$silentFails === 0) {\n                                peg$fail(peg$e13);\n                              }\n                            }\n                            if (s0 === peg$FAILED) {\n                              if (input.substr(peg$currPos, 2) === peg$c13) {\n                                s0 = peg$c13;\n                                peg$currPos += 2;\n                              } else {\n                                s0 = peg$FAILED;\n                                if (peg$silentFails === 0) {\n                                  peg$fail(peg$e14);\n                                }\n                              }\n                              if (s0 === peg$FAILED) {\n                                if (input.substr(peg$currPos, 2) === peg$c14) {\n                                  s0 = peg$c14;\n                                  peg$currPos += 2;\n                                } else {\n                                  s0 = peg$FAILED;\n                                  if (peg$silentFails === 0) {\n                                    peg$fail(peg$e15);\n                                  }\n                                }\n                              }\n                            }\n                          }\n                        }\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n        return s0;\n      }\n      function peg$parserubber_unit() {\n        let s0;\n        s0 = peg$parseunit();\n        if (s0 === peg$FAILED) {\n          if (input.substr(peg$currPos, 5) === peg$c15) {\n            s0 = peg$c15;\n            peg$currPos += 5;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e16);\n            }\n          }\n          if (s0 === peg$FAILED) {\n            if (input.substr(peg$currPos, 4) === peg$c16) {\n              s0 = peg$c16;\n              peg$currPos += 4;\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e17);\n              }\n            }\n            if (s0 === peg$FAILED) {\n              if (input.substr(peg$currPos, 3) === peg$c17) {\n                s0 = peg$c17;\n                peg$currPos += 3;\n              } else {\n                s0 = peg$FAILED;\n                if (peg$silentFails === 0) {\n                  peg$fail(peg$e18);\n                }\n              }\n            }\n          }\n        }\n        return s0;\n      }\n      function peg$parsenumber() {\n        let s0, s1, s2, s3, s4, s5, s6, s7, s8;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = peg$currPos;\n        s2 = peg$currPos;\n        s3 = peg$parsesign();\n        if (s3 === peg$FAILED) {\n          s3 = null;\n        }\n        s4 = peg$currPos;\n        s5 = [];\n        s6 = input.charAt(peg$currPos);\n        if (peg$r0.test(s6)) {\n          peg$currPos++;\n        } else {\n          s6 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e20);\n          }\n        }\n        while (s6 !== peg$FAILED) {\n          s5.push(s6);\n          s6 = input.charAt(peg$currPos);\n          if (peg$r0.test(s6)) {\n            peg$currPos++;\n          } else {\n            s6 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e20);\n            }\n          }\n        }\n        if (input.charCodeAt(peg$currPos) === 46) {\n          s6 = peg$c18;\n          peg$currPos++;\n        } else {\n          s6 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e21);\n          }\n        }\n        if (s6 !== peg$FAILED) {\n          s7 = [];\n          s8 = input.charAt(peg$currPos);\n          if (peg$r0.test(s8)) {\n            peg$currPos++;\n          } else {\n            s8 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e20);\n            }\n          }\n          if (s8 !== peg$FAILED) {\n            while (s8 !== peg$FAILED) {\n              s7.push(s8);\n              s8 = input.charAt(peg$currPos);\n              if (peg$r0.test(s8)) {\n                peg$currPos++;\n              } else {\n                s8 = peg$FAILED;\n                if (peg$silentFails === 0) {\n                  peg$fail(peg$e20);\n                }\n              }\n            }\n          } else {\n            s7 = peg$FAILED;\n          }\n          if (s7 !== peg$FAILED) {\n            s5 = [s5, s6, s7];\n            s4 = s5;\n          } else {\n            peg$currPos = s4;\n            s4 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s4;\n          s4 = peg$FAILED;\n        }\n        if (s4 === peg$FAILED) {\n          s4 = [];\n          s5 = input.charAt(peg$currPos);\n          if (peg$r0.test(s5)) {\n            peg$currPos++;\n          } else {\n            s5 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e20);\n            }\n          }\n          if (s5 !== peg$FAILED) {\n            while (s5 !== peg$FAILED) {\n              s4.push(s5);\n              s5 = input.charAt(peg$currPos);\n              if (peg$r0.test(s5)) {\n                peg$currPos++;\n              } else {\n                s5 = peg$FAILED;\n                if (peg$silentFails === 0) {\n                  peg$fail(peg$e20);\n                }\n              }\n            }\n          } else {\n            s4 = peg$FAILED;\n          }\n        }\n        if (s4 !== peg$FAILED) {\n          s3 = [s3, s4];\n          s2 = s3;\n        } else {\n          peg$currPos = s2;\n          s2 = peg$FAILED;\n        }\n        if (s2 !== peg$FAILED) {\n          s1 = input.substring(s1, peg$currPos);\n        } else {\n          s1 = s2;\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$f5(s1);\n        }\n        s0 = s1;\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e19);\n          }\n        }\n        return s0;\n      }\n      function peg$parsesign() {\n        let s0;\n        s0 = input.charAt(peg$currPos);\n        if (peg$r1.test(s0)) {\n          peg$currPos++;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e22);\n          }\n        }\n        return s0;\n      }\n      peg$result = peg$startRuleFunction();\n      const peg$success = peg$result !== peg$FAILED && peg$currPos === input.length;\n      function peg$throw() {\n        if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n          peg$fail(peg$endExpectation());\n        }\n        throw peg$buildStructuredError(\n          peg$maxFailExpected,\n          peg$maxFailPos < input.length ? peg$getUnicode(peg$maxFailPos) : null,\n          peg$maxFailPos < input.length ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n        );\n      }\n      if (options.peg$library) {\n        return (\n          /** @type {any} */\n          {\n            peg$result,\n            peg$currPos,\n            peg$FAILED,\n            peg$maxFailExpected,\n            peg$maxFailPos,\n            peg$success,\n            peg$throw: peg$success ? void 0 : peg$throw\n          }\n        );\n      }\n      if (peg$success) {\n        return peg$result;\n      } else {\n        peg$throw();\n      }\n    }\n    return {\n      StartRules: [\"root\"],\n      SyntaxError: peg$SyntaxError,\n      parse: peg$parse\n    };\n  })()\n);\n","export default (\n  // @generated by Peggy 5.1.0.\n  //\n  // https://peggyjs.org/\n  (function() {\n    \"use strict\";\n    class peg$SyntaxError extends SyntaxError {\n      constructor(message, expected, found, location) {\n        super(message);\n        this.expected = expected;\n        this.found = found;\n        this.location = location;\n        this.name = \"SyntaxError\";\n      }\n      format(sources) {\n        let str = \"Error: \" + this.message;\n        if (this.location) {\n          let src = null;\n          const st = sources.find((s2) => s2.source === this.location.source);\n          if (st) {\n            src = st.text.split(/\\r\\n|\\n|\\r/g);\n          }\n          const s = this.location.start;\n          const offset_s = this.location.source && typeof this.location.source.offset === \"function\" ? this.location.source.offset(s) : s;\n          const loc = this.location.source + \":\" + offset_s.line + \":\" + offset_s.column;\n          if (src) {\n            const e = this.location.end;\n            const filler = \"\".padEnd(offset_s.line.toString().length, \" \");\n            const line = src[s.line - 1];\n            const last = s.line === e.line ? e.column : line.length + 1;\n            const hatLen = last - s.column || 1;\n            str += \"\\n --> \" + loc + \"\\n\" + filler + \" |\\n\" + offset_s.line + \" | \" + line + \"\\n\" + filler + \" | \" + \"\".padEnd(s.column - 1, \" \") + \"\".padEnd(hatLen, \"^\");\n          } else {\n            str += \"\\n at \" + loc;\n          }\n        }\n        return str;\n      }\n      static buildMessage(expected, found) {\n        function hex(ch) {\n          return ch.codePointAt(0).toString(16).toUpperCase();\n        }\n        const nonPrintable = Object.prototype.hasOwnProperty.call(RegExp.prototype, \"unicode\") ? new RegExp(\"[\\\\p{C}\\\\p{Mn}\\\\p{Mc}]\", \"gu\") : null;\n        function unicodeEscape(s) {\n          if (nonPrintable) {\n            return s.replace(nonPrintable, (ch) => \"\\\\u{\" + hex(ch) + \"}\");\n          }\n          return s;\n        }\n        function literalEscape(s) {\n          return unicodeEscape(s.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"').replace(/\\0/g, \"\\\\0\").replace(/\\t/g, \"\\\\t\").replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\").replace(/[\\x00-\\x0F]/g, (ch) => \"\\\\x0\" + hex(ch)).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => \"\\\\x\" + hex(ch)));\n        }\n        function classEscape(s) {\n          return unicodeEscape(s.replace(/\\\\/g, \"\\\\\\\\\").replace(/\\]/g, \"\\\\]\").replace(/\\^/g, \"\\\\^\").replace(/-/g, \"\\\\-\").replace(/\\0/g, \"\\\\0\").replace(/\\t/g, \"\\\\t\").replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\").replace(/[\\x00-\\x0F]/g, (ch) => \"\\\\x0\" + hex(ch)).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => \"\\\\x\" + hex(ch)));\n        }\n        const DESCRIBE_EXPECTATION_FNS = {\n          literal(expectation) {\n            return '\"' + literalEscape(expectation.text) + '\"';\n          },\n          class(expectation) {\n            const escapedParts = expectation.parts.map(\n              (part) => Array.isArray(part) ? classEscape(part[0]) + \"-\" + classEscape(part[1]) : classEscape(part)\n            );\n            return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts.join(\"\") + \"]\" + (expectation.unicode ? \"u\" : \"\");\n          },\n          any() {\n            return \"any character\";\n          },\n          end() {\n            return \"end of input\";\n          },\n          other(expectation) {\n            return expectation.description;\n          }\n        };\n        function describeExpectation(expectation) {\n          return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n        }\n        function describeExpected(expected2) {\n          const descriptions = expected2.map(describeExpectation);\n          descriptions.sort();\n          if (descriptions.length > 0) {\n            let j = 1;\n            for (let i = 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          switch (descriptions.length) {\n            case 1:\n              return descriptions[0];\n            case 2:\n              return descriptions[0] + \" or \" + descriptions[1];\n            default:\n              return descriptions.slice(0, -1).join(\", \") + \", or \" + descriptions[descriptions.length - 1];\n          }\n        }\n        function describeFound(found2) {\n          return found2 ? '\"' + literalEscape(found2) + '\"' : \"end of input\";\n        }\n        return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n      }\n    }\n    function peg$parse(input, options) {\n      options = options !== void 0 ? options : {};\n      const peg$FAILED = {};\n      const peg$source = options.grammarSource;\n      const peg$startRuleFunctions = {\n        path_spec: peg$parsepath_spec,\n        foreach_body: peg$parseforeach_body\n      };\n      let peg$startRuleFunction = peg$parsepath_spec;\n      const peg$e0 = peg$anyExpectation();\n      const peg$e1 = peg$otherExpectation(\"comment\");\n      const peg$e2 = peg$otherExpectation(\"operation\");\n      const peg$e3 = peg$otherExpectation(\"=\");\n      function peg$f0(v) {\n        return v;\n      }\n      function peg$f1(ops) {\n        return { type: \"path_spec\", content: ops };\n      }\n      function peg$f2(c1, op, comment) {\n        return { op, comment };\n      }\n      function peg$f3(c1, ops, c2, body) {\n        const comments = [c1, ...ops.map((x) => x.comment), c2].filter(\n          (x) => x\n        );\n        const attribute = ops.map((x) => x.op.content.content).join(\" \");\n        return {\n          type: \"animation\",\n          comments,\n          attribute,\n          content: body.content\n        };\n      }\n      function peg$f4(start, b) {\n        return { ...b, start, type: \"foreach\" };\n      }\n      function peg$f5(c1, variables, options2, c2, c3, list, c4, command) {\n        const comments = [c1, c2, c3, c4].filter((x) => x);\n        return {\n          type: \"foreach_body\",\n          variables,\n          options: options2 && options2.content,\n          list,\n          command,\n          comments\n        };\n      }\n      function peg$f6(c1, options2, c2, body) {\n        const comments = [c1, c2].filter((x) => x);\n        return {\n          type: \"svg_operation\",\n          options: options2 && options2.content,\n          content: body,\n          comments\n        };\n      }\n      function peg$f7(c1, c2, coord, c3, c4, x) {\n        return { coord: x, comment: c4 };\n      }\n      function peg$f8(c1, c2, coord, c3, a, c5) {\n        const comments = [c1, c2, c3, a && a.comment, c5].filter((x) => x);\n        return {\n          type: \"curve_to\",\n          controls: a ? [coord, a.coord] : [coord],\n          comments\n        };\n      }\n      function peg$f9() {\n        return { type: \"line_to\", command: \"|-\" };\n      }\n      function peg$f10() {\n        return { type: \"line_to\", command: \"-|\" };\n      }\n      function peg$f11() {\n        return { type: \"line_to\", command: \"--\" };\n      }\n      function peg$f12(prefix, content) {\n        return { type: \"coordinate\", content, prefix };\n      }\n      function peg$f13(content) {\n        return { type: \"square_brace_group\", content };\n      }\n      function peg$f14(v) {\n        return { type: \"unknown\", content: v };\n      }\n      function peg$f15(tok) {\n        return options.isComment(tok);\n      }\n      function peg$f16(tok) {\n        return tok;\n      }\n      function peg$f17(tok) {\n        return options.isWhitespace(tok);\n      }\n      function peg$f18(tok) {\n        return tok;\n      }\n      function peg$f19(c) {\n        return c;\n      }\n      function peg$f20(tok) {\n        return options.isOperation(tok);\n      }\n      function peg$f21(tok) {\n        return { type: \"operation\", content: tok };\n      }\n      function peg$f22(tok) {\n        return options.isChar(tok, \"=\");\n      }\n      function peg$f23(tok) {\n        return tok;\n      }\n      function peg$f24(tok) {\n        return options.isChar(tok, \"[\");\n      }\n      function peg$f25(tok) {\n        return tok;\n      }\n      function peg$f26(tok) {\n        return options.isChar(tok, \"]\");\n      }\n      function peg$f27(tok) {\n        return tok;\n      }\n      function peg$f28(tok) {\n        return options.isChar(tok, \"(\");\n      }\n      function peg$f29(tok) {\n        return tok;\n      }\n      function peg$f30(tok) {\n        return options.isChar(tok, \")\");\n      }\n      function peg$f31(tok) {\n        return tok;\n      }\n      function peg$f32(tok) {\n        return options.isChar(tok, \"+\");\n      }\n      function peg$f33(tok) {\n        return tok;\n      }\n      function peg$f34(tok) {\n        return options.isChar(tok, \"-\");\n      }\n      function peg$f35(tok) {\n        return tok;\n      }\n      function peg$f36(tok) {\n        return options.isChar(tok, \"|\");\n      }\n      function peg$f37(tok) {\n        return tok;\n      }\n      function peg$f38(tok) {\n        return options.isChar(tok, \".\");\n      }\n      function peg$f39(tok) {\n        return tok;\n      }\n      function peg$f40(tok) {\n        return options.isChar(tok, \"controls\");\n      }\n      function peg$f41(tok) {\n        return tok;\n      }\n      function peg$f42(tok) {\n        return options.isChar(tok, \"and\");\n      }\n      function peg$f43(tok) {\n        return tok;\n      }\n      function peg$f44(tok) {\n        return options.isChar(tok, \"svg\");\n      }\n      function peg$f45(tok) {\n        return tok;\n      }\n      function peg$f46(tok) {\n        return options.isGroup(tok);\n      }\n      function peg$f47(tok) {\n        return tok;\n      }\n      function peg$f48(tok) {\n        return options.isAnyMacro(tok);\n      }\n      function peg$f49(tok) {\n        return tok;\n      }\n      function peg$f50(tok) {\n        return options.isChar(tok, \"foreach\");\n      }\n      function peg$f51(tok) {\n        return tok;\n      }\n      function peg$f52(tok) {\n        return options.isMacro(tok, \"foreach\");\n      }\n      function peg$f53(tok) {\n        return tok;\n      }\n      function peg$f54(tok) {\n        return options.isChar(tok, \"in\");\n      }\n      function peg$f55(tok) {\n        return tok;\n      }\n      function peg$f56(tok) {\n        return options.isChar(tok, \":\");\n      }\n      function peg$f57(tok) {\n        return tok;\n      }\n      let peg$currPos = options.peg$currPos | 0;\n      let peg$savedPos = peg$currPos;\n      const peg$posDetailsCache = [{ line: 1, column: 1 }];\n      let peg$maxFailPos = peg$currPos;\n      let peg$maxFailExpected = options.peg$maxFailExpected || [];\n      let peg$silentFails = options.peg$silentFails | 0;\n      let peg$result;\n      if (options.startRule) {\n        if (!(options.startRule in peg$startRuleFunctions)) {\n          throw new Error(`Can't start parsing from rule \"` + options.startRule + '\".');\n        }\n        peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n      }\n      function text() {\n        return input.substring(peg$savedPos, peg$currPos);\n      }\n      function offset() {\n        return peg$savedPos;\n      }\n      function range() {\n        return {\n          source: peg$source,\n          start: peg$savedPos,\n          end: peg$currPos\n        };\n      }\n      function location() {\n        return peg$computeLocation(peg$savedPos, peg$currPos);\n      }\n      function expected(description, location2) {\n        location2 = location2 !== void 0 ? location2 : peg$computeLocation(peg$savedPos, peg$currPos);\n        throw peg$buildStructuredError(\n          [peg$otherExpectation(description)],\n          input.substring(peg$savedPos, peg$currPos),\n          location2\n        );\n      }\n      function error(message, location2) {\n        location2 = location2 !== void 0 ? location2 : peg$computeLocation(peg$savedPos, peg$currPos);\n        throw peg$buildSimpleError(message, location2);\n      }\n      function peg$getUnicode(pos = peg$currPos) {\n        const cp = input.codePointAt(pos);\n        if (cp === void 0) {\n          return \"\";\n        }\n        return String.fromCodePoint(cp);\n      }\n      function peg$literalExpectation(text2, ignoreCase) {\n        return { type: \"literal\", text: text2, ignoreCase };\n      }\n      function peg$classExpectation(parts, inverted, ignoreCase, unicode) {\n        return { type: \"class\", parts, inverted, ignoreCase, unicode };\n      }\n      function peg$anyExpectation() {\n        return { type: \"any\" };\n      }\n      function peg$endExpectation() {\n        return { type: \"end\" };\n      }\n      function peg$otherExpectation(description) {\n        return { type: \"other\", description };\n      }\n      function peg$computePosDetails(pos) {\n        let details = peg$posDetailsCache[pos];\n        let p;\n        if (details) {\n          return details;\n        } else {\n          if (pos >= peg$posDetailsCache.length) {\n            p = peg$posDetailsCache.length - 1;\n          } else {\n            p = pos;\n            while (!peg$posDetailsCache[--p]) {\n            }\n          }\n          details = peg$posDetailsCache[p];\n          details = {\n            line: details.line,\n            column: details.column\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            p++;\n          }\n          peg$posDetailsCache[pos] = details;\n          return details;\n        }\n      }\n      function peg$computeLocation(startPos, endPos, offset2) {\n        const startPosDetails = peg$computePosDetails(startPos);\n        const endPosDetails = peg$computePosDetails(endPos);\n        const res = {\n          source: peg$source,\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        if (offset2 && peg$source && typeof peg$source.offset === \"function\") {\n          res.start = peg$source.offset(res.start);\n          res.end = peg$source.offset(res.end);\n        }\n        return res;\n      }\n      function peg$fail(expected2) {\n        if (peg$currPos < peg$maxFailPos) {\n          return;\n        }\n        if (peg$currPos > peg$maxFailPos) {\n          peg$maxFailPos = peg$currPos;\n          peg$maxFailExpected = [];\n        }\n        peg$maxFailExpected.push(expected2);\n      }\n      function peg$buildSimpleError(message, location2) {\n        return new peg$SyntaxError(message, null, null, location2);\n      }\n      function peg$buildStructuredError(expected2, found, location2) {\n        return new peg$SyntaxError(\n          peg$SyntaxError.buildMessage(expected2, found),\n          expected2,\n          found,\n          location2\n        );\n      }\n      function peg$parsepath_spec() {\n        let s0, s1, s2, s3, s4, s5;\n        s0 = peg$currPos;\n        s1 = [];\n        s2 = peg$currPos;\n        s3 = peg$parsesquare_brace_group();\n        if (s3 === peg$FAILED) {\n          s3 = peg$parsecoordinate();\n          if (s3 === peg$FAILED) {\n            s3 = peg$parsecurve_to();\n            if (s3 === peg$FAILED) {\n              s3 = peg$parseline_to();\n              if (s3 === peg$FAILED) {\n                s3 = peg$parsesvg();\n                if (s3 === peg$FAILED) {\n                  s3 = peg$parseforeach();\n                  if (s3 === peg$FAILED) {\n                    s3 = peg$parseoperation();\n                    if (s3 === peg$FAILED) {\n                      s3 = peg$parsecomment();\n                      if (s3 === peg$FAILED) {\n                        s3 = peg$parseanimation();\n                        if (s3 === peg$FAILED) {\n                          s3 = peg$parseunknown();\n                        }\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n        if (s3 !== peg$FAILED) {\n          s4 = [];\n          s5 = peg$parse_();\n          while (s5 !== peg$FAILED) {\n            s4.push(s5);\n            s5 = peg$parse_();\n          }\n          peg$savedPos = s2;\n          s2 = peg$f0(s3);\n        } else {\n          peg$currPos = s2;\n          s2 = peg$FAILED;\n        }\n        if (s2 !== peg$FAILED) {\n          while (s2 !== peg$FAILED) {\n            s1.push(s2);\n            s2 = peg$currPos;\n            s3 = peg$parsesquare_brace_group();\n            if (s3 === peg$FAILED) {\n              s3 = peg$parsecoordinate();\n              if (s3 === peg$FAILED) {\n                s3 = peg$parsecurve_to();\n                if (s3 === peg$FAILED) {\n                  s3 = peg$parseline_to();\n                  if (s3 === peg$FAILED) {\n                    s3 = peg$parsesvg();\n                    if (s3 === peg$FAILED) {\n                      s3 = peg$parseforeach();\n                      if (s3 === peg$FAILED) {\n                        s3 = peg$parseoperation();\n                        if (s3 === peg$FAILED) {\n                          s3 = peg$parsecomment();\n                          if (s3 === peg$FAILED) {\n                            s3 = peg$parseanimation();\n                            if (s3 === peg$FAILED) {\n                              s3 = peg$parseunknown();\n                            }\n                          }\n                        }\n                      }\n                    }\n                  }\n                }\n              }\n            }\n            if (s3 !== peg$FAILED) {\n              s4 = [];\n              s5 = peg$parse_();\n              while (s5 !== peg$FAILED) {\n                s4.push(s5);\n                s5 = peg$parse_();\n              }\n              peg$savedPos = s2;\n              s2 = peg$f0(s3);\n            } else {\n              peg$currPos = s2;\n              s2 = peg$FAILED;\n            }\n          }\n        } else {\n          s1 = peg$FAILED;\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$f1(s1);\n        }\n        s0 = s1;\n        return s0;\n      }\n      function peg$parseanimation() {\n        let s0, s1, s2, s3, s4, s5, s6;\n        s0 = peg$currPos;\n        s1 = peg$parsecolon();\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parse_comment_();\n          s3 = [];\n          s4 = peg$currPos;\n          s5 = peg$parseoperation();\n          if (s5 !== peg$FAILED) {\n            s6 = peg$parse_comment_();\n            peg$savedPos = s4;\n            s4 = peg$f2(s2, s5, s6);\n          } else {\n            peg$currPos = s4;\n            s4 = peg$FAILED;\n          }\n          if (s4 !== peg$FAILED) {\n            while (s4 !== peg$FAILED) {\n              s3.push(s4);\n              s4 = peg$currPos;\n              s5 = peg$parseoperation();\n              if (s5 !== peg$FAILED) {\n                s6 = peg$parse_comment_();\n                peg$savedPos = s4;\n                s4 = peg$f2(s2, s5, s6);\n              } else {\n                peg$currPos = s4;\n                s4 = peg$FAILED;\n              }\n            }\n          } else {\n            s3 = peg$FAILED;\n          }\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parseequals();\n            if (s4 !== peg$FAILED) {\n              s5 = peg$parse_comment_();\n              s6 = peg$parsegroup();\n              if (s6 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s0 = peg$f3(s2, s3, s5, s6);\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        return s0;\n      }\n      function peg$parseforeach() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        s1 = peg$parseforeach_keyword();\n        if (s1 === peg$FAILED) {\n          s1 = peg$parseforeach_macro();\n        }\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parseforeach_body();\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f4(s1, s2);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parseforeach_body() {\n        let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;\n        s0 = peg$currPos;\n        s1 = peg$parse_comment_();\n        s2 = peg$currPos;\n        s3 = [];\n        s4 = peg$currPos;\n        s5 = peg$currPos;\n        peg$silentFails++;\n        s6 = peg$parsein_keyword();\n        if (s6 === peg$FAILED) {\n          s6 = peg$parsesquare_brace_group();\n        }\n        peg$silentFails--;\n        if (s6 === peg$FAILED) {\n          s5 = void 0;\n        } else {\n          peg$currPos = s5;\n          s5 = peg$FAILED;\n        }\n        if (s5 !== peg$FAILED) {\n          if (input.length > peg$currPos) {\n            s6 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s6 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$e0);\n            }\n          }\n          if (s6 !== peg$FAILED) {\n            s5 = [s5, s6];\n            s4 = s5;\n          } else {\n            peg$currPos = s4;\n            s4 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s4;\n          s4 = peg$FAILED;\n        }\n        while (s4 !== peg$FAILED) {\n          s3.push(s4);\n          s4 = peg$currPos;\n          s5 = peg$currPos;\n          peg$silentFails++;\n          s6 = peg$parsein_keyword();\n          if (s6 === peg$FAILED) {\n            s6 = peg$parsesquare_brace_group();\n          }\n          peg$silentFails--;\n          if (s6 === peg$FAILED) {\n            s5 = void 0;\n          } else {\n            peg$currPos = s5;\n            s5 = peg$FAILED;\n          }\n          if (s5 !== peg$FAILED) {\n            if (input.length > peg$currPos) {\n              s6 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s6 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e0);\n              }\n            }\n            if (s6 !== peg$FAILED) {\n              s5 = [s5, s6];\n              s4 = s5;\n            } else {\n              peg$currPos = s4;\n              s4 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s4;\n            s4 = peg$FAILED;\n          }\n        }\n        s2 = input.substring(s2, peg$currPos);\n        s3 = peg$parsesquare_brace_group();\n        if (s3 === peg$FAILED) {\n          s3 = null;\n        }\n        s4 = peg$parse_comment_();\n        s5 = peg$parsein_keyword();\n        if (s5 !== peg$FAILED) {\n          s6 = peg$parse_comment_();\n          s7 = peg$parsegroup();\n          if (s7 === peg$FAILED) {\n            s7 = peg$parsemacro();\n          }\n          if (s7 !== peg$FAILED) {\n            s8 = peg$parse_comment_();\n            s9 = peg$parseforeach();\n            if (s9 === peg$FAILED) {\n              s9 = peg$parsegroup();\n              if (s9 === peg$FAILED) {\n                s9 = peg$parsemacro();\n              }\n            }\n            if (s9 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s0 = peg$f5(s1, s2, s3, s4, s6, s7, s8, s9);\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        return s0;\n      }\n      function peg$parsesvg() {\n        let s0, s1, s2, s3, s4, s5;\n        s0 = peg$currPos;\n        s1 = peg$parsesvg_keyword();\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parse_comment_();\n          s3 = peg$parsesquare_brace_group();\n          if (s3 === peg$FAILED) {\n            s3 = null;\n          }\n          s4 = peg$parse_comment_();\n          s5 = peg$parsegroup();\n          if (s5 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f6(s2, s3, s4, s5);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsecurve_to() {\n        let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;\n        s0 = peg$currPos;\n        s1 = peg$parsedotdot();\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parse_comment_();\n          s3 = peg$parsecontrols_keyword();\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parse_comment_();\n            s5 = peg$parsecoordinate();\n            if (s5 !== peg$FAILED) {\n              s6 = peg$parse_comment_();\n              s7 = peg$currPos;\n              s8 = peg$parseand_keyword();\n              if (s8 !== peg$FAILED) {\n                s9 = peg$parse_comment_();\n                s10 = peg$parsecoordinate();\n                if (s10 !== peg$FAILED) {\n                  peg$savedPos = s7;\n                  s7 = peg$f7(s2, s4, s5, s6, s9, s10);\n                } else {\n                  peg$currPos = s7;\n                  s7 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s7;\n                s7 = peg$FAILED;\n              }\n              if (s7 === peg$FAILED) {\n                s7 = null;\n              }\n              s8 = peg$parse_comment_();\n              s9 = peg$parsedotdot();\n              if (s9 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s0 = peg$f8(s2, s4, s5, s6, s7, s8);\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        return s0;\n      }\n      function peg$parseline_to() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        s1 = peg$parsepipe();\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parseminus();\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f9();\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$parseminus();\n          if (s1 !== peg$FAILED) {\n            s2 = peg$parsepipe();\n            if (s2 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s0 = peg$f10();\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$parseminus();\n            if (s1 !== peg$FAILED) {\n              s2 = peg$parseminus();\n              if (s2 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s0 = peg$f11();\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        return s0;\n      }\n      function peg$parsecoordinate() {\n        let s0, s1, s2, s3, s4, s5, s6, s7;\n        s0 = peg$currPos;\n        s1 = peg$currPos;\n        s2 = peg$currPos;\n        s3 = peg$parseplus();\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parseplus();\n          if (s4 === peg$FAILED) {\n            s4 = null;\n          }\n          s3 = [s3, s4];\n          s2 = s3;\n        } else {\n          peg$currPos = s2;\n          s2 = peg$FAILED;\n        }\n        if (s2 === peg$FAILED) {\n          s2 = null;\n        }\n        s1 = input.substring(s1, peg$currPos);\n        s2 = peg$parseopen_paren();\n        if (s2 !== peg$FAILED) {\n          s3 = peg$currPos;\n          s4 = [];\n          s5 = peg$currPos;\n          s6 = peg$currPos;\n          peg$silentFails++;\n          s7 = peg$parseclose_paren();\n          peg$silentFails--;\n          if (s7 === peg$FAILED) {\n            s6 = void 0;\n          } else {\n            peg$currPos = s6;\n            s6 = peg$FAILED;\n          }\n          if (s6 !== peg$FAILED) {\n            if (input.length > peg$currPos) {\n              s7 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s7 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e0);\n              }\n            }\n            if (s7 !== peg$FAILED) {\n              s6 = [s6, s7];\n              s5 = s6;\n            } else {\n              peg$currPos = s5;\n              s5 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s5;\n            s5 = peg$FAILED;\n          }\n          while (s5 !== peg$FAILED) {\n            s4.push(s5);\n            s5 = peg$currPos;\n            s6 = peg$currPos;\n            peg$silentFails++;\n            s7 = peg$parseclose_paren();\n            peg$silentFails--;\n            if (s7 === peg$FAILED) {\n              s6 = void 0;\n            } else {\n              peg$currPos = s6;\n              s6 = peg$FAILED;\n            }\n            if (s6 !== peg$FAILED) {\n              if (input.length > peg$currPos) {\n                s7 = input.charAt(peg$currPos);\n                peg$currPos++;\n              } else {\n                s7 = peg$FAILED;\n                if (peg$silentFails === 0) {\n                  peg$fail(peg$e0);\n                }\n              }\n              if (s7 !== peg$FAILED) {\n                s6 = [s6, s7];\n                s5 = s6;\n              } else {\n                peg$currPos = s5;\n                s5 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s5;\n              s5 = peg$FAILED;\n            }\n          }\n          s3 = input.substring(s3, peg$currPos);\n          s4 = peg$parseclose_paren();\n          if (s4 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f12(s1, s3);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsesquare_brace_group() {\n        let s0, s1, s2, s3, s4, s5, s6;\n        s0 = peg$currPos;\n        s1 = peg$parseopen_square_brace();\n        if (s1 !== peg$FAILED) {\n          s2 = peg$currPos;\n          s3 = [];\n          s4 = peg$currPos;\n          s5 = peg$currPos;\n          peg$silentFails++;\n          s6 = peg$parseclose_square_brace();\n          peg$silentFails--;\n          if (s6 === peg$FAILED) {\n            s5 = void 0;\n          } else {\n            peg$currPos = s5;\n            s5 = peg$FAILED;\n          }\n          if (s5 !== peg$FAILED) {\n            if (input.length > peg$currPos) {\n              s6 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s6 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$e0);\n              }\n            }\n            if (s6 !== peg$FAILED) {\n              s5 = [s5, s6];\n              s4 = s5;\n            } else {\n              peg$currPos = s4;\n              s4 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s4;\n            s4 = peg$FAILED;\n          }\n          while (s4 !== peg$FAILED) {\n            s3.push(s4);\n            s4 = peg$currPos;\n            s5 = peg$currPos;\n            peg$silentFails++;\n            s6 = peg$parseclose_square_brace();\n            peg$silentFails--;\n            if (s6 === peg$FAILED) {\n              s5 = void 0;\n            } else {\n              peg$currPos = s5;\n              s5 = peg$FAILED;\n            }\n            if (s5 !== peg$FAILED) {\n              if (input.length > peg$currPos) {\n                s6 = input.charAt(peg$currPos);\n                peg$currPos++;\n              } else {\n                s6 = peg$FAILED;\n                if (peg$silentFails === 0) {\n                  peg$fail(peg$e0);\n                }\n              }\n              if (s6 !== peg$FAILED) {\n                s5 = [s5, s6];\n                s4 = s5;\n              } else {\n                peg$currPos = s4;\n                s4 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s4;\n              s4 = peg$FAILED;\n            }\n          }\n          s2 = input.substring(s2, peg$currPos);\n          s3 = peg$parseclose_square_brace();\n          if (s3 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f13(s2);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsedotdot() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        s1 = peg$parsedot();\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parsedot();\n          if (s2 !== peg$FAILED) {\n            s1 = [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        return s0;\n      }\n      function peg$parseunknown() {\n        let s0, s1;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$f14(s1);\n        }\n        s0 = s1;\n        return s0;\n      }\n      function peg$parsecomment() {\n        let s0, s1, s2;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f15(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f16(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e1);\n          }\n        }\n        return s0;\n      }\n      function peg$parse_() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f17(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f18(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parse_comment_() {\n        let s0, s1, s2, s3, s4;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = [];\n        s2 = peg$parse_();\n        while (s2 !== peg$FAILED) {\n          s1.push(s2);\n          s2 = peg$parse_();\n        }\n        s2 = peg$parsecomment();\n        if (s2 === peg$FAILED) {\n          s2 = null;\n        }\n        s3 = [];\n        s4 = peg$parse_();\n        while (s4 !== peg$FAILED) {\n          s3.push(s4);\n          s4 = peg$parse_();\n        }\n        peg$savedPos = s0;\n        s0 = peg$f19(s2);\n        peg$silentFails--;\n        return s0;\n      }\n      function peg$parseoperation() {\n        let s0, s1, s2;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f20(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f21(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e2);\n          }\n        }\n        return s0;\n      }\n      function peg$parseequals() {\n        let s0, s1, s2;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f22(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f23(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e3);\n          }\n        }\n        return s0;\n      }\n      function peg$parseopen_square_brace() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f24(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f25(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parseclose_square_brace() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f26(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f27(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parseopen_paren() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f28(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f29(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parseclose_paren() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f30(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f31(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parseplus() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f32(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f33(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parseminus() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f34(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f35(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsepipe() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f36(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f37(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsedot() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f38(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f39(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsecontrols_keyword() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f40(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f41(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parseand_keyword() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f42(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f43(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsesvg_keyword() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f44(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f45(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsegroup() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f46(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f47(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsemacro() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f48(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f49(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parseforeach_keyword() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f50(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f51(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parseforeach_macro() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f52(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f53(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsein_keyword() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f54(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f55(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      function peg$parsecolon() {\n        let s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.length > peg$currPos) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$e0);\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s2 = peg$f56(s1);\n          if (s2) {\n            s2 = void 0;\n          } else {\n            s2 = peg$FAILED;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f57(s1);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        return s0;\n      }\n      if (!options.isWhitespace) {\n        try {\n          Object.assign(options, {\n            isChar: (node, char) => node.type === \"string\" && node.content === char,\n            isOperation: (node) => node.type === \"string\" && node.content.match(/[a-zA-Z]/),\n            isWhitespace: (node) => node.type === \"whitespace\" || node.type === \"parbreak\",\n            isSameLineComment: (node) => node.type === \"comment\" && node.sameline,\n            isOwnLineComment: (node) => node.type === \"comment\" && !node.sameline,\n            isComment: (node) => node.type === \"comment\",\n            isGroup: (node) => node.type === \"group\",\n            isMacro: (node, name) => node.type === \"macro\" && node.content === name,\n            isAnyMacro: (node) => node.type === \"macro\"\n          });\n        } catch (e) {\n          console.warn(\"Error when initializing parser\", e);\n        }\n      }\n      peg$result = peg$startRuleFunction();\n      const peg$success = peg$result !== peg$FAILED && peg$currPos === input.length;\n      function peg$throw() {\n        if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n          peg$fail(peg$endExpectation());\n        }\n        throw peg$buildStructuredError(\n          peg$maxFailExpected,\n          peg$maxFailPos < input.length ? peg$getUnicode(peg$maxFailPos) : null,\n          peg$maxFailPos < input.length ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n        );\n      }\n      if (options.peg$library) {\n        return (\n          /** @type {any} */\n          {\n            peg$result,\n            peg$currPos,\n            peg$FAILED,\n            peg$maxFailExpected,\n            peg$maxFailPos,\n            peg$success,\n            peg$throw: peg$success ? void 0 : peg$throw\n          }\n        );\n      }\n      if (peg$success) {\n        return peg$result;\n      } else {\n        peg$throw();\n      }\n    }\n    return {\n      StartRules: [\"path_spec\", \"foreach_body\"],\n      SyntaxError: peg$SyntaxError,\n      parse: peg$parse\n    };\n  })()\n);\n","/* eslint-disable @typescript-eslint/ban-ts-comment */\n// This file needs to be here because typescript does not know how to use babel's transpiler\n// to directly load Pegjs grammars.\n// @ts-nocheck\nimport _LatexPegParser from \"../grammars/latex.pegjs\";\nimport _AlignEnvironmentPegParser from \"../grammars/align-environment.pegjs\";\nimport _ArgSpecPegParser from \"../grammars/xparse-argspec.pegjs\";\nimport _PgfkeysPegParser from \"../grammars/pgfkeys.pegjs\";\nimport _MacroSubstitutionPegParser from \"../grammars/macro-substitutions.pegjs\";\nimport _LigaturesPegParser from \"../grammars/ligatures.pegjs\";\nimport _XColorPegParser from \"../grammars/xcolor-expressions.pegjs\";\nimport _TabularPegParser from \"../grammars/tabular-spec.pegjs\";\nimport _SystemePegParser from \"../grammars/systeme-environment.pegjs\";\nimport _GluePegParser from \"../grammars/tex-glue.pegjs\";\nimport _TikzPegParser from \"../grammars/tikz.pegjs\";\n\ntype PegParser = {\n    parse: (input: string | unknown[], options?: unknown) => any;\n    SyntaxError: (\n        message: string,\n        expected: string,\n        found: unknown,\n        location: unknown\n    ) => unknown;\n};\n\nconst LatexPegParser = _LatexPegParser as PegParser;\nconst AlignEnvironmentPegParser = _AlignEnvironmentPegParser as PegParser;\nconst ArgSpecPegParser = _ArgSpecPegParser as PegParser;\nconst PgfkeysPegParser = _PgfkeysPegParser as PegParser;\nconst MacroSubstitutionPegParser = _MacroSubstitutionPegParser as PegParser;\nconst LigaturesPegParser = _LigaturesPegParser as PegParser;\nconst XColorPegParser = _XColorPegParser as PegParser;\nconst TabularPegParser = _TabularPegParser as PegParser;\nconst SystemePegParser = _SystemePegParser as PegParser;\nconst GluePegParser = _GluePegParser as PegParser;\nconst TikzPegParser = _TikzPegParser as PegParser;\n\nexport {\n    LatexPegParser,\n    AlignEnvironmentPegParser,\n    ArgSpecPegParser,\n    PgfkeysPegParser,\n    MacroSubstitutionPegParser,\n    LigaturesPegParser,\n    XColorPegParser,\n    TabularPegParser,\n    SystemePegParser,\n    GluePegParser,\n    TikzPegParser,\n};\n","export * from \"./libs/decorate-array-for-pegjs\";\nexport * from \"./libs/split-strings\";\nexport * from \"./libs/pegjs-parsers.js\";\n\n// NOTE: The docstring comment must be the last item in the index.ts file!\n/**\n * ## What is this?\n *\n * Pegjs grammars to help parse strings into a `unified-latex` Abstract Syntax Tree (AST). Note,\n * because of the dynamic nature of LaTeX, to get a full AST with arguments attached to macros, etc.,\n * the tree is parsed multiple times.\n *\n * Also included are functions to decorate a `Ast.Node[]` array so that Pegjs can process it as if it were\n * a string. This allows for complex second-pass parsing.\n *\n * ## When should I use this?\n *\n * If you are building libraries to parse specific LaTeX syntax (e.g., to parse `tabular` environments or\n * `systeme` environments, etc.).\n */\n"],"mappings":"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"}