@optionfactory/fml 9.0.0-rc27 → 9.0.0-rc29

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.
Files changed (43) hide show
  1. package/dist/client-errors.iife.js +21 -16
  2. package/dist/client-errors.iife.js.map +1 -1
  3. package/dist/client-errors.iife.min.js +1 -1
  4. package/dist/client-errors.iife.min.js.map +1 -1
  5. package/dist/custom-elements.json +16 -16
  6. package/dist/fml.css +13 -13
  7. package/dist/fml.css.map +1 -1
  8. package/dist/fml.iife.js +871 -883
  9. package/dist/fml.iife.js.map +1 -1
  10. package/dist/fml.iife.min.js +1 -1
  11. package/dist/fml.iife.min.js.map +1 -1
  12. package/dist/ftl.d.mts +3 -3
  13. package/dist/ftl.iife.js +275 -679
  14. package/dist/ftl.iife.js.map +1 -1
  15. package/dist/ftl.iife.min.js +1 -1
  16. package/dist/ftl.iife.min.js.map +1 -1
  17. package/dist/ftl.min.mjs +1 -1
  18. package/dist/ftl.min.mjs.map +1 -1
  19. package/dist/ftl.mjs +275 -679
  20. package/dist/ftl.mjs.map +1 -1
  21. package/dist/ful.css +13 -13
  22. package/dist/ful.css.map +1 -1
  23. package/dist/ful.d.mts +195 -71
  24. package/dist/ful.iife.js +564 -189
  25. package/dist/ful.iife.js.map +1 -1
  26. package/dist/ful.iife.min.js +1 -1
  27. package/dist/ful.iife.min.js.map +1 -1
  28. package/dist/ful.min.mjs +1 -1
  29. package/dist/ful.min.mjs.map +1 -1
  30. package/dist/ful.mjs +564 -189
  31. package/dist/ful.mjs.map +1 -1
  32. package/dist/httpc.d.mts +9 -7
  33. package/dist/httpc.iife.js +32 -15
  34. package/dist/httpc.iife.js.map +1 -1
  35. package/dist/httpc.iife.min.js +1 -1
  36. package/dist/httpc.iife.min.js.map +1 -1
  37. package/dist/httpc.min.mjs +1 -1
  38. package/dist/httpc.min.mjs.map +1 -1
  39. package/dist/httpc.mjs +32 -15
  40. package/dist/httpc.mjs.map +1 -1
  41. package/dist/vscode.html-custom-data.json +13 -13
  42. package/dist/web-types.json +17 -17
  43. package/package.json +2 -2
package/dist/ftl.mjs CHANGED
@@ -68,7 +68,7 @@ const nodes = {
68
68
  },
69
69
  };
70
70
 
71
- // @generated by Peggy 5.1.0.
71
+ // @generated by Peggy 5.1.1.
72
72
  //
73
73
  // https://peggyjs.org/
74
74
 
@@ -134,10 +134,9 @@ class peg$SyntaxError extends SyntaxError {
134
134
  return s;
135
135
  }
136
136
 
