jexl-lezer 0.2.0 → 0.4.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.cjs CHANGED
@@ -3,8 +3,277 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var lr = require('@lezer/lr');
6
- var tokens_js = require('./tokens.js');
7
- var highlight_js = require('./highlight.js');
6
+ var highlight = require('@lezer/highlight');
7
+ var language = require('@codemirror/language');
8
+
9
+ // This file was generated by lezer-generator. You probably shouldn't edit it.
10
+ const noSemi = 318,
11
+ noSemiType = 319,
12
+ incdec = 1,
13
+ incdecPrefix = 2,
14
+ questionDot = 3,
15
+ JSXStartTag = 4,
16
+ insertSemi = 320,
17
+ spaces = 322,
18
+ newline = 323,
19
+ LineComment = 5,
20
+ BlockComment = 6,
21
+ Dialect_jsx = 0;
22
+
23
+ /* Hand-written tokenizers for JavaScript tokens that can't be
24
+ expressed by lezer's built-in tokenizer. */
25
+
26
+ const space$1 = [9, 10, 11, 12, 13, 32, 133, 160, 5760, 8192, 8193, 8194, 8195, 8196, 8197, 8198, 8199, 8200,
27
+ 8201, 8202, 8232, 8233, 8239, 8287, 12288];
28
+
29
+ const braceR$1 = 125, semicolon$1 = 59, slash$1 = 47, star$1 = 42, plus$1 = 43, minus$1 = 45, lt$1 = 60, comma$1 = 44,
30
+ question$1 = 63, dot$1 = 46, bracketL$1 = 91;
31
+
32
+ const trackNewline = new lr.ContextTracker({
33
+ start: false,
34
+ shift(context, term) {
35
+ return term == LineComment || term == BlockComment || term == spaces ? context : term == newline
36
+ },
37
+ strict: false
38
+ });
39
+
40
+ const insertSemicolon = new lr.ExternalTokenizer((input, stack) => {
41
+ let {next} = input;
42
+ if (next == braceR$1 || next == -1 || stack.context)
43
+ input.acceptToken(insertSemi);
44
+ }, {contextual: true, fallback: true});
45
+
46
+ const noSemicolon = new lr.ExternalTokenizer((input, stack) => {
47
+ let {next} = input, after;
48
+ if (space$1.indexOf(next) > -1) return
49
+ if (next == slash$1 && ((after = input.peek(1)) == slash$1 || after == star$1)) return
50
+ if (next != braceR$1 && next != semicolon$1 && next != -1 && !stack.context)
51
+ input.acceptToken(noSemi);
52
+ }, {contextual: true});
53
+
54
+ const noSemicolonType = new lr.ExternalTokenizer((input, stack) => {
55
+ if (input.next == bracketL$1 && !stack.context) input.acceptToken(noSemiType);
56
+ }, {contextual: true});
57
+
58
+ const operatorToken = new lr.ExternalTokenizer((input, stack) => {
59
+ let {next} = input;
60
+ if (next == plus$1 || next == minus$1) {
61
+ input.advance();
62
+ if (next == input.next) {
63
+ input.advance();
64
+ let mayPostfix = !stack.context && stack.canShift(incdec);
65
+ input.acceptToken(mayPostfix ? incdec : incdecPrefix);
66
+ }
67
+ } else if (next == question$1 && input.peek(1) == dot$1) {
68
+ input.advance(); input.advance();
69
+ if (input.next < 48 || input.next > 57) // No digit after
70
+ input.acceptToken(questionDot);
71
+ }
72
+ }, {contextual: true});
73
+
74
+ function identifierChar$1(ch, start) {
75
+ return ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122 || ch == 95 || ch >= 192 ||
76
+ !start && ch >= 48 && ch <= 57
77
+ }
78
+
79
+ const jsx = new lr.ExternalTokenizer((input, stack) => {
80
+ if (input.next != lt$1 || !stack.dialectEnabled(Dialect_jsx)) return
81
+ input.advance();
82
+ if (input.next == slash$1) return
83
+ // Scan for an identifier followed by a comma or 'extends', don't
84
+ // treat this as a start tag if present.
85
+ let back = 0;
86
+ while (space$1.indexOf(input.next) > -1) { input.advance(); back++; }
87
+ if (identifierChar$1(input.next, true)) {
88
+ input.advance();
89
+ back++;
90
+ while (identifierChar$1(input.next, false)) { input.advance(); back++; }
91
+ while (space$1.indexOf(input.next) > -1) { input.advance(); back++; }
92
+ if (input.next == comma$1) return
93
+ for (let i = 0;; i++) {
94
+ if (i == 7) {
95
+ if (!identifierChar$1(input.next, true)) return
96
+ break
97
+ }
98
+ if (input.next != "extends".charCodeAt(i)) break
99
+ input.advance();
100
+ back++;
101
+ }
102
+ }
103
+ input.acceptToken(JSXStartTag, -back);
104
+ });
105
+
106
+ ////////////////////////////////////////////
107
+
108
+ const jsHighlight = highlight.styleTags({
109
+ "get set async static": highlight.tags.modifier,
110
+ "for while do if else switch try catch finally return throw break continue default case": highlight.tags.controlKeyword,
111
+ "in of await yield void typeof delete instanceof": highlight.tags.operatorKeyword,
112
+ "let var const using function class extends": highlight.tags.definitionKeyword,
113
+ "pragma import export from": highlight.tags.moduleKeyword,
114
+ "with debugger as new": highlight.tags.keyword,
115
+ TemplateString: highlight.tags.special(highlight.tags.string),
116
+ super: highlight.tags.atom,
117
+ BooleanLiteral: highlight.tags.bool,
118
+ this: highlight.tags.self,
119
+ null: highlight.tags.null,
120
+ Star: highlight.tags.modifier,
121
+ VariableName: highlight.tags.variableName,
122
+ "CallExpression/VariableName TaggedTemplateExpression/VariableName": highlight.tags.function(highlight.tags.variableName),
123
+ VariableDefinition: highlight.tags.definition(highlight.tags.variableName),
124
+ Label: highlight.tags.labelName,
125
+ PropertyName: highlight.tags.propertyName,
126
+ PrivatePropertyName: highlight.tags.special(highlight.tags.propertyName),
127
+ "CallExpression/MemberExpression/PropertyName": highlight.tags.function(highlight.tags.propertyName),
128
+ "FunctionDeclaration/VariableDefinition": highlight.tags.function(highlight.tags.definition(highlight.tags.variableName)),
129
+ "ClassDeclaration/VariableDefinition": highlight.tags.definition(highlight.tags.className),
130
+ "NewExpression/VariableName": highlight.tags.className,
131
+ PropertyDefinition: highlight.tags.definition(highlight.tags.propertyName),
132
+ PrivatePropertyDefinition: highlight.tags.definition(highlight.tags.special(highlight.tags.propertyName)),
133
+ UpdateOp: highlight.tags.updateOperator,
134
+ "LineComment Hashbang": highlight.tags.lineComment,
135
+ BlockComment: highlight.tags.blockComment,
136
+ Number: highlight.tags.number,
137
+ String: highlight.tags.string,
138
+ Escape: highlight.tags.escape,
139
+ ArithOp: highlight.tags.arithmeticOperator,
140
+ LogicOp: highlight.tags.logicOperator,
141
+ BitOp: highlight.tags.bitwiseOperator,
142
+ CompareOp: highlight.tags.compareOperator,
143
+ RegExp: highlight.tags.regexp,
144
+ Equals: highlight.tags.definitionOperator,
145
+ Arrow: highlight.tags.function(highlight.tags.punctuation),
146
+ ": Spread": highlight.tags.punctuation,
147
+ "( )": highlight.tags.paren,
148
+ "[ ]": highlight.tags.squareBracket,
149
+ "{ }": highlight.tags.brace,
150
+ "InterpolationStart InterpolationEnd": highlight.tags.special(highlight.tags.brace),
151
+ ".": highlight.tags.derefOperator,
152
+ ", ;": highlight.tags.separator,
153
+ "@": highlight.tags.meta,
154
+ ClassPath: highlight.tags.labelName,
155
+
156
+ TypeName: highlight.tags.typeName,
157
+ TypeDefinition: highlight.tags.definition(highlight.tags.typeName),
158
+ "type enum interface implements namespace module declare": highlight.tags.definitionKeyword,
159
+ "abstract global Privacy readonly override": highlight.tags.modifier,
160
+ "is keyof unique infer asserts": highlight.tags.operatorKeyword,
161
+
162
+ JSXAttributeValue: highlight.tags.attributeValue,
163
+ JSXText: highlight.tags.content,
164
+ "JSXStartTag JSXStartCloseTag JSXSelfCloseEndTag JSXEndTag": highlight.tags.angleBracket,
165
+ "JSXIdentifier JSXNameSpacedName": highlight.tags.tagName,
166
+ "JSXAttribute/JSXIdentifier JSXAttribute/JSXNameSpacedName": highlight.tags.attributeName,
167
+ "JSXBuiltin/JSXIdentifier": highlight.tags.standard(highlight.tags.tagName)
168
+ });
169
+
170
+ const space = [9, 10, 11, 12, 13, 32, 133, 160, 5760, 8192, 8193, 8194, 8195, 8196, 8197, 8198, 8199, 8200,
171
+ 8201, 8202, 8232, 8233, 8239, 8287, 12288];
172
+
173
+ const braceR = 125, semicolon = 59, slash = 47, star = 42, plus = 43, minus = 45, lt = 60, comma = 44,
174
+ question = 63, dot = 46, bracketL = 91;
175
+
176
+ new lr.ContextTracker({
177
+ start: false,
178
+ shift(context, term) {
179
+ return term == LineComment || term == BlockComment || term == spaces ? context : term == newline
180
+ },
181
+ strict: false
182
+ });
183
+
184
+ new lr.ExternalTokenizer((input, stack) => {
185
+ let {next} = input;
186
+ if (next == braceR || next == -1 || stack.context)
187
+ input.acceptToken(insertSemi);
188
+ }, {contextual: true, fallback: true});
189
+
190
+ new lr.ExternalTokenizer((input, stack) => {
191
+ let {next} = input, after;
192
+ if (space.indexOf(next) > -1) return
193
+ if (next == slash && ((after = input.peek(1)) == slash || after == star)) return
194
+ if (next != braceR && next != semicolon && next != -1 && !stack.context)
195
+ input.acceptToken(noSemi);
196
+ }, {contextual: true});
197
+
198
+ new lr.ExternalTokenizer((input, stack) => {
199
+ if (input.next == bracketL && !stack.context) input.acceptToken(noSemiType);
200
+ }, {contextual: true});
201
+
202
+ new lr.ExternalTokenizer((input, stack) => {
203
+ let {next} = input;
204
+ if (next == plus || next == minus) {
205
+ input.advance();
206
+ if (next == input.next) {
207
+ input.advance();
208
+ let mayPostfix = !stack.context && stack.canShift(incdec);
209
+ input.acceptToken(mayPostfix ? incdec : incdecPrefix);
210
+ }
211
+ } else if (next == question && input.peek(1) == dot) {
212
+ input.advance(); input.advance();
213
+ if (input.next < 48 || input.next > 57) // No digit after
214
+ input.acceptToken(questionDot);
215
+ }
216
+ }, {contextual: true});
217
+
218
+ function identifierChar(ch, start) {
219
+ return ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122 || ch == 95 || ch >= 192 ||
220
+ !start && ch >= 48 && ch <= 57
221
+ }
222
+
223
+ new lr.ExternalTokenizer((input, stack) => {
224
+ if (input.next != lt || !stack.dialectEnabled(Dialect_jsx)) return
225
+ input.advance();
226
+ if (input.next == slash) return
227
+ // Scan for an identifier followed by a comma or 'extends', don't
228
+ // treat this as a start tag if present.
229
+ let back = 0;
230
+ while (space.indexOf(input.next) > -1) { input.advance(); back++; }
231
+ if (identifierChar(input.next, true)) {
232
+ input.advance();
233
+ back++;
234
+ while (identifierChar(input.next, false)) { input.advance(); back++; }
235
+ while (space.indexOf(input.next) > -1) { input.advance(); back++; }
236
+ if (input.next == comma) return
237
+ for (let i = 0;; i++) {
238
+ if (i == 7) {
239
+ if (!identifierChar(input.next, true)) return
240
+ break
241
+ }
242
+ if (input.next != "extends".charCodeAt(i)) break
243
+ input.advance();
244
+ back++;
245
+ }
246
+ }
247
+ input.acceptToken(JSXStartTag, -back);
248
+ });
249
+ language.syntaxHighlighting(
250
+ language.HighlightStyle.define(
251
+ [
252
+ { tag: highlight.tags.name, color: "#a8a8a8" },
253
+ { tag: highlight.tags.propertyName, color: "#966a6a" },
254
+ { tag: highlight.tags.comment, color: "#4b4949" },
255
+ { tag: highlight.tags.atom, color: "#a25496" },
256
+
257
+ { tag: highlight.tags.literal, color: "#7b87b8" },
258
+ { tag: highlight.tags.unit, color: "#7b87b8" },
259
+ { tag: highlight.tags.null, color: "#7b87b8" },
260
+
261
+ { tag: highlight.tags.keyword, color: "#585858" },
262
+ { tag: highlight.tags.punctuation, color: "#585858" },
263
+ { tag: highlight.tags.derefOperator, color: "#585858" },
264
+ { tag: highlight.tags.special(highlight.tags.brace), fontWeight: 700 },
265
+
266
+ { tag: highlight.tags.operator, color: "white" },
267
+ { tag: highlight.tags.self, color: "white" },
268
+ { tag: highlight.tags.function(highlight.tags.punctuation), color: "white" },
269
+ { tag: highlight.tags.special(highlight.tags.logicOperator), color: "white", fontWeight: "bold" },
270
+ { tag: highlight.tags.moduleKeyword, color: "white", fontWeight: "bold" },
271
+ { tag: highlight.tags.controlKeyword, color: "white", fontWeight: "bold" },
272
+ { tag: highlight.tags.controlOperator, color: "white", fontWeight: "bold" },
273
+ ],
274
+ { all: { color: "#585858" } }
275
+ )
276
+ );
8
277
 
