@jay-framework/compiler-jay-html 0.10.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -6415,9 +6415,8 @@ function peg$parse(input, options) {
6415
6415
  return next.reduce((acc, val) => {
6416
6416
  return [...acc, val[3]];
6417
6417
  }, [first]);
6418
- }, peg$c78 = function(template) {
6419
- let [renderFragment, isDynamic] = template;
6420
- return isDynamic ? renderFragment.map((_) => `ba(${vars.currentVar} => ${_})`).plusImport(ba) : renderFragment;
6418
+ }, peg$c78 = function(cond) {
6419
+ return cond.map((_) => `ba(${vars.currentVar} => ${_})`).plusImport(ba);
6421
6420
  }, peg$c79 = function(template) {
6422
6421
  let [renderFragment, isDynamic] = template;
6423
6422
  return isDynamic ? renderFragment.map((_) => `da(${vars.currentVar} => ${_})`).plusImport(da) : renderFragment;
@@ -6499,35 +6498,48 @@ function peg$parse(input, options) {
6499
6498
  }, peg$c96 = function(not, head) {
6500
6499
  return not ? head.render().map((_) => `!${_}`) : head.render();
6501
6500
  }, peg$c97 = function(head, oper, val) {
6501
+ return head.render().map((_) => `${_} ${oper} ${val}`);
6502
+ }, peg$c98 = function(acc) {
6503
+ return acc.render().rendered;
6504
+ }, peg$c99 = function(head, oper, val) {
6505
+ if (oper === "==")
6506
+ oper = "===";
6507
+ if (oper === "!=")
6508
+ oper = "!==";
6509
+ return head.render().map((_) => `${_} ${oper} ${val}`);
6510
+ }, peg$c100 = ".", peg$c101 = peg$literalExpectation(".", false), peg$c102 = function(head, tail) {
6511
+ let terms = [head, ...tail.map((_) => _[3])];
6512
+ return vars.resolveAccessor(terms);
6513
+ }, peg$c103 = "-", peg$c104 = peg$literalExpectation("-", false), peg$c105 = /^[0-9]/, peg$c106 = peg$classExpectation([["0", "9"]], false, false), peg$c107 = function(head, oper, val) {
6502
6514
  if (oper.length === 2)
6503
6515
  oper = oper + "=";
6504
6516
  return head.render().map((_) => `${_} ${oper} ${head.resolvedType.name}.${val}`);
6505
- }, peg$c98 = ".", peg$c99 = peg$literalExpectation(".", false), peg$c100 = function() {
6517
+ }, peg$c108 = function() {
6506
6518
  return vars.resolveAccessor(["."]);
6507
- }, peg$c101 = function(head, tail) {
6519
+ }, peg$c109 = function(head, tail) {
6508
6520
  let terms = [head, ...tail.map((_) => _[3])];
6509
6521
  let accessor = vars.resolveAccessor(terms);
6510
6522
  return accessor;
6511
- }, peg$c102 = peg$otherExpectation("integer"), peg$c103 = /^[0-9]/, peg$c104 = peg$classExpectation([["0", "9"]], false, false), peg$c105 = peg$otherExpectation("whitespace"), peg$c106 = /^[^{} \t\n\r]/, peg$c107 = peg$classExpectation(["{", "}", " ", " ", "\n", "\r"], true, false), peg$c108 = function() {
6523
+ }, peg$c110 = peg$otherExpectation("integer"), peg$c111 = peg$otherExpectation("whitespace"), peg$c112 = /^[^{} \t\n\r]/, peg$c113 = peg$classExpectation(["{", "}", " ", " ", "\n", "\r"], true, false), peg$c114 = function() {
6512
6524
  return text2();
6513
- }, peg$c109 = "!", peg$c110 = peg$literalExpectation("!", false), peg$c111 = "===", peg$c112 = peg$literalExpectation("===", false), peg$c113 = "!==", peg$c114 = peg$literalExpectation("!==", false), peg$c115 = "==", peg$c116 = peg$literalExpectation("==", false), peg$c117 = "!=", peg$c118 = peg$literalExpectation("!=", false), peg$c119 = function(name) {
6525
+ }, peg$c115 = "!", peg$c116 = peg$literalExpectation("!", false), peg$c117 = "===", peg$c118 = peg$literalExpectation("===", false), peg$c119 = "!==", peg$c120 = peg$literalExpectation("!==", false), peg$c121 = "==", peg$c122 = peg$literalExpectation("==", false), peg$c123 = "!=", peg$c124 = peg$literalExpectation("!=", false), peg$c125 = "<=", peg$c126 = peg$literalExpectation("<=", false), peg$c127 = ">=", peg$c128 = peg$literalExpectation(">=", false), peg$c129 = "<", peg$c130 = peg$literalExpectation("<", false), peg$c131 = ">", peg$c132 = peg$literalExpectation(">", false), peg$c133 = function(name) {
6514
6526
  return text2();
6515
- }, peg$c120 = peg$otherExpectation("identifier"), peg$c121 = function(head, tail) {
6527
+ }, peg$c134 = peg$otherExpectation("identifier"), peg$c135 = function(head, tail) {
6516
6528
  return {
6517
6529
  type: "Identifier",
6518
6530
  name: head + tail.join("")
6519
6531
  };
6520
- }, peg$c122 = "$", peg$c123 = peg$literalExpectation("$", false), peg$c124 = "_", peg$c125 = peg$literalExpectation("_", false), peg$c126 = "\\", peg$c127 = peg$literalExpectation("\\", false), peg$c128 = function(sequence) {
6532
+ }, peg$c136 = "$", peg$c137 = peg$literalExpectation("$", false), peg$c138 = "_", peg$c139 = peg$literalExpectation("_", false), peg$c140 = "\\", peg$c141 = peg$literalExpectation("\\", false), peg$c142 = function(sequence) {
6521
6533
  return sequence;
6522
- }, peg$c129 = "‌", peg$c130 = peg$literalExpectation("‌", false), peg$c131 = "‍", peg$c132 = peg$literalExpectation("‍", false), peg$c133 = "u", peg$c134 = peg$literalExpectation("u", false), peg$c135 = function(digits) {
6534
+ }, peg$c143 = "‌", peg$c144 = peg$literalExpectation("‌", false), peg$c145 = "‍", peg$c146 = peg$literalExpectation("‍", false), peg$c147 = "u", peg$c148 = peg$literalExpectation("u", false), peg$c149 = function(digits) {
6523
6535
  return String.fromCharCode(parseInt(digits, 16));
6524
- }, peg$c136 = function() {
6536
+ }, peg$c150 = function() {
6525
6537
  return { type: "Literal", value: null };
6526
- }, peg$c137 = function() {
6538
+ }, peg$c151 = function() {
6527
6539
  return { type: "Literal", value: true };
6528
- }, peg$c138 = function() {
6540
+ }, peg$c152 = function() {
6529
6541
  return { type: "Literal", value: false };
6530
- }, peg$c139 = /^[A-Z\xC0-\xD6\xD8-\xDE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178-\u0179\u017B\u017D\u0181-\u0182\u0184\u0186-\u0187\u0189-\u018B\u018E-\u0191\u0193-\u0194\u0196-\u0198\u019C-\u019D\u019F-\u01A0\u01A2\u01A4\u01A6-\u01A7\u01A9\u01AC\u01AE-\u01AF\u01B1-\u01B3\u01B5\u01B7-\u01B8\u01BC\u01C4\u01C7\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A-\u023B\u023D-\u023E\u0241\u0243-\u0246\u0248\u024A\u024C\u024E\u0370\u0372\u0376\u037F\u0386\u0388-\u038A\u038C\u038E-\u038F\u0391-\u03A1\u03A3-\u03AB\u03CF\u03D2-\u03D4\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F4\u03F7\u03F9-\u03FA\u03FD-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0-\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0528\u052A\u052C\u052E\u0531-\u0556\u10A0-\u10C5\u10C7\u10CD\u13A0-\u13F5\u1C90-\u1CBA\u1CBD-\u1CBF\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9E\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1FB8-\u1FBB\u1FC8-\u1FCB\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFB\u2102\u2107\u210B-\u210D\u2110-\u2112\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u2130-\u2133\u213E-\u213F\u2145\u2183\u2C00-\u2C2E\u2C60\u2C62-\u2C64\u2C67\u2C69\u2C6B\u2C6D-\u2C70\u2C72\u2C75\u2C7E-\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77D-\uA77E\uA780\uA782\uA784\uA786\uA78B\uA78D\uA790\uA792\uA796\uA798\uA79A\uA79C\uA79E\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7AA-\uA7AE\uA7B0-\uA7B4\uA7B6\uA7B8\uFF21-\uFF3A]/, peg$c140 = peg$classExpectation([["A", "Z"], ["À", "Ö"], ["Ø", "Þ"], "Ā", "Ă", "Ą", "Ć", "Ĉ", "Ċ", "Č", "Ď", "Đ", "Ē", "Ĕ", "Ė", "Ę", "Ě", "Ĝ", "Ğ", "Ġ", "Ģ", "Ĥ", "Ħ", "Ĩ", "Ī", "Ĭ", "Į", "İ", "IJ", "Ĵ", "Ķ", "Ĺ", "Ļ", "Ľ", "Ŀ", "Ł", "Ń", "Ņ", "Ň", "Ŋ", "Ō", "Ŏ", "Ő", "Œ", "Ŕ", "Ŗ", "Ř", "Ś", "Ŝ", "Ş", "Š", "Ţ", "Ť", "Ŧ", "Ũ", "Ū", "Ŭ", "Ů", "Ű", "Ų", "Ŵ", "Ŷ", ["Ÿ", "Ź"], "Ż", "Ž", ["Ɓ", "Ƃ"], "Ƅ", ["Ɔ", "Ƈ"], ["Ɖ", "Ƌ"], ["Ǝ", "Ƒ"], ["Ɠ", "Ɣ"], ["Ɩ", "Ƙ"], ["Ɯ", "Ɲ"], ["Ɵ", "Ơ"], "Ƣ", "Ƥ", ["Ʀ", "Ƨ"], "Ʃ", "Ƭ", ["Ʈ", "Ư"], ["Ʊ", "Ƴ"], "Ƶ", ["Ʒ", "Ƹ"], "Ƽ", "DŽ", "LJ", "NJ", "Ǎ", "Ǐ", "Ǒ", "Ǔ", "Ǖ", "Ǘ", "Ǚ", "Ǜ", "Ǟ", "Ǡ", "Ǣ", "Ǥ", "Ǧ", "Ǩ", "Ǫ", "Ǭ", "Ǯ", "DZ", "Ǵ", ["Ƕ", "Ǹ"], "Ǻ", "Ǽ", "Ǿ", "Ȁ", "Ȃ", "Ȅ", "Ȇ", "Ȉ", "Ȋ", "Ȍ", "Ȏ", "Ȑ", "Ȓ", "Ȕ", "Ȗ", "Ș", "Ț", "Ȝ", "Ȟ", "Ƞ", "Ȣ", "Ȥ", "Ȧ", "Ȩ", "Ȫ", "Ȭ", "Ȯ", "Ȱ", "Ȳ", ["Ⱥ", "Ȼ"], ["Ƚ", "Ⱦ"], "Ɂ", ["Ƀ", "Ɇ"], "Ɉ", "Ɋ", "Ɍ", "Ɏ", "Ͱ", "Ͳ", "Ͷ", "Ϳ", "Ά", ["Έ", "Ί"], "Ό", ["Ύ", "Ώ"], ["Α", "Ρ"], ["Σ", "Ϋ"], "Ϗ", ["ϒ", "ϔ"], "Ϙ", "Ϛ", "Ϝ", "Ϟ", "Ϡ", "Ϣ", "Ϥ", "Ϧ", "Ϩ", "Ϫ", "Ϭ", "Ϯ", "ϴ", "Ϸ", ["Ϲ", "Ϻ"], ["Ͻ", "Я"], "Ѡ", "Ѣ", "Ѥ", "Ѧ", "Ѩ", "Ѫ", "Ѭ", "Ѯ", "Ѱ", "Ѳ", "Ѵ", "Ѷ", "Ѹ", "Ѻ", "Ѽ", "Ѿ", "Ҁ", "Ҋ", "Ҍ", "Ҏ", "Ґ", "Ғ", "Ҕ", "Җ", "Ҙ", "Қ", "Ҝ", "Ҟ", "Ҡ", "Ң", "Ҥ", "Ҧ", "Ҩ", "Ҫ", "Ҭ", "Ү", "Ұ", "Ҳ", "Ҵ", "Ҷ", "Ҹ", "Һ", "Ҽ", "Ҿ", ["Ӏ", "Ӂ"], "Ӄ", "Ӆ", "Ӈ", "Ӊ", "Ӌ", "Ӎ", "Ӑ", "Ӓ", "Ӕ", "Ӗ", "Ә", "Ӛ", "Ӝ", "Ӟ", "Ӡ", "Ӣ", "Ӥ", "Ӧ", "Ө", "Ӫ", "Ӭ", "Ӯ", "Ӱ", "Ӳ", "Ӵ", "Ӷ", "Ӹ", "Ӻ", "Ӽ", "Ӿ", "Ԁ", "Ԃ", "Ԅ", "Ԇ", "Ԉ", "Ԋ", "Ԍ", "Ԏ", "Ԑ", "Ԓ", "Ԕ", "Ԗ", "Ԙ", "Ԛ", "Ԝ", "Ԟ", "Ԡ", "Ԣ", "Ԥ", "Ԧ", "Ԩ", "Ԫ", "Ԭ", "Ԯ", ["Ա", "Ֆ"], ["Ⴀ", "Ⴥ"], "Ⴧ", "Ⴭ", ["Ꭰ", "Ᏽ"], ["Ა", "Ჺ"], ["Ჽ", "Ჿ"], "Ḁ", "Ḃ", "Ḅ", "Ḇ", "Ḉ", "Ḋ", "Ḍ", "Ḏ", "Ḑ", "Ḓ", "Ḕ", "Ḗ", "Ḙ", "Ḛ", "Ḝ", "Ḟ", "Ḡ", "Ḣ", "Ḥ", "Ḧ", "Ḩ", "Ḫ", "Ḭ", "Ḯ", "Ḱ", "Ḳ", "Ḵ", "Ḷ", "Ḹ", "Ḻ", "Ḽ", "Ḿ", "Ṁ", "Ṃ", "Ṅ", "Ṇ", "Ṉ", "Ṋ", "Ṍ", "Ṏ", "Ṑ", "Ṓ", "Ṕ", "Ṗ", "Ṙ", "Ṛ", "Ṝ", "Ṟ", "Ṡ", "Ṣ", "Ṥ", "Ṧ", "Ṩ", "Ṫ", "Ṭ", "Ṯ", "Ṱ", "Ṳ", "Ṵ", "Ṷ", "Ṹ", "Ṻ", "Ṽ", "Ṿ", "Ẁ", "Ẃ", "Ẅ", "Ẇ", "Ẉ", "Ẋ", "Ẍ", "Ẏ", "Ẑ", "Ẓ", "Ẕ", "ẞ", "Ạ", "Ả", "Ấ", "Ầ", "Ẩ", "Ẫ", "Ậ", "Ắ", "Ằ", "Ẳ", "Ẵ", "Ặ", "Ẹ", "Ẻ", "Ẽ", "Ế", "Ề", "Ể", "Ễ", "Ệ", "Ỉ", "Ị", "Ọ", "Ỏ", "Ố", "Ồ", "Ổ", "Ỗ", "Ộ", "Ớ", "Ờ", "Ở", "Ỡ", "Ợ", "Ụ", "Ủ", "Ứ", "Ừ", "Ử", "Ữ", "Ự", "Ỳ", "Ỵ", "Ỷ", "Ỹ", "Ỻ", "Ỽ", "Ỿ", ["Ἀ", "Ἇ"], ["Ἐ", "Ἕ"], ["Ἠ", "Ἧ"], ["Ἰ", "Ἷ"], ["Ὀ", "Ὅ"], "Ὑ", "Ὓ", "Ὕ", "Ὗ", ["Ὠ", "Ὧ"], ["Ᾰ", "Ά"], ["Ὲ", "Ή"], ["Ῐ", "Ί"], ["Ῠ", "Ῥ"], ["Ὸ", "Ώ"], "ℂ", "ℇ", ["ℋ", "ℍ"], ["ℐ", "ℒ"], "ℕ", ["ℙ", "ℝ"], "ℤ", "Ω", "ℨ", ["K", "ℭ"], ["ℰ", "ℳ"], ["ℾ", "ℿ"], "ⅅ", "Ↄ", ["Ⰰ", "Ⱞ"], "Ⱡ", ["Ɫ", "Ɽ"], "Ⱨ", "Ⱪ", "Ⱬ", ["Ɑ", "Ɒ"], "Ⱳ", "Ⱶ", ["Ȿ", "Ⲁ"], "Ⲃ", "Ⲅ", "Ⲇ", "Ⲉ", "Ⲋ", "Ⲍ", "Ⲏ", "Ⲑ", "Ⲓ", "Ⲕ", "Ⲗ", "Ⲙ", "Ⲛ", "Ⲝ", "Ⲟ", "Ⲡ", "Ⲣ", "Ⲥ", "Ⲧ", "Ⲩ", "Ⲫ", "Ⲭ", "Ⲯ", "Ⲱ", "Ⲳ", "Ⲵ", "Ⲷ", "Ⲹ", "Ⲻ", "Ⲽ", "Ⲿ", "Ⳁ", "Ⳃ", "Ⳅ", "Ⳇ", "Ⳉ", "Ⳋ", "Ⳍ", "Ⳏ", "Ⳑ", "Ⳓ", "Ⳕ", "Ⳗ", "Ⳙ", "Ⳛ", "Ⳝ", "Ⳟ", "Ⳡ", "Ⳣ", "Ⳬ", "Ⳮ", "Ⳳ", "Ꙁ", "Ꙃ", "Ꙅ", "Ꙇ", "Ꙉ", "Ꙋ", "Ꙍ", "Ꙏ", "Ꙑ", "Ꙓ", "Ꙕ", "Ꙗ", "Ꙙ", "Ꙛ", "Ꙝ", "Ꙟ", "Ꙡ", "Ꙣ", "Ꙥ", "Ꙧ", "Ꙩ", "Ꙫ", "Ꙭ", "Ꚁ", "Ꚃ", "Ꚅ", "Ꚇ", "Ꚉ", "Ꚋ", "Ꚍ", "Ꚏ", "Ꚑ", "Ꚓ", "Ꚕ", "Ꚗ", "Ꚙ", "Ꚛ", "Ꜣ", "Ꜥ", "Ꜧ", "Ꜩ", "Ꜫ", "Ꜭ", "Ꜯ", "Ꜳ", "Ꜵ", "Ꜷ", "Ꜹ", "Ꜻ", "Ꜽ", "Ꜿ", "Ꝁ", "Ꝃ", "Ꝅ", "Ꝇ", "Ꝉ", "Ꝋ", "Ꝍ", "Ꝏ", "Ꝑ", "Ꝓ", "Ꝕ", "Ꝗ", "Ꝙ", "Ꝛ", "Ꝝ", "Ꝟ", "Ꝡ", "Ꝣ", "Ꝥ", "Ꝧ", "Ꝩ", "Ꝫ", "Ꝭ", "Ꝯ", "Ꝺ", "Ꝼ", ["Ᵹ", "Ꝿ"], "Ꞁ", "Ꞃ", "Ꞅ", "Ꞇ", "Ꞌ", "Ɥ", "Ꞑ", "Ꞓ", "Ꞗ", "Ꞙ", "Ꞛ", "Ꞝ", "Ꞟ", "Ꞡ", "Ꞣ", "Ꞥ", "Ꞧ", "Ꞩ", ["Ɦ", "Ɪ"], ["Ʞ", "Ꞵ"], "Ꞷ", "Ꞹ", ["A", "Z"]], false, false), peg$c141 = /^[a-z\xB5\xDF-\xF6\xF8-\xFF\u0101\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127\u0129\u012B\u012D\u012F\u0131\u0133\u0135\u0137-\u0138\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148-\u0149\u014B\u014D\u014F\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175\u0177\u017A\u017C\u017E-\u0180\u0183\u0185\u0188\u018C-\u018D\u0192\u0195\u0199-\u019B\u019E\u01A1\u01A3\u01A5\u01A8\u01AA-\u01AB\u01AD\u01B0\u01B4\u01B6\u01B9-\u01BA\u01BD-\u01BF\u01C6\u01C9\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC-\u01DD\u01DF\u01E1\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF-\u01F0\u01F3\u01F5\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u0221\u0223\u0225\u0227\u0229\u022B\u022D\u022F\u0231\u0233-\u0239\u023C\u023F-\u0240\u0242\u0247\u0249\u024B\u024D\u024F-\u0293\u0295-\u02AF\u0371\u0373\u0377\u037B-\u037D\u0390\u03AC-\u03CE\u03D0-\u03D1\u03D5-\u03D7\u03D9\u03DB\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF-\u03F3\u03F5\u03F8\u03FB-\u03FC\u0430-\u045F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04C2\u04C4\u04C6\u04C8\u04CA\u04CC\u04CE-\u04CF\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0527\u0529\u052B\u052D\u052F\u0560-\u0588\u10D0-\u10FA\u10FD-\u10FF\u13F8-\u13FD\u1C80-\u1C88\u1D00-\u1D2B\u1D6B-\u1D77\u1D79-\u1D9A\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95-\u1E9D\u1E9F\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF-\u1F07\u1F10-\u1F15\u1F20-\u1F27\u1F30-\u1F37\u1F40-\u1F45\u1F50-\u1F57\u1F60-\u1F67\u1F70-\u1F7D\u1F80-\u1F87\u1F90-\u1F97\u1FA0-\u1FA7\u1FB0-\u1FB4\u1FB6-\u1FB7\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FC7\u1FD0-\u1FD3\u1FD6-\u1FD7\u1FE0-\u1FE7\u1FF2-\u1FF4\u1FF6-\u1FF7\u210A\u210E-\u210F\u2113\u212F\u2134\u2139\u213C-\u213D\u2146-\u2149\u214E\u2184\u2C30-\u2C5E\u2C61\u2C65-\u2C66\u2C68\u2C6A\u2C6C\u2C71\u2C73-\u2C74\u2C76-\u2C7B\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3-\u2CE4\u2CEC\u2CEE\u2CF3\u2D00-\u2D25\u2D27\u2D2D\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA699\uA69B\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F-\uA731\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F\uA771-\uA778\uA77A\uA77C\uA77F\uA781\uA783\uA785\uA787\uA78C\uA78E\uA791\uA793-\uA795\uA797\uA799\uA79B\uA79D\uA79F\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9\uA7AF\uA7B5\uA7B7\uA7B9\uA7FA\uAB30-\uAB5A\uAB60-\uAB65\uAB70-\uABBF\uFB00-\uFB06\uFB13-\uFB17\uFF41-\uFF5A]/, peg$c142 = peg$classExpectation([["a", "z"], "µ", ["ß", "ö"], ["ø", "ÿ"], "ā", "ă", "ą", "ć", "ĉ", "ċ", "č", "ď", "đ", "ē", "ĕ", "ė", "ę", "ě", "ĝ", "ğ", "ġ", "ģ", "ĥ", "ħ", "ĩ", "ī", "ĭ", "į", "ı", "ij", "ĵ", ["ķ", "ĸ"], "ĺ", "ļ", "ľ", "ŀ", "ł", "ń", "ņ", ["ň", "ʼn"], "ŋ", "ō", "ŏ", "ő", "œ", "ŕ", "ŗ", "ř", "ś", "ŝ", "ş", "š", "ţ", "ť", "ŧ", "ũ", "ū", "ŭ", "ů", "ű", "ų", "ŵ", "ŷ", "ź", "ż", ["ž", "ƀ"], "ƃ", "ƅ", "ƈ", ["ƌ", "ƍ"], "ƒ", "ƕ", ["ƙ", "ƛ"], "ƞ", "ơ", "ƣ", "ƥ", "ƨ", ["ƪ", "ƫ"], "ƭ", "ư", "ƴ", "ƶ", ["ƹ", "ƺ"], ["ƽ", "ƿ"], "dž", "lj", "nj", "ǎ", "ǐ", "ǒ", "ǔ", "ǖ", "ǘ", "ǚ", ["ǜ", "ǝ"], "ǟ", "ǡ", "ǣ", "ǥ", "ǧ", "ǩ", "ǫ", "ǭ", ["ǯ", "ǰ"], "dz", "ǵ", "ǹ", "ǻ", "ǽ", "ǿ", "ȁ", "ȃ", "ȅ", "ȇ", "ȉ", "ȋ", "ȍ", "ȏ", "ȑ", "ȓ", "ȕ", "ȗ", "ș", "ț", "ȝ", "ȟ", "ȡ", "ȣ", "ȥ", "ȧ", "ȩ", "ȫ", "ȭ", "ȯ", "ȱ", ["ȳ", "ȹ"], "ȼ", ["ȿ", "ɀ"], "ɂ", "ɇ", "ɉ", "ɋ", "ɍ", ["ɏ", "ʓ"], ["ʕ", "ʯ"], "ͱ", "ͳ", "ͷ", ["ͻ", "ͽ"], "ΐ", ["ά", "ώ"], ["ϐ", "ϑ"], ["ϕ", "ϗ"], "ϙ", "ϛ", "ϝ", "ϟ", "ϡ", "ϣ", "ϥ", "ϧ", "ϩ", "ϫ", "ϭ", ["ϯ", "ϳ"], "ϵ", "ϸ", ["ϻ", "ϼ"], ["а", "џ"], "ѡ", "ѣ", "ѥ", "ѧ", "ѩ", "ѫ", "ѭ", "ѯ", "ѱ", "ѳ", "ѵ", "ѷ", "ѹ", "ѻ", "ѽ", "ѿ", "ҁ", "ҋ", "ҍ", "ҏ", "ґ", "ғ", "ҕ", "җ", "ҙ", "қ", "ҝ", "ҟ", "ҡ", "ң", "ҥ", "ҧ", "ҩ", "ҫ", "ҭ", "ү", "ұ", "ҳ", "ҵ", "ҷ", "ҹ", "һ", "ҽ", "ҿ", "ӂ", "ӄ", "ӆ", "ӈ", "ӊ", "ӌ", ["ӎ", "ӏ"], "ӑ", "ӓ", "ӕ", "ӗ", "ә", "ӛ", "ӝ", "ӟ", "ӡ", "ӣ", "ӥ", "ӧ", "ө", "ӫ", "ӭ", "ӯ", "ӱ", "ӳ", "ӵ", "ӷ", "ӹ", "ӻ", "ӽ", "ӿ", "ԁ", "ԃ", "ԅ", "ԇ", "ԉ", "ԋ", "ԍ", "ԏ", "ԑ", "ԓ", "ԕ", "ԗ", "ԙ", "ԛ", "ԝ", "ԟ", "ԡ", "ԣ", "ԥ", "ԧ", "ԩ", "ԫ", "ԭ", "ԯ", ["ՠ", "ֈ"], ["ა", "ჺ"], ["ჽ", "ჿ"], ["ᏸ", "ᏽ"], ["ᲀ", "ᲈ"], ["ᴀ", "ᴫ"], ["ᵫ", "ᵷ"], ["ᵹ", "ᶚ"], "ḁ", "ḃ", "ḅ", "ḇ", "ḉ", "ḋ", "ḍ", "ḏ", "ḑ", "ḓ", "ḕ", "ḗ", "ḙ", "ḛ", "ḝ", "ḟ", "ḡ", "ḣ", "ḥ", "ḧ", "ḩ", "ḫ", "ḭ", "ḯ", "ḱ", "ḳ", "ḵ", "ḷ", "ḹ", "ḻ", "ḽ", "ḿ", "ṁ", "ṃ", "ṅ", "ṇ", "ṉ", "ṋ", "ṍ", "ṏ", "ṑ", "ṓ", "ṕ", "ṗ", "ṙ", "ṛ", "ṝ", "ṟ", "ṡ", "ṣ", "ṥ", "ṧ", "ṩ", "ṫ", "ṭ", "ṯ", "ṱ", "ṳ", "ṵ", "ṷ", "ṹ", "ṻ", "ṽ", "ṿ", "ẁ", "ẃ", "ẅ", "ẇ", "ẉ", "ẋ", "ẍ", "ẏ", "ẑ", "ẓ", ["ẕ", "ẝ"], "ẟ", "ạ", "ả", "ấ", "ầ", "ẩ", "ẫ", "ậ", "ắ", "ằ", "ẳ", "ẵ", "ặ", "ẹ", "ẻ", "ẽ", "ế", "ề", "ể", "ễ", "ệ", "ỉ", "ị", "ọ", "ỏ", "ố", "ồ", "ổ", "ỗ", "ộ", "ớ", "ờ", "ở", "ỡ", "ợ", "ụ", "ủ", "ứ", "ừ", "ử", "ữ", "ự", "ỳ", "ỵ", "ỷ", "ỹ", "ỻ", "ỽ", ["ỿ", "ἇ"], ["ἐ", "ἕ"], ["ἠ", "ἧ"], ["ἰ", "ἷ"], ["ὀ", "ὅ"], ["ὐ", "ὗ"], ["ὠ", "ὧ"], ["ὰ", "ώ"], ["ᾀ", "ᾇ"], ["ᾐ", "ᾗ"], ["ᾠ", "ᾧ"], ["ᾰ", "ᾴ"], ["ᾶ", "ᾷ"], "ι", ["ῂ", "ῄ"], ["ῆ", "ῇ"], ["ῐ", "ΐ"], ["ῖ", "ῗ"], ["ῠ", "ῧ"], ["ῲ", "ῴ"], ["ῶ", "ῷ"], "ℊ", ["ℎ", "ℏ"], "ℓ", "ℯ", "ℴ", "ℹ", ["ℼ", "ℽ"], ["ⅆ", "ⅉ"], "ⅎ", "ↄ", ["ⰰ", "ⱞ"], "ⱡ", ["ⱥ", "ⱦ"], "ⱨ", "ⱪ", "ⱬ", "ⱱ", ["ⱳ", "ⱴ"], ["ⱶ", "ⱻ"], "ⲁ", "ⲃ", "ⲅ", "ⲇ", "ⲉ", "ⲋ", "ⲍ", "ⲏ", "ⲑ", "ⲓ", "ⲕ", "ⲗ", "ⲙ", "ⲛ", "ⲝ", "ⲟ", "ⲡ", "ⲣ", "ⲥ", "ⲧ", "ⲩ", "ⲫ", "ⲭ", "ⲯ", "ⲱ", "ⲳ", "ⲵ", "ⲷ", "ⲹ", "ⲻ", "ⲽ", "ⲿ", "ⳁ", "ⳃ", "ⳅ", "ⳇ", "ⳉ", "ⳋ", "ⳍ", "ⳏ", "ⳑ", "ⳓ", "ⳕ", "ⳗ", "ⳙ", "ⳛ", "ⳝ", "ⳟ", "ⳡ", ["ⳣ", "ⳤ"], "ⳬ", "ⳮ", "ⳳ", ["ⴀ", "ⴥ"], "ⴧ", "ⴭ", "ꙁ", "ꙃ", "ꙅ", "ꙇ", "ꙉ", "ꙋ", "ꙍ", "ꙏ", "ꙑ", "ꙓ", "ꙕ", "ꙗ", "ꙙ", "ꙛ", "ꙝ", "ꙟ", "ꙡ", "ꙣ", "ꙥ", "ꙧ", "ꙩ", "ꙫ", "ꙭ", "ꚁ", "ꚃ", "ꚅ", "ꚇ", "ꚉ", "ꚋ", "ꚍ", "ꚏ", "ꚑ", "ꚓ", "ꚕ", "ꚗ", "ꚙ", "ꚛ", "ꜣ", "ꜥ", "ꜧ", "ꜩ", "ꜫ", "ꜭ", ["ꜯ", "ꜱ"], "ꜳ", "ꜵ", "ꜷ", "ꜹ", "ꜻ", "ꜽ", "ꜿ", "ꝁ", "ꝃ", "ꝅ", "ꝇ", "ꝉ", "ꝋ", "ꝍ", "ꝏ", "ꝑ", "ꝓ", "ꝕ", "ꝗ", "ꝙ", "ꝛ", "ꝝ", "ꝟ", "ꝡ", "ꝣ", "ꝥ", "ꝧ", "ꝩ", "ꝫ", "ꝭ", "ꝯ", ["ꝱ", "ꝸ"], "ꝺ", "ꝼ", "ꝿ", "ꞁ", "ꞃ", "ꞅ", "ꞇ", "ꞌ", "ꞎ", "ꞑ", ["ꞓ", "ꞕ"], "ꞗ", "ꞙ", "ꞛ", "ꞝ", "ꞟ", "ꞡ", "ꞣ", "ꞥ", "ꞧ", "ꞩ", "ꞯ", "ꞵ", "ꞷ", "ꞹ", "ꟺ", ["ꬰ", "ꭚ"], ["ꭠ", "ꭥ"], ["ꭰ", "ꮿ"], ["ff", "st"], ["ﬓ", "ﬗ"], ["a", "z"]], false, false), peg$c143 = /^[\u01C5\u01C8\u01CB\u01F2\u1F88-\u1F8F\u1F98-\u1F9F\u1FA8-\u1FAF\u1FBC\u1FCC\u1FFC]/, peg$c144 = peg$classExpectation(["Dž", "Lj", "Nj", "Dz", ["ᾈ", "ᾏ"], ["ᾘ", "ᾟ"], ["ᾨ", "ᾯ"], "ᾼ", "ῌ", "ῼ"], false, false), peg$c145 = /^[\u02B0-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0374\u037A\u0559\u0640\u06E5-\u06E6\u07F4-\u07F5\u07FA\u081A\u0824\u0828\u0971\u0E46\u0EC6\u10FC\u17D7\u1843\u1AA7\u1C78-\u1C7D\u1D2C-\u1D6A\u1D78\u1D9B-\u1DBF\u2071\u207F\u2090-\u209C\u2C7C-\u2C7D\u2D6F\u2E2F\u3005\u3031-\u3035\u303B\u309D-\u309E\u30FC-\u30FE\uA015\uA4F8-\uA4FD\uA60C\uA67F\uA69C-\uA69D\uA717-\uA71F\uA770\uA788\uA7F8-\uA7F9\uA9CF\uA9E6\uAA70\uAADD\uAAF3-\uAAF4\uAB5C-\uAB5F\uFF70\uFF9E-\uFF9F]/, peg$c146 = peg$classExpectation([["ʰ", "ˁ"], ["ˆ", "ˑ"], ["ˠ", "ˤ"], "ˬ", "ˮ", "ʹ", "ͺ", "ՙ", "ـ", ["ۥ", "ۦ"], ["ߴ", "ߵ"], "ߺ", "ࠚ", "ࠤ", "ࠨ", "ॱ", "ๆ", "ໆ", "ჼ", "ៗ", "ᡃ", "ᪧ", ["ᱸ", "ᱽ"], ["ᴬ", "ᵪ"], "ᵸ", ["ᶛ", "ᶿ"], "ⁱ", "ⁿ", ["ₐ", "ₜ"], ["ⱼ", "ⱽ"], "ⵯ", "ⸯ", "々", ["〱", "〵"], "〻", ["ゝ", "ゞ"], ["ー", "ヾ"], "ꀕ", ["ꓸ", "ꓽ"], "ꘌ", "ꙿ", ["ꚜ", "ꚝ"], ["ꜗ", "ꜟ"], "ꝰ", "ꞈ", ["ꟸ", "ꟹ"], "ꧏ", "ꧦ", "ꩰ", "ꫝ", ["ꫳ", "ꫴ"], ["ꭜ", "ꭟ"], "ー", ["゙", "゚"]], false, false), peg$c147 = /^[\xAA\xBA\u01BB\u01C0-\u01C3\u0294\u05D0-\u05EA\u05EF-\u05F2\u0620-\u063F\u0641-\u064A\u066E-\u066F\u0671-\u06D3\u06D5\u06EE-\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u0800-\u0815\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0972-\u0980\u0985-\u098C\u098F-\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC-\u09DD\u09DF-\u09E1\u09F0-\u09F1\u09FC\u0A05-\u0A0A\u0A0F-\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32-\u0A33\u0A35-\u0A36\u0A38-\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2-\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0-\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F-\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32-\u0B33\u0B35-\u0B39\u0B3D\u0B5C-\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99-\u0B9A\u0B9C\u0B9E-\u0B9F\u0BA3-\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60-\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0-\u0CE1\u0CF1-\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32-\u0E33\u0E40-\u0E45\u0E81-\u0E82\u0E84\u0E87-\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA-\u0EAB\u0EAD-\u0EB0\u0EB2-\u0EB3\u0EBD\u0EC0-\u0EC4\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065-\u1066\u106E-\u1070\u1075-\u1081\u108E\u1100-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17DC\u1820-\u1842\u1844-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE-\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C77\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5-\u1CF6\u2135-\u2138\u2D30-\u2D67\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3006\u303C\u3041-\u3096\u309F\u30A1-\u30FA\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEF\uA000-\uA014\uA016-\uA48C\uA4D0-\uA4F7\uA500-\uA60B\uA610-\uA61F\uA62A-\uA62B\uA66E\uA6A0-\uA6E5\uA78F\uA7F7\uA7FB-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD-\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9E0-\uA9E4\uA9E7-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA6F\uAA71-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5-\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADC\uAAE0-\uAAEA\uAAF2\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF66-\uFF6F\uFF71-\uFF9D\uFFA0-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/, peg$c148 = peg$classExpectation(["ª", "º", "ƻ", ["ǀ", "ǃ"], "ʔ", ["א", "ת"], ["ׯ", "ײ"], ["ؠ", "ؿ"], ["ف", "ي"], ["ٮ", "ٯ"], ["ٱ", "ۓ"], "ە", ["ۮ", "ۯ"], ["ۺ", "ۼ"], "ۿ", "ܐ", ["ܒ", "ܯ"], ["ݍ", "ޥ"], "ޱ", ["ߊ", "ߪ"], ["ࠀ", "ࠕ"], ["ࡀ", "ࡘ"], ["ࡠ", "ࡪ"], ["ࢠ", "ࢴ"], ["ࢶ", "ࢽ"], ["ऄ", "ह"], "ऽ", "ॐ", ["क़", "ॡ"], ["ॲ", "ঀ"], ["অ", "ঌ"], ["এ", "ঐ"], ["ও", "ন"], ["প", "র"], "ল", ["শ", "হ"], "ঽ", "ৎ", ["ড়", "ঢ়"], ["য়", "ৡ"], ["ৰ", "ৱ"], "ৼ", ["ਅ", "ਊ"], ["ਏ", "ਐ"], ["ਓ", "ਨ"], ["ਪ", "ਰ"], ["ਲ", "ਲ਼"], ["ਵ", "ਸ਼"], ["ਸ", "ਹ"], ["ਖ਼", "ੜ"], "ਫ਼", ["ੲ", "ੴ"], ["અ", "ઍ"], ["એ", "ઑ"], ["ઓ", "ન"], ["પ", "ર"], ["લ", "ળ"], ["વ", "હ"], "ઽ", "ૐ", ["ૠ", "ૡ"], "ૹ", ["ଅ", "ଌ"], ["ଏ", "ଐ"], ["ଓ", "ନ"], ["ପ", "ର"], ["ଲ", "ଳ"], ["ଵ", "ହ"], "ଽ", ["ଡ଼", "ଢ଼"], ["ୟ", "ୡ"], "ୱ", "ஃ", ["அ", "ஊ"], ["எ", "ஐ"], ["ஒ", "க"], ["ங", "ச"], "ஜ", ["ஞ", "ட"], ["ண", "த"], ["ந", "ப"], ["ம", "ஹ"], "ௐ", ["అ", "ఌ"], ["ఎ", "ఐ"], ["ఒ", "న"], ["ప", "హ"], "ఽ", ["ౘ", "ౚ"], ["ౠ", "ౡ"], "ಀ", ["ಅ", "ಌ"], ["ಎ", "ಐ"], ["ಒ", "ನ"], ["ಪ", "ಳ"], ["ವ", "ಹ"], "ಽ", "ೞ", ["ೠ", "ೡ"], ["ೱ", "ೲ"], ["അ", "ഌ"], ["എ", "ഐ"], ["ഒ", "ഺ"], "ഽ", "ൎ", ["ൔ", "ൖ"], ["ൟ", "ൡ"], ["ൺ", "ൿ"], ["අ", "ඖ"], ["ක", "න"], ["ඳ", "ර"], "ල", ["ව", "ෆ"], ["ก", "ะ"], ["า", "ำ"], ["เ", "ๅ"], ["ກ", "ຂ"], "ຄ", ["ງ", "ຈ"], "ຊ", "ຍ", ["ດ", "ທ"], ["ນ", "ຟ"], ["ມ", "ຣ"], "ລ", "ວ", ["ສ", "ຫ"], ["ອ", "ະ"], ["າ", "ຳ"], "ຽ", ["ເ", "ໄ"], ["ໜ", "ໟ"], "ༀ", ["ཀ", "ཇ"], ["ཉ", "ཬ"], ["ྈ", "ྌ"], ["က", "ဪ"], "ဿ", ["ၐ", "ၕ"], ["ၚ", "ၝ"], "ၡ", ["ၥ", "ၦ"], ["ၮ", "ၰ"], ["ၵ", "ႁ"], "ႎ", ["ᄀ", "ቈ"], ["ቊ", "ቍ"], ["ቐ", "ቖ"], "ቘ", ["ቚ", "ቝ"], ["በ", "ኈ"], ["ኊ", "ኍ"], ["ነ", "ኰ"], ["ኲ", "ኵ"], ["ኸ", "ኾ"], "ዀ", ["ዂ", "ዅ"], ["ወ", "ዖ"], ["ዘ", "ጐ"], ["ጒ", "ጕ"], ["ጘ", "ፚ"], ["ᎀ", "ᎏ"], ["ᐁ", "ᙬ"], ["ᙯ", "ᙿ"], ["ᚁ", "ᚚ"], ["ᚠ", "ᛪ"], ["ᛱ", "ᛸ"], ["ᜀ", "ᜌ"], ["ᜎ", "ᜑ"], ["ᜠ", "ᜱ"], ["ᝀ", "ᝑ"], ["ᝠ", "ᝬ"], ["ᝮ", "ᝰ"], ["ក", "ឳ"], "ៜ", ["ᠠ", "ᡂ"], ["ᡄ", "ᡸ"], ["ᢀ", "ᢄ"], ["ᢇ", "ᢨ"], "ᢪ", ["ᢰ", "ᣵ"], ["ᤀ", "ᤞ"], ["ᥐ", "ᥭ"], ["ᥰ", "ᥴ"], ["ᦀ", "ᦫ"], ["ᦰ", "ᧉ"], ["ᨀ", "ᨖ"], ["ᨠ", "ᩔ"], ["ᬅ", "ᬳ"], ["ᭅ", "ᭋ"], ["ᮃ", "ᮠ"], ["ᮮ", "ᮯ"], ["ᮺ", "ᯥ"], ["ᰀ", "ᰣ"], ["ᱍ", "ᱏ"], ["ᱚ", "ᱷ"], ["ᳩ", "ᳬ"], ["ᳮ", "ᳱ"], ["ᳵ", "ᳶ"], ["ℵ", "ℸ"], ["ⴰ", "ⵧ"], ["ⶀ", "ⶖ"], ["ⶠ", "ⶦ"], ["ⶨ", "ⶮ"], ["ⶰ", "ⶶ"], ["ⶸ", "ⶾ"], ["ⷀ", "ⷆ"], ["ⷈ", "ⷎ"], ["ⷐ", "ⷖ"], ["ⷘ", "ⷞ"], "〆", "〼", ["ぁ", "ゖ"], "ゟ", ["ァ", "ヺ"], "ヿ", ["ㄅ", "ㄯ"], ["ㄱ", "ㆎ"], ["ㆠ", "ㆺ"], ["ㇰ", "ㇿ"], ["㐀", "䶵"], ["一", "鿯"], ["ꀀ", "ꀔ"], ["ꀖ", "ꒌ"], ["ꓐ", "ꓷ"], ["ꔀ", "ꘋ"], ["ꘐ", "ꘟ"], ["ꘪ", "ꘫ"], "ꙮ", ["ꚠ", "ꛥ"], "ꞏ", "ꟷ", ["ꟻ", "ꠁ"], ["ꠃ", "ꠅ"], ["ꠇ", "ꠊ"], ["ꠌ", "ꠢ"], ["ꡀ", "ꡳ"], ["ꢂ", "ꢳ"], ["ꣲ", "ꣷ"], "ꣻ", ["ꣽ", "ꣾ"], ["ꤊ", "ꤥ"], ["ꤰ", "ꥆ"], ["ꥠ", "ꥼ"], ["ꦄ", "ꦲ"], ["ꧠ", "ꧤ"], ["ꧧ", "ꧯ"], ["ꧺ", "ꧾ"], ["ꨀ", "ꨨ"], ["ꩀ", "ꩂ"], ["ꩄ", "ꩋ"], ["ꩠ", "ꩯ"], ["ꩱ", "ꩶ"], "ꩺ", ["ꩾ", "ꪯ"], "ꪱ", ["ꪵ", "ꪶ"], ["ꪹ", "ꪽ"], "ꫀ", "ꫂ", ["ꫛ", "ꫜ"], ["ꫠ", "ꫪ"], "ꫲ", ["ꬁ", "ꬆ"], ["ꬉ", "ꬎ"], ["ꬑ", "ꬖ"], ["ꬠ", "ꬦ"], ["ꬨ", "ꬮ"], ["ꯀ", "ꯢ"], ["가", "힣"], ["ힰ", "ퟆ"], ["ퟋ", "ퟻ"], ["豈", "舘"], ["並", "龎"], "יִ", ["ײַ", "ﬨ"], ["שׁ", "זּ"], ["טּ", "לּ"], "מּ", ["נּ", "סּ"], ["ףּ", "פּ"], ["צּ", "ﮱ"], ["ﯓ", "ﴽ"], ["ﵐ", "ﶏ"], ["ﶒ", "ﷇ"], ["ﷰ", "ﷻ"], ["ﹰ", "ﹴ"], ["ﹶ", "ﻼ"], ["ヲ", "ッ"], ["ア", "ン"], ["ᅠ", "ᄒ"], ["ᅡ", "ᅦ"], ["ᅧ", "ᅬ"], ["ᅭ", "ᅲ"], ["ᅳ", "ᅵ"]], false, false), peg$c149 = /^[\u16EE-\u16F0\u2160-\u2182\u2185-\u2188\u3007\u3021-\u3029\u3038-\u303A\uA6E6-\uA6EF]/, peg$c150 = peg$classExpectation([["ᛮ", "ᛰ"], ["Ⅰ", "ↂ"], ["ↅ", "ↈ"], "〇", ["〡", "〩"], ["〸", "〺"], ["ꛦ", "ꛯ"]], false, false), peg$c151 = /^[\u0300-\u036F\u0483-\u0487\u0591-\u05BD\u05BF\u05C1-\u05C2\u05C4-\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D3-\u08E1\u08E3-\u0902\u093A\u093C\u0941-\u0948\u094D\u0951-\u0957\u0962-\u0963\u0981\u09BC\u09C1-\u09C4\u09CD\u09E2-\u09E3\u09FE\u0A01-\u0A02\u0A3C\u0A41-\u0A42\u0A47-\u0A48\u0A4B-\u0A4D\u0A51\u0A70-\u0A71\u0A75\u0A81-\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7-\u0AC8\u0ACD\u0AE2-\u0AE3\u0AFA-\u0AFF\u0B01\u0B3C\u0B3F\u0B41-\u0B44\u0B4D\u0B56\u0B62-\u0B63\u0B82\u0BC0\u0BCD\u0C00\u0C04\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55-\u0C56\u0C62-\u0C63\u0C81\u0CBC\u0CBF\u0CC6\u0CCC-\u0CCD\u0CE2-\u0CE3\u0D00-\u0D01\u0D3B-\u0D3C\u0D41-\u0D44\u0D4D\u0D62-\u0D63\u0DCA\u0DD2-\u0DD4\u0DD6\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB-\u0EBC\u0EC8-\u0ECD\u0F18-\u0F19\u0F35\u0F37\u0F39\u0F71-\u0F7E\u0F80-\u0F84\u0F86-\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032-\u1037\u1039-\u103A\u103D-\u103E\u1058-\u1059\u105E-\u1060\u1071-\u1074\u1082\u1085-\u1086\u108D\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17B4-\u17B5\u17B7-\u17BD\u17C6\u17C9-\u17D3\u17DD\u180B-\u180D\u1885-\u1886\u18A9\u1920-\u1922\u1927-\u1928\u1932\u1939-\u193B\u1A17-\u1A18\u1A1B\u1A56\u1A58-\u1A5E\u1A60\u1A62\u1A65-\u1A6C\u1A73-\u1A7C\u1A7F\u1AB0-\u1ABD\u1B00-\u1B03\u1B34\u1B36-\u1B3A\u1B3C\u1B42\u1B6B-\u1B73\u1B80-\u1B81\u1BA2-\u1BA5\u1BA8-\u1BA9\u1BAB-\u1BAD\u1BE6\u1BE8-\u1BE9\u1BED\u1BEF-\u1BF1\u1C2C-\u1C33\u1C36-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1CF4\u1CF8-\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302D\u3099-\u309A\uA66F\uA674-\uA67D\uA69E-\uA69F\uA6F0-\uA6F1\uA802\uA806\uA80B\uA825-\uA826\uA8C4-\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA951\uA980-\uA982\uA9B3\uA9B6-\uA9B9\uA9BC\uA9E5\uAA29-\uAA2E\uAA31-\uAA32\uAA35-\uAA36\uAA43\uAA4C\uAA7C\uAAB0\uAAB2-\uAAB4\uAAB7-\uAAB8\uAABE-\uAABF\uAAC1\uAAEC-\uAAED\uAAF6\uABE5\uABE8\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F]/, peg$c152 = peg$classExpectation([["̀", "ͯ"], ["҃", "҇"], ["֑", "ֽ"], "ֿ", ["ׁ", "ׂ"], ["ׄ", "ׅ"], "ׇ", ["ؐ", "ؚ"], ["ً", "ٟ"], "ٰ", ["ۖ", "ۜ"], ["۟", "ۤ"], ["ۧ", "ۨ"], ["۪", "ۭ"], "ܑ", ["ܰ", "݊"], ["ަ", "ް"], ["߫", "߳"], "߽", ["ࠖ", "࠙"], ["ࠛ", "ࠣ"], ["ࠥ", "ࠧ"], ["ࠩ", "࠭"], ["࡙", "࡛"], ["࣓", "࣡"], ["ࣣ", "ं"], "ऺ", "़", ["ु", "ै"], "्", ["॑", "ॗ"], ["ॢ", "ॣ"], "ঁ", "়", ["ু", "ৄ"], "্", ["ৢ", "ৣ"], "৾", ["ਁ", "ਂ"], "਼", ["ੁ", "ੂ"], ["ੇ", "ੈ"], ["ੋ", "੍"], "ੑ", ["ੰ", "ੱ"], "ੵ", ["ઁ", "ં"], "઼", ["ુ", "ૅ"], ["ે", "ૈ"], "્", ["ૢ", "ૣ"], ["ૺ", "૿"], "ଁ", "଼", "ି", ["ୁ", "ୄ"], "୍", "ୖ", ["ୢ", "ୣ"], "ஂ", "ீ", "்", "ఀ", "ఄ", ["ా", "ీ"], ["ె", "ై"], ["ొ", "్"], ["ౕ", "ౖ"], ["ౢ", "ౣ"], "ಁ", "಼", "ಿ", "ೆ", ["ೌ", "್"], ["ೢ", "ೣ"], ["ഀ", "ഁ"], ["഻", "഼"], ["ു", "ൄ"], "്", ["ൢ", "ൣ"], "්", ["ි", "ු"], "ූ", "ั", ["ิ", "ฺ"], ["็", "๎"], "ັ", ["ິ", "ູ"], ["ົ", "ຼ"], ["່", "ໍ"], ["༘", "༙"], "༵", "༷", "༹", ["ཱ", "ཾ"], ["ྀ", "྄"], ["྆", "྇"], ["ྍ", "ྗ"], ["ྙ", "ྼ"], "࿆", ["ိ", "ူ"], ["ဲ", "့"], ["္", "်"], ["ွ", "ှ"], ["ၘ", "ၙ"], ["ၞ", "ၠ"], ["ၱ", "ၴ"], "ႂ", ["ႅ", "ႆ"], "ႍ", "ႝ", ["፝", "፟"], ["ᜒ", "᜔"], ["ᜲ", "᜴"], ["ᝒ", "ᝓ"], ["ᝲ", "ᝳ"], ["឴", "឵"], ["ិ", "ួ"], "ំ", ["៉", "៓"], "៝", ["᠋", "᠍"], ["ᢅ", "ᢆ"], "ᢩ", ["ᤠ", "ᤢ"], ["ᤧ", "ᤨ"], "ᤲ", ["᤹", "᤻"], ["ᨗ", "ᨘ"], "ᨛ", "ᩖ", ["ᩘ", "ᩞ"], "᩠", "ᩢ", ["ᩥ", "ᩬ"], ["ᩳ", "᩼"], "᩿", ["᪰", "᪽"], ["ᬀ", "ᬃ"], "᬴", ["ᬶ", "ᬺ"], "ᬼ", "ᭂ", ["᭫", "᭳"], ["ᮀ", "ᮁ"], ["ᮢ", "ᮥ"], ["ᮨ", "ᮩ"], ["᮫", "ᮭ"], "᯦", ["ᯨ", "ᯩ"], "ᯭ", ["ᯯ", "ᯱ"], ["ᰬ", "ᰳ"], ["ᰶ", "᰷"], ["᳐", "᳒"], ["᳔", "᳠"], ["᳢", "᳨"], "᳭", "᳴", ["᳸", "᳹"], ["᷀", "᷹"], ["᷻", "᷿"], ["⃐", "⃜"], "⃡", ["⃥", "⃰"], ["⳯", "⳱"], "⵿", ["ⷠ", "ⷿ"], ["〪", "〭"], ["゙", "゚"], "꙯", ["ꙴ", "꙽"], ["ꚞ", "ꚟ"], ["꛰", "꛱"], "ꠂ", "꠆", "ꠋ", ["ꠥ", "ꠦ"], ["꣄", "ꣅ"], ["꣠", "꣱"], "ꣿ", ["ꤦ", "꤭"], ["ꥇ", "ꥑ"], ["ꦀ", "ꦂ"], "꦳", ["ꦶ", "ꦹ"], "ꦼ", "ꧥ", ["ꨩ", "ꨮ"], ["ꨱ", "ꨲ"], ["ꨵ", "ꨶ"], "ꩃ", "ꩌ", "ꩼ", "ꪰ", ["ꪲ", "ꪴ"], ["ꪷ", "ꪸ"], ["ꪾ", "꪿"], "꫁", ["ꫬ", "ꫭ"], "꫶", "ꯥ", "ꯨ", "꯭", "ﬞ", ["︀", "️"], ["︠", "︯"]], false, false), peg$c153 = /^[\u0903\u093B\u093E-\u0940\u0949-\u094C\u094E-\u094F\u0982-\u0983\u09BE-\u09C0\u09C7-\u09C8\u09CB-\u09CC\u09D7\u0A03\u0A3E-\u0A40\u0A83\u0ABE-\u0AC0\u0AC9\u0ACB-\u0ACC\u0B02-\u0B03\u0B3E\u0B40\u0B47-\u0B48\u0B4B-\u0B4C\u0B57\u0BBE-\u0BBF\u0BC1-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCC\u0BD7\u0C01-\u0C03\u0C41-\u0C44\u0C82-\u0C83\u0CBE\u0CC0-\u0CC4\u0CC7-\u0CC8\u0CCA-\u0CCB\u0CD5-\u0CD6\u0D02-\u0D03\u0D3E-\u0D40\u0D46-\u0D48\u0D4A-\u0D4C\u0D57\u0D82-\u0D83\u0DCF-\u0DD1\u0DD8-\u0DDF\u0DF2-\u0DF3\u0F3E-\u0F3F\u0F7F\u102B-\u102C\u1031\u1038\u103B-\u103C\u1056-\u1057\u1062-\u1064\u1067-\u106D\u1083-\u1084\u1087-\u108C\u108F\u109A-\u109C\u17B6\u17BE-\u17C5\u17C7-\u17C8\u1923-\u1926\u1929-\u192B\u1930-\u1931\u1933-\u1938\u1A19-\u1A1A\u1A55\u1A57\u1A61\u1A63-\u1A64\u1A6D-\u1A72\u1B04\u1B35\u1B3B\u1B3D-\u1B41\u1B43-\u1B44\u1B82\u1BA1\u1BA6-\u1BA7\u1BAA\u1BE7\u1BEA-\u1BEC\u1BEE\u1BF2-\u1BF3\u1C24-\u1C2B\u1C34-\u1C35\u1CE1\u1CF2-\u1CF3\u1CF7\u302E-\u302F\uA823-\uA824\uA827\uA880-\uA881\uA8B4-\uA8C3\uA952-\uA953\uA983\uA9B4-\uA9B5\uA9BA-\uA9BB\uA9BD-\uA9C0\uAA2F-\uAA30\uAA33-\uAA34\uAA4D\uAA7B\uAA7D\uAAEB\uAAEE-\uAAEF\uAAF5\uABE3-\uABE4\uABE6-\uABE7\uABE9-\uABEA\uABEC]/, peg$c154 = peg$classExpectation(["ः", "ऻ", ["ा", "ी"], ["ॉ", "ौ"], ["ॎ", "ॏ"], ["ং", "ঃ"], ["া", "ী"], ["ে", "ৈ"], ["ো", "ৌ"], "ৗ", "ਃ", ["ਾ", "ੀ"], "ઃ", ["ા", "ી"], "ૉ", ["ો", "ૌ"], ["ଂ", "ଃ"], "ା", "ୀ", ["େ", "ୈ"], ["ୋ", "ୌ"], "ୗ", ["ா", "ி"], ["ு", "ூ"], ["ெ", "ை"], ["ொ", "ௌ"], "ௗ", ["ఁ", "ః"], ["ు", "ౄ"], ["ಂ", "ಃ"], "ಾ", ["ೀ", "ೄ"], ["ೇ", "ೈ"], ["ೊ", "ೋ"], ["ೕ", "ೖ"], ["ം", "ഃ"], ["ാ", "ീ"], ["െ", "ൈ"], ["ൊ", "ൌ"], "ൗ", ["ං", "ඃ"], ["ා", "ෑ"], ["ෘ", "ෟ"], ["ෲ", "ෳ"], ["༾", "༿"], "ཿ", ["ါ", "ာ"], "ေ", "း", ["ျ", "ြ"], ["ၖ", "ၗ"], ["ၢ", "ၤ"], ["ၧ", "ၭ"], ["ႃ", "ႄ"], ["ႇ", "ႌ"], "ႏ", ["ႚ", "ႜ"], "ា", ["ើ", "ៅ"], ["ះ", "ៈ"], ["ᤣ", "ᤦ"], ["ᤩ", "ᤫ"], ["ᤰ", "ᤱ"], ["ᤳ", "ᤸ"], ["ᨙ", "ᨚ"], "ᩕ", "ᩗ", "ᩡ", ["ᩣ", "ᩤ"], ["ᩭ", "ᩲ"], "ᬄ", "ᬵ", "ᬻ", ["ᬽ", "ᭁ"], ["ᭃ", "᭄"], "ᮂ", "ᮡ", ["ᮦ", "ᮧ"], "᮪", "ᯧ", ["ᯪ", "ᯬ"], "ᯮ", ["᯲", "᯳"], ["ᰤ", "ᰫ"], ["ᰴ", "ᰵ"], "᳡", ["ᳲ", "ᳳ"], "᳷", ["〮", "〯"], ["ꠣ", "ꠤ"], "ꠧ", ["ꢀ", "ꢁ"], ["ꢴ", "ꣃ"], ["ꥒ", "꥓"], "ꦃ", ["ꦴ", "ꦵ"], ["ꦺ", "ꦻ"], ["ꦽ", "꧀"], ["ꨯ", "ꨰ"], ["ꨳ", "ꨴ"], "ꩍ", "ꩻ", "ꩽ", "ꫫ", ["ꫮ", "ꫯ"], "ꫵ", ["ꯣ", "ꯤ"], ["ꯦ", "ꯧ"], ["ꯩ", "ꯪ"], "꯬"], false, false), peg$c155 = /^[0-9\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29\u1040-\u1049\u1090-\u1099\u17E0-\u17E9\u1810-\u1819\u1946-\u194F\u19D0-\u19D9\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\uA620-\uA629\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19]/, peg$c156 = peg$classExpectation([["0", "9"], ["٠", "٩"], ["۰", "۹"], ["߀", "߉"], ["०", "९"], ["০", "৯"], ["੦", "੯"], ["૦", "૯"], ["୦", "୯"], ["௦", "௯"], ["౦", "౯"], ["೦", "೯"], ["൦", "൯"], ["෦", "෯"], ["๐", "๙"], ["໐", "໙"], ["༠", "༩"], ["၀", "၉"], ["႐", "႙"], ["០", "៩"], ["᠐", "᠙"], ["᥆", "᥏"], ["᧐", "᧙"], ["᪀", "᪉"], ["᪐", "᪙"], ["᭐", "᭙"], ["᮰", "᮹"], ["᱀", "᱉"], ["᱐", "᱙"], ["꘠", "꘩"], ["꣐", "꣙"], ["꤀", "꤉"], ["꧐", "꧙"], ["꧰", "꧹"], ["꩐", "꩙"], ["꯰", "꯹"], ["0", "9"]], false, false), peg$c157 = /^[_\u203F-\u2040\u2054\uFE33-\uFE34\uFE4D-\uFE4F\uFF3F]/, peg$c158 = peg$classExpectation(["_", ["‿", "⁀"], "⁔", ["︳", "︴"], ["﹍", "﹏"], "_"], false, false), peg$c161 = /^[0-9a-f]/i, peg$c162 = peg$classExpectation([["0", "9"], ["a", "f"]], false, true), peg$c163 = "break", peg$c164 = peg$literalExpectation("break", false), peg$c165 = "case", peg$c166 = peg$literalExpectation("case", false), peg$c167 = "catch", peg$c168 = peg$literalExpectation("catch", false), peg$c169 = "class", peg$c170 = peg$literalExpectation("class", false), peg$c171 = "const", peg$c172 = peg$literalExpectation("const", false), peg$c173 = "continue", peg$c174 = peg$literalExpectation("continue", false), peg$c175 = "debugger", peg$c176 = peg$literalExpectation("debugger", false), peg$c177 = "default", peg$c178 = peg$literalExpectation("default", false), peg$c179 = "delete", peg$c180 = peg$literalExpectation("delete", false), peg$c181 = "do", peg$c182 = peg$literalExpectation("do", false), peg$c183 = "else", peg$c184 = peg$literalExpectation("else", false), peg$c185 = "export", peg$c186 = peg$literalExpectation("export", false), peg$c187 = "extends", peg$c188 = peg$literalExpectation("extends", false), peg$c189 = "false", peg$c190 = peg$literalExpectation("false", false), peg$c191 = "finally", peg$c192 = peg$literalExpectation("finally", false), peg$c193 = "for", peg$c194 = peg$literalExpectation("for", false), peg$c195 = "function", peg$c196 = peg$literalExpectation("function", false), peg$c199 = "if", peg$c200 = peg$literalExpectation("if", false), peg$c201 = "import", peg$c202 = peg$literalExpectation("import", false), peg$c203 = "instanceof", peg$c204 = peg$literalExpectation("instanceof", false), peg$c205 = "in", peg$c206 = peg$literalExpectation("in", false), peg$c207 = "new", peg$c208 = peg$literalExpectation("new", false), peg$c209 = "null", peg$c210 = peg$literalExpectation("null", false), peg$c211 = "return", peg$c212 = peg$literalExpectation("return", false), peg$c215 = "super", peg$c216 = peg$literalExpectation("super", false), peg$c217 = "switch", peg$c218 = peg$literalExpectation("switch", false), peg$c219 = "this", peg$c220 = peg$literalExpectation("this", false), peg$c221 = "throw", peg$c222 = peg$literalExpectation("throw", false), peg$c223 = "true", peg$c224 = peg$literalExpectation("true", false), peg$c225 = "try", peg$c226 = peg$literalExpectation("try", false), peg$c227 = "typeof", peg$c228 = peg$literalExpectation("typeof", false), peg$c229 = "var", peg$c230 = peg$literalExpectation("var", false), peg$c231 = "void", peg$c232 = peg$literalExpectation("void", false), peg$c233 = "while", peg$c234 = peg$literalExpectation("while", false), peg$c235 = "with", peg$c236 = peg$literalExpectation("with", false), peg$currPos = 0, peg$savedPos = 0, peg$posDetailsCache = [{ line: 1, column: 1 }], peg$maxFailPos = 0, peg$maxFailExpected = [], peg$silentFails = 0, peg$result;
6542
+ }, peg$c153 = /^[A-Z\xC0-\xD6\xD8-\xDE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178-\u0179\u017B\u017D\u0181-\u0182\u0184\u0186-\u0187\u0189-\u018B\u018E-\u0191\u0193-\u0194\u0196-\u0198\u019C-\u019D\u019F-\u01A0\u01A2\u01A4\u01A6-\u01A7\u01A9\u01AC\u01AE-\u01AF\u01B1-\u01B3\u01B5\u01B7-\u01B8\u01BC\u01C4\u01C7\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A-\u023B\u023D-\u023E\u0241\u0243-\u0246\u0248\u024A\u024C\u024E\u0370\u0372\u0376\u037F\u0386\u0388-\u038A\u038C\u038E-\u038F\u0391-\u03A1\u03A3-\u03AB\u03CF\u03D2-\u03D4\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F4\u03F7\u03F9-\u03FA\u03FD-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0-\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0528\u052A\u052C\u052E\u0531-\u0556\u10A0-\u10C5\u10C7\u10CD\u13A0-\u13F5\u1C90-\u1CBA\u1CBD-\u1CBF\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9E\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1FB8-\u1FBB\u1FC8-\u1FCB\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFB\u2102\u2107\u210B-\u210D\u2110-\u2112\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u2130-\u2133\u213E-\u213F\u2145\u2183\u2C00-\u2C2E\u2C60\u2C62-\u2C64\u2C67\u2C69\u2C6B\u2C6D-\u2C70\u2C72\u2C75\u2C7E-\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77D-\uA77E\uA780\uA782\uA784\uA786\uA78B\uA78D\uA790\uA792\uA796\uA798\uA79A\uA79C\uA79E\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7AA-\uA7AE\uA7B0-\uA7B4\uA7B6\uA7B8\uFF21-\uFF3A]/, peg$c154 = peg$classExpectation([["A", "Z"], ["À", "Ö"], ["Ø", "Þ"], "Ā", "Ă", "Ą", "Ć", "Ĉ", "Ċ", "Č", "Ď", "Đ", "Ē", "Ĕ", "Ė", "Ę", "Ě", "Ĝ", "Ğ", "Ġ", "Ģ", "Ĥ", "Ħ", "Ĩ", "Ī", "Ĭ", "Į", "İ", "IJ", "Ĵ", "Ķ", "Ĺ", "Ļ", "Ľ", "Ŀ", "Ł", "Ń", "Ņ", "Ň", "Ŋ", "Ō", "Ŏ", "Ő", "Œ", "Ŕ", "Ŗ", "Ř", "Ś", "Ŝ", "Ş", "Š", "Ţ", "Ť", "Ŧ", "Ũ", "Ū", "Ŭ", "Ů", "Ű", "Ų", "Ŵ", "Ŷ", ["Ÿ", "Ź"], "Ż", "Ž", ["Ɓ", "Ƃ"], "Ƅ", ["Ɔ", "Ƈ"], ["Ɖ", "Ƌ"], ["Ǝ", "Ƒ"], ["Ɠ", "Ɣ"], ["Ɩ", "Ƙ"], ["Ɯ", "Ɲ"], ["Ɵ", "Ơ"], "Ƣ", "Ƥ", ["Ʀ", "Ƨ"], "Ʃ", "Ƭ", ["Ʈ", "Ư"], ["Ʊ", "Ƴ"], "Ƶ", ["Ʒ", "Ƹ"], "Ƽ", "DŽ", "LJ", "NJ", "Ǎ", "Ǐ", "Ǒ", "Ǔ", "Ǖ", "Ǘ", "Ǚ", "Ǜ", "Ǟ", "Ǡ", "Ǣ", "Ǥ", "Ǧ", "Ǩ", "Ǫ", "Ǭ", "Ǯ", "DZ", "Ǵ", ["Ƕ", "Ǹ"], "Ǻ", "Ǽ", "Ǿ", "Ȁ", "Ȃ", "Ȅ", "Ȇ", "Ȉ", "Ȋ", "Ȍ", "Ȏ", "Ȑ", "Ȓ", "Ȕ", "Ȗ", "Ș", "Ț", "Ȝ", "Ȟ", "Ƞ", "Ȣ", "Ȥ", "Ȧ", "Ȩ", "Ȫ", "Ȭ", "Ȯ", "Ȱ", "Ȳ", ["Ⱥ", "Ȼ"], ["Ƚ", "Ⱦ"], "Ɂ", ["Ƀ", "Ɇ"], "Ɉ", "Ɋ", "Ɍ", "Ɏ", "Ͱ", "Ͳ", "Ͷ", "Ϳ", "Ά", ["Έ", "Ί"], "Ό", ["Ύ", "Ώ"], ["Α", "Ρ"], ["Σ", "Ϋ"], "Ϗ", ["ϒ", "ϔ"], "Ϙ", "Ϛ", "Ϝ", "Ϟ", "Ϡ", "Ϣ", "Ϥ", "Ϧ", "Ϩ", "Ϫ", "Ϭ", "Ϯ", "ϴ", "Ϸ", ["Ϲ", "Ϻ"], ["Ͻ", "Я"], "Ѡ", "Ѣ", "Ѥ", "Ѧ", "Ѩ", "Ѫ", "Ѭ", "Ѯ", "Ѱ", "Ѳ", "Ѵ", "Ѷ", "Ѹ", "Ѻ", "Ѽ", "Ѿ", "Ҁ", "Ҋ", "Ҍ", "Ҏ", "Ґ", "Ғ", "Ҕ", "Җ", "Ҙ", "Қ", "Ҝ", "Ҟ", "Ҡ", "Ң", "Ҥ", "Ҧ", "Ҩ", "Ҫ", "Ҭ", "Ү", "Ұ", "Ҳ", "Ҵ", "Ҷ", "Ҹ", "Һ", "Ҽ", "Ҿ", ["Ӏ", "Ӂ"], "Ӄ", "Ӆ", "Ӈ", "Ӊ", "Ӌ", "Ӎ", "Ӑ", "Ӓ", "Ӕ", "Ӗ", "Ә", "Ӛ", "Ӝ", "Ӟ", "Ӡ", "Ӣ", "Ӥ", "Ӧ", "Ө", "Ӫ", "Ӭ", "Ӯ", "Ӱ", "Ӳ", "Ӵ", "Ӷ", "Ӹ", "Ӻ", "Ӽ", "Ӿ", "Ԁ", "Ԃ", "Ԅ", "Ԇ", "Ԉ", "Ԋ", "Ԍ", "Ԏ", "Ԑ", "Ԓ", "Ԕ", "Ԗ", "Ԙ", "Ԛ", "Ԝ", "Ԟ", "Ԡ", "Ԣ", "Ԥ", "Ԧ", "Ԩ", "Ԫ", "Ԭ", "Ԯ", ["Ա", "Ֆ"], ["Ⴀ", "Ⴥ"], "Ⴧ", "Ⴭ", ["Ꭰ", "Ᏽ"], ["Ა", "Ჺ"], ["Ჽ", "Ჿ"], "Ḁ", "Ḃ", "Ḅ", "Ḇ", "Ḉ", "Ḋ", "Ḍ", "Ḏ", "Ḑ", "Ḓ", "Ḕ", "Ḗ", "Ḙ", "Ḛ", "Ḝ", "Ḟ", "Ḡ", "Ḣ", "Ḥ", "Ḧ", "Ḩ", "Ḫ", "Ḭ", "Ḯ", "Ḱ", "Ḳ", "Ḵ", "Ḷ", "Ḹ", "Ḻ", "Ḽ", "Ḿ", "Ṁ", "Ṃ", "Ṅ", "Ṇ", "Ṉ", "Ṋ", "Ṍ", "Ṏ", "Ṑ", "Ṓ", "Ṕ", "Ṗ", "Ṙ", "Ṛ", "Ṝ", "Ṟ", "Ṡ", "Ṣ", "Ṥ", "Ṧ", "Ṩ", "Ṫ", "Ṭ", "Ṯ", "Ṱ", "Ṳ", "Ṵ", "Ṷ", "Ṹ", "Ṻ", "Ṽ", "Ṿ", "Ẁ", "Ẃ", "Ẅ", "Ẇ", "Ẉ", "Ẋ", "Ẍ", "Ẏ", "Ẑ", "Ẓ", "Ẕ", "ẞ", "Ạ", "Ả", "Ấ", "Ầ", "Ẩ", "Ẫ", "Ậ", "Ắ", "Ằ", "Ẳ", "Ẵ", "Ặ", "Ẹ", "Ẻ", "Ẽ", "Ế", "Ề", "Ể", "Ễ", "Ệ", "Ỉ", "Ị", "Ọ", "Ỏ", "Ố", "Ồ", "Ổ", "Ỗ", "Ộ", "Ớ", "Ờ", "Ở", "Ỡ", "Ợ", "Ụ", "Ủ", "Ứ", "Ừ", "Ử", "Ữ", "Ự", "Ỳ", "Ỵ", "Ỷ", "Ỹ", "Ỻ", "Ỽ", "Ỿ", ["Ἀ", "Ἇ"], ["Ἐ", "Ἕ"], ["Ἠ", "Ἧ"], ["Ἰ", "Ἷ"], ["Ὀ", "Ὅ"], "Ὑ", "Ὓ", "Ὕ", "Ὗ", ["Ὠ", "Ὧ"], ["Ᾰ", "Ά"], ["Ὲ", "Ή"], ["Ῐ", "Ί"], ["Ῠ", "Ῥ"], ["Ὸ", "Ώ"], "ℂ", "ℇ", ["ℋ", "ℍ"], ["ℐ", "ℒ"], "ℕ", ["ℙ", "ℝ"], "ℤ", "Ω", "ℨ", ["K", "ℭ"], ["ℰ", "ℳ"], ["ℾ", "ℿ"], "ⅅ", "Ↄ", ["Ⰰ", "Ⱞ"], "Ⱡ", ["Ɫ", "Ɽ"], "Ⱨ", "Ⱪ", "Ⱬ", ["Ɑ", "Ɒ"], "Ⱳ", "Ⱶ", ["Ȿ", "Ⲁ"], "Ⲃ", "Ⲅ", "Ⲇ", "Ⲉ", "Ⲋ", "Ⲍ", "Ⲏ", "Ⲑ", "Ⲓ", "Ⲕ", "Ⲗ", "Ⲙ", "Ⲛ", "Ⲝ", "Ⲟ", "Ⲡ", "Ⲣ", "Ⲥ", "Ⲧ", "Ⲩ", "Ⲫ", "Ⲭ", "Ⲯ", "Ⲱ", "Ⲳ", "Ⲵ", "Ⲷ", "Ⲹ", "Ⲻ", "Ⲽ", "Ⲿ", "Ⳁ", "Ⳃ", "Ⳅ", "Ⳇ", "Ⳉ", "Ⳋ", "Ⳍ", "Ⳏ", "Ⳑ", "Ⳓ", "Ⳕ", "Ⳗ", "Ⳙ", "Ⳛ", "Ⳝ", "Ⳟ", "Ⳡ", "Ⳣ", "Ⳬ", "Ⳮ", "Ⳳ", "Ꙁ", "Ꙃ", "Ꙅ", "Ꙇ", "Ꙉ", "Ꙋ", "Ꙍ", "Ꙏ", "Ꙑ", "Ꙓ", "Ꙕ", "Ꙗ", "Ꙙ", "Ꙛ", "Ꙝ", "Ꙟ", "Ꙡ", "Ꙣ", "Ꙥ", "Ꙧ", "Ꙩ", "Ꙫ", "Ꙭ", "Ꚁ", "Ꚃ", "Ꚅ", "Ꚇ", "Ꚉ", "Ꚋ", "Ꚍ", "Ꚏ", "Ꚑ", "Ꚓ", "Ꚕ", "Ꚗ", "Ꚙ", "Ꚛ", "Ꜣ", "Ꜥ", "Ꜧ", "Ꜩ", "Ꜫ", "Ꜭ", "Ꜯ", "Ꜳ", "Ꜵ", "Ꜷ", "Ꜹ", "Ꜻ", "Ꜽ", "Ꜿ", "Ꝁ", "Ꝃ", "Ꝅ", "Ꝇ", "Ꝉ", "Ꝋ", "Ꝍ", "Ꝏ", "Ꝑ", "Ꝓ", "Ꝕ", "Ꝗ", "Ꝙ", "Ꝛ", "Ꝝ", "Ꝟ", "Ꝡ", "Ꝣ", "Ꝥ", "Ꝧ", "Ꝩ", "Ꝫ", "Ꝭ", "Ꝯ", "Ꝺ", "Ꝼ", ["Ᵹ", "Ꝿ"], "Ꞁ", "Ꞃ", "Ꞅ", "Ꞇ", "Ꞌ", "Ɥ", "Ꞑ", "Ꞓ", "Ꞗ", "Ꞙ", "Ꞛ", "Ꞝ", "Ꞟ", "Ꞡ", "Ꞣ", "Ꞥ", "Ꞧ", "Ꞩ", ["Ɦ", "Ɪ"], ["Ʞ", "Ꞵ"], "Ꞷ", "Ꞹ", ["A", "Z"]], false, false), peg$c155 = /^[a-z\xB5\xDF-\xF6\xF8-\xFF\u0101\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127\u0129\u012B\u012D\u012F\u0131\u0133\u0135\u0137-\u0138\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148-\u0149\u014B\u014D\u014F\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175\u0177\u017A\u017C\u017E-\u0180\u0183\u0185\u0188\u018C-\u018D\u0192\u0195\u0199-\u019B\u019E\u01A1\u01A3\u01A5\u01A8\u01AA-\u01AB\u01AD\u01B0\u01B4\u01B6\u01B9-\u01BA\u01BD-\u01BF\u01C6\u01C9\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC-\u01DD\u01DF\u01E1\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF-\u01F0\u01F3\u01F5\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u0221\u0223\u0225\u0227\u0229\u022B\u022D\u022F\u0231\u0233-\u0239\u023C\u023F-\u0240\u0242\u0247\u0249\u024B\u024D\u024F-\u0293\u0295-\u02AF\u0371\u0373\u0377\u037B-\u037D\u0390\u03AC-\u03CE\u03D0-\u03D1\u03D5-\u03D7\u03D9\u03DB\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF-\u03F3\u03F5\u03F8\u03FB-\u03FC\u0430-\u045F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04C2\u04C4\u04C6\u04C8\u04CA\u04CC\u04CE-\u04CF\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0527\u0529\u052B\u052D\u052F\u0560-\u0588\u10D0-\u10FA\u10FD-\u10FF\u13F8-\u13FD\u1C80-\u1C88\u1D00-\u1D2B\u1D6B-\u1D77\u1D79-\u1D9A\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95-\u1E9D\u1E9F\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF-\u1F07\u1F10-\u1F15\u1F20-\u1F27\u1F30-\u1F37\u1F40-\u1F45\u1F50-\u1F57\u1F60-\u1F67\u1F70-\u1F7D\u1F80-\u1F87\u1F90-\u1F97\u1FA0-\u1FA7\u1FB0-\u1FB4\u1FB6-\u1FB7\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FC7\u1FD0-\u1FD3\u1FD6-\u1FD7\u1FE0-\u1FE7\u1FF2-\u1FF4\u1FF6-\u1FF7\u210A\u210E-\u210F\u2113\u212F\u2134\u2139\u213C-\u213D\u2146-\u2149\u214E\u2184\u2C30-\u2C5E\u2C61\u2C65-\u2C66\u2C68\u2C6A\u2C6C\u2C71\u2C73-\u2C74\u2C76-\u2C7B\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3-\u2CE4\u2CEC\u2CEE\u2CF3\u2D00-\u2D25\u2D27\u2D2D\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA699\uA69B\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F-\uA731\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F\uA771-\uA778\uA77A\uA77C\uA77F\uA781\uA783\uA785\uA787\uA78C\uA78E\uA791\uA793-\uA795\uA797\uA799\uA79B\uA79D\uA79F\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9\uA7AF\uA7B5\uA7B7\uA7B9\uA7FA\uAB30-\uAB5A\uAB60-\uAB65\uAB70-\uABBF\uFB00-\uFB06\uFB13-\uFB17\uFF41-\uFF5A]/, peg$c156 = peg$classExpectation([["a", "z"], "µ", ["ß", "ö"], ["ø", "ÿ"], "ā", "ă", "ą", "ć", "ĉ", "ċ", "č", "ď", "đ", "ē", "ĕ", "ė", "ę", "ě", "ĝ", "ğ", "ġ", "ģ", "ĥ", "ħ", "ĩ", "ī", "ĭ", "į", "ı", "ij", "ĵ", ["ķ", "ĸ"], "ĺ", "ļ", "ľ", "ŀ", "ł", "ń", "ņ", ["ň", "ʼn"], "ŋ", "ō", "ŏ", "ő", "œ", "ŕ", "ŗ", "ř", "ś", "ŝ", "ş", "š", "ţ", "ť", "ŧ", "ũ", "ū", "ŭ", "ů", "ű", "ų", "ŵ", "ŷ", "ź", "ż", ["ž", "ƀ"], "ƃ", "ƅ", "ƈ", ["ƌ", "ƍ"], "ƒ", "ƕ", ["ƙ", "ƛ"], "ƞ", "ơ", "ƣ", "ƥ", "ƨ", ["ƪ", "ƫ"], "ƭ", "ư", "ƴ", "ƶ", ["ƹ", "ƺ"], ["ƽ", "ƿ"], "dž", "lj", "nj", "ǎ", "ǐ", "ǒ", "ǔ", "ǖ", "ǘ", "ǚ", ["ǜ", "ǝ"], "ǟ", "ǡ", "ǣ", "ǥ", "ǧ", "ǩ", "ǫ", "ǭ", ["ǯ", "ǰ"], "dz", "ǵ", "ǹ", "ǻ", "ǽ", "ǿ", "ȁ", "ȃ", "ȅ", "ȇ", "ȉ", "ȋ", "ȍ", "ȏ", "ȑ", "ȓ", "ȕ", "ȗ", "ș", "ț", "ȝ", "ȟ", "ȡ", "ȣ", "ȥ", "ȧ", "ȩ", "ȫ", "ȭ", "ȯ", "ȱ", ["ȳ", "ȹ"], "ȼ", ["ȿ", "ɀ"], "ɂ", "ɇ", "ɉ", "ɋ", "ɍ", ["ɏ", "ʓ"], ["ʕ", "ʯ"], "ͱ", "ͳ", "ͷ", ["ͻ", "ͽ"], "ΐ", ["ά", "ώ"], ["ϐ", "ϑ"], ["ϕ", "ϗ"], "ϙ", "ϛ", "ϝ", "ϟ", "ϡ", "ϣ", "ϥ", "ϧ", "ϩ", "ϫ", "ϭ", ["ϯ", "ϳ"], "ϵ", "ϸ", ["ϻ", "ϼ"], ["а", "џ"], "ѡ", "ѣ", "ѥ", "ѧ", "ѩ", "ѫ", "ѭ", "ѯ", "ѱ", "ѳ", "ѵ", "ѷ", "ѹ", "ѻ", "ѽ", "ѿ", "ҁ", "ҋ", "ҍ", "ҏ", "ґ", "ғ", "ҕ", "җ", "ҙ", "қ", "ҝ", "ҟ", "ҡ", "ң", "ҥ", "ҧ", "ҩ", "ҫ", "ҭ", "ү", "ұ", "ҳ", "ҵ", "ҷ", "ҹ", "һ", "ҽ", "ҿ", "ӂ", "ӄ", "ӆ", "ӈ", "ӊ", "ӌ", ["ӎ", "ӏ"], "ӑ", "ӓ", "ӕ", "ӗ", "ә", "ӛ", "ӝ", "ӟ", "ӡ", "ӣ", "ӥ", "ӧ", "ө", "ӫ", "ӭ", "ӯ", "ӱ", "ӳ", "ӵ", "ӷ", "ӹ", "ӻ", "ӽ", "ӿ", "ԁ", "ԃ", "ԅ", "ԇ", "ԉ", "ԋ", "ԍ", "ԏ", "ԑ", "ԓ", "ԕ", "ԗ", "ԙ", "ԛ", "ԝ", "ԟ", "ԡ", "ԣ", "ԥ", "ԧ", "ԩ", "ԫ", "ԭ", "ԯ", ["ՠ", "ֈ"], ["ა", "ჺ"], ["ჽ", "ჿ"], ["ᏸ", "ᏽ"], ["ᲀ", "ᲈ"], ["ᴀ", "ᴫ"], ["ᵫ", "ᵷ"], ["ᵹ", "ᶚ"], "ḁ", "ḃ", "ḅ", "ḇ", "ḉ", "ḋ", "ḍ", "ḏ", "ḑ", "ḓ", "ḕ", "ḗ", "ḙ", "ḛ", "ḝ", "ḟ", "ḡ", "ḣ", "ḥ", "ḧ", "ḩ", "ḫ", "ḭ", "ḯ", "ḱ", "ḳ", "ḵ", "ḷ", "ḹ", "ḻ", "ḽ", "ḿ", "ṁ", "ṃ", "ṅ", "ṇ", "ṉ", "ṋ", "ṍ", "ṏ", "ṑ", "ṓ", "ṕ", "ṗ", "ṙ", "ṛ", "ṝ", "ṟ", "ṡ", "ṣ", "ṥ", "ṧ", "ṩ", "ṫ", "ṭ", "ṯ", "ṱ", "ṳ", "ṵ", "ṷ", "ṹ", "ṻ", "ṽ", "ṿ", "ẁ", "ẃ", "ẅ", "ẇ", "ẉ", "ẋ", "ẍ", "ẏ", "ẑ", "ẓ", ["ẕ", "ẝ"], "ẟ", "ạ", "ả", "ấ", "ầ", "ẩ", "ẫ", "ậ", "ắ", "ằ", "ẳ", "ẵ", "ặ", "ẹ", "ẻ", "ẽ", "ế", "ề", "ể", "ễ", "ệ", "ỉ", "ị", "ọ", "ỏ", "ố", "ồ", "ổ", "ỗ", "ộ", "ớ", "ờ", "ở", "ỡ", "ợ", "ụ", "ủ", "ứ", "ừ", "ử", "ữ", "ự", "ỳ", "ỵ", "ỷ", "ỹ", "ỻ", "ỽ", ["ỿ", "ἇ"], ["ἐ", "ἕ"], ["ἠ", "ἧ"], ["ἰ", "ἷ"], ["ὀ", "ὅ"], ["ὐ", "ὗ"], ["ὠ", "ὧ"], ["ὰ", "ώ"], ["ᾀ", "ᾇ"], ["ᾐ", "ᾗ"], ["ᾠ", "ᾧ"], ["ᾰ", "ᾴ"], ["ᾶ", "ᾷ"], "ι", ["ῂ", "ῄ"], ["ῆ", "ῇ"], ["ῐ", "ΐ"], ["ῖ", "ῗ"], ["ῠ", "ῧ"], ["ῲ", "ῴ"], ["ῶ", "ῷ"], "ℊ", ["ℎ", "ℏ"], "ℓ", "ℯ", "ℴ", "ℹ", ["ℼ", "ℽ"], ["ⅆ", "ⅉ"], "ⅎ", "ↄ", ["ⰰ", "ⱞ"], "ⱡ", ["ⱥ", "ⱦ"], "ⱨ", "ⱪ", "ⱬ", "ⱱ", ["ⱳ", "ⱴ"], ["ⱶ", "ⱻ"], "ⲁ", "ⲃ", "ⲅ", "ⲇ", "ⲉ", "ⲋ", "ⲍ", "ⲏ", "ⲑ", "ⲓ", "ⲕ", "ⲗ", "ⲙ", "ⲛ", "ⲝ", "ⲟ", "ⲡ", "ⲣ", "ⲥ", "ⲧ", "ⲩ", "ⲫ", "ⲭ", "ⲯ", "ⲱ", "ⲳ", "ⲵ", "ⲷ", "ⲹ", "ⲻ", "ⲽ", "ⲿ", "ⳁ", "ⳃ", "ⳅ", "ⳇ", "ⳉ", "ⳋ", "ⳍ", "ⳏ", "ⳑ", "ⳓ", "ⳕ", "ⳗ", "ⳙ", "ⳛ", "ⳝ", "ⳟ", "ⳡ", ["ⳣ", "ⳤ"], "ⳬ", "ⳮ", "ⳳ", ["ⴀ", "ⴥ"], "ⴧ", "ⴭ", "ꙁ", "ꙃ", "ꙅ", "ꙇ", "ꙉ", "ꙋ", "ꙍ", "ꙏ", "ꙑ", "ꙓ", "ꙕ", "ꙗ", "ꙙ", "ꙛ", "ꙝ", "ꙟ", "ꙡ", "ꙣ", "ꙥ", "ꙧ", "ꙩ", "ꙫ", "ꙭ", "ꚁ", "ꚃ", "ꚅ", "ꚇ", "ꚉ", "ꚋ", "ꚍ", "ꚏ", "ꚑ", "ꚓ", "ꚕ", "ꚗ", "ꚙ", "ꚛ", "ꜣ", "ꜥ", "ꜧ", "ꜩ", "ꜫ", "ꜭ", ["ꜯ", "ꜱ"], "ꜳ", "ꜵ", "ꜷ", "ꜹ", "ꜻ", "ꜽ", "ꜿ", "ꝁ", "ꝃ", "ꝅ", "ꝇ", "ꝉ", "ꝋ", "ꝍ", "ꝏ", "ꝑ", "ꝓ", "ꝕ", "ꝗ", "ꝙ", "ꝛ", "ꝝ", "ꝟ", "ꝡ", "ꝣ", "ꝥ", "ꝧ", "ꝩ", "ꝫ", "ꝭ", "ꝯ", ["ꝱ", "ꝸ"], "ꝺ", "ꝼ", "ꝿ", "ꞁ", "ꞃ", "ꞅ", "ꞇ", "ꞌ", "ꞎ", "ꞑ", ["ꞓ", "ꞕ"], "ꞗ", "ꞙ", "ꞛ", "ꞝ", "ꞟ", "ꞡ", "ꞣ", "ꞥ", "ꞧ", "ꞩ", "ꞯ", "ꞵ", "ꞷ", "ꞹ", "ꟺ", ["ꬰ", "ꭚ"], ["ꭠ", "ꭥ"], ["ꭰ", "ꮿ"], ["ff", "st"], ["ﬓ", "ﬗ"], ["a", "z"]], false, false), peg$c157 = /^[\u01C5\u01C8\u01CB\u01F2\u1F88-\u1F8F\u1F98-\u1F9F\u1FA8-\u1FAF\u1FBC\u1FCC\u1FFC]/, peg$c158 = peg$classExpectation(["Dž", "Lj", "Nj", "Dz", ["ᾈ", "ᾏ"], ["ᾘ", "ᾟ"], ["ᾨ", "ᾯ"], "ᾼ", "ῌ", "ῼ"], false, false), peg$c159 = /^[\u02B0-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0374\u037A\u0559\u0640\u06E5-\u06E6\u07F4-\u07F5\u07FA\u081A\u0824\u0828\u0971\u0E46\u0EC6\u10FC\u17D7\u1843\u1AA7\u1C78-\u1C7D\u1D2C-\u1D6A\u1D78\u1D9B-\u1DBF\u2071\u207F\u2090-\u209C\u2C7C-\u2C7D\u2D6F\u2E2F\u3005\u3031-\u3035\u303B\u309D-\u309E\u30FC-\u30FE\uA015\uA4F8-\uA4FD\uA60C\uA67F\uA69C-\uA69D\uA717-\uA71F\uA770\uA788\uA7F8-\uA7F9\uA9CF\uA9E6\uAA70\uAADD\uAAF3-\uAAF4\uAB5C-\uAB5F\uFF70\uFF9E-\uFF9F]/, peg$c160 = peg$classExpectation([["ʰ", "ˁ"], ["ˆ", "ˑ"], ["ˠ", "ˤ"], "ˬ", "ˮ", "ʹ", "ͺ", "ՙ", "ـ", ["ۥ", "ۦ"], ["ߴ", "ߵ"], "ߺ", "ࠚ", "ࠤ", "ࠨ", "ॱ", "ๆ", "ໆ", "ჼ", "ៗ", "ᡃ", "ᪧ", ["ᱸ", "ᱽ"], ["ᴬ", "ᵪ"], "ᵸ", ["ᶛ", "ᶿ"], "ⁱ", "ⁿ", ["ₐ", "ₜ"], ["ⱼ", "ⱽ"], "ⵯ", "ⸯ", "々", ["〱", "〵"], "〻", ["ゝ", "ゞ"], ["ー", "ヾ"], "ꀕ", ["ꓸ", "ꓽ"], "ꘌ", "ꙿ", ["ꚜ", "ꚝ"], ["ꜗ", "ꜟ"], "ꝰ", "ꞈ", ["ꟸ", "ꟹ"], "ꧏ", "ꧦ", "ꩰ", "ꫝ", ["ꫳ", "ꫴ"], ["ꭜ", "ꭟ"], "ー", ["゙", "゚"]], false, false), peg$c161 = /^[\xAA\xBA\u01BB\u01C0-\u01C3\u0294\u05D0-\u05EA\u05EF-\u05F2\u0620-\u063F\u0641-\u064A\u066E-\u066F\u0671-\u06D3\u06D5\u06EE-\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u0800-\u0815\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0972-\u0980\u0985-\u098C\u098F-\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC-\u09DD\u09DF-\u09E1\u09F0-\u09F1\u09FC\u0A05-\u0A0A\u0A0F-\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32-\u0A33\u0A35-\u0A36\u0A38-\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2-\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0-\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F-\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32-\u0B33\u0B35-\u0B39\u0B3D\u0B5C-\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99-\u0B9A\u0B9C\u0B9E-\u0B9F\u0BA3-\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60-\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0-\u0CE1\u0CF1-\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32-\u0E33\u0E40-\u0E45\u0E81-\u0E82\u0E84\u0E87-\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA-\u0EAB\u0EAD-\u0EB0\u0EB2-\u0EB3\u0EBD\u0EC0-\u0EC4\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065-\u1066\u106E-\u1070\u1075-\u1081\u108E\u1100-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17DC\u1820-\u1842\u1844-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE-\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C77\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5-\u1CF6\u2135-\u2138\u2D30-\u2D67\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3006\u303C\u3041-\u3096\u309F\u30A1-\u30FA\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEF\uA000-\uA014\uA016-\uA48C\uA4D0-\uA4F7\uA500-\uA60B\uA610-\uA61F\uA62A-\uA62B\uA66E\uA6A0-\uA6E5\uA78F\uA7F7\uA7FB-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD-\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9E0-\uA9E4\uA9E7-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA6F\uAA71-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5-\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADC\uAAE0-\uAAEA\uAAF2\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF66-\uFF6F\uFF71-\uFF9D\uFFA0-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/, peg$c162 = peg$classExpectation(["ª", "º", "ƻ", ["ǀ", "ǃ"], "ʔ", ["א", "ת"], ["ׯ", "ײ"], ["ؠ", "ؿ"], ["ف", "ي"], ["ٮ", "ٯ"], ["ٱ", "ۓ"], "ە", ["ۮ", "ۯ"], ["ۺ", "ۼ"], "ۿ", "ܐ", ["ܒ", "ܯ"], ["ݍ", "ޥ"], "ޱ", ["ߊ", "ߪ"], ["ࠀ", "ࠕ"], ["ࡀ", "ࡘ"], ["ࡠ", "ࡪ"], ["ࢠ", "ࢴ"], ["ࢶ", "ࢽ"], ["ऄ", "ह"], "ऽ", "ॐ", ["क़", "ॡ"], ["ॲ", "ঀ"], ["অ", "ঌ"], ["এ", "ঐ"], ["ও", "ন"], ["প", "র"], "ল", ["শ", "হ"], "ঽ", "ৎ", ["ড়", "ঢ়"], ["য়", "ৡ"], ["ৰ", "ৱ"], "ৼ", ["ਅ", "ਊ"], ["ਏ", "ਐ"], ["ਓ", "ਨ"], ["ਪ", "ਰ"], ["ਲ", "ਲ਼"], ["ਵ", "ਸ਼"], ["ਸ", "ਹ"], ["ਖ਼", "ੜ"], "ਫ਼", ["ੲ", "ੴ"], ["અ", "ઍ"], ["એ", "ઑ"], ["ઓ", "ન"], ["પ", "ર"], ["લ", "ળ"], ["વ", "હ"], "ઽ", "ૐ", ["ૠ", "ૡ"], "ૹ", ["ଅ", "ଌ"], ["ଏ", "ଐ"], ["ଓ", "ନ"], ["ପ", "ର"], ["ଲ", "ଳ"], ["ଵ", "ହ"], "ଽ", ["ଡ଼", "ଢ଼"], ["ୟ", "ୡ"], "ୱ", "ஃ", ["அ", "ஊ"], ["எ", "ஐ"], ["ஒ", "க"], ["ங", "ச"], "ஜ", ["ஞ", "ட"], ["ண", "த"], ["ந", "ப"], ["ம", "ஹ"], "ௐ", ["అ", "ఌ"], ["ఎ", "ఐ"], ["ఒ", "న"], ["ప", "హ"], "ఽ", ["ౘ", "ౚ"], ["ౠ", "ౡ"], "ಀ", ["ಅ", "ಌ"], ["ಎ", "ಐ"], ["ಒ", "ನ"], ["ಪ", "ಳ"], ["ವ", "ಹ"], "ಽ", "ೞ", ["ೠ", "ೡ"], ["ೱ", "ೲ"], ["അ", "ഌ"], ["എ", "ഐ"], ["ഒ", "ഺ"], "ഽ", "ൎ", ["ൔ", "ൖ"], ["ൟ", "ൡ"], ["ൺ", "ൿ"], ["අ", "ඖ"], ["ක", "න"], ["ඳ", "ර"], "ල", ["ව", "ෆ"], ["ก", "ะ"], ["า", "ำ"], ["เ", "ๅ"], ["ກ", "ຂ"], "ຄ", ["ງ", "ຈ"], "ຊ", "ຍ", ["ດ", "ທ"], ["ນ", "ຟ"], ["ມ", "ຣ"], "ລ", "ວ", ["ສ", "ຫ"], ["ອ", "ະ"], ["າ", "ຳ"], "ຽ", ["ເ", "ໄ"], ["ໜ", "ໟ"], "ༀ", ["ཀ", "ཇ"], ["ཉ", "ཬ"], ["ྈ", "ྌ"], ["က", "ဪ"], "ဿ", ["ၐ", "ၕ"], ["ၚ", "ၝ"], "ၡ", ["ၥ", "ၦ"], ["ၮ", "ၰ"], ["ၵ", "ႁ"], "ႎ", ["ᄀ", "ቈ"], ["ቊ", "ቍ"], ["ቐ", "ቖ"], "ቘ", ["ቚ", "ቝ"], ["በ", "ኈ"], ["ኊ", "ኍ"], ["ነ", "ኰ"], ["ኲ", "ኵ"], ["ኸ", "ኾ"], "ዀ", ["ዂ", "ዅ"], ["ወ", "ዖ"], ["ዘ", "ጐ"], ["ጒ", "ጕ"], ["ጘ", "ፚ"], ["ᎀ", "ᎏ"], ["ᐁ", "ᙬ"], ["ᙯ", "ᙿ"], ["ᚁ", "ᚚ"], ["ᚠ", "ᛪ"], ["ᛱ", "ᛸ"], ["ᜀ", "ᜌ"], ["ᜎ", "ᜑ"], ["ᜠ", "ᜱ"], ["ᝀ", "ᝑ"], ["ᝠ", "ᝬ"], ["ᝮ", "ᝰ"], ["ក", "ឳ"], "ៜ", ["ᠠ", "ᡂ"], ["ᡄ", "ᡸ"], ["ᢀ", "ᢄ"], ["ᢇ", "ᢨ"], "ᢪ", ["ᢰ", "ᣵ"], ["ᤀ", "ᤞ"], ["ᥐ", "ᥭ"], ["ᥰ", "ᥴ"], ["ᦀ", "ᦫ"], ["ᦰ", "ᧉ"], ["ᨀ", "ᨖ"], ["ᨠ", "ᩔ"], ["ᬅ", "ᬳ"], ["ᭅ", "ᭋ"], ["ᮃ", "ᮠ"], ["ᮮ", "ᮯ"], ["ᮺ", "ᯥ"], ["ᰀ", "ᰣ"], ["ᱍ", "ᱏ"], ["ᱚ", "ᱷ"], ["ᳩ", "ᳬ"], ["ᳮ", "ᳱ"], ["ᳵ", "ᳶ"], ["ℵ", "ℸ"], ["ⴰ", "ⵧ"], ["ⶀ", "ⶖ"], ["ⶠ", "ⶦ"], ["ⶨ", "ⶮ"], ["ⶰ", "ⶶ"], ["ⶸ", "ⶾ"], ["ⷀ", "ⷆ"], ["ⷈ", "ⷎ"], ["ⷐ", "ⷖ"], ["ⷘ", "ⷞ"], "〆", "〼", ["ぁ", "ゖ"], "ゟ", ["ァ", "ヺ"], "ヿ", ["ㄅ", "ㄯ"], ["ㄱ", "ㆎ"], ["ㆠ", "ㆺ"], ["ㇰ", "ㇿ"], ["㐀", "䶵"], ["一", "鿯"], ["ꀀ", "ꀔ"], ["ꀖ", "ꒌ"], ["ꓐ", "ꓷ"], ["ꔀ", "ꘋ"], ["ꘐ", "ꘟ"], ["ꘪ", "ꘫ"], "ꙮ", ["ꚠ", "ꛥ"], "ꞏ", "ꟷ", ["ꟻ", "ꠁ"], ["ꠃ", "ꠅ"], ["ꠇ", "ꠊ"], ["ꠌ", "ꠢ"], ["ꡀ", "ꡳ"], ["ꢂ", "ꢳ"], ["ꣲ", "ꣷ"], "ꣻ", ["ꣽ", "ꣾ"], ["ꤊ", "ꤥ"], ["ꤰ", "ꥆ"], ["ꥠ", "ꥼ"], ["ꦄ", "ꦲ"], ["ꧠ", "ꧤ"], ["ꧧ", "ꧯ"], ["ꧺ", "ꧾ"], ["ꨀ", "ꨨ"], ["ꩀ", "ꩂ"], ["ꩄ", "ꩋ"], ["ꩠ", "ꩯ"], ["ꩱ", "ꩶ"], "ꩺ", ["ꩾ", "ꪯ"], "ꪱ", ["ꪵ", "ꪶ"], ["ꪹ", "ꪽ"], "ꫀ", "ꫂ", ["ꫛ", "ꫜ"], ["ꫠ", "ꫪ"], "ꫲ", ["ꬁ", "ꬆ"], ["ꬉ", "ꬎ"], ["ꬑ", "ꬖ"], ["ꬠ", "ꬦ"], ["ꬨ", "ꬮ"], ["ꯀ", "ꯢ"], ["가", "힣"], ["ힰ", "ퟆ"], ["ퟋ", "ퟻ"], ["豈", "舘"], ["並", "龎"], "יִ", ["ײַ", "ﬨ"], ["שׁ", "זּ"], ["טּ", "לּ"], "מּ", ["נּ", "סּ"], ["ףּ", "פּ"], ["צּ", "ﮱ"], ["ﯓ", "ﴽ"], ["ﵐ", "ﶏ"], ["ﶒ", "ﷇ"], ["ﷰ", "ﷻ"], ["ﹰ", "ﹴ"], ["ﹶ", "ﻼ"], ["ヲ", "ッ"], ["ア", "ン"], ["ᅠ", "ᄒ"], ["ᅡ", "ᅦ"], ["ᅧ", "ᅬ"], ["ᅭ", "ᅲ"], ["ᅳ", "ᅵ"]], false, false), peg$c163 = /^[\u16EE-\u16F0\u2160-\u2182\u2185-\u2188\u3007\u3021-\u3029\u3038-\u303A\uA6E6-\uA6EF]/, peg$c164 = peg$classExpectation([["ᛮ", "ᛰ"], ["Ⅰ", "ↂ"], ["ↅ", "ↈ"], "〇", ["〡", "〩"], ["〸", "〺"], ["ꛦ", "ꛯ"]], false, false), peg$c165 = /^[\u0300-\u036F\u0483-\u0487\u0591-\u05BD\u05BF\u05C1-\u05C2\u05C4-\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D3-\u08E1\u08E3-\u0902\u093A\u093C\u0941-\u0948\u094D\u0951-\u0957\u0962-\u0963\u0981\u09BC\u09C1-\u09C4\u09CD\u09E2-\u09E3\u09FE\u0A01-\u0A02\u0A3C\u0A41-\u0A42\u0A47-\u0A48\u0A4B-\u0A4D\u0A51\u0A70-\u0A71\u0A75\u0A81-\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7-\u0AC8\u0ACD\u0AE2-\u0AE3\u0AFA-\u0AFF\u0B01\u0B3C\u0B3F\u0B41-\u0B44\u0B4D\u0B56\u0B62-\u0B63\u0B82\u0BC0\u0BCD\u0C00\u0C04\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55-\u0C56\u0C62-\u0C63\u0C81\u0CBC\u0CBF\u0CC6\u0CCC-\u0CCD\u0CE2-\u0CE3\u0D00-\u0D01\u0D3B-\u0D3C\u0D41-\u0D44\u0D4D\u0D62-\u0D63\u0DCA\u0DD2-\u0DD4\u0DD6\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB-\u0EBC\u0EC8-\u0ECD\u0F18-\u0F19\u0F35\u0F37\u0F39\u0F71-\u0F7E\u0F80-\u0F84\u0F86-\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032-\u1037\u1039-\u103A\u103D-\u103E\u1058-\u1059\u105E-\u1060\u1071-\u1074\u1082\u1085-\u1086\u108D\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17B4-\u17B5\u17B7-\u17BD\u17C6\u17C9-\u17D3\u17DD\u180B-\u180D\u1885-\u1886\u18A9\u1920-\u1922\u1927-\u1928\u1932\u1939-\u193B\u1A17-\u1A18\u1A1B\u1A56\u1A58-\u1A5E\u1A60\u1A62\u1A65-\u1A6C\u1A73-\u1A7C\u1A7F\u1AB0-\u1ABD\u1B00-\u1B03\u1B34\u1B36-\u1B3A\u1B3C\u1B42\u1B6B-\u1B73\u1B80-\u1B81\u1BA2-\u1BA5\u1BA8-\u1BA9\u1BAB-\u1BAD\u1BE6\u1BE8-\u1BE9\u1BED\u1BEF-\u1BF1\u1C2C-\u1C33\u1C36-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1CF4\u1CF8-\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302D\u3099-\u309A\uA66F\uA674-\uA67D\uA69E-\uA69F\uA6F0-\uA6F1\uA802\uA806\uA80B\uA825-\uA826\uA8C4-\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA951\uA980-\uA982\uA9B3\uA9B6-\uA9B9\uA9BC\uA9E5\uAA29-\uAA2E\uAA31-\uAA32\uAA35-\uAA36\uAA43\uAA4C\uAA7C\uAAB0\uAAB2-\uAAB4\uAAB7-\uAAB8\uAABE-\uAABF\uAAC1\uAAEC-\uAAED\uAAF6\uABE5\uABE8\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F]/, peg$c166 = peg$classExpectation([["̀", "ͯ"], ["҃", "҇"], ["֑", "ֽ"], "ֿ", ["ׁ", "ׂ"], ["ׄ", "ׅ"], "ׇ", ["ؐ", "ؚ"], ["ً", "ٟ"], "ٰ", ["ۖ", "ۜ"], ["۟", "ۤ"], ["ۧ", "ۨ"], ["۪", "ۭ"], "ܑ", ["ܰ", "݊"], ["ަ", "ް"], ["߫", "߳"], "߽", ["ࠖ", "࠙"], ["ࠛ", "ࠣ"], ["ࠥ", "ࠧ"], ["ࠩ", "࠭"], ["࡙", "࡛"], ["࣓", "࣡"], ["ࣣ", "ं"], "ऺ", "़", ["ु", "ै"], "्", ["॑", "ॗ"], ["ॢ", "ॣ"], "ঁ", "়", ["ু", "ৄ"], "্", ["ৢ", "ৣ"], "৾", ["ਁ", "ਂ"], "਼", ["ੁ", "ੂ"], ["ੇ", "ੈ"], ["ੋ", "੍"], "ੑ", ["ੰ", "ੱ"], "ੵ", ["ઁ", "ં"], "઼", ["ુ", "ૅ"], ["ે", "ૈ"], "્", ["ૢ", "ૣ"], ["ૺ", "૿"], "ଁ", "଼", "ି", ["ୁ", "ୄ"], "୍", "ୖ", ["ୢ", "ୣ"], "ஂ", "ீ", "்", "ఀ", "ఄ", ["ా", "ీ"], ["ె", "ై"], ["ొ", "్"], ["ౕ", "ౖ"], ["ౢ", "ౣ"], "ಁ", "಼", "ಿ", "ೆ", ["ೌ", "್"], ["ೢ", "ೣ"], ["ഀ", "ഁ"], ["഻", "഼"], ["ു", "ൄ"], "്", ["ൢ", "ൣ"], "්", ["ි", "ු"], "ූ", "ั", ["ิ", "ฺ"], ["็", "๎"], "ັ", ["ິ", "ູ"], ["ົ", "ຼ"], ["່", "ໍ"], ["༘", "༙"], "༵", "༷", "༹", ["ཱ", "ཾ"], ["ྀ", "྄"], ["྆", "྇"], ["ྍ", "ྗ"], ["ྙ", "ྼ"], "࿆", ["ိ", "ူ"], ["ဲ", "့"], ["္", "်"], ["ွ", "ှ"], ["ၘ", "ၙ"], ["ၞ", "ၠ"], ["ၱ", "ၴ"], "ႂ", ["ႅ", "ႆ"], "ႍ", "ႝ", ["፝", "፟"], ["ᜒ", "᜔"], ["ᜲ", "᜴"], ["ᝒ", "ᝓ"], ["ᝲ", "ᝳ"], ["឴", "឵"], ["ិ", "ួ"], "ំ", ["៉", "៓"], "៝", ["᠋", "᠍"], ["ᢅ", "ᢆ"], "ᢩ", ["ᤠ", "ᤢ"], ["ᤧ", "ᤨ"], "ᤲ", ["᤹", "᤻"], ["ᨗ", "ᨘ"], "ᨛ", "ᩖ", ["ᩘ", "ᩞ"], "᩠", "ᩢ", ["ᩥ", "ᩬ"], ["ᩳ", "᩼"], "᩿", ["᪰", "᪽"], ["ᬀ", "ᬃ"], "᬴", ["ᬶ", "ᬺ"], "ᬼ", "ᭂ", ["᭫", "᭳"], ["ᮀ", "ᮁ"], ["ᮢ", "ᮥ"], ["ᮨ", "ᮩ"], ["᮫", "ᮭ"], "᯦", ["ᯨ", "ᯩ"], "ᯭ", ["ᯯ", "ᯱ"], ["ᰬ", "ᰳ"], ["ᰶ", "᰷"], ["᳐", "᳒"], ["᳔", "᳠"], ["᳢", "᳨"], "᳭", "᳴", ["᳸", "᳹"], ["᷀", "᷹"], ["᷻", "᷿"], ["⃐", "⃜"], "⃡", ["⃥", "⃰"], ["⳯", "⳱"], "⵿", ["ⷠ", "ⷿ"], ["〪", "〭"], ["゙", "゚"], "꙯", ["ꙴ", "꙽"], ["ꚞ", "ꚟ"], ["꛰", "꛱"], "ꠂ", "꠆", "ꠋ", ["ꠥ", "ꠦ"], ["꣄", "ꣅ"], ["꣠", "꣱"], "ꣿ", ["ꤦ", "꤭"], ["ꥇ", "ꥑ"], ["ꦀ", "ꦂ"], "꦳", ["ꦶ", "ꦹ"], "ꦼ", "ꧥ", ["ꨩ", "ꨮ"], ["ꨱ", "ꨲ"], ["ꨵ", "ꨶ"], "ꩃ", "ꩌ", "ꩼ", "ꪰ", ["ꪲ", "ꪴ"], ["ꪷ", "ꪸ"], ["ꪾ", "꪿"], "꫁", ["ꫬ", "ꫭ"], "꫶", "ꯥ", "ꯨ", "꯭", "ﬞ", ["︀", "️"], ["︠", "︯"]], false, false), peg$c167 = /^[\u0903\u093B\u093E-\u0940\u0949-\u094C\u094E-\u094F\u0982-\u0983\u09BE-\u09C0\u09C7-\u09C8\u09CB-\u09CC\u09D7\u0A03\u0A3E-\u0A40\u0A83\u0ABE-\u0AC0\u0AC9\u0ACB-\u0ACC\u0B02-\u0B03\u0B3E\u0B40\u0B47-\u0B48\u0B4B-\u0B4C\u0B57\u0BBE-\u0BBF\u0BC1-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCC\u0BD7\u0C01-\u0C03\u0C41-\u0C44\u0C82-\u0C83\u0CBE\u0CC0-\u0CC4\u0CC7-\u0CC8\u0CCA-\u0CCB\u0CD5-\u0CD6\u0D02-\u0D03\u0D3E-\u0D40\u0D46-\u0D48\u0D4A-\u0D4C\u0D57\u0D82-\u0D83\u0DCF-\u0DD1\u0DD8-\u0DDF\u0DF2-\u0DF3\u0F3E-\u0F3F\u0F7F\u102B-\u102C\u1031\u1038\u103B-\u103C\u1056-\u1057\u1062-\u1064\u1067-\u106D\u1083-\u1084\u1087-\u108C\u108F\u109A-\u109C\u17B6\u17BE-\u17C5\u17C7-\u17C8\u1923-\u1926\u1929-\u192B\u1930-\u1931\u1933-\u1938\u1A19-\u1A1A\u1A55\u1A57\u1A61\u1A63-\u1A64\u1A6D-\u1A72\u1B04\u1B35\u1B3B\u1B3D-\u1B41\u1B43-\u1B44\u1B82\u1BA1\u1BA6-\u1BA7\u1BAA\u1BE7\u1BEA-\u1BEC\u1BEE\u1BF2-\u1BF3\u1C24-\u1C2B\u1C34-\u1C35\u1CE1\u1CF2-\u1CF3\u1CF7\u302E-\u302F\uA823-\uA824\uA827\uA880-\uA881\uA8B4-\uA8C3\uA952-\uA953\uA983\uA9B4-\uA9B5\uA9BA-\uA9BB\uA9BD-\uA9C0\uAA2F-\uAA30\uAA33-\uAA34\uAA4D\uAA7B\uAA7D\uAAEB\uAAEE-\uAAEF\uAAF5\uABE3-\uABE4\uABE6-\uABE7\uABE9-\uABEA\uABEC]/, peg$c168 = peg$classExpectation(["ः", "ऻ", ["ा", "ी"], ["ॉ", "ौ"], ["ॎ", "ॏ"], ["ং", "ঃ"], ["া", "ী"], ["ে", "ৈ"], ["ো", "ৌ"], "ৗ", "ਃ", ["ਾ", "ੀ"], "ઃ", ["ા", "ી"], "ૉ", ["ો", "ૌ"], ["ଂ", "ଃ"], "ା", "ୀ", ["େ", "ୈ"], ["ୋ", "ୌ"], "ୗ", ["ா", "ி"], ["ு", "ூ"], ["ெ", "ை"], ["ொ", "ௌ"], "ௗ", ["ఁ", "ః"], ["ు", "ౄ"], ["ಂ", "ಃ"], "ಾ", ["ೀ", "ೄ"], ["ೇ", "ೈ"], ["ೊ", "ೋ"], ["ೕ", "ೖ"], ["ം", "ഃ"], ["ാ", "ീ"], ["െ", "ൈ"], ["ൊ", "ൌ"], "ൗ", ["ං", "ඃ"], ["ා", "ෑ"], ["ෘ", "ෟ"], ["ෲ", "ෳ"], ["༾", "༿"], "ཿ", ["ါ", "ာ"], "ေ", "း", ["ျ", "ြ"], ["ၖ", "ၗ"], ["ၢ", "ၤ"], ["ၧ", "ၭ"], ["ႃ", "ႄ"], ["ႇ", "ႌ"], "ႏ", ["ႚ", "ႜ"], "ា", ["ើ", "ៅ"], ["ះ", "ៈ"], ["ᤣ", "ᤦ"], ["ᤩ", "ᤫ"], ["ᤰ", "ᤱ"], ["ᤳ", "ᤸ"], ["ᨙ", "ᨚ"], "ᩕ", "ᩗ", "ᩡ", ["ᩣ", "ᩤ"], ["ᩭ", "ᩲ"], "ᬄ", "ᬵ", "ᬻ", ["ᬽ", "ᭁ"], ["ᭃ", "᭄"], "ᮂ", "ᮡ", ["ᮦ", "ᮧ"], "᮪", "ᯧ", ["ᯪ", "ᯬ"], "ᯮ", ["᯲", "᯳"], ["ᰤ", "ᰫ"], ["ᰴ", "ᰵ"], "᳡", ["ᳲ", "ᳳ"], "᳷", ["〮", "〯"], ["ꠣ", "ꠤ"], "ꠧ", ["ꢀ", "ꢁ"], ["ꢴ", "ꣃ"], ["ꥒ", "꥓"], "ꦃ", ["ꦴ", "ꦵ"], ["ꦺ", "ꦻ"], ["ꦽ", "꧀"], ["ꨯ", "ꨰ"], ["ꨳ", "ꨴ"], "ꩍ", "ꩻ", "ꩽ", "ꫫ", ["ꫮ", "ꫯ"], "ꫵ", ["ꯣ", "ꯤ"], ["ꯦ", "ꯧ"], ["ꯩ", "ꯪ"], "꯬"], false, false), peg$c169 = /^[0-9\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29\u1040-\u1049\u1090-\u1099\u17E0-\u17E9\u1810-\u1819\u1946-\u194F\u19D0-\u19D9\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\uA620-\uA629\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19]/, peg$c170 = peg$classExpectation([["0", "9"], ["٠", "٩"], ["۰", "۹"], ["߀", "߉"], ["०", "९"], ["০", "৯"], ["੦", "੯"], ["૦", "૯"], ["୦", "୯"], ["௦", "௯"], ["౦", "౯"], ["೦", "೯"], ["൦", "൯"], ["෦", "෯"], ["๐", "๙"], ["໐", "໙"], ["༠", "༩"], ["၀", "၉"], ["႐", "႙"], ["០", "៩"], ["᠐", "᠙"], ["᥆", "᥏"], ["᧐", "᧙"], ["᪀", "᪉"], ["᪐", "᪙"], ["᭐", "᭙"], ["᮰", "᮹"], ["᱀", "᱉"], ["᱐", "᱙"], ["꘠", "꘩"], ["꣐", "꣙"], ["꤀", "꤉"], ["꧐", "꧙"], ["꧰", "꧹"], ["꩐", "꩙"], ["꯰", "꯹"], ["0", "9"]], false, false), peg$c171 = /^[_\u203F-\u2040\u2054\uFE33-\uFE34\uFE4D-\uFE4F\uFF3F]/, peg$c172 = peg$classExpectation(["_", ["‿", "⁀"], "⁔", ["︳", "︴"], ["﹍", "﹏"], "_"], false, false), peg$c175 = /^[0-9a-f]/i, peg$c176 = peg$classExpectation([["0", "9"], ["a", "f"]], false, true), peg$c177 = "break", peg$c178 = peg$literalExpectation("break", false), peg$c179 = "case", peg$c180 = peg$literalExpectation("case", false), peg$c181 = "catch", peg$c182 = peg$literalExpectation("catch", false), peg$c183 = "class", peg$c184 = peg$literalExpectation("class", false), peg$c185 = "const", peg$c186 = peg$literalExpectation("const", false), peg$c187 = "continue", peg$c188 = peg$literalExpectation("continue", false), peg$c189 = "debugger", peg$c190 = peg$literalExpectation("debugger", false), peg$c191 = "default", peg$c192 = peg$literalExpectation("default", false), peg$c193 = "delete", peg$c194 = peg$literalExpectation("delete", false), peg$c195 = "do", peg$c196 = peg$literalExpectation("do", false), peg$c197 = "else", peg$c198 = peg$literalExpectation("else", false), peg$c199 = "export", peg$c200 = peg$literalExpectation("export", false), peg$c201 = "extends", peg$c202 = peg$literalExpectation("extends", false), peg$c203 = "false", peg$c204 = peg$literalExpectation("false", false), peg$c205 = "finally", peg$c206 = peg$literalExpectation("finally", false), peg$c207 = "for", peg$c208 = peg$literalExpectation("for", false), peg$c209 = "function", peg$c210 = peg$literalExpectation("function", false), peg$c213 = "if", peg$c214 = peg$literalExpectation("if", false), peg$c215 = "import", peg$c216 = peg$literalExpectation("import", false), peg$c217 = "instanceof", peg$c218 = peg$literalExpectation("instanceof", false), peg$c219 = "in", peg$c220 = peg$literalExpectation("in", false), peg$c221 = "new", peg$c222 = peg$literalExpectation("new", false), peg$c223 = "null", peg$c224 = peg$literalExpectation("null", false), peg$c225 = "return", peg$c226 = peg$literalExpectation("return", false), peg$c229 = "super", peg$c230 = peg$literalExpectation("super", false), peg$c231 = "switch", peg$c232 = peg$literalExpectation("switch", false), peg$c233 = "this", peg$c234 = peg$literalExpectation("this", false), peg$c235 = "throw", peg$c236 = peg$literalExpectation("throw", false), peg$c237 = "true", peg$c238 = peg$literalExpectation("true", false), peg$c239 = "try", peg$c240 = peg$literalExpectation("try", false), peg$c241 = "typeof", peg$c242 = peg$literalExpectation("typeof", false), peg$c243 = "var", peg$c244 = peg$literalExpectation("var", false), peg$c245 = "void", peg$c246 = peg$literalExpectation("void", false), peg$c247 = "while", peg$c248 = peg$literalExpectation("while", false), peg$c249 = "with", peg$c250 = peg$literalExpectation("with", false), peg$currPos = 0, peg$savedPos = 0, peg$posDetailsCache = [{ line: 1, column: 1 }], peg$maxFailPos = 0, peg$maxFailExpected = [], peg$silentFails = 0, peg$result;
6531
6543
  if ("startRule" in options) {
6532
6544
  if (!(options.startRule in peg$startRuleFunctions)) {
6533
6545
  throw new Error(`Can't start parsing from rule "` + options.startRule + '".');
@@ -8445,7 +8457,7 @@ function peg$parse(input, options) {
8445
8457
  function peg$parsebooleanAttribute() {
8446
8458
  var s0, s1;
8447
8459
  s0 = peg$currPos;
8448
- s1 = peg$parsetemplate();
8460
+ s1 = peg$parselogicalOrCondition();
8449
8461
  if (s1 !== peg$FAILED) {
8450
8462
  peg$savedPos = s0;
8451
8463
  s1 = peg$c78(s1);
@@ -9305,9 +9317,15 @@ function peg$parse(input, options) {
9305
9317
  s0 = peg$FAILED;
9306
9318
  }
9307
9319
  if (s0 === peg$FAILED) {
9308
- s0 = peg$parseenumCondition();
9320
+ s0 = peg$parseorderingCondition();
9309
9321
  if (s0 === peg$FAILED) {
9310
- s0 = peg$parsebooleanCondition();
9322
+ s0 = peg$parseequalityComparisonCondition();
9323
+ if (s0 === peg$FAILED) {
9324
+ s0 = peg$parseenumCondition();
9325
+ if (s0 === peg$FAILED) {
9326
+ s0 = peg$parsebooleanCondition();
9327
+ }
9328
+ }
9311
9329
  }
9312
9330
  }
9313
9331
  return s0;
@@ -9335,6 +9353,319 @@ function peg$parse(input, options) {
9335
9353
  }
9336
9354
  return s0;
9337
9355
  }
9356
+ function peg$parseorderingCondition() {
9357
+ var s0, s1, s2, s3, s4, s5;
9358
+ s0 = peg$currPos;
9359
+ s1 = peg$parseaccessor();
9360
+ if (s1 !== peg$FAILED) {
9361
+ s2 = peg$parse_();
9362
+ if (s2 !== peg$FAILED) {
9363
+ s3 = peg$parseOrderingOperator();
9364
+ if (s3 !== peg$FAILED) {
9365
+ s4 = peg$parse_();
9366
+ if (s4 !== peg$FAILED) {
9367
+ s5 = peg$parseorderingValue();
9368
+ if (s5 !== peg$FAILED) {
9369
+ peg$savedPos = s0;
9370
+ s1 = peg$c97(s1, s3, s5);
9371
+ s0 = s1;
9372
+ } else {
9373
+ peg$currPos = s0;
9374
+ s0 = peg$FAILED;
9375
+ }
9376
+ } else {
9377
+ peg$currPos = s0;
9378
+ s0 = peg$FAILED;
9379
+ }
9380
+ } else {
9381
+ peg$currPos = s0;
9382
+ s0 = peg$FAILED;
9383
+ }
9384
+ } else {
9385
+ peg$currPos = s0;
9386
+ s0 = peg$FAILED;
9387
+ }
9388
+ } else {
9389
+ peg$currPos = s0;
9390
+ s0 = peg$FAILED;
9391
+ }
9392
+ return s0;
9393
+ }
9394
+ function peg$parseorderingValue() {
9395
+ var s0, s1;
9396
+ s0 = peg$parsenumericValue();
9397
+ if (s0 === peg$FAILED) {
9398
+ s0 = peg$currPos;
9399
+ s1 = peg$parseaccessor();
9400
+ if (s1 !== peg$FAILED) {
9401
+ peg$savedPos = s0;
9402
+ s1 = peg$c98(s1);
9403
+ }
9404
+ s0 = s1;
9405
+ }
9406
+ return s0;
9407
+ }
9408
+ function peg$parseequalityComparisonCondition() {
9409
+ var s0, s1, s2, s3, s4, s5;
9410
+ s0 = peg$currPos;
9411
+ s1 = peg$parseaccessor();
9412
+ if (s1 !== peg$FAILED) {
9413
+ s2 = peg$parse_();
9414
+ if (s2 !== peg$FAILED) {
9415
+ s3 = peg$parseEqualityOperator();
9416
+ if (s3 !== peg$FAILED) {
9417
+ s4 = peg$parse_();
9418
+ if (s4 !== peg$FAILED) {
9419
+ s5 = peg$parseequalityComparisonValue();
9420
+ if (s5 !== peg$FAILED) {
9421
+ peg$savedPos = s0;
9422
+ s1 = peg$c99(s1, s3, s5);
9423
+ s0 = s1;
9424
+ } else {
9425
+ peg$currPos = s0;
9426
+ s0 = peg$FAILED;
9427
+ }
9428
+ } else {
9429
+ peg$currPos = s0;
9430
+ s0 = peg$FAILED;
9431
+ }
9432
+ } else {
9433
+ peg$currPos = s0;
9434
+ s0 = peg$FAILED;
9435
+ }
9436
+ } else {
9437
+ peg$currPos = s0;
9438
+ s0 = peg$FAILED;
9439
+ }
9440
+ } else {
9441
+ peg$currPos = s0;
9442
+ s0 = peg$FAILED;
9443
+ }
9444
+ return s0;
9445
+ }
9446
+ function peg$parseequalityComparisonValue() {
9447
+ var s0, s1;
9448
+ s0 = peg$parsenumericValue();
9449
+ if (s0 === peg$FAILED) {
9450
+ s0 = peg$currPos;
9451
+ s1 = peg$parsedottedAccessor();
9452
+ if (s1 !== peg$FAILED) {
9453
+ peg$savedPos = s0;
9454
+ s1 = peg$c98(s1);
9455
+ }
9456
+ s0 = s1;
9457
+ }
9458
+ return s0;
9459
+ }
9460
+ function peg$parsedottedAccessor() {
9461
+ var s0, s1, s2, s3, s4, s5, s6, s7;
9462
+ s0 = peg$currPos;
9463
+ s1 = peg$parseIdentifier();
9464
+ if (s1 !== peg$FAILED) {
9465
+ s2 = [];
9466
+ s3 = peg$currPos;
9467
+ s4 = peg$parse_();
9468
+ if (s4 !== peg$FAILED) {
9469
+ if (input.charCodeAt(peg$currPos) === 46) {
9470
+ s5 = peg$c100;
9471
+ peg$currPos++;
9472
+ } else {
9473
+ s5 = peg$FAILED;
9474
+ if (peg$silentFails === 0) {
9475
+ peg$fail(peg$c101);
9476
+ }
9477
+ }
9478
+ if (s5 !== peg$FAILED) {
9479
+ s6 = peg$parse_();
9480
+ if (s6 !== peg$FAILED) {
9481
+ s7 = peg$parseIdentifier();
9482
+ if (s7 !== peg$FAILED) {
9483
+ s4 = [s4, s5, s6, s7];
9484
+ s3 = s4;
9485
+ } else {
9486
+ peg$currPos = s3;
9487
+ s3 = peg$FAILED;
9488
+ }
9489
+ } else {
9490
+ peg$currPos = s3;
9491
+ s3 = peg$FAILED;
9492
+ }
9493
+ } else {
9494
+ peg$currPos = s3;
9495
+ s3 = peg$FAILED;
9496
+ }
9497
+ } else {
9498
+ peg$currPos = s3;
9499
+ s3 = peg$FAILED;
9500
+ }
9501
+ if (s3 !== peg$FAILED) {
9502
+ while (s3 !== peg$FAILED) {
9503
+ s2.push(s3);
9504
+ s3 = peg$currPos;
9505
+ s4 = peg$parse_();
9506
+ if (s4 !== peg$FAILED) {
9507
+ if (input.charCodeAt(peg$currPos) === 46) {
9508
+ s5 = peg$c100;
9509
+ peg$currPos++;
9510
+ } else {
9511
+ s5 = peg$FAILED;
9512
+ if (peg$silentFails === 0) {
9513
+ peg$fail(peg$c101);
9514
+ }
9515
+ }
9516
+ if (s5 !== peg$FAILED) {
9517
+ s6 = peg$parse_();
9518
+ if (s6 !== peg$FAILED) {
9519
+ s7 = peg$parseIdentifier();
9520
+ if (s7 !== peg$FAILED) {
9521
+ s4 = [s4, s5, s6, s7];
9522
+ s3 = s4;
9523
+ } else {
9524
+ peg$currPos = s3;
9525
+ s3 = peg$FAILED;
9526
+ }
9527
+ } else {
9528
+ peg$currPos = s3;
9529
+ s3 = peg$FAILED;
9530
+ }
9531
+ } else {
9532
+ peg$currPos = s3;
9533
+ s3 = peg$FAILED;
9534
+ }
9535
+ } else {
9536
+ peg$currPos = s3;
9537
+ s3 = peg$FAILED;
9538
+ }
9539
+ }
9540
+ } else {
9541
+ s2 = peg$FAILED;
9542
+ }
9543
+ if (s2 !== peg$FAILED) {
9544
+ peg$savedPos = s0;
9545
+ s1 = peg$c102(s1, s2);
9546
+ s0 = s1;
9547
+ } else {
9548
+ peg$currPos = s0;
9549
+ s0 = peg$FAILED;
9550
+ }
9551
+ } else {
9552
+ peg$currPos = s0;
9553
+ s0 = peg$FAILED;
9554
+ }
9555
+ return s0;
9556
+ }
9557
+ function peg$parsenumericValue() {
9558
+ var s0, s1, s2, s3, s4, s5, s6;
9559
+ s0 = peg$currPos;
9560
+ if (input.charCodeAt(peg$currPos) === 45) {
9561
+ s1 = peg$c103;
9562
+ peg$currPos++;
9563
+ } else {
9564
+ s1 = peg$FAILED;
9565
+ if (peg$silentFails === 0) {
9566
+ peg$fail(peg$c104);
9567
+ }
9568
+ }
9569
+ if (s1 === peg$FAILED) {
9570
+ s1 = null;
9571
+ }
9572
+ if (s1 !== peg$FAILED) {
9573
+ s2 = [];
9574
+ if (peg$c105.test(input.charAt(peg$currPos))) {
9575
+ s3 = input.charAt(peg$currPos);
9576
+ peg$currPos++;
9577
+ } else {
9578
+ s3 = peg$FAILED;
9579
+ if (peg$silentFails === 0) {
9580
+ peg$fail(peg$c106);
9581
+ }
9582
+ }
9583
+ if (s3 !== peg$FAILED) {
9584
+ while (s3 !== peg$FAILED) {
9585
+ s2.push(s3);
9586
+ if (peg$c105.test(input.charAt(peg$currPos))) {
9587
+ s3 = input.charAt(peg$currPos);
9588
+ peg$currPos++;
9589
+ } else {
9590
+ s3 = peg$FAILED;
9591
+ if (peg$silentFails === 0) {
9592
+ peg$fail(peg$c106);
9593
+ }
9594
+ }
9595
+ }
9596
+ } else {
9597
+ s2 = peg$FAILED;
9598
+ }
9599
+ if (s2 !== peg$FAILED) {
9600
+ s3 = peg$currPos;
9601
+ if (input.charCodeAt(peg$currPos) === 46) {
9602
+ s4 = peg$c100;
9603
+ peg$currPos++;
9604
+ } else {
9605
+ s4 = peg$FAILED;
9606
+ if (peg$silentFails === 0) {
9607
+ peg$fail(peg$c101);
9608
+ }
9609
+ }
9610
+ if (s4 !== peg$FAILED) {
9611
+ s5 = [];
9612
+ if (peg$c105.test(input.charAt(peg$currPos))) {
9613
+ s6 = input.charAt(peg$currPos);
9614
+ peg$currPos++;
9615
+ } else {
9616
+ s6 = peg$FAILED;
9617
+ if (peg$silentFails === 0) {
9618
+ peg$fail(peg$c106);
9619
+ }
9620
+ }
9621
+ if (s6 !== peg$FAILED) {
9622
+ while (s6 !== peg$FAILED) {
9623
+ s5.push(s6);
9624
+ if (peg$c105.test(input.charAt(peg$currPos))) {
9625
+ s6 = input.charAt(peg$currPos);
9626
+ peg$currPos++;
9627
+ } else {
9628
+ s6 = peg$FAILED;
9629
+ if (peg$silentFails === 0) {
9630
+ peg$fail(peg$c106);
9631
+ }
9632
+ }
9633
+ }
9634
+ } else {
9635
+ s5 = peg$FAILED;
9636
+ }
9637
+ if (s5 !== peg$FAILED) {
9638
+ s4 = [s4, s5];
9639
+ s3 = s4;
9640
+ } else {
9641
+ peg$currPos = s3;
9642
+ s3 = peg$FAILED;
9643
+ }
9644
+ } else {
9645
+ peg$currPos = s3;
9646
+ s3 = peg$FAILED;
9647
+ }
9648
+ if (s3 === peg$FAILED) {
9649
+ s3 = null;
9650
+ }
9651
+ if (s3 !== peg$FAILED) {
9652
+ peg$savedPos = s0;
9653
+ s1 = peg$c10();
9654
+ s0 = s1;
9655
+ } else {
9656
+ peg$currPos = s0;
9657
+ s0 = peg$FAILED;
9658
+ }
9659
+ } else {
9660
+ peg$currPos = s0;
9661
+ s0 = peg$FAILED;
9662
+ }
9663
+ } else {
9664
+ peg$currPos = s0;
9665
+ s0 = peg$FAILED;
9666
+ }
9667
+ return s0;
9668
+ }
9338
9669
  function peg$parseenumCondition() {
9339
9670
  var s0, s1, s2, s3, s4, s5;
9340
9671
  s0 = peg$currPos;
@@ -9349,7 +9680,7 @@ function peg$parse(input, options) {
9349
9680
  s5 = peg$parseIdentifier();
9350
9681
  if (s5 !== peg$FAILED) {
9351
9682
  peg$savedPos = s0;
9352
- s1 = peg$c97(s1, s3, s5);
9683
+ s1 = peg$c107(s1, s3, s5);
9353
9684
  s0 = s1;
9354
9685
  } else {
9355
9686
  peg$currPos = s0;
@@ -9385,17 +9716,17 @@ function peg$parse(input, options) {
9385
9716
  var s0, s1;
9386
9717
  s0 = peg$currPos;
9387
9718
  if (input.charCodeAt(peg$currPos) === 46) {
9388
- s1 = peg$c98;
9719
+ s1 = peg$c100;
9389
9720
  peg$currPos++;
9390
9721
  } else {
9391
9722
  s1 = peg$FAILED;
9392
9723
  if (peg$silentFails === 0) {
9393
- peg$fail(peg$c99);
9724
+ peg$fail(peg$c101);
9394
9725
  }
9395
9726
  }
9396
9727
  if (s1 !== peg$FAILED) {
9397
9728
  peg$savedPos = s0;
9398
- s1 = peg$c100();
9729
+ s1 = peg$c108();
9399
9730
  }
9400
9731
  s0 = s1;
9401
9732
  return s0;
@@ -9410,12 +9741,12 @@ function peg$parse(input, options) {
9410
9741
  s4 = peg$parse_();
9411
9742
  if (s4 !== peg$FAILED) {
9412
9743
  if (input.charCodeAt(peg$currPos) === 46) {
9413
- s5 = peg$c98;
9744
+ s5 = peg$c100;
9414
9745
  peg$currPos++;
9415
9746
  } else {
9416
9747
  s5 = peg$FAILED;
9417
9748
  if (peg$silentFails === 0) {
9418
- peg$fail(peg$c99);
9749
+ peg$fail(peg$c101);
9419
9750
  }
9420
9751
  }
9421
9752
  if (s5 !== peg$FAILED) {
@@ -9447,12 +9778,12 @@ function peg$parse(input, options) {
9447
9778
  s4 = peg$parse_();
9448
9779
  if (s4 !== peg$FAILED) {
9449
9780
  if (input.charCodeAt(peg$currPos) === 46) {
9450
- s5 = peg$c98;
9781
+ s5 = peg$c100;
9451
9782
  peg$currPos++;
9452
9783
  } else {
9453
9784
  s5 = peg$FAILED;
9454
9785
  if (peg$silentFails === 0) {
9455
- peg$fail(peg$c99);
9786
+ peg$fail(peg$c101);
9456
9787
  }
9457
9788
  }
9458
9789
  if (s5 !== peg$FAILED) {
@@ -9481,7 +9812,7 @@ function peg$parse(input, options) {
9481
9812
  }
9482
9813
  if (s2 !== peg$FAILED) {
9483
9814
  peg$savedPos = s0;
9484
- s1 = peg$c101(s1, s2);
9815
+ s1 = peg$c109(s1, s2);
9485
9816
  s0 = s1;
9486
9817
  } else {
9487
9818
  peg$currPos = s0;
@@ -9500,25 +9831,25 @@ function peg$parse(input, options) {
9500
9831
  s1 = peg$parse_();
9501
9832
  if (s1 !== peg$FAILED) {
9502
9833
  s2 = [];
9503
- if (peg$c103.test(input.charAt(peg$currPos))) {
9834
+ if (peg$c105.test(input.charAt(peg$currPos))) {
9504
9835
  s3 = input.charAt(peg$currPos);
9505
9836
  peg$currPos++;
9506
9837
  } else {
9507
9838
  s3 = peg$FAILED;
9508
9839
  if (peg$silentFails === 0) {
9509
- peg$fail(peg$c104);
9840
+ peg$fail(peg$c106);
9510
9841
  }
9511
9842
  }
9512
9843
  if (s3 !== peg$FAILED) {
9513
9844
  while (s3 !== peg$FAILED) {
9514
9845
  s2.push(s3);
9515
- if (peg$c103.test(input.charAt(peg$currPos))) {
9846
+ if (peg$c105.test(input.charAt(peg$currPos))) {
9516
9847
  s3 = input.charAt(peg$currPos);
9517
9848
  peg$currPos++;
9518
9849
  } else {
9519
9850
  s3 = peg$FAILED;
9520
9851
  if (peg$silentFails === 0) {
9521
- peg$fail(peg$c104);
9852
+ peg$fail(peg$c106);
9522
9853
  }
9523
9854
  }
9524
9855
  }
@@ -9541,7 +9872,7 @@ function peg$parse(input, options) {
9541
9872
  if (s0 === peg$FAILED) {
9542
9873
  s1 = peg$FAILED;
9543
9874
  if (peg$silentFails === 0) {
9544
- peg$fail(peg$c102);
9875
+ peg$fail(peg$c110);
9545
9876
  }
9546
9877
  }
9547
9878
  return s0;
@@ -9575,7 +9906,7 @@ function peg$parse(input, options) {
9575
9906
  if (s0 === peg$FAILED) {
9576
9907
  s1 = peg$FAILED;
9577
9908
  if (peg$silentFails === 0) {
9578
- peg$fail(peg$c105);
9909
+ peg$fail(peg$c111);
9579
9910
  }
9580
9911
  }
9581
9912
  return s0;
@@ -9584,25 +9915,25 @@ function peg$parse(input, options) {
9584
9915
  var s0, s1, s2;
9585
9916
  s0 = peg$currPos;
9586
9917
  s1 = [];
9587
- if (peg$c106.test(input.charAt(peg$currPos))) {
9918
+ if (peg$c112.test(input.charAt(peg$currPos))) {
9588
9919
  s2 = input.charAt(peg$currPos);
9589
9920
  peg$currPos++;
9590
9921
  } else {
9591
9922
  s2 = peg$FAILED;
9592
9923
  if (peg$silentFails === 0) {
9593
- peg$fail(peg$c107);
9924
+ peg$fail(peg$c113);
9594
9925
  }
9595
9926
  }
9596
9927
  if (s2 !== peg$FAILED) {
9597
9928
  while (s2 !== peg$FAILED) {
9598
9929
  s1.push(s2);
9599
- if (peg$c106.test(input.charAt(peg$currPos))) {
9930
+ if (peg$c112.test(input.charAt(peg$currPos))) {
9600
9931
  s2 = input.charAt(peg$currPos);
9601
9932
  peg$currPos++;
9602
9933
  } else {
9603
9934
  s2 = peg$FAILED;
9604
9935
  if (peg$silentFails === 0) {
9605
- peg$fail(peg$c107);
9936
+ peg$fail(peg$c113);
9606
9937
  }
9607
9938
  }
9608
9939
  }
@@ -9611,7 +9942,7 @@ function peg$parse(input, options) {
9611
9942
  }
9612
9943
  if (s1 !== peg$FAILED) {
9613
9944
  peg$savedPos = s0;
9614
- s1 = peg$c108();
9945
+ s1 = peg$c114();
9615
9946
  }
9616
9947
  s0 = s1;
9617
9948
  return s0;
@@ -9619,55 +9950,101 @@ function peg$parse(input, options) {
9619
9950
  function peg$parsebang() {
9620
9951
  var s0;
9621
9952
  if (input.charCodeAt(peg$currPos) === 33) {
9622
- s0 = peg$c109;
9953
+ s0 = peg$c115;
9623
9954
  peg$currPos++;
9624
9955
  } else {
9625
9956
  s0 = peg$FAILED;
9626
9957
  if (peg$silentFails === 0) {
9627
- peg$fail(peg$c110);
9958
+ peg$fail(peg$c116);
9628
9959
  }
9629
9960
  }
9630
9961
  return s0;
9631
9962
  }
9632
9963
  function peg$parseEqualityOperator() {
9633
9964
  var s0;
9634
- if (input.substr(peg$currPos, 3) === peg$c111) {
9635
- s0 = peg$c111;
9965
+ if (input.substr(peg$currPos, 3) === peg$c117) {
9966
+ s0 = peg$c117;
9636
9967
  peg$currPos += 3;
9637
9968
  } else {
9638
9969
  s0 = peg$FAILED;
9639
9970
  if (peg$silentFails === 0) {
9640
- peg$fail(peg$c112);
9971
+ peg$fail(peg$c118);
9641
9972
  }
9642
9973
  }
9643
9974
  if (s0 === peg$FAILED) {
9644
- if (input.substr(peg$currPos, 3) === peg$c113) {
9645
- s0 = peg$c113;
9975
+ if (input.substr(peg$currPos, 3) === peg$c119) {
9976
+ s0 = peg$c119;
9646
9977
  peg$currPos += 3;
9647
9978
  } else {
9648
9979
  s0 = peg$FAILED;
9649
9980
  if (peg$silentFails === 0) {
9650
- peg$fail(peg$c114);
9981
+ peg$fail(peg$c120);
9651
9982
  }
9652
9983
  }
9653
9984
  if (s0 === peg$FAILED) {
9654
- if (input.substr(peg$currPos, 2) === peg$c115) {
9655
- s0 = peg$c115;
9985
+ if (input.substr(peg$currPos, 2) === peg$c121) {
9986
+ s0 = peg$c121;
9656
9987
  peg$currPos += 2;
9657
9988
  } else {
9658
9989
  s0 = peg$FAILED;
9659
9990
  if (peg$silentFails === 0) {
9660
- peg$fail(peg$c116);
9991
+ peg$fail(peg$c122);
9661
9992
  }
9662
9993
  }
9663
9994
  if (s0 === peg$FAILED) {
9664
- if (input.substr(peg$currPos, 2) === peg$c117) {
9665
- s0 = peg$c117;
9995
+ if (input.substr(peg$currPos, 2) === peg$c123) {
9996
+ s0 = peg$c123;
9666
9997
  peg$currPos += 2;
9667
9998
  } else {
9668
9999
  s0 = peg$FAILED;
9669
10000
  if (peg$silentFails === 0) {
9670
- peg$fail(peg$c118);
10001
+ peg$fail(peg$c124);
10002
+ }
10003
+ }
10004
+ }
10005
+ }
10006
+ }
10007
+ return s0;
10008
+ }
10009
+ function peg$parseOrderingOperator() {
10010
+ var s0;
10011
+ if (input.substr(peg$currPos, 2) === peg$c125) {
10012
+ s0 = peg$c125;
10013
+ peg$currPos += 2;
10014
+ } else {
10015
+ s0 = peg$FAILED;
10016
+ if (peg$silentFails === 0) {
10017
+ peg$fail(peg$c126);
10018
+ }
10019
+ }
10020
+ if (s0 === peg$FAILED) {
10021
+ if (input.substr(peg$currPos, 2) === peg$c127) {
10022
+ s0 = peg$c127;
10023
+ peg$currPos += 2;
10024
+ } else {
10025
+ s0 = peg$FAILED;
10026
+ if (peg$silentFails === 0) {
10027
+ peg$fail(peg$c128);
10028
+ }
10029
+ }
10030
+ if (s0 === peg$FAILED) {
10031
+ if (input.charCodeAt(peg$currPos) === 60) {
10032
+ s0 = peg$c129;
10033
+ peg$currPos++;
10034
+ } else {
10035
+ s0 = peg$FAILED;
10036
+ if (peg$silentFails === 0) {
10037
+ peg$fail(peg$c130);
10038
+ }
10039
+ }
10040
+ if (s0 === peg$FAILED) {
10041
+ if (input.charCodeAt(peg$currPos) === 62) {
10042
+ s0 = peg$c131;
10043
+ peg$currPos++;
10044
+ } else {
10045
+ s0 = peg$FAILED;
10046
+ if (peg$silentFails === 0) {
10047
+ peg$fail(peg$c132);
9671
10048
  }
9672
10049
  }
9673
10050
  }
@@ -9692,7 +10069,7 @@ function peg$parse(input, options) {
9692
10069
  s2 = peg$parseIdentifierName();
9693
10070
  if (s2 !== peg$FAILED) {
9694
10071
  peg$savedPos = s0;
9695
- s1 = peg$c119();
10072
+ s1 = peg$c133();
9696
10073
  s0 = s1;
9697
10074
  } else {
9698
10075
  peg$currPos = s0;
@@ -9718,7 +10095,7 @@ function peg$parse(input, options) {
9718
10095
  }
9719
10096
  if (s2 !== peg$FAILED) {
9720
10097
  peg$savedPos = s0;
9721
- s1 = peg$c121(s1, s2);
10098
+ s1 = peg$c135(s1, s2);
9722
10099
  s0 = s1;
9723
10100
  } else {
9724
10101
  peg$currPos = s0;
@@ -9732,7 +10109,7 @@ function peg$parse(input, options) {
9732
10109
  if (s0 === peg$FAILED) {
9733
10110
  s1 = peg$FAILED;
9734
10111
  if (peg$silentFails === 0) {
9735
- peg$fail(peg$c120);
10112
+ peg$fail(peg$c134);
9736
10113
  }
9737
10114
  }
9738
10115
  return s0;
@@ -9742,40 +10119,40 @@ function peg$parse(input, options) {
9742
10119
  s0 = peg$parseUnicodeLetter();
9743
10120
  if (s0 === peg$FAILED) {
9744
10121
  if (input.charCodeAt(peg$currPos) === 36) {
9745
- s0 = peg$c122;
10122
+ s0 = peg$c136;
9746
10123
  peg$currPos++;
9747
10124
  } else {
9748
10125
  s0 = peg$FAILED;
9749
10126
  if (peg$silentFails === 0) {
9750
- peg$fail(peg$c123);
10127
+ peg$fail(peg$c137);
9751
10128
  }
9752
10129
  }
9753
10130
  if (s0 === peg$FAILED) {
9754
10131
  if (input.charCodeAt(peg$currPos) === 95) {
9755
- s0 = peg$c124;
10132
+ s0 = peg$c138;
9756
10133
  peg$currPos++;
9757
10134
  } else {
9758
10135
  s0 = peg$FAILED;
9759
10136
  if (peg$silentFails === 0) {
9760
- peg$fail(peg$c125);
10137
+ peg$fail(peg$c139);
9761
10138
  }
9762
10139
  }
9763
10140
  if (s0 === peg$FAILED) {
9764
10141
  s0 = peg$currPos;
9765
10142
  if (input.charCodeAt(peg$currPos) === 92) {
9766
- s1 = peg$c126;
10143
+ s1 = peg$c140;
9767
10144
  peg$currPos++;
9768
10145
  } else {
9769
10146
  s1 = peg$FAILED;
9770
10147
  if (peg$silentFails === 0) {
9771
- peg$fail(peg$c127);
10148
+ peg$fail(peg$c141);
9772
10149
  }
9773
10150
  }
9774
10151
  if (s1 !== peg$FAILED) {
9775
10152
  s2 = peg$parseUnicodeEscapeSequence();
9776
10153
  if (s2 !== peg$FAILED) {
9777
10154
  peg$savedPos = s0;
9778
- s1 = peg$c128(s2);
10155
+ s1 = peg$c142(s2);
9779
10156
  s0 = s1;
9780
10157
  } else {
9781
10158
  peg$currPos = s0;
@@ -9801,22 +10178,22 @@ function peg$parse(input, options) {
9801
10178
  s0 = peg$parsePc();
9802
10179
  if (s0 === peg$FAILED) {
9803
10180
  if (input.charCodeAt(peg$currPos) === 8204) {
9804
- s0 = peg$c129;
10181
+ s0 = peg$c143;
9805
10182
  peg$currPos++;
9806
10183
  } else {
9807
10184
  s0 = peg$FAILED;
9808
10185
  if (peg$silentFails === 0) {
9809
- peg$fail(peg$c130);
10186
+ peg$fail(peg$c144);
9810
10187
  }
9811
10188
  }
9812
10189
  if (s0 === peg$FAILED) {
9813
10190
  if (input.charCodeAt(peg$currPos) === 8205) {
9814
- s0 = peg$c131;
10191
+ s0 = peg$c145;
9815
10192
  peg$currPos++;
9816
10193
  } else {
9817
10194
  s0 = peg$FAILED;
9818
10195
  if (peg$silentFails === 0) {
9819
- peg$fail(peg$c132);
10196
+ peg$fail(peg$c146);
9820
10197
  }
9821
10198
  }
9822
10199
  }
@@ -9864,12 +10241,12 @@ function peg$parse(input, options) {
9864
10241
  var s0, s1, s2, s3, s4, s5, s6, s7;
9865
10242
  s0 = peg$currPos;
9866
10243
  if (input.charCodeAt(peg$currPos) === 117) {
9867
- s1 = peg$c133;
10244
+ s1 = peg$c147;
9868
10245
  peg$currPos++;
9869
10246
  } else {
9870
10247
  s1 = peg$FAILED;
9871
10248
  if (peg$silentFails === 0) {
9872
- peg$fail(peg$c134);
10249
+ peg$fail(peg$c148);
9873
10250
  }
9874
10251
  }
9875
10252
  if (s1 !== peg$FAILED) {
@@ -9908,7 +10285,7 @@ function peg$parse(input, options) {
9908
10285
  }
9909
10286
  if (s2 !== peg$FAILED) {
9910
10287
  peg$savedPos = s0;
9911
- s1 = peg$c135(s2);
10288
+ s1 = peg$c149(s2);
9912
10289
  s0 = s1;
9913
10290
  } else {
9914
10291
  peg$currPos = s0;
@@ -10037,7 +10414,7 @@ function peg$parse(input, options) {
10037
10414
  s1 = peg$parseNullToken();
10038
10415
  if (s1 !== peg$FAILED) {
10039
10416
  peg$savedPos = s0;
10040
- s1 = peg$c136();
10417
+ s1 = peg$c150();
10041
10418
  }
10042
10419
  s0 = s1;
10043
10420
  return s0;
@@ -10048,7 +10425,7 @@ function peg$parse(input, options) {
10048
10425
  s1 = peg$parseTrueToken();
10049
10426
  if (s1 !== peg$FAILED) {
10050
10427
  peg$savedPos = s0;
10051
- s1 = peg$c137();
10428
+ s1 = peg$c151();
10052
10429
  }
10053
10430
  s0 = s1;
10054
10431
  if (s0 === peg$FAILED) {
@@ -10056,7 +10433,7 @@ function peg$parse(input, options) {
10056
10433
  s1 = peg$parseFalseToken();
10057
10434
  if (s1 !== peg$FAILED) {
10058
10435
  peg$savedPos = s0;
10059
- s1 = peg$c138();
10436
+ s1 = peg$c152();
10060
10437
  }
10061
10438
  s0 = s1;
10062
10439
  }
@@ -10064,143 +10441,143 @@ function peg$parse(input, options) {
10064
10441
  }
10065
10442
  function peg$parseLu() {
10066
10443
  var s0;
10067
- if (peg$c139.test(input.charAt(peg$currPos))) {
10444
+ if (peg$c153.test(input.charAt(peg$currPos))) {
10068
10445
  s0 = input.charAt(peg$currPos);
10069
10446
  peg$currPos++;
10070
10447
  } else {
10071
10448
  s0 = peg$FAILED;
10072
10449
  if (peg$silentFails === 0) {
10073
- peg$fail(peg$c140);
10450
+ peg$fail(peg$c154);
10074
10451
  }
10075
10452
  }
10076
10453
  return s0;
10077
10454
  }
10078
10455
  function peg$parseLl() {
10079
10456
  var s0;
10080
- if (peg$c141.test(input.charAt(peg$currPos))) {
10457
+ if (peg$c155.test(input.charAt(peg$currPos))) {
10081
10458
  s0 = input.charAt(peg$currPos);
10082
10459
  peg$currPos++;
10083
10460
  } else {
10084
10461
  s0 = peg$FAILED;
10085
10462
  if (peg$silentFails === 0) {
10086
- peg$fail(peg$c142);
10463
+ peg$fail(peg$c156);
10087
10464
  }
10088
10465
  }
10089
10466
  return s0;
10090
10467
  }
10091
10468
  function peg$parseLt() {
10092
10469
  var s0;
10093
- if (peg$c143.test(input.charAt(peg$currPos))) {
10470
+ if (peg$c157.test(input.charAt(peg$currPos))) {
10094
10471
  s0 = input.charAt(peg$currPos);
10095
10472
  peg$currPos++;
10096
10473
  } else {
10097
10474
  s0 = peg$FAILED;
10098
10475
  if (peg$silentFails === 0) {
10099
- peg$fail(peg$c144);
10476
+ peg$fail(peg$c158);
10100
10477
  }
10101
10478
  }
10102
10479
  return s0;
10103
10480
  }
10104
10481
  function peg$parseLm() {
10105
10482
  var s0;
10106
- if (peg$c145.test(input.charAt(peg$currPos))) {
10483
+ if (peg$c159.test(input.charAt(peg$currPos))) {
10107
10484
  s0 = input.charAt(peg$currPos);
10108
10485
  peg$currPos++;
10109
10486
  } else {
10110
10487
  s0 = peg$FAILED;
10111
10488
  if (peg$silentFails === 0) {
10112
- peg$fail(peg$c146);
10489
+ peg$fail(peg$c160);
10113
10490
  }
10114
10491
  }
10115
10492
  return s0;
10116
10493
  }
10117
10494
  function peg$parseLo() {
10118
10495
  var s0;
10119
- if (peg$c147.test(input.charAt(peg$currPos))) {
10496
+ if (peg$c161.test(input.charAt(peg$currPos))) {
10120
10497
  s0 = input.charAt(peg$currPos);
10121
10498
  peg$currPos++;
10122
10499
  } else {
10123
10500
  s0 = peg$FAILED;
10124
10501
  if (peg$silentFails === 0) {
10125
- peg$fail(peg$c148);
10502
+ peg$fail(peg$c162);
10126
10503
  }
10127
10504
  }
10128
10505
  return s0;
10129
10506
  }
10130
10507
  function peg$parseNl() {
10131
10508
  var s0;
10132
- if (peg$c149.test(input.charAt(peg$currPos))) {
10509
+ if (peg$c163.test(input.charAt(peg$currPos))) {
10133
10510
  s0 = input.charAt(peg$currPos);
10134
10511
  peg$currPos++;
10135
10512
  } else {
10136
10513
  s0 = peg$FAILED;
10137
10514
  if (peg$silentFails === 0) {
10138
- peg$fail(peg$c150);
10515
+ peg$fail(peg$c164);
10139
10516
  }
10140
10517
  }
10141
10518
  return s0;
10142
10519
  }
10143
10520
  function peg$parseMn() {
10144
10521
  var s0;
10145
- if (peg$c151.test(input.charAt(peg$currPos))) {
10522
+ if (peg$c165.test(input.charAt(peg$currPos))) {
10146
10523
  s0 = input.charAt(peg$currPos);
10147
10524
  peg$currPos++;
10148
10525
  } else {
10149
10526
  s0 = peg$FAILED;
10150
10527
  if (peg$silentFails === 0) {
10151
- peg$fail(peg$c152);
10528
+ peg$fail(peg$c166);
10152
10529
  }
10153
10530
  }
10154
10531
  return s0;
10155
10532
  }
10156
10533
  function peg$parseMc() {
10157
10534
  var s0;
10158
- if (peg$c153.test(input.charAt(peg$currPos))) {
10535
+ if (peg$c167.test(input.charAt(peg$currPos))) {
10159
10536
  s0 = input.charAt(peg$currPos);
10160
10537
  peg$currPos++;
10161
10538
  } else {
10162
10539
  s0 = peg$FAILED;
10163
10540
  if (peg$silentFails === 0) {
10164
- peg$fail(peg$c154);
10541
+ peg$fail(peg$c168);
10165
10542
  }
10166
10543
  }
10167
10544
  return s0;
10168
10545
  }
10169
10546
  function peg$parseNd() {
10170
10547
  var s0;
10171
- if (peg$c155.test(input.charAt(peg$currPos))) {
10548
+ if (peg$c169.test(input.charAt(peg$currPos))) {
10172
10549
  s0 = input.charAt(peg$currPos);
10173
10550
  peg$currPos++;
10174
10551
  } else {
10175
10552
  s0 = peg$FAILED;
10176
10553
  if (peg$silentFails === 0) {
10177
- peg$fail(peg$c156);
10554
+ peg$fail(peg$c170);
10178
10555
  }
10179
10556
  }
10180
10557
  return s0;
10181
10558
  }
10182
10559
  function peg$parsePc() {
10183
10560
  var s0;
10184
- if (peg$c157.test(input.charAt(peg$currPos))) {
10561
+ if (peg$c171.test(input.charAt(peg$currPos))) {
10185
10562
  s0 = input.charAt(peg$currPos);
10186
10563
  peg$currPos++;
10187
10564
  } else {
10188
10565
  s0 = peg$FAILED;
10189
10566
  if (peg$silentFails === 0) {
10190
- peg$fail(peg$c158);
10567
+ peg$fail(peg$c172);
10191
10568
  }
10192
10569
  }
10193
10570
  return s0;
10194
10571
  }
10195
10572
  function peg$parseHexDigit() {
10196
10573
  var s0;
10197
- if (peg$c161.test(input.charAt(peg$currPos))) {
10574
+ if (peg$c175.test(input.charAt(peg$currPos))) {
10198
10575
  s0 = input.charAt(peg$currPos);
10199
10576
  peg$currPos++;
10200
10577
  } else {
10201
10578
  s0 = peg$FAILED;
10202
10579
  if (peg$silentFails === 0) {
10203
- peg$fail(peg$c162);
10580
+ peg$fail(peg$c176);
10204
10581
  }
10205
10582
  }
10206
10583
  return s0;
@@ -10208,13 +10585,13 @@ function peg$parse(input, options) {
10208
10585
  function peg$parseBreakToken() {
10209
10586
  var s0, s1, s2, s3;
10210
10587
  s0 = peg$currPos;
10211
- if (input.substr(peg$currPos, 5) === peg$c163) {
10212
- s1 = peg$c163;
10588
+ if (input.substr(peg$currPos, 5) === peg$c177) {
10589
+ s1 = peg$c177;
10213
10590
  peg$currPos += 5;
10214
10591
  } else {
10215
10592
  s1 = peg$FAILED;
10216
10593
  if (peg$silentFails === 0) {
10217
- peg$fail(peg$c164);
10594
+ peg$fail(peg$c178);
10218
10595
  }
10219
10596
  }
10220
10597
  if (s1 !== peg$FAILED) {
@@ -10244,13 +10621,13 @@ function peg$parse(input, options) {
10244
10621
  function peg$parseCaseToken() {
10245
10622
  var s0, s1, s2, s3;
10246
10623
  s0 = peg$currPos;
10247
- if (input.substr(peg$currPos, 4) === peg$c165) {
10248
- s1 = peg$c165;
10624
+ if (input.substr(peg$currPos, 4) === peg$c179) {
10625
+ s1 = peg$c179;
10249
10626
  peg$currPos += 4;
10250
10627
  } else {
10251
10628
  s1 = peg$FAILED;
10252
10629
  if (peg$silentFails === 0) {
10253
- peg$fail(peg$c166);
10630
+ peg$fail(peg$c180);
10254
10631
  }
10255
10632
  }
10256
10633
  if (s1 !== peg$FAILED) {
@@ -10280,13 +10657,13 @@ function peg$parse(input, options) {
10280
10657
  function peg$parseCatchToken() {
10281
10658
  var s0, s1, s2, s3;
10282
10659
  s0 = peg$currPos;
10283
- if (input.substr(peg$currPos, 5) === peg$c167) {
10284
- s1 = peg$c167;
10660
+ if (input.substr(peg$currPos, 5) === peg$c181) {
10661
+ s1 = peg$c181;
10285
10662
  peg$currPos += 5;
10286
10663
  } else {
10287
10664
  s1 = peg$FAILED;
10288
10665
  if (peg$silentFails === 0) {
10289
- peg$fail(peg$c168);
10666
+ peg$fail(peg$c182);
10290
10667
  }
10291
10668
  }
10292
10669
  if (s1 !== peg$FAILED) {
@@ -10316,13 +10693,13 @@ function peg$parse(input, options) {
10316
10693
  function peg$parseClassToken() {
10317
10694
  var s0, s1, s2, s3;
10318
10695
  s0 = peg$currPos;
10319
- if (input.substr(peg$currPos, 5) === peg$c169) {
10320
- s1 = peg$c169;
10696
+ if (input.substr(peg$currPos, 5) === peg$c183) {
10697
+ s1 = peg$c183;
10321
10698
  peg$currPos += 5;
10322
10699
  } else {
10323
10700
  s1 = peg$FAILED;
10324
10701
  if (peg$silentFails === 0) {
10325
- peg$fail(peg$c170);
10702
+ peg$fail(peg$c184);
10326
10703
  }
10327
10704
  }
10328
10705
  if (s1 !== peg$FAILED) {
@@ -10352,13 +10729,13 @@ function peg$parse(input, options) {
10352
10729
  function peg$parseConstToken() {
10353
10730
  var s0, s1, s2, s3;
10354
10731
  s0 = peg$currPos;
10355
- if (input.substr(peg$currPos, 5) === peg$c171) {
10356
- s1 = peg$c171;
10732
+ if (input.substr(peg$currPos, 5) === peg$c185) {
10733
+ s1 = peg$c185;
10357
10734
  peg$currPos += 5;
10358
10735
  } else {
10359
10736
  s1 = peg$FAILED;
10360
10737
  if (peg$silentFails === 0) {
10361
- peg$fail(peg$c172);
10738
+ peg$fail(peg$c186);
10362
10739
  }
10363
10740
  }
10364
10741
  if (s1 !== peg$FAILED) {
@@ -10388,13 +10765,13 @@ function peg$parse(input, options) {
10388
10765
  function peg$parseContinueToken() {
10389
10766
  var s0, s1, s2, s3;
10390
10767
  s0 = peg$currPos;
10391
- if (input.substr(peg$currPos, 8) === peg$c173) {
10392
- s1 = peg$c173;
10768
+ if (input.substr(peg$currPos, 8) === peg$c187) {
10769
+ s1 = peg$c187;
10393
10770
  peg$currPos += 8;
10394
10771
  } else {
10395
10772
  s1 = peg$FAILED;
10396
10773
  if (peg$silentFails === 0) {
10397
- peg$fail(peg$c174);
10774
+ peg$fail(peg$c188);
10398
10775
  }
10399
10776
  }
10400
10777
  if (s1 !== peg$FAILED) {
@@ -10424,13 +10801,13 @@ function peg$parse(input, options) {
10424
10801
  function peg$parseDebuggerToken() {
10425
10802
  var s0, s1, s2, s3;
10426
10803
  s0 = peg$currPos;
10427
- if (input.substr(peg$currPos, 8) === peg$c175) {
10428
- s1 = peg$c175;
10804
+ if (input.substr(peg$currPos, 8) === peg$c189) {
10805
+ s1 = peg$c189;
10429
10806
  peg$currPos += 8;
10430
10807
  } else {
10431
10808
  s1 = peg$FAILED;
10432
10809
  if (peg$silentFails === 0) {
10433
- peg$fail(peg$c176);
10810
+ peg$fail(peg$c190);
10434
10811
  }
10435
10812
  }
10436
10813
  if (s1 !== peg$FAILED) {
@@ -10460,13 +10837,13 @@ function peg$parse(input, options) {
10460
10837
  function peg$parseDefaultToken() {
10461
10838
  var s0, s1, s2, s3;
10462
10839
  s0 = peg$currPos;
10463
- if (input.substr(peg$currPos, 7) === peg$c177) {
10464
- s1 = peg$c177;
10840
+ if (input.substr(peg$currPos, 7) === peg$c191) {
10841
+ s1 = peg$c191;
10465
10842
  peg$currPos += 7;
10466
10843
  } else {
10467
10844
  s1 = peg$FAILED;
10468
10845
  if (peg$silentFails === 0) {
10469
- peg$fail(peg$c178);
10846
+ peg$fail(peg$c192);
10470
10847
  }
10471
10848
  }
10472
10849
  if (s1 !== peg$FAILED) {
@@ -10496,13 +10873,13 @@ function peg$parse(input, options) {
10496
10873
  function peg$parseDeleteToken() {
10497
10874
  var s0, s1, s2, s3;
10498
10875
  s0 = peg$currPos;
10499
- if (input.substr(peg$currPos, 6) === peg$c179) {
10500
- s1 = peg$c179;
10876
+ if (input.substr(peg$currPos, 6) === peg$c193) {
10877
+ s1 = peg$c193;
10501
10878
  peg$currPos += 6;
10502
10879
  } else {
10503
10880
  s1 = peg$FAILED;
10504
10881
  if (peg$silentFails === 0) {
10505
- peg$fail(peg$c180);
10882
+ peg$fail(peg$c194);
10506
10883
  }
10507
10884
  }
10508
10885
  if (s1 !== peg$FAILED) {
@@ -10532,13 +10909,13 @@ function peg$parse(input, options) {
10532
10909
  function peg$parseDoToken() {
10533
10910
  var s0, s1, s2, s3;
10534
10911
  s0 = peg$currPos;
10535
- if (input.substr(peg$currPos, 2) === peg$c181) {
10536
- s1 = peg$c181;
10912
+ if (input.substr(peg$currPos, 2) === peg$c195) {
10913
+ s1 = peg$c195;
10537
10914
  peg$currPos += 2;
10538
10915
  } else {
10539
10916
  s1 = peg$FAILED;
10540
10917
  if (peg$silentFails === 0) {
10541
- peg$fail(peg$c182);
10918
+ peg$fail(peg$c196);
10542
10919
  }
10543
10920
  }
10544
10921
  if (s1 !== peg$FAILED) {
@@ -10568,13 +10945,13 @@ function peg$parse(input, options) {
10568
10945
  function peg$parseElseToken() {
10569
10946
  var s0, s1, s2, s3;
10570
10947
  s0 = peg$currPos;
10571
- if (input.substr(peg$currPos, 4) === peg$c183) {
10572
- s1 = peg$c183;
10948
+ if (input.substr(peg$currPos, 4) === peg$c197) {
10949
+ s1 = peg$c197;
10573
10950
  peg$currPos += 4;
10574
10951
  } else {
10575
10952
  s1 = peg$FAILED;
10576
10953
  if (peg$silentFails === 0) {
10577
- peg$fail(peg$c184);
10954
+ peg$fail(peg$c198);
10578
10955
  }
10579
10956
  }
10580
10957
  if (s1 !== peg$FAILED) {
@@ -10640,13 +11017,13 @@ function peg$parse(input, options) {
10640
11017
  function peg$parseExportToken() {
10641
11018
  var s0, s1, s2, s3;
10642
11019
  s0 = peg$currPos;
10643
- if (input.substr(peg$currPos, 6) === peg$c185) {
10644
- s1 = peg$c185;
11020
+ if (input.substr(peg$currPos, 6) === peg$c199) {
11021
+ s1 = peg$c199;
10645
11022
  peg$currPos += 6;
10646
11023
  } else {
10647
11024
  s1 = peg$FAILED;
10648
11025
  if (peg$silentFails === 0) {
10649
- peg$fail(peg$c186);
11026
+ peg$fail(peg$c200);
10650
11027
  }
10651
11028
  }
10652
11029
  if (s1 !== peg$FAILED) {
@@ -10676,13 +11053,13 @@ function peg$parse(input, options) {
10676
11053
  function peg$parseExtendsToken() {
10677
11054
  var s0, s1, s2, s3;
10678
11055
  s0 = peg$currPos;
10679
- if (input.substr(peg$currPos, 7) === peg$c187) {
10680
- s1 = peg$c187;
11056
+ if (input.substr(peg$currPos, 7) === peg$c201) {
11057
+ s1 = peg$c201;
10681
11058
  peg$currPos += 7;
10682
11059
  } else {
10683
11060
  s1 = peg$FAILED;
10684
11061
  if (peg$silentFails === 0) {
10685
- peg$fail(peg$c188);
11062
+ peg$fail(peg$c202);
10686
11063
  }
10687
11064
  }
10688
11065
  if (s1 !== peg$FAILED) {
@@ -10712,13 +11089,13 @@ function peg$parse(input, options) {
10712
11089
  function peg$parseFalseToken() {
10713
11090
  var s0, s1, s2, s3;
10714
11091
  s0 = peg$currPos;
10715
- if (input.substr(peg$currPos, 5) === peg$c189) {
10716
- s1 = peg$c189;
11092
+ if (input.substr(peg$currPos, 5) === peg$c203) {
11093
+ s1 = peg$c203;
10717
11094
  peg$currPos += 5;
10718
11095
  } else {
10719
11096
  s1 = peg$FAILED;
10720
11097
  if (peg$silentFails === 0) {
10721
- peg$fail(peg$c190);
11098
+ peg$fail(peg$c204);
10722
11099
  }
10723
11100
  }
10724
11101
  if (s1 !== peg$FAILED) {
@@ -10748,13 +11125,13 @@ function peg$parse(input, options) {
10748
11125
  function peg$parseFinallyToken() {
10749
11126
  var s0, s1, s2, s3;
10750
11127
  s0 = peg$currPos;
10751
- if (input.substr(peg$currPos, 7) === peg$c191) {
10752
- s1 = peg$c191;
11128
+ if (input.substr(peg$currPos, 7) === peg$c205) {
11129
+ s1 = peg$c205;
10753
11130
  peg$currPos += 7;
10754
11131
  } else {
10755
11132
  s1 = peg$FAILED;
10756
11133
  if (peg$silentFails === 0) {
10757
- peg$fail(peg$c192);
11134
+ peg$fail(peg$c206);
10758
11135
  }
10759
11136
  }
10760
11137
  if (s1 !== peg$FAILED) {
@@ -10784,13 +11161,13 @@ function peg$parse(input, options) {
10784
11161
  function peg$parseForToken() {
10785
11162
  var s0, s1, s2, s3;
10786
11163
  s0 = peg$currPos;
10787
- if (input.substr(peg$currPos, 3) === peg$c193) {
10788
- s1 = peg$c193;
11164
+ if (input.substr(peg$currPos, 3) === peg$c207) {
11165
+ s1 = peg$c207;
10789
11166
  peg$currPos += 3;
10790
11167
  } else {
10791
11168
  s1 = peg$FAILED;
10792
11169
  if (peg$silentFails === 0) {
10793
- peg$fail(peg$c194);
11170
+ peg$fail(peg$c208);
10794
11171
  }
10795
11172
  }
10796
11173
  if (s1 !== peg$FAILED) {
@@ -10820,13 +11197,13 @@ function peg$parse(input, options) {
10820
11197
  function peg$parseFunctionToken() {
10821
11198
  var s0, s1, s2, s3;
10822
11199
  s0 = peg$currPos;
10823
- if (input.substr(peg$currPos, 8) === peg$c195) {
10824
- s1 = peg$c195;
11200
+ if (input.substr(peg$currPos, 8) === peg$c209) {
11201
+ s1 = peg$c209;
10825
11202
  peg$currPos += 8;
10826
11203
  } else {
10827
11204
  s1 = peg$FAILED;
10828
11205
  if (peg$silentFails === 0) {
10829
- peg$fail(peg$c196);
11206
+ peg$fail(peg$c210);
10830
11207
  }
10831
11208
  }
10832
11209
  if (s1 !== peg$FAILED) {
@@ -10856,13 +11233,13 @@ function peg$parse(input, options) {
10856
11233
  function peg$parseIfToken() {
10857
11234
  var s0, s1, s2, s3;
10858
11235
  s0 = peg$currPos;
10859
- if (input.substr(peg$currPos, 2) === peg$c199) {
10860
- s1 = peg$c199;
11236
+ if (input.substr(peg$currPos, 2) === peg$c213) {
11237
+ s1 = peg$c213;
10861
11238
  peg$currPos += 2;
10862
11239
  } else {
10863
11240
  s1 = peg$FAILED;
10864
11241
  if (peg$silentFails === 0) {
10865
- peg$fail(peg$c200);
11242
+ peg$fail(peg$c214);
10866
11243
  }
10867
11244
  }
10868
11245
  if (s1 !== peg$FAILED) {
@@ -10892,13 +11269,13 @@ function peg$parse(input, options) {
10892
11269
  function peg$parseImportToken() {
10893
11270
  var s0, s1, s2, s3;
10894
11271
  s0 = peg$currPos;
10895
- if (input.substr(peg$currPos, 6) === peg$c201) {
10896
- s1 = peg$c201;
11272
+ if (input.substr(peg$currPos, 6) === peg$c215) {
11273
+ s1 = peg$c215;
10897
11274
  peg$currPos += 6;
10898
11275
  } else {
10899
11276
  s1 = peg$FAILED;
10900
11277
  if (peg$silentFails === 0) {
10901
- peg$fail(peg$c202);
11278
+ peg$fail(peg$c216);
10902
11279
  }
10903
11280
  }
10904
11281
  if (s1 !== peg$FAILED) {
@@ -10928,13 +11305,13 @@ function peg$parse(input, options) {
10928
11305
  function peg$parseInstanceofToken() {
10929
11306
  var s0, s1, s2, s3;
10930
11307
  s0 = peg$currPos;
10931
- if (input.substr(peg$currPos, 10) === peg$c203) {
10932
- s1 = peg$c203;
11308
+ if (input.substr(peg$currPos, 10) === peg$c217) {
11309
+ s1 = peg$c217;
10933
11310
  peg$currPos += 10;
10934
11311
  } else {
10935
11312
  s1 = peg$FAILED;
10936
11313
  if (peg$silentFails === 0) {
10937
- peg$fail(peg$c204);
11314
+ peg$fail(peg$c218);
10938
11315
  }
10939
11316
  }
10940
11317
  if (s1 !== peg$FAILED) {
@@ -10964,13 +11341,13 @@ function peg$parse(input, options) {
10964
11341
  function peg$parseInToken() {
10965
11342
  var s0, s1, s2, s3;
10966
11343
  s0 = peg$currPos;
10967
- if (input.substr(peg$currPos, 2) === peg$c205) {
10968
- s1 = peg$c205;
11344
+ if (input.substr(peg$currPos, 2) === peg$c219) {
11345
+ s1 = peg$c219;
10969
11346
  peg$currPos += 2;
10970
11347
  } else {
10971
11348
  s1 = peg$FAILED;
10972
11349
  if (peg$silentFails === 0) {
10973
- peg$fail(peg$c206);
11350
+ peg$fail(peg$c220);
10974
11351
  }
10975
11352
  }
10976
11353
  if (s1 !== peg$FAILED) {
@@ -11000,13 +11377,13 @@ function peg$parse(input, options) {
11000
11377
  function peg$parseNewToken() {
11001
11378
  var s0, s1, s2, s3;
11002
11379
  s0 = peg$currPos;
11003
- if (input.substr(peg$currPos, 3) === peg$c207) {
11004
- s1 = peg$c207;
11380
+ if (input.substr(peg$currPos, 3) === peg$c221) {
11381
+ s1 = peg$c221;
11005
11382
  peg$currPos += 3;
11006
11383
  } else {
11007
11384
  s1 = peg$FAILED;
11008
11385
  if (peg$silentFails === 0) {
11009
- peg$fail(peg$c208);
11386
+ peg$fail(peg$c222);
11010
11387
  }
11011
11388
  }
11012
11389
  if (s1 !== peg$FAILED) {
@@ -11036,13 +11413,13 @@ function peg$parse(input, options) {
11036
11413
  function peg$parseNullToken() {
11037
11414
  var s0, s1, s2, s3;
11038
11415
  s0 = peg$currPos;
11039
- if (input.substr(peg$currPos, 4) === peg$c209) {
11040
- s1 = peg$c209;
11416
+ if (input.substr(peg$currPos, 4) === peg$c223) {
11417
+ s1 = peg$c223;
11041
11418
  peg$currPos += 4;
11042
11419
  } else {
11043
11420
  s1 = peg$FAILED;
11044
11421
  if (peg$silentFails === 0) {
11045
- peg$fail(peg$c210);
11422
+ peg$fail(peg$c224);
11046
11423
  }
11047
11424
  }
11048
11425
  if (s1 !== peg$FAILED) {
@@ -11072,13 +11449,13 @@ function peg$parse(input, options) {
11072
11449
  function peg$parseReturnToken() {
11073
11450
  var s0, s1, s2, s3;
11074
11451
  s0 = peg$currPos;
11075
- if (input.substr(peg$currPos, 6) === peg$c211) {
11076
- s1 = peg$c211;
11452
+ if (input.substr(peg$currPos, 6) === peg$c225) {
11453
+ s1 = peg$c225;
11077
11454
  peg$currPos += 6;
11078
11455
  } else {
11079
11456
  s1 = peg$FAILED;
11080
11457
  if (peg$silentFails === 0) {
11081
- peg$fail(peg$c212);
11458
+ peg$fail(peg$c226);
11082
11459
  }
11083
11460
  }
11084
11461
  if (s1 !== peg$FAILED) {
@@ -11108,13 +11485,13 @@ function peg$parse(input, options) {
11108
11485
  function peg$parseSuperToken() {
11109
11486
  var s0, s1, s2, s3;
11110
11487
  s0 = peg$currPos;
11111
- if (input.substr(peg$currPos, 5) === peg$c215) {
11112
- s1 = peg$c215;
11488
+ if (input.substr(peg$currPos, 5) === peg$c229) {
11489
+ s1 = peg$c229;
11113
11490
  peg$currPos += 5;
11114
11491
  } else {
11115
11492
  s1 = peg$FAILED;
11116
11493
  if (peg$silentFails === 0) {
11117
- peg$fail(peg$c216);
11494
+ peg$fail(peg$c230);
11118
11495
  }
11119
11496
  }
11120
11497
  if (s1 !== peg$FAILED) {
@@ -11144,13 +11521,13 @@ function peg$parse(input, options) {
11144
11521
  function peg$parseSwitchToken() {
11145
11522
  var s0, s1, s2, s3;
11146
11523
  s0 = peg$currPos;
11147
- if (input.substr(peg$currPos, 6) === peg$c217) {
11148
- s1 = peg$c217;
11524
+ if (input.substr(peg$currPos, 6) === peg$c231) {
11525
+ s1 = peg$c231;
11149
11526
  peg$currPos += 6;
11150
11527
  } else {
11151
11528
  s1 = peg$FAILED;
11152
11529
  if (peg$silentFails === 0) {
11153
- peg$fail(peg$c218);
11530
+ peg$fail(peg$c232);
11154
11531
  }
11155
11532
  }
11156
11533
  if (s1 !== peg$FAILED) {
@@ -11180,13 +11557,13 @@ function peg$parse(input, options) {
11180
11557
  function peg$parseThisToken() {
11181
11558
  var s0, s1, s2, s3;
11182
11559
  s0 = peg$currPos;
11183
- if (input.substr(peg$currPos, 4) === peg$c219) {
11184
- s1 = peg$c219;
11560
+ if (input.substr(peg$currPos, 4) === peg$c233) {
11561
+ s1 = peg$c233;
11185
11562
  peg$currPos += 4;
11186
11563
  } else {
11187
11564
  s1 = peg$FAILED;
11188
11565
  if (peg$silentFails === 0) {
11189
- peg$fail(peg$c220);
11566
+ peg$fail(peg$c234);
11190
11567
  }
11191
11568
  }
11192
11569
  if (s1 !== peg$FAILED) {
@@ -11216,13 +11593,13 @@ function peg$parse(input, options) {
11216
11593
  function peg$parseThrowToken() {
11217
11594
  var s0, s1, s2, s3;
11218
11595
  s0 = peg$currPos;
11219
- if (input.substr(peg$currPos, 5) === peg$c221) {
11220
- s1 = peg$c221;
11596
+ if (input.substr(peg$currPos, 5) === peg$c235) {
11597
+ s1 = peg$c235;
11221
11598
  peg$currPos += 5;
11222
11599
  } else {
11223
11600
  s1 = peg$FAILED;
11224
11601
  if (peg$silentFails === 0) {
11225
- peg$fail(peg$c222);
11602
+ peg$fail(peg$c236);
11226
11603
  }
11227
11604
  }
11228
11605
  if (s1 !== peg$FAILED) {
@@ -11252,13 +11629,13 @@ function peg$parse(input, options) {
11252
11629
  function peg$parseTrueToken() {
11253
11630
  var s0, s1, s2, s3;
11254
11631
  s0 = peg$currPos;
11255
- if (input.substr(peg$currPos, 4) === peg$c223) {
11256
- s1 = peg$c223;
11632
+ if (input.substr(peg$currPos, 4) === peg$c237) {
11633
+ s1 = peg$c237;
11257
11634
  peg$currPos += 4;
11258
11635
  } else {
11259
11636
  s1 = peg$FAILED;
11260
11637
  if (peg$silentFails === 0) {
11261
- peg$fail(peg$c224);
11638
+ peg$fail(peg$c238);
11262
11639
  }
11263
11640
  }
11264
11641
  if (s1 !== peg$FAILED) {
@@ -11288,13 +11665,13 @@ function peg$parse(input, options) {
11288
11665
  function peg$parseTryToken() {
11289
11666
  var s0, s1, s2, s3;
11290
11667
  s0 = peg$currPos;
11291
- if (input.substr(peg$currPos, 3) === peg$c225) {
11292
- s1 = peg$c225;
11668
+ if (input.substr(peg$currPos, 3) === peg$c239) {
11669
+ s1 = peg$c239;
11293
11670
  peg$currPos += 3;
11294
11671
  } else {
11295
11672
  s1 = peg$FAILED;
11296
11673
  if (peg$silentFails === 0) {
11297
- peg$fail(peg$c226);
11674
+ peg$fail(peg$c240);
11298
11675
  }
11299
11676
  }
11300
11677
  if (s1 !== peg$FAILED) {
@@ -11324,13 +11701,13 @@ function peg$parse(input, options) {
11324
11701
  function peg$parseTypeofToken() {
11325
11702
  var s0, s1, s2, s3;
11326
11703
  s0 = peg$currPos;
11327
- if (input.substr(peg$currPos, 6) === peg$c227) {
11328
- s1 = peg$c227;
11704
+ if (input.substr(peg$currPos, 6) === peg$c241) {
11705
+ s1 = peg$c241;
11329
11706
  peg$currPos += 6;
11330
11707
  } else {
11331
11708
  s1 = peg$FAILED;
11332
11709
  if (peg$silentFails === 0) {
11333
- peg$fail(peg$c228);
11710
+ peg$fail(peg$c242);
11334
11711
  }
11335
11712
  }
11336
11713
  if (s1 !== peg$FAILED) {
@@ -11360,13 +11737,13 @@ function peg$parse(input, options) {
11360
11737
  function peg$parseVarToken() {
11361
11738
  var s0, s1, s2, s3;
11362
11739
  s0 = peg$currPos;
11363
- if (input.substr(peg$currPos, 3) === peg$c229) {
11364
- s1 = peg$c229;
11740
+ if (input.substr(peg$currPos, 3) === peg$c243) {
11741
+ s1 = peg$c243;
11365
11742
  peg$currPos += 3;
11366
11743
  } else {
11367
11744
  s1 = peg$FAILED;
11368
11745
  if (peg$silentFails === 0) {
11369
- peg$fail(peg$c230);
11746
+ peg$fail(peg$c244);
11370
11747
  }
11371
11748
  }
11372
11749
  if (s1 !== peg$FAILED) {
@@ -11396,13 +11773,13 @@ function peg$parse(input, options) {
11396
11773
  function peg$parseVoidToken() {
11397
11774
  var s0, s1, s2, s3;
11398
11775
  s0 = peg$currPos;
11399
- if (input.substr(peg$currPos, 4) === peg$c231) {
11400
- s1 = peg$c231;
11776
+ if (input.substr(peg$currPos, 4) === peg$c245) {
11777
+ s1 = peg$c245;
11401
11778
  peg$currPos += 4;
11402
11779
  } else {
11403
11780
  s1 = peg$FAILED;
11404
11781
  if (peg$silentFails === 0) {
11405
- peg$fail(peg$c232);
11782
+ peg$fail(peg$c246);
11406
11783
  }
11407
11784
  }
11408
11785
  if (s1 !== peg$FAILED) {
@@ -11432,13 +11809,13 @@ function peg$parse(input, options) {
11432
11809
  function peg$parseWhileToken() {
11433
11810
  var s0, s1, s2, s3;
11434
11811
  s0 = peg$currPos;
11435
- if (input.substr(peg$currPos, 5) === peg$c233) {
11436
- s1 = peg$c233;
11812
+ if (input.substr(peg$currPos, 5) === peg$c247) {
11813
+ s1 = peg$c247;
11437
11814
  peg$currPos += 5;
11438
11815
  } else {
11439
11816
  s1 = peg$FAILED;
11440
11817
  if (peg$silentFails === 0) {
11441
- peg$fail(peg$c234);
11818
+ peg$fail(peg$c248);
11442
11819
  }
11443
11820
  }
11444
11821
  if (s1 !== peg$FAILED) {
@@ -11468,13 +11845,13 @@ function peg$parse(input, options) {
11468
11845
  function peg$parseWithToken() {
11469
11846
  var s0, s1, s2, s3;
11470
11847
  s0 = peg$currPos;
11471
- if (input.substr(peg$currPos, 4) === peg$c235) {
11472
- s1 = peg$c235;
11848
+ if (input.substr(peg$currPos, 4) === peg$c249) {
11849
+ s1 = peg$c249;
11473
11850
  peg$currPos += 4;
11474
11851
  } else {
11475
11852
  s1 = peg$FAILED;
11476
11853
  if (peg$silentFails === 0) {
11477
- peg$fail(peg$c236);
11854
+ peg$fail(peg$c250);
11478
11855
  }
11479
11856
  }
11480
11857
  if (s1 !== peg$FAILED) {
@@ -11604,6 +11981,92 @@ class Variables {
11604
11981
  }
11605
11982
  }
11606
11983
  }
11984
+ function getExpressionHelp(startRule) {
11985
+ switch (startRule) {
11986
+ case "booleanAttribute":
11987
+ return `
11988
+ Boolean attributes use condition-style syntax (no curly braces).
11989
+ Examples:
11990
+ ✓ disabled="isDisabled"
11991
+ ✓ disabled="!isValid"
11992
+ ✓ disabled="status == pending" (enum comparison)
11993
+ ✓ disabled="count <= 0" (numeric comparison)
11994
+ ✓ disabled="count == 5" (equality with number)
11995
+ ✓ disabled="a >= b.value" (field-to-field comparison)
11996
+ ✓ disabled="isLoading || !isValid"
11997
+ ✓ disabled (bare attribute for always-present)
11998
+ ✗ disabled="{isDisabled}" (no curly braces)`;
11999
+ case "dynamicAttribute":
12000
+ case "dynamicProperty":
12001
+ return `
12002
+ Dynamic attributes/properties use template-style syntax with curly braces.
12003
+ Examples:
12004
+ ✓ value="{inputValue}"
12005
+ ✓ href="/users/{userId}"
12006
+ ✓ data-count="{items.length}"
12007
+ ✓ title="Hello {name}!"`;
12008
+ case "classExpression":
12009
+ case "reactClassExpression":
12010
+ return `
12011
+ Class expressions support static classes and conditional classes.
12012
+ Examples:
12013
+ ✓ class="button primary"
12014
+ ✓ class="{isActive ? active}"
12015
+ ✓ class="{isActive ? active : inactive}"
12016
+ ✓ class="button {isPrimary ? primary : secondary}"
12017
+ ✓ class="{status == active ? active-class}"
12018
+ ✓ class="{count > 0 ? has-items}"`;
12019
+ case "conditionFunc":
12020
+ case "condition":
12021
+ return `
12022
+ Conditions support boolean properties, negation, comparisons, and logical operators.
12023
+ Examples:
12024
+ ✓ if="isVisible"
12025
+ ✓ if="!isHidden"
12026
+ ✓ if="status == active" (enum comparison)
12027
+ ✓ if="count > 0" (numeric comparison)
12028
+ ✓ if="count == 5" (equality with number)
12029
+ ✓ if="page <= 1" (<=, >=, <, > supported)
12030
+ ✓ if="current >= other.value" (field-to-field comparison)
12031
+ ✓ if="isEnabled && status != disabled"
12032
+ ✓ if="hasItems || count > 0"`;
12033
+ case "dynamicText":
12034
+ case "reactDynamicText":
12035
+ return `
12036
+ Dynamic text uses curly braces for interpolation.
12037
+ Examples:
12038
+ ✓ {title}
12039
+ ✓ Hello, {user.name}!
12040
+ ✓ Count: {items.length}`;
12041
+ case "accessor":
12042
+ return `
12043
+ Accessors reference view state properties.
12044
+ Examples:
12045
+ ✓ propertyName
12046
+ ✓ nested.property
12047
+ ✓ . (self-reference)`;
12048
+ case "importNames":
12049
+ return `
12050
+ Import names are comma-separated identifiers with optional renaming.
12051
+ Examples:
12052
+ ✓ MyComponent
12053
+ ✓ Component1, Component2
12054
+ ✓ Original as Renamed`;
12055
+ case "enum":
12056
+ return `
12057
+ Enum values are defined with pipe-separated identifiers.
12058
+ Examples:
12059
+ ✓ enum(active | inactive | pending)`;
12060
+ case "styleDeclarations":
12061
+ return `
12062
+ Style declarations use CSS syntax with optional dynamic bindings.
12063
+ Examples:
12064
+ ✓ style="color: red; padding: 10px"
12065
+ ✓ style="background: {bgColor}; width: {size}px"`;
12066
+ default:
12067
+ return "";
12068
+ }
12069
+ }
11607
12070
  function doParse(expression, startRule, vars) {
11608
12071
  try {
11609
12072
  return expressionParser.parse(expression, {
@@ -11617,7 +12080,13 @@ function doParse(expression, startRule, vars) {
11617
12080
  startRule
11618
12081
  });
11619
12082
  } catch (e2) {
11620
- throw new Error(`failed to parse expression [${expression}]. ${e2.message}`);
12083
+ const help = getExpressionHelp(startRule);
12084
+ const contextInfo = help ? `
12085
+
12086
+ Expected format for ${startRule}:${help}` : "";
12087
+ throw new Error(`Failed to parse expression [${expression}].
12088
+
12089
+ Parse error: ${e2.message}${contextInfo}`);
11621
12090
  }
11622
12091
  }
11623
12092
  function parseAccessor(expression, vars) {
@@ -11700,6 +12169,27 @@ function isConditional(node2) {
11700
12169
  function isForEach(node2) {
11701
12170
  return node2.nodeType !== NodeType.TEXT_NODE && node2.hasAttribute("forEach");
11702
12171
  }
12172
+ function isSlowForEach(node2) {
12173
+ return node2.nodeType !== NodeType.TEXT_NODE && node2.hasAttribute("slowForEach");
12174
+ }
12175
+ function getSlowForEachInfo(node2) {
12176
+ if (!isSlowForEach(node2))
12177
+ return void 0;
12178
+ const element = node2;
12179
+ const arrayName = element.getAttribute("slowForEach");
12180
+ const jayIndex = element.getAttribute("jayIndex");
12181
+ const jayTrackBy = element.getAttribute("jayTrackBy");
12182
+ const trackBy = element.getAttribute("trackBy") || "id";
12183
+ if (!arrayName || jayIndex === null || !jayTrackBy) {
12184
+ return void 0;
12185
+ }
12186
+ return {
12187
+ arrayName,
12188
+ jayIndex: parseInt(jayIndex, 10),
12189
+ jayTrackBy,
12190
+ trackBy
12191
+ };
12192
+ }
11703
12193
  function isRecurse(node2) {
11704
12194
  return node2.nodeType !== NodeType.TEXT_NODE && node2.rawTagName?.toLowerCase() === "recurse";
11705
12195
  }
@@ -12098,7 +12588,7 @@ function markAutoOnImportedRefs(deDuplicated, headlessImports) {
12098
12588
  const isRefOfImportedHeadlessContract = !!importKeys.find(
12099
12589
  (key) => ref.originalName.startsWith(`${key}.`)
12100
12590
  );
12101
- if (isRefOfImportedHeadlessContract)
12591
+ if (isRefOfImportedHeadlessContract && ref.autoRef !== false)
12102
12592
  return mkRef(
12103
12593
  ref.ref,
12104
12594
  ref.originalName,
@@ -12125,6 +12615,80 @@ function markAutoOnImportedRefs(deDuplicated, headlessImports) {
12125
12615
  deDuplicated?.imported?.repeatedRefsTypeName
12126
12616
  );
12127
12617
  }
12618
+ function markAllRefsAsAutoRef(refsTree) {
12619
+ const mappedRefs = refsTree.refs.map(
12620
+ (ref) => mkRef(
12621
+ ref.ref,
12622
+ ref.originalName,
12623
+ ref.constName,
12624
+ ref.repeated,
12625
+ true,
12626
+ // autoRef = true
12627
+ ref.viewStateType,
12628
+ ref.elementType
12629
+ )
12630
+ );
12631
+ const mappedChildren = Object.fromEntries(
12632
+ Object.entries(refsTree.children).map(([key, value]) => [key, markAllRefsAsAutoRef(value)])
12633
+ );
12634
+ return mkRefsTree(
12635
+ mappedRefs,
12636
+ mappedChildren,
12637
+ refsTree.repeated,
12638
+ refsTree?.imported?.refsTypeName,
12639
+ refsTree?.imported?.repeatedRefsTypeName
12640
+ );
12641
+ }
12642
+ function collectTemplateRefsByOriginalName(tree) {
12643
+ const result = /* @__PURE__ */ new Map();
12644
+ for (const ref of tree.refs) {
12645
+ if (!ref.autoRef) {
12646
+ result.set(ref.originalName, ref);
12647
+ }
12648
+ }
12649
+ for (const childTree of Object.values(tree.children)) {
12650
+ const childRefs = collectTemplateRefsByOriginalName(childTree);
12651
+ for (const [key, ref] of childRefs) {
12652
+ result.set(key, ref);
12653
+ }
12654
+ }
12655
+ return result;
12656
+ }
12657
+ function updateImportRefsWithTemplateConstNames(importTree, templateRefsByOriginalName, path2 = []) {
12658
+ const updatedRefs = importTree.refs.map((ref) => {
12659
+ const fullPath = [...path2, ref.ref].join(".");
12660
+ const templateRef = templateRefsByOriginalName.get(fullPath);
12661
+ if (templateRef) {
12662
+ return mkRef(
12663
+ ref.ref,
12664
+ ref.originalName,
12665
+ templateRef.constName,
12666
+ ref.repeated,
12667
+ false,
12668
+ // Not autoRef since it's used in template
12669
+ ref.viewStateType,
12670
+ ref.elementType
12671
+ );
12672
+ }
12673
+ return ref;
12674
+ });
12675
+ const updatedChildren = Object.fromEntries(
12676
+ Object.entries(importTree.children).map(([childKey, childTree]) => [
12677
+ childKey,
12678
+ updateImportRefsWithTemplateConstNames(childTree, templateRefsByOriginalName, [
12679
+ ...path2,
12680
+ childKey
12681
+ ])
12682
+ ])
12683
+ );
12684
+ return mkRefsTree(
12685
+ updatedRefs,
12686
+ updatedChildren,
12687
+ importTree.repeated,
12688
+ importTree?.imported?.refsTypeName,
12689
+ importTree?.imported?.repeatedRefsTypeName
12690
+ );
12691
+ }
12128
12692
  function optimizeRefs({ rendered, imports, validations, refs, recursiveRegions }, headlessImports = []) {
12129
12693
  const deDuplicateRefsTree = (refs2) => {
12130
12694
  const mergedRefsMap = refs2.refs.reduce((refsMap, ref) => {
@@ -12171,10 +12735,31 @@ function optimizeRefs({ rendered, imports, validations, refs, recursiveRegions }
12171
12735
  };
12172
12736
  const deDuplicated = deDuplicateRefsTree(refs);
12173
12737
  const markedAutoOnImported = markAutoOnImportedRefs(deDuplicated, headlessImports);
12174
- const importedRefs = Object.fromEntries(headlessImports.map((_) => [_.key, _.refs]));
12738
+ const templateRefsByOriginalName = collectTemplateRefsByOriginalName(markedAutoOnImported);
12739
+ const importedRefsUpdated = Object.fromEntries(
12740
+ headlessImports.map((_) => {
12741
+ const markedAuto = markAllRefsAsAutoRef(_.refs);
12742
+ const updated = updateImportRefsWithTemplateConstNames(
12743
+ markedAuto,
12744
+ templateRefsByOriginalName,
12745
+ [_.key]
12746
+ );
12747
+ return [_.key, updated];
12748
+ })
12749
+ );
12750
+ const mergedChildren = {};
12751
+ const importKeys = new Set(headlessImports.map((_) => _.key));
12752
+ for (const [key, child] of Object.entries(markedAutoOnImported.children)) {
12753
+ if (!importKeys.has(key)) {
12754
+ mergedChildren[key] = child;
12755
+ }
12756
+ }
12757
+ for (const [key, child] of Object.entries(importedRefsUpdated)) {
12758
+ mergedChildren[key] = child;
12759
+ }
12175
12760
  const combined = mkRefsTree(
12176
12761
  markedAutoOnImported.refs,
12177
- { ...markedAutoOnImported.children, ...importedRefs },
12762
+ mergedChildren,
12178
12763
  markedAutoOnImported.repeated
12179
12764
  );
12180
12765
  return new RenderFragment(rendered, imports, validations, combined, recursiveRegions);
@@ -12213,6 +12798,17 @@ function renderReferenceManager(refs, target) {
12213
12798
  const options = target === 0 ? "options, " : "";
12214
12799
  const usedRefManagerNames = /* @__PURE__ */ new Set();
12215
12800
  const usedRefConstNames = /* @__PURE__ */ new Set();
12801
+ const collectReservedConstNames = (refsTree) => {
12802
+ for (const ref of refsTree.refs) {
12803
+ if (!ref.autoRef) {
12804
+ usedRefConstNames.add(ref.constName);
12805
+ }
12806
+ }
12807
+ for (const child of Object.values(refsTree.children)) {
12808
+ collectReservedConstNames(child);
12809
+ }
12810
+ };
12811
+ collectReservedConstNames(refs);
12216
12812
  const getUniqueRefManagerName = (baseName) => {
12217
12813
  const baseCamelCase = camelCase(`${baseName}RefManager`);
12218
12814
  if (!usedRefManagerNames.has(baseCamelCase)) {
@@ -12228,7 +12824,11 @@ function renderReferenceManager(refs, target) {
12228
12824
  usedRefManagerNames.add(uniqueName);
12229
12825
  return uniqueName;
12230
12826
  };
12231
- const getUniqueRefConstName = (constName) => {
12827
+ const getUniqueRefConstName = (ref) => {
12828
+ const constName = ref.constName;
12829
+ if (!ref.autoRef) {
12830
+ return constName;
12831
+ }
12232
12832
  if (!usedRefConstNames.has(constName)) {
12233
12833
  usedRefConstNames.add(constName);
12234
12834
  return constName;
@@ -12256,10 +12856,10 @@ function renderReferenceManager(refs, target) {
12256
12856
  const compRefsDeclarations = compRefs.map((ref) => `'${ref.ref}'`).join(", ");
12257
12857
  const compCollectionRefsDeclarations = compCollectionRefs.map((ref) => `'${ref.ref}'`).join(", ");
12258
12858
  const refVariables = [
12259
- ...elemRefs.map((ref) => getUniqueRefConstName(ref.constName)),
12260
- ...elemCollectionRefs.map((ref) => getUniqueRefConstName(ref.constName)),
12261
- ...compRefs.map((ref) => getUniqueRefConstName(ref.constName)),
12262
- ...compCollectionRefs.map((ref) => getUniqueRefConstName(ref.constName))
12859
+ ...elemRefs.map((ref) => getUniqueRefConstName(ref)),
12860
+ ...elemCollectionRefs.map((ref) => getUniqueRefConstName(ref)),
12861
+ ...compRefs.map((ref) => getUniqueRefConstName(ref)),
12862
+ ...compCollectionRefs.map((ref) => getUniqueRefConstName(ref))
12263
12863
  ].join(", ");
12264
12864
  const childRenderedRefManagers = [];
12265
12865
  const childRefManagerMembers = [];
@@ -12453,9 +13053,34 @@ function renderTextNode(variables, text2, indent) {
12453
13053
  }
12454
13054
  const PROPERTY = 1, BOOLEAN_ATTRIBUTE = 3;
12455
13055
  const propertyMapping = {
13056
+ // DOM properties (use template-style parsing with dp())
12456
13057
  value: { type: PROPERTY },
12457
13058
  checked: { type: PROPERTY },
12458
- disabled: { type: BOOLEAN_ATTRIBUTE }
13059
+ // Boolean attributes (use condition-style parsing with ba())
13060
+ // The presence/absence of these attributes is controlled by a condition expression
13061
+ disabled: { type: BOOLEAN_ATTRIBUTE },
13062
+ selected: { type: BOOLEAN_ATTRIBUTE },
13063
+ readonly: { type: BOOLEAN_ATTRIBUTE },
13064
+ required: { type: BOOLEAN_ATTRIBUTE },
13065
+ hidden: { type: BOOLEAN_ATTRIBUTE },
13066
+ autofocus: { type: BOOLEAN_ATTRIBUTE },
13067
+ multiple: { type: BOOLEAN_ATTRIBUTE },
13068
+ open: { type: BOOLEAN_ATTRIBUTE },
13069
+ novalidate: { type: BOOLEAN_ATTRIBUTE },
13070
+ formnovalidate: { type: BOOLEAN_ATTRIBUTE },
13071
+ // Media attributes
13072
+ autoplay: { type: BOOLEAN_ATTRIBUTE },
13073
+ controls: { type: BOOLEAN_ATTRIBUTE },
13074
+ loop: { type: BOOLEAN_ATTRIBUTE },
13075
+ muted: { type: BOOLEAN_ATTRIBUTE },
13076
+ playsinline: { type: BOOLEAN_ATTRIBUTE },
13077
+ // Other
13078
+ reversed: { type: BOOLEAN_ATTRIBUTE },
13079
+ ismap: { type: BOOLEAN_ATTRIBUTE },
13080
+ defer: { type: BOOLEAN_ATTRIBUTE },
13081
+ async: { type: BOOLEAN_ATTRIBUTE },
13082
+ default: { type: BOOLEAN_ATTRIBUTE },
13083
+ inert: { type: BOOLEAN_ATTRIBUTE }
12459
13084
  };
12460
13085
  const attributesRequiresQuotes$1 = /[- ]/;
12461
13086
  function renderStyleAttribute(styleString, variables) {
@@ -12478,7 +13103,7 @@ function renderAttributes$1(element, { variables }) {
12478
13103
  Object.keys(attributes2).forEach((attrName) => {
12479
13104
  let attrCanonical = attrName.toLowerCase();
12480
13105
  let attrKey = attrCanonical.match(attributesRequiresQuotes$1) ? `"${attrCanonical}"` : attrCanonical;
12481
- if (attrCanonical === "if" || attrCanonical === "foreach" || attrCanonical === "trackby" || attrCanonical === "ref" || attrCanonical === AsyncDirectiveTypes.loading.directive || attrCanonical === AsyncDirectiveTypes.resolved.directive || attrCanonical === AsyncDirectiveTypes.rejected.directive)
13106
+ if (attrCanonical === "if" || attrCanonical === "foreach" || attrCanonical === "trackby" || attrCanonical === "ref" || attrCanonical === "slowforeach" || attrCanonical === "jayindex" || attrCanonical === "jaytrackby" || attrCanonical === AsyncDirectiveTypes.loading.directive || attrCanonical === AsyncDirectiveTypes.resolved.directive || attrCanonical === AsyncDirectiveTypes.rejected.directive)
12482
13107
  return;
12483
13108
  if (attrCanonical === "style") {
12484
13109
  renderedAttributes.push(renderStyleAttribute(attributes2[attrName], variables));
@@ -12489,11 +13114,13 @@ function renderAttributes$1(element, { variables }) {
12489
13114
  let attributeExpression = parsePropertyExpression(attributes2[attrName], variables);
12490
13115
  renderedAttributes.push(attributeExpression.map((_) => `${attrKey}: ${_}`));
12491
13116
  } else if (propertyMapping[attrCanonical]?.type === BOOLEAN_ATTRIBUTE) {
12492
- let attributeExpression = parseBooleanAttributeExpression(
12493
- attributes2[attrName],
12494
- variables
12495
- );
12496
- renderedAttributes.push(attributeExpression.map((_) => `${attrKey}: ${_}`));
13117
+ const attrValue = attributes2[attrName];
13118
+ if (attrValue === "") {
13119
+ renderedAttributes.push(new RenderFragment(`${attrKey}: ''`, Imports.none()));
13120
+ } else {
13121
+ let attributeExpression = parseBooleanAttributeExpression(attrValue, variables);
13122
+ renderedAttributes.push(attributeExpression.map((_) => `${attrKey}: ${_}`));
13123
+ }
12497
13124
  } else {
12498
13125
  let attributeExpression = parseAttributeExpression(attributes2[attrName], variables);
12499
13126
  renderedAttributes.push(attributeExpression.map((_) => `${attrKey}: ${_}`));
@@ -12507,9 +13134,36 @@ function renderAttributes$1(element, { variables }) {
12507
13134
  function renderElementRef$1(element, { dynamicRef, variables, importedRefNameToRef, refNameGenerator }) {
12508
13135
  if (element.attributes.ref) {
12509
13136
  if (importedRefNameToRef.has(element.attributes.ref)) {
12510
- const ref = importedRefNameToRef.get(element.attributes.ref);
12511
- refNameGenerator.registerUsedConstName(ref.constName, variables);
12512
- return new RenderFragment(`${ref.constName}()`);
13137
+ const importedRef = importedRefNameToRef.get(element.attributes.ref);
13138
+ const uniqueConstName = refNameGenerator.newConstantName(importedRef.ref, variables);
13139
+ const refWithUniqueConstName = mkRef(
13140
+ importedRef.ref,
13141
+ element.attributes.ref,
13142
+ // Full path from template, e.g., "filters.filter2.categories.isSelected"
13143
+ uniqueConstName,
13144
+ importedRef.repeated,
13145
+ false,
13146
+ // Not autoRef - it's explicitly used in template
13147
+ importedRef.viewStateType,
13148
+ importedRef.elementType
13149
+ );
13150
+ const refPath = element.attributes.ref.split(".");
13151
+ const nestingPath = refPath.slice(0, -1);
13152
+ const nestedRefs = nestRefs(
13153
+ nestingPath,
13154
+ new RenderFragment(
13155
+ "",
13156
+ Imports.none(),
13157
+ [],
13158
+ mkRefsTree([refWithUniqueConstName], {})
13159
+ )
13160
+ );
13161
+ return new RenderFragment(
13162
+ `${uniqueConstName}()`,
13163
+ nestedRefs.imports,
13164
+ nestedRefs.validations,
13165
+ nestedRefs.refs
13166
+ );
12513
13167
  }
12514
13168
  let originalName = element.attributes.ref;
12515
13169
  let refName = camelCase(originalName);
@@ -12564,9 +13218,31 @@ function renderChildCompProps$1(element, { variables }) {
12564
13218
  }
12565
13219
  function renderChildCompRef$1(element, { dynamicRef, variables, refNameGenerator, importedRefNameToRef }) {
12566
13220
  if (importedRefNameToRef.has(element.attributes.ref)) {
12567
- const ref = importedRefNameToRef.get(element.attributes.ref);
12568
- refNameGenerator.registerUsedConstName(ref.constName, variables);
12569
- return new RenderFragment(`${ref.constName}()`, Imports.none(), [], mkRefsTree([ref], {}));
13221
+ const importedRef = importedRefNameToRef.get(element.attributes.ref);
13222
+ const uniqueConstName = refNameGenerator.newConstantName(importedRef.ref, variables);
13223
+ const refWithUniqueConstName = mkRef(
13224
+ importedRef.ref,
13225
+ element.attributes.ref,
13226
+ // Full path from template, e.g., "filters.filter2.categories.isSelected"
13227
+ uniqueConstName,
13228
+ importedRef.repeated,
13229
+ false,
13230
+ // Not autoRef - it's explicitly used in template
13231
+ importedRef.viewStateType,
13232
+ importedRef.elementType
13233
+ );
13234
+ const refPath = element.attributes.ref.split(".");
13235
+ const nestingPath = refPath.slice(0, -1);
13236
+ const nestedRefs = nestRefs(
13237
+ nestingPath,
13238
+ new RenderFragment("", Imports.none(), [], mkRefsTree([refWithUniqueConstName], {}))
13239
+ );
13240
+ return new RenderFragment(
13241
+ `${uniqueConstName}()`,
13242
+ nestedRefs.imports,
13243
+ nestedRefs.validations,
13244
+ nestedRefs.refs
13245
+ );
12570
13246
  }
12571
13247
  let originalName = element.attributes.ref || refNameGenerator.newAutoRefNameGenerator();
12572
13248
  let refName = camelCase(originalName);
@@ -12635,7 +13311,7 @@ function renderNode(node2, context) {
12635
13311
  if (childNodes.length === 1 && childNodes[0].nodeType === NodeType.TEXT_NODE)
12636
13312
  childIndent = childIndent.noFirstLineBreak();
12637
13313
  let needDynamicElement = childNodes.map(
12638
- (_) => isConditional(_) || isForEach(_) || isRecurseWithData(_) || isWithData(_) || checkAsync(_).isAsync
13314
+ (_) => isConditional(_) || isForEach(_) || isSlowForEach(_) || isRecurseWithData(_) || isWithData(_) || checkAsync(_).isAsync
12639
13315
  ).reduce((prev, current) => prev || current, false);
12640
13316
  let childRenders = childNodes.length === 0 ? RenderFragment.empty() : childNodes.map((_) => renderNode(_, contextForChildren)).reduce(
12641
13317
  (prev, current) => RenderFragment.merge(prev, current, ",\n"),
@@ -12836,6 +13512,7 @@ ${indent.curr}return ${childElement.rendered}}, '${trackBy}')`,
12836
13512
  const paramType = variables.currentType.name;
12837
13513
  const forEachFragment = forEachAccessor.render().map((_) => `(${paramName}: ${paramType}) => ${_}`);
12838
13514
  let forEachVariables = variables.childVariableFor(forEachAccessor);
13515
+ context.usedComponentImports.add(forEachVariables.currentType.name);
12839
13516
  let newContext = {
12840
13517
  ...context,
12841
13518
  variables: forEachVariables,
@@ -12849,6 +13526,46 @@ ${indent.curr}return ${childElement.rendered}}, '${trackBy}')`,
12849
13526
  forEachAccessPath,
12850
13527
  renderForEach(forEachFragment, forEachVariables, trackBy, childElement)
12851
13528
  );
13529
+ } else if (isSlowForEach(htmlElement)) {
13530
+ const slowForEachInfo = getSlowForEachInfo(htmlElement);
13531
+ if (!slowForEachInfo) {
13532
+ return new RenderFragment("", Imports.none(), [
13533
+ `slowForEach element is missing required attributes (slowForEach, jayIndex, jayTrackBy)`
13534
+ ]);
13535
+ }
13536
+ const { arrayName, jayIndex, jayTrackBy } = slowForEachInfo;
13537
+ const arrayAccessor = parseAccessor(arrayName, variables);
13538
+ if (arrayAccessor.resolvedType === JayUnknown)
13539
+ return new RenderFragment("", Imports.none(), [
13540
+ `slowForEach directive - failed to resolve array type [slowForEach=${arrayName}]`
13541
+ ]);
13542
+ if (!isArrayType$1(arrayAccessor.resolvedType))
13543
+ return new RenderFragment("", Imports.none(), [
13544
+ `slowForEach directive - resolved type is not an array [slowForEach=${arrayName}]`
13545
+ ]);
13546
+ let slowForEachVariables = variables.childVariableFor(arrayAccessor);
13547
+ context.usedComponentImports.add(slowForEachVariables.currentType.name);
13548
+ let newContext = {
13549
+ ...context,
13550
+ variables: slowForEachVariables,
13551
+ indent: indent.child().noFirstLineBreak().withLastLineBreak(),
13552
+ dynamicRef: true,
13553
+ isInsideGuard: true
13554
+ // Mark that we're inside a guard
13555
+ };
13556
+ let childElement = renderHtmlElement(htmlElement, newContext);
13557
+ const parentTypeName = variables.currentType.name;
13558
+ const itemTypeName = slowForEachVariables.currentType.name;
13559
+ const slowForEachFragment = new RenderFragment(
13560
+ `${indent.firstLine}slowForEachItem<${parentTypeName}, ${itemTypeName}>('${arrayName}', ${jayIndex}, '${jayTrackBy}',
13561
+ ${indent.firstLine}() => ${childElement.rendered}
13562
+ ${indent.firstLine})`,
13563
+ childElement.imports.plus(Import.slowForEachItem),
13564
+ childElement.validations,
13565
+ childElement.refs,
13566
+ childElement.recursiveRegions
13567
+ );
13568
+ return nestRefs([arrayName], slowForEachFragment);
12852
13569
  } else if (checkAsync(htmlElement).isAsync) {
12853
13570
  const asyncDirective = checkAsync(htmlElement);
12854
13571
  const asyncProperty = htmlElement.getAttribute(asyncDirective.directive);
@@ -12954,6 +13671,7 @@ function renderFunctionImplementation$1(types2, rootBodyElement, importStatement
12954
13671
  const importedRefNameToRef = processImportedHeadless(headlessImports);
12955
13672
  const rootElement = ensureSingleChildElement(rootBodyElement);
12956
13673
  let renderedRoot;
13674
+ const usedComponentImports = /* @__PURE__ */ new Set();
12957
13675
  if (rootElement.val) {
12958
13676
  const needsWrapper = isWithData(rootElement.val) || isForEach(rootElement.val) || isConditional(rootElement.val) || isRecurse(rootElement.val) || checkAsync(rootElement.val).isAsync;
12959
13677
  const indent = needsWrapper ? new Indent(" ") : new Indent(" ");
@@ -12969,8 +13687,10 @@ function renderFunctionImplementation$1(types2, rootBodyElement, importStatement
12969
13687
  importedRefNameToRef,
12970
13688
  recursiveRegions: [],
12971
13689
  // Initialize empty recursive regions stack
12972
- isInsideGuard: false
13690
+ isInsideGuard: false,
12973
13691
  // Not inside any guard initially
13692
+ usedComponentImports
13693
+ // Track which component types are used
12974
13694
  });
12975
13695
  if (needsWrapper) {
12976
13696
  renderedRoot = new RenderFragment(
@@ -13036,7 +13756,9 @@ ${headLinksInjection}${recursiveFunctionsSection} const render = (viewState:
13036
13756
  elementType,
13037
13757
  preRenderType,
13038
13758
  refsType,
13039
- renderedImplementation: new RenderFragment(body, imports, renderedRoot.validations)
13759
+ renderedImplementation: new RenderFragment(body, imports, renderedRoot.validations),
13760
+ usedComponentImports
13761
+ // Track which component types were used
13040
13762
  };
13041
13763
  }
13042
13764
  function renderElementBridgeNode(node2, context) {
@@ -13143,8 +13865,10 @@ function renderBridge(types2, rootBodyElement, importStatements, elementType, pr
13143
13865
  importedRefNameToRef,
13144
13866
  recursiveRegions: [],
13145
13867
  // Initialize empty recursive regions stack
13146
- isInsideGuard: false
13868
+ isInsideGuard: false,
13147
13869
  // Not inside any guard initially
13870
+ usedComponentImports: /* @__PURE__ */ new Set()
13871
+ // Not used for bridge
13148
13872
  });
13149
13873
  renderedBridge = optimizeRefs(renderedBridge, headlessImports);
13150
13874
  const { renderedRefsManager, refsManagerImport } = renderReferenceManager(
@@ -13180,8 +13904,10 @@ function renderSandboxRoot(types2, rootBodyElement, importStatements, headlessIm
13180
13904
  importedRefNameToRef,
13181
13905
  recursiveRegions: [],
13182
13906
  // Initialize empty recursive regions stack
13183
- isInsideGuard: false
13907
+ isInsideGuard: false,
13184
13908
  // Not inside any guard initially
13909
+ usedComponentImports: /* @__PURE__ */ new Set()
13910
+ // Not used for sandbox
13185
13911
  });
13186
13912
  let refsPart = renderedBridge.rendered.length > 0 ? `
13187
13913
  ${renderedBridge.rendered}
@@ -13279,7 +14005,7 @@ function generateElementDefinitionFile(parsedFile) {
13279
14005
  }
13280
14006
  function generateElementFile(jayFile, importerMode) {
13281
14007
  const types2 = generateTypes(jayFile.types);
13282
- let { renderedRefs, renderedElement, renderedImplementation } = renderFunctionImplementation$1(
14008
+ let { renderedRefs, renderedElement, renderedImplementation, usedComponentImports } = renderFunctionImplementation$1(
13283
14009
  jayFile.types,
13284
14010
  jayFile.body,
13285
14011
  jayFile.imports,
@@ -13307,11 +14033,36 @@ function generateElementFile(jayFile, importerMode) {
13307
14033
  >;`;
13308
14034
  });
13309
14035
  }
14036
+ const usedHeadlessTypeNames = new Set(usedComponentImports);
14037
+ const headlessModules = /* @__PURE__ */ new Set();
14038
+ for (const headless of jayFile.headlessImports) {
14039
+ usedHeadlessTypeNames.add(headless.rootType.name);
14040
+ for (const link of headless.contractLinks) {
14041
+ headlessModules.add(link.module);
14042
+ for (const name of link.names) {
14043
+ if (name.name.endsWith("Refs") || isEnumType(name.type)) {
14044
+ usedHeadlessTypeNames.add(name.name);
14045
+ }
14046
+ }
14047
+ }
14048
+ }
14049
+ const filteredImports = jayFile.imports.map((importLink) => {
14050
+ if (!headlessModules.has(importLink.module)) {
14051
+ return importLink;
14052
+ }
14053
+ const filteredNames = importLink.names.filter(
14054
+ (name) => usedHeadlessTypeNames.has(name.as || name.name)
14055
+ );
14056
+ if (filteredNames.length === 0) {
14057
+ return null;
14058
+ }
14059
+ return { ...importLink, names: filteredNames };
14060
+ }).filter((imp) => imp !== null);
13310
14061
  const renderedFile = [
13311
14062
  renderImports$1(
13312
14063
  renderedImplementation.imports.plus(Import.element).plus(Import.jayElement),
13313
14064
  ImportsFor.implementation,
13314
- jayFile.imports,
14065
+ filteredImports,
13315
14066
  importerMode
13316
14067
  ),
13317
14068
  cssImport,
@@ -13589,11 +14340,37 @@ function inlineStyleToReact(inlineStyle) {
13589
14340
  const reactRenamedAttributes = {
13590
14341
  for: "htmlFor"
13591
14342
  };
14343
+ const booleanAttributes = /* @__PURE__ */ new Set([
14344
+ "disabled",
14345
+ "selected",
14346
+ "readonly",
14347
+ "required",
14348
+ "hidden",
14349
+ "autofocus",
14350
+ "multiple",
14351
+ "open",
14352
+ "novalidate",
14353
+ "formnovalidate",
14354
+ // Media attributes
14355
+ "autoplay",
14356
+ "controls",
14357
+ "loop",
14358
+ "muted",
14359
+ "playsinline",
14360
+ // Other
14361
+ "reversed",
14362
+ "ismap",
14363
+ "defer",
14364
+ "async",
14365
+ "default",
14366
+ "inert"
14367
+ ]);
13592
14368
  function renderAttributes(element, { variables }) {
13593
14369
  let attributes2 = element.attributes;
13594
14370
  let renderedAttributes = [];
13595
14371
  Object.keys(attributes2).forEach((attrName) => {
13596
14372
  const reactAttributeName = reactRenamedAttributes[attrName] || attrName;
14373
+ const attrCanonical = attrName.toLowerCase();
13597
14374
  if (attrName === `trackBy`)
13598
14375
  renderedAttributes.push(
13599
14376
  new RenderFragment(`key={${variables.currentVar}.${attributes2[attrName]}}`)
@@ -13607,6 +14384,16 @@ function renderAttributes(element, { variables }) {
13607
14384
  else if (attrName === "class") {
13608
14385
  let classExpression = parseReactClassExpression(attributes2[attrName], variables);
13609
14386
  renderedAttributes.push(classExpression.map((_) => `className=${_}`));
14387
+ } else if (booleanAttributes.has(attrCanonical)) {
14388
+ const attrValue = attributes2[attrName];
14389
+ if (attrValue === "") {
14390
+ renderedAttributes.push(new RenderFragment(`${reactAttributeName}`));
14391
+ } else {
14392
+ let conditionExpression = parseReactCondition(attrValue, variables);
14393
+ renderedAttributes.push(
14394
+ conditionExpression.map((_) => `${reactAttributeName}={${_}}`)
14395
+ );
14396
+ }
13610
14397
  } else {
13611
14398
  let attributeExpression = parseReactPropertyExpression(attributes2[attrName], variables);
13612
14399
  if (attributeExpression.rendered === "''")
@@ -17576,6 +18363,21 @@ function resolveImportedType(imports, type2) {
17576
18363
  function isRecursiveReference(typeString) {
17577
18364
  return typeof typeString === "string" && typeString.startsWith("$/");
17578
18365
  }
18366
+ function collectNestedTypeNames(type2) {
18367
+ const names = [];
18368
+ if (type2 instanceof JayObjectType) {
18369
+ names.push(type2.name);
18370
+ for (const propType of Object.values(type2.props)) {
18371
+ names.push(...collectNestedTypeNames(propType));
18372
+ }
18373
+ } else if (type2 instanceof JayArrayType) {
18374
+ names.push(...collectNestedTypeNames(type2.itemType));
18375
+ } else if (type2 instanceof JayPromiseType) {
18376
+ names.push(...collectNestedTypeNames(type2.itemType));
18377
+ } else
18378
+ ;
18379
+ return names;
18380
+ }
17579
18381
  function parseArrayRecursiveReference(typeString) {
17580
18382
  if (typeof typeString !== "string")
17581
18383
  return null;
@@ -17949,11 +18751,14 @@ async function parseHeadlessImports(elements, validations, filePath, importResol
17949
18751
  );
17950
18752
  const relativeContractPath = path.relative(filePath, contractPath);
17951
18753
  const enumsFromContract = enumsToImportRelativeToJayHtml.filter((_) => _.declaringModule === relativeContractPath).map((_) => _.type);
18754
+ const nestedTypeNames = collectNestedTypeNames(type2);
18755
+ const nestedTypeImports = nestedTypeNames.filter((name2) => name2 !== type2.name).map((name2) => ({ name: name2, type: JayUnknown }));
17952
18756
  const contractLink = {
17953
18757
  module: relativeContractPath,
17954
18758
  names: [
17955
18759
  { name: type2.name, type: type2 },
17956
18760
  { name: refsTypeName, type: JayUnknown },
18761
+ ...nestedTypeImports,
17957
18762
  ...enumsFromContract.map((_) => ({ name: _.name, type: _ }))
17958
18763
  ]
17959
18764
  };
@@ -18021,6 +18826,7 @@ function parseHeadLinks(root, excludeCssLinks = false) {
18021
18826
  async function extractCss(root, filePath) {
18022
18827
  const cssParts = [];
18023
18828
  const validations = [];
18829
+ const linkedCssFiles = [];
18024
18830
  const styleLinks = root.querySelectorAll('head link[rel="stylesheet"]');
18025
18831
  for (const link of styleLinks) {
18026
18832
  const href = link.getAttribute("href");
@@ -18029,8 +18835,9 @@ async function extractCss(root, filePath) {
18029
18835
  continue;
18030
18836
  }
18031
18837
  if (filePath) {
18838
+ const cssFilePath = path.resolve(filePath, href);
18839
+ linkedCssFiles.push(cssFilePath);
18032
18840
  try {
18033
- const cssFilePath = path.resolve(filePath, href);
18034
18841
  const cssContent = await fs.readFile(cssFilePath, "utf-8");
18035
18842
  cssParts.push(`/* External CSS: ${href} */
18036
18843
  ${cssContent}`);
@@ -18050,7 +18857,7 @@ ${cssContent}`);
18050
18857
  }
18051
18858
  }
18052
18859
  const css = cssParts.length > 0 ? cssParts.join("\n\n") : void 0;
18053
- return new WithValidations(css, validations);
18860
+ return new WithValidations({ css, linkedCssFiles }, validations);
18054
18861
  }
18055
18862
  function extractTrackByMaps(pageContract, headlessImports) {
18056
18863
  const serverTrackByMap = {};
@@ -18143,7 +18950,8 @@ async function parseJayFile(html2, filename, filePath, options, linkedContractRe
18143
18950
  namespaces,
18144
18951
  headlessImports,
18145
18952
  headLinks,
18146
- css: cssResult.val,
18953
+ css: cssResult.val?.css,
18954
+ linkedCssFiles: cssResult.val?.linkedCssFiles.length > 0 ? cssResult.val.linkedCssFiles : void 0,
18147
18955
  filename: normalizedFileName,
18148
18956
  contract: jayYaml.parsedContract,
18149
18957
  contractRef: jayYaml.contractRef,
@@ -18179,6 +18987,271 @@ const JAY_IMPORT_RESOLVER = {
18179
18987
  return resolvePluginComponent(projectRoot, pluginName, contractName);
18180
18988
  }
18181
18989
  };
18990
+ function buildPhaseMap(contract) {
18991
+ const phaseMap = /* @__PURE__ */ new Map();
18992
+ if (!contract) {
18993
+ return phaseMap;
18994
+ }
18995
+ function processTag(tag, path2, parentPhase = "slow") {
18996
+ const effectivePhase = tag.phase || parentPhase;
18997
+ const propertyName = toCamelCase(tag.tag);
18998
+ const currentPath = path2 ? `${path2}.${propertyName}` : propertyName;
18999
+ phaseMap.set(currentPath, {
19000
+ phase: effectivePhase,
19001
+ isArray: tag.repeated || false,
19002
+ trackBy: tag.trackBy
19003
+ });
19004
+ if (tag.tags) {
19005
+ for (const childTag of tag.tags) {
19006
+ processTag(childTag, currentPath, effectivePhase);
19007
+ }
19008
+ }
19009
+ }
19010
+ for (const tag of contract.tags) {
19011
+ processTag(tag, "", "slow");
19012
+ }
19013
+ return phaseMap;
19014
+ }
19015
+ function toCamelCase(str2) {
19016
+ return str2.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase()).replace(/^[A-Z]/, (letter) => letter.toLowerCase());
19017
+ }
19018
+ function isSlowPhase(path2, phaseMap) {
19019
+ const info = phaseMap.get(path2);
19020
+ return !info || info.phase === "slow";
19021
+ }
19022
+ function getValueByPath(obj, path2) {
19023
+ const parts = path2.split(".");
19024
+ let current = obj;
19025
+ for (const part of parts) {
19026
+ if (current === null || current === void 0) {
19027
+ return void 0;
19028
+ }
19029
+ if (typeof current !== "object") {
19030
+ return void 0;
19031
+ }
19032
+ current = current[part];
19033
+ }
19034
+ return current;
19035
+ }
19036
+ function parseBinding(text2) {
19037
+ const trimmed = text2.trim();
19038
+ if (!trimmed.startsWith("{") || !trimmed.endsWith("}")) {
19039
+ return null;
19040
+ }
19041
+ const inner = trimmed.slice(1, -1).trim();
19042
+ if (/^[a-zA-Z_][a-zA-Z0-9_.]*$/.test(inner)) {
19043
+ return inner;
19044
+ }
19045
+ return null;
19046
+ }
19047
+ function hasBindings(text2) {
19048
+ return /{[^}]+}/.test(text2);
19049
+ }
19050
+ function resolveTextBindings(text2, contextData, phaseMap, contextPath = "") {
19051
+ return text2.replace(/{([^}]+)}/g, (match, expr) => {
19052
+ const trimmedExpr = expr.trim();
19053
+ if (/^[a-zA-Z_][a-zA-Z0-9_.]*$/.test(trimmedExpr)) {
19054
+ const fullPath = contextPath ? `${contextPath}.${trimmedExpr}` : trimmedExpr;
19055
+ if (isSlowPhase(fullPath, phaseMap)) {
19056
+ const value = getValueByPath(contextData, trimmedExpr);
19057
+ if (value !== void 0 && value !== null) {
19058
+ return String(value);
19059
+ }
19060
+ }
19061
+ }
19062
+ return match;
19063
+ });
19064
+ }
19065
+ function transformElement(element, phaseMap, contextPath = "", contextData) {
19066
+ const forEachAttr = element.getAttribute("forEach");
19067
+ if (forEachAttr) {
19068
+ const fullPath = contextPath ? `${contextPath}.${forEachAttr}` : forEachAttr;
19069
+ const phaseInfo = phaseMap.get(fullPath);
19070
+ if (!phaseInfo || phaseInfo.phase === "slow") {
19071
+ const arrayValue = getValueByPath(contextData, forEachAttr);
19072
+ if (Array.isArray(arrayValue)) {
19073
+ const trackBy = element.getAttribute("trackBy") || "id";
19074
+ const results = [];
19075
+ arrayValue.forEach((item, index) => {
19076
+ const cloned = element.clone();
19077
+ cloned.removeAttribute("forEach");
19078
+ cloned.removeAttribute("foreach");
19079
+ cloned.removeAttribute("trackBy");
19080
+ cloned.removeAttribute("trackby");
19081
+ cloned.setAttribute("slowForEach", forEachAttr);
19082
+ cloned.setAttribute("jayIndex", String(index));
19083
+ const trackByValue = item && typeof item === "object" ? String(item[trackBy] || index) : String(index);
19084
+ cloned.setAttribute("jayTrackBy", trackByValue);
19085
+ const newContextPath = fullPath;
19086
+ const itemData = item;
19087
+ const transformedChildren2 = transformChildren(
19088
+ cloned,
19089
+ phaseMap,
19090
+ newContextPath,
19091
+ itemData
19092
+ );
19093
+ cloned.innerHTML = "";
19094
+ for (const child of transformedChildren2) {
19095
+ cloned.appendChild(child);
19096
+ }
19097
+ results.push(cloned);
19098
+ });
19099
+ return results;
19100
+ }
19101
+ }
19102
+ }
19103
+ const ifAttr = element.getAttribute("if");
19104
+ if (ifAttr) {
19105
+ const binding = parseBinding(`{${ifAttr}}`);
19106
+ if (binding) {
19107
+ const fullPath = contextPath ? `${contextPath}.${binding}` : binding;
19108
+ if (isSlowPhase(fullPath, phaseMap)) {
19109
+ const value = getValueByPath(contextData, binding);
19110
+ if (!value) {
19111
+ return [];
19112
+ }
19113
+ element.removeAttribute("if");
19114
+ }
19115
+ }
19116
+ }
19117
+ for (const attrName of Object.keys(element.attributes)) {
19118
+ if (["foreach", "trackby", "slowforeach", "jayindex", "jaytrackby", "if", "ref"].includes(
19119
+ attrName.toLowerCase()
19120
+ )) {
19121
+ continue;
19122
+ }
19123
+ const attrValue = element.getAttribute(attrName);
19124
+ if (attrValue && hasBindings(attrValue)) {
19125
+ const resolved = resolveTextBindings(attrValue, contextData, phaseMap, contextPath);
19126
+ element.setAttribute(attrName, resolved);
19127
+ }
19128
+ }
19129
+ const transformedChildren = transformChildren(element, phaseMap, contextPath, contextData);
19130
+ element.innerHTML = "";
19131
+ for (const child of transformedChildren) {
19132
+ element.appendChild(child);
19133
+ }
19134
+ return [element];
19135
+ }
19136
+ function transformChildren(parent, phaseMap, contextPath = "", contextData) {
19137
+ const results = [];
19138
+ for (const child of parent.childNodes) {
19139
+ if (child.nodeType === NodeType.ELEMENT_NODE) {
19140
+ const transformed = transformElement(
19141
+ child,
19142
+ phaseMap,
19143
+ contextPath,
19144
+ contextData
19145
+ );
19146
+ results.push(...transformed);
19147
+ } else if (child.nodeType === NodeType.TEXT_NODE) {
19148
+ const text2 = child.rawText;
19149
+ if (hasBindings(text2)) {
19150
+ const resolved = resolveTextBindings(text2, contextData, phaseMap, contextPath);
19151
+ child._rawText = resolved;
19152
+ }
19153
+ results.push(child);
19154
+ } else {
19155
+ results.push(child);
19156
+ }
19157
+ }
19158
+ return results;
19159
+ }
19160
+ function resolveRelativePaths(root, sourceDir) {
19161
+ const jayDataScripts = root.querySelectorAll('script[type="application/jay-data"]');
19162
+ for (const script of jayDataScripts) {
19163
+ const contract = script.getAttribute("contract");
19164
+ if (contract && isRelativePath(contract)) {
19165
+ script.setAttribute("contract", path.resolve(sourceDir, contract));
19166
+ }
19167
+ }
19168
+ const headlessScripts = root.querySelectorAll('script[type="application/jay-headless"]');
19169
+ for (const script of headlessScripts) {
19170
+ const src = script.getAttribute("src");
19171
+ if (src && isRelativePath(src)) {
19172
+ script.setAttribute("src", path.resolve(sourceDir, src));
19173
+ }
19174
+ }
19175
+ const links = root.querySelectorAll('link[rel="stylesheet"]');
19176
+ for (const link of links) {
19177
+ const href = link.getAttribute("href");
19178
+ if (href && isRelativePath(href)) {
19179
+ link.setAttribute("href", path.resolve(sourceDir, href));
19180
+ }
19181
+ }
19182
+ const scripts = root.querySelectorAll("script[src]");
19183
+ for (const script of scripts) {
19184
+ const scriptType = script.getAttribute("type");
19185
+ if (scriptType === "application/jay-data" || scriptType === "application/jay-headless") {
19186
+ continue;
19187
+ }
19188
+ const src = script.getAttribute("src");
19189
+ if (src && isRelativePath(src)) {
19190
+ script.setAttribute("src", path.resolve(sourceDir, src));
19191
+ }
19192
+ }
19193
+ }
19194
+ function isRelativePath(p) {
19195
+ return p.startsWith("./") || p.startsWith("../");
19196
+ }
19197
+ function slowRenderTransform(input) {
19198
+ const validations = [];
19199
+ try {
19200
+ const root = parse_2(input.jayHtmlContent, {
19201
+ comment: true,
19202
+ blockTextElements: {
19203
+ script: true,
19204
+ style: true
19205
+ }
19206
+ });
19207
+ const phaseMap = buildPhaseMap(input.contract);
19208
+ const body = root.querySelector("body");
19209
+ if (!body) {
19210
+ validations.push("jay-html must have a body element");
19211
+ return new WithValidations(void 0, validations);
19212
+ }
19213
+ const transformedChildren = transformChildren(body, phaseMap, "", input.slowViewState);
19214
+ body.innerHTML = "";
19215
+ for (const child of transformedChildren) {
19216
+ body.appendChild(child);
19217
+ }
19218
+ if (input.sourceDir) {
19219
+ resolveRelativePaths(root, input.sourceDir);
19220
+ }
19221
+ const output = {
19222
+ preRenderedJayHtml: root.toString()
19223
+ };
19224
+ return new WithValidations(output, validations);
19225
+ } catch (error) {
19226
+ validations.push(`Slow render transform failed: ${error.message}`);
19227
+ return new WithValidations(void 0, validations);
19228
+ }
19229
+ }
19230
+ function hasSlowPhaseProperties(contract) {
19231
+ if (!contract) {
19232
+ return false;
19233
+ }
19234
+ function checkTag(tag, parentPhase = "slow") {
19235
+ const effectivePhase = tag.phase || parentPhase;
19236
+ if (effectivePhase === "slow") {
19237
+ return true;
19238
+ }
19239
+ if (tag.tags) {
19240
+ for (const childTag of tag.tags) {
19241
+ if (checkTag(childTag, effectivePhase)) {
19242
+ return true;
19243
+ }
19244
+ }
19245
+ }
19246
+ return false;
19247
+ }
19248
+ for (const tag of contract.tags) {
19249
+ if (checkTag(tag)) {
19250
+ return true;
19251
+ }
19252
+ }
19253
+ return false;
19254
+ }
18182
19255
  export {
18183
19256
  ContractTagType,
18184
19257
  JAY_IMPORT_RESOLVER,
@@ -18193,9 +19266,11 @@ export {
18193
19266
  generateSandboxRootFile,
18194
19267
  generateTypes,
18195
19268
  getJayHtmlImports,
19269
+ hasSlowPhaseProperties,
18196
19270
  parseContract,
18197
19271
  parseEnumValues,
18198
19272
  parseIsEnum,
18199
19273
  parseJayFile,
18200
- renderRefsType
19274
+ renderRefsType,
19275
+ slowRenderTransform
18201
19276
  };