137
- function literalEscape(s) {
137
+ function escape(s, special) {
138
138
  return unicodeEscape(s
139
- .replace(/\\/g, "\\\\")
140
- .replace(/"/g, "\\\"")
139
+ .replace(special, "\\$&")
141
140
  .replace(/\0/g, "\\0")
142
141
  .replace(/\t/g, "\\t")
143
142
  .replace(/\n/g, "\\n")
@@ -146,18 +145,12 @@ class peg$SyntaxError extends SyntaxError {
146
145
  .replace(/[\x10-\x1F\x7F-\x9F]/g, ch => "\\x" + hex(ch)));
147
146
  }
148
147
 
148
+ function literalEscape(s) {
149
+ return escape(s, /[\\"]/g);
150
+ }
151
+
149
152
  function classEscape(s) {
150
- return unicodeEscape(s
151
- .replace(/\\/g, "\\\\")
152
- .replace(/\]/g, "\\]")
153
- .replace(/\^/g, "\\^")
154
- .replace(/-/g, "\\-")
155
- .replace(/\0/g, "\\0")
156
- .replace(/\t/g, "\\t")
157
- .replace(/\n/g, "\\n")
158
- .replace(/\r/g, "\\r")
159
- .replace(/[\x00-\x0F]/g, ch => "\\x0" + hex(ch))
160
- .replace(/[\x10-\x1F\x7F-\x9F]/g, ch => "\\x" + hex(ch)));
153
+ return escape(s, /[\\\]^-]/g);
161
154
  }
162
155
 
163
156
  const DESCRIBE_EXPECTATION_FNS = {
@@ -275,14 +268,6 @@ function peg$parse(input, options) {
275
268
  const peg$c53 = "<=";
276
269
  const peg$c54 = "<";
277
270
 
278
- const peg$r0 = /^[^\\{]/;
279
- const peg$r1 = /^[0-9]/;
280
- const peg$r2 = /^[^']/;
281
- const peg$r3 = /^[^"]/;
282
- const peg$r4 = /^[^\\`{]/;
283
- const peg$r5 = /^[a-zA-Z$_]/;
284
- const peg$r6 = /^[a-zA-Z$_0-9]/;
285
- const peg$r7 = /^[ \t\n\r]/;
286
271
 
287
272
  const peg$e0 = peg$literalExpectation("{{{{", false);
288
273
  const peg$e1 = peg$literalExpectation("}}}}", false);
@@ -440,9 +425,10 @@ function peg$parse(input, options) {
440
425
  let peg$maxFailExpected = options.peg$maxFailExpected || [];
441
426
  let peg$silentFails = options.peg$silentFails | 0;
442
427
 
443
- let peg$resultsCache = {};
428
+ let peg$resultsCache = new Map();
444
429
 
445
430
  let peg$result;
431
+ let peg$charCode;
446
432
 
447
433
  if (options.startRule) {
448
434
  if (!(options.startRule in peg$startRuleFunctions)) {
@@ -561,7 +547,7 @@ function peg$parse(input, options) {
561
547
  let s0, s1;
562
548
 
563
549
  const key = peg$currPos * 38 + 0;
564
- const cached = peg$resultsCache[key];
550
+ const cached = peg$resultsCache.get(key);
565
551
 
566
552
  if (cached) {
567
553
  peg$currPos = cached.nextPos;
@@ -570,13 +556,13 @@ function peg$parse(input, options) {
570
556
  }
571
557
 
572
558
  s0 = [];
573
- s1 = peg$parseTemplatedExpression();
574
- while (s1 !== peg$FAILED) {
575
- s0.push(s1);
559
+ for (;;) {
576
560
  s1 = peg$parseTemplatedExpression();
561
+ if (s1 === peg$FAILED) { break; }
562
+ s0.push(s1);
577
563
  }
578
564
 
579
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
565
+ peg$resultsCache.set(key, { nextPos: peg$currPos, result: s0 });
580
566
 
581
567
  return s0;
582
568
  }
@@ -585,7 +571,7 @@ function peg$parse(input, options) {
585
571
  let s0, s1, s2, s3, s4;
586
572
 
587
573
  const key = peg$currPos * 38 + 1;
588
- const cached = peg$resultsCache[key];
574
+ const cached = peg$resultsCache.get(key);
589
575
 
590
576
  if (cached) {
591
577
  peg$currPos = cached.nextPos;
@@ -681,7 +667,7 @@ function peg$parse(input, options) {
681
667
  }
682
668
  }
683
669
 
684
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
670
+ peg$resultsCache.set(key, { nextPos: peg$currPos, result: s0 });
685
671
 
686
672
  return s0;
687
673
  }
@@ -690,7 +676,7 @@ function peg$parse(input, options) {
690
676
  let s0;
691
677
 
692
678
  const key = peg$currPos * 38 + 2;
693
- const cached = peg$resultsCache[key];
679
+ const cached = peg$resultsCache.get(key);
694
680
 
695
681
  if (cached) {
696
682
  peg$currPos = cached.nextPos;
@@ -706,7 +692,7 @@ function peg$parse(input, options) {
706
692
  if (peg$silentFails === 0) { peg$fail(peg$e0); }
707
693
  }
708
694
 
709
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
695
+ peg$resultsCache.set(key, { nextPos: peg$currPos, result: s0 });
710
696
 
711
697
  return s0;
712
698
  }
@@ -715,7 +701,7 @@ function peg$parse(input, options) {
715
701
  let s0;
716
702
 
717
703
  const key = peg$currPos * 38 + 3;
718
- const cached = peg$resultsCache[key];
704
+ const cached = peg$resultsCache.get(key);
719
705
 
720
706
  if (cached) {
721
707
  peg$currPos = cached.nextPos;
@@ -731,7 +717,7 @@ function peg$parse(input, options) {
731
717
  if (peg$silentFails === 0) { peg$fail(peg$e1); }
732
718
  }
733
719
 
734
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
720
+ peg$resultsCache.set(key, { nextPos: peg$currPos, result: s0 });
735
721
 
736
722
  return s0;
737
723
  }
@@ -740,7 +726,7 @@ function peg$parse(input, options) {
740
726
  let s0;
741
727
 
742
728
  const key = peg$currPos * 38 + 4;
743
- const cached = peg$resultsCache[key];
729
+ const cached = peg$resultsCache.get(key);
744
730
 
745
731
  if (cached) {
746
732
  peg$currPos = cached.nextPos;
@@ -756,7 +742,7 @@ function peg$parse(input, options) {
756
742
  if (peg$silentFails === 0) { peg$fail(peg$e2); }
757
743
  }
758
744
 
759
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
745
+ peg$resultsCache.set(key, { nextPos: peg$currPos, result: s0 });
760
746
 
761
747
  return s0;
762
748
  }
@@ -765,7 +751,7 @@ function peg$parse(input, options) {
765
751
  let s0;
766
752
 
767
753
  const key = peg$currPos * 38 + 5;
768
- const cached = peg$resultsCache[key];
754
+ const cached = peg$resultsCache.get(key);
769
755
 
770
756
  if (cached) {
771
757
  peg$currPos = cached.nextPos;
@@ -781,7 +767,7 @@ function peg$parse(input, options) {
781
767
  if (peg$silentFails === 0) { peg$fail(peg$e3); }
782
768
  }
783
769
 
784
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
770
+ peg$resultsCache.set(key, { nextPos: peg$currPos, result: s0 });
785
771
 
786
772
  return s0;
787
773
  }
@@ -790,7 +776,7 @@ function peg$parse(input, options) {
790
776
  let s0;
791
777
 
792
778
  const key = peg$currPos * 38 + 6;
793
- const cached = peg$resultsCache[key];
779
+ const cached = peg$resultsCache.get(key);
794
780
 
795
781
  if (cached) {
796
782
  peg$currPos = cached.nextPos;
@@ -806,7 +792,7 @@ function peg$parse(input, options) {
806
792
  if (peg$silentFails === 0) { peg$fail(peg$e4); }
807
793
  }
808
794
 
809
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
795
+ peg$resultsCache.set(key, { nextPos: peg$currPos, result: s0 });
810
796
 
811
797
  return s0;
812
798
  }
@@ -815,7 +801,7 @@ function peg$parse(input, options) {
815
801
  let s0;
816
802
 
817
803
  const key = peg$currPos * 38 + 7;
818
- const cached = peg$resultsCache[key];
804
+ const cached = peg$resultsCache.get(key);
819
805
 
820
806
  if (cached) {
821
807
  peg$currPos = cached.nextPos;
@@ -831,7 +817,7 @@ function peg$parse(input, options) {
831
817
  if (peg$silentFails === 0) { peg$fail(peg$e5); }
832
818
  }
833
819
 
834
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
820
+ peg$resultsCache.set(key, { nextPos: peg$currPos, result: s0 });
835
821
 
836
822
  return s0;
837
823
  }
@@ -840,7 +826,7 @@ function peg$parse(input, options) {
840
826
  let s0, s1, s2, s3, s4, s5, s6;
841
827
 
842
828
  const key = peg$currPos * 38 + 8;
843
- const cached = peg$resultsCache[key];
829
+ const cached = peg$resultsCache.get(key);
844
830
 
845
831
  if (cached) {
846
832
  peg$currPos = cached.nextPos;
@@ -850,211 +836,104 @@ function peg$parse(input, options) {
850
836
 
851
837
  s0 = peg$currPos;
852
838
  s1 = [];
853
- s2 = peg$currPos;
854
- s3 = [];
855
- s4 = input.charAt(peg$currPos);
856
- if (peg$r0.test(s4)) {
857
- peg$currPos++;
858
- } else {
859
- s4 = peg$FAILED;
860
- if (peg$silentFails === 0) { peg$fail(peg$e6); }
861
- }
862
- if (s4 !== peg$FAILED) {
863
- while (s4 !== peg$FAILED) {
864
- s3.push(s4);
839
+ for (;;) {
840
+ s2 = peg$currPos;
841
+ s3 = [];
842
+ for (;;) {
865
843
  s4 = input.charAt(peg$currPos);
866
- if (peg$r0.test(s4)) {
844
+ if (s4 !== "" && !(peg$charCode = s4.charCodeAt(0), peg$charCode === 92 || peg$charCode === 123)) {
867
845
  peg$currPos++;
868
846
  } else {
869
847
  s4 = peg$FAILED;
870
848
  if (peg$silentFails === 0) { peg$fail(peg$e6); }
871
849
  }
850
+ if (s4 === peg$FAILED) { break; }
851
+ s3.push(s4);
872
852
  }
873
- } else {
874
- s3 = peg$FAILED;
875
- }
876
- if (s3 !== peg$FAILED) {
877
- s2 = input.substring(s2, peg$currPos);
878
- } else {
879
- s2 = s3;
880
- }
881
- if (s2 === peg$FAILED) {
882
- s2 = peg$currPos;
883
- if (input.charCodeAt(peg$currPos) === 92) {
884
- s3 = peg$c7;
885
- peg$currPos++;
886
- } else {
853
+ if (s3.length < 1) {
887
854
  s3 = peg$FAILED;
888
- if (peg$silentFails === 0) { peg$fail(peg$e7); }
889
855
  }
890
856
  if (s3 !== peg$FAILED) {
891
- if (input.length > peg$currPos) {
892
- s4 = input.charAt(peg$currPos);
893
- peg$currPos++;
894
- } else {
895
- s4 = peg$FAILED;
896
- if (peg$silentFails === 0) { peg$fail(peg$e8); }
897
- }
898
- if (s4 !== peg$FAILED) {
899
- s2 = peg$f4(s4);
900
- } else {
901
- peg$currPos = s2;
902
- s2 = peg$FAILED;
903
- }
857
+ s2 = input.substring(s2, peg$currPos);
904
858
  } else {
905
- peg$currPos = s2;
906
- s2 = peg$FAILED;
859
+ s2 = s3;
907
860
  }
908
861
  if (s2 === peg$FAILED) {
909
862
  s2 = peg$currPos;
910
- s3 = peg$currPos;
911
- if (input.charCodeAt(peg$currPos) === 123) {
912
- s4 = peg$c9;
863
+ if (input.charCodeAt(peg$currPos) === 92) {
864
+ s3 = peg$c7;
913
865
  peg$currPos++;
914
866
  } else {
915
- s4 = peg$FAILED;
916
- if (peg$silentFails === 0) { peg$fail(peg$e9); }
867
+ s3 = peg$FAILED;
868
+ if (peg$silentFails === 0) { peg$fail(peg$e7); }
917
869
  }
918
- if (s4 !== peg$FAILED) {
919
- s5 = peg$currPos;
920
- peg$silentFails++;
921
- if (input.charCodeAt(peg$currPos) === 123) {
922
- s6 = peg$c9;
870
+ if (s3 !== peg$FAILED) {
871
+ if (input.length > peg$currPos) {
872
+ s4 = input.charAt(peg$currPos);
923
873
  peg$currPos++;
924
874
  } else {
925
- s6 = peg$FAILED;
926
- if (peg$silentFails === 0) { peg$fail(peg$e9); }
927
- }
928
- peg$silentFails--;
929
- if (s6 === peg$FAILED) {
930
- s5 = undefined;
931
- } else {
932
- peg$currPos = s5;
933
- s5 = peg$FAILED;
875
+ s4 = peg$FAILED;
876
+ if (peg$silentFails === 0) { peg$fail(peg$e8); }
934
877
  }
935
- if (s5 !== peg$FAILED) {
936
- s4 = [s4, s5];
937
- s3 = s4;
878
+ if (s4 !== peg$FAILED) {
879
+ s2 = peg$f4(s4);
938
880
  } else {
939
- peg$currPos = s3;
940
- s3 = peg$FAILED;
941
- }
942
- } else {
943
- peg$currPos = s3;
944
- s3 = peg$FAILED;
945
- }
946
- if (s3 !== peg$FAILED) {
947
- s2 = input.substring(s2, peg$currPos);
948
- } else {
949
- s2 = s3;
950
- }
951
- }
952
- }
953
- if (s2 !== peg$FAILED) {
954
- while (s2 !== peg$FAILED) {
955
- s1.push(s2);
956
- s2 = peg$currPos;
957
- s3 = [];
958
- s4 = input.charAt(peg$currPos);
959
- if (peg$r0.test(s4)) {
960
- peg$currPos++;
961
- } else {
962
- s4 = peg$FAILED;
963
- if (peg$silentFails === 0) { peg$fail(peg$e6); }
964
- }
965
- if (s4 !== peg$FAILED) {
966
- while (s4 !== peg$FAILED) {
967
- s3.push(s4);
968
- s4 = input.charAt(peg$currPos);
969
- if (peg$r0.test(s4)) {
970
- peg$currPos++;
971
- } else {
972
- s4 = peg$FAILED;
973
- if (peg$silentFails === 0) { peg$fail(peg$e6); }
974
- }
881
+ peg$currPos = s2;
882
+ s2 = peg$FAILED;
975
883
  }
976
884
  } else {
977
- s3 = peg$FAILED;
978
- }
979
- if (s3 !== peg$FAILED) {
980
- s2 = input.substring(s2, peg$currPos);
981
- } else {
982
- s2 = s3;
885
+ peg$currPos = s2;
886
+ s2 = peg$FAILED;
983
887
  }
984
888
  if (s2 === peg$FAILED) {
985
889
  s2 = peg$currPos;
986
- if (input.charCodeAt(peg$currPos) === 92) {
987
- s3 = peg$c7;
890
+ s3 = peg$currPos;
891
+ if (input.charCodeAt(peg$currPos) === 123) {
892
+ s4 = peg$c9;
988
893
  peg$currPos++;
989
894
  } else {
990
- s3 = peg$FAILED;
991
- if (peg$silentFails === 0) { peg$fail(peg$e7); }
992
- }
993
- if (s3 !== peg$FAILED) {
994
- if (input.length > peg$currPos) {
995
- s4 = input.charAt(peg$currPos);
996
- peg$currPos++;
997
- } else {
998
- s4 = peg$FAILED;
999
- if (peg$silentFails === 0) { peg$fail(peg$e8); }
1000
- }
1001
- if (s4 !== peg$FAILED) {
1002
- s2 = peg$f4(s4);
1003
- } else {
1004
- peg$currPos = s2;
1005
- s2 = peg$FAILED;
1006
- }
1007
- } else {
1008
- peg$currPos = s2;
1009
- s2 = peg$FAILED;
895
+ s4 = peg$FAILED;
896
+ if (peg$silentFails === 0) { peg$fail(peg$e9); }
1010
897
  }
1011
- if (s2 === peg$FAILED) {
1012
- s2 = peg$currPos;
1013
- s3 = peg$currPos;
898
+ if (s4 !== peg$FAILED) {
899
+ s5 = peg$currPos;
900
+ peg$silentFails++;
1014
901
  if (input.charCodeAt(peg$currPos) === 123) {
1015
- s4 = peg$c9;
902
+ s6 = peg$c9;
1016
903
  peg$currPos++;
1017
904
  } else {
1018
- s4 = peg$FAILED;
905
+ s6 = peg$FAILED;
1019
906
  if (peg$silentFails === 0) { peg$fail(peg$e9); }
1020
907
  }
1021
- if (s4 !== peg$FAILED) {
1022
- s5 = peg$currPos;
1023
- peg$silentFails++;
1024
- if (input.charCodeAt(peg$currPos) === 123) {
1025
- s6 = peg$c9;
1026
- peg$currPos++;
1027
- } else {
1028
- s6 = peg$FAILED;
1029
- if (peg$silentFails === 0) { peg$fail(peg$e9); }
1030
- }
1031
- peg$silentFails--;
1032
- if (s6 === peg$FAILED) {
1033
- s5 = undefined;
1034
- } else {
1035
- peg$currPos = s5;
1036
- s5 = peg$FAILED;
1037
- }
1038
- if (s5 !== peg$FAILED) {
1039
- s4 = [s4, s5];
1040
- s3 = s4;
1041
- } else {
1042
- peg$currPos = s3;
1043
- s3 = peg$FAILED;
1044
- }
908
+ peg$silentFails--;
909
+ if (s6 === peg$FAILED) {
910
+ s5 = undefined;
1045
911
  } else {
1046
- peg$currPos = s3;
1047
- s3 = peg$FAILED;
912
+ peg$currPos = s5;
913
+ s5 = peg$FAILED;
1048
914
  }
1049
- if (s3 !== peg$FAILED) {
1050
- s2 = input.substring(s2, peg$currPos);
915
+ if (s5 !== peg$FAILED) {
916
+ s4 = [s4, s5];
917
+ s3 = s4;
1051
918
  } else {
1052
- s2 = s3;
919
+ peg$currPos = s3;
920
+ s3 = peg$FAILED;
1053
921
  }
922
+ } else {
923
+ peg$currPos = s3;
924
+ s3 = peg$FAILED;
925
+ }
926
+ if (s3 !== peg$FAILED) {
927
+ s2 = input.substring(s2, peg$currPos);
928
+ } else {
929
+ s2 = s3;
1054
930
  }
1055
931
  }
1056
932
  }
1057
- } else {
933
+ if (s2 === peg$FAILED) { break; }
934
+ s1.push(s2);
935
+ }
936
+ if (s1.length < 1) {
1058
937
  s1 = peg$FAILED;
1059
938
  }
1060
939
  if (s1 !== peg$FAILED) {
@@ -1062,7 +941,7 @@ function peg$parse(input, options) {
1062
941
  }
1063
942
  s0 = s1;
1064
943
 
1065
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
944
+ peg$resultsCache.set(key, { nextPos: peg$currPos, result: s0 });
1066
945
 
1067
946
  return s0;
1068
947
  }
@@ -1071,7 +950,7 @@ function peg$parse(input, options) {
1071
950
  let s0, s2;
1072
951
 
1073
952
  const key = peg$currPos * 38 + 9;
1074
- const cached = peg$resultsCache[key];
953
+ const cached = peg$resultsCache.get(key);
1075
954
 
1076
955
  if (cached) {
1077
956
  peg$currPos = cached.nextPos;
@@ -1090,7 +969,7 @@ function peg$parse(input, options) {
1090
969
  s0 = peg$FAILED;
1091
970
  }
1092
971
 
1093
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
972
+ peg$resultsCache.set(key, { nextPos: peg$currPos, result: s0 });
1094
973
 
1095
974
  return s0;
1096
975
  }
@@ -1099,7 +978,7 @@ function peg$parse(input, options) {
1099
978
  let s0, s1, s3, s5, s7, s9;
1100
979
 
1101
980
  const key = peg$currPos * 38 + 10;
1102
- const cached = peg$resultsCache[key];
981
+ const cached = peg$resultsCache.get(key);
1103
982
 
1104
983
  if (cached) {
1105
984
  peg$currPos = cached.nextPos;
@@ -1159,7 +1038,7 @@ function peg$parse(input, options) {
1159
1038
  s0 = peg$parseElvisExpression();
1160
1039
  }
1161
1040
 
1162
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
1041
+ peg$resultsCache.set(key, { nextPos: peg$currPos, result: s0 });
1163
1042
 
1164
1043
  return s0;
1165
1044
  }
@@ -1168,7 +1047,7 @@ function peg$parse(input, options) {
1168
1047
  let s0, s1, s3, s5;
1169
1048
 
1170
1049
  const key = peg$currPos * 38 + 11;
1171
- const cached = peg$resultsCache[key];
1050
+ const cached = peg$resultsCache.get(key);
1172
1051
 
1173
1052
  if (cached) {
1174
1053
  peg$currPos = cached.nextPos;
@@ -1208,7 +1087,7 @@ function peg$parse(input, options) {
1208
1087
  s0 = peg$parseNullCoalescingExpression();
1209
1088
  }
1210
1089
 
1211
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
1090
+ peg$resultsCache.set(key, { nextPos: peg$currPos, result: s0 });
1212
1091
 
1213
1092
  return s0;
1214
1093
  }
@@ -1217,7 +1096,7 @@ function peg$parse(input, options) {
1217
1096
  let s0, s1, s3, s5;
1218
1097
 
1219
1098
  const key = peg$currPos * 38 + 12;
1220
- const cached = peg$resultsCache[key];
1099
+ const cached = peg$resultsCache.get(key);
1221
1100
 
1222
1101
  if (cached) {
1223
1102
  peg$currPos = cached.nextPos;
@@ -1257,7 +1136,7 @@ function peg$parse(input, options) {
1257
1136
  s0 = peg$parseOrExpression();
1258
1137
  }
1259
1138
 
1260
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
1139
+ peg$resultsCache.set(key, { nextPos: peg$currPos, result: s0 });
1261
1140
 
1262
1141
  return s0;
1263
1142
  }
@@ -1266,7 +1145,7 @@ function peg$parse(input, options) {
1266
1145
  let s0, s1, s2, s3, s5, s7;
1267
1146
 
1268
1147
  const key = peg$currPos * 38 + 13;
1269
- const cached = peg$resultsCache[key];
1148
+ const cached = peg$resultsCache.get(key);
1270
1149
 
1271
1150
  if (cached) {
1272
1151
  peg$currPos = cached.nextPos;
@@ -1278,30 +1157,7 @@ function peg$parse(input, options) {
1278
1157
  s1 = peg$parseAndExpression();
1279
1158
  if (s1 !== peg$FAILED) {
1280
1159
  s2 = [];
1281
- s3 = peg$currPos;
1282
- peg$parse_();
1283
- if (input.substr(peg$currPos, 2) === peg$c22) {
1284
- s5 = peg$c22;
1285
- peg$currPos += 2;
1286
- } else {
1287
- s5 = peg$FAILED;
1288
- if (peg$silentFails === 0) { peg$fail(peg$e14); }
1289
- }
1290
- if (s5 !== peg$FAILED) {
1291
- peg$parse_();
1292
- s7 = peg$parseAndExpression();
1293
- if (s7 !== peg$FAILED) {
1294
- s3 = s7;
1295
- } else {
1296
- peg$currPos = s3;
1297
- s3 = peg$FAILED;
1298
- }
1299
- } else {
1300
- peg$currPos = s3;
1301
- s3 = peg$FAILED;
1302
- }
1303
- while (s3 !== peg$FAILED) {
1304
- s2.push(s3);
1160
+ for (;;) {
1305
1161
  s3 = peg$currPos;
1306
1162
  peg$parse_();
1307
1163
  if (input.substr(peg$currPos, 2) === peg$c22) {
@@ -1324,6 +1180,8 @@ function peg$parse(input, options) {
1324
1180
  peg$currPos = s3;
1325
1181
  s3 = peg$FAILED;
1326
1182
  }
1183
+ if (s3 === peg$FAILED) { break; }
1184
+ s2.push(s3);
1327
1185
  }
1328
1186
  s0 = peg$f10(s1, s2);
1329
1187
  } else {
@@ -1331,7 +1189,7 @@ function peg$parse(input, options) {
1331
1189
  s0 = peg$FAILED;
1332
1190
  }
1333
1191
 
1334
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
1192
+ peg$resultsCache.set(key, { nextPos: peg$currPos, result: s0 });
1335
1193
 
1336
1194
  return s0;
1337
1195
  }
@@ -1340,7 +1198,7 @@ function peg$parse(input, options) {
1340
1198
  let s0, s1, s2, s3, s5, s7;
1341
1199
 
1342
1200
  const key = peg$currPos * 38 + 14;
1343
- const cached = peg$resultsCache[key];
1201
+ const cached = peg$resultsCache.get(key);
1344
1202
 
1345
1203
  if (cached) {
1346
1204
  peg$currPos = cached.nextPos;
@@ -1352,30 +1210,7 @@ function peg$parse(input, options) {
1352
1210
  s1 = peg$parseEqExpression();
1353
1211
  if (s1 !== peg$FAILED) {
1354
1212
  s2 = [];
1355
- s3 = peg$currPos;
1356
- peg$parse_();
1357
- if (input.substr(peg$currPos, 2) === peg$c24) {
1358
- s5 = peg$c24;
1359
- peg$currPos += 2;
1360
- } else {
1361
- s5 = peg$FAILED;
1362
- if (peg$silentFails === 0) { peg$fail(peg$e15); }
1363
- }
1364
- if (s5 !== peg$FAILED) {
1365
- peg$parse_();
1366
- s7 = peg$parseEqExpression();
1367
- if (s7 !== peg$FAILED) {
1368
- s3 = s7;
1369
- } else {
1370
- peg$currPos = s3;
1371
- s3 = peg$FAILED;
1372
- }
1373
- } else {
1374
- peg$currPos = s3;
1375
- s3 = peg$FAILED;
1376
- }
1377
- while (s3 !== peg$FAILED) {
1378
- s2.push(s3);
1213
+ for (;;) {
1379
1214
  s3 = peg$currPos;
1380
1215
  peg$parse_();
1381
1216
  if (input.substr(peg$currPos, 2) === peg$c24) {
@@ -1398,6 +1233,8 @@ function peg$parse(input, options) {
1398
1233
  peg$currPos = s3;
1399
1234
  s3 = peg$FAILED;
1400
1235
  }
1236
+ if (s3 === peg$FAILED) { break; }
1237
+ s2.push(s3);
1401
1238
  }
1402
1239
  s0 = peg$f11(s1, s2);
1403
1240
  } else {
@@ -1405,7 +1242,7 @@ function peg$parse(input, options) {
1405
1242
  s0 = peg$FAILED;
1406
1243
  }
1407
1244
 
1408
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
1245
+ peg$resultsCache.set(key, { nextPos: peg$currPos, result: s0 });
1409
1246
 
1410
1247
  return s0;
1411
1248
  }
@@ -1414,7 +1251,7 @@ function peg$parse(input, options) {
1414
1251
  let s0, s1, s2, s3, s5, s7;
1415
1252
 
1416
1253
  const key = peg$currPos * 38 + 15;
1417
- const cached = peg$resultsCache[key];
1254
+ const cached = peg$resultsCache.get(key);
1418
1255
 
1419
1256
  if (cached) {
1420
1257
  peg$currPos = cached.nextPos;
@@ -1426,24 +1263,7 @@ function peg$parse(input, options) {
1426
1263
  s1 = peg$parseRelExpression();
1427
1264
  if (s1 !== peg$FAILED) {
1428
1265
  s2 = [];
1429
- s3 = peg$currPos;
1430
- peg$parse_();
1431
- s5 = peg$parseEqualityOp();
1432
- if (s5 !== peg$FAILED) {
1433
- peg$parse_();
1434
- s7 = peg$parseRelExpression();
1435
- if (s7 !== peg$FAILED) {
1436
- s3 = peg$f12(s1, s5, s7);
1437
- } else {
1438
- peg$currPos = s3;
1439
- s3 = peg$FAILED;
1440
- }
1441
- } else {
1442
- peg$currPos = s3;
1443
- s3 = peg$FAILED;
1444
- }
1445
- while (s3 !== peg$FAILED) {
1446
- s2.push(s3);
1266
+ for (;;) {
1447
1267
  s3 = peg$currPos;
1448
1268
  peg$parse_();
1449
1269
  s5 = peg$parseEqualityOp();
@@ -1460,6 +1280,8 @@ function peg$parse(input, options) {
1460
1280
  peg$currPos = s3;
1461
1281
  s3 = peg$FAILED;
1462
1282
  }
1283
+ if (s3 === peg$FAILED) { break; }
1284
+ s2.push(s3);
1463
1285
  }
1464
1286
  s0 = peg$f13(s1, s2);
1465
1287
  } else {
@@ -1467,7 +1289,7 @@ function peg$parse(input, options) {
1467
1289
  s0 = peg$FAILED;
1468
1290
  }
1469
1291
 
1470
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
1292
+ peg$resultsCache.set(key, { nextPos: peg$currPos, result: s0 });
1471
1293
 
1472
1294
  return s0;
1473
1295
  }
@@ -1476,7 +1298,7 @@ function peg$parse(input, options) {
1476
1298
  let s0, s1, s2, s3, s5, s7;
1477
1299
 
1478
1300
  const key = peg$currPos * 38 + 16;
1479
- const cached = peg$resultsCache[key];
1301
+ const cached = peg$resultsCache.get(key);
1480
1302
 
1481
1303
  if (cached) {
1482
1304
  peg$currPos = cached.nextPos;
@@ -1488,24 +1310,7 @@ function peg$parse(input, options) {
1488
1310
  s1 = peg$parseNotExpression();
1489
1311
  if (s1 !== peg$FAILED) {
1490
1312
  s2 = [];
1491
- s3 = peg$currPos;
1492
- peg$parse_();
1493
- s5 = peg$parseRelationalOp();
1494
- if (s5 !== peg$FAILED) {
1495
- peg$parse_();
1496
- s7 = peg$parseNotExpression();
1497
- if (s7 !== peg$FAILED) {
1498
- s3 = peg$f14(s1, s5, s7);
1499
- } else {
1500
- peg$currPos = s3;
1501
- s3 = peg$FAILED;
1502
- }
1503
- } else {
1504
- peg$currPos = s3;
1505
- s3 = peg$FAILED;
1506
- }
1507
- while (s3 !== peg$FAILED) {
1508
- s2.push(s3);
1313
+ for (;;) {
1509
1314
  s3 = peg$currPos;
1510
1315
  peg$parse_();
1511
1316
  s5 = peg$parseRelationalOp();
@@ -1522,6 +1327,8 @@ function peg$parse(input, options) {
1522
1327
  peg$currPos = s3;
1523
1328
  s3 = peg$FAILED;
1524
1329
  }
1330
+ if (s3 === peg$FAILED) { break; }
1331
+ s2.push(s3);
1525
1332
  }
1526
1333
  s0 = peg$f15(s1, s2);
1527
1334
  } else {
@@ -1529,7 +1336,7 @@ function peg$parse(input, options) {
1529
1336
  s0 = peg$FAILED;
1530
1337
  }
1531
1338
 
1532
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
1339
+ peg$resultsCache.set(key, { nextPos: peg$currPos, result: s0 });
1533
1340
 
1534
1341
  return s0;
1535
1342
  }
@@ -1538,7 +1345,7 @@ function peg$parse(input, options) {
1538
1345
  let s0, s1, s3;
1539
1346
 
1540
1347
  const key = peg$currPos * 38 + 17;
1541
- const cached = peg$resultsCache[key];
1348
+ const cached = peg$resultsCache.get(key);
1542
1349
 
1543
1350
  if (cached) {
1544
1351
  peg$currPos = cached.nextPos;
@@ -1571,7 +1378,7 @@ function peg$parse(input, options) {
1571
1378
  s0 = peg$parseAccess();
1572
1379
  }
1573
1380
 
1574
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
1381
+ peg$resultsCache.set(key, { nextPos: peg$currPos, result: s0 });
1575
1382
 
1576
1383
  return s0;
1577
1384
  }
@@ -1580,7 +1387,7 @@ function peg$parse(input, options) {
1580
1387
  let s0, s1, s3, s4, s5;
1581
1388
 
1582
1389
  const key = peg$currPos * 38 + 18;
1583
- const cached = peg$resultsCache[key];
1390
+ const cached = peg$resultsCache.get(key);
1584
1391
 
1585
1392
  if (cached) {
1586
1393
  peg$currPos = cached.nextPos;
@@ -1593,29 +1400,20 @@ function peg$parse(input, options) {
1593
1400
  if (s1 !== peg$FAILED) {
1594
1401
  peg$parse_();
1595
1402
  s3 = [];
1596
- s4 = peg$currPos;
1597
- s5 = peg$parseAccessExpression();
1598
- if (s5 !== peg$FAILED) {
1599
- peg$parse_();
1600
- s4 = s5;
1601
- } else {
1602
- peg$currPos = s4;
1603
- s4 = peg$FAILED;
1604
- }
1605
- if (s4 !== peg$FAILED) {
1606
- while (s4 !== peg$FAILED) {
1607
- s3.push(s4);
1608
- s4 = peg$currPos;
1609
- s5 = peg$parseAccessExpression();
1610
- if (s5 !== peg$FAILED) {
1611
- peg$parse_();
1612
- s4 = s5;
1613
- } else {
1614
- peg$currPos = s4;
1615
- s4 = peg$FAILED;
1616
- }
1403
+ for (;;) {
1404
+ s4 = peg$currPos;
1405
+ s5 = peg$parseAccessExpression();
1406
+ if (s5 !== peg$FAILED) {
1407
+ peg$parse_();
1408
+ s4 = s5;
1409
+ } else {
1410
+ peg$currPos = s4;
1411
+ s4 = peg$FAILED;
1617
1412
  }
1618
- } else {
1413
+ if (s4 === peg$FAILED) { break; }
1414
+ s3.push(s4);
1415
+ }
1416
+ if (s3.length < 1) {
1619
1417
  s3 = peg$FAILED;
1620
1418
  }
1621
1419
  if (s3 !== peg$FAILED) {
@@ -1632,7 +1430,7 @@ function peg$parse(input, options) {
1632
1430
  s0 = peg$parseGroupingExpression();
1633
1431
  }
1634
1432
 
1635
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
1433
+ peg$resultsCache.set(key, { nextPos: peg$currPos, result: s0 });
1636
1434
 
1637
1435
  return s0;
1638
1436
  }
@@ -1641,7 +1439,7 @@ function peg$parse(input, options) {
1641
1439
  let s0;
1642
1440
 
1643
1441
  const key = peg$currPos * 38 + 19;
1644
- const cached = peg$resultsCache[key];
1442
+ const cached = peg$resultsCache.get(key);
1645
1443
 
1646
1444
  if (cached) {
1647
1445
  peg$currPos = cached.nextPos;
@@ -1657,7 +1455,7 @@ function peg$parse(input, options) {
1657
1455
  }
1658
1456
  }
1659
1457
 
1660
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
1458
+ peg$resultsCache.set(key, { nextPos: peg$currPos, result: s0 });
1661
1459
 
1662
1460
  return s0;
1663
1461
  }
@@ -1666,7 +1464,7 @@ function peg$parse(input, options) {
1666
1464
  let s0, s1, s3;
1667
1465
 
1668
1466
  const key = peg$currPos * 38 + 20;
1669
- const cached = peg$resultsCache[key];
1467
+ const cached = peg$resultsCache.get(key);
1670
1468
 
1671
1469
  if (cached) {
1672
1470
  peg$currPos = cached.nextPos;
@@ -1711,7 +1509,7 @@ function peg$parse(input, options) {
1711
1509
  if (peg$silentFails === 0) { peg$fail(peg$e17); }
1712
1510
  }
1713
1511
 
1714
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
1512
+ peg$resultsCache.set(key, { nextPos: peg$currPos, result: s0 });
1715
1513
 
1716
1514
  return s0;
1717
1515
  }
@@ -1720,7 +1518,7 @@ function peg$parse(input, options) {
1720
1518
  let s0, s1, s2, s4, s6;
1721
1519
 
1722
1520
  const key = peg$currPos * 38 + 21;
1723
- const cached = peg$resultsCache[key];
1521
+ const cached = peg$resultsCache.get(key);
1724
1522
 
1725
1523
  if (cached) {
1726
1524
  peg$currPos = cached.nextPos;
@@ -1779,7 +1577,7 @@ function peg$parse(input, options) {
1779
1577
  if (peg$silentFails === 0) { peg$fail(peg$e20); }
1780
1578
  }
1781
1579
 
1782
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
1580
+ peg$resultsCache.set(key, { nextPos: peg$currPos, result: s0 });
1783
1581
 
1784
1582
  return s0;
1785
1583
  }
@@ -1788,7 +1586,7 @@ function peg$parse(input, options) {
1788
1586
  let s0, s1, s2, s4, s5, s6, s7, s9;
1789
1587
 
1790
1588
  const key = peg$currPos * 38 + 22;
1791
- const cached = peg$resultsCache[key];
1589
+ const cached = peg$resultsCache.get(key);
1792
1590
 
1793
1591
  if (cached) {
1794
1592
  peg$currPos = cached.nextPos;
@@ -1830,30 +1628,7 @@ function peg$parse(input, options) {
1830
1628
  s4 = null;
1831
1629
  }
1832
1630
  s5 = [];
1833
- s6 = peg$currPos;
1834
- if (input.charCodeAt(peg$currPos) === 44) {
1835
- s7 = peg$c34;
1836
- peg$currPos++;
1837
- } else {
1838
- s7 = peg$FAILED;
1839
- if (peg$silentFails === 0) { peg$fail(peg$e25); }
1840
- }
1841
- if (s7 !== peg$FAILED) {
1842
- peg$parse_();
1843
- s9 = peg$parseTernaryExpression();
1844
- if (s9 !== peg$FAILED) {
1845
- peg$parse_();
1846
- s6 = s9;
1847
- } else {
1848
- peg$currPos = s6;
1849
- s6 = peg$FAILED;
1850
- }
1851
- } else {
1852
- peg$currPos = s6;
1853
- s6 = peg$FAILED;
1854
- }
1855
- while (s6 !== peg$FAILED) {
1856
- s5.push(s6);
1631
+ for (;;) {
1857
1632
  s6 = peg$currPos;
1858
1633
  if (input.charCodeAt(peg$currPos) === 44) {
1859
1634
  s7 = peg$c34;
@@ -1876,6 +1651,8 @@ function peg$parse(input, options) {
1876
1651
  peg$currPos = s6;
1877
1652
  s6 = peg$FAILED;
1878
1653
  }
1654
+ if (s6 === peg$FAILED) { break; }
1655
+ s5.push(s6);
1879
1656
  }
1880
1657
  if (input.charCodeAt(peg$currPos) === 41) {
1881
1658
  s6 = peg$c36;
@@ -1900,7 +1677,7 @@ function peg$parse(input, options) {
1900
1677
  if (peg$silentFails === 0) { peg$fail(peg$e23); }
1901
1678
  }
1902
1679
 
1903
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
1680
+ peg$resultsCache.set(key, { nextPos: peg$currPos, result: s0 });
1904
1681
 
1905
1682
  return s0;
1906
1683
  }
@@ -1909,7 +1686,7 @@ function peg$parse(input, options) {
1909
1686
  let s0, s1, s3, s5;
1910
1687
 
1911
1688
  const key = peg$currPos * 38 + 23;
1912
- const cached = peg$resultsCache[key];
1689
+ const cached = peg$resultsCache.get(key);
1913
1690
 
1914
1691
  if (cached) {
1915
1692
  peg$currPos = cached.nextPos;
@@ -1961,7 +1738,7 @@ function peg$parse(input, options) {
1961
1738
  }
1962
1739
  }
1963
1740
 
1964
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
1741
+ peg$resultsCache.set(key, { nextPos: peg$currPos, result: s0 });
1965
1742
 
1966
1743
  return s0;
1967
1744
  }
@@ -1970,7 +1747,7 @@ function peg$parse(input, options) {
1970
1747
  let s0, s1, s2, s4, s5, s6, s7, s9;
1971
1748
 
1972
1749
  const key = peg$currPos * 38 + 24;
1973
- const cached = peg$resultsCache[key];
1750
+ const cached = peg$resultsCache.get(key);
1974
1751
 
1975
1752
  if (cached) {
1976
1753
  peg$currPos = cached.nextPos;
@@ -2004,30 +1781,7 @@ function peg$parse(input, options) {
2004
1781
  s4 = null;
2005
1782
  }
2006
1783
  s5 = [];
2007
- s6 = peg$currPos;
2008
- if (input.charCodeAt(peg$currPos) === 44) {
2009
- s7 = peg$c34;
2010
- peg$currPos++;
2011
- } else {
2012
- s7 = peg$FAILED;
2013
- if (peg$silentFails === 0) { peg$fail(peg$e25); }
2014
- }
2015
- if (s7 !== peg$FAILED) {
2016
- peg$parse_();
2017
- s9 = peg$parseTernaryExpression();
2018
- if (s9 !== peg$FAILED) {
2019
- peg$parse_();
2020
- s6 = s9;
2021
- } else {
2022
- peg$currPos = s6;
2023
- s6 = peg$FAILED;
2024
- }
2025
- } else {
2026
- peg$currPos = s6;
2027
- s6 = peg$FAILED;
2028
- }
2029
- while (s6 !== peg$FAILED) {
2030
- s5.push(s6);
1784
+ for (;;) {
2031
1785
  s6 = peg$currPos;
2032
1786
  if (input.charCodeAt(peg$currPos) === 44) {
2033
1787
  s7 = peg$c34;
@@ -2050,6 +1804,8 @@ function peg$parse(input, options) {
2050
1804
  peg$currPos = s6;
2051
1805
  s6 = peg$FAILED;
2052
1806
  }
1807
+ if (s6 === peg$FAILED) { break; }
1808
+ s5.push(s6);
2053
1809
  }
2054
1810
  if (input.charCodeAt(peg$currPos) === 41) {
2055
1811
  s6 = peg$c36;
@@ -2078,7 +1834,7 @@ function peg$parse(input, options) {
2078
1834
  if (peg$silentFails === 0) { peg$fail(peg$e27); }
2079
1835
  }
2080
1836
 
2081
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
1837
+ peg$resultsCache.set(key, { nextPos: peg$currPos, result: s0 });
2082
1838
 
2083
1839
  return s0;
2084
1840
  }
@@ -2087,7 +1843,7 @@ function peg$parse(input, options) {
2087
1843
  let s0;
2088
1844
 
2089
1845
  const key = peg$currPos * 38 + 25;
2090
- const cached = peg$resultsCache[key];
1846
+ const cached = peg$resultsCache.get(key);
2091
1847
 
2092
1848
  if (cached) {
2093
1849
  peg$currPos = cached.nextPos;
@@ -2106,7 +1862,7 @@ function peg$parse(input, options) {
2106
1862
  }
2107
1863
  }
2108
1864
 
2109
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
1865
+ peg$resultsCache.set(key, { nextPos: peg$currPos, result: s0 });
2110
1866
 
2111
1867
  return s0;
2112
1868
  }
@@ -2115,7 +1871,7 @@ function peg$parse(input, options) {
2115
1871
  let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;
2116
1872
 
2117
1873
  const key = peg$currPos * 38 + 26;
2118
- const cached = peg$resultsCache[key];
1874
+ const cached = peg$resultsCache.get(key);
2119
1875
 
2120
1876
  if (cached) {
2121
1877
  peg$currPos = cached.nextPos;
@@ -2139,25 +1895,18 @@ function peg$parse(input, options) {
2139
1895
  }
2140
1896
  s4 = peg$currPos;
2141
1897
  s5 = [];
2142
- s6 = input.charAt(peg$currPos);
2143
- if (peg$r1.test(s6)) {
2144
- peg$currPos++;
2145
- } else {
2146
- s6 = peg$FAILED;
2147
- if (peg$silentFails === 0) { peg$fail(peg$e30); }
2148
- }
2149
- if (s6 !== peg$FAILED) {
2150
- while (s6 !== peg$FAILED) {
2151
- s5.push(s6);
2152
- s6 = input.charAt(peg$currPos);
2153
- if (peg$r1.test(s6)) {
2154
- peg$currPos++;
2155
- } else {
2156
- s6 = peg$FAILED;
2157
- if (peg$silentFails === 0) { peg$fail(peg$e30); }
2158
- }
1898
+ for (;;) {
1899
+ s6 = input.charAt(peg$currPos);
1900
+ if ((peg$charCode = s6.charCodeAt(0), (peg$charCode >= 48 && peg$charCode <= 57))) {
1901
+ peg$currPos++;
1902
+ } else {
1903
+ s6 = peg$FAILED;
1904
+ if (peg$silentFails === 0) { peg$fail(peg$e30); }
2159
1905
  }
2160
- } else {
1906
+ if (s6 === peg$FAILED) { break; }
1907
+ s5.push(s6);
1908
+ }
1909
+ if (s5.length < 1) {
2161
1910
  s5 = peg$FAILED;
2162
1911
  }
2163
1912
  if (s5 !== peg$FAILED) {
@@ -2171,22 +1920,16 @@ function peg$parse(input, options) {
2171
1920
  }
2172
1921
  if (s7 !== peg$FAILED) {
2173
1922
  s8 = [];
2174
- s9 = input.charAt(peg$currPos);
2175
- if (peg$r1.test(s9)) {
2176
- peg$currPos++;
2177
- } else {
2178
- s9 = peg$FAILED;
2179
- if (peg$silentFails === 0) { peg$fail(peg$e30); }
2180
- }
2181
- while (s9 !== peg$FAILED) {
2182
- s8.push(s9);
1923
+ for (;;) {
2183
1924
  s9 = input.charAt(peg$currPos);
2184
- if (peg$r1.test(s9)) {
1925
+ if ((peg$charCode = s9.charCodeAt(0), (peg$charCode >= 48 && peg$charCode <= 57))) {
2185
1926
  peg$currPos++;
2186
1927
  } else {
2187
1928
  s9 = peg$FAILED;
2188
1929
  if (peg$silentFails === 0) { peg$fail(peg$e30); }
2189
1930
  }
1931
+ if (s9 === peg$FAILED) { break; }
1932
+ s8.push(s9);
2190
1933
  }
2191
1934
  s7 = [s7, s8];
2192
1935
  s6 = s7;
@@ -2214,25 +1957,18 @@ function peg$parse(input, options) {
2214
1957
  }
2215
1958
  if (s5 !== peg$FAILED) {
2216
1959
  s6 = [];
2217
- s7 = input.charAt(peg$currPos);
2218
- if (peg$r1.test(s7)) {
2219
- peg$currPos++;
2220
- } else {
2221
- s7 = peg$FAILED;
2222
- if (peg$silentFails === 0) { peg$fail(peg$e30); }
2223
- }
2224
- if (s7 !== peg$FAILED) {
2225
- while (s7 !== peg$FAILED) {
2226
- s6.push(s7);
2227
- s7 = input.charAt(peg$currPos);
2228
- if (peg$r1.test(s7)) {
2229
- peg$currPos++;
2230
- } else {
2231
- s7 = peg$FAILED;
2232
- if (peg$silentFails === 0) { peg$fail(peg$e30); }
2233
- }
1960
+ for (;;) {
1961
+ s7 = input.charAt(peg$currPos);
1962
+ if ((peg$charCode = s7.charCodeAt(0), (peg$charCode >= 48 && peg$charCode <= 57))) {
1963
+ peg$currPos++;
1964
+ } else {
1965
+ s7 = peg$FAILED;
1966
+ if (peg$silentFails === 0) { peg$fail(peg$e30); }
2234
1967
  }
2235
- } else {
1968
+ if (s7 === peg$FAILED) { break; }
1969
+ s6.push(s7);
1970
+ }
1971
+ if (s6.length < 1) {
2236
1972
  s6 = peg$FAILED;
2237
1973
  }
2238
1974
  if (s6 !== peg$FAILED) {
@@ -2269,7 +2005,7 @@ function peg$parse(input, options) {
2269
2005
  if (peg$silentFails === 0) { peg$fail(peg$e28); }
2270
2006
  }
2271
2007
 
2272
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
2008
+ peg$resultsCache.set(key, { nextPos: peg$currPos, result: s0 });
2273
2009
 
2274
2010
  return s0;
2275
2011
  }
@@ -2278,7 +2014,7 @@ function peg$parse(input, options) {
2278
2014
  let s0, s1, s2, s3, s4;
2279
2015
 
2280
2016
  const key = peg$currPos * 38 + 27;
2281
- const cached = peg$resultsCache[key];
2017
+ const cached = peg$resultsCache.get(key);
2282
2018
 
2283
2019
  if (cached) {
2284
2020
  peg$currPos = cached.nextPos;
@@ -2298,22 +2034,16 @@ function peg$parse(input, options) {
2298
2034
  if (s1 !== peg$FAILED) {
2299
2035
  s2 = peg$currPos;
2300
2036
  s3 = [];
2301
- s4 = input.charAt(peg$currPos);
2302
- if (peg$r2.test(s4)) {
2303
- peg$currPos++;
2304
- } else {
2305
- s4 = peg$FAILED;
2306
- if (peg$silentFails === 0) { peg$fail(peg$e33); }
2307
- }
2308
- while (s4 !== peg$FAILED) {
2309
- s3.push(s4);
2037
+ for (;;) {
2310
2038
  s4 = input.charAt(peg$currPos);
2311
- if (peg$r2.test(s4)) {
2039
+ if (s4 !== "" && !(peg$charCode = s4.charCodeAt(0), peg$charCode === 39)) {
2312
2040
  peg$currPos++;
2313
2041
  } else {
2314
2042
  s4 = peg$FAILED;
2315
2043
  if (peg$silentFails === 0) { peg$fail(peg$e33); }
2316
2044
  }
2045
+ if (s4 === peg$FAILED) { break; }
2046
+ s3.push(s4);
2317
2047
  }
2318
2048
  s2 = input.substring(s2, peg$currPos);
2319
2049
  if (input.charCodeAt(peg$currPos) === 39) {
@@ -2345,22 +2075,16 @@ function peg$parse(input, options) {
2345
2075
  if (s1 !== peg$FAILED) {
2346
2076
  s2 = peg$currPos;
2347
2077
  s3 = [];
2348
- s4 = input.charAt(peg$currPos);
2349
- if (peg$r3.test(s4)) {
2350
- peg$currPos++;
2351
- } else {
2352
- s4 = peg$FAILED;
2353
- if (peg$silentFails === 0) { peg$fail(peg$e35); }
2354
- }
2355
- while (s4 !== peg$FAILED) {
2356
- s3.push(s4);
2078
+ for (;;) {
2357
2079
  s4 = input.charAt(peg$currPos);
2358
- if (peg$r3.test(s4)) {
2080
+ if (s4 !== "" && !(peg$charCode = s4.charCodeAt(0), peg$charCode === 34)) {
2359
2081
  peg$currPos++;
2360
2082
  } else {
2361
2083
  s4 = peg$FAILED;
2362
2084
  if (peg$silentFails === 0) { peg$fail(peg$e35); }
2363
2085
  }
2086
+ if (s4 === peg$FAILED) { break; }
2087
+ s3.push(s4);
2364
2088
  }
2365
2089
  s2 = input.substring(s2, peg$currPos);
2366
2090
  if (input.charCodeAt(peg$currPos) === 34) {
@@ -2391,16 +2115,13 @@ function peg$parse(input, options) {
2391
2115
  }
2392
2116
  if (s1 !== peg$FAILED) {
2393
2117
  s2 = [];
2394
- s3 = peg$parseTemplateStringExpression();
2395
- if (s3 === peg$FAILED) {
2396
- s3 = peg$parseTemplateStringLiteral();
2397
- }
2398
- while (s3 !== peg$FAILED) {
2399
- s2.push(s3);
2118
+ for (;;) {
2400
2119
  s3 = peg$parseTemplateStringExpression();
2401
2120
  if (s3 === peg$FAILED) {
2402
2121
  s3 = peg$parseTemplateStringLiteral();
2403
2122
  }
2123
+ if (s3 === peg$FAILED) { break; }
2124
+ s2.push(s3);
2404
2125
  }
2405
2126
  if (input.charCodeAt(peg$currPos) === 96) {
2406
2127
  s3 = peg$c42;
@@ -2427,7 +2148,7 @@ function peg$parse(input, options) {
2427
2148
  if (peg$silentFails === 0) { peg$fail(peg$e31); }
2428
2149
  }
2429
2150
 
2430
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
2151
+ peg$resultsCache.set(key, { nextPos: peg$currPos, result: s0 });
2431
2152
 
2432
2153
  return s0;
2433
2154
  }
@@ -2436,7 +2157,7 @@ function peg$parse(input, options) {
2436
2157
  let s0, s1, s3, s5;
2437
2158
 
2438
2159
  const key = peg$currPos * 38 + 28;
2439
- const cached = peg$resultsCache[key];
2160
+ const cached = peg$resultsCache.get(key);
2440
2161
 
2441
2162
  if (cached) {
2442
2163
  peg$currPos = cached.nextPos;
@@ -2485,7 +2206,7 @@ function peg$parse(input, options) {
2485
2206
  if (peg$silentFails === 0) { peg$fail(peg$e37); }
2486
2207
  }
2487
2208
 
2488
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
2209
+ peg$resultsCache.set(key, { nextPos: peg$currPos, result: s0 });
2489
2210
 
2490
2211
  return s0;
2491
2212
  }
@@ -2494,7 +2215,7 @@ function peg$parse(input, options) {
2494
2215
  let s0, s1, s2, s3, s4;
2495
2216
 
2496
2217
  const key = peg$currPos * 38 + 29;
2497
- const cached = peg$resultsCache[key];
2218
+ const cached = peg$resultsCache.get(key);
2498
2219
 
2499
2220
  if (cached) {
2500
2221
  peg$currPos = cached.nextPos;
@@ -2505,123 +2226,60 @@ function peg$parse(input, options) {
2505
2226
  peg$silentFails++;
2506
2227
  s0 = peg$currPos;
2507
2228
  s1 = [];
2508
- s2 = peg$currPos;
2509
- s3 = [];
2510
- s4 = input.charAt(peg$currPos);
2511
- if (peg$r4.test(s4)) {
2512
- peg$currPos++;
2513
- } else {
2514
- s4 = peg$FAILED;
2515
- if (peg$silentFails === 0) { peg$fail(peg$e40); }
2516
- }
2517
- if (s4 !== peg$FAILED) {
2518
- while (s4 !== peg$FAILED) {
2519
- s3.push(s4);
2229
+ for (;;) {
2230
+ s2 = peg$currPos;
2231
+ s3 = [];
2232
+ for (;;) {
2520
2233
  s4 = input.charAt(peg$currPos);
2521
- if (peg$r4.test(s4)) {
2234
+ if (s4 !== "" && !(peg$charCode = s4.charCodeAt(0), peg$charCode === 92 || peg$charCode === 96 || peg$charCode === 123)) {
2522
2235
  peg$currPos++;
2523
2236
  } else {
2524
2237
  s4 = peg$FAILED;
2525
2238
  if (peg$silentFails === 0) { peg$fail(peg$e40); }
2526
2239
  }
2240
+ if (s4 === peg$FAILED) { break; }
2241
+ s3.push(s4);
2527
2242
  }
2528
- } else {
2529
- s3 = peg$FAILED;
2530
- }
2531
- if (s3 !== peg$FAILED) {
2532
- s2 = input.substring(s2, peg$currPos);
2533
- } else {
2534
- s2 = s3;
2535
- }
2536
- if (s2 === peg$FAILED) {
2537
- s2 = peg$currPos;
2538
- if (input.charCodeAt(peg$currPos) === 92) {
2539
- s3 = peg$c7;
2540
- peg$currPos++;
2541
- } else {
2243
+ if (s3.length < 1) {
2542
2244
  s3 = peg$FAILED;
2543
- if (peg$silentFails === 0) { peg$fail(peg$e7); }
2544
2245
  }
2545
2246
  if (s3 !== peg$FAILED) {
2546
- if (input.length > peg$currPos) {
2547
- s4 = input.charAt(peg$currPos);
2548
- peg$currPos++;
2549
- } else {
2550
- s4 = peg$FAILED;
2551
- if (peg$silentFails === 0) { peg$fail(peg$e8); }
2552
- }
2553
- if (s4 !== peg$FAILED) {
2554
- s2 = peg$f28(s4);
2555
- } else {
2556
- peg$currPos = s2;
2557
- s2 = peg$FAILED;
2558
- }
2247
+ s2 = input.substring(s2, peg$currPos);
2559
2248
  } else {
2560
- peg$currPos = s2;
2561
- s2 = peg$FAILED;
2249
+ s2 = s3;
2562
2250
  }
2563
- }
2564
- if (s2 !== peg$FAILED) {
2565
- while (s2 !== peg$FAILED) {
2566
- s1.push(s2);
2251
+ if (s2 === peg$FAILED) {
2567
2252
  s2 = peg$currPos;
2568
- s3 = [];
2569
- s4 = input.charAt(peg$currPos);
2570
- if (peg$r4.test(s4)) {
2253
+ if (input.charCodeAt(peg$currPos) === 92) {
2254
+ s3 = peg$c7;
2571
2255
  peg$currPos++;
2572
- } else {
2573
- s4 = peg$FAILED;
2574
- if (peg$silentFails === 0) { peg$fail(peg$e40); }
2575
- }
2576
- if (s4 !== peg$FAILED) {
2577
- while (s4 !== peg$FAILED) {
2578
- s3.push(s4);
2579
- s4 = input.charAt(peg$currPos);
2580
- if (peg$r4.test(s4)) {
2581
- peg$currPos++;
2582
- } else {
2583
- s4 = peg$FAILED;
2584
- if (peg$silentFails === 0) { peg$fail(peg$e40); }
2585
- }
2586
- }
2587
2256
  } else {
2588
2257
  s3 = peg$FAILED;
2258
+ if (peg$silentFails === 0) { peg$fail(peg$e7); }
2589
2259
  }
2590
2260
  if (s3 !== peg$FAILED) {
2591
- s2 = input.substring(s2, peg$currPos);
2592
- } else {
2593
- s2 = s3;
2594
- }
2595
- if (s2 === peg$FAILED) {
2596
- s2 = peg$currPos;
2597
- if (input.charCodeAt(peg$currPos) === 92) {
2598
- s3 = peg$c7;
2261
+ if (input.length > peg$currPos) {
2262
+ s4 = input.charAt(peg$currPos);
2599
2263
  peg$currPos++;
2600
2264
  } else {
2601
- s3 = peg$FAILED;
2602
- if (peg$silentFails === 0) { peg$fail(peg$e7); }
2265
+ s4 = peg$FAILED;
2266
+ if (peg$silentFails === 0) { peg$fail(peg$e8); }
2603
2267
  }
2604
- if (s3 !== peg$FAILED) {
2605
- if (input.length > peg$currPos) {
2606
- s4 = input.charAt(peg$currPos);
2607
- peg$currPos++;
2608
- } else {
2609
- s4 = peg$FAILED;
2610
- if (peg$silentFails === 0) { peg$fail(peg$e8); }
2611
- }
2612
- if (s4 !== peg$FAILED) {
2613
- s2 = peg$f28(s4);
2614
- } else {
2615
- peg$currPos = s2;
2616
- s2 = peg$FAILED;
2617
- }
2268
+ if (s4 !== peg$FAILED) {
2269
+ s2 = peg$f28(s4);
2618
2270
  } else {
2619
2271
  peg$currPos = s2;
2620
2272
  s2 = peg$FAILED;
2621
2273
  }
2274
+ } else {
2275
+ peg$currPos = s2;
2276
+ s2 = peg$FAILED;
2622
2277
  }
2623
2278
  }
2624
- } else {
2279
+ if (s2 === peg$FAILED) { break; }
2280
+ s1.push(s2);
2281
+ }
2282
+ if (s1.length < 1) {
2625
2283
  s1 = peg$FAILED;
2626
2284
  }
2627
2285
  if (s1 !== peg$FAILED) {
@@ -2648,7 +2306,7 @@ function peg$parse(input, options) {
2648
2306
  if (peg$silentFails === 0) { peg$fail(peg$e39); }
2649
2307
  }
2650
2308
 
2651
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
2309
+ peg$resultsCache.set(key, { nextPos: peg$currPos, result: s0 });
2652
2310
 
2653
2311
  return s0;
2654
2312
  }
@@ -2657,7 +2315,7 @@ function peg$parse(input, options) {
2657
2315
  let s0, s1, s3, s5, s6, s7, s9;
2658
2316
 
2659
2317
  const key = peg$currPos * 38 + 30;
2660
- const cached = peg$resultsCache[key];
2318
+ const cached = peg$resultsCache.get(key);
2661
2319
 
2662
2320
  if (cached) {
2663
2321
  peg$currPos = cached.nextPos;
@@ -2682,30 +2340,7 @@ function peg$parse(input, options) {
2682
2340
  }
2683
2341
  peg$parse_();
2684
2342
  s5 = [];
2685
- s6 = peg$currPos;
2686
- if (input.charCodeAt(peg$currPos) === 44) {
2687
- s7 = peg$c34;
2688
- peg$currPos++;
2689
- } else {
2690
- s7 = peg$FAILED;
2691
- if (peg$silentFails === 0) { peg$fail(peg$e25); }
2692
- }
2693
- if (s7 !== peg$FAILED) {
2694
- peg$parse_();
2695
- s9 = peg$parseTernaryExpression();
2696
- if (s9 !== peg$FAILED) {
2697
- peg$parse_();
2698
- s6 = s9;
2699
- } else {
2700
- peg$currPos = s6;
2701
- s6 = peg$FAILED;
2702
- }
2703
- } else {
2704
- peg$currPos = s6;
2705
- s6 = peg$FAILED;
2706
- }
2707
- while (s6 !== peg$FAILED) {
2708
- s5.push(s6);
2343
+ for (;;) {
2709
2344
  s6 = peg$currPos;
2710
2345
  if (input.charCodeAt(peg$currPos) === 44) {
2711
2346
  s7 = peg$c34;
@@ -2728,6 +2363,8 @@ function peg$parse(input, options) {
2728
2363
  peg$currPos = s6;
2729
2364
  s6 = peg$FAILED;
2730
2365
  }
2366
+ if (s6 === peg$FAILED) { break; }
2367
+ s5.push(s6);
2731
2368
  }
2732
2369
  if (input.charCodeAt(peg$currPos) === 93) {
2733
2370
  s6 = peg$c31;
@@ -2752,7 +2389,7 @@ function peg$parse(input, options) {
2752
2389
  if (peg$silentFails === 0) { peg$fail(peg$e41); }
2753
2390
  }
2754
2391
 
2755
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
2392
+ peg$resultsCache.set(key, { nextPos: peg$currPos, result: s0 });
2756
2393
 
2757
2394
  return s0;
2758
2395
  }
@@ -2761,7 +2398,7 @@ function peg$parse(input, options) {
2761
2398
  let s0, s1, s3, s4, s5, s6, s7, s8, s9, s11, s13;
2762
2399
 
2763
2400
  const key = peg$currPos * 38 + 31;
2764
- const cached = peg$resultsCache[key];
2401
+ const cached = peg$resultsCache.get(key);
2765
2402
 
2766
2403
  if (cached) {
2767
2404
  peg$currPos = cached.nextPos;
@@ -2813,50 +2450,7 @@ function peg$parse(input, options) {
2813
2450
  }
2814
2451
  s4 = peg$parse_();
2815
2452
  s5 = [];
2816
- s6 = peg$currPos;
2817
- if (input.charCodeAt(peg$currPos) === 44) {
2818
- s7 = peg$c34;
2819
- peg$currPos++;
2820
- } else {
2821
- s7 = peg$FAILED;
2822
- if (peg$silentFails === 0) { peg$fail(peg$e25); }
2823
- }
2824
- if (s7 !== peg$FAILED) {
2825
- s8 = peg$parse_();
2826
- s9 = peg$parseStringLiteral();
2827
- if (s9 !== peg$FAILED) {
2828
- peg$parse_();
2829
- if (input.charCodeAt(peg$currPos) === 58) {
2830
- s11 = peg$c15;
2831
- peg$currPos++;
2832
- } else {
2833
- s11 = peg$FAILED;
2834
- if (peg$silentFails === 0) { peg$fail(peg$e11); }
2835
- }
2836
- if (s11 !== peg$FAILED) {
2837
- peg$parse_();
2838
- s13 = peg$parseTernaryExpression();
2839
- if (s13 !== peg$FAILED) {
2840
- peg$parse_();
2841
- s6 = [ s9, s13 ];
2842
- } else {
2843
- peg$currPos = s6;
2844
- s6 = peg$FAILED;
2845
- }
2846
- } else {
2847
- peg$currPos = s6;
2848
- s6 = peg$FAILED;
2849
- }
2850
- } else {
2851
- peg$currPos = s6;
2852
- s6 = peg$FAILED;
2853
- }
2854
- } else {
2855
- peg$currPos = s6;
2856
- s6 = peg$FAILED;
2857
- }
2858
- while (s6 !== peg$FAILED) {
2859
- s5.push(s6);
2453
+ for (;;) {
2860
2454
  s6 = peg$currPos;
2861
2455
  if (input.charCodeAt(peg$currPos) === 44) {
2862
2456
  s7 = peg$c34;
@@ -2899,6 +2493,8 @@ function peg$parse(input, options) {
2899
2493
  peg$currPos = s6;
2900
2494
  s6 = peg$FAILED;
2901
2495
  }
2496
+ if (s6 === peg$FAILED) { break; }
2497
+ s5.push(s6);
2902
2498
  }
2903
2499
  if (input.charCodeAt(peg$currPos) === 125) {
2904
2500
  s6 = peg$c43;
@@ -2923,7 +2519,7 @@ function peg$parse(input, options) {
2923
2519
  if (peg$silentFails === 0) { peg$fail(peg$e42); }
2924
2520
  }
2925
2521
 
2926
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
2522
+ peg$resultsCache.set(key, { nextPos: peg$currPos, result: s0 });
2927
2523
 
2928
2524
  return s0;
2929
2525
  }
@@ -2932,7 +2528,7 @@ function peg$parse(input, options) {
2932
2528
  let s0, s1, s2, s3, s4;
2933
2529
 
2934
2530
  const key = peg$currPos * 38 + 32;
2935
- const cached = peg$resultsCache[key];
2531
+ const cached = peg$resultsCache.get(key);
2936
2532
 
2937
2533
  if (cached) {
2938
2534
  peg$currPos = cached.nextPos;
@@ -2990,7 +2586,7 @@ function peg$parse(input, options) {
2990
2586
  if (peg$silentFails === 0) { peg$fail(peg$e43); }
2991
2587
  }
2992
2588
 
2993
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
2589
+ peg$resultsCache.set(key, { nextPos: peg$currPos, result: s0 });
2994
2590
 
2995
2591
  return s0;
2996
2592
  }
@@ -2999,7 +2595,7 @@ function peg$parse(input, options) {
2999
2595
  let s0, s1, s2, s3, s4;
3000
2596
 
3001
2597
  const key = peg$currPos * 38 + 33;
3002
- const cached = peg$resultsCache[key];
2598
+ const cached = peg$resultsCache.get(key);
3003
2599
 
3004
2600
  if (cached) {
3005
2601
  peg$currPos = cached.nextPos;
@@ -3010,7 +2606,7 @@ function peg$parse(input, options) {
3010
2606
  s0 = peg$currPos;
3011
2607
  s1 = peg$currPos;
3012
2608
  s2 = input.charAt(peg$currPos);
3013
- if (peg$r5.test(s2)) {
2609
+ if ((peg$charCode = s2.charCodeAt(0), (peg$charCode >= 97 && peg$charCode <= 122) || (peg$charCode >= 65 && peg$charCode <= 90) || peg$charCode === 36 || peg$charCode === 95)) {
3014
2610
  peg$currPos++;
3015
2611
  } else {
3016
2612
  s2 = peg$FAILED;
@@ -3018,22 +2614,16 @@ function peg$parse(input, options) {
3018
2614
  }
3019
2615
  if (s2 !== peg$FAILED) {
3020
2616
  s3 = [];
3021
- s4 = input.charAt(peg$currPos);
3022
- if (peg$r6.test(s4)) {
3023
- peg$currPos++;
3024
- } else {
3025
- s4 = peg$FAILED;
3026
- if (peg$silentFails === 0) { peg$fail(peg$e46); }
3027
- }
3028
- while (s4 !== peg$FAILED) {
3029
- s3.push(s4);
2617
+ for (;;) {
3030
2618
  s4 = input.charAt(peg$currPos);
3031
- if (peg$r6.test(s4)) {
2619
+ if ((peg$charCode = s4.charCodeAt(0), (peg$charCode >= 97 && peg$charCode <= 122) || (peg$charCode >= 65 && peg$charCode <= 90) || peg$charCode === 36 || peg$charCode === 95 || (peg$charCode >= 48 && peg$charCode <= 57))) {
3032
2620
  peg$currPos++;
3033
2621
  } else {
3034
2622
  s4 = peg$FAILED;
3035
2623
  if (peg$silentFails === 0) { peg$fail(peg$e46); }
3036
2624
  }
2625
+ if (s4 === peg$FAILED) { break; }
2626
+ s3.push(s4);
3037
2627
  }
3038
2628
  s2 = [s2, s3];
3039
2629
  s1 = s2;
@@ -3047,7 +2637,7 @@ function peg$parse(input, options) {
3047
2637
  s0 = s1;
3048
2638
  }
3049
2639
 
3050
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
2640
+ peg$resultsCache.set(key, { nextPos: peg$currPos, result: s0 });
3051
2641
 
3052
2642
  return s0;
3053
2643
  }
@@ -3056,7 +2646,7 @@ function peg$parse(input, options) {
3056
2646
  let s0, s1;
3057
2647
 
3058
2648
  const key = peg$currPos * 38 + 34;
3059
- const cached = peg$resultsCache[key];
2649
+ const cached = peg$resultsCache.get(key);
3060
2650
 
3061
2651
  if (cached) {
3062
2652
  peg$currPos = cached.nextPos;
@@ -3077,7 +2667,7 @@ function peg$parse(input, options) {
3077
2667
  if (peg$silentFails === 0) { peg$fail(peg$e47); }
3078
2668
  }
3079
2669
 
3080
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
2670
+ peg$resultsCache.set(key, { nextPos: peg$currPos, result: s0 });
3081
2671
 
3082
2672
  return s0;
3083
2673
  }
@@ -3086,7 +2676,7 @@ function peg$parse(input, options) {
3086
2676
  let s0;
3087
2677
 
3088
2678
  const key = peg$currPos * 38 + 35;
3089
- const cached = peg$resultsCache[key];
2679
+ const cached = peg$resultsCache.get(key);
3090
2680
 
3091
2681
  if (cached) {
3092
2682
  peg$currPos = cached.nextPos;
@@ -3111,7 +2701,7 @@ function peg$parse(input, options) {
3111
2701
  }
3112
2702
  }
3113
2703
 
3114
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
2704
+ peg$resultsCache.set(key, { nextPos: peg$currPos, result: s0 });
3115
2705
 
3116
2706
  return s0;
3117
2707
  }
@@ -3120,7 +2710,7 @@ function peg$parse(input, options) {
3120
2710
  let s0;
3121
2711
 
3122
2712
  const key = peg$currPos * 38 + 36;
3123
- const cached = peg$resultsCache[key];
2713
+ const cached = peg$resultsCache.get(key);
3124
2714
 
3125
2715
  if (cached) {
3126
2716
  peg$currPos = cached.nextPos;
@@ -3163,7 +2753,7 @@ function peg$parse(input, options) {
3163
2753
  }
3164
2754
  }
3165
2755
 
3166
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
2756
+ peg$resultsCache.set(key, { nextPos: peg$currPos, result: s0 });
3167
2757
 
3168
2758
  return s0;
3169
2759
  }
@@ -3172,7 +2762,7 @@ function peg$parse(input, options) {
3172
2762
  let s0, s1;
3173
2763
 
3174
2764
  const key = peg$currPos * 38 + 37;
3175
- const cached = peg$resultsCache[key];
2765
+ const cached = peg$resultsCache.get(key);
3176
2766
 
3177
2767
  if (cached) {
3178
2768
  peg$currPos = cached.nextPos;
@@ -3182,26 +2772,20 @@ function peg$parse(input, options) {
3182
2772
 
3183
2773
  peg$silentFails++;
3184
2774
  s0 = [];
3185
- s1 = input.charAt(peg$currPos);
3186
- if (peg$r7.test(s1)) {
3187
- peg$currPos++;
3188
- } else {
3189
- s1 = peg$FAILED;
3190
- if (peg$silentFails === 0) { peg$fail(peg$e54); }
3191
- }
3192
- while (s1 !== peg$FAILED) {
3193
- s0.push(s1);
2775
+ for (;;) {
3194
2776
  s1 = input.charAt(peg$currPos);
3195
- if (peg$r7.test(s1)) {
2777
+ if ((peg$charCode = s1.charCodeAt(0), peg$charCode === 32 || peg$charCode === 9 || peg$charCode === 10 || peg$charCode === 13)) {
3196
2778
  peg$currPos++;
3197
2779
  } else {
3198
2780
  s1 = peg$FAILED;
3199
2781
  if (peg$silentFails === 0) { peg$fail(peg$e54); }
3200
2782
  }
2783
+ if (s1 === peg$FAILED) { break; }
2784
+ s0.push(s1);
3201
2785
  }
3202
2786
  peg$silentFails--;
3203
2787
 
3204
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
2788
+ peg$resultsCache.set(key, { nextPos: peg$currPos, result: s0 });
3205
2789
 
3206
2790
  return s0;
3207
2791
  }
@@ -3714,7 +3298,7 @@ class LightSlots {
3714
3298
  el.removeAttribute('slot');
3715
3299
  return [slot, LightSlots.slotFromNode(el)];
3716
3300
  });
3717
- const slots = {};
3301
+ const slots = Object.create(null);
3718
3302
  slots.default = new DocumentFragment();
3719
3303
  slots.default.append(...el.childNodes);
3720
3304
  for (const [name, el] of namedSlots) {
@@ -3780,6 +3364,13 @@ class Nodes {
3780
3364
  if (win === null) {
3781
3365
  return Promise.resolve();
3782
3366
  }
3367
+ // interactive spans both the deferred scripts and the time between DOMContentLoaded and load
3368
+ const [navigation] = /** @type {PerformanceNavigationTiming[]} */ (
3369
+ win.performance?.getEntriesByType('navigation') ?? []
3370
+ );
3371
+ if (navigation?.domContentLoadedEventStart > 0) {
3372
+ return Promise.resolve();
3373
+ }
3783
3374
  return new Promise((resolve) => {
3784
3375
  const done = () => {
3785
3376
  win.removeEventListener('DOMContentLoaded', done);
@@ -3796,12 +3387,12 @@ class Nodes {
3796
3387
  * resolves once the element, or any of its ancestors, gains a next sibling,
3797
3388
  * which is the parser having moved past this subtree. The document's
3798
3389
  * DOMContentLoaded is the deadline. Resolves immediately for an element
3799
- * that is already parsed.
3390
+ * that is already parsed, or once the parser has finished the document.
3800
3391
  * @param {Element} el
3801
3392
  * @returns {Promise<Element>} the element
3802
3393
  */
3803
3394
  static waitParsed(el) {
3804
- if (Nodes.isParsed(el)) {
3395
+ if (Nodes.isParsed(el) || el.ownerDocument.readyState !== 'loading') {
3805
3396
  return Promise.resolve(el);
3806
3397
  }
3807
3398
  return new Promise((resolve) => {
@@ -3943,7 +3534,8 @@ class CommandsHandler {
3943
3534
  const statName = ops.popData(node, 'tplStat');
3944
3535
  const template = new Template(node, evaluator);
3945
3536
  const evaluated = evaluator.evaluateExpression(expression);
3946
- const proto = evaluated === null || typeof evaluated !== 'object' ? undefined : Object.getPrototypeOf(evaluated);
3537
+ const proto =
3538
+ evaluated === null || typeof evaluated !== 'object' ? undefined : Object.getPrototypeOf(evaluated);
3947
3539
  const plain = !evaluated?.[Symbol.iterator] && (proto === Object.prototype || proto === null);
3948
3540
  const dict = plain ? Object.entries(evaluated) : null;
3949
3541
  const keyed = evaluated instanceof Map ? [...evaluated] : dict;
@@ -4023,6 +3615,9 @@ class CommandsHandler {
4023
3615
  }
4024
3616
  const tuples = Array.isArray(attributesAndValues[0]) ? attributesAndValues : [attributesAndValues];
4025
3617
  tuples.forEach(([k, v]) => {
3618
+ if (v === null || v === undefined) {
3619
+ return;
3620
+ }
4026
3621
  node.setAttribute(k, v);
4027
3622
  });
4028
3623
  }
@@ -5140,7 +4735,8 @@ class ParsedElement extends HTMLElement {
5140
4735
  const PLACEHOLDER = /\{(\w+)\}/g;
5141
4736
  const POSITIONAL = /\{(\d+)\}/g;
5142
4737
  /** @param {any} v @returns {v is Record<string, string>} */
5143
- const isPlainObject = (v) => typeof v === 'object' && v !== null && !Array.isArray(v);
4738
+ const isPlainObject = (v) =>
4739
+ typeof v === 'object' && v !== null && [Object.prototype, null].includes(Object.getPrototypeOf(v));
5144
4740
 
5145
4741
  /** @param {any} problem @returns {string|undefined} the reason, unless it is missing or blank */
5146
4742
  const reasonOf = (problem) =>
@@ -5175,8 +4771,8 @@ const formatter = (ctor, locale, options) => {
5175
4771
  class Localization {
5176
4772
  /**
5177
4773
  * Resolves a message from the translations and interpolates its arguments.
5178
- * A single plain object argument interpolates named placeholders
5179
- * ({name}); anything else interpolates positional ones ({0}).
4774
+ * A single plain object argument (an object literal, or one with a null
4775
+ * prototype) interpolates named placeholders ({name}); anything else interpolates positional ones ({0}).
5180
4776
  * A plural leaf selects its form through Intl.PluralRules over the
5181
4777
  * numeric {count} named argument.
5182
4778
  *