9
278
  // This file was generated by lezer-generator. You probably shouldn't edit it.
10
279
  const spec_identifier = {__proto__:null,export:18, as:23, from:31, default:34, async:39, function:40, const:50, extends:54, this:58, true:66, false:66, null:78, void:82, typeof:86, super:102, new:136, delete:148, yield:157, await:161, class:166, public:223, private:223, protected:223, readonly:225, instanceof:246, satisfies:249, in:250, import:284, keyof:341, unique:345, infer:351, asserts:387, is:389, abstract:409, implements:411, type:413, let:416, var:418, using:421, interface:427, enum:431, namespace:437, module:439, declare:443, global:447, pragma:466, static:468, for:478, of:487, while:490, with:494, do:498, if:502, else:504, switch:508, case:514, try:520, catch:524, finally:528, return:532, throw:536, break:540, continue:544, debugger:548};
@@ -17,18 +286,18 @@ const parser = lr.LRParser.deserialize({
17
286
  goto: "$>p)_PPPPPP)`P)cP*RP+c/yPPPP7bPP8VPP>[PBOPBfPBfPPPBfPDnPBfPBfPBfPDrPDwPEfPJmPPPJqPPPPJqNRPPPNXNyPJqPJqPP!#cJqPPPJqPJqP!%jJqP!)q!*v!+PP!,Q!,Q!,UPPPPPPP!*vPP!,u!.gPJqJq!1s!5^!:X!:X!>ePPPP!>mJqPPPPPPPPPP!BZP!ChPPJq!DyPJqPJqJqJqJqJqPJq!F]P!ItP!MXP!M]!Mg!Mk!MkP!IqP!Mo!MoP##SP##WJqPJq##^#&pDrBfPBfPBfBfP#([BfBf#*nBf#-fBf#/rBfBf#0s#3X#3X#3^#3g#3X#3rPP#3XPBf#4[Bf#8ZBfBf7bPPP#<`PPP#=W#=WP#=WP#={#=WPP#>RP#=xP#=x#>s#=x#?_#?e#?h)c#?k)cPP#?r#?w#@S)cP#@Y#@Y#@YP)cP)cP)cP)cPP)cP#@l#@oP#@o)cP#@sP#@vP)cP)cP)cP)cP)cP)c)cPP#@|#AS#A^#Ad#Aj#Ap#Av#BU#B[#Bf#Bl#Bv#B|#C^#Cd#Dc#Du#D{#ER#Ea#Ev#Gk#Gy#HQ#Il#Iz#Kl#Kz#LQ#LW#L^#Lh#Ln#Lt#MO#Mb#Mh#MzPPPPPPPPPPP#NQPPPPPPP$ W$$_$%w$&O$&WPPP$+rP$+{$/R$5y$5|$6P$7[$7_$7f$7n$7tP$7w$7{$8s$:R$:W$:nPP$:s$:y$:}$;Q$;U$;Y$<U$<z$=p$=t$=w$=z$>QP$>T$>[$>d$>lR!wR!ZpOXr!X#_%g&l&n&o&q,j,o2T2W>c>d>e>f>g>h>i>j>k>l>m>n>o>pY!sQ'Y-[1c5sQ%ntQ%vwQ%}yQ&c!SS'Q!c-SQ'`!gS'f!p!tU*c$w*S*gQ+g%wQ+t&PQ,Y&]Q-Y'XQ-d'aQ-l'gQ0Q*iQ1m,ZR=R<`%ncOPWXYZrstu!X!^!e!m!}#R#U#_#j#p#s#v#y#z#{#|#}$O$P$Q$R$S$Y$[$`%g%n%{&d&g&l&n&o&q&u&}'['l'|(O(U(](q(s(w)v*a+P+T,g,j,o-`-h-v-|.k.r/e0R0`0h0x1f1{1|2O2Q2T2W2Y2y3Q3f4s5{6b6c6f6z8r9X9d>c>d>e>f>g>h>i>j>k>l>m>n>o>pS#l[<]!r)W$U$i'R)l,{-O.|2i3}5o6q:_:t<[<_<`<c<d<e<f<g<h<i<j<k<l<m<n<o<q<t=R=U=V=X=a=d=m=n>^U*v%V<y<zQ+l%yQ,[&`Q,d&iQ0n+_Q0q+aQ1O+mQ1u,aQ3Y.^Q5X0sQ5_0yQ6S1nQ7X3^Q8_5`Q9j7ZT:l9P9Q'ljOPWXYZrstu!X!^!e!m!}#R#U#_#j#p#s#v#y#z#{#|#}$O$P$Q$R$S$U$Y$[$`$i%g%n%{&d&g&i&l&n&o&q&u&}'R'['l'|(O(U(](q(s(w)l)v*a+P+T+_,g,j,o,{-O-`-h-v-|.^.k.r.|/e0R0`0h0x1f1{1|2O2Q2T2W2Y2i2y3Q3^3f3}4s5o5{6b6c6f6q6z7Z8r9X9d:_:t<[<_<`<c<d<e<f<g<h<i<j<k<l<m<n<o<q<t=R=U=V=X=a=d=m=n>^>c>d>e>f>g>h>i>j>k>l>m>n>o>p!S!lQ!p!s!t!u$w'Q'X'Y'f'g'h*c*g*i*j-S-Y-[-l0Q0T1c5s5u%[$oh#q$]$^$_$s$v$y${%W%X%])r)z)|*O*R*X*_*o*p+^+a+x+{.].v/Z/d/n/o/q0U0W0c0d0e1Y1]1e3]4W4X4c4h4y5T5W5z7V7u8P8V8Z8o9g9u:O:U:d:y;X;b;k;r<r<s<u<v<w<x<{<|<}=O=P=Q=Y=Z=[=]=_=`=e=f=g=h=i=j=k=l=o=p>X>q>r?T?UQ&QyQ'O!cS'U%c-VQ+l%yQ,[&`Q0b*yQ1O+mQ1T+sQ1t,`Q1u,aQ5_0yQ5h1VQ6S1nQ6V1pQ6W1sQ8_5`Q8b5eQ8z6YQ:^8cQ:j8wR=T*S!^mOXr!S!X#_%g&b&l&n&o&q,j,o2T2W>c>d>e>f>g>h>i>j>k>l>m>n>o>pR,^&d'f]OPXYrstux!X!^!e!h!m!}#_#j#p#s#v#y#z#{#|#}$O$P$Q$R$S$U$Y$[$`$i%g%n%{&d&g&i&l&n&o&q&u&}'['l(O(U(](q(s(w)l)v*a+P+T+_,g,j,o,{-O-`-h-v-|.^.k.r.|/e0R0`0h0x1f1{1|2O2Q2T2W2Y2i2y3Q3^3f3}4s5o5{6b6c6f6q6z7Z8r9X9d:_:t<[<_<`<c<d<e<f<g<h<i<j<k<l<m<n<o<q<t=R=U=V=X=a=d=m=n>]>^>c>d>e>f>g>h>i>j>k>l>m>n>o>p[#WWZ#R#U'R'|!b%dl#c#d#g$s%_%b(V(a(b(c*R*V*Y+R+S+U,f,|-z.Q.R.S.U/d/g2]3U3V4Z6p7SQ%qvQ%uwS%zy&PQ&W!QQ']!fQ'_!gQ(j#nS+f%v%wQ+j%yQ,T&ZQ,X&]S-c'`'aQ.`(kQ0w+gQ0}+mQ1P+nQ1S+rQ1h,US1l,Y,ZQ2u-dQ5^0yQ5b0|Q5g1UQ6R1mQ8^5`Q8a5dQ:Y8]R;[:Z!U$uh$_$y${%W%X%])z)|*X*o*p.v/n0U0W0c0d0e4X4y8V9u>X>q>r!^%sw!g!r%u%v%w'P'_'`'a'e'o*b+f+g-P-c-d-k/w/z0w2n2u2|4k4l4o7|:QQ+`%qQ+y&TQ+|&UQ,W&]Q._(jQ1g,TU1k,X,Y,ZQ3_.`Q5|1hS6Q1l1mQ8v6R#f>_#q$]$^$s$v)r*O*R*_+^+a+x+{.]/Z/d/o/q1Y1]1e3]4W4c4h5T5W5z7V7u8P8Z8o9g:O:U:d:y;X;b;k;r<u<w<{<}=P=Y=[=_=e=g=i=k=o?T?Uo>`<r<s<v<x<|=O=Q=Z=]=`=f=h=j=l=pW%Oh%Q*q>XS&T}&bQ&U!OQ&V!PQ*}%^R+w&R%]$}h#q$]$^$_$s$v$y${%W%X%])r)z)|*O*R*X*_*o*p+^+a+x+{.].v/Z/d/n/o/q0U0W0c0d0e1Y1]1e3]4W4X4c4h4y5T5W5z7V7u8P8V8Z8o9g9u:O:U:d:y;X;b;k;r<r<s<u<v<w<x<{<|<}=O=P=Q=Y=Z=[=]=_=`=e=f=g=h=i=j=k=l=o=p>X>q>r?T?UT)s$p)tV*v%V<y<zW'U!c%c*S-VS(v#t#uQ+Z%lQ+q%|S.X(f(gQ1^+}Q4z0_R8g5m'ljOPWXYZrstu!X!^!e!m!}#R#U#_#j#p#s#v#y#z#{#|#}$O$P$Q$R$S$U$Y$[$`$i%g%n%{&d&g&i&l&n&o&q&u&}'R'['l'|(O(U(](q(s(w)l)v*a+P+T+_,g,j,o,{-O-`-h-v-|.^.k.r.|/e0R0`0h0x1f1{1|2O2Q2T2W2Y2i2y3Q3^3f3}4s5o5{6b6c6f6q6z7Z8r9X9d:_:t<[<_<`<c<d<e<f<g<h<i<j<k<l<m<n<o<q<t=R=U=V=X=a=d=m=n>^>c>d>e>f>g>h>i>j>k>l>m>n>o>p$i$Xb#T#`%k%m%o'{(R(m(r(z({(|(})O)P)Q)R)S)T)V)X)Z)`)j+[+p-Q-o-t-y-{.j.m.q.s.t.u/X0f2d2g2w3P3e3j3k3l3m3n3o3p3q3r3s3t3u3v3y3z4R5Q5[6s6y7P7`7a7j7k8i9^9b9l9r9s:v;^;g<^>OT#OV#P'mjOPWXYZrstu!X!^!e!m!}#R#U#_#j#p#s#v#y#z#{#|#}$O$P$Q$R$S$U$Y$[$`$i%g%n%{&d&g&i&l&n&o&q&u&}'R'['l'|(O(U(](q(s(w)l)v*a+P+T+_,g,j,o,{-O-`-h-v-|.^.k.r.|/e0R0`0h0x1f1{1|2O2Q2T2W2Y2i2y3Q3^3f3}4s5o5{6b6c6f6q6z7Z8r9X9d:_:t<[<_<`<c<d<e<f<g<h<i<j<k<l<m<n<o<q<t=R=U=V=X=a=d=m=n>^>c>d>e>f>g>h>i>j>k>l>m>n>o>pQ'S!cR2j-S!W!lQ!c!p!s!t!u$w'Q'X'Y'f'g'h*S*c*g*i*j-S-Y-[-l0Q0T1c5s5uR1`,P!YpOXr!X#_%g&l&n&o&q,j,o2T2W>c>d>e>f>g>h>i>j>k>l>m>n>o>pQ&s![S(l#p<dQ+d%tQ,R&WQ,S&YQ-a'^Q-n'jS.i(q=VS0g+P=aQ0u+eQ1b,QQ2[,qQ2^,rQ2f,}Q2s-bQ2v-fS5R0h=mQ5Y0vS5]0x=nQ6r2hQ6v2tQ6{2{Q8[5ZQ9_6tQ9`6wQ9c6|R:s9[$d$Wb#T#`%m%o'{(R(m(r(z({(|(})O)P)Q)R)S)T)V)X)Z)`)j+[+p-Q-o-t-y-{.j.m.q.t.u/X0f2d2g2w3P3e3j3k3l3m3n3o3p3q3r3s3t3u3v3y3z4R5Q5[6s6y7P7`7a7j7k8i9^9b9l9r9s:v;^;g<^>OS(h#k'cQ(x#uS+Y%k.sS.Y(g(iR3W.Z'ljOPWXYZrstu!X!^!e!m!}#R#U#_#j#p#s#v#y#z#{#|#}$O$P$Q$R$S$U$Y$[$`$i%g%n%{&d&g&i&l&n&o&q&u&}'R'['l'|(O(U(](q(s(w)l)v*a+P+T+_,g,j,o,{-O-`-h-v-|.^.k.r.|/e0R0`0h0x1f1{1|2O2Q2T2W2Y2i2y3Q3^3f3}4s5o5{6b6c6f6q6z7Z8r9X9d:_:t<[<_<`<c<d<e<f<g<h<i<j<k<l<m<n<o<q<t=R=U=V=X=a=d=m=n>^>c>d>e>f>g>h>i>j>k>l>m>n>o>pS#l[<]Q&n!VQ&o!WQ&q!YQ&r!ZQ2S,mQ>g>wQ>h>xQ>i>yQ>j>zQ>k>{R>l>|Q'Z!fQ+]%qQ-_']S.[(j+`Q2q-^W3[._.`0m0oQ6u2rW7T3X3Z3_5VU9f7U7W7YU:x9h9i9kS;i:w:zQ;v;jR<O;wU!qQ'Y-[T5q1c5s!l^OXZ_r!S!X#_#c%_%g&b&d&l&n&o&q(c,j,o.R2T2W>c>d>e>f>g>h>i>j>k>l>m>n>o>p]!nQ!p'Y-[1c5sT#l[<]U$ac)W,dS(i#k'cU*n$|(p3xU0a*u.e7fQ5V0nQ7U3YQ9i7XR:z9jQ'n!rS(_#b1}S-j'e'pQ/j*UQ/w*bQ2}-mQ4_/kQ4k/yQ4l/zQ4q0SQ7q4YS7|4m4oS8Q4r4tQ9w7rQ9{7xQ:Q7}Q:V8SS;S9|9}S;n;T;WS;y;o;pS<R;z;{S<V<S<TR<Y<WQ#raQ'm!rS(^#b1}S(`#h+OQ+Q%`Q+b%rQ+h%xU-i'e'n'pQ-}(_Q/i*UQ/x*bQ/{*dQ0t+cQ1i,VS2z-j-mQ3T.VS4^/j/kQ4g/uS4j/w0SQ4n/|Q6O1jQ6}2}Q7p4YQ7t4_U7{4k4q4tQ8O4pQ8t6PS9v7q7rQ9z7xQ:S8QQ:T8RQ:g8uQ;Q9wS;R9{9}Q;Z:VQ;d:hS;m;S;WS;x;n;oS<Q;y;{S<U<R<TQ<X<VQ<Z<YQ=v=rQ>T=zR>U={%x`OPWXYZrstu!X!^!e!m!}#R#U#_#j#p#s#v#y#z#{#|#}$O$P$Q$R$S$Y$[$`%g%n%{&d&g&i&l&n&o&q&u&}'['l'|(O(U(](q(s(w)v*a+P+T+_,g,j,o-`-h-v-|.^.k.r/e0R0`0h0x1f1{1|2O2Q2T2W2Y2y3Q3^3f4s5{6b6c6f6z7Z8r9X9d>c>d>e>f>g>h>i>j>k>l>m>n>o>pS#rx!h!r=q$U$i'R)l,{-O.|2i3}5o6q:_:t<[<_<`<c<d<e<f<g<h<i<j<k<l<m<n<o<q<t=R=U=V=X=a=d=m=n>^R=v>]%xaOPWXYZrstu!X!^!e!m!}#R#U#_#j#p#s#v#y#z#{#|#}$O$P$Q$R$S$Y$[$`%g%n%{&d&g&i&l&n&o&q&u&}'['l'|(O(U(](q(s(w)v*a+P+T+_,g,j,o-`-h-v-|.^.k.r/e0R0`0h0x1f1{1|2O2Q2T2W2Y2y3Q3^3f4s5{6b6c6f6z7Z8r9X9d>c>d>e>f>g>h>i>j>k>l>m>n>o>pQ%`i!^%rw!g!r%u%v%w'P'_'`'a'e'o*b+f+g-P-c-d-k/w/z0w2n2u2|4k4l4o7|:QS%xx!hQ+c%sQ,V&]W1j,W,X,Y,ZU6P1k1l1mS8u6Q6RQ:h8v!r=r$U$i'R)l,{-O.|2i3}5o6q:_:t<[<_<`<c<d<e<f<g<h<i<j<k<l<m<n<o<q<t=R=U=V=X=a=d=m=n>^Q=z>YR={>]%ldOPXYrstu!X!^!e!m!}#_#j#p#s#v#y#z#{#|#}$O$P$Q$R$S$Y$[$`%g%n%{&d&g&l&n&o&q&u&}'['l(O(U(](q(s(w)v*a+P+T+_,g,j,o-`-h-v-|.^.k.r/e0R0`0h0x1f1{1|2O2Q2T2W2Y2y3Q3^3f4s5{6b6c6f6z7Z8r9X9d>c>d>e>f>g>h>i>j>k>l>m>n>o>pY#]WZ#R#U'|!b%dl#c#d#g$s%_%b(V(a(b(c*R*V*Y+R+S+U,f,|-z.Q.R.S.U/d/g2]3U3V4Z6p7SQ,e&i!p=s$U$i)l,{-O.|2i3}5o6q:_:t<[<_<`<c<d<e<f<g<h<i<j<k<l<m<n<o<q<t=R=U=V=X=a=d=m=n>^R=u'RU'V!c%c*SR2l-V%ncOPWXYZrstu!X!^!e!m!}#R#U#_#j#p#s#v#y#z#{#|#}$O$P$Q$R$S$Y$[$`%g%n%{&d&g&l&n&o&q&u&}'['l'|(O(U(](q(s(w)v*a+P+T,g,j,o-`-h-v-|.k.r/e0R0`0h0x1f1{1|2O2Q2T2W2Y2y3Q3f4s5{6b6c6f6z8r9X9d>c>d>e>f>g>h>i>j>k>l>m>n>o>p!r)W$U$i'R)l,{-O.|2i3}5o6q:_:t<[<_<`<c<d<e<f<g<h<i<j<k<l<m<n<o<q<t=R=U=V=X=a=d=m=n>^Q,d&iQ0n+_Q3Y.^Q7X3^R9j7Z!b$Ob#T%k'{(R(m(r)S)T)X)`+p-o-t-y-{.j.m/X0f2w3P3e3u5Q5[6y7P7`9b:v<^!P<j)V)j-Q.s2d2g3j3s3t3y4R6s7a7j7k8i9^9l9r9s;^;g>O!f$Qb#T%k'{(R(m(r)P)Q)S)T)X)`+p-o-t-y-{.j.m/X0f2w3P3e3u5Q5[6y7P7`9b:v<^!T<l)V)j-Q.s2d2g3j3p3q3s3t3y4R6s7a7j7k8i9^9l9r9s;^;g>O!^$Ub#T%k'{(R(m(r)X)`+p-o-t-y-{.j.m/X0f2w3P3e3u5Q5[6y7P7`9b:v<^Q4X/bz>^)V)j-Q.s2d2g3j3y4R6s7a7j7k8i9^9l9r9s;^;g>OQ>q?RR>r?S'ljOPWXYZrstu!X!^!e!m!}#R#U#_#j#p#s#v#y#z#{#|#}$O$P$Q$R$S$U$Y$[$`$i%g%n%{&d&g&i&l&n&o&q&u&}'R'['l'|(O(U(](q(s(w)l)v*a+P+T+_,g,j,o,{-O-`-h-v-|.^.k.r.|/e0R0`0h0x1f1{1|2O2Q2T2W2Y2i2y3Q3^3f3}4s5o5{6b6c6f6q6z7Z8r9X9d:_:t<[<_<`<c<d<e<f<g<h<i<j<k<l<m<n<o<q<t=R=U=V=X=a=d=m=n>^>c>d>e>f>g>h>i>j>k>l>m>n>o>pS$jg$kR4O.{'sfOPWXYZgrstu!X!^!e!m!}#R#U#_#j#p#s#v#y#z#{#|#}$O$P$Q$R$S$U$Y$[$`$i$k%g%n%{&d&g&i&l&n&o&q&u&}'R'['l'|(O(U(](q(s(w)l)v*a+P+T+_,g,j,o,{-O-`-h-v-|.^.k.r.{.|/e0R0`0h0x1f1{1|2O2Q2T2W2Y2i2y3Q3^3f3}4s5o5{6b6c6f6q6z7Z8r9X9d:_:t<[<_<`<c<d<e<f<g<h<i<j<k<l<m<n<o<q<t=R=U=V=X=a=d=m=n>^>c>d>e>f>g>h>i>j>k>l>m>n>o>pT$fe$lQ$deS)c$g)gR)o$lT$ee$lT)e$g)g'sgOPWXYZgrstu!X!^!e!m!}#R#U#_#j#p#s#v#y#z#{#|#}$O$P$Q$R$S$U$Y$[$`$i$k%g%n%{&d&g&i&l&n&o&q&u&}'R'['l'|(O(U(](q(s(w)l)v*a+P+T+_,g,j,o,{-O-`-h-v-|.^.k.r.{.|/e0R0`0h0x1f1{1|2O2Q2T2W2Y2i2y3Q3^3f3}4s5o5{6b6c6f6q6z7Z8r9X9d:_:t<[<_<`<c<d<e<f<g<h<i<j<k<l<m<n<o<q<t=R=U=V=X=a=d=m=n>^>c>d>e>f>g>h>i>j>k>l>m>n>o>pT$jg$kQ$mgR)n$k%xiOPWXYZrstu!X!^!e!m!}#R#U#_#j#p#s#v#y#z#{#|#}$O$P$Q$R$S$Y$[$`%g%n%{&d&g&i&l&n&o&q&u&}'['l'|(O(U(](q(s(w)v*a+P+T+_,g,j,o-`-h-v-|.^.k.r/e0R0`0h0x1f1{1|2O2Q2T2W2Y2y3Q3^3f4s5{6b6c6f6z7Z8r9X9d>c>d>e>f>g>h>i>j>k>l>m>n>o>p!s>Y$U$i'R)l,{-O.|2i3}5o6q:_:t<[<_<`<c<d<e<f<g<h<i<j<k<l<m<n<o<q<t=R=U=V=X=a=d=m=n>^$RkOPXZr!X!^!m!}#_#j#v$i%g&d&g&i&l&n&o&q&u&}'[(w)l*a+T+_,g,j,o-`.^.|/e0R0`1f1{1|2O2Q2T2W2Y3^3}4s5{6b6c6f7Z8r9X>c>d>e>f>g>h>i>j>k>l>m>n>o>p!U$|h$_$y${%W%X%])z)|*X*o*p.v/n0U0W0c0d0e4X4y8V9u>X>q>r#f(p#q$]$^$s$v)r*O*R*_+^+a+x+{.]/Z/d/o/q1Y1]1e3]4W4c4h5T5W5z7V7u8P8Z8o9g:O:U:d:y;X;b;k;r<u<w<{<}=P=Y=[=_=e=g=i=k=o?T?UQ*z%ZQ/Y)wo3x<r<s<v<x<|=O=Q=Z=]=`=f=h=j=l=p!U$th$_$y${%W%X%])z)|*X*o*p.v/n0U0W0c0d0e4X4y8V9u>X>q>rQ*Z$uU*d$w*S*gQ*{%[Q/|*e#f=x#q$]$^$s$v)r*O*R*_+^+a+x+{.]/Z/d/o/q1Y1]1e3]4W4c4h5T5W5z7V7u8P8Z8o9g:O:U:d:y;X;b;k;r<u<w<{<}=P=Y=[=_=e=g=i=k=o?T?Un=y<r<s<v<x<|=O=Q=Z=]=`=f=h=j=l=pQ>P>_Q>Q>`Q>R>aR>S>b!U$|h$_$y${%W%X%])z)|*X*o*p.v/n0U0W0c0d0e4X4y8V9u>X>q>r#f(p#q$]$^$s$v)r*O*R*_+^+a+x+{.]/Z/d/o/q1Y1]1e3]4W4c4h5T5W5z7V7u8P8Z8o9g:O:U:d:y;X;b;k;r<u<w<{<}=P=Y=[=_=e=g=i=k=o?T?Uo3x<r<s<v<x<|=O=Q=Z=]=`=f=h=j=l=pbnOr%g&l&n&o&q,j2TS*^$v*RQ,x&xQ,y&zQ4b/of>sX#_,o2W>c>e>g>i>k>m>oa>t!X>d>f>h>j>l>n>p%[$}h#q$]$^$_$s$v$y${%W%X%])r)z)|*O*R*X*_*o*p+^+a+x+{.].v/Z/d/n/o/q0U0W0c0d0e1Y1]1e3]4W4X4c4h4y5T5W5z7V7u8P8V8Z8o9g9u:O:U:d:y;X;b;k;r<r<s<u<v<w<x<{<|<}=O=P=Q=Y=Z=[=]=_=`=e=f=g=h=i=j=k=l=o=p>X>q>r?T?UQ+z&UQ1[+|Q5k1ZR8f5lV*f$w*S*gU*f$w*S*gT5r1c5sS/u*a/eQ4p0RT8R4s:aQ+b%rQ/{*dQ0t+cQ1i,VQ6O1jQ8t6PQ:g8uR;d:h!U$yh$_$y${%W%X%])z)|*X*o*p.v/n0U0W0c0d0e4X4y8V9u>X>q>rx)z$q)^){*m*|/m0Y0Z3{4`4}5O5P7o8T:W;P=w>V>WS0U*l0V#f<u#q$]$^$s$v)r*O*R*_+^+a+x+{.]/Z/d/o/q1Y1]1e3]4W4c4h5T5W5z7V7u8P8Z8o9g:O:U:d:y;X;b;k;r<u<w<{<}=P=Y=[=_=e=g=i=k=o?T?Un<v<r<s<v<x<|=O=Q=Z=]=`=f=h=j=l=p!d=Y(n)[*T*].a.d.h/U/b/r0l1X3b4U4a4e5j7[7_7v7y8W8Y9y:R:X;U;Y;l;q;|?R?S`=Z3w7b7e7i9m:{;O<PS=g.c3cT=h7d9p!U${h$_$y${%W%X%])z)|*X*o*p.v/n0U0W0c0d0e4X4y8V9u>X>q>r|)|$q)^)}*l*|/^/m0Y0Z3{4`4u4}5O5P7o8T:W;P=w>V>WS0W*m0X#f<w#q$]$^$s$v)r*O*R*_+^+a+x+{.]/Z/d/o/q1Y1]1e3]4W4c4h5T5W5z7V7u8P8Z8o9g:O:U:d:y;X;b;k;r<u<w<{<}=P=Y=[=_=e=g=i=k=o?T?Un<x<r<s<v<x<|=O=Q=Z=]=`=f=h=j=l=p!h=[(n)[*T*].b.c.h/U/b/r0l1X3`3b4U4a4e5j7[7]7_7v7y8W8Y9y:R:X;U;Y;l;q;|?R?Sd=]3w7c7d7i9m9n:{:|;O<PS=i.d3dT=j7e9q!^mOXr!S!X#_%g&b&l&n&o&q,j,o2T2W>c>d>e>f>g>h>i>j>k>l>m>n>o>pQ&_!RR,g&i!^mOXr!S!X#_%g&b&l&n&o&q,j,o2T2W>c>d>e>f>g>h>i>j>k>l>m>n>o>pR&_!RQ,O&VR1W+w!_mOXr!S!X#_%g&b&l&n&o&q,j,o2T2W>c>d>e>f>g>h>i>j>k>l>m>n>o>pQ1d,TS5y1g1hU8n5w5x5|S:c8p8qS;`:b:eQ;s;aR;};tQ&f!SR,_&bR6V1pR:j8wS%zy&PR1P+nV1z,c=b=cU1z,c=b=cQ6^1xR6_1yQ:m9PR:n9QQ&l!UQ,j&mQ>e>uQ>f>vQ>m>}R>n?OR,p&rT2U,o2WR,t&sQ,s&sR2_,tQ'r!vR-p'rQrOQ#_XT%jr#_Q!yTR't!yQ!|UR'v!|Q)t$pR/V)tQ#PVR'y#PQ#SWU(P#S(Q-wQ(Q#TR-w(RQ-T'SR2k-TQ.l(rS3g.l3hR3h.mQ-['YR2o-[Y!pQ'Y-[1c5sR'd!pQ.w)^R3|.wU#YW%b*RU(W#Y(X-xQ(X#ZR-x(SQ-W'VR2m-W!`_OXr!S!X#_%g&b&d&l&n&o&q,j,o2T2W>c>d>e>f>g>h>i>j>k>l>m>n>o>pS#cZ%_U#m_#c.RR.R(cQ(d#eQ.O(`W.W(d.O3R7QQ3R.PR7Q3SQ)g$gR.})gQ$kgR)m$kQ$ZbU)Y$Z-s<pQ-s<^R<p)jQ/h*UW4[/h4]7s9xU4]/i/j/kS7s4^4_R9x7t$e)y$q(n)[)^*T*]*l*m*w*x*|.c.d.f.g.h/U/^/`/b/m/r0Y0Z0l1X3`3a3b3w3{4U4`4a4e4u4w4}5O5P5j7[7]7^7_7d7e7g7h7i7o7v7y8T8W8Y9m9n9o9y:R:W:X:{:|:};O;P;U;Y;l;q;|<P=w>V>W?R?SQ/p*]U4d/p4f7wQ4f/rR7w4eS*g$w*SR0O*gx){$q)^*l*m*|/m0Y0Z3{4`4}5O5P7o8T:W;P=w>V>W!d.a(n)[*T*].c.d.h/U/b/r0l1X3b4U4a4e5j7[7_7v7y8W8Y9y:R:X;U;Y;l;q;|?R?SU/_){.a7ba7b3w7d7e7i9m:{;O<PQ0V*lQ3c.cU4v0V3c9pR9p7d|)}$q)^*l*m*|/^/m0Y0Z3{4`4u4}5O5P7o8T:W;P=w>V>W!h.b(n)[*T*].c.d.h/U/b/r0l1X3`3b4U4a4e5j7[7]7_7v7y8W8Y9y:R:X;U;Y;l;q;|?R?SU/a)}.b7ce7c3w7d7e7i9m9n:{:|;O<PQ0X*mQ3d.dU4x0X3d9qR9q7eQ*r%PR0]*rQ5U0lR8X5UQ+V%eR0k+VQ5n1^S8h5n:`R:`8iQ,Q&WR1a,QQ5s1cR8k5sQ1o,[S6T1o8xR8x6VQ0z+jW5a0z5c8`:[Q5c0}Q8`5bR:[8aQ+o%zR1Q+oQ6[1vQ7O3OW8|6[7O8}9YQ8}6]R9Y6hQ2W,oR6k2WWqOXr#_Q&p!XU+X%g>c>dU,i&l>e>fU,k&n>g>hU,l&o>i>jQ,n&qU2R,j>m>nS2U,o2WU6j2T>o>pQ?P>kR?Q>lQ%ioQ&t!]Q&w!_Q&y!`Q&{!aQ'k!rQ+W%fQ+d%tQ+v&QQ,^&fQ,v&vW-g'e'm'n'pQ-n'jQ/}*fQ0u+eS1r,_,bQ2`,uQ2a,xQ2b,yQ2v-fW2x-i-j-m-oQ5Y0vQ5f1TQ5i1XQ5}1iQ6X1tQ6i2SU6x2w2z2}Q6{2{Q8[5ZQ8d5hQ8e5jQ8j5rQ8s6OQ8y6WS9a6y6}Q9c6|Q:]8bQ:f8tQ:k8zQ:u9bQ;]:^Q;c:gQ;h:vR;u;dQ%twQ'^!gQ'j!rU+e%u%v%wQ,}'PU-b'_'`'aS-f'e'oQ/v*bS0v+f+gQ2h-PS2t-c-dQ2{-kS4i/w/zQ5Z0wQ6t2nQ6w2uQ6|2|U7z4k4l4oQ:P7|R;V:QS$rh>XR*s%QU%Ph%Q>XR0[*qQ$qhS(n#q+aS)[$]$^Q)^$_Q*T$sS*]$v*RQ*l$yQ*m${Q*w%WQ*x%XQ*|%]Q.c<uQ.d<wQ.f<{Q.g<}Q.h=PQ/U)rQ/^)zQ/`)|Q/b*OQ/m*XS/r*_/dQ0Y*oQ0Z*pl0l+^+{.]1]1e3]5z7V8o9g:d:y;b;kQ1X+xQ3`=YQ3a=[Q3b=_S3w<r<sQ3{.vS4U/Z4WQ4`/nQ4a/oQ4e/qQ4u0UQ4w0WQ4}0cQ5O0dQ5P0eQ5j1YQ7[=eQ7]=gQ7^=iQ7_=kQ7d<vQ7e<xQ7g<|Q7h=OQ7i=QQ7o4XQ7v4cQ7y4hQ8T4yQ8W5TQ8Y5WQ9m=`Q9n=ZQ9o=]Q9y7uQ:R8PQ:W8VQ:X8ZQ:{=fQ:|=hQ:}=jQ;O=lQ;P9uQ;U:OQ;Y:UQ;l=oQ;q;XQ;|;rQ<P=pQ=w>XQ>V>qQ>W>rQ?R?TR?S?UQ*u%VQ.e<yR7f<z!YoOXr!X#_%g&l&n&o&q,j,o2T2W>c>d>e>f>g>h>i>j>k>l>m>n>o>pQ!dPS#aZ#jQ&v!^W'b!m*a0R4sQ'x!}Q(y#vQ)k$iS,b&d&gQ,h&iQ,u&uS,z&}/eQ-^'[Q.o(wQ/R)lQ0i+TQ0o+_Q2P,gQ2r-`Q3Z.^Q4Q.|Q4{0`Q5x1fQ6`1{Q6a1|Q6e2OQ6g2QQ6m2YQ7Y3^Q7l3}Q8q5{Q9T6bQ9U6cQ9W6fQ9k7ZQ:e8rR:r9X#vbOPXZr!X!^!m#_#j#v%g&d&g&i&l&n&o&q&u&}'[(w*a+T+_,g,j,o-`.^/e0R0`1f1{1|2O2Q2T2W2Y3^4s5{6b6c6f7Z8r9X>c>d>e>f>g>h>i>j>k>l>m>n>o>pQ#TWQ#`YQ%ksQ%mtS%ou!eS'{#R(OQ(R#UQ(m#pQ(r#sQ(z#yQ({#zQ(|#{Q(}#|Q)O#}Q)P$OQ)Q$PQ)R$QQ)S$RQ)T$SQ)V$UQ)X$YQ)Z$[Q)`$`W)j$i)l.|3}Q+[%nQ+p%{S-Q'R2iQ-o'lS-t'|-vQ-y(UQ-{(]Q.j(qQ.m(sQ.q<[Q.s<_Q.t<`Q.u<cQ/X)vQ0f+PQ2d,{Q2g-OQ2w-hQ3P-|Q3e.kQ3j<dQ3k<eQ3l<fQ3m<gQ3n<hQ3o<iQ3p<jQ3q<kQ3r<lQ3s<mQ3t<nQ3u.rQ3v<qQ3y<tQ3z=RQ4R<oQ5Q0hQ5[0xQ6s=UQ6y2yQ7P3QQ7`3fQ7a=VQ7j=XQ7k=aQ8i5oQ9^6qQ9b6zQ9l=dQ9r=mQ9s=nQ:v9dQ;^:_Q;g:tQ<^!}R>O>^R#VWR'T!cY!rQ'Y-[1c5sS'P!c-SQ'e!pS'o!s!tS'p!u5uU*b$w*S*gS-P'Q'XS-k'f'gQ-m'hS/z*c*iQ0S*jQ2n-YQ2|-lQ4o0QR4t0TR(t#sQ!dQT-Z'Y-[]!oQ!p'Y-[1c5sQ#k[R'c<]R)_$_T#fZ%_S#eZ%_S%el,fU(`#c#d#gS.P(a(bQ.T(cQ0j+UQ3S.QU3T.R.S.US7R3U3VR9e7Sd#XW#R#U%b'|(V*R+R-z/dr#bZl#c#d#g%_(a(b(c+U.Q.R.S.U3U3V7SS*U$s*YQ/k*VQ1},fQ2e,|Q4Y/gQ6o2]Q7r4ZQ9]6pT=t'R+SV#[W%b*RU#ZW%b*RS'}#R(VU(S#U+R/dS-R'R+ST-u'|-zV'W!c%c*SQ$geR)q$lT)f$g)gR4P.{T*W$s*YT*`$v*RQ0m+^Q1Z+{Q3X.]Q5l1]Q5w1eQ7W3]Q8p5zQ9h7VQ:b8oQ:w9gQ;a:dQ;j:yQ;t;bR;w;k!YpOXr!X#_%g&l&n&o&q,j,o2T2W>c>d>e>f>g>h>i>j>k>l>m>n>o>pQ&e!SR,^&b!`lOXr!R!S!X#_%g&b&l&n&o&q,j,o2T2W>c>d>e>f>g>h>i>j>k>l>m>n>o>pR,f&iT%fl,fR1_+}R,]&`Q&OyR+u&PR+k%yZ1w,c1x1y=b=c]&j!U&m>u>v>}?O]&k!U&m>u>v>}?OT2V,o2W",
18
287
  nodeNames: "⚠ ArithOp ArithOp ?. JSXStartTag LineComment BlockComment Script ExportDeclaration export Star as VariableName String Escape from ; default FunctionDeclaration async function VariableDefinition > < TypeParamList const TypeDefinition extends ThisType this LiteralType ArithOp Number BooleanLiteral TemplateType InterpolationEnd Interpolation InterpolationStart NullType null VoidType void TypeofType typeof MemberExpression . PropertyName [ TemplateString Escape Interpolation super RegExp ] ArrayExpression Spread , } { ObjectExpression Property async get set PropertyDefinition Block : NewTarget new NewExpression ) ( ArgList UnaryExpression delete LogicOp BitOp YieldExpression yield AwaitExpression await ParenthesizedExpression ClassExpression class ClassBody MethodDeclaration Decorator @ MemberExpression CallExpression TypeArgList CompareOp < declare Privacy static abstract override PropertyDeclaration readonly accessor Optional TypeAnnotation Equals FunctionExpression ArrowFunction ParamList ParamList ArrayPattern ObjectPattern PatternProperty Privacy readonly Arrow ThinArrow MemberExpression BinaryExpression ArithOp ArithOp ArithOp ArithOp BitOp CompareOp instanceof satisfies in CompareOp BitOp BitOp BitOp LogicOp LogicOp ConditionalExpression LogicOp LogicOp AssignmentExpression UpdateOp PostfixExpression CallExpression InstantiationExpression TaggedTemplateExpression DynamicImport import ImportMeta JSXElement JSXSelfCloseEndTag JSXSelfClosingTag JSXIdentifier JSXBuiltin JSXIdentifier JSXNamespacedName JSXMemberExpression JSXSpreadAttribute JSXAttribute JSXAttributeValue JSXEscape JSXEndTag JSXOpenTag JSXFragmentTag JSXText JSXEscape JSXStartCloseTag JSXCloseTag PrefixCast < ArrowFunction TypeParamList SequenceExpression InstantiationExpression KeyofType keyof UniqueType unique ImportType InferredType infer TypeName ParenthesizedType FunctionSignature ParamList NewSignature IndexedType TupleType Label ArrayType ReadonlyType ObjectType MethodType PropertyType IndexSignature PropertyDefinition CallSignature TypePredicate asserts is NewSignature new UnionType LogicOp IntersectionType LogicOp ConditionalType ParameterizedType ClassDeclaration abstract implements type VariableDeclaration let var using TypeAliasDeclaration InterfaceDeclaration interface EnumDeclaration enum EnumBody NamespaceDeclaration namespace module AmbientDeclaration declare GlobalDeclaration global ClassDeclaration ClassBody AmbientFunctionDeclaration ExportGroup VariableName VariableName ImportDeclaration ImportGroup PragmaDeclaration pragma static PragmaStaticStringClassPath ClassPath Alias ForStatement for ForSpec ForInSpec ForOfSpec of WhileStatement while WithStatement with DoStatement do IfStatement if else SwitchStatement switch SwitchBody CaseLabel case DefaultLabel TryStatement try CatchClause catch FinallyClause finally ReturnStatement return ThrowStatement throw BreakStatement break ContinueStatement continue DebuggerStatement debugger LabeledStatement ExpressionStatement SingleExpression SingleClassItem",
19
288
  maxTerm: 382,
20
- context: tokens_js.trackNewline,
289
+ context: trackNewline,
21
290
  nodeProps: [
22
291
  ["isolate", -8,5,6,13,34,36,48,50,52,""],
23
292
  ["group", -27,8,16,18,65,203,207,211,212,214,217,220,230,232,238,244,246,248,250,253,259,265,267,269,271,273,275,276,"Statement",-34,12,13,29,32,33,39,48,51,52,54,59,67,69,73,77,79,81,82,104,105,115,116,132,135,137,138,139,140,141,143,144,163,165,167,"Expression",-23,28,30,34,38,40,42,169,171,173,174,176,177,178,180,181,182,184,185,186,197,199,201,202,"Type",-2,85,98,"ClassItem"],
24
293
  ["openedBy", 22,"<",35,"InterpolationStart",53,"[",57,"{",70,"(",156,"JSXStartCloseTag"],
25
294
  ["closedBy", -2,23,164,">",37,"InterpolationEnd",47,"]",58,"}",71,")",161,"JSXEndTag"]
26
295
  ],
27
- propSources: [highlight_js.jsHighlight],
296
+ propSources: [jsHighlight],
28
297
  skippedNodes: [0,5,6,279],
29
298
  repeatNodeCount: 38,
30
299
  tokenData: "$?S?MlR!bOX%ZXY+gYZ-yZ[+g[]%Z]^.c^p%Zpq+gqr/mrs3cst:_tu;iuv?yvwBbwxEPxyK`yzLjz{Mt{|!!h|}!#u}!O!%P!O!P!'k!P!Q!1{!Q!R#2a!R![#4p![!]#Ap!]!^#B|!^!_#DW!_!`#Hm!`!a#KX!a!b$!f!b!c$%T!c!};i!}#O$&_#O#P$'i#P#Q$-Q#Q#R$.[#R#S;i#S#T$/i#T#o$0s#o#p$5T#p#q$5y#q#r$7Z#r#s$8g#s$f%Z$f$g+g$g#BY;i#BY#BZ$9q#BZ$IS;i$IS$I_$9q$I_$I|;i$I|$I}$<|$I}$JO$<|$JO$JT;i$JT$JU$9q$JU$KV;i$KV$KW$9q$KW&FU;i&FU&FV$9q&FV;'S;i;'S;=`?s<%l?HT;i?HT?HU$9q?HUO;i(n%d_$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z&j&hT$e&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c&j&zP;=`<%l&c'|'U]$e&j(]!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}!b(SU(]!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f<%lO'}!b(iP;=`<%l'}'|(oP;=`<%l&}'[(y]$e&j(YpOY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#o(r#o#p)r#p;'S(r;'S;=`*a<%lO(rp)wU(YpOY)rZr)rs#O)r#P;'S)r;'S;=`*Z<%lO)rp*^P;=`<%l)r'[*dP;=`<%l(r#S*nX(Yp(]!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g#S+^P;=`<%l*g(n+dP;=`<%l%Z?Ml+rq$e&j(Yp(]!b(O?E|OX%ZXY+gYZ&cZ[+g[p%Zpq+gqr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p$f%Z$f$g+g$g#BY%Z#BY#BZ+g#BZ$IS%Z$IS$I_+g$I_$JT%Z$JT$JU+g$JU$KV%Z$KV$KW+g$KW&FU%Z&FU&FV+g&FV;'S%Z;'S;=`+a<%l?HT%Z?HT?HU+g?HUO%Z?Ml.ST(Z#S$e&j(P?E|O!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c?Ml.n_$e&j(Yp(]!b(P?E|OY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z8JQ/x`$e&j!m8Bb(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`0z!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW1V`#r(Ch$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`2X!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW2d_#r(Ch$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z7*U3l_(X7!v$e&j(]!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X<%lO4k(^4r_$e&j(]!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X<%lO4k&z5vX$e&jOr5qrs6cs!^5q!^!_6y!_#o5q#o#p6y#p;'S5q;'S;=`7h<%lO5q&z6jT$``$e&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c`6|TOr6yrs7]s;'S6y;'S;=`7b<%lO6y`7bO$```7eP;=`<%l6y&z7kP;=`<%l5q(^7w]$``$e&j(]!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}!r8uZ(]!bOY8pYZ6yZr8prs9hsw8pwx6yx#O8p#O#P6y#P;'S8p;'S;=`:R<%lO8p!r9oU$``(]!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f<%lO'}!r:UP;=`<%l8p(^:[P;=`<%l4k1'`:j_)Y0Mp$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z?Ml;xk$e&j(Yp(]!b$X#t(V;Hz(g$I[OY%ZYZ&cZr%Zrs&}st%Ztu;iuw%Zwx(rx}%Z}!O=m!O!Q%Z!Q![;i![!^%Z!^!_*g!_!c%Z!c!};i!}#O%Z#O#P&c#P#R%Z#R#S;i#S#T%Z#T#o;i#o#p*g#p$g%Z$g;'S;i;'S;=`?s<%lO;i+d=xk$e&j(Yp(]!b$X#tOY%ZYZ&cZr%Zrs&}st%Ztu=muw%Zwx(rx}%Z}!O=m!O!Q%Z!Q![=m![!^%Z!^!_*g!_!c%Z!c!}=m!}#O%Z#O#P&c#P#R%Z#R#S=m#S#T%Z#T#o=m#o#p*g#p$g%Z$g;'S=m;'S;=`?m<%lO=m+d?pP;=`<%l=m?Ml?vP;=`<%l;i(KW@U`$e&j(Yp(]!b#k(ChOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`AW!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KWAc_$e&j#|(Ch(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z,#xBma(z+JY$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sv%ZvwCrwx(rx!^%Z!^!_*g!_!`AW!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KWC}`$e&j#v(Ch(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`AW!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z7*UEY_([7#h$e&j(YpOYFXYZG_ZrFXrsG_swFXwxHox!^FX!^!_Iq!_#OFX#O#PG_#P#oFX#o#pIq#p;'SFX;'S;=`KY<%lOFX'lF`_$e&j(YpOYFXYZG_ZrFXrsG_swFXwxHox!^FX!^!_Iq!_#OFX#O#PG_#P#oFX#o#pIq#p;'SFX;'S;=`KY<%lOFX&zGdX$e&jOwG_wx6cx!^G_!^!_HP!_#oG_#o#pHP#p;'SG_;'S;=`Hi<%lOG_`HSTOwHPwx7]x;'SHP;'S;=`Hc<%lOHP`HfP;=`<%lHP&zHlP;=`<%lG_'lHx]$``$e&j(YpOY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#o(r#o#p)r#p;'S(r;'S;=`*a<%lO(r!QIvZ(YpOYIqYZHPZrIqrsHPswIqwxJix#OIq#O#PHP#P;'SIq;'S;=`KS<%lOIq!QJpU$``(YpOY)rZr)rs#O)r#P;'S)r;'S;=`*Z<%lO)r!QKVP;=`<%lIq'lK]P;=`<%lFX>L^Kk_!i>Dn$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z#&ULu_!h!Lf$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z-!nNRb$e&j(Yp(]!b(W%&f#l(ChOY%ZYZ&cZr%Zrs&}sw%Zwx(rxz%Zz{! Z{!^%Z!^!_*g!_!`AW!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW! f`$e&j(Yp(]!b#i(ChOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`AW!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z;$Y!!s`$e&j(Yp(]!bo:JjOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`AW!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z,$U!$Q_!Y+Jf$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z;$Y!%[a$e&j(Yp(]!bo:JjOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`AW!`!a!&a!a#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(K[!&l_#f(Cl$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z?Ml!'vc$e&j(Yp(]!b}=HnOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!)R!P!Q%Z!Q![!+k![!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z#%|!)[a$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!*a!P!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z#%|!*l_!X!L^$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z7)t!+vg$e&j(Yp(]!bp7!UOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![!+k![!^%Z!^!_*g!_!g%Z!g!h!-_!h#O%Z#O#P&c#P#R%Z#R#S!+k#S#X%Z#X#Y!-_#Y#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z7)t!-hg$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx{%Z{|!/P|}%Z}!O!/P!O!Q%Z!Q![!0e![!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S!0e#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z7)t!/Yc$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![!0e![!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S!0e#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z7)t!0pc$e&j(Yp(]!bp7!UOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![!0e![!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S!0e#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z?Ml!2Wf$e&j(Yp(]!b#j(ChOY!3lYZ&cZr!3lrs!5Psw!3lwx!Dtxz!3lz{#&`{!P!3l!P!Q#'u!Q!^!3l!^!_!Nz!_!`#/e!`!a#0z!a!}!3l!}#O#$w#O#P!=[#P#o!3l#o#p!Nz#p;'S!3l;'S;=`#&Y<%lO!3l1'`!3wb$e&j(Yp(]!b!U0MpOY!3lYZ&cZr!3lrs!5Psw!3lwx!Dtx!P!3l!P!Q!Lq!Q!^!3l!^!_!Nz!_!}!3l!}#O#$w#O#P!=[#P#o!3l#o#p!Nz#p;'S!3l;'S;=`#&Y<%lO!3l1&n!5Y`$e&j(]!b!U0MpOY!5PYZ&cZw!5Pwx!6[x!P!5P!P!Q!>S!Q!^!5P!^!_!@T!_!}!5P!}#O!Ce#O#P!=[#P#o!5P#o#p!@T#p;'S!5P;'S;=`!Dn<%lO!5P1%[!6c^$e&j!U0MpOY!6[YZ&cZ!P!6[!P!Q!7_!Q!^!6[!^!_!8t!_!}!6[!}#O!;i#O#P!=[#P#o!6[#o#p!8t#p;'S!6[;'S;=`!=|<%lO!6[1%[!7fd$e&j!U0MpO!^&c!_#W&c#W#X!7_#X#Z&c#Z#[!7_#[#]&c#]#^!7_#^#a&c#a#b!7_#b#g&c#g#h!7_#h#i&c#i#j!7_#j#k!7_#k#m&c#m#n!7_#n#o&c#p;'S&c;'S;=`&w<%lO&c0Mp!8yX!U0MpOY!8tZ!P!8t!P!Q!9f!Q!}!8t!}#O!:T#O#P!;S#P;'S!8t;'S;=`!;c<%lO!8t0Mp!9kW!U0Mp#W#X!9f#Z#[!9f#]#^!9f#a#b!9f#g#h!9f#i#j!9f#j#k!9f#m#n!9f0Mp!:WVOY!:TZ#O!:T#O#P!:m#P#Q!8t#Q;'S!:T;'S;=`!:|<%lO!:T0Mp!:pSOY!:TZ;'S!:T;'S;=`!:|<%lO!:T0Mp!;PP;=`<%l!:T0Mp!;VSOY!8tZ;'S!8t;'S;=`!;c<%lO!8t0Mp!;fP;=`<%l!8t1%[!;n[$e&jOY!;iYZ&cZ!^!;i!^!_!:T!_#O!;i#O#P!<d#P#Q!6[#Q#o!;i#o#p!:T#p;'S!;i;'S;=`!=U<%lO!;i1%[!<iX$e&jOY!;iYZ&cZ!^!;i!^!_!:T!_#o!;i#o#p!:T#p;'S!;i;'S;=`!=U<%lO!;i1%[!=XP;=`<%l!;i1%[!=aX$e&jOY!6[YZ&cZ!^!6[!^!_!8t!_#o!6[#o#p!8t#p;'S!6[;'S;=`!=|<%lO!6[1%[!>PP;=`<%l!6[1&n!>]l$e&j(]!b!U0MpOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#W&}#W#X!>S#X#Z&}#Z#[!>S#[#]&}#]#^!>S#^#a&}#a#b!>S#b#g&}#g#h!>S#h#i&}#i#j!>S#j#k!>S#k#m&}#m#n!>S#n#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}1 S!@[Z(]!b!U0MpOY!@TZw!@Twx!8tx!P!@T!P!Q!@}!Q!}!@T!}#O!Bg#O#P!;S#P;'S!@T;'S;=`!C_<%lO!@T1 S!AUe(]!b!U0MpOY'}Zw'}x#O'}#P#W'}#W#X!@}#X#Z'}#Z#[!@}#[#]'}#]#^!@}#^#a'}#a#b!@}#b#g'}#g#h!@}#h#i'}#i#j!@}#j#k!@}#k#m'}#m#n!@}#n;'S'};'S;=`(f<%lO'}1 S!BlX(]!bOY!BgZw!Bgwx!:Tx#O!Bg#O#P!:m#P#Q!@T#Q;'S!Bg;'S;=`!CX<%lO!Bg1 S!C[P;=`<%l!Bg1 S!CbP;=`<%l!@T1&n!Cl^$e&j(]!bOY!CeYZ&cZw!Cewx!;ix!^!Ce!^!_!Bg!_#O!Ce#O#P!<d#P#Q!5P#Q#o!Ce#o#p!Bg#p;'S!Ce;'S;=`!Dh<%lO!Ce1&n!DkP;=`<%l!Ce1&n!DqP;=`<%l!5P1%|!D}`$e&j(Yp!U0MpOY!DtYZ&cZr!Dtrs!6[s!P!Dt!P!Q!FP!Q!^!Dt!^!_!HQ!_!}!Dt!}#O!Kb#O#P!=[#P#o!Dt#o#p!HQ#p;'S!Dt;'S;=`!Lk<%lO!Dt1%|!FYl$e&j(Yp!U0MpOY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#W(r#W#X!FP#X#Z(r#Z#[!FP#[#](r#]#^!FP#^#a(r#a#b!FP#b#g(r#g#h!FP#h#i(r#i#j!FP#j#k!FP#k#m(r#m#n!FP#n#o(r#o#p)r#p;'S(r;'S;=`*a<%lO(r0Nb!HXZ(Yp!U0MpOY!HQZr!HQrs!8ts!P!HQ!P!Q!Hz!Q!}!HQ!}#O!Jd#O#P!;S#P;'S!HQ;'S;=`!K[<%lO!HQ0Nb!IRe(Yp!U0MpOY)rZr)rs#O)r#P#W)r#W#X!Hz#X#Z)r#Z#[!Hz#[#])r#]#^!Hz#^#a)r#a#b!Hz#b#g)r#g#h!Hz#h#i)r#i#j!Hz#j#k!Hz#k#m)r#m#n!Hz#n;'S)r;'S;=`*Z<%lO)r0Nb!JiX(YpOY!JdZr!Jdrs!:Ts#O!Jd#O#P!:m#P#Q!HQ#Q;'S!Jd;'S;=`!KU<%lO!Jd0Nb!KXP;=`<%l!Jd0Nb!K_P;=`<%l!HQ1%|!Ki^$e&j(YpOY!KbYZ&cZr!Kbrs!;is!^!Kb!^!_!Jd!_#O!Kb#O#P!<d#P#Q!Dt#Q#o!Kb#o#p!Jd#p;'S!Kb;'S;=`!Le<%lO!Kb1%|!LhP;=`<%l!Kb1%|!LnP;=`<%l!Dt1'`!L|n$e&j(Yp(]!b!U0MpOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#W%Z#W#X!Lq#X#Z%Z#Z#[!Lq#[#]%Z#]#^!Lq#^#a%Z#a#b!Lq#b#g%Z#g#h!Lq#h#i%Z#i#j!Lq#j#k!Lq#k#m%Z#m#n!Lq#n#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z1 t# T](Yp(]!b!U0MpOY!NzZr!Nzrs!@Tsw!Nzwx!HQx!P!Nz!P!Q# |!Q!}!Nz!}#O##q#O#P!;S#P;'S!Nz;'S;=`#$q<%lO!Nz1 t#!Vh(Yp(]!b!U0MpOY*gZr*grs'}sw*gwx)rx#O*g#P#W*g#W#X# |#X#Z*g#Z#[# |#[#]*g#]#^# |#^#a*g#a#b# |#b#g*g#g#h# |#h#i*g#i#j# |#j#k# |#k#m*g#m#n# |#n;'S*g;'S;=`+Z<%lO*g1 t##xZ(Yp(]!bOY##qZr##qrs!Bgsw##qwx!Jdx#O##q#O#P!:m#P#Q!Nz#Q;'S##q;'S;=`#$k<%lO##q1 t#$nP;=`<%l##q1 t#$tP;=`<%l!Nz1'`#%Q`$e&j(Yp(]!bOY#$wYZ&cZr#$wrs!Cesw#$wwx!Kbx!^#$w!^!_##q!_#O#$w#O#P!<d#P#Q!3l#Q#o#$w#o#p##q#p;'S#$w;'S;=`#&S<%lO#$w1'`#&VP;=`<%l#$w1'`#&]P;=`<%l!3l?Ml#&mb$e&j(Yp(]!b(Q?E|!U0MpOY!3lYZ&cZr!3lrs!5Psw!3lwx!Dtx!P!3l!P!Q!Lq!Q!^!3l!^!_!Nz!_!}!3l!}#O#$w#O#P!=[#P#o!3l#o#p!Nz#p;'S!3l;'S;=`#&Y<%lO!3l?Ml#(Q_$e&j(Yp(]!bT?E|OY#'uYZ&cZr#'urs#)Psw#'uwx#,ax!^#'u!^!_#.`!_#O#'u#O#P#*R#P#o#'u#o#p#.`#p;'S#'u;'S;=`#/_<%lO#'u?Lz#)Y]$e&j(]!bT?E|OY#)PYZ&cZw#)Pwx#*Rx!^#)P!^!_#+d!_#O#)P#O#P#*R#P#o#)P#o#p#+d#p;'S#)P;'S;=`#,Z<%lO#)P?Kh#*YX$e&jT?E|OY#*RYZ&cZ!^#*R!^!_#*u!_#o#*R#o#p#*u#p;'S#*R;'S;=`#+^<%lO#*R?E|#*zST?E|OY#*uZ;'S#*u;'S;=`#+W<%lO#*u?E|#+ZP;=`<%l#*u?Kh#+aP;=`<%l#*R?G`#+kW(]!bT?E|OY#+dZw#+dwx#*ux#O#+d#O#P#*u#P;'S#+d;'S;=`#,T<%lO#+d?G`#,WP;=`<%l#+d?Lz#,^P;=`<%l#)P?LY#,j]$e&j(YpT?E|OY#,aYZ&cZr#,ars#*Rs!^#,a!^!_#-c!_#O#,a#O#P#*R#P#o#,a#o#p#-c#p;'S#,a;'S;=`#.Y<%lO#,a?Fn#-jW(YpT?E|OY#-cZr#-crs#*us#O#-c#O#P#*u#P;'S#-c;'S;=`#.S<%lO#-c?Fn#.VP;=`<%l#-c?LY#.]P;=`<%l#,a?HQ#.iY(Yp(]!bT?E|OY#.`Zr#.`rs#+dsw#.`wx#-cx#O#.`#O#P#*u#P;'S#.`;'S;=`#/X<%lO#.`?HQ#/[P;=`<%l#.`?Ml#/bP;=`<%l#'u8Ix#/rb$e&j#|(Ch(Yp(]!b!U0MpOY!3lYZ&cZr!3lrs!5Psw!3lwx!Dtx!P!3l!P!Q!Lq!Q!^!3l!^!_!Nz!_!}!3l!}#O#$w#O#P!=[#P#o!3l#o#p!Nz#p;'S!3l;'S;=`#&Y<%lO!3l1*U#1Xb$V#t$e&j(Yp(]!b!U0MpOY!3lYZ&cZr!3lrs!5Psw!3lwx!Dtx!P!3l!P!Q!Lq!Q!^!3l!^!_!Nz!_!}!3l!}#O#$w#O#P!=[#P#o!3l#o#p!Nz#p;'S!3l;'S;=`#&Y<%lO!3l7)t#2lp$e&j(Yp(]!bp7!UOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!+k!P!Q%Z!Q![#4p![!^%Z!^!_*g!_!g%Z!g!h!-_!h#O%Z#O#P&c#P#R%Z#R#S#4p#S#U%Z#U#V#7z#V#X%Z#X#Y!-_#Y#b%Z#b#c#6p#c#d#;S#d#l%Z#l#m#>U#m#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z7)t#4{k$e&j(Yp(]!bp7!UOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!+k!P!Q%Z!Q![#4p![!^%Z!^!_*g!_!g%Z!g!h!-_!h#O%Z#O#P&c#P#R%Z#R#S#4p#S#X%Z#X#Y!-_#Y#b%Z#b#c#6p#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z7)t#6{_$e&j(Yp(]!bp7!UOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z7)t#8Td$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!R#9c!R!S#9c!S!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#9c#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z7)t#9nf$e&j(Yp(]!bp7!UOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!R#9c!R!S#9c!S!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#9c#S#b%Z#b#c#6p#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z7)t#;]c$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!Y#<h!Y!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#<h#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z7)t#<se$e&j(Yp(]!bp7!UOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!Y#<h!Y!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#<h#S#b%Z#b#c#6p#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z7)t#>_g$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![#?v![!^%Z!^!_*g!_!c%Z!c!i#?v!i#O%Z#O#P&c#P#R%Z#R#S#?v#S#T%Z#T#Z#?v#Z#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z7)t#@Ri$e&j(Yp(]!bp7!UOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![#?v![!^%Z!^!_*g!_!c%Z!c!i#?v!i#O%Z#O#P&c#P#R%Z#R#S#?v#S#T%Z#T#Z#?v#Z#b%Z#b#c#6p#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z*)x#A}_!d$b$e&j#z)Lv(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z1'x#CX_`0NY$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z?Jv#De^g#)`!}-<U(Yp(]!b$j0MpOY*gZr*grs'}sw*gwx)rx!P*g!P!Q#Ea!Q!^*g!^!_#FV!_!`#Gw!`#O*g#P;'S*g;'S;=`+Z<%lO*g(n#EjX$g&j(Yp(]!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g(El#F`Z#m(Ch(Yp(]!bOY*gZr*grs'}sw*gwx)rx!_*g!_!`#GR!`#O*g#P;'S*g;'S;=`+Z<%lO*g(El#G[X#|(Ch(Yp(]!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g(El#HQX#n(Ch(Yp(]!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g*)x#Hxa#Z*!Y$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`0z!`!a#I}!a#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(K[#JY_#e(Cl$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z*)x#Khaf!*r#n(Ch$b#|$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`#Lm!`!a#Mw!a#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW#Lx_#n(Ch$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW#NSa#m(Ch$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`AW!`!a$ X!a#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$ d`#m(Ch$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`AW!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(Kd$!qa(r(Ct$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!a%Z!a!b$#v!b#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$$R`$e&j#w(Ch(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`AW!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z5 |$%`_!y4H^$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z?Jv$&j_!P?CW$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(n$'nZ$e&jO!^$(a!^!_$(w!_#i$(a#i#j$(|#j#l$(a#l#m$*o#m#o$(a#o#p$(w#p;'S$(a;'S;=`$,z<%lO$(a(n$(hT^#S$e&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c#S$(|O^#S(n$)R[$e&jO!Q&c!Q![$)w![!^&c!_!c&c!c!i$)w!i#T&c#T#Z$)w#Z#o&c#o#p$,_#p;'S&c;'S;=`&w<%lO&c(n$)|Z$e&jO!Q&c!Q![$*o![!^&c!_!c&c!c!i$*o!i#T&c#T#Z$*o#Z#o&c#p;'S&c;'S;=`&w<%lO&c(n$*tZ$e&jO!Q&c!Q![$+g![!^&c!_!c&c!c!i$+g!i#T&c#T#Z$+g#Z#o&c#p;'S&c;'S;=`&w<%lO&c(n$+lZ$e&jO!Q&c!Q![$(a![!^&c!_!c&c!c!i$(a!i#T&c#T#Z$(a#Z#o&c#p;'S&c;'S;=`&w<%lO&c#S$,bR!Q![$,k!c!i$,k#T#Z$,k#S$,nS!Q![$,k!c!i$,k#T#Z$,k#q#r$(w(n$,}P;=`<%l$(a#1[$-]_!V#)l$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$.g`#t(Ch$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`AW!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z;$Q$/t_$e&j(Yp(]!b(c:JbOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z?Ml$1Sk$e&j(Yp(]!b(V;Hz$Z#t(g$I[OY%ZYZ&cZr%Zrs&}st%Ztu$0suw%Zwx(rx}%Z}!O$2w!O!Q%Z!Q![$0s![!^%Z!^!_*g!_!c%Z!c!}$0s!}#O%Z#O#P&c#P#R%Z#R#S$0s#S#T%Z#T#o$0s#o#p*g#p$g%Z$g;'S$0s;'S;=`$4}<%lO$0s+d$3Sk$e&j(Yp(]!b$Z#tOY%ZYZ&cZr%Zrs&}st%Ztu$2wuw%Zwx(rx}%Z}!O$2w!O!Q%Z!Q![$2w![!^%Z!^!_*g!_!c%Z!c!}$2w!}#O%Z#O#P&c#P#R%Z#R#S$2w#S#T%Z#T#o$2w#o#p*g#p$g%Z$g;'S$2w;'S;=`$4w<%lO$2w+d$4zP;=`<%l$2w?Ml$5QP;=`<%l$0s32n$5^X![30j(Yp(]!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g,#x$6Ua(y+JY$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`AW!`#O%Z#O#P&c#P#o%Z#o#p*g#p#q$#v#q;'S%Z;'S;=`+a<%lO%Z9'W$7h_!Z8+tsBr$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z1'`$8r_!n0Mp$e&j(Yp(]!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z?Ml$:S|$e&j(Yp(]!b(O?E|$X#t(V;Hz(g$I[OX%ZXY+gYZ&cZ[+g[p%Zpq+gqr%Zrs&}st%Ztu;iuw%Zwx(rx}%Z}!O=m!O!Q%Z!Q![;i![!^%Z!^!_*g!_!c%Z!c!};i!}#O%Z#O#P&c#P#R%Z#R#S;i#S#T%Z#T#o;i#o#p*g#p$f%Z$f$g+g$g#BY;i#BY#BZ$9q#BZ$IS;i$IS$I_$9q$I_$JT;i$JT$JU$9q$JU$KV;i$KV$KW$9q$KW&FU;i&FU&FV$9q&FV;'S;i;'S;=`?s<%l?HT;i?HT?HU$9q?HUO;i?Ml$=_k$e&j(Yp(]!b(P?E|$X#t(V;Hz(g$I[OY%ZYZ&cZr%Zrs&}st%Ztu;iuw%Zwx(rx}%Z}!O=m!O!Q%Z!Q![;i![!^%Z!^!_*g!_!c%Z!c!};i!}#O%Z#O#P&c#P#R%Z#R#S;i#S#T%Z#T#o;i#o#p*g#p$g%Z$g;'S;i;'S;=`?s<%lO;i",
31
- tokenizers: [tokens_js.noSemicolon, tokens_js.noSemicolonType, tokens_js.operatorToken, tokens_js.jsx, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, tokens_js.insertSemicolon, new lr.LocalTokenGroup("$S~RRtu[#O#Pg#S#T#|~_P#o#pb~gOu~~jVO#i!P#i#j!U#j#l!P#l#m!q#m;'S!P;'S;=`#v<%lO!P~!UO!R~~!XS!Q![!e!c!i!e#T#Z!e#o#p#Z~!hR!Q![!q!c!i!q#T#Z!q~!tR!Q![!}!c!i!}#T#Z!}~#QR!Q![!P!c!i!P#T#Z!P~#^R!Q![#g!c!i#g#T#Z#g~#jS!Q![#g!c!i#g#T#Z#g#q#r!P~#yP;=`<%l!P~$RO(e~~", 141, 342), new lr.LocalTokenGroup("j~RQYZXz{^~^O(S~~aP!P!Qd~iO(T~~", 25, 325)],
300
+ tokenizers: [noSemicolon, noSemicolonType, operatorToken, jsx, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, insertSemicolon, new lr.LocalTokenGroup("$S~RRtu[#O#Pg#S#T#|~_P#o#pb~gOu~~jVO#i!P#i#j!U#j#l!P#l#m!q#m;'S!P;'S;=`#v<%lO!P~!UO!R~~!XS!Q![!e!c!i!e#T#Z!e#o#p#Z~!hR!Q![!q!c!i!q#T#Z!q~!tR!Q![!}!c!i!}#T#Z!}~#QR!Q![!P!c!i!P#T#Z!P~#^R!Q![#g!c!i#g#T#Z#g~#jS!Q![#g!c!i#g#T#Z#g#q#r!P~#yP;=`<%l!P~$RO(e~~", 141, 342), new lr.LocalTokenGroup("j~RQYZXz{^~^O(S~~aP!P!Qd~iO(T~~", 25, 325)],
32
301
  topRules: {"Script":[0,7],"SingleExpression":[1,277],"SingleClassItem":[2,278]},
33
302
  dialects: {jsx: 0, ts: 16025},
34
303
  dynamicPrecedences: {"77":1,"79":1,"90":1,"165":1,"195":1},
package/dist/index.js CHANGED
@@ -1,6 +1,275 @@
1
- import { LRParser, LocalTokenGroup } from '@lezer/lr';
2
- import { trackNewline, noSemicolon, noSemicolonType, operatorToken, jsx, insertSemicolon } from './tokens.js';
3
- import { jsHighlight } from './highlight.js';
1
+ import { ContextTracker, ExternalTokenizer, LRParser, LocalTokenGroup } from '@lezer/lr';
2
+ import { styleTags, tags } from '@lezer/highlight';
3
+ import { syntaxHighlighting, HighlightStyle } from '@codemirror/language';
4
+
5
+ // This file was generated by lezer-generator. You probably shouldn't edit it.
6
+ const noSemi = 318,
7
+ noSemiType = 319,
8
+ incdec = 1,
9
+ incdecPrefix = 2,
10
+ questionDot = 3,
11
+ JSXStartTag = 4,
12
+ insertSemi = 320,
13
+ spaces = 322,
14
+ newline = 323,
15
+ LineComment = 5,
16
+ BlockComment = 6,
17
+ Dialect_jsx = 0;
18
+
19
+ /* Hand-written tokenizers for JavaScript tokens that can't be
20
+ expressed by lezer's built-in tokenizer. */
21
+
22
+ const space$1 = [9, 10, 11, 12, 13, 32, 133, 160, 5760, 8192, 8193, 8194, 8195, 8196, 8197, 8198, 8199, 8200,
23
+ 8201, 8202, 8232, 8233, 8239, 8287, 12288];
24
+
25
+ const braceR$1 = 125, semicolon$1 = 59, slash$1 = 47, star$1 = 42, plus$1 = 43, minus$1 = 45, lt$1 = 60, comma$1 = 44,
26
+ question$1 = 63, dot$1 = 46, bracketL$1 = 91;
27
+
28
+ const trackNewline = new ContextTracker({
29
+ start: false,
30
+ shift(context, term) {
31
+ return term == LineComment || term == BlockComment || term == spaces ? context : term == newline
32
+ },
33
+ strict: false
34
+ });
35
+
36
+ const insertSemicolon = new ExternalTokenizer((input, stack) => {
37
+ let {next} = input;
38
+ if (next == braceR$1 || next == -1 || stack.context)
39
+ input.acceptToken(insertSemi);
40
+ }, {contextual: true, fallback: true});
41
+
42
+ const noSemicolon = new ExternalTokenizer((input, stack) => {
43
+ let {next} = input, after;
44
+ if (space$1.indexOf(next) > -1) return
45
+ if (next == slash$1 && ((after = input.peek(1)) == slash$1 || after == star$1)) return
46
+ if (next != braceR$1 && next != semicolon$1 && next != -1 && !stack.context)
47
+ input.acceptToken(noSemi);
48
+ }, {contextual: true});
49
+
50
+ const noSemicolonType = new ExternalTokenizer((input, stack) => {
51
+ if (input.next == bracketL$1 && !stack.context) input.acceptToken(noSemiType);
52
+ }, {contextual: true});
53
+
54
+ const operatorToken = new ExternalTokenizer((input, stack) => {
55
+ let {next} = input;
56
+ if (next == plus$1 || next == minus$1) {
57
+ input.advance();
58
+ if (next == input.next) {
59
+ input.advance();
60
+ let mayPostfix = !stack.context && stack.canShift(incdec);
61
+ input.acceptToken(mayPostfix ? incdec : incdecPrefix);
62
+ }
63
+ } else if (next == question$1 && input.peek(1) == dot$1) {
64
+ input.advance(); input.advance();
65
+ if (input.next < 48 || input.next > 57) // No digit after
66
+ input.acceptToken(questionDot);
67
+ }
68
+ }, {contextual: true});
69
+
70
+ function identifierChar$1(ch, start) {
71
+ return ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122 || ch == 95 || ch >= 192 ||
72
+ !start && ch >= 48 && ch <= 57
73
+ }
74
+
75
+ const jsx = new ExternalTokenizer((input, stack) => {
76
+ if (input.next != lt$1 || !stack.dialectEnabled(Dialect_jsx)) return
77
+ input.advance();
78
+ if (input.next == slash$1) return
79
+ // Scan for an identifier followed by a comma or 'extends', don't
80
+ // treat this as a start tag if present.
81
+ let back = 0;
82
+ while (space$1.indexOf(input.next) > -1) { input.advance(); back++; }
83
+ if (identifierChar$1(input.next, true)) {
84
+ input.advance();
85
+ back++;
86
+ while (identifierChar$1(input.next, false)) { input.advance(); back++; }
87
+ while (space$1.indexOf(input.next) > -1) { input.advance(); back++; }
88
+ if (input.next == comma$1) return
89
+ for (let i = 0;; i++) {
90
+ if (i == 7) {
91
+ if (!identifierChar$1(input.next, true)) return
92
+ break
93
+ }
94
+ if (input.next != "extends".charCodeAt(i)) break
95
+ input.advance();
96
+ back++;
97
+ }
98
+ }
99
+ input.acceptToken(JSXStartTag, -back);
100
+ });
101
+
102
+ ////////////////////////////////////////////
103
+
104
+ const jsHighlight = styleTags({
105
+ "get set async static": tags.modifier,
106
+ "for while do if else switch try catch finally return throw break continue default case": tags.controlKeyword,
107
+ "in of await yield void typeof delete instanceof": tags.operatorKeyword,
108
+ "let var const using function class extends": tags.definitionKeyword,
109
+ "pragma import export from": tags.moduleKeyword,
110
+ "with debugger as new": tags.keyword,
111
+ TemplateString: tags.special(tags.string),
112
+ super: tags.atom,
113
+ BooleanLiteral: tags.bool,
114
+ this: tags.self,
115
+ null: tags.null,
116
+ Star: tags.modifier,
117
+ VariableName: tags.variableName,
118
+ "CallExpression/VariableName TaggedTemplateExpression/VariableName": tags.function(tags.variableName),
119
+ VariableDefinition: tags.definition(tags.variableName),
120
+ Label: tags.labelName,
121
+ PropertyName: tags.propertyName,
122
+ PrivatePropertyName: tags.special(tags.propertyName),
123
+ "CallExpression/MemberExpression/PropertyName": tags.function(tags.propertyName),
124
+ "FunctionDeclaration/VariableDefinition": tags.function(tags.definition(tags.variableName)),
125
+ "ClassDeclaration/VariableDefinition": tags.definition(tags.className),
126
+ "NewExpression/VariableName": tags.className,
127
+ PropertyDefinition: tags.definition(tags.propertyName),
128
+ PrivatePropertyDefinition: tags.definition(tags.special(tags.propertyName)),
129
+ UpdateOp: tags.updateOperator,
130
+ "LineComment Hashbang": tags.lineComment,
131
+ BlockComment: tags.blockComment,
132
+ Number: tags.number,
133
+ String: tags.string,
134
+ Escape: tags.escape,
135
+ ArithOp: tags.arithmeticOperator,
136
+ LogicOp: tags.logicOperator,
137
+ BitOp: tags.bitwiseOperator,
138
+ CompareOp: tags.compareOperator,
139
+ RegExp: tags.regexp,
140
+ Equals: tags.definitionOperator,
141
+ Arrow: tags.function(tags.punctuation),
142
+ ": Spread": tags.punctuation,
143
+ "( )": tags.paren,
144
+ "[ ]": tags.squareBracket,
145
+ "{ }": tags.brace,
146
+ "InterpolationStart InterpolationEnd": tags.special(tags.brace),
147
+ ".": tags.derefOperator,
148
+ ", ;": tags.separator,
149
+ "@": tags.meta,
150
+ ClassPath: tags.labelName,
151
+
152
+ TypeName: tags.typeName,
153
+ TypeDefinition: tags.definition(tags.typeName),
154
+ "type enum interface implements namespace module declare": tags.definitionKeyword,
155
+ "abstract global Privacy readonly override": tags.modifier,
156
+ "is keyof unique infer asserts": tags.operatorKeyword,
157
+
158
+ JSXAttributeValue: tags.attributeValue,
159
+ JSXText: tags.content,
160
+ "JSXStartTag JSXStartCloseTag JSXSelfCloseEndTag JSXEndTag": tags.angleBracket,
161
+ "JSXIdentifier JSXNameSpacedName": tags.tagName,
162
+ "JSXAttribute/JSXIdentifier JSXAttribute/JSXNameSpacedName": tags.attributeName,
163
+ "JSXBuiltin/JSXIdentifier": tags.standard(tags.tagName)
164
+ });
165
+
166
+ const space = [9, 10, 11, 12, 13, 32, 133, 160, 5760, 8192, 8193, 8194, 8195, 8196, 8197, 8198, 8199, 8200,
167
+ 8201, 8202, 8232, 8233, 8239, 8287, 12288];
168
+
169
+ const braceR = 125, semicolon = 59, slash = 47, star = 42, plus = 43, minus = 45, lt = 60, comma = 44,
170
+ question = 63, dot = 46, bracketL = 91;
171
+
172
+ new ContextTracker({
173
+ start: false,
174
+ shift(context, term) {
175
+ return term == LineComment || term == BlockComment || term == spaces ? context : term == newline
176
+ },
177
+ strict: false
178
+ });
179
+
180
+ new ExternalTokenizer((input, stack) => {
181
+ let {next} = input;
182
+ if (next == braceR || next == -1 || stack.context)
183
+ input.acceptToken(insertSemi);
184
+ }, {contextual: true, fallback: true});
185
+
186
+ new ExternalTokenizer((input, stack) => {
187
+ let {next} = input, after;
188
+ if (space.indexOf(next) > -1) return
189
+ if (next == slash && ((after = input.peek(1)) == slash || after == star)) return
190
+ if (next != braceR && next != semicolon && next != -1 && !stack.context)
191
+ input.acceptToken(noSemi);
192
+ }, {contextual: true});
193
+
194
+ new ExternalTokenizer((input, stack) => {
195
+ if (input.next == bracketL && !stack.context) input.acceptToken(noSemiType);
196
+ }, {contextual: true});
197
+
198
+ new ExternalTokenizer((input, stack) => {
199
+ let {next} = input;
200
+ if (next == plus || next == minus) {
201
+ input.advance();
202
+ if (next == input.next) {
203
+ input.advance();
204
+ let mayPostfix = !stack.context && stack.canShift(incdec);
205
+ input.acceptToken(mayPostfix ? incdec : incdecPrefix);
206
+ }
207
+ } else if (next == question && input.peek(1) == dot) {
208
+ input.advance(); input.advance();
209
+ if (input.next < 48 || input.next > 57) // No digit after
210
+ input.acceptToken(questionDot);
211
+ }
212
+ }, {contextual: true});
213
+
214
+ function identifierChar(ch, start) {
215
+ return ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122 || ch == 95 || ch >= 192 ||
216
+ !start && ch >= 48 && ch <= 57
217
+ }
218
+
219
+ new ExternalTokenizer((input, stack) => {
220
+ if (input.next != lt || !stack.dialectEnabled(Dialect_jsx)) return
221
+ input.advance();
222
+ if (input.next == slash) return
223
+ // Scan for an identifier followed by a comma or 'extends', don't
224
+ // treat this as a start tag if present.
225
+ let back = 0;
226
+ while (space.indexOf(input.next) > -1) { input.advance(); back++; }
227
+ if (identifierChar(input.next, true)) {
228
+ input.advance();
229
+ back++;
230
+ while (identifierChar(input.next, false)) { input.advance(); back++; }
231
+ while (space.indexOf(input.next) > -1) { input.advance(); back++; }
232
+ if (input.next == comma) return
233
+ for (let i = 0;; i++) {
234
+ if (i == 7) {
235
+ if (!identifierChar(input.next, true)) return
236
+ break
237
+ }
238
+ if (input.next != "extends".charCodeAt(i)) break
239
+ input.advance();
240
+ back++;
241
+ }
242
+ }
243
+ input.acceptToken(JSXStartTag, -back);
244
+ });
245
+ syntaxHighlighting(
246
+ HighlightStyle.define(
247
+ [
248
+ { tag: tags.name, color: "#a8a8a8" },
249
+ { tag: tags.propertyName, color: "#966a6a" },
250
+ { tag: tags.comment, color: "#4b4949" },
251
+ { tag: tags.atom, color: "#a25496" },
252
+
253
+ { tag: tags.literal, color: "#7b87b8" },
254
+ { tag: tags.unit, color: "#7b87b8" },
255
+ { tag: tags.null, color: "#7b87b8" },
256
+
257
+ { tag: tags.keyword, color: "#585858" },
258
+ { tag: tags.punctuation, color: "#585858" },
259
+ { tag: tags.derefOperator, color: "#585858" },
260
+ { tag: tags.special(tags.brace), fontWeight: 700 },
261
+
262
+ { tag: tags.operator, color: "white" },
263
+ { tag: tags.self, color: "white" },
264
+ { tag: tags.function(tags.punctuation), color: "white" },
265
+ { tag: tags.special(tags.logicOperator), color: "white", fontWeight: "bold" },
266
+ { tag: tags.moduleKeyword, color: "white", fontWeight: "bold" },
267
+ { tag: tags.controlKeyword, color: "white", fontWeight: "bold" },
268
+ { tag: tags.controlOperator, color: "white", fontWeight: "bold" },
269
+ ],
270
+ { all: { color: "#585858" } }
271
+ )
272
+ );
4
273
 
5
274
  // This file was generated by lezer-generator. You probably shouldn't edit it.
6
275
  const spec_identifier = {__proto__:null,export:18, as:23, from:31, default:34, async:39, function:40, const:50, extends:54, this:58, true:66, false:66, null:78, void:82, typeof:86, super:102, new:136, delete:148, yield:157, await:161, class:166, public:223, private:223, protected:223, readonly:225, instanceof:246, satisfies:249, in:250, import:284, keyof:341, unique:345, infer:351, asserts:387, is:389, abstract:409, implements:411, type:413, let:416, var:418, using:421, interface:427, enum:431, namespace:437, module:439, declare:443, global:447, pragma:466, static:468, for:478, of:487, while:490, with:494, do:498, if:502, else:504, switch:508, case:514, try:520, catch:524, finally:528, return:532, throw:536, break:540, continue:544, debugger:548};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "jexl-lezer",
3
3
  "description": "lezer-based Apache JEXL",
4
- "version": "0.2.0",
4
+ "version": "0.4.0",
5
5
  "type": "module",
6
6
  "exports": {
7
7
  "import": "./dist/index.js",
package/rollup.config.js CHANGED
@@ -1,7 +1,7 @@
1
- import {nodeResolve} from "@rollup/plugin-node-resolve"
1
+ import {lezer} from "@lezer/generator/rollup"
2
2
 
3
3
  export default {
4
- input: "./src/parser.js",
4
+ input: "./src/jexl.grammar",
5
5
  output: [{
6
6
  format: "cjs",
7
7
  file: "./dist/index.cjs"
@@ -9,8 +9,8 @@ export default {
9
9
  format: "es",
10
10
  file: "./dist/index.js"
11
11
  }],
12
- external(id) { return !/^[\.\/]/.test(id) },
12
+ external: ["@lezer/lr", "@lezer/highlight"],
13
13
  plugins: [
14
- nodeResolve()
14
+ lezer()
15
15
  ]
16
16
  }