{"version":3,"sources":["jsdelivr-header.js","/npm/@scicave/math-latex-parser@2.2.0/lib/index.js"],"names":[],"mappings":"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","file":"/npm/@scicave/math-latex-parser@2.2.0/lib/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@scicave/math-latex-parser@2.2.0/lib/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/*\n * Generated by PEG.js 0.10.0.\n *\n * http://pegjs.org/\n */\n\n\"use strict\";\n\nvar Node = require(\"./Node.js\"), version = require(\"./version.js\"), prepareInput = require(\"./prepareInput.js\"), merge = require(\"./merge.js\");\n\nfunction peg$subclass(child, parent) {\n  function ctor() { this.constructor = child; }\n  ctor.prototype = parent.prototype;\n  child.prototype = new ctor();\n}\n\nfunction peg$SyntaxError(message, expected, found, location) {\n  this.message  = message;\n  this.expected = expected;\n  this.found    = found;\n  this.location = location;\n  this.name     = \"SyntaxError\";\n\n  if (typeof Error.captureStackTrace === \"function\") {\n    Error.captureStackTrace(this, peg$SyntaxError);\n  }\n}\n\npeg$subclass(peg$SyntaxError, Error);\n\npeg$SyntaxError.buildMessage = function(expected, found) {\n  var DESCRIBE_EXPECTATION_FNS = {\n        literal: function(expectation) {\n          return \"\\\"\" + literalEscape(expectation.text) + \"\\\"\";\n        },\n\n        \"class\": function(expectation) {\n          var escapedParts = \"\",\n              i;\n\n          for (i = 0; i < expectation.parts.length; i++) {\n            escapedParts += expectation.parts[i] instanceof Array\n              ? classEscape(expectation.parts[i][0]) + \"-\" + classEscape(expectation.parts[i][1])\n              : classEscape(expectation.parts[i]);\n          }\n\n          return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts + \"]\";\n        },\n\n        any: function(expectation) {\n          return \"any character\";\n        },\n\n        end: function(expectation) {\n          return \"end of input\";\n        },\n\n        other: function(expectation) {\n          return expectation.description;\n        }\n      };\n\n  function hex(ch) {\n    return ch.charCodeAt(0).toString(16).toUpperCase();\n  }\n\n  function literalEscape(s) {\n    return s\n      .replace(/\\\\/g, '\\\\\\\\')\n      .replace(/\"/g,  '\\\\\"')\n      .replace(/\\0/g, '\\\\0')\n      .replace(/\\t/g, '\\\\t')\n      .replace(/\\n/g, '\\\\n')\n      .replace(/\\r/g, '\\\\r')\n      .replace(/[\\x00-\\x0F]/g,          function(ch) { return '\\\\x0' + hex(ch); })\n      .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return '\\\\x'  + hex(ch); });\n  }\n\n  function classEscape(s) {\n    return s\n      .replace(/\\\\/g, '\\\\\\\\')\n      .replace(/\\]/g, '\\\\]')\n      .replace(/\\^/g, '\\\\^')\n      .replace(/-/g,  '\\\\-')\n      .replace(/\\0/g, '\\\\0')\n      .replace(/\\t/g, '\\\\t')\n      .replace(/\\n/g, '\\\\n')\n      .replace(/\\r/g, '\\\\r')\n      .replace(/[\\x00-\\x0F]/g,          function(ch) { return '\\\\x0' + hex(ch); })\n      .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return '\\\\x'  + hex(ch); });\n  }\n\n  function describeExpectation(expectation) {\n    return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n  }\n\n  function describeExpected(expected) {\n    var descriptions = new Array(expected.length),\n        i, j;\n\n    for (i = 0; i < expected.length; i++) {\n      descriptions[i] = describeExpectation(expected[i]);\n    }\n\n    descriptions.sort();\n\n    if (descriptions.length > 0) {\n      for (i = 1, j = 1; i < descriptions.length; i++) {\n        if (descriptions[i - 1] !== descriptions[i]) {\n          descriptions[j] = descriptions[i];\n          j++;\n        }\n      }\n      descriptions.length = j;\n    }\n\n    switch (descriptions.length) {\n      case 1:\n        return descriptions[0];\n\n      case 2:\n        return descriptions[0] + \" or \" + descriptions[1];\n\n      default:\n        return descriptions.slice(0, -1).join(\", \")\n          + \", or \"\n          + descriptions[descriptions.length - 1];\n    }\n  }\n\n  function describeFound(found) {\n    return found ? \"\\\"\" + literalEscape(found) + \"\\\"\" : \"end of input\";\n  }\n\n  return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n};\n\nfunction peg$parse(input, options) {\n  options = options !== void 0 ? options : {};\n\n  var peg$FAILED = {},\n\n      peg$startRuleFunctions = { Expression: peg$parseExpression },\n      peg$startRuleFunction  = peg$parseExpression,\n\n      peg$c0 = peg$otherExpectation(\"expression\"),\n      peg$c1 = function(expr) { return expr; },\n      peg$c2 = \"=\",\n      peg$c3 = peg$literalExpectation(\"=\", false),\n      peg$c4 = \"\\\\\",\n      peg$c5 = peg$literalExpectation(\"\\\\\", false),\n      peg$c6 = function(head, a) { return a },\n      peg$c7 = function(head, tail) {\r\n          return tail.reduce(function(result, element) {\r\n            return createNode(\"operator\" , [result, element[3]], { name: element[1], operatorType: 'infix' });\r\n          }, head);\r\n        },\n      peg$c8 = function(w) { return w in texOperators1 },\n      peg$c9 = function(w) { return w },\n      peg$c10 = \"+\",\n      peg$c11 = peg$literalExpectation(\"+\", false),\n      peg$c12 = \"-\",\n      peg$c13 = peg$literalExpectation(\"-\", false),\n      peg$c14 = \"*\",\n      peg$c15 = peg$literalExpectation(\"*\", false),\n      peg$c16 = \"/\",\n      peg$c17 = peg$literalExpectation(\"/\", false),\n      peg$c18 = \"\\\\cdot\",\n      peg$c19 = peg$literalExpectation(\"\\\\cdot\", false),\n      peg$c20 = function(head) { return \"cdot\"; },\n      peg$c21 = function(head, tail) {\r\n          return tail.reduce(function(result, element) {\r\n            return createNode(\"automult\" , [result, element[1]]);\r\n          }, head);\r\n        },\n      peg$c22 = function(base, exp, fac) {\r\n          if (exp) base = new Node(\"operator\", [base, exp], { name: '^', operatorType: 'infix' });\r\n          if (fac) base = new Node(\"operator\", [base], { name: '!', operatorType: 'postfix' });\r\n          return base;\r\n        },\n      peg$c23 = \"\\\\big\",\n      peg$c24 = peg$literalExpectation(\"\\\\big\", false),\n      peg$c25 = \"\\\\Big\",\n      peg$c26 = peg$literalExpectation(\"\\\\Big\", false),\n      peg$c27 = \"\\\\bigg\",\n      peg$c28 = peg$literalExpectation(\"\\\\bigg\", false),\n      peg$c29 = \"\\\\Bigg\",\n      peg$c30 = peg$literalExpectation(\"\\\\Bigg\", false),\n      peg$c31 = \"\\\\left\",\n      peg$c32 = peg$literalExpectation(\"\\\\left\", false),\n      peg$c33 = \"|\",\n      peg$c34 = peg$literalExpectation(\"|\", false),\n      peg$c35 = \"\\\\right\",\n      peg$c36 = peg$literalExpectation(\"\\\\right\", false),\n      peg$c37 = function(e) {\r\n          return createNode(\"abs\", [e]);\r\n        },\n      peg$c38 = peg$otherExpectation(\"functions\"),\n      peg$c39 = peg$otherExpectation(\"builtin functions\"),\n      peg$c40 = function(name, exp, args) {\r\n          if (!Array.isArray(args)) args = [args];\r\n          let func = new Node('function', args, {name, isBuiltin:true});\r\n          if(!exp) return func;\r\n          else return createNode(\"operator\", [func, exp], { name: '^', operatorType: 'infix' });\r\n        },\n      peg$c41 = function(name) { return check(name, options.builtinFunctions) },\n      peg$c42 = function(name) {\r\n          return name;\r\n        },\n      peg$c43 = \"\\\\operatorname\",\n      peg$c44 = peg$literalExpectation(\"\\\\operatorname\", false),\n      peg$c45 = \"{\",\n      peg$c46 = peg$literalExpectation(\"{\", false),\n      peg$c47 = \"}\",\n      peg$c48 = peg$literalExpectation(\"}\", false),\n      peg$c49 = function(name) { return name },\n      peg$c50 = function(name, args) {\r\n          return createNode(\"operatorname\", args, { name });\r\n        },\n      peg$c51 = function(name) { return check(name, options.functions) },\n      peg$c52 = function(name, args) { return createNode('function', args, { name }); },\n      peg$c53 = function() { doesContainEllipsis.push(false); return true },\n      peg$c54 = \"(\",\n      peg$c55 = peg$literalExpectation(\"(\", false),\n      peg$c56 = \")\",\n      peg$c57 = peg$literalExpectation(\")\", false),\n      peg$c58 = function(a) {\r\n          let __doesContainEllipsis = doesContainEllipsis.pop();\r\n          let ellipsis = options.extra.ellipsis;\r\n          let ellipsisAllowed = typeof ellipsis === 'object' ? ellipsis.funcArgs : ellipsis;\r\n          if (__doesContainEllipsis && !ellipsisAllowed)\r\n            error('ellipsis is not allowed to be an arg in a function');\r\n          return Array.isArray(a) ? a : [a];\r\n        },\n      peg$c59 = function() { doesContainEllipsis.pop(); return true },\n      peg$c60 = function() { return [] },\n      peg$c61 = \",\",\n      peg$c62 = peg$literalExpectation(\",\", false),\n      peg$c63 = function(head, tail) {\r\n          if (tail.length) {\r\n            tail.unshift(head);\r\n            return tail;\r\n          }\r\n          if (head.type === 'ellipsis')\r\n            error(\"can't use ellipsis as a stand-alone expression\");\r\n          return head;\r\n        },\n      peg$c64 = \"...\",\n      peg$c65 = peg$literalExpectation(\"...\", false),\n      peg$c66 = function(t) { return t },\n      peg$c67 = function(type) { return createNode(\"ellipsis\", null, { type }) },\n      peg$c68 = \"dots\",\n      peg$c69 = peg$literalExpectation(\"dots\", false),\n      peg$c70 = \"cdots\",\n      peg$c71 = peg$literalExpectation(\"cdots\", false),\n      peg$c72 = \"vdots\",\n      peg$c73 = peg$literalExpectation(\"vdots\", false),\n      peg$c74 = \"ddots\",\n      peg$c75 = peg$literalExpectation(\"ddots\", false),\n      peg$c76 = function(e) {\r\n        doesContainEllipsis[doesContainEllipsis.length - 1] = true;\r\n        return e;\r\n      },\n      peg$c77 = function(o) { doesContainEllipsis.push(false); return true },\n      peg$c78 = function(o, arr1dOrExpr, c) {\r\n          return handleBlock(arr1dOrExpr, o, c);\r\n        },\n      peg$c79 = function() { doesContainEllipsis.pop(); return false },\n      peg$c80 = \"a\",\n      peg$c81 = peg$literalExpectation(\"a\", false),\n      peg$c82 = \"[\",\n      peg$c83 = peg$literalExpectation(\"[\", false),\n      peg$c84 = \"\\\\{{\",\n      peg$c85 = peg$literalExpectation(\"\\\\{{\", false),\n      peg$c86 = \"\\\\{\",\n      peg$c87 = peg$literalExpectation(\"\\\\{\", false),\n      peg$c88 = function(a) { return a.length > 1 ? a[1] : a; },\n      peg$c89 = \"]\",\n      peg$c90 = peg$literalExpectation(\"]\", false),\n      peg$c91 = \"\\\\}}\",\n      peg$c92 = peg$literalExpectation(\"\\\\}}\", false),\n      peg$c93 = \"\\\\}\",\n      peg$c94 = peg$literalExpectation(\"\\\\}\", false),\n      peg$c95 = function(name) {\r\n        return createNode('id', null, { name, isBuiltin:true })\r\n      },\n      peg$c96 = function(name) {\r\n          return !check(name, [\r\n            \"begin\", \"end\", \"right\" /* for rightPrefixes */,\r\n            \"cdot\", \"operatorname\"\r\n          ])\r\n        },\n      peg$c97 = function(name) {\r\n          if(check(name, options.builtinLetters)) return name;\r\n          if (check(name, [\r\n              options.builtinFunctions,\r\n              options.functions,\r\n              ['sqrt', 'int', 'sum', 'prod']\r\n          ])) {\r\n            error(`\"${name}\" is used with no arguments arguments! it can't be used as variable!`);\r\n          }\r\n          error('undefined control sequence \"' + name + '\"');\r\n        },\n      peg$c98 = \"\\\\sqrt\",\n      peg$c99 = peg$literalExpectation(\"\\\\sqrt\", false),\n      peg$c100 = function(exp, arg) {\r\n          // exp = exp || createNode(\"number\", null, {value:2});\r\n          return exp ? createNode(\"sqrt\", [arg, exp]) : createNode(\"sqrt\", [arg]);\r\n        },\n      peg$c101 = \"int\",\n      peg$c102 = peg$literalExpectation(\"int\", false),\n      peg$c103 = \"sum\",\n      peg$c104 = peg$literalExpectation(\"sum\", false),\n      peg$c105 = \"prod\",\n      peg$c106 = peg$literalExpectation(\"prod\", false),\n      peg$c107 = \"_\",\n      peg$c108 = peg$literalExpectation(\"_\", false),\n      peg$c109 = function(n, sub, sup) { return [sub, sup]; },\n      peg$c110 = function(n, sup, sub) { return [sub, sup]; },\n      peg$c111 = function(n, subsup, arg) {\r\n          subsup.push(arg);\r\n          return createNode(n, subsup);\r\n        },\n      peg$c112 = \"\\\\frac\",\n      peg$c113 = peg$literalExpectation(\"\\\\frac\", false),\n      peg$c114 = function(first, second) { return [first, second]; },\n      peg$c115 = function(args) { return createNode(\"frac\", args); },\n      peg$c116 = peg$otherExpectation(\"digit or char\"),\n      peg$c117 = function() {\r\n          let txt = text();\r\n          if(isNaN(txt)){\r\n            return createNode(\"id\", null, { name: txt });\r\n          } else {\r\n            return createNode(\"number\", null, {value:parseFloat(txt)});\r\n          }\r\n        },\n      peg$c118 = \"\\\\begin\",\n      peg$c119 = peg$literalExpectation(\"\\\\begin\", false),\n      peg$c120 = \"\\\\end\",\n      peg$c121 = peg$literalExpectation(\"\\\\end\", false),\n      peg$c122 = function(t1, rows, t2) {\r\n          if(t1 !== t2)\r\n            error(`different titles: \\\\begin{${t1}} and \\\\end{${t2}}`);\r\n          if (!check(t1, [\r\n            \"matrix\", \"pmatrix\", \"bmatrix\",\r\n            \"Bmatrix\", \"smallmatrix\", \"Bmatrix\",\r\n            \"vmatrix\", \"Vmatrix\"\r\n          ]))\r\n            error(`invalid matrix type: ${t1}`);\r\n          return createNode(\"matrix\", rows, { matrixType: t1 });\r\n        },\n      peg$c123 = \"\\\\\\\\\",\n      peg$c124 = peg$literalExpectation(\"\\\\\\\\\", false),\n      peg$c125 = function(head, tail) {\r\n          tail = tail.map(n=>n[3])\r\n          tail.unshift(head);\r\n          return tail;\r\n        },\n      peg$c126 = \"&\",\n      peg$c127 = peg$literalExpectation(\"&\", false),\n      peg$c128 = \".\",\n      peg$c129 = peg$literalExpectation(\".\", false),\n      peg$c130 = function(head, tail) {\r\n          // reduce from left to right, ltr\r\n          return tail.reduce(function(result, element) {\r\n            return createNode(\"member expression\" , [result, element[3]]);\r\n          }, head);\r\n        },\n      peg$c131 = peg$otherExpectation(\"name\"),\n      peg$c132 = function(name, sub) {\r\n          let n = createNode('id', null, {name})\r\n          if (sub) n.sub = sub;\r\n          return n;\r\n        },\n      peg$c133 = function(w) { return createNode(\"id\", null, { name: w }) },\n      peg$c134 = function(n) { return n },\n      peg$c135 = peg$otherExpectation(\"letter or number\"),\n      peg$c136 = /^[a-zA-Z0-9]/,\n      peg$c137 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"], [\"0\", \"9\"]], false, false),\n      peg$c138 = peg$otherExpectation(\"letter\"),\n      peg$c139 = /^[a-zA-Z]/,\n      peg$c140 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"]], false, false),\n      peg$c141 = function() { return text() },\n      peg$c142 = peg$otherExpectation(\"number\"),\n      peg$c143 = function(sign) {\r\n          let value = parseFloat(text().replace(/[ \\t\\n\\r]/g, ''));\r\n          return createNode('number', null, {value});\r\n        },\n      peg$c144 = /^[0-9]/,\n      peg$c145 = peg$classExpectation([[\"0\", \"9\"]], false, false),\n      peg$c146 = peg$otherExpectation(\"superscript\"),\n      peg$c147 = \"^\",\n      peg$c148 = peg$literalExpectation(\"^\", false),\n      peg$c149 = function(arg) {return arg;},\n      peg$c150 = peg$otherExpectation(\"subscript\"),\n      peg$c151 = peg$otherExpectation(\"function argument\"),\n      peg$c152 = \"!\",\n      peg$c153 = peg$literalExpectation(\"!\", false),\n      peg$c154 = peg$otherExpectation(\"newline\"),\n      peg$c155 = \"\\n\",\n      peg$c156 = peg$literalExpectation(\"\\n\", false),\n      peg$c157 = \"\\r\\n\",\n      peg$c158 = peg$literalExpectation(\"\\r\\n\", false),\n      peg$c159 = peg$otherExpectation(\"space or tab\"),\n      peg$c160 = \" \",\n      peg$c161 = peg$literalExpectation(\" \", false),\n      peg$c162 = \"\\t\",\n      peg$c163 = peg$literalExpectation(\"\\t\", false),\n      peg$c164 = \"\\\\ \",\n      peg$c165 = peg$literalExpectation(\"\\\\ \", false),\n      peg$c166 = peg$otherExpectation(\"whitespace\"),\n\n      peg$currPos          = 0,\n      peg$savedPos         = 0,\n      peg$posDetailsCache  = [{ line: 1, column: 1 }],\n      peg$maxFailPos       = 0,\n      peg$maxFailExpected  = [],\n      peg$silentFails      = 0,\n\n      peg$result;\n\n  if (\"startRule\" in options) {\n    if (!(options.startRule in peg$startRuleFunctions)) {\n      throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n    }\n\n    peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n  }\n\n  function text() {\n    return input.substring(peg$savedPos, peg$currPos);\n  }\n\n  function location() {\n    return peg$computeLocation(peg$savedPos, peg$currPos);\n  }\n\n  function expected(description, location) {\n    location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos)\n\n    throw peg$buildStructuredError(\n      [peg$otherExpectation(description)],\n      input.substring(peg$savedPos, peg$currPos),\n      location\n    );\n  }\n\n  function error(message, location) {\n    location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos)\n\n    throw peg$buildSimpleError(message, location);\n  }\n\n  function peg$literalExpectation(text, ignoreCase) {\n    return { type: \"literal\", text: text, ignoreCase: ignoreCase };\n  }\n\n  function peg$classExpectation(parts, inverted, ignoreCase) {\n    return { type: \"class\", parts: parts, inverted: inverted, ignoreCase: ignoreCase };\n  }\n\n  function peg$anyExpectation() {\n    return { type: \"any\" };\n  }\n\n  function peg$endExpectation() {\n    return { type: \"end\" };\n  }\n\n  function peg$otherExpectation(description) {\n    return { type: \"other\", description: description };\n  }\n\n  function peg$computePosDetails(pos) {\n    var details = peg$posDetailsCache[pos], p;\n\n    if (details) {\n      return details;\n    } else {\n      p = pos - 1;\n      while (!peg$posDetailsCache[p]) {\n        p--;\n      }\n\n      details = peg$posDetailsCache[p];\n      details = {\n        line:   details.line,\n        column: details.column\n      };\n\n      while (p < pos) {\n        if (input.charCodeAt(p) === 10) {\n          details.line++;\n          details.column = 1;\n        } else {\n          details.column++;\n        }\n\n        p++;\n      }\n\n      peg$posDetailsCache[pos] = details;\n      return details;\n    }\n  }\n\n  function peg$computeLocation(startPos, endPos) {\n    var startPosDetails = peg$computePosDetails(startPos),\n        endPosDetails   = peg$computePosDetails(endPos);\n\n    return {\n      start: {\n        offset: startPos,\n        line:   startPosDetails.line,\n        column: startPosDetails.column\n      },\n      end: {\n        offset: endPos,\n        line:   endPosDetails.line,\n        column: endPosDetails.column\n      }\n    };\n  }\n\n  function peg$fail(expected) {\n    if (peg$currPos < peg$maxFailPos) { return; }\n\n    if (peg$currPos > peg$maxFailPos) {\n      peg$maxFailPos = peg$currPos;\n      peg$maxFailExpected = [];\n    }\n\n    peg$maxFailExpected.push(expected);\n  }\n\n  function peg$buildSimpleError(message, location) {\n    return new peg$SyntaxError(message, null, null, location);\n  }\n\n  function peg$buildStructuredError(expected, found, location) {\n    return new peg$SyntaxError(\n      peg$SyntaxError.buildMessage(expected, found),\n      expected,\n      found,\n      location\n    );\n  }\n\n  function peg$parseExpression() {\n    var s0, s1, s2, s3;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    s1 = peg$parse_();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parseOperation1();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parse_();\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c1(s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c0); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseOperation1() {\n    var s0, s1, s2, s3, s4, s5, s6, s7;\n\n    s0 = peg$currPos;\n    s1 = peg$parseOperation2();\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$currPos;\n      s4 = peg$parse_();\n      if (s4 !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 61) {\n          s5 = peg$c2;\n          peg$currPos++;\n        } else {\n          s5 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c3); }\n        }\n        if (s5 === peg$FAILED) {\n          s5 = peg$currPos;\n          if (input.charCodeAt(peg$currPos) === 92) {\n            s6 = peg$c4;\n            peg$currPos++;\n          } else {\n            s6 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c5); }\n          }\n          if (s6 !== peg$FAILED) {\n            s7 = peg$parsetexOperators1();\n            if (s7 !== peg$FAILED) {\n              peg$savedPos = s5;\n              s6 = peg$c6(s1, 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        if (s5 !== peg$FAILED) {\n          s6 = peg$parse_();\n          if (s6 !== peg$FAILED) {\n            s7 = peg$parseOperation2();\n            if (s7 !== peg$FAILED) {\n              s4 = [s4, s5, s6, s7];\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        } 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$parse_();\n        if (s4 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 61) {\n            s5 = peg$c2;\n            peg$currPos++;\n          } else {\n            s5 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c3); }\n          }\n          if (s5 === peg$FAILED) {\n            s5 = peg$currPos;\n            if (input.charCodeAt(peg$currPos) === 92) {\n              s6 = peg$c4;\n              peg$currPos++;\n            } else {\n              s6 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c5); }\n            }\n            if (s6 !== peg$FAILED) {\n              s7 = peg$parsetexOperators1();\n              if (s7 !== peg$FAILED) {\n                peg$savedPos = s5;\n                s6 = peg$c6(s1, 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          if (s5 !== peg$FAILED) {\n            s6 = peg$parse_();\n            if (s6 !== peg$FAILED) {\n              s7 = peg$parseOperation2();\n              if (s7 !== peg$FAILED) {\n                s4 = [s4, s5, s6, s7];\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          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parse_();\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c7(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    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsetexOperators1() {\n    var s0, s1, s2;\n\n    s0 = peg$currPos;\n    s1 = peg$parseword();\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = peg$currPos;\n      s2 = peg$c8(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        s1 = peg$c9(s1);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseOperation2() {\n    var s0, s1, s2, s3, s4, s5, s6, s7;\n\n    s0 = peg$currPos;\n    s1 = peg$parseOperation3();\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$currPos;\n      s4 = peg$parse_();\n      if (s4 !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 43) {\n          s5 = peg$c10;\n          peg$currPos++;\n        } else {\n          s5 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c11); }\n        }\n        if (s5 === peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 45) {\n            s5 = peg$c12;\n            peg$currPos++;\n          } else {\n            s5 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c13); }\n          }\n        }\n        if (s5 !== peg$FAILED) {\n          s6 = peg$parse_();\n          if (s6 !== peg$FAILED) {\n            s7 = peg$parseOperation3();\n            if (s7 !== peg$FAILED) {\n              s4 = [s4, s5, s6, s7];\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        } 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$parse_();\n        if (s4 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 43) {\n            s5 = peg$c10;\n            peg$currPos++;\n          } else {\n            s5 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c11); }\n          }\n          if (s5 === peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 45) {\n              s5 = peg$c12;\n              peg$currPos++;\n            } else {\n              s5 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c13); }\n            }\n          }\n          if (s5 !== peg$FAILED) {\n            s6 = peg$parse_();\n            if (s6 !== peg$FAILED) {\n              s7 = peg$parseOperation3();\n              if (s7 !== peg$FAILED) {\n                s4 = [s4, s5, s6, s7];\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          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      }\n      if (s2 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c7(s1, s2);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseOperation3() {\n    var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n    s0 = peg$currPos;\n    s1 = peg$parseOperation4();\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$currPos;\n      s4 = peg$parse_();\n      if (s4 !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 42) {\n          s5 = peg$c14;\n          peg$currPos++;\n        } else {\n          s5 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c15); }\n        }\n        if (s5 === peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 47) {\n            s5 = peg$c16;\n            peg$currPos++;\n          } else {\n            s5 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c17); }\n          }\n          if (s5 === peg$FAILED) {\n            s5 = peg$currPos;\n            if (input.substr(peg$currPos, 5) === peg$c18) {\n              s6 = peg$c18;\n              peg$currPos += 5;\n            } else {\n              s6 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c19); }\n            }\n            if (s6 !== peg$FAILED) {\n              s7 = peg$currPos;\n              peg$silentFails++;\n              s8 = peg$parsechar();\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                peg$savedPos = s5;\n                s6 = peg$c20(s1);\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        }\n        if (s5 !== peg$FAILED) {\n          s6 = peg$parse_();\n          if (s6 !== peg$FAILED) {\n            s7 = peg$parseOperation4();\n            if (s7 !== peg$FAILED) {\n              s4 = [s4, s5, s6, s7];\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        } 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$parse_();\n        if (s4 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 42) {\n            s5 = peg$c14;\n            peg$currPos++;\n          } else {\n            s5 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c15); }\n          }\n          if (s5 === peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 47) {\n              s5 = peg$c16;\n              peg$currPos++;\n            } else {\n              s5 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c17); }\n            }\n            if (s5 === peg$FAILED) {\n              s5 = peg$currPos;\n              if (input.substr(peg$currPos, 5) === peg$c18) {\n                s6 = peg$c18;\n                peg$currPos += 5;\n              } else {\n                s6 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c19); }\n              }\n              if (s6 !== peg$FAILED) {\n                s7 = peg$currPos;\n                peg$silentFails++;\n                s8 = peg$parsechar();\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                  peg$savedPos = s5;\n                  s6 = peg$c20(s1);\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          }\n          if (s5 !== peg$FAILED) {\n            s6 = peg$parse_();\n            if (s6 !== peg$FAILED) {\n              s7 = peg$parseOperation4();\n              if (s7 !== peg$FAILED) {\n                s4 = [s4, s5, s6, s7];\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          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      }\n      if (s2 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c7(s1, s2);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseOperation4() {\n    var s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    s1 = peg$parseOperation5();\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$currPos;\n      s4 = peg$parse_();\n      if (s4 !== peg$FAILED) {\n        s5 = peg$parseOperation5WithoutNumber();\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      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$currPos;\n        s4 = peg$parse_();\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parseOperation5WithoutNumber();\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      if (s2 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c21(s1, s2);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseOperation5() {\n    var s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    s1 = peg$parseFactor();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parseSuperScript();\n        if (s3 === peg$FAILED) {\n          s3 = null;\n        }\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parse_();\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parsefactorial();\n            if (s5 === peg$FAILED) {\n              s5 = null;\n            }\n            if (s5 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s1 = peg$c22(s1, s3, s5);\n              s0 = s1;\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseOperation5WithoutNumber() {\n    var s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    s1 = peg$parseFactorNotNumber();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parseSuperScript();\n        if (s3 === peg$FAILED) {\n          s3 = null;\n        }\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parse_();\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parsefactorial();\n            if (s5 === peg$FAILED) {\n              s5 = null;\n            }\n            if (s5 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s1 = peg$c22(s1, s3, s5);\n              s0 = s1;\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseFactor() {\n    var s0;\n\n    s0 = peg$parseFactorNotNumber();\n    if (s0 === peg$FAILED) {\n      s0 = peg$parseNumber();\n    }\n\n    return s0;\n  }\n\n  function peg$parseFactorNotNumber() {\n    var s0;\n\n    s0 = peg$parseMemberExpression();\n    if (s0 === peg$FAILED) {\n      s0 = peg$parseTupleOrExprOrParenOrIntervalOrSet();\n      if (s0 === peg$FAILED) {\n        s0 = peg$parseMatrix();\n        if (s0 === peg$FAILED) {\n          s0 = peg$parseBlock_VBars();\n          if (s0 === peg$FAILED) {\n            s0 = peg$parseTexEntities();\n          }\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseBlock_VBars() {\n    var s0, s1, s2, s3, s4, s5, s6, s7;\n\n    s0 = peg$currPos;\n    if (input.substr(peg$currPos, 4) === peg$c23) {\n      s1 = peg$c23;\n      peg$currPos += 4;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c24); }\n    }\n    if (s1 === peg$FAILED) {\n      if (input.substr(peg$currPos, 4) === peg$c25) {\n        s1 = peg$c25;\n        peg$currPos += 4;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c26); }\n      }\n      if (s1 === peg$FAILED) {\n        if (input.substr(peg$currPos, 5) === peg$c27) {\n          s1 = peg$c27;\n          peg$currPos += 5;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c28); }\n        }\n        if (s1 === peg$FAILED) {\n          if (input.substr(peg$currPos, 5) === peg$c29) {\n            s1 = peg$c29;\n            peg$currPos += 5;\n          } else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c30); }\n          }\n          if (s1 === peg$FAILED) {\n            if (input.substr(peg$currPos, 5) === peg$c31) {\n              s1 = peg$c31;\n              peg$currPos += 5;\n            } else {\n              s1 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c32); }\n            }\n          }\n        }\n      }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 124) {\n          s3 = peg$c33;\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c34); }\n        }\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parseExpression();\n          if (s4 !== peg$FAILED) {\n            if (input.substr(peg$currPos, 4) === peg$c23) {\n              s5 = peg$c23;\n              peg$currPos += 4;\n            } else {\n              s5 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c24); }\n            }\n            if (s5 === peg$FAILED) {\n              if (input.substr(peg$currPos, 4) === peg$c25) {\n                s5 = peg$c25;\n                peg$currPos += 4;\n              } else {\n                s5 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c26); }\n              }\n              if (s5 === peg$FAILED) {\n                if (input.substr(peg$currPos, 5) === peg$c27) {\n                  s5 = peg$c27;\n                  peg$currPos += 5;\n                } else {\n                  s5 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c28); }\n                }\n                if (s5 === peg$FAILED) {\n                  if (input.substr(peg$currPos, 5) === peg$c29) {\n                    s5 = peg$c29;\n                    peg$currPos += 5;\n                  } else {\n                    s5 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$c30); }\n                  }\n                  if (s5 === peg$FAILED) {\n                    if (input.substr(peg$currPos, 6) === peg$c35) {\n                      s5 = peg$c35;\n                      peg$currPos += 6;\n                    } else {\n                      s5 = peg$FAILED;\n                      if (peg$silentFails === 0) { peg$fail(peg$c36); }\n                    }\n                  }\n                }\n              }\n            }\n            if (s5 !== peg$FAILED) {\n              s6 = peg$parse_();\n              if (s6 !== peg$FAILED) {\n                if (input.charCodeAt(peg$currPos) === 124) {\n                  s7 = peg$c33;\n                  peg$currPos++;\n                } else {\n                  s7 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c34); }\n                }\n                if (s7 !== peg$FAILED) {\n                  peg$savedPos = s0;\n                  s1 = peg$c37(s4);\n                  s0 = s1;\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseFunctions() {\n    var s0, s1;\n\n    peg$silentFails++;\n    s0 = peg$parseBuiltinFunctions();\n    if (s0 === peg$FAILED) {\n      s0 = peg$parseOperatorname();\n      if (s0 === peg$FAILED) {\n        s0 = peg$parseFunction();\n      }\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c38); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseBuiltinFunctions() {\n    var s0, s1, s2, s3, s4, s5, s6;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 92) {\n      s1 = peg$c4;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c5); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parsebuiltinFuncsTitles();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parse_();\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parseSuperScript();\n          if (s4 === peg$FAILED) {\n            s4 = null;\n          }\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parse_();\n            if (s5 !== peg$FAILED) {\n              s6 = peg$parsebuiltinFunctionsArgs();\n              if (s6 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c40(s2, s4, s6);\n                s0 = s1;\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c39); }\n    }\n\n    return s0;\n  }\n\n  function peg$parsebuiltinFuncsTitles() {\n    var s0, s1, s2;\n\n    s0 = peg$currPos;\n    s1 = peg$parseword();\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = peg$currPos;\n      s2 = peg$c41(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        s1 = peg$c42(s1);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsebuiltinFunctionsArgs() {\n    var s0;\n\n    s0 = peg$parsefunctionParentheses();\n    if (s0 === peg$FAILED) {\n      s0 = peg$parseOperation4();\n    }\n\n    return s0;\n  }\n\n  function peg$parseOperatorname() {\n    var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n    s0 = peg$currPos;\n    if (input.substr(peg$currPos, 13) === peg$c43) {\n      s1 = peg$c43;\n      peg$currPos += 13;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c44); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$currPos;\n      s3 = peg$parse_();\n      if (s3 !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 123) {\n          s4 = peg$c45;\n          peg$currPos++;\n        } else {\n          s4 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c46); }\n        }\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parse_();\n          if (s5 !== peg$FAILED) {\n            s6 = peg$parseName();\n            if (s6 === peg$FAILED) {\n              s6 = peg$parseSpecialSymbols();\n            }\n            if (s6 !== peg$FAILED) {\n              s7 = peg$parse_();\n              if (s7 !== peg$FAILED) {\n                if (input.charCodeAt(peg$currPos) === 125) {\n                  s8 = peg$c47;\n                  peg$currPos++;\n                } else {\n                  s8 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c48); }\n                }\n                if (s8 !== peg$FAILED) {\n                  peg$savedPos = s2;\n                  s3 = peg$c49(s6);\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        s2 = peg$currPos;\n        s3 = [];\n        s4 = peg$parsews();\n        if (s4 !== peg$FAILED) {\n          while (s4 !== peg$FAILED) {\n            s3.push(s4);\n            s4 = peg$parsews();\n          }\n        } else {\n          s3 = peg$FAILED;\n        }\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parseName();\n          if (s4 === peg$FAILED) {\n            s4 = peg$parseSpecialSymbols();\n          }\n          if (s4 !== peg$FAILED) {\n            peg$savedPos = s2;\n            s3 = peg$c49(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      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parse_();\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parsefunctionParentheses();\n          if (s4 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c50(s2, s4);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseFunction() {\n    var s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    s1 = peg$currPos;\n    s2 = peg$parseName();\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 = peg$currPos;\n      s2 = peg$c51(s1);\n      if (s2) {\n        s2 = void 0;\n      } else {\n        s2 = peg$FAILED;\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parse_();\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parsefunctionParentheses();\n          if (s4 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c52(s1, s4);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsefunctionParentheses() {\n    var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n    s0 = peg$currPos;\n    peg$savedPos = peg$currPos;\n    s1 = peg$c53();\n    if (s1) {\n      s1 = void 0;\n    } else {\n      s1 = peg$FAILED;\n    }\n    if (s1 !== peg$FAILED) {\n      if (input.substr(peg$currPos, 4) === peg$c23) {\n        s2 = peg$c23;\n        peg$currPos += 4;\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c24); }\n      }\n      if (s2 === peg$FAILED) {\n        if (input.substr(peg$currPos, 4) === peg$c25) {\n          s2 = peg$c25;\n          peg$currPos += 4;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c26); }\n        }\n        if (s2 === peg$FAILED) {\n          if (input.substr(peg$currPos, 5) === peg$c27) {\n            s2 = peg$c27;\n            peg$currPos += 5;\n          } else {\n            s2 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c28); }\n          }\n          if (s2 === peg$FAILED) {\n            if (input.substr(peg$currPos, 5) === peg$c29) {\n              s2 = peg$c29;\n              peg$currPos += 5;\n            } else {\n              s2 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c30); }\n            }\n            if (s2 === peg$FAILED) {\n              if (input.substr(peg$currPos, 5) === peg$c31) {\n                s2 = peg$c31;\n                peg$currPos += 5;\n              } else {\n                s2 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c32); }\n              }\n            }\n          }\n        }\n      }\n      if (s2 === peg$FAILED) {\n        s2 = null;\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parse_();\n        if (s3 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 40) {\n            s4 = peg$c54;\n            peg$currPos++;\n          } else {\n            s4 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c55); }\n          }\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parseCommaExpression();\n            if (s5 !== peg$FAILED) {\n              if (input.substr(peg$currPos, 4) === peg$c23) {\n                s6 = peg$c23;\n                peg$currPos += 4;\n              } else {\n                s6 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c24); }\n              }\n              if (s6 === peg$FAILED) {\n                if (input.substr(peg$currPos, 4) === peg$c25) {\n                  s6 = peg$c25;\n                  peg$currPos += 4;\n                } else {\n                  s6 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c26); }\n                }\n                if (s6 === peg$FAILED) {\n                  if (input.substr(peg$currPos, 5) === peg$c27) {\n                    s6 = peg$c27;\n                    peg$currPos += 5;\n                  } else {\n                    s6 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$c28); }\n                  }\n                  if (s6 === peg$FAILED) {\n                    if (input.substr(peg$currPos, 5) === peg$c29) {\n                      s6 = peg$c29;\n                      peg$currPos += 5;\n                    } else {\n                      s6 = peg$FAILED;\n                      if (peg$silentFails === 0) { peg$fail(peg$c30); }\n                    }\n                    if (s6 === peg$FAILED) {\n                      if (input.substr(peg$currPos, 6) === peg$c35) {\n                        s6 = peg$c35;\n                        peg$currPos += 6;\n                      } else {\n                        s6 = peg$FAILED;\n                        if (peg$silentFails === 0) { peg$fail(peg$c36); }\n                      }\n                    }\n                  }\n                }\n              }\n              if (s6 === peg$FAILED) {\n                s6 = null;\n              }\n              if (s6 !== peg$FAILED) {\n                s7 = peg$parse_();\n                if (s7 !== peg$FAILED) {\n                  if (input.charCodeAt(peg$currPos) === 41) {\n                    s8 = peg$c56;\n                    peg$currPos++;\n                  } else {\n                    s8 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$c57); }\n                  }\n                  if (s8 !== peg$FAILED) {\n                    peg$savedPos = s0;\n                    s1 = peg$c58(s5);\n                    s0 = s1;\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 === peg$FAILED) {\n      s0 = peg$currPos;\n      peg$savedPos = peg$currPos;\n      s1 = peg$c59();\n      if (s1) {\n        s1 = void 0;\n      } else {\n        s1 = peg$FAILED;\n      }\n      if (s1 !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 40) {\n          s2 = peg$c54;\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c55); }\n        }\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parse_();\n          if (s3 !== peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 41) {\n              s4 = peg$c56;\n              peg$currPos++;\n            } else {\n              s4 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c57); }\n            }\n            if (s4 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s1 = peg$c60();\n              s0 = s1;\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseCommaExpression() {\n    var s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    s1 = peg$parseExpression();\n    if (s1 === peg$FAILED) {\n      s1 = peg$parseCommaExpressionEllipsis();\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 44) {\n        s4 = peg$c61;\n        peg$currPos++;\n      } else {\n        s4 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c62); }\n      }\n      if (s4 !== peg$FAILED) {\n        s5 = peg$parseExpression();\n        if (s5 === peg$FAILED) {\n          s5 = peg$parseCommaExpressionEllipsis();\n        }\n        if (s5 !== peg$FAILED) {\n          peg$savedPos = s3;\n          s4 = peg$c6(s1, 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      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 44) {\n          s4 = peg$c61;\n          peg$currPos++;\n        } else {\n          s4 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c62); }\n        }\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parseExpression();\n          if (s5 === peg$FAILED) {\n            s5 = peg$parseCommaExpressionEllipsis();\n          }\n          if (s5 !== peg$FAILED) {\n            peg$savedPos = s3;\n            s4 = peg$c6(s1, 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      if (s2 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c63(s1, s2);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseEllipsis() {\n    var s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    s1 = peg$parse_();\n    if (s1 !== peg$FAILED) {\n      if (input.substr(peg$currPos, 3) === peg$c64) {\n        s2 = peg$c64;\n        peg$currPos += 3;\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c65); }\n      }\n      if (s2 === peg$FAILED) {\n        s2 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 92) {\n          s3 = peg$c4;\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c5); }\n        }\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parsedots();\n          if (s4 !== peg$FAILED) {\n            peg$savedPos = s2;\n            s3 = peg$c66(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      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parse_();\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c67(s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseHorizentalEllipsis() {\n    var s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    s1 = peg$parse_();\n    if (s1 !== peg$FAILED) {\n      if (input.substr(peg$currPos, 3) === peg$c64) {\n        s2 = peg$c64;\n        peg$currPos += 3;\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c65); }\n      }\n      if (s2 === peg$FAILED) {\n        s2 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 92) {\n          s3 = peg$c4;\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c5); }\n        }\n        if (s3 !== peg$FAILED) {\n          if (input.substr(peg$currPos, 4) === peg$c68) {\n            s4 = peg$c68;\n            peg$currPos += 4;\n          } else {\n            s4 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c69); }\n          }\n          if (s4 === peg$FAILED) {\n            if (input.substr(peg$currPos, 5) === peg$c70) {\n              s4 = peg$c70;\n              peg$currPos += 5;\n            } else {\n              s4 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c71); }\n            }\n          }\n          if (s4 !== peg$FAILED) {\n            peg$savedPos = s2;\n            s3 = peg$c66(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      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parse_();\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c67(s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsedots() {\n    var s0;\n\n    if (input.substr(peg$currPos, 4) === peg$c68) {\n      s0 = peg$c68;\n      peg$currPos += 4;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c69); }\n    }\n    if (s0 === peg$FAILED) {\n      if (input.substr(peg$currPos, 5) === peg$c72) {\n        s0 = peg$c72;\n        peg$currPos += 5;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c73); }\n      }\n      if (s0 === peg$FAILED) {\n        if (input.substr(peg$currPos, 5) === peg$c74) {\n          s0 = peg$c74;\n          peg$currPos += 5;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c75); }\n        }\n        if (s0 === peg$FAILED) {\n          if (input.substr(peg$currPos, 5) === peg$c70) {\n            s0 = peg$c70;\n            peg$currPos += 5;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c71); }\n          }\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseCommaExpressionEllipsis() {\n    var s0, s1;\n\n    s0 = peg$currPos;\n    s1 = peg$parseEllipsis();\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c76(s1);\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parseTupleOrExprOrParenOrIntervalOrSet() {\n    var s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    s1 = peg$parseblockOpeningsss();\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = peg$currPos;\n      s2 = peg$c77(s1);\n      if (s2) {\n        s2 = void 0;\n      } else {\n        s2 = peg$FAILED;\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parseCommaExpression();\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parseblockClosingsss();\n          if (s4 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c78(s1, s3, s4);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 === peg$FAILED) {\n      s0 = peg$currPos;\n      peg$savedPos = peg$currPos;\n      s1 = peg$c79();\n      if (s1) {\n        s1 = void 0;\n      } else {\n        s1 = peg$FAILED;\n      }\n      if (s1 !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 97) {\n          s2 = peg$c80;\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c81); }\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    }\n\n    return s0;\n  }\n\n  function peg$parseblockOpeningsss() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$parseleftPrefixes();\n    if (s1 === peg$FAILED) {\n      s1 = null;\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 40) {\n          s3 = peg$c54;\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c55); }\n        }\n        if (s3 === peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 91) {\n            s3 = peg$c82;\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c83); }\n          }\n          if (s3 === peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 123) {\n              s3 = peg$c45;\n              peg$currPos++;\n            } else {\n              s3 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c46); }\n            }\n            if (s3 === peg$FAILED) {\n              if (input.substr(peg$currPos, 3) === peg$c84) {\n                s3 = peg$c84;\n                peg$currPos += 3;\n              } else {\n                s3 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c85); }\n              }\n              if (s3 === peg$FAILED) {\n                if (input.substr(peg$currPos, 2) === peg$c86) {\n                  s3 = peg$c86;\n                  peg$currPos += 2;\n                } else {\n                  s3 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c87); }\n                }\n              }\n            }\n          }\n        }\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c88(s3);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseblockClosingsss() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$parserightPrefixes();\n    if (s1 === peg$FAILED) {\n      s1 = null;\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 41) {\n          s3 = peg$c56;\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c57); }\n        }\n        if (s3 === peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 93) {\n            s3 = peg$c89;\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c90); }\n          }\n          if (s3 === peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 125) {\n              s3 = peg$c47;\n              peg$currPos++;\n            } else {\n              s3 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c48); }\n            }\n            if (s3 === peg$FAILED) {\n              if (input.substr(peg$currPos, 3) === peg$c91) {\n                s3 = peg$c91;\n                peg$currPos += 3;\n              } else {\n                s3 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c92); }\n              }\n              if (s3 === peg$FAILED) {\n                if (input.substr(peg$currPos, 2) === peg$c93) {\n                  s3 = peg$c93;\n                  peg$currPos += 2;\n                } else {\n                  s3 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c94); }\n                }\n              }\n            }\n          }\n        }\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c88(s3);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseTexEntities() {\n    var s0;\n\n    s0 = peg$parseSpecialTexRules();\n    if (s0 === peg$FAILED) {\n      s0 = peg$parseSpecialSymbols();\n    }\n\n    return s0;\n  }\n\n  function peg$parseSpecialSymbols() {\n    var s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 92) {\n      s1 = peg$c4;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c5); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parsespecialSymbolsTitles();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$currPos;\n        peg$silentFails++;\n        s4 = peg$parsechar();\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          peg$savedPos = s0;\n          s1 = peg$c95(s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsespecialSymbolsTitles() {\n    var s0, s1, s2, s3, s4, s5, s6;\n\n    s0 = peg$currPos;\n    s1 = peg$currPos;\n    peg$silentFails++;\n    s2 = peg$currPos;\n    s3 = peg$parsetexOperators1();\n    if (s3 !== peg$FAILED) {\n      s4 = peg$currPos;\n      peg$silentFails++;\n      s5 = peg$parsechar();\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        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    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$currPos;\n      s4 = peg$parseleftPrefixes();\n      if (s4 !== peg$FAILED) {\n        s5 = peg$currPos;\n        peg$silentFails++;\n        s6 = peg$parsechar();\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          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      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$parseword();\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = peg$currPos;\n          s4 = peg$c96(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            s1 = peg$c97(s3);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseSpecialTexRules() {\n    var s0;\n\n    s0 = peg$parseSqrt();\n    if (s0 === peg$FAILED) {\n      s0 = peg$parseIntSumProd();\n      if (s0 === peg$FAILED) {\n        s0 = peg$parseFrac();\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseSqrt() {\n    var s0, s1, s2, s3, s4, s5, s6;\n\n    s0 = peg$currPos;\n    if (input.substr(peg$currPos, 5) === peg$c98) {\n      s1 = peg$c98;\n      peg$currPos += 5;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c99); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$currPos;\n      peg$silentFails++;\n      s3 = peg$parsechar();\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$parse_();\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parseSquareBrackets();\n          if (s4 === peg$FAILED) {\n            s4 = null;\n          }\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parse_();\n            if (s5 !== peg$FAILED) {\n              s6 = peg$parseArg();\n              if (s6 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c100(s4, s6);\n                s0 = s1;\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseIntSumProd() {\n    var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 92) {\n      s1 = peg$c4;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c5); }\n    }\n    if (s1 !== peg$FAILED) {\n      if (input.substr(peg$currPos, 3) === peg$c101) {\n        s2 = peg$c101;\n        peg$currPos += 3;\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c102); }\n      }\n      if (s2 === peg$FAILED) {\n        if (input.substr(peg$currPos, 3) === peg$c103) {\n          s2 = peg$c103;\n          peg$currPos += 3;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c104); }\n        }\n        if (s2 === peg$FAILED) {\n          if (input.substr(peg$currPos, 4) === peg$c105) {\n            s2 = peg$c105;\n            peg$currPos += 4;\n          } else {\n            s2 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c106); }\n          }\n        }\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$currPos;\n        peg$silentFails++;\n        s4 = peg$parsechar();\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$parse_();\n          if (s4 !== peg$FAILED) {\n            s5 = peg$currPos;\n            s6 = peg$currPos;\n            peg$silentFails++;\n            s7 = peg$currPos;\n            s8 = peg$parse_();\n            if (s8 !== peg$FAILED) {\n              if (input.charCodeAt(peg$currPos) === 95) {\n                s9 = peg$c107;\n                peg$currPos++;\n              } else {\n                s9 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c108); }\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              peg$currPos = s6;\n              s6 = void 0;\n            } else {\n              s6 = peg$FAILED;\n            }\n            if (s6 !== peg$FAILED) {\n              s7 = peg$parseSubScript();\n              if (s7 === peg$FAILED) {\n                s7 = null;\n              }\n              if (s7 !== peg$FAILED) {\n                s8 = peg$parse_();\n                if (s8 !== peg$FAILED) {\n                  s9 = peg$parseSuperScript();\n                  if (s9 === peg$FAILED) {\n                    s9 = null;\n                  }\n                  if (s9 !== peg$FAILED) {\n                    peg$savedPos = s5;\n                    s6 = peg$c109(s2, s7, s9);\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              } 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              s5 = peg$currPos;\n              s6 = peg$parseSuperScript();\n              if (s6 === peg$FAILED) {\n                s6 = null;\n              }\n              if (s6 !== peg$FAILED) {\n                s7 = peg$parse_();\n                if (s7 !== peg$FAILED) {\n                  s8 = peg$parseSubScript();\n                  if (s8 === peg$FAILED) {\n                    s8 = null;\n                  }\n                  if (s8 !== peg$FAILED) {\n                    peg$savedPos = s5;\n                    s6 = peg$c110(s2, s6, s8);\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              } else {\n                peg$currPos = s5;\n                s5 = peg$FAILED;\n              }\n            }\n            if (s5 !== peg$FAILED) {\n              s6 = peg$parse_();\n              if (s6 !== peg$FAILED) {\n                s7 = peg$parseExpression();\n                if (s7 !== peg$FAILED) {\n                  peg$savedPos = s0;\n                  s1 = peg$c111(s2, s5, s7);\n                  s0 = s1;\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseFrac() {\n    var s0, s1, s2, s3, s4, s5, s6, s7;\n\n    s0 = peg$currPos;\n    if (input.substr(peg$currPos, 5) === peg$c112) {\n      s1 = peg$c112;\n      peg$currPos += 5;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c113); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$currPos;\n      peg$silentFails++;\n      s3 = peg$parsechar();\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$parse_();\n        if (s3 !== peg$FAILED) {\n          s4 = peg$currPos;\n          s5 = peg$parseArg();\n          if (s5 !== peg$FAILED) {\n            s6 = peg$parse_();\n            if (s6 !== peg$FAILED) {\n              s7 = peg$parseArg();\n              if (s7 !== peg$FAILED) {\n                peg$savedPos = s4;\n                s5 = peg$c114(s5, 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            peg$savedPos = s0;\n            s1 = peg$c115(s4);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseoneCharArg() {\n    var s0, s1;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    s1 = peg$parsew();\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c117();\n    }\n    s0 = s1;\n    if (s0 === peg$FAILED) {\n      s0 = peg$parseSpecialSymbols();\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c116); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseMatrix() {\n    var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15;\n\n    s0 = peg$currPos;\n    if (input.substr(peg$currPos, 6) === peg$c118) {\n      s1 = peg$c118;\n      peg$currPos += 6;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c119); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 123) {\n          s3 = peg$c45;\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c46); }\n        }\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parse_();\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parseword();\n            if (s5 !== peg$FAILED) {\n              s6 = peg$parse_();\n              if (s6 !== peg$FAILED) {\n                if (input.charCodeAt(peg$currPos) === 125) {\n                  s7 = peg$c47;\n                  peg$currPos++;\n                } else {\n                  s7 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c48); }\n                }\n                if (s7 !== peg$FAILED) {\n                  s8 = peg$parse_();\n                  if (s8 !== peg$FAILED) {\n                    s9 = peg$parsematrixRows();\n                    if (s9 !== peg$FAILED) {\n                      s10 = peg$parse_();\n                      if (s10 !== peg$FAILED) {\n                        if (input.substr(peg$currPos, 4) === peg$c120) {\n                          s11 = peg$c120;\n                          peg$currPos += 4;\n                        } else {\n                          s11 = peg$FAILED;\n                          if (peg$silentFails === 0) { peg$fail(peg$c121); }\n                        }\n                        if (s11 !== peg$FAILED) {\n                          s12 = peg$parse_();\n                          if (s12 !== peg$FAILED) {\n                            if (input.charCodeAt(peg$currPos) === 123) {\n                              s13 = peg$c45;\n                              peg$currPos++;\n                            } else {\n                              s13 = peg$FAILED;\n                              if (peg$silentFails === 0) { peg$fail(peg$c46); }\n                            }\n                            if (s13 !== peg$FAILED) {\n                              s14 = peg$parseword();\n                              if (s14 !== peg$FAILED) {\n                                if (input.charCodeAt(peg$currPos) === 125) {\n                                  s15 = peg$c47;\n                                  peg$currPos++;\n                                } else {\n                                  s15 = peg$FAILED;\n                                  if (peg$silentFails === 0) { peg$fail(peg$c48); }\n                                }\n                                if (s15 !== peg$FAILED) {\n                                  peg$savedPos = s0;\n                                  s1 = peg$c122(s5, s9, s14);\n                                  s0 = s1;\n                                } else {\n                                  peg$currPos = s0;\n                                  s0 = peg$FAILED;\n                                }\n                              } else {\n                                peg$currPos = s0;\n                                s0 = peg$FAILED;\n                              }\n                            } else {\n                              peg$currPos = s0;\n                              s0 = peg$FAILED;\n                            }\n                          } else {\n                            peg$currPos = s0;\n                            s0 = peg$FAILED;\n                          }\n                        } else {\n                          peg$currPos = s0;\n                          s0 = peg$FAILED;\n                        }\n                      } else {\n                        peg$currPos = s0;\n                        s0 = peg$FAILED;\n                      }\n                    } else {\n                      peg$currPos = s0;\n                      s0 = peg$FAILED;\n                    }\n                  } 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\n    return s0;\n  }\n\n  function peg$parsematrixRows() {\n    var s0, s1, s2, s3, s4, s5, s6, s7;\n\n    s0 = peg$currPos;\n    s1 = peg$parsematrixRow();\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$currPos;\n      s4 = peg$parse_();\n      if (s4 !== peg$FAILED) {\n        if (input.substr(peg$currPos, 2) === peg$c123) {\n          s5 = peg$c123;\n          peg$currPos += 2;\n        } else {\n          s5 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c124); }\n        }\n        if (s5 !== peg$FAILED) {\n          s6 = peg$parse_();\n          if (s6 !== peg$FAILED) {\n            s7 = peg$parsematrixRow();\n            if (s7 !== peg$FAILED) {\n              s4 = [s4, s5, s6, s7];\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        } 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$parse_();\n        if (s4 !== peg$FAILED) {\n          if (input.substr(peg$currPos, 2) === peg$c123) {\n            s5 = peg$c123;\n            peg$currPos += 2;\n          } else {\n            s5 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c124); }\n          }\n          if (s5 !== peg$FAILED) {\n            s6 = peg$parse_();\n            if (s6 !== peg$FAILED) {\n              s7 = peg$parsematrixRow();\n              if (s7 !== peg$FAILED) {\n                s4 = [s4, s5, s6, s7];\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          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      }\n      if (s2 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c125(s1, s2);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsematrixRow() {\n    var s0, s1, s2, s3, s4, s5, s6, s7;\n\n    s0 = peg$currPos;\n    s1 = peg$parseExpression();\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$currPos;\n      s4 = peg$parse_();\n      if (s4 !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 38) {\n          s5 = peg$c126;\n          peg$currPos++;\n        } else {\n          s5 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c127); }\n        }\n        if (s5 !== peg$FAILED) {\n          s6 = peg$parse_();\n          if (s6 !== peg$FAILED) {\n            s7 = peg$parseExpression();\n            if (s7 !== peg$FAILED) {\n              s4 = [s4, s5, s6, s7];\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        } 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$parse_();\n        if (s4 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 38) {\n            s5 = peg$c126;\n            peg$currPos++;\n          } else {\n            s5 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c127); }\n          }\n          if (s5 !== peg$FAILED) {\n            s6 = peg$parse_();\n            if (s6 !== peg$FAILED) {\n              s7 = peg$parseExpression();\n              if (s7 !== peg$FAILED) {\n                s4 = [s4, s5, s6, s7];\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          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      }\n      if (s2 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c125(s1, s2);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseMemberExpression() {\n    var s0, s1, s2, s3, s4, s5, s6, s7;\n\n    s0 = peg$currPos;\n    s1 = peg$parsememberArg();\n    if (s1 === peg$FAILED) {\n      s1 = peg$parseTupleOrExprOrParenOrIntervalOrSet();\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$currPos;\n      s4 = peg$parse_();\n      if (s4 !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 46) {\n          s5 = peg$c128;\n          peg$currPos++;\n        } else {\n          s5 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c129); }\n        }\n        if (s5 !== peg$FAILED) {\n          s6 = peg$parse_();\n          if (s6 !== peg$FAILED) {\n            s7 = peg$parsememberArg();\n            if (s7 !== peg$FAILED) {\n              s4 = [s4, s5, s6, s7];\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        } 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$parse_();\n        if (s4 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 46) {\n            s5 = peg$c128;\n            peg$currPos++;\n          } else {\n            s5 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c129); }\n          }\n          if (s5 !== peg$FAILED) {\n            s6 = peg$parse_();\n            if (s6 !== peg$FAILED) {\n              s7 = peg$parsememberArg();\n              if (s7 !== peg$FAILED) {\n                s4 = [s4, s5, s6, s7];\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          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      }\n      if (s2 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c130(s1, s2);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsememberArg() {\n    var s0;\n\n    s0 = peg$parseFunctions();\n    if (s0 === peg$FAILED) {\n      s0 = peg$parseName();\n    }\n\n    return s0;\n  }\n\n  function peg$parseName() {\n    var s0, s1, s2;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    s1 = peg$parsechar();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parsesubName();\n      if (s2 === peg$FAILED) {\n        s2 = null;\n      }\n      if (s2 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c132(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) { peg$fail(peg$c131); }\n    }\n\n    return s0;\n  }\n\n  function peg$parsesubName() {\n    var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n    s0 = peg$currPos;\n    s1 = peg$parse_();\n    if (s1 !== peg$FAILED) {\n      if (input.charCodeAt(peg$currPos) === 95) {\n        s2 = peg$c107;\n        peg$currPos++;\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c108); }\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parse_();\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parsew();\n          if (s4 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c133(s4);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 === peg$FAILED) {\n      s0 = peg$currPos;\n      s1 = peg$parse_();\n      if (s1 !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 95) {\n          s2 = peg$c107;\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c108); }\n        }\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parse_();\n          if (s3 !== peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 123) {\n              s4 = peg$c45;\n              peg$currPos++;\n            } else {\n              s4 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c46); }\n            }\n            if (s4 !== peg$FAILED) {\n              s5 = peg$parse_();\n              if (s5 !== peg$FAILED) {\n                s6 = peg$parseName();\n                if (s6 !== peg$FAILED) {\n                  s7 = peg$parse_();\n                  if (s7 !== peg$FAILED) {\n                    if (input.charCodeAt(peg$currPos) === 125) {\n                      s8 = peg$c47;\n                      peg$currPos++;\n                    } else {\n                      s8 = peg$FAILED;\n                      if (peg$silentFails === 0) { peg$fail(peg$c48); }\n                    }\n                    if (s8 !== peg$FAILED) {\n                      peg$savedPos = s0;\n                      s1 = peg$c134(s6);\n                      s0 = s1;\n                    } else {\n                      peg$currPos = s0;\n                      s0 = peg$FAILED;\n                    }\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parsew() {\n    var s0, s1;\n\n    peg$silentFails++;\n    if (peg$c136.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c137); }\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c135); }\n    }\n\n    return s0;\n  }\n\n  function peg$parsechar() {\n    var s0, s1;\n\n    peg$silentFails++;\n    if (peg$c139.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c140); }\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c138); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseword() {\n    var s0, s1, s2;\n\n    s0 = peg$currPos;\n    s1 = [];\n    if (peg$c139.test(input.charAt(peg$currPos))) {\n      s2 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s2 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c140); }\n    }\n    if (s2 !== peg$FAILED) {\n      while (s2 !== peg$FAILED) {\n        s1.push(s2);\n        if (peg$c139.test(input.charAt(peg$currPos))) {\n          s2 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c140); }\n        }\n      }\n    } else {\n      s1 = peg$FAILED;\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c141();\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parseNumber() {\n    var s0, s1, s2, s3, s4;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    s1 = peg$parsesign();\n    if (s1 === peg$FAILED) {\n      s1 = null;\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$currPos;\n        s4 = peg$parsesimpleNumber();\n        if (s4 !== peg$FAILED) {\n          s3 = input.substring(s3, peg$currPos);\n        } else {\n          s3 = s4;\n        }\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c143(s1);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } 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) { peg$fail(peg$c142); }\n    }\n\n    return s0;\n  }\n\n  function peg$parsesimpleNumber() {\n    var s0, s1, s2, s3;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    if (peg$c144.test(input.charAt(peg$currPos))) {\n      s1 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c145); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      if (peg$c144.test(input.charAt(peg$currPos))) {\n        s3 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c145); }\n      }\n      if (s3 === peg$FAILED) {\n        s3 = peg$parsews();\n      }\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        if (peg$c144.test(input.charAt(peg$currPos))) {\n          s3 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c145); }\n        }\n        if (s3 === peg$FAILED) {\n          s3 = peg$parsews();\n        }\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parsefrac();\n        if (s3 === peg$FAILED) {\n          s3 = null;\n        }\n        if (s3 !== peg$FAILED) {\n          s1 = [s1, s2, s3];\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 === peg$FAILED) {\n      s0 = peg$parsefrac();\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c142); }\n    }\n\n    return s0;\n  }\n\n  function peg$parsefrac() {\n    var s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 46) {\n      s1 = peg$c128;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c129); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 !== peg$FAILED) {\n        if (peg$c144.test(input.charAt(peg$currPos))) {\n          s3 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c145); }\n        }\n        if (s3 !== peg$FAILED) {\n          s4 = [];\n          if (peg$c144.test(input.charAt(peg$currPos))) {\n            s5 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s5 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c145); }\n          }\n          if (s5 === peg$FAILED) {\n            s5 = peg$parsews();\n          }\n          while (s5 !== peg$FAILED) {\n            s4.push(s5);\n            if (peg$c144.test(input.charAt(peg$currPos))) {\n              s5 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s5 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c145); }\n            }\n            if (s5 === peg$FAILED) {\n              s5 = peg$parsews();\n            }\n          }\n          if (s4 !== peg$FAILED) {\n            s1 = [s1, s2, s3, s4];\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsesign() {\n    var s0;\n\n    if (input.charCodeAt(peg$currPos) === 45) {\n      s0 = peg$c12;\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c13); }\n    }\n    if (s0 === peg$FAILED) {\n      if (input.charCodeAt(peg$currPos) === 43) {\n        s0 = peg$c10;\n        peg$currPos++;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c11); }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseSquareBrackets() {\n    var s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 91) {\n      s1 = peg$c82;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c83); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parseExpression();\n        if (s3 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 93) {\n            s4 = peg$c89;\n            peg$currPos++;\n          } else {\n            s4 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c90); }\n          }\n          if (s4 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c1(s3);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseCurlyBrackets() {\n    var s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 123) {\n      s1 = peg$c45;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c46); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parseExpression();\n        if (s3 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 125) {\n            s4 = peg$c47;\n            peg$currPos++;\n          } else {\n            s4 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c48); }\n          }\n          if (s4 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c1(s3);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseSuperScript() {\n    var s0, s1, s2, s3;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 94) {\n      s1 = peg$c147;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c148); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parseArg();\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c149(s3);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c146); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseSubScript() {\n    var s0, s1, s2, s3;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 95) {\n      s1 = peg$c107;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c108); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parseArg();\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c149(s3);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c150); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseArg() {\n    var s0, s1;\n\n    peg$silentFails++;\n    s0 = peg$parseCurlyBrackets();\n    if (s0 === peg$FAILED) {\n      s0 = peg$parseFrac();\n      if (s0 === peg$FAILED) {\n        s0 = peg$parseSpecialSymbols();\n        if (s0 === peg$FAILED) {\n          s0 = peg$parseoneCharArg();\n        }\n      }\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c151); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseleftPrefixes() {\n    var s0;\n\n    if (input.substr(peg$currPos, 5) === peg$c31) {\n      s0 = peg$c31;\n      peg$currPos += 5;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c32); }\n    }\n    if (s0 === peg$FAILED) {\n      if (input.substr(peg$currPos, 4) === peg$c25) {\n        s0 = peg$c25;\n        peg$currPos += 4;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c26); }\n      }\n      if (s0 === peg$FAILED) {\n        if (input.substr(peg$currPos, 5) === peg$c29) {\n          s0 = peg$c29;\n          peg$currPos += 5;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c30); }\n        }\n        if (s0 === peg$FAILED) {\n          if (input.substr(peg$currPos, 4) === peg$c23) {\n            s0 = peg$c23;\n            peg$currPos += 4;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c24); }\n          }\n          if (s0 === peg$FAILED) {\n            if (input.substr(peg$currPos, 5) === peg$c27) {\n              s0 = peg$c27;\n              peg$currPos += 5;\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c28); }\n            }\n          }\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parserightPrefixes() {\n    var s0;\n\n    if (input.substr(peg$currPos, 6) === peg$c35) {\n      s0 = peg$c35;\n      peg$currPos += 6;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c36); }\n    }\n    if (s0 === peg$FAILED) {\n      if (input.substr(peg$currPos, 4) === peg$c25) {\n        s0 = peg$c25;\n        peg$currPos += 4;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c26); }\n      }\n      if (s0 === peg$FAILED) {\n        if (input.substr(peg$currPos, 5) === peg$c29) {\n          s0 = peg$c29;\n          peg$currPos += 5;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c30); }\n        }\n        if (s0 === peg$FAILED) {\n          if (input.substr(peg$currPos, 4) === peg$c23) {\n            s0 = peg$c23;\n            peg$currPos += 4;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c24); }\n          }\n          if (s0 === peg$FAILED) {\n            if (input.substr(peg$currPos, 5) === peg$c27) {\n              s0 = peg$c27;\n              peg$currPos += 5;\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c28); }\n            }\n          }\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parsefactorial() {\n    var s0;\n\n    if (input.charCodeAt(peg$currPos) === 33) {\n      s0 = peg$c152;\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c153); }\n    }\n\n    return s0;\n  }\n\n  function peg$parsenl() {\n    var s0, s1;\n\n    peg$silentFails++;\n    if (input.charCodeAt(peg$currPos) === 10) {\n      s0 = peg$c155;\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c156); }\n    }\n    if (s0 === peg$FAILED) {\n      if (input.substr(peg$currPos, 2) === peg$c157) {\n        s0 = peg$c157;\n        peg$currPos += 2;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c158); }\n      }\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c154); }\n    }\n\n    return s0;\n  }\n\n  function peg$parsesp() {\n    var s0, s1;\n\n    peg$silentFails++;\n    if (input.charCodeAt(peg$currPos) === 32) {\n      s0 = peg$c160;\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c161); }\n    }\n    if (s0 === peg$FAILED) {\n      if (input.charCodeAt(peg$currPos) === 9) {\n        s0 = peg$c162;\n        peg$currPos++;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c163); }\n      }\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c159); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseescapedSpace() {\n    var s0;\n\n    if (input.substr(peg$currPos, 2) === peg$c164) {\n      s0 = peg$c164;\n      peg$currPos += 2;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c165); }\n    }\n\n    return s0;\n  }\n\n  function peg$parsews() {\n    var s0, s1;\n\n    peg$silentFails++;\n    s0 = peg$parsenl();\n    if (s0 === peg$FAILED) {\n      s0 = peg$parsesp();\n      if (s0 === peg$FAILED) {\n        s0 = peg$parseescapedSpace();\n      }\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c166); }\n    }\n\n    return s0;\n  }\n\n  function peg$parse_() {\n    var s0, s1;\n\n    peg$silentFails++;\n    s0 = [];\n    s1 = peg$parsews();\n    while (s1 !== peg$FAILED) {\n      s0.push(s1);\n      s1 = peg$parsews();\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c166); }\n    }\n\n    return s0;\n  }\n\n\r\n    {\r\n      let defaultLetters = [\r\n        \"alpha\", \"Alpha\", \"beta\", \"Beta\", \"gamma\",\r\n        \"Gamma\", \"pi\", \"Pi\", \"varpi\", \"phi\", \"Phi\",\r\n        \"varphi\", \"mu\", \"theta\", \"vartheta\", \"epsilon\",\r\n        \"varepsilon\", \"upsilon\", \"Upsilon\", \"zeta\", \"eta\",\r\n        \"Lambda\", \"lambda\", \"kappa\",\"omega\", \"Omega\",\r\n        \"psi\", \"Psi\", \"chi\", \"tau\", \"sigma\", \"Sigma\",\r\n        \"varsigma\", \"rho\", \"varrho\", \"Xi\", \"xi\", \"nu\",\r\n        \"imath\", \"jmath\", \"ell\", \"Re\", \"Im\", \"wp\", \"Nabla\",\r\n        \"infty\", \"aleph\", \"beth\", \"gimel\", \"comicron\", \"iota\",\r\n        \"delta\", \"thetasym\", \"omicron\", \"Delta\", \"Epsilon\",\r\n        \"Zeta\", \"Eta\", \"Theta\", \"Iota\", \"Kappa\", \"Mu\", \"Nu\",\r\n        \"Omicron\", \"Rho\", \"Tau\", \"Chi\", \"infty\", \"infin\", \"nabla\",\r\n        \"mho\", \"mathsterling\", \"surd\", \"diamonds\", \"Diamond\",\r\n        \"hearts\", \"heartsuit\", \"spades\", \"spadesuit\", \"clubsuit\",\r\n        \"clubs\", \"bigstar\", \"star\", \"blacklozenge\", \"lozenge\",\r\n        \"sharp\", \"maltese\", \"blacksquare\", \"square\", \"triangle\",\r\n        \"blacktriangle\"\r\n      ];\r\n\r\n      // default builtin functions\r\n      let defaultBIFs = [\r\n        \"sinh\", \"cosh\", \"tanh\",\r\n        \"sin\", \"cos\", \"tan\", \"sec\", \"csc\", \"cot\",\r\n        \"arcsin\", \"arccos\", \"arctan\", \"arcsec\", \"arccsc\", \"arccot\",\r\n        \"ln\"\r\n      ];\r\n\r\n      // don't import defaults from a module, because we should clone it deeply\r\n      // so let's create new defaults object every time parse is invoked\r\n      let defaultOptions = {\r\n        // singleCharName: true, // obselete\r\n        /* operatorNames: // this is for something like this: \\operatorname{floor} */\r\n        /*   [ */\r\n        /*     \"floor\", \"ceil\", \"round\", \"random\", \"factorial\", */\r\n        /*     \"sech\", \"csch\", \"coth\", \"abs\", \"arsinh\", \"arcosh\", */\r\n        /*     \"artanh\", \"arasinh\", \"aracosh\", \"aratanh\", */\r\n        /*   ], */\r\n        autoMult: true,\r\n        functions: [],\r\n        keepParen: false,\r\n        builtinLetters: defaultLetters,\r\n        builtinFunctions: defaultBIFs,\r\n        extra: {\r\n          memberExpressions: true,\r\n          sets: true,\r\n          matrices: true,\r\n          tuples: true,\r\n          intervals: true,\r\n          ellipsis: {\r\n            funcArgs: true,\r\n            sets: true,\r\n            matrices: true,\r\n            tuples: true,\r\n            infixOperators: true\r\n          }\r\n        }\r\n      };\r\n\r\n      options = merge(defaultOptions, options); /// override the default options\r\n\r\n      if (options.builtinFunctions[0] === '...')\r\n        // replace the three dots with the default things.\r\n        options.builtinFunctions.splice(0, 1, ...defaultBIFs);\r\n\r\n      if (options.builtinLetters[0] === '...')\r\n        // replace the three dots with the default things.\r\n        options.builtinLetters.splice(0, 1, ...defaultLetters);\r\n    }\r\n\r\n    let rawInput = input,\r\n        // does commaExpression contains ellipsis\r\n        // it has to be LIFO stack, push and pop\r\n        doesContainEllipsis = [];\r\n\r\n    // they are static, shouldn't be controlled by options\r\n    let texOperators1 = [\r\n      \"neq\", \"approx\", \"eqsim\", \"simeq\",\r\n      \"ge\", \"geq\", \"geqq\", \"geqslant\", \"gg\", \"ggg\", \"gggtr\",\r\n      \"le\", \"leq\", \"leqq\", \"leqslant\", \"ll\", \"lll\", \"llless\",\r\n      \"notin\", \"ni\", \"in\", \"isin\"\r\n    ];\r\n\r\n    /* .forEach(n=> console.log(`    <tr>\\n      <td><code>\\\\${n}</code></td>\\n    </tr>`)) */\r\n\r\n    text = function() {\r\n      return rawInput.substring(peg$savedPos, peg$currPos);\r\n    }\r\n\r\n    input = prepareInput(input, peg$computeLocation, error);\r\n\r\n    function createNode(...args){\r\n      let n = new Node(...args);\r\n      let ellipsis = options.extra.ellipsis;\r\n      let __doesContainEllipsis = doesContainEllipsis.length && doesContainEllipsis.pop();\r\n      if(!options.autoMult && n.type === \"automult\")\r\n        error('invalid syntax, hint: missing * sign');\r\n      if (n.type === \"member expression\" && !options.extra.memberExpressions)\r\n        error(`tuples syntax is not allowed`);\r\n      if (n.type === \"tuple\") {\r\n        if (!options.extra.tuples)\r\n          error('tuples syntax is not allowed');\r\n        let ellipsisAllowed = typeof ellipsis === 'object' ? ellipsis.tuples : ellipsis;\r\n        if (__doesContainEllipsis && !ellipsisAllowed)\r\n          error('ellipsis is not allowed to be in tuples');\r\n      }\r\n      if (n.type === \"set\") {\r\n        if (!options.extra.sets)\r\n          error('sets syntax is not allowed');\r\n        let ellipsisAllowed = typeof ellipsis === 'object' ? ellipsis.sets : ellipsis;\r\n        if (__doesContainEllipsis && !ellipsisAllowed)\r\n          error('ellipsis is not allowed to be in sets');\r\n      }\r\n      if (n.type === \"matrix\") {\r\n        if (!options.extra.matrices)\r\n          error('matrices syntax is not allowed');\r\n        let ellipsisAllowed = typeof ellipsis === 'object' ? ellipsis.matrices : ellipsis;\r\n        if (__doesContainEllipsis && !ellipsisAllowed)\r\n          error('ellipsis is not allowed to be in matrices');\r\n      }\r\n      if (n.type === \"interval\") {\r\n        if (!options.extra.intervals)\r\n          error('intervals syntax is not allowed');\r\n        let ellipsisAllowed = typeof ellipsis === 'object' ? ellipsis.intervals : ellipsis;\r\n        if (__doesContainEllipsis && !ellipsisAllowed)\r\n          error('ellipsis is not allowed to be in intervals');\r\n      }\r\n      n.match = {\r\n        location: location(),\r\n        text: text(),\r\n      }\r\n      return n;\r\n    }\r\n\r\n    function check(value, rule) {\r\n      if (rule instanceof Array) {\r\n        for (let i=0; i<rule.length; i++) {\r\n          if (check(value, rule[i])) return true;\r\n        }\r\n      } else if (rule instanceof Function) {\r\n        return rule(value);\r\n      } else if (rule instanceof RegExp) {\r\n        return rule.test(value);\r\n      } else {\r\n        return value === rule;\r\n      }\r\n    }\r\n\r\n    function handleBlock(node, o, c) {\r\n\r\n      // node is expr or 1d array or 2d array\r\n      // validation, [), (], {}, [], () are allowed\r\n      if (\r\n        o === '{' && c !== \"}\" ||\r\n        o !== '{' && c === \"}\"\r\n      )\r\n        error(`unexpected brackets: \"${o} and \"${c}\"`);\r\n\r\n      // now node is 1d array or expr\r\n\r\n      // sets\r\n      if (o === \"{\") { // c is \"}\"\r\n        // set with one item\r\n        return createNode(\"set\", Array.isArray(node) ? node: [node]);\r\n      }\r\n\r\n      // tuple or interval or set\r\n      if (Array.isArray(node)) {\r\n        if (node.length === 2 && options.extra.intervals) {\r\n          // make sure not have ellpsis\r\n          if (node[0].type !== \"ellipsis\" && node[1].type !== \"ellipsis\")\r\n            return createNode(\"interval\", node, { startInclusive: o===\"[\", endInclusive: c===\"]\" });\r\n        }\r\n        if (o === \"[\" || c === \"]\")\r\n          // all possible expressions for \"[]\" are consumed here\r\n          error(`unexpected brackets: \"${o} and \"${c}\"`);\r\n        if (node.length === 2 && !options.extra.tuples)\r\n          // we may not throw here, it will throw inside createNode\r\n          // but this message is more informative\r\n          return error(\"neither tuples nor intervals are allowed\");\r\n        return createNode(\"tuple\", node);\r\n      }\r\n\r\n      // -----------| now node is expr |-----------\r\n      // all possible expressions for \"[]\" are consumed here\r\n\r\n      // extra validation, we are now dealing with \"()\"\r\n      if (o === \"[\" || c === \"]\")\r\n        error(`unexpected brackets: \"${o} and \"${c}\"`);\r\n\r\n      return options.keepParen\r\n        ? createNode(\"parentheses\", [node])\r\n        : node;\r\n\r\n    }\r\n\n\n  peg$result = peg$startRuleFunction();\n\n  if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n    return peg$result;\n  } else {\n    if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n      peg$fail(peg$endExpectation());\n    }\n\n    throw peg$buildStructuredError(\n      peg$maxFailExpected,\n      peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n      peg$maxFailPos < input.length\n        ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n        : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n    );\n  }\n}\n\nmodule.exports = {\n  SyntaxError: peg$SyntaxError,\n  parse:       peg$parse,\n  version,\n  Node\n};\n"]}