@plurnk/plurnk-parser 1.18.0 → 1.19.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.
Files changed (37) hide show
  1. package/README.md +1 -2
  2. package/SPEC.md +2 -10
  3. package/dist/AstBuilder.d.ts +5 -1
  4. package/dist/AstBuilder.d.ts.map +1 -1
  5. package/dist/AstBuilder.js +74 -44
  6. package/dist/AstBuilder.js.map +1 -1
  7. package/dist/HeadingTokens.d.ts +6 -0
  8. package/dist/HeadingTokens.d.ts.map +1 -0
  9. package/dist/HeadingTokens.js +60 -0
  10. package/dist/HeadingTokens.js.map +1 -0
  11. package/dist/NativeToolCalls.d.ts +6 -0
  12. package/dist/NativeToolCalls.d.ts.map +1 -0
  13. package/dist/NativeToolCalls.js +153 -0
  14. package/dist/NativeToolCalls.js.map +1 -0
  15. package/dist/PlurnkErrorStrategy.d.ts.map +1 -1
  16. package/dist/PlurnkErrorStrategy.js +10 -33
  17. package/dist/PlurnkErrorStrategy.js.map +1 -1
  18. package/dist/PlurnkParser.d.ts +4 -2
  19. package/dist/PlurnkParser.d.ts.map +1 -1
  20. package/dist/PlurnkParser.js +132 -29
  21. package/dist/PlurnkParser.js.map +1 -1
  22. package/dist/RecordingListener.d.ts.map +1 -1
  23. package/dist/RecordingListener.js +5 -23
  24. package/dist/RecordingListener.js.map +1 -1
  25. package/dist/generated/plurnkLexer.d.ts +70 -34
  26. package/dist/generated/plurnkLexer.d.ts.map +1 -1
  27. package/dist/generated/plurnkLexer.js +817 -437
  28. package/dist/generated/plurnkLexer.js.map +1 -1
  29. package/dist/generated/plurnkParser.d.ts +81 -84
  30. package/dist/generated/plurnkParser.d.ts.map +1 -1
  31. package/dist/generated/plurnkParser.js +621 -672
  32. package/dist/generated/plurnkParser.js.map +1 -1
  33. package/dist/generated/plurnkParserVisitor.d.ts +7 -14
  34. package/dist/generated/plurnkParserVisitor.d.ts.map +1 -1
  35. package/dist/generated/plurnkParserVisitor.js +6 -12
  36. package/dist/generated/plurnkParserVisitor.js.map +1 -1
  37. package/package.json +3 -3
@@ -1,4 +1,5 @@
1
1
  import * as antlr from "antlr4ng";
2
+ import { Token } from "antlr4ng";
2
3
  export class plurnkLexer extends antlr.Lexer {
3
4
  static OPEN_FIND = 1;
4
5
  static OPEN_READ = 2;
@@ -6,69 +7,76 @@ export class plurnkLexer extends antlr.Lexer {
6
7
  static OPEN_COPY = 4;
7
8
  static OPEN_MOVE = 5;
8
9
  static OPEN_SEND = 6;
9
- static OPEN_TASK = 7;
10
- static OPEN_EXEC = 8;
11
- static OPEN_BARE = 9;
12
- static OPEN_WORK = 10;
13
- static OPEN_FORK = 11;
14
- static OPEN_KILL = 12;
15
- static OPEN_LOOK = 13;
16
- static LPAREN = 14;
17
- static RPAREN = 15;
18
- static LBRACKET = 16;
19
- static RBRACKET = 17;
20
- static L_MARKER = 18;
21
- static BODY_OPEN = 19;
22
- static SECTION_END = 20;
23
- static TARGET_TEXT = 21;
24
- static METADATA_TEXT = 22;
25
- static BODY_TEXT = 23;
26
- static TEXT = 24;
27
- static ASIDE = 25;
28
- static OPEN = 26;
29
- static WS = 27;
30
- static SLOTS_WS = 28;
31
- static SLOTS_INLINE_CLOSER = 29;
32
- static TARGET_BACKSLASH = 30;
33
- static TARGET_TICK = 31;
34
- static METADATA_QUOTE = 32;
35
- static B_CR = 33;
36
- static SLOTS = 1;
37
- static TARGET = 2;
38
- static METADATA = 3;
39
- static BODY = 4;
10
+ static OPEN_NOTE = 7;
11
+ static OPEN_WAIT = 8;
12
+ static OPEN_EXEC = 9;
13
+ static OPEN_BARE = 10;
14
+ static OPEN_WORK = 11;
15
+ static OPEN_FORK = 12;
16
+ static OPEN_KILL = 13;
17
+ static OPEN_LOOK = 14;
18
+ static LPAREN = 15;
19
+ static RPAREN = 16;
20
+ static LBRACKET = 17;
21
+ static RBRACKET = 18;
22
+ static L_MARKER = 19;
23
+ static BODY_OPEN = 20;
24
+ static SECTION_END = 21;
25
+ static TARGET_TEXT = 22;
26
+ static METADATA_TEXT = 23;
27
+ static BODY_TEXT = 24;
28
+ static TEXT = 25;
29
+ static ASIDE = 26;
30
+ static OPEN = 27;
31
+ static WS = 28;
32
+ static SLOTS_WS = 29;
33
+ static SLOTS_INVISIBLE = 30;
34
+ static SLOTS_WAIT_SCOPE = 31;
35
+ static SLOTS_INLINE_CLOSER = 32;
36
+ static TARGET_BACKSLASH = 33;
37
+ static TARGET_TICK = 34;
38
+ static METADATA_QUOTE = 35;
39
+ static B_CR = 36;
40
+ static QUOTATION = 1;
41
+ static SLOTS = 2;
42
+ static TARGET = 3;
43
+ static METADATA = 4;
44
+ static BODY = 5;
40
45
  static channelNames = [
41
46
  "DEFAULT_TOKEN_CHANNEL", "HIDDEN"
42
47
  ];
43
48
  static literalNames = [
44
49
  null, null, null, null, null, null, null, null, null, null, null,
45
50
  null, null, null, null, null, null, null, null, null, null, null,
46
- null, null, null, null, null, null, null, null, "'\\'", null, "'\"'",
47
- "'\\r'"
51
+ null, null, null, null, null, null, null, null, null, null, null,
52
+ "'\\'", null, "'\"'", "'\\r'"
48
53
  ];
49
54
  static symbolicNames = [
50
55
  null, "OPEN_FIND", "OPEN_READ", "OPEN_EDIT", "OPEN_COPY", "OPEN_MOVE",
51
- "OPEN_SEND", "OPEN_TASK", "OPEN_EXEC", "OPEN_BARE", "OPEN_WORK",
52
- "OPEN_FORK", "OPEN_KILL", "OPEN_LOOK", "LPAREN", "RPAREN", "LBRACKET",
53
- "RBRACKET", "L_MARKER", "BODY_OPEN", "SECTION_END", "TARGET_TEXT",
54
- "METADATA_TEXT", "BODY_TEXT", "TEXT", "ASIDE", "OPEN", "WS", "SLOTS_WS",
55
- "SLOTS_INLINE_CLOSER", "TARGET_BACKSLASH", "TARGET_TICK", "METADATA_QUOTE",
56
- "B_CR"
56
+ "OPEN_SEND", "OPEN_NOTE", "OPEN_WAIT", "OPEN_EXEC", "OPEN_BARE",
57
+ "OPEN_WORK", "OPEN_FORK", "OPEN_KILL", "OPEN_LOOK", "LPAREN", "RPAREN",
58
+ "LBRACKET", "RBRACKET", "L_MARKER", "BODY_OPEN", "SECTION_END",
59
+ "TARGET_TEXT", "METADATA_TEXT", "BODY_TEXT", "TEXT", "ASIDE", "OPEN",
60
+ "WS", "SLOTS_WS", "SLOTS_INVISIBLE", "SLOTS_WAIT_SCOPE", "SLOTS_INLINE_CLOSER",
61
+ "TARGET_BACKSLASH", "TARGET_TICK", "METADATA_QUOTE", "B_CR"
57
62
  ];
58
63
  static modeNames = [
59
- "DEFAULT_MODE", "SLOTS", "TARGET", "METADATA", "BODY",
64
+ "DEFAULT_MODE", "QUOTATION", "SLOTS", "TARGET", "METADATA", "BODY",
60
65
  ];
61
66
  static ruleNames = [
62
- "FENCE", "NAME", "NUM", "L_PATTERN", "LINE_ANCHOR", "DIGIT_ANCHOR",
63
- "TEXT_COORD", "TEXT_L_PATTERN", "COMBINED_LINE_COORD", "COMBINED_TEXT_COORD",
64
- "COMBINED_TEXT_L_PATTERN", "EOL", "OPEN", "UNKNOWN_TAG", "WS", "THINK_BLOCK",
65
- "CHANNEL_BLOCK", "TEXT_RUN", "TEXT_TICK", "SLOTS_NEXT_OPENER", "SLOTS_WS",
66
- "SLOTS_LPAREN", "SLOTS_LBRACKET", "SLOTS_TEXT_L", "SLOTS_L", "SLOTS_COMBINED_TEXT_L",
67
- "SLOTS_ASIDE", "SLOTS_ASIDE_OPEN", "SLOTS_INLINE_CLOSER", "SLOTS_END",
68
- "SLOTS_INLINE_BODY", "SLOTS_CLOSED_EOL", "SLOTS_NEXT_HEADING", "SLOTS_BODY_OPEN",
69
- "TARGET_FENCE", "TARGET_BODY_OPEN", "TARGET_ESCAPE", "TARGET_INNER",
70
- "TARGET_BACKSLASH", "TARGET_NEST_OPEN", "TARGET_NEST_END", "TARGET_TEXT_SCOPE",
71
- "TARGET_SCOPE", "TARGET_TICK", "TARGET_END", "METADATA_FENCE", "METADATA_BODY_OPEN",
67
+ "FENCE", "OPENER_FENCE", "NAME", "NUM", "L_PATTERN", "LINE_ANCHOR",
68
+ "DIGIT_ANCHOR", "ANCHOR_OFFSET", "RELATIVE_COORD", "TEXT_COORD",
69
+ "TEXT_L_PATTERN", "COMBINED_LINE_COORD", "COMBINED_TEXT_COORD",
70
+ "COMBINED_TEXT_L_PATTERN", "EOL", "OPEN", "ORPHAN_CLOSER", "INLINE_TAG",
71
+ "QUOTE", "WS", "TEXT_RUN", "TEXT_TICK", "Q_END", "Q_EMPTY_END",
72
+ "Q_RUN", "Q_CHAR", "SLOTS_NEXT_OPENER", "SLOTS_WS", "SLOTS_INVISIBLE",
73
+ "SLOTS_LPAREN", "SLOTS_LBRACKET", "SLOTS_WAIT_SCOPE", "SLOTS_TEXT_L",
74
+ "SLOTS_L", "SLOTS_COMBINED_TEXT_L", "SLOTS_ASIDE", "SLOTS_ASIDE_OPEN",
75
+ "SLOTS_INLINE_CLOSER", "SLOTS_END", "SLOTS_INLINE_BODY", "SLOTS_TICK_TEXT",
76
+ "SLOTS_CLOSED_EOL", "SLOTS_NEXT_HEADING", "SLOTS_BODY_OPEN", "TARGET_FENCE",
77
+ "TARGET_BODY_OPEN", "TARGET_ESCAPE", "TARGET_INNER", "TARGET_BACKSLASH",
78
+ "TARGET_NEST_OPEN", "TARGET_NEST_END", "TARGET_TEXT_SCOPE", "TARGET_SCOPE",
79
+ "TARGET_TICK", "TARGET_END", "METADATA_FENCE", "METADATA_BODY_OPEN",
72
80
  "METADATA_STRING", "METADATA_INNER", "METADATA_TICK", "METADATA_QUOTE",
73
81
  "METADATA_NEST_OPEN", "METADATA_NEST_END", "METADATA_END", "B_END",
74
82
  "B_EMPTY_END", "B_CLOSED_EOL", "B_NEXT_HEADING", "B_RUN", "B_TICK",
@@ -81,7 +89,13 @@ export class plurnkLexer extends antlr.Lexer {
81
89
  openHeadingLine = 0;
82
90
  openHeadingColumn = 0;
83
91
  fenceLength = 0;
92
+ fenceCharacter = 0x60;
84
93
  fenceDelimiter = "";
94
+ openFenceStart = 0;
95
+ balancedEnds = new Map();
96
+ fenceLines = null;
97
+ // {§reasoning-notes} — quotations are opaque; program-boundary recovery is not note extraction.
98
+ reasoning = false;
85
99
  started = false;
86
100
  // {§inline-chain} — a closer on the heading line may be followed by the next opener on the same line.
87
101
  inlineChain = false;
@@ -98,7 +112,7 @@ export class plurnkLexer extends antlr.Lexer {
98
112
  ticks++;
99
113
  cursor++;
100
114
  }
101
- if (ticks < 3)
115
+ if (ticks < 4)
102
116
  return false;
103
117
  while (this.inputStream.LA(cursor) >= 0x30 && this.inputStream.LA(cursor) <= 0x39)
104
118
  cursor++;
@@ -153,13 +167,55 @@ export class plurnkLexer extends antlr.Lexer {
153
167
  inlineBody = false;
154
168
  inlineBodies = [];
155
169
  unknownTags = [];
170
+ quotedSpans = [];
171
+ quoteStart = -1;
156
172
  // {§interstitial-fence} - only a native operation or a known executor opens a block.
157
173
  knownHeading() {
158
174
  const name = this.text.replace(/^\x60+[0-9]*/, "");
175
+ if (this.reasoning)
176
+ return name === "NOTE";
159
177
  return Object.hasOwn(plurnkLexer.OPERATIONS, name) || this.knownExecutor(name);
160
178
  }
161
- noteUnknownTag() {
162
- this.unknownTags.push({ line: this.currentTokenStartLine, column: this.currentTokenColumn, tag: this.text.replace(/^\x60+[0-9]*/, "") });
179
+ // {§quotation} - a fence that opened no operation quotes. Its tag is worth a word only when it
180
+ // looks like a missed operation: a known name under four backticks or off column zero, or an
181
+ // unknown name at operation width. Ordinary code blocks draw nothing; reasoning quotes freely.
182
+ quote() {
183
+ this.quoteStart = this.tokenStartCharIndex;
184
+ this.open();
185
+ this.noteTag();
186
+ }
187
+ noteTag() {
188
+ if (this.reasoning || this.text.charCodeAt(0) !== 0x60)
189
+ return;
190
+ const tag = this.text.replace(/^\x60+[0-9]*/, "");
191
+ if (tag === "")
192
+ return;
193
+ let width = 0;
194
+ while (this.text.charCodeAt(width) === 0x60)
195
+ width++;
196
+ const short = width < 4;
197
+ const known = Object.hasOwn(plurnkLexer.OPERATIONS, tag) || this.knownExecutor(tag);
198
+ if (short && !known)
199
+ return;
200
+ // A markdown wrapper is a polite envelope, not a missed operation ({§quotation}).
201
+ if (!known && (tag === "markdown" || tag === "md"))
202
+ return;
203
+ const reason = !known ? "unknown" : short ? "short" : "indented";
204
+ this.unknownTags.push({ line: this.currentTokenStartLine, column: this.currentTokenColumn, tag, reason });
205
+ }
206
+ endQuote() {
207
+ if (this.quoteStart >= 0)
208
+ this.quotedSpans.push({ start: this.quoteStart, end: this.inputStream.index });
209
+ this.quoteStart = -1;
210
+ }
211
+ // The quoted character spans, the last one running to the end of the input when unclosed.
212
+ takeQuotedSpans(length) {
213
+ if (this.quoteStart >= 0)
214
+ this.quotedSpans.push({ start: this.quoteStart, end: length });
215
+ this.quoteStart = -1;
216
+ const taken = this.quotedSpans;
217
+ this.quotedSpans = [];
218
+ return taken;
163
219
  }
164
220
  takeUnknownTags() {
165
221
  const taken = this.unknownTags;
@@ -170,13 +226,14 @@ export class plurnkLexer extends antlr.Lexer {
170
226
  FIND: plurnkLexer.OPEN_FIND, READ: plurnkLexer.OPEN_READ,
171
227
  EDIT: plurnkLexer.OPEN_EDIT, COPY: plurnkLexer.OPEN_COPY, MOVE: plurnkLexer.OPEN_MOVE,
172
228
  SEND: plurnkLexer.OPEN_SEND, BARE: plurnkLexer.OPEN_BARE,
173
- TASK: plurnkLexer.OPEN_TASK,
229
+ NOTE: plurnkLexer.OPEN_NOTE, WAIT: plurnkLexer.OPEN_WAIT,
174
230
  WORK: plurnkLexer.OPEN_WORK, FORK: plurnkLexer.OPEN_FORK, KILL: plurnkLexer.OPEN_KILL,
175
231
  LOOK: plurnkLexer.OPEN_LOOK,
176
232
  };
177
233
  open(implicitName) {
178
234
  this.fenceLength = 0;
179
- while (this.text.charCodeAt(this.fenceLength) === 0x60)
235
+ this.fenceCharacter = this.text.charCodeAt(0);
236
+ while (this.text.charCodeAt(this.fenceLength) === this.fenceCharacter)
180
237
  this.fenceLength++;
181
238
  // {§numeric-delimiter} - digits between the backticks and the name identify the block.
182
239
  let digits = this.fenceLength;
@@ -191,14 +248,59 @@ export class plurnkLexer extends antlr.Lexer {
191
248
  this.inlineChain = false;
192
249
  this.inlineCloserSeen = false;
193
250
  this.openHeading = this.text;
251
+ this.openFenceStart = this.tokenStartCharIndex;
194
252
  this.openHeadingLine = this.currentTokenStartLine;
195
253
  this.openHeadingColumn = this.currentTokenColumn;
196
254
  this.started = true;
197
255
  this.slotReady = true;
198
- // {§one-line-turn} - TASK takes its inventory as a heading-line block; a bracket there is a slot.
199
- this.metadataReady = this.execFence || this.openOp === "TASK";
256
+ this.metadataReady = this.execFence || this.openOp === "SEND" || this.openOp === "WAIT";
200
257
  this.inlineBody = false;
201
258
  }
259
+ // {§quotation} - the line above this one carries a fence run of three or more backticks anywhere
260
+ // (a heading, a closer, or a heading written mid-line that opened nothing).
261
+ previousLineIsFence() {
262
+ let back = 1;
263
+ while (this.inputStream.LA(-back) === 0x20 || this.inputStream.LA(-back) === 0x09)
264
+ back++;
265
+ if (this.inputStream.LA(-back) !== 0x0A)
266
+ return false;
267
+ back++;
268
+ if (this.inputStream.LA(-back) === 0x0D)
269
+ back++;
270
+ let run = 0;
271
+ for (let c = this.inputStream.LA(-back); c > 0 && c !== 0x0A; c = this.inputStream.LA(-(++back))) {
272
+ run = c === 0x60 ? run + 1 : 0;
273
+ if (run >= 3)
274
+ return true;
275
+ }
276
+ return false;
277
+ }
278
+ // {§quotation} CommonMark: a backtick fence's info string cannot contain a backtick, so a line
279
+ // like ```KILL (x)``` is inline code, not an opener, and quotes nothing after it.
280
+ fenceOpens() {
281
+ let cursor = 1;
282
+ while (this.inputStream.LA(cursor) === 0x20 || this.inputStream.LA(cursor) === 0x09)
283
+ cursor++;
284
+ if (this.inputStream.LA(cursor) !== 0x60)
285
+ return true;
286
+ while (this.inputStream.LA(cursor) === 0x60)
287
+ cursor++;
288
+ for (let c = this.inputStream.LA(cursor); c > 0 && c !== 0x0A && c !== 0x0D; c = this.inputStream.LA(++cursor)) {
289
+ if (c === 0x60)
290
+ return false;
291
+ }
292
+ return true;
293
+ }
294
+ // The orphaned closer is a whole line: nothing but the fence follows it.
295
+ orphanAtLineEnd() {
296
+ const c = this.inputStream.LA(1);
297
+ return c <= 0 || c === 0x0A || c === 0x0D;
298
+ }
299
+ // {§quotation} - an operation's backticks follow a newline directly, or begin the input.
300
+ atColumnZero() {
301
+ const c = this.inputStream.LA(-1);
302
+ return c <= 0 || c === 0x0A || c === 0x0D;
303
+ }
202
304
  // {§indented-fences} - a fence line may carry leading horizontal whitespace; the line still
203
305
  // starts there for every fence purpose (CommonMark allows three spaces; this allows any).
204
306
  atLineStart() {
@@ -220,15 +322,100 @@ export class plurnkLexer extends antlr.Lexer {
220
322
  return offset + 2;
221
323
  return this.inputStream.LA(offset) === 0x0A ? offset + 1 : null;
222
324
  }
325
+ // {§balanced-fences} — retain complete nested blocks before trying local missing-closer
326
+ // recovery. Cache descendants as well as the root so an unclosed prefix is scanned once.
327
+ balancedEnd() {
328
+ if (this.fenceDelimiter !== "")
329
+ return null;
330
+ if (this.balancedEnds.has(this.openFenceStart))
331
+ return this.balancedEnds.get(this.openFenceStart);
332
+ if (this.fenceLines === null) {
333
+ let start = 0;
334
+ this.fenceLines = this.inputStream.toString().split("\n").map((line) => {
335
+ const match = /^([ \t]*)(\x60{3,}|~{3,})([0-9]*)(.*?)[ \t\r]*$/u.exec(line);
336
+ const fence = match === null ? null : {
337
+ start: start + match[1].length,
338
+ width: match[2].length,
339
+ character: match[2].charCodeAt(0),
340
+ delimiter: match[3],
341
+ tail: match[4],
342
+ };
343
+ // ANTLR indexes Unicode code points, not JavaScript UTF-16 units.
344
+ start += [...line].length + 1;
345
+ return fence;
346
+ });
347
+ }
348
+ const stack = [{ start: this.openFenceStart, width: this.fenceLength, delimiter: this.fenceDelimiter, character: this.fenceCharacter }];
349
+ for (let index = this.openHeadingLine; index < this.fenceLines.length; index++) {
350
+ const fence = this.fenceLines[index];
351
+ if (fence === null)
352
+ continue;
353
+ const top = stack[stack.length - 1];
354
+ const continuation = this.continuedFence(fence);
355
+ if ((fence.tail === "" || continuation !== null) && fence.character === top.character && fence.width >= top.width && fence.delimiter === top.delimiter) {
356
+ stack.pop();
357
+ this.balancedEnds.set(top.start, fence.start);
358
+ if (stack.length === 0)
359
+ return fence.start;
360
+ if (continuation !== null) {
361
+ const nested = this.nestedFence(continuation);
362
+ if (nested !== null)
363
+ stack.push(nested);
364
+ }
365
+ continue;
366
+ }
367
+ // Numeric delimiters explicitly protect arbitrary (including unfinished) examples.
368
+ if (top.delimiter !== "" || fence.tail.trim() === "")
369
+ continue;
370
+ const nested = this.nestedFence(fence);
371
+ if (nested !== null)
372
+ stack.push(nested);
373
+ }
374
+ for (const fence of stack)
375
+ this.balancedEnds.set(fence.start, null);
376
+ return null;
377
+ }
378
+ continuedFence(fence) {
379
+ const match = /^([ \t]*)(\x60{3,})([0-9]*)([A-Za-z0-9_.+-]+)(.*)$/u.exec(fence.tail);
380
+ if (match === null || !Object.hasOwn(plurnkLexer.OPERATIONS, match[4]) && !this.knownExecutor(match[4]))
381
+ return null;
382
+ return { start: fence.start + fence.width + fence.delimiter.length + match[1].length, width: match[2].length, delimiter: match[3], character: 0x60, tail: match[4] + match[5] };
383
+ }
384
+ nestedFence(fence) {
385
+ if (!/[\x60~]{3}/u.test(fence.tail))
386
+ return fence;
387
+ const name = /^[A-Za-z0-9_.+-]+/u.exec(fence.tail)?.[0];
388
+ if (name === undefined)
389
+ return fence;
390
+ // Reuse the heading lexer: fences quoted in a target, metadata or aside are not closers.
391
+ // Literal examples need only a lexical boundary; their slot diagnostics stay opaque.
392
+ const lexer = new plurnkLexer(antlr.CharStream.fromString(String.fromCharCode(fence.character).repeat(fence.width) + fence.delimiter + fence.tail + "\n"));
393
+ lexer.knownExecutors = new Set([...this.knownExecutors, name]);
394
+ lexer.reasoning = fence.character !== 0x60;
395
+ lexer.removeErrorListeners();
396
+ let closed = false;
397
+ for (let token = lexer.nextToken(); token.type !== Token.EOF; token = lexer.nextToken()) {
398
+ if (token.type === plurnkLexer.SECTION_END && token.text?.includes("\x60"))
399
+ closed = true;
400
+ }
401
+ if (lexer.mode === plurnkLexer.DEFAULT_MODE && (closed || lexer.inlineCloserSeen))
402
+ return null;
403
+ return { start: fence.start + lexer.openFenceStart, width: lexer.fenceLength, delimiter: lexer.fenceDelimiter, character: lexer.fenceCharacter };
404
+ }
223
405
  // {§fence-closer} - a closer is a line of at least the opener's backticks carrying exactly the
224
406
  // opener's numeric delimiter (none when the opener had none). Count is CommonMark's rule; the
225
407
  // delimiter is what lets an equal-count block nest ({§numeric-delimiter}).
226
408
  closingAt(offset) {
227
- if (this.inputStream.LA(offset === 1 ? -1 : offset - 1) === 0x60)
409
+ if (this.inputStream.LA(offset === 1 ? -1 : offset - 1) === this.fenceCharacter)
228
410
  return false;
229
411
  offset = this.skipHorizontal(offset);
412
+ if ((this.mode === plurnkLexer.BODY || this.mode === plurnkLexer.QUOTATION) && !(this.inlineBody && offset === 1)) {
413
+ const end = this.balancedEnd();
414
+ if (end !== null && this.inputStream.index + offset - 1 !== end)
415
+ return false;
416
+ }
230
417
  let cursor = offset;
231
- while (this.inputStream.LA(cursor) === 0x60)
418
+ while (this.inputStream.LA(cursor) === this.fenceCharacter)
232
419
  cursor++;
233
420
  if (cursor - offset < this.fenceLength)
234
421
  return false;
@@ -243,11 +430,17 @@ export class plurnkLexer extends antlr.Lexer {
243
430
  cursor++;
244
431
  if (this.inputStream.LA(cursor) <= 0 || this.offsetAfterEol(cursor) !== null)
245
432
  return true;
433
+ if (this.reasoning)
434
+ return false;
435
+ // {§closer-aside} — a closer followed on its line by one aside and nothing else still closes;
436
+ // read as body, that line would be written into the edited resource (#758, dogfood item 17).
437
+ if (this.asideToLineEnd(cursor))
438
+ return true;
246
439
  // {§inline-chain} — a closer followed on its line by the next opener still closes.
247
440
  let ticks = 0;
248
441
  while (this.inputStream.LA(cursor + ticks) === 0x60)
249
442
  ticks++;
250
- if (ticks < 3)
443
+ if (ticks < 4)
251
444
  return false;
252
445
  let at = cursor + ticks;
253
446
  while (this.inputStream.LA(at) >= 0x30 && this.inputStream.LA(at) <= 0x39)
@@ -265,11 +458,11 @@ export class plurnkLexer extends antlr.Lexer {
265
458
  }
266
459
  return name !== "" && (Object.hasOwn(plurnkLexer.OPERATIONS, name) || this.knownExecutor(name));
267
460
  }
268
- // {§fence-heading-in-body} - a fence line of four or more backticks naming an operation or a known
269
- // executor is a heading wherever it stands: it ends the open block without closing it, so a
270
- // glued opener (eight backticks then READ) can never swallow the turn. A delimited block is exempt: its
271
- // delimiter says everything up to its own closer is body ({§numeric-delimiter}).
461
+ // {§fence-heading-in-body} a known heading recovers an unclosed block only after
462
+ // {§balanced-fences} has ruled out complete nesting. Explicit delimiters remain opaque.
272
463
  headingAt(offset) {
464
+ if (this.reasoning)
465
+ return false;
273
466
  let cursor = offset;
274
467
  while (this.inputStream.LA(cursor) === 0x60)
275
468
  cursor++;
@@ -298,7 +491,26 @@ export class plurnkLexer extends antlr.Lexer {
298
491
  }
299
492
  headingAfterEol() {
300
493
  const after = this.offsetAfterEol(1);
301
- return after !== null && this.headingAt(this.skipHorizontal(after));
494
+ return after !== null && this.balancedEnd() === null && this.headingAt(this.skipHorizontal(after));
495
+ }
496
+ // `<!-- … -->` at this offset, then only horizontal whitespace to the end of the line or input.
497
+ asideToLineEnd(at) {
498
+ const open = [0x3C, 0x21, 0x2D, 0x2D];
499
+ if (!open.every((code, index) => this.inputStream.LA(at + index) === code))
500
+ return false;
501
+ let cursor = at + open.length;
502
+ for (;;) {
503
+ const c = this.inputStream.LA(cursor);
504
+ if (c <= 0 || c === 0x0A || c === 0x0D)
505
+ return false;
506
+ if (c === 0x2D && this.inputStream.LA(cursor + 1) === 0x2D && this.inputStream.LA(cursor + 2) === 0x3E)
507
+ break;
508
+ cursor++;
509
+ }
510
+ cursor += 3;
511
+ while (this.inputStream.LA(cursor) === 0x20 || this.inputStream.LA(cursor) === 0x09)
512
+ cursor++;
513
+ return this.inputStream.LA(cursor) <= 0 || this.offsetAfterEol(cursor) !== null;
302
514
  }
303
515
  closingAfterEol() {
304
516
  const after = this.offsetAfterEol(1);
@@ -337,7 +549,7 @@ export class plurnkLexer extends antlr.Lexer {
337
549
  let ticks = 0;
338
550
  while (this.inputStream.LA(at + ticks) === 0x60)
339
551
  ticks++;
340
- if (ticks < 3)
552
+ if (ticks < 4)
341
553
  return false;
342
554
  let cursor = at + ticks;
343
555
  while (this.inputStream.LA(cursor) >= 0x30 && this.inputStream.LA(cursor) <= 0x39)
@@ -366,7 +578,7 @@ export class plurnkLexer extends antlr.Lexer {
366
578
  this.inlineBody = true;
367
579
  // {§naked-pattern} - a sigil is a matcher on any heading, and every heading-line word on FIND,
368
580
  // READ or KILL is one, so only a bodied operation's stray heading text is worth an advisory.
369
- const first = this.text.charCodeAt(0);
581
+ const first = this.text.charCodeAt(0) === 0x60 ? this.inputStream.LA(1) : this.text.charCodeAt(0);
370
582
  if (first === 0x2F || first === 0x24 || first === 0x7E || first === 0x26 || first === 0x5E)
371
583
  return;
372
584
  if (this.openOp === "FIND" || this.openOp === "READ" || this.openOp === "KILL")
@@ -402,76 +614,88 @@ export class plurnkLexer extends antlr.Lexer {
402
614
  get modeNames() { return plurnkLexer.modeNames; }
403
615
  action(localContext, ruleIndex, actionIndex) {
404
616
  switch (ruleIndex) {
405
- case 12:
617
+ case 15:
406
618
  this.OPEN_action(localContext, actionIndex);
407
619
  break;
408
- case 13:
409
- this.UNKNOWN_TAG_action(localContext, actionIndex);
410
- break;
411
620
  case 17:
412
- this.TEXT_RUN_action(localContext, actionIndex);
621
+ this.INLINE_TAG_action(localContext, actionIndex);
413
622
  break;
414
623
  case 18:
624
+ this.QUOTE_action(localContext, actionIndex);
625
+ break;
626
+ case 20:
627
+ this.TEXT_RUN_action(localContext, actionIndex);
628
+ break;
629
+ case 21:
415
630
  this.TEXT_TICK_action(localContext, actionIndex);
416
631
  break;
417
- case 19:
632
+ case 22:
633
+ this.Q_END_action(localContext, actionIndex);
634
+ break;
635
+ case 23:
636
+ this.Q_EMPTY_END_action(localContext, actionIndex);
637
+ break;
638
+ case 26:
418
639
  this.SLOTS_NEXT_OPENER_action(localContext, actionIndex);
419
640
  break;
420
- case 20:
641
+ case 27:
421
642
  this.SLOTS_WS_action(localContext, actionIndex);
422
643
  break;
423
- case 21:
644
+ case 29:
424
645
  this.SLOTS_LPAREN_action(localContext, actionIndex);
425
646
  break;
426
- case 22:
647
+ case 30:
427
648
  this.SLOTS_LBRACKET_action(localContext, actionIndex);
428
649
  break;
429
- case 27:
650
+ case 36:
430
651
  this.SLOTS_ASIDE_OPEN_action(localContext, actionIndex);
431
652
  break;
432
- case 28:
653
+ case 37:
433
654
  this.SLOTS_INLINE_CLOSER_action(localContext, actionIndex);
434
655
  break;
435
- case 29:
656
+ case 38:
436
657
  this.SLOTS_END_action(localContext, actionIndex);
437
658
  break;
438
- case 30:
659
+ case 39:
439
660
  this.SLOTS_INLINE_BODY_action(localContext, actionIndex);
440
661
  break;
441
- case 34:
662
+ case 40:
663
+ this.SLOTS_TICK_TEXT_action(localContext, actionIndex);
664
+ break;
665
+ case 44:
442
666
  this.TARGET_FENCE_action(localContext, actionIndex);
443
667
  break;
444
- case 39:
668
+ case 49:
445
669
  this.TARGET_NEST_OPEN_action(localContext, actionIndex);
446
670
  break;
447
- case 40:
671
+ case 50:
448
672
  this.TARGET_NEST_END_action(localContext, actionIndex);
449
673
  break;
450
- case 44:
674
+ case 54:
451
675
  this.TARGET_END_action(localContext, actionIndex);
452
676
  break;
453
- case 45:
677
+ case 55:
454
678
  this.METADATA_FENCE_action(localContext, actionIndex);
455
679
  break;
456
- case 51:
680
+ case 61:
457
681
  this.METADATA_NEST_OPEN_action(localContext, actionIndex);
458
682
  break;
459
- case 52:
683
+ case 62:
460
684
  this.METADATA_NEST_END_action(localContext, actionIndex);
461
685
  break;
462
- case 53:
686
+ case 63:
463
687
  this.METADATA_END_action(localContext, actionIndex);
464
688
  break;
465
- case 54:
689
+ case 64:
466
690
  this.B_END_action(localContext, actionIndex);
467
691
  break;
468
- case 55:
692
+ case 65:
469
693
  this.B_EMPTY_END_action(localContext, actionIndex);
470
694
  break;
471
- case 60:
695
+ case 70:
472
696
  this.B_CRLF_action(localContext, actionIndex);
473
697
  break;
474
- case 61:
698
+ case 71:
475
699
  this.B_LF_action(localContext, actionIndex);
476
700
  break;
477
701
  }
@@ -483,44 +707,65 @@ export class plurnkLexer extends antlr.Lexer {
483
707
  break;
484
708
  }
485
709
  }
486
- UNKNOWN_TAG_action(localContext, actionIndex) {
710
+ INLINE_TAG_action(localContext, actionIndex) {
487
711
  switch (actionIndex) {
488
712
  case 1:
489
- this.noteUnknownTag();
713
+ this.noteTag();
490
714
  break;
491
715
  }
492
716
  }
493
- TEXT_RUN_action(localContext, actionIndex) {
717
+ QUOTE_action(localContext, actionIndex) {
494
718
  switch (actionIndex) {
495
719
  case 2:
720
+ this.quote();
721
+ break;
722
+ }
723
+ }
724
+ TEXT_RUN_action(localContext, actionIndex) {
725
+ switch (actionIndex) {
726
+ case 3:
496
727
  this.inlineChain = false;
497
728
  break;
498
729
  }
499
730
  }
500
731
  TEXT_TICK_action(localContext, actionIndex) {
501
732
  switch (actionIndex) {
502
- case 3:
733
+ case 4:
503
734
  this.inlineChain = false;
504
735
  break;
505
736
  }
506
737
  }
738
+ Q_END_action(localContext, actionIndex) {
739
+ switch (actionIndex) {
740
+ case 5:
741
+ this.endQuote();
742
+ break;
743
+ }
744
+ }
745
+ Q_EMPTY_END_action(localContext, actionIndex) {
746
+ switch (actionIndex) {
747
+ case 6:
748
+ this.endQuote();
749
+ break;
750
+ }
751
+ }
507
752
  SLOTS_NEXT_OPENER_action(localContext, actionIndex) {
508
753
  switch (actionIndex) {
509
- case 4:
754
+ case 7:
510
755
  this.inlineChain = true;
511
756
  break;
512
757
  }
513
758
  }
514
759
  SLOTS_WS_action(localContext, actionIndex) {
515
760
  switch (actionIndex) {
516
- case 5:
761
+ case 8:
517
762
  this.slotReady = true;
518
763
  break;
519
764
  }
520
765
  }
521
766
  SLOTS_LPAREN_action(localContext, actionIndex) {
522
767
  switch (actionIndex) {
523
- case 6:
768
+ case 9:
524
769
  this.targetDepth = 0;
525
770
  this.metadataReady = false;
526
771
  break;
@@ -528,63 +773,70 @@ export class plurnkLexer extends antlr.Lexer {
528
773
  }
529
774
  SLOTS_LBRACKET_action(localContext, actionIndex) {
530
775
  switch (actionIndex) {
531
- case 7:
776
+ case 10:
532
777
  this.metadataDepth = 0;
533
778
  break;
534
779
  }
535
780
  }
536
781
  SLOTS_ASIDE_OPEN_action(localContext, actionIndex) {
537
782
  switch (actionIndex) {
538
- case 8:
783
+ case 11:
539
784
  this.noteUnclosedAside();
540
785
  break;
541
786
  }
542
787
  }
543
788
  SLOTS_INLINE_CLOSER_action(localContext, actionIndex) {
544
789
  switch (actionIndex) {
545
- case 9:
790
+ case 12:
546
791
  this.inlineCloserSeen = true;
547
792
  break;
548
793
  }
549
794
  }
550
795
  SLOTS_END_action(localContext, actionIndex) {
551
796
  switch (actionIndex) {
552
- case 10:
797
+ case 13:
553
798
  this.inlineChain = this.openerFollows();
554
799
  break;
555
800
  }
556
801
  }
557
802
  SLOTS_INLINE_BODY_action(localContext, actionIndex) {
558
803
  switch (actionIndex) {
559
- case 11:
804
+ case 14:
805
+ this.noteInlineBody();
806
+ break;
807
+ }
808
+ }
809
+ SLOTS_TICK_TEXT_action(localContext, actionIndex) {
810
+ switch (actionIndex) {
811
+ case 15:
560
812
  this.noteInlineBody();
561
813
  break;
562
814
  }
563
815
  }
564
816
  TARGET_FENCE_action(localContext, actionIndex) {
565
817
  switch (actionIndex) {
566
- case 12:
818
+ case 16:
567
819
  this.inlineChain = this.openerFollows();
568
820
  break;
569
821
  }
570
822
  }
571
823
  TARGET_NEST_OPEN_action(localContext, actionIndex) {
572
824
  switch (actionIndex) {
573
- case 13:
825
+ case 17:
574
826
  this.targetDepth++;
575
827
  break;
576
828
  }
577
829
  }
578
830
  TARGET_NEST_END_action(localContext, actionIndex) {
579
831
  switch (actionIndex) {
580
- case 14:
832
+ case 18:
581
833
  this.targetDepth--;
582
834
  break;
583
835
  }
584
836
  }
585
837
  TARGET_END_action(localContext, actionIndex) {
586
838
  switch (actionIndex) {
587
- case 15:
839
+ case 19:
588
840
  this.slotReady = true;
589
841
  this.metadataReady = true;
590
842
  break;
@@ -592,28 +844,28 @@ export class plurnkLexer extends antlr.Lexer {
592
844
  }
593
845
  METADATA_FENCE_action(localContext, actionIndex) {
594
846
  switch (actionIndex) {
595
- case 16:
847
+ case 20:
596
848
  this.inlineChain = this.openerFollows();
597
849
  break;
598
850
  }
599
851
  }
600
852
  METADATA_NEST_OPEN_action(localContext, actionIndex) {
601
853
  switch (actionIndex) {
602
- case 17:
854
+ case 21:
603
855
  this.metadataDepth++;
604
856
  break;
605
857
  }
606
858
  }
607
859
  METADATA_NEST_END_action(localContext, actionIndex) {
608
860
  switch (actionIndex) {
609
- case 18:
861
+ case 22:
610
862
  this.metadataDepth--;
611
863
  break;
612
864
  }
613
865
  }
614
866
  METADATA_END_action(localContext, actionIndex) {
615
867
  switch (actionIndex) {
616
- case 19:
868
+ case 23:
617
869
  this.slotReady = true;
618
870
  this.metadataReady = true;
619
871
  break;
@@ -621,83 +873,95 @@ export class plurnkLexer extends antlr.Lexer {
621
873
  }
622
874
  B_END_action(localContext, actionIndex) {
623
875
  switch (actionIndex) {
624
- case 20:
876
+ case 24:
625
877
  this.inlineChain = this.openerFollows();
626
878
  break;
627
879
  }
628
880
  }
629
881
  B_EMPTY_END_action(localContext, actionIndex) {
630
882
  switch (actionIndex) {
631
- case 21:
883
+ case 25:
632
884
  this.inlineChain = this.openerFollows();
633
885
  break;
634
886
  }
635
887
  }
636
888
  B_CRLF_action(localContext, actionIndex) {
637
889
  switch (actionIndex) {
638
- case 22:
890
+ case 26:
639
891
  this.inlineBody = false;
640
892
  break;
641
893
  }
642
894
  }
643
895
  B_LF_action(localContext, actionIndex) {
644
896
  switch (actionIndex) {
645
- case 23:
897
+ case 27:
646
898
  this.inlineBody = false;
647
899
  break;
648
900
  }
649
901
  }
650
902
  sempred(localContext, ruleIndex, predIndex) {
651
903
  switch (ruleIndex) {
652
- case 12:
904
+ case 15:
653
905
  return this.OPEN_sempred(localContext, predIndex);
654
- case 13:
655
- return this.UNKNOWN_TAG_sempred(localContext, predIndex);
656
- case 19:
906
+ case 16:
907
+ return this.ORPHAN_CLOSER_sempred(localContext, predIndex);
908
+ case 17:
909
+ return this.INLINE_TAG_sempred(localContext, predIndex);
910
+ case 18:
911
+ return this.QUOTE_sempred(localContext, predIndex);
912
+ case 22:
913
+ return this.Q_END_sempred(localContext, predIndex);
914
+ case 23:
915
+ return this.Q_EMPTY_END_sempred(localContext, predIndex);
916
+ case 26:
657
917
  return this.SLOTS_NEXT_OPENER_sempred(localContext, predIndex);
658
- case 21:
918
+ case 29:
659
919
  return this.SLOTS_LPAREN_sempred(localContext, predIndex);
660
- case 22:
920
+ case 30:
661
921
  return this.SLOTS_LBRACKET_sempred(localContext, predIndex);
662
- case 23:
922
+ case 31:
923
+ return this.SLOTS_WAIT_SCOPE_sempred(localContext, predIndex);
924
+ case 32:
663
925
  return this.SLOTS_TEXT_L_sempred(localContext, predIndex);
664
- case 24:
926
+ case 33:
665
927
  return this.SLOTS_L_sempred(localContext, predIndex);
666
- case 25:
928
+ case 34:
667
929
  return this.SLOTS_COMBINED_TEXT_L_sempred(localContext, predIndex);
668
- case 26:
930
+ case 35:
669
931
  return this.SLOTS_ASIDE_sempred(localContext, predIndex);
670
- case 27:
932
+ case 36:
671
933
  return this.SLOTS_ASIDE_OPEN_sempred(localContext, predIndex);
672
- case 28:
934
+ case 37:
673
935
  return this.SLOTS_INLINE_CLOSER_sempred(localContext, predIndex);
674
- case 29:
936
+ case 38:
675
937
  return this.SLOTS_END_sempred(localContext, predIndex);
676
- case 30:
938
+ case 39:
677
939
  return this.SLOTS_INLINE_BODY_sempred(localContext, predIndex);
678
- case 31:
940
+ case 40:
941
+ return this.SLOTS_TICK_TEXT_sempred(localContext, predIndex);
942
+ case 41:
679
943
  return this.SLOTS_CLOSED_EOL_sempred(localContext, predIndex);
680
- case 32:
944
+ case 42:
681
945
  return this.SLOTS_NEXT_HEADING_sempred(localContext, predIndex);
682
- case 34:
946
+ case 44:
683
947
  return this.TARGET_FENCE_sempred(localContext, predIndex);
684
- case 40:
948
+ case 50:
685
949
  return this.TARGET_NEST_END_sempred(localContext, predIndex);
686
- case 41:
950
+ case 51:
687
951
  return this.TARGET_TEXT_SCOPE_sempred(localContext, predIndex);
688
- case 42:
952
+ case 52:
689
953
  return this.TARGET_SCOPE_sempred(localContext, predIndex);
690
- case 45:
954
+ case 55:
691
955
  return this.METADATA_FENCE_sempred(localContext, predIndex);
692
- case 52:
956
+ case 62:
693
957
  return this.METADATA_NEST_END_sempred(localContext, predIndex);
694
- case 54:
958
+ case 64:
695
959
  return this.B_END_sempred(localContext, predIndex);
696
- case 55:
960
+ case 65:
697
961
  return this.B_EMPTY_END_sempred(localContext, predIndex);
698
- case 56:
962
+ case 66:
699
963
  return this.B_CLOSED_EOL_sempred(localContext, predIndex);
700
- case 57:
964
+ case 67:
701
965
  return this.B_NEXT_HEADING_sempred(localContext, predIndex);
702
966
  }
703
967
  return true;
@@ -705,452 +969,568 @@ export class plurnkLexer extends antlr.Lexer {
705
969
  OPEN_sempred(localContext, predIndex) {
706
970
  switch (predIndex) {
707
971
  case 0:
708
- return this.atLineStart() || !this.started || this.inlineChain;
972
+ return this.atColumnZero() || !this.reasoning && this.inlineChain;
709
973
  case 1:
710
974
  return this.knownHeading();
711
975
  }
712
976
  return true;
713
977
  }
714
- UNKNOWN_TAG_sempred(localContext, predIndex) {
978
+ ORPHAN_CLOSER_sempred(localContext, predIndex) {
715
979
  switch (predIndex) {
716
980
  case 2:
717
- return this.atLineStart() || !this.started;
981
+ return this.atLineStart() && this.previousLineIsFence();
982
+ case 3:
983
+ return this.orphanAtLineEnd();
984
+ }
985
+ return true;
986
+ }
987
+ INLINE_TAG_sempred(localContext, predIndex) {
988
+ switch (predIndex) {
989
+ case 4:
990
+ return this.atLineStart() && !this.fenceOpens();
991
+ }
992
+ return true;
993
+ }
994
+ QUOTE_sempred(localContext, predIndex) {
995
+ switch (predIndex) {
996
+ case 5:
997
+ return this.atLineStart() && this.fenceOpens();
998
+ }
999
+ return true;
1000
+ }
1001
+ Q_END_sempred(localContext, predIndex) {
1002
+ switch (predIndex) {
1003
+ case 6:
1004
+ return this.closingAfterEol();
1005
+ }
1006
+ return true;
1007
+ }
1008
+ Q_EMPTY_END_sempred(localContext, predIndex) {
1009
+ switch (predIndex) {
1010
+ case 7:
1011
+ return this.atLineStart() && this.closingAt(1);
718
1012
  }
719
1013
  return true;
720
1014
  }
721
1015
  SLOTS_NEXT_OPENER_sempred(localContext, predIndex) {
722
1016
  switch (predIndex) {
723
- case 3:
1017
+ case 8:
724
1018
  return this.slotReady && this.openerFollows();
725
1019
  }
726
1020
  return true;
727
1021
  }
728
1022
  SLOTS_LPAREN_sempred(localContext, predIndex) {
729
1023
  switch (predIndex) {
730
- case 4:
1024
+ case 9:
731
1025
  return this.slotReady;
732
1026
  }
733
1027
  return true;
734
1028
  }
735
1029
  SLOTS_LBRACKET_sempred(localContext, predIndex) {
736
1030
  switch (predIndex) {
737
- case 5:
1031
+ case 10:
738
1032
  return this.slotReady && this.metadataReady;
739
1033
  }
740
1034
  return true;
741
1035
  }
1036
+ SLOTS_WAIT_SCOPE_sempred(localContext, predIndex) {
1037
+ switch (predIndex) {
1038
+ case 11:
1039
+ return this.slotReady && this.openOp === "WAIT";
1040
+ }
1041
+ return true;
1042
+ }
742
1043
  SLOTS_TEXT_L_sempred(localContext, predIndex) {
743
1044
  switch (predIndex) {
744
- case 6:
1045
+ case 12:
745
1046
  return this.slotReady && this.isTextCoordinateOp();
746
1047
  }
747
1048
  return true;
748
1049
  }
749
1050
  SLOTS_L_sempred(localContext, predIndex) {
750
1051
  switch (predIndex) {
751
- case 7:
1052
+ case 13:
752
1053
  return this.slotReady;
753
1054
  }
754
1055
  return true;
755
1056
  }
756
1057
  SLOTS_COMBINED_TEXT_L_sempred(localContext, predIndex) {
757
1058
  switch (predIndex) {
758
- case 8:
1059
+ case 14:
759
1060
  return this.slotReady && this.isTextCoordinateOp();
760
1061
  }
761
1062
  return true;
762
1063
  }
763
1064
  SLOTS_ASIDE_sempred(localContext, predIndex) {
764
1065
  switch (predIndex) {
765
- case 9:
1066
+ case 15:
766
1067
  return this.slotReady;
767
1068
  }
768
1069
  return true;
769
1070
  }
770
1071
  SLOTS_ASIDE_OPEN_sempred(localContext, predIndex) {
771
1072
  switch (predIndex) {
772
- case 10:
1073
+ case 16:
773
1074
  return this.slotReady && !this.asideClosesOnLine();
774
1075
  }
775
1076
  return true;
776
1077
  }
777
1078
  SLOTS_INLINE_CLOSER_sempred(localContext, predIndex) {
778
1079
  switch (predIndex) {
779
- case 11:
1080
+ case 17:
780
1081
  return this.slotReady && this.closerWithHeadingAhead();
781
1082
  }
782
1083
  return true;
783
1084
  }
784
1085
  SLOTS_END_sempred(localContext, predIndex) {
785
1086
  switch (predIndex) {
786
- case 12:
1087
+ case 18:
787
1088
  return this.closingAt(1);
788
1089
  }
789
1090
  return true;
790
1091
  }
791
1092
  SLOTS_INLINE_BODY_sempred(localContext, predIndex) {
792
1093
  switch (predIndex) {
793
- case 13:
1094
+ case 19:
794
1095
  return this.slotReady && this.inlineBodyAhead();
795
1096
  }
796
1097
  return true;
797
1098
  }
1099
+ SLOTS_TICK_TEXT_sempred(localContext, predIndex) {
1100
+ switch (predIndex) {
1101
+ case 20:
1102
+ return this.slotReady && this.inlineBodyAhead() && [0x2F, 0x24, 0x7E, 0x26, 0x5E].includes(this.inputStream.LA(2));
1103
+ }
1104
+ return true;
1105
+ }
798
1106
  SLOTS_CLOSED_EOL_sempred(localContext, predIndex) {
799
1107
  switch (predIndex) {
800
- case 14:
1108
+ case 21:
801
1109
  return this.inlineCloserSeen;
802
1110
  }
803
1111
  return true;
804
1112
  }
805
1113
  SLOTS_NEXT_HEADING_sempred(localContext, predIndex) {
806
1114
  switch (predIndex) {
807
- case 15:
1115
+ case 22:
808
1116
  return this.fenceDelimiter === "" && this.headingAfterEol();
809
1117
  }
810
1118
  return true;
811
1119
  }
812
1120
  TARGET_FENCE_sempred(localContext, predIndex) {
813
1121
  switch (predIndex) {
814
- case 16:
1122
+ case 23:
815
1123
  return this.closingAt(1);
816
1124
  }
817
1125
  return true;
818
1126
  }
819
1127
  TARGET_NEST_END_sempred(localContext, predIndex) {
820
1128
  switch (predIndex) {
821
- case 17:
1129
+ case 24:
822
1130
  return this.targetDepth > 0;
823
1131
  }
824
1132
  return true;
825
1133
  }
826
1134
  TARGET_TEXT_SCOPE_sempred(localContext, predIndex) {
827
1135
  switch (predIndex) {
828
- case 18:
1136
+ case 25:
829
1137
  return this.isTextCoordinateOp();
830
- case 19:
1138
+ case 26:
831
1139
  return this.targetScopeEnd();
832
1140
  }
833
1141
  return true;
834
1142
  }
835
1143
  TARGET_SCOPE_sempred(localContext, predIndex) {
836
1144
  switch (predIndex) {
837
- case 20:
1145
+ case 27:
838
1146
  return this.openOp === "FIND" || this.execFence || this.openOp === "SEND";
839
- case 21:
1147
+ case 28:
840
1148
  return this.targetScopeEnd();
841
1149
  }
842
1150
  return true;
843
1151
  }
844
1152
  METADATA_FENCE_sempred(localContext, predIndex) {
845
1153
  switch (predIndex) {
846
- case 22:
1154
+ case 29:
847
1155
  return this.closingAt(1);
848
1156
  }
849
1157
  return true;
850
1158
  }
851
1159
  METADATA_NEST_END_sempred(localContext, predIndex) {
852
1160
  switch (predIndex) {
853
- case 23:
1161
+ case 30:
854
1162
  return this.metadataDepth > 0;
855
1163
  }
856
1164
  return true;
857
1165
  }
858
1166
  B_END_sempred(localContext, predIndex) {
859
1167
  switch (predIndex) {
860
- case 24:
1168
+ case 31:
861
1169
  return this.closingAfterEol();
862
1170
  }
863
1171
  return true;
864
1172
  }
865
1173
  B_EMPTY_END_sempred(localContext, predIndex) {
866
1174
  switch (predIndex) {
867
- case 25:
1175
+ case 32:
868
1176
  return (this.atLineStart() || this.inlineBody) && this.closingAt(1);
869
1177
  }
870
1178
  return true;
871
1179
  }
872
1180
  B_CLOSED_EOL_sempred(localContext, predIndex) {
873
1181
  switch (predIndex) {
874
- case 26:
1182
+ case 33:
875
1183
  return this.inlineCloserSeen;
876
1184
  }
877
1185
  return true;
878
1186
  }
879
1187
  B_NEXT_HEADING_sempred(localContext, predIndex) {
880
1188
  switch (predIndex) {
881
- case 27:
1189
+ case 34:
882
1190
  return this.fenceDelimiter === "" && this.headingAfterEol();
883
1191
  }
884
1192
  return true;
885
1193
  }
886
1194
  static _serializedATN = [
887
- 4, 0, 33, 720, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3,
888
- 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2,
889
- 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7,
890
- 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2,
891
- 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7,
892
- 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2,
893
- 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7,
894
- 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2,
895
- 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7,
896
- 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 1,
897
- 0, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 137, 8, 0, 10, 0, 12, 0, 140, 9, 0, 1, 1, 4, 1, 143, 8, 1,
898
- 11, 1, 12, 1, 144, 1, 2, 3, 2, 148, 8, 2, 1, 2, 4, 2, 151, 8, 2, 11, 2, 12, 2, 152, 1, 2,
899
- 1, 2, 4, 2, 157, 8, 2, 11, 2, 12, 2, 158, 3, 2, 161, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3,
900
- 3, 168, 8, 3, 3, 3, 170, 8, 3, 1, 3, 5, 3, 173, 8, 3, 10, 3, 12, 3, 176, 9, 3, 1, 3, 1, 3,
901
- 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 3, 5, 190, 8, 5, 1, 5, 3, 5, 193,
902
- 8, 5, 1, 5, 3, 5, 196, 8, 5, 1, 6, 1, 6, 1, 6, 3, 6, 201, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7,
903
- 207, 8, 7, 1, 7, 5, 7, 210, 8, 7, 10, 7, 12, 7, 213, 9, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1,
904
- 8, 5, 8, 221, 8, 8, 10, 8, 12, 8, 224, 9, 8, 1, 9, 1, 9, 3, 9, 228, 8, 9, 1, 10, 1, 10, 1,
905
- 10, 1, 10, 3, 10, 234, 8, 10, 1, 10, 5, 10, 237, 8, 10, 10, 10, 12, 10, 240, 9, 10, 1,
906
- 10, 1, 10, 1, 11, 3, 11, 245, 8, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 5, 12, 252, 8, 12,
907
- 10, 12, 12, 12, 255, 9, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13,
908
- 5, 13, 266, 8, 13, 10, 13, 12, 13, 269, 9, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13,
909
- 1, 14, 4, 14, 278, 8, 14, 11, 14, 12, 14, 279, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15,
910
- 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 5, 15, 293, 8, 15, 10, 15, 12, 15, 296, 9, 15, 1, 15,
911
- 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16,
912
- 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 5, 16, 322, 8, 16,
913
- 10, 16, 12, 16, 325, 9, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16,
914
- 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 4, 17, 342, 8, 17, 11, 17, 12, 17, 343, 1, 17,
915
- 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 4, 19,
916
- 359, 8, 19, 11, 19, 12, 19, 360, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 4, 20, 369,
917
- 8, 20, 11, 20, 12, 20, 370, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21,
918
- 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23,
919
- 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26,
920
- 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 5, 26, 413, 8, 26, 10, 26, 12, 26, 416, 9, 26, 1, 26,
921
- 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 5, 27,
922
- 431, 8, 27, 10, 27, 12, 27, 434, 9, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28,
923
- 5, 28, 443, 8, 28, 10, 28, 12, 28, 446, 9, 28, 1, 28, 5, 28, 449, 8, 28, 10, 28, 12, 28,
924
- 452, 9, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 5, 29, 461, 8, 29, 10, 29,
925
- 12, 29, 464, 9, 29, 1, 29, 5, 29, 467, 8, 29, 10, 29, 12, 29, 470, 9, 29, 1, 29, 1, 29,
926
- 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31,
927
- 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33,
928
- 1, 33, 1, 34, 1, 34, 1, 34, 5, 34, 504, 8, 34, 10, 34, 12, 34, 507, 9, 34, 1, 34, 1, 34,
929
- 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36,
930
- 1, 37, 4, 37, 525, 8, 37, 11, 37, 12, 37, 526, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38,
931
- 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41,
932
- 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43,
933
- 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 5, 45, 571, 8, 45,
934
- 10, 45, 12, 45, 574, 9, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46,
935
- 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 5, 47, 590, 8, 47, 10, 47, 12, 47, 593, 9, 47, 1, 47,
936
- 1, 47, 1, 47, 1, 47, 1, 48, 4, 48, 600, 8, 48, 11, 48, 12, 48, 601, 1, 48, 1, 48, 1, 49,
937
- 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52,
938
- 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54,
939
- 1, 54, 5, 54, 634, 8, 54, 10, 54, 12, 54, 637, 9, 54, 1, 54, 1, 54, 5, 54, 641, 8, 54,
940
- 10, 54, 12, 54, 644, 9, 54, 1, 54, 5, 54, 647, 8, 54, 10, 54, 12, 54, 650, 9, 54, 1, 54,
941
- 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 5, 55, 659, 8, 55, 10, 55, 12, 55, 662, 9, 55,
942
- 1, 55, 1, 55, 5, 55, 666, 8, 55, 10, 55, 12, 55, 669, 9, 55, 1, 55, 5, 55, 672, 8, 55,
943
- 10, 55, 12, 55, 675, 9, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56,
944
- 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 4, 58, 695, 8, 58, 11, 58,
945
- 12, 58, 696, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60,
946
- 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 3, 294, 323,
947
- 414, 0, 63, 5, 0, 7, 0, 9, 0, 11, 0, 13, 0, 15, 0, 17, 0, 19, 0, 21, 0, 23, 0, 25, 0, 27,
948
- 0, 29, 26, 31, 0, 33, 27, 35, 0, 37, 0, 39, 0, 41, 0, 43, 0, 45, 28, 47, 0, 49, 0, 51, 0,
949
- 53, 0, 55, 0, 57, 0, 59, 0, 61, 29, 63, 0, 65, 0, 67, 0, 69, 0, 71, 0, 73, 0, 75, 0, 77,
950
- 0, 79, 0, 81, 30, 83, 0, 85, 0, 87, 0, 89, 0, 91, 31, 93, 0, 95, 0, 97, 0, 99, 0, 101, 0,
951
- 103, 0, 105, 32, 107, 0, 109, 0, 111, 0, 113, 0, 115, 0, 117, 0, 119, 0, 121, 0, 123,
952
- 0, 125, 0, 127, 0, 129, 33, 5, 0, 1, 2, 3, 4, 15, 6, 0, 43, 43, 45, 46, 48, 57, 65, 90,
953
- 95, 95, 97, 122, 1, 0, 48, 57, 3, 0, 48, 57, 65, 90, 97, 122, 2, 0, 32, 32, 58, 58, 1,
954
- 0, 49, 57, 3, 0, 9, 10, 13, 13, 32, 32, 4, 0, 9, 10, 13, 13, 32, 32, 96, 96, 2, 0, 9, 9,
955
- 32, 32, 2, 0, 10, 10, 13, 13, 7, 0, 9, 10, 13, 13, 32, 32, 40, 40, 60, 60, 91, 91, 96,
956
- 96, 2, 0, 40, 41, 92, 92, 6, 0, 10, 10, 13, 13, 40, 41, 60, 60, 92, 92, 96, 96, 4, 0, 10,
957
- 10, 13, 13, 34, 34, 92, 92, 6, 0, 10, 10, 13, 13, 34, 34, 91, 91, 93, 93, 96, 96, 3, 0,
958
- 10, 10, 13, 13, 96, 96, 751, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35,
959
- 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 1, 43, 1, 0, 0, 0, 1, 45,
960
- 1, 0, 0, 0, 1, 47, 1, 0, 0, 0, 1, 49, 1, 0, 0, 0, 1, 51, 1, 0, 0, 0, 1, 53, 1, 0, 0, 0, 1, 55,
961
- 1, 0, 0, 0, 1, 57, 1, 0, 0, 0, 1, 59, 1, 0, 0, 0, 1, 61, 1, 0, 0, 0, 1, 63, 1, 0, 0, 0, 1, 65,
962
- 1, 0, 0, 0, 1, 67, 1, 0, 0, 0, 1, 69, 1, 0, 0, 0, 1, 71, 1, 0, 0, 0, 2, 73, 1, 0, 0, 0, 2, 75,
963
- 1, 0, 0, 0, 2, 77, 1, 0, 0, 0, 2, 79, 1, 0, 0, 0, 2, 81, 1, 0, 0, 0, 2, 83, 1, 0, 0, 0, 2, 85,
964
- 1, 0, 0, 0, 2, 87, 1, 0, 0, 0, 2, 89, 1, 0, 0, 0, 2, 91, 1, 0, 0, 0, 2, 93, 1, 0, 0, 0, 3, 95,
965
- 1, 0, 0, 0, 3, 97, 1, 0, 0, 0, 3, 99, 1, 0, 0, 0, 3, 101, 1, 0, 0, 0, 3, 103, 1, 0, 0, 0, 3,
966
- 105, 1, 0, 0, 0, 3, 107, 1, 0, 0, 0, 3, 109, 1, 0, 0, 0, 3, 111, 1, 0, 0, 0, 4, 113, 1, 0,
967
- 0, 0, 4, 115, 1, 0, 0, 0, 4, 117, 1, 0, 0, 0, 4, 119, 1, 0, 0, 0, 4, 121, 1, 0, 0, 0, 4, 123,
968
- 1, 0, 0, 0, 4, 125, 1, 0, 0, 0, 4, 127, 1, 0, 0, 0, 4, 129, 1, 0, 0, 0, 5, 131, 1, 0, 0, 0,
969
- 7, 142, 1, 0, 0, 0, 9, 147, 1, 0, 0, 0, 11, 162, 1, 0, 0, 0, 13, 179, 1, 0, 0, 0, 15, 186,
970
- 1, 0, 0, 0, 17, 200, 1, 0, 0, 0, 19, 202, 1, 0, 0, 0, 21, 216, 1, 0, 0, 0, 23, 227, 1, 0,
971
- 0, 0, 25, 229, 1, 0, 0, 0, 27, 244, 1, 0, 0, 0, 29, 248, 1, 0, 0, 0, 31, 262, 1, 0, 0, 0,
972
- 33, 277, 1, 0, 0, 0, 35, 283, 1, 0, 0, 0, 37, 309, 1, 0, 0, 0, 39, 341, 1, 0, 0, 0, 41, 350,
973
- 1, 0, 0, 0, 43, 356, 1, 0, 0, 0, 45, 368, 1, 0, 0, 0, 47, 376, 1, 0, 0, 0, 49, 383, 1, 0,
974
- 0, 0, 51, 390, 1, 0, 0, 0, 53, 395, 1, 0, 0, 0, 55, 400, 1, 0, 0, 0, 57, 405, 1, 0, 0, 0,
975
- 59, 423, 1, 0, 0, 0, 61, 439, 1, 0, 0, 0, 63, 457, 1, 0, 0, 0, 65, 476, 1, 0, 0, 0, 67, 483,
976
- 1, 0, 0, 0, 69, 489, 1, 0, 0, 0, 71, 495, 1, 0, 0, 0, 73, 500, 1, 0, 0, 0, 75, 513, 1, 0,
977
- 0, 0, 77, 518, 1, 0, 0, 0, 79, 524, 1, 0, 0, 0, 81, 530, 1, 0, 0, 0, 83, 534, 1, 0, 0, 0,
978
- 85, 539, 1, 0, 0, 0, 87, 545, 1, 0, 0, 0, 89, 551, 1, 0, 0, 0, 91, 557, 1, 0, 0, 0, 93, 561,
979
- 1, 0, 0, 0, 95, 567, 1, 0, 0, 0, 97, 580, 1, 0, 0, 0, 99, 585, 1, 0, 0, 0, 101, 599, 1, 0,
980
- 0, 0, 103, 605, 1, 0, 0, 0, 105, 609, 1, 0, 0, 0, 107, 613, 1, 0, 0, 0, 109, 618, 1, 0,
981
- 0, 0, 111, 624, 1, 0, 0, 0, 113, 630, 1, 0, 0, 0, 115, 656, 1, 0, 0, 0, 117, 681, 1, 0,
982
- 0, 0, 119, 687, 1, 0, 0, 0, 121, 694, 1, 0, 0, 0, 123, 700, 1, 0, 0, 0, 125, 704, 1, 0,
983
- 0, 0, 127, 711, 1, 0, 0, 0, 129, 716, 1, 0, 0, 0, 131, 132, 5, 96, 0, 0, 132, 133, 5, 96,
984
- 0, 0, 133, 134, 5, 96, 0, 0, 134, 138, 1, 0, 0, 0, 135, 137, 5, 96, 0, 0, 136, 135, 1,
985
- 0, 0, 0, 137, 140, 1, 0, 0, 0, 138, 136, 1, 0, 0, 0, 138, 139, 1, 0, 0, 0, 139, 6, 1, 0,
986
- 0, 0, 140, 138, 1, 0, 0, 0, 141, 143, 7, 0, 0, 0, 142, 141, 1, 0, 0, 0, 143, 144, 1, 0,
987
- 0, 0, 144, 142, 1, 0, 0, 0, 144, 145, 1, 0, 0, 0, 145, 8, 1, 0, 0, 0, 146, 148, 5, 45, 0,
988
- 0, 147, 146, 1, 0, 0, 0, 147, 148, 1, 0, 0, 0, 148, 150, 1, 0, 0, 0, 149, 151, 7, 1, 0,
989
- 0, 150, 149, 1, 0, 0, 0, 151, 152, 1, 0, 0, 0, 152, 150, 1, 0, 0, 0, 152, 153, 1, 0, 0,
990
- 0, 153, 160, 1, 0, 0, 0, 154, 156, 5, 46, 0, 0, 155, 157, 7, 1, 0, 0, 156, 155, 1, 0, 0,
991
- 0, 157, 158, 1, 0, 0, 0, 158, 156, 1, 0, 0, 0, 158, 159, 1, 0, 0, 0, 159, 161, 1, 0, 0,
992
- 0, 160, 154, 1, 0, 0, 0, 160, 161, 1, 0, 0, 0, 161, 10, 1, 0, 0, 0, 162, 163, 5, 60, 0,
993
- 0, 163, 174, 3, 9, 2, 0, 164, 170, 5, 45, 0, 0, 165, 167, 5, 44, 0, 0, 166, 168, 5, 32,
994
- 0, 0, 167, 166, 1, 0, 0, 0, 167, 168, 1, 0, 0, 0, 168, 170, 1, 0, 0, 0, 169, 164, 1, 0,
995
- 0, 0, 169, 165, 1, 0, 0, 0, 170, 171, 1, 0, 0, 0, 171, 173, 3, 9, 2, 0, 172, 169, 1, 0,
996
- 0, 0, 173, 176, 1, 0, 0, 0, 174, 172, 1, 0, 0, 0, 174, 175, 1, 0, 0, 0, 175, 177, 1, 0,
997
- 0, 0, 176, 174, 1, 0, 0, 0, 177, 178, 5, 62, 0, 0, 178, 12, 1, 0, 0, 0, 179, 180, 5, 64,
998
- 0, 0, 180, 181, 7, 2, 0, 0, 181, 182, 7, 2, 0, 0, 182, 183, 7, 2, 0, 0, 183, 184, 7, 2,
999
- 0, 0, 184, 185, 7, 2, 0, 0, 185, 14, 1, 0, 0, 0, 186, 187, 5, 64, 0, 0, 187, 189, 7, 1,
1000
- 0, 0, 188, 190, 7, 1, 0, 0, 189, 188, 1, 0, 0, 0, 189, 190, 1, 0, 0, 0, 190, 192, 1, 0,
1001
- 0, 0, 191, 193, 7, 1, 0, 0, 192, 191, 1, 0, 0, 0, 192, 193, 1, 0, 0, 0, 193, 195, 1, 0,
1002
- 0, 0, 194, 196, 7, 1, 0, 0, 195, 194, 1, 0, 0, 0, 195, 196, 1, 0, 0, 0, 196, 16, 1, 0, 0,
1003
- 0, 197, 201, 3, 9, 2, 0, 198, 201, 3, 13, 4, 0, 199, 201, 3, 15, 5, 0, 200, 197, 1, 0,
1004
- 0, 0, 200, 198, 1, 0, 0, 0, 200, 199, 1, 0, 0, 0, 201, 18, 1, 0, 0, 0, 202, 203, 5, 60,
1005
- 0, 0, 203, 211, 3, 17, 6, 0, 204, 206, 5, 44, 0, 0, 205, 207, 5, 32, 0, 0, 206, 205, 1,
1006
- 0, 0, 0, 206, 207, 1, 0, 0, 0, 207, 208, 1, 0, 0, 0, 208, 210, 3, 17, 6, 0, 209, 204, 1,
1007
- 0, 0, 0, 210, 213, 1, 0, 0, 0, 211, 209, 1, 0, 0, 0, 211, 212, 1, 0, 0, 0, 212, 214, 1,
1008
- 0, 0, 0, 213, 211, 1, 0, 0, 0, 214, 215, 5, 62, 0, 0, 215, 20, 1, 0, 0, 0, 216, 217, 3,
1009
- 13, 4, 0, 217, 218, 7, 3, 0, 0, 218, 222, 7, 4, 0, 0, 219, 221, 7, 1, 0, 0, 220, 219, 1,
1010
- 0, 0, 0, 221, 224, 1, 0, 0, 0, 222, 220, 1, 0, 0, 0, 222, 223, 1, 0, 0, 0, 223, 22, 1, 0,
1011
- 0, 0, 224, 222, 1, 0, 0, 0, 225, 228, 3, 17, 6, 0, 226, 228, 3, 21, 8, 0, 227, 225, 1,
1012
- 0, 0, 0, 227, 226, 1, 0, 0, 0, 228, 24, 1, 0, 0, 0, 229, 230, 5, 60, 0, 0, 230, 238, 3,
1013
- 23, 9, 0, 231, 233, 5, 44, 0, 0, 232, 234, 5, 32, 0, 0, 233, 232, 1, 0, 0, 0, 233, 234,
1014
- 1, 0, 0, 0, 234, 235, 1, 0, 0, 0, 235, 237, 3, 23, 9, 0, 236, 231, 1, 0, 0, 0, 237, 240,
1015
- 1, 0, 0, 0, 238, 236, 1, 0, 0, 0, 238, 239, 1, 0, 0, 0, 239, 241, 1, 0, 0, 0, 240, 238,
1016
- 1, 0, 0, 0, 241, 242, 5, 62, 0, 0, 242, 26, 1, 0, 0, 0, 243, 245, 5, 13, 0, 0, 244, 243,
1017
- 1, 0, 0, 0, 244, 245, 1, 0, 0, 0, 245, 246, 1, 0, 0, 0, 246, 247, 5, 10, 0, 0, 247, 28,
1018
- 1, 0, 0, 0, 248, 249, 4, 12, 0, 0, 249, 253, 3, 5, 0, 0, 250, 252, 7, 1, 0, 0, 251, 250,
1019
- 1, 0, 0, 0, 252, 255, 1, 0, 0, 0, 253, 251, 1, 0, 0, 0, 253, 254, 1, 0, 0, 0, 254, 256,
1020
- 1, 0, 0, 0, 255, 253, 1, 0, 0, 0, 256, 257, 3, 7, 1, 0, 257, 258, 4, 12, 1, 0, 258, 259,
1021
- 6, 12, 0, 0, 259, 260, 1, 0, 0, 0, 260, 261, 6, 12, 1, 0, 261, 30, 1, 0, 0, 0, 262, 263,
1022
- 4, 13, 2, 0, 263, 267, 3, 5, 0, 0, 264, 266, 7, 1, 0, 0, 265, 264, 1, 0, 0, 0, 266, 269,
1023
- 1, 0, 0, 0, 267, 265, 1, 0, 0, 0, 267, 268, 1, 0, 0, 0, 268, 270, 1, 0, 0, 0, 269, 267,
1024
- 1, 0, 0, 0, 270, 271, 3, 7, 1, 0, 271, 272, 6, 13, 2, 0, 272, 273, 1, 0, 0, 0, 273, 274,
1025
- 6, 13, 3, 0, 274, 275, 6, 13, 4, 0, 275, 32, 1, 0, 0, 0, 276, 278, 7, 5, 0, 0, 277, 276,
1026
- 1, 0, 0, 0, 278, 279, 1, 0, 0, 0, 279, 277, 1, 0, 0, 0, 279, 280, 1, 0, 0, 0, 280, 281,
1027
- 1, 0, 0, 0, 281, 282, 6, 14, 4, 0, 282, 34, 1, 0, 0, 0, 283, 284, 5, 60, 0, 0, 284, 285,
1028
- 5, 116, 0, 0, 285, 286, 5, 104, 0, 0, 286, 287, 5, 105, 0, 0, 287, 288, 5, 110, 0, 0,
1029
- 288, 289, 5, 107, 0, 0, 289, 290, 5, 62, 0, 0, 290, 294, 1, 0, 0, 0, 291, 293, 9, 0, 0,
1030
- 0, 292, 291, 1, 0, 0, 0, 293, 296, 1, 0, 0, 0, 294, 295, 1, 0, 0, 0, 294, 292, 1, 0, 0,
1031
- 0, 295, 297, 1, 0, 0, 0, 296, 294, 1, 0, 0, 0, 297, 298, 5, 60, 0, 0, 298, 299, 5, 47,
1032
- 0, 0, 299, 300, 5, 116, 0, 0, 300, 301, 5, 104, 0, 0, 301, 302, 5, 105, 0, 0, 302, 303,
1033
- 5, 110, 0, 0, 303, 304, 5, 107, 0, 0, 304, 305, 5, 62, 0, 0, 305, 306, 1, 0, 0, 0, 306,
1034
- 307, 6, 15, 3, 0, 307, 308, 6, 15, 4, 0, 308, 36, 1, 0, 0, 0, 309, 310, 5, 60, 0, 0, 310,
1035
- 311, 5, 124, 0, 0, 311, 312, 5, 99, 0, 0, 312, 313, 5, 104, 0, 0, 313, 314, 5, 97, 0,
1036
- 0, 314, 315, 5, 110, 0, 0, 315, 316, 5, 110, 0, 0, 316, 317, 5, 101, 0, 0, 317, 318,
1037
- 5, 108, 0, 0, 318, 319, 5, 62, 0, 0, 319, 323, 1, 0, 0, 0, 320, 322, 9, 0, 0, 0, 321, 320,
1038
- 1, 0, 0, 0, 322, 325, 1, 0, 0, 0, 323, 324, 1, 0, 0, 0, 323, 321, 1, 0, 0, 0, 324, 326,
1039
- 1, 0, 0, 0, 325, 323, 1, 0, 0, 0, 326, 327, 5, 60, 0, 0, 327, 328, 5, 99, 0, 0, 328, 329,
1040
- 5, 104, 0, 0, 329, 330, 5, 97, 0, 0, 330, 331, 5, 110, 0, 0, 331, 332, 5, 110, 0, 0, 332,
1041
- 333, 5, 101, 0, 0, 333, 334, 5, 108, 0, 0, 334, 335, 5, 124, 0, 0, 335, 336, 5, 62, 0,
1042
- 0, 336, 337, 1, 0, 0, 0, 337, 338, 6, 16, 3, 0, 338, 339, 6, 16, 4, 0, 339, 38, 1, 0, 0,
1043
- 0, 340, 342, 8, 6, 0, 0, 341, 340, 1, 0, 0, 0, 342, 343, 1, 0, 0, 0, 343, 341, 1, 0, 0,
1044
- 0, 343, 344, 1, 0, 0, 0, 344, 345, 1, 0, 0, 0, 345, 346, 6, 17, 5, 0, 346, 347, 1, 0, 0,
1045
- 0, 347, 348, 6, 17, 3, 0, 348, 349, 6, 17, 4, 0, 349, 40, 1, 0, 0, 0, 350, 351, 5, 96,
1046
- 0, 0, 351, 352, 6, 18, 6, 0, 352, 353, 1, 0, 0, 0, 353, 354, 6, 18, 3, 0, 354, 355, 6,
1047
- 18, 4, 0, 355, 42, 1, 0, 0, 0, 356, 358, 4, 19, 3, 0, 357, 359, 7, 7, 0, 0, 358, 357, 1,
1048
- 0, 0, 0, 359, 360, 1, 0, 0, 0, 360, 358, 1, 0, 0, 0, 360, 361, 1, 0, 0, 0, 361, 362, 1,
1049
- 0, 0, 0, 362, 363, 6, 19, 7, 0, 363, 364, 1, 0, 0, 0, 364, 365, 6, 19, 8, 0, 365, 366,
1050
- 6, 19, 9, 0, 366, 44, 1, 0, 0, 0, 367, 369, 7, 7, 0, 0, 368, 367, 1, 0, 0, 0, 369, 370,
1051
- 1, 0, 0, 0, 370, 368, 1, 0, 0, 0, 370, 371, 1, 0, 0, 0, 371, 372, 1, 0, 0, 0, 372, 373,
1052
- 6, 20, 10, 0, 373, 374, 1, 0, 0, 0, 374, 375, 6, 20, 11, 0, 375, 46, 1, 0, 0, 0, 376, 377,
1053
- 4, 21, 4, 0, 377, 378, 5, 40, 0, 0, 378, 379, 6, 21, 12, 0, 379, 380, 1, 0, 0, 0, 380,
1054
- 381, 6, 21, 13, 0, 381, 382, 6, 21, 14, 0, 382, 48, 1, 0, 0, 0, 383, 384, 4, 22, 5, 0,
1055
- 384, 385, 5, 91, 0, 0, 385, 386, 6, 22, 15, 0, 386, 387, 1, 0, 0, 0, 387, 388, 6, 22,
1056
- 16, 0, 388, 389, 6, 22, 17, 0, 389, 50, 1, 0, 0, 0, 390, 391, 4, 23, 6, 0, 391, 392, 3,
1057
- 19, 7, 0, 392, 393, 1, 0, 0, 0, 393, 394, 6, 23, 18, 0, 394, 52, 1, 0, 0, 0, 395, 396,
1058
- 4, 24, 7, 0, 396, 397, 3, 11, 3, 0, 397, 398, 1, 0, 0, 0, 398, 399, 6, 24, 18, 0, 399,
1059
- 54, 1, 0, 0, 0, 400, 401, 4, 25, 8, 0, 401, 402, 3, 25, 10, 0, 402, 403, 1, 0, 0, 0, 403,
1060
- 404, 6, 25, 18, 0, 404, 56, 1, 0, 0, 0, 405, 406, 4, 26, 9, 0, 406, 407, 5, 60, 0, 0, 407,
1061
- 408, 5, 33, 0, 0, 408, 409, 5, 45, 0, 0, 409, 410, 5, 45, 0, 0, 410, 414, 1, 0, 0, 0, 411,
1062
- 413, 8, 8, 0, 0, 412, 411, 1, 0, 0, 0, 413, 416, 1, 0, 0, 0, 414, 415, 1, 0, 0, 0, 414,
1063
- 412, 1, 0, 0, 0, 415, 417, 1, 0, 0, 0, 416, 414, 1, 0, 0, 0, 417, 418, 5, 45, 0, 0, 418,
1064
- 419, 5, 45, 0, 0, 419, 420, 5, 62, 0, 0, 420, 421, 1, 0, 0, 0, 421, 422, 6, 26, 19, 0,
1065
- 422, 58, 1, 0, 0, 0, 423, 424, 4, 27, 10, 0, 424, 425, 5, 60, 0, 0, 425, 426, 5, 33, 0,
1066
- 0, 426, 427, 5, 45, 0, 0, 427, 428, 5, 45, 0, 0, 428, 432, 1, 0, 0, 0, 429, 431, 8, 8,
1067
- 0, 0, 430, 429, 1, 0, 0, 0, 431, 434, 1, 0, 0, 0, 432, 430, 1, 0, 0, 0, 432, 433, 1, 0,
1068
- 0, 0, 433, 435, 1, 0, 0, 0, 434, 432, 1, 0, 0, 0, 435, 436, 6, 27, 20, 0, 436, 437, 1,
1069
- 0, 0, 0, 437, 438, 6, 27, 19, 0, 438, 60, 1, 0, 0, 0, 439, 440, 4, 28, 11, 0, 440, 444,
1070
- 3, 5, 0, 0, 441, 443, 7, 1, 0, 0, 442, 441, 1, 0, 0, 0, 443, 446, 1, 0, 0, 0, 444, 442,
1071
- 1, 0, 0, 0, 444, 445, 1, 0, 0, 0, 445, 450, 1, 0, 0, 0, 446, 444, 1, 0, 0, 0, 447, 449,
1072
- 7, 7, 0, 0, 448, 447, 1, 0, 0, 0, 449, 452, 1, 0, 0, 0, 450, 448, 1, 0, 0, 0, 450, 451,
1073
- 1, 0, 0, 0, 451, 453, 1, 0, 0, 0, 452, 450, 1, 0, 0, 0, 453, 454, 6, 28, 21, 0, 454, 455,
1074
- 1, 0, 0, 0, 455, 456, 6, 28, 11, 0, 456, 62, 1, 0, 0, 0, 457, 458, 4, 29, 12, 0, 458, 462,
1075
- 3, 5, 0, 0, 459, 461, 7, 1, 0, 0, 460, 459, 1, 0, 0, 0, 461, 464, 1, 0, 0, 0, 462, 460,
1076
- 1, 0, 0, 0, 462, 463, 1, 0, 0, 0, 463, 468, 1, 0, 0, 0, 464, 462, 1, 0, 0, 0, 465, 467,
1077
- 7, 7, 0, 0, 466, 465, 1, 0, 0, 0, 467, 470, 1, 0, 0, 0, 468, 466, 1, 0, 0, 0, 468, 469,
1078
- 1, 0, 0, 0, 469, 471, 1, 0, 0, 0, 470, 468, 1, 0, 0, 0, 471, 472, 6, 29, 22, 0, 472, 473,
1079
- 1, 0, 0, 0, 473, 474, 6, 29, 8, 0, 474, 475, 6, 29, 9, 0, 475, 64, 1, 0, 0, 0, 476, 477,
1080
- 4, 30, 13, 0, 477, 478, 8, 9, 0, 0, 478, 479, 6, 30, 23, 0, 479, 480, 1, 0, 0, 0, 480,
1081
- 481, 6, 30, 24, 0, 481, 482, 6, 30, 25, 0, 482, 66, 1, 0, 0, 0, 483, 484, 4, 31, 14, 0,
1082
- 484, 485, 3, 27, 11, 0, 485, 486, 1, 0, 0, 0, 486, 487, 6, 31, 8, 0, 487, 488, 6, 31,
1083
- 9, 0, 488, 68, 1, 0, 0, 0, 489, 490, 4, 32, 15, 0, 490, 491, 3, 27, 11, 0, 491, 492, 1,
1084
- 0, 0, 0, 492, 493, 6, 32, 8, 0, 493, 494, 6, 32, 9, 0, 494, 70, 1, 0, 0, 0, 495, 496, 3,
1085
- 27, 11, 0, 496, 497, 1, 0, 0, 0, 497, 498, 6, 33, 26, 0, 498, 499, 6, 33, 25, 0, 499,
1086
- 72, 1, 0, 0, 0, 500, 501, 4, 34, 16, 0, 501, 505, 3, 5, 0, 0, 502, 504, 7, 7, 0, 0, 503,
1087
- 502, 1, 0, 0, 0, 504, 507, 1, 0, 0, 0, 505, 503, 1, 0, 0, 0, 505, 506, 1, 0, 0, 0, 506,
1088
- 508, 1, 0, 0, 0, 507, 505, 1, 0, 0, 0, 508, 509, 6, 34, 27, 0, 509, 510, 1, 0, 0, 0, 510,
1089
- 511, 6, 34, 8, 0, 511, 512, 6, 34, 9, 0, 512, 74, 1, 0, 0, 0, 513, 514, 3, 27, 11, 0, 514,
1090
- 515, 1, 0, 0, 0, 515, 516, 6, 35, 8, 0, 516, 517, 6, 35, 9, 0, 517, 76, 1, 0, 0, 0, 518,
1091
- 519, 5, 92, 0, 0, 519, 520, 7, 10, 0, 0, 520, 521, 1, 0, 0, 0, 521, 522, 6, 36, 28, 0,
1092
- 522, 78, 1, 0, 0, 0, 523, 525, 8, 11, 0, 0, 524, 523, 1, 0, 0, 0, 525, 526, 1, 0, 0, 0,
1093
- 526, 524, 1, 0, 0, 0, 526, 527, 1, 0, 0, 0, 527, 528, 1, 0, 0, 0, 528, 529, 6, 37, 28,
1094
- 0, 529, 80, 1, 0, 0, 0, 530, 531, 5, 92, 0, 0, 531, 532, 1, 0, 0, 0, 532, 533, 6, 38, 28,
1095
- 0, 533, 82, 1, 0, 0, 0, 534, 535, 5, 40, 0, 0, 535, 536, 6, 39, 29, 0, 536, 537, 1, 0,
1096
- 0, 0, 537, 538, 6, 39, 28, 0, 538, 84, 1, 0, 0, 0, 539, 540, 4, 40, 17, 0, 540, 541, 5,
1097
- 41, 0, 0, 541, 542, 6, 40, 30, 0, 542, 543, 1, 0, 0, 0, 543, 544, 6, 40, 28, 0, 544, 86,
1098
- 1, 0, 0, 0, 545, 546, 4, 41, 18, 0, 546, 547, 3, 19, 7, 0, 547, 548, 4, 41, 19, 0, 548,
1099
- 549, 1, 0, 0, 0, 549, 550, 6, 41, 18, 0, 550, 88, 1, 0, 0, 0, 551, 552, 4, 42, 20, 0, 552,
1100
- 553, 3, 11, 3, 0, 553, 554, 4, 42, 21, 0, 554, 555, 1, 0, 0, 0, 555, 556, 6, 42, 18, 0,
1101
- 556, 90, 1, 0, 0, 0, 557, 558, 5, 96, 0, 0, 558, 559, 1, 0, 0, 0, 559, 560, 6, 43, 28,
1102
- 0, 560, 92, 1, 0, 0, 0, 561, 562, 5, 41, 0, 0, 562, 563, 6, 44, 31, 0, 563, 564, 1, 0,
1103
- 0, 0, 564, 565, 6, 44, 32, 0, 565, 566, 6, 44, 1, 0, 566, 94, 1, 0, 0, 0, 567, 568, 4,
1104
- 45, 22, 0, 568, 572, 3, 5, 0, 0, 569, 571, 7, 7, 0, 0, 570, 569, 1, 0, 0, 0, 571, 574,
1105
- 1, 0, 0, 0, 572, 570, 1, 0, 0, 0, 572, 573, 1, 0, 0, 0, 573, 575, 1, 0, 0, 0, 574, 572,
1106
- 1, 0, 0, 0, 575, 576, 6, 45, 33, 0, 576, 577, 1, 0, 0, 0, 577, 578, 6, 45, 8, 0, 578, 579,
1107
- 6, 45, 9, 0, 579, 96, 1, 0, 0, 0, 580, 581, 3, 27, 11, 0, 581, 582, 1, 0, 0, 0, 582, 583,
1108
- 6, 46, 8, 0, 583, 584, 6, 46, 9, 0, 584, 98, 1, 0, 0, 0, 585, 591, 5, 34, 0, 0, 586, 587,
1109
- 5, 92, 0, 0, 587, 590, 8, 8, 0, 0, 588, 590, 8, 12, 0, 0, 589, 586, 1, 0, 0, 0, 589, 588,
1110
- 1, 0, 0, 0, 590, 593, 1, 0, 0, 0, 591, 589, 1, 0, 0, 0, 591, 592, 1, 0, 0, 0, 592, 594,
1111
- 1, 0, 0, 0, 593, 591, 1, 0, 0, 0, 594, 595, 5, 34, 0, 0, 595, 596, 1, 0, 0, 0, 596, 597,
1112
- 6, 47, 34, 0, 597, 100, 1, 0, 0, 0, 598, 600, 8, 13, 0, 0, 599, 598, 1, 0, 0, 0, 600, 601,
1113
- 1, 0, 0, 0, 601, 599, 1, 0, 0, 0, 601, 602, 1, 0, 0, 0, 602, 603, 1, 0, 0, 0, 603, 604,
1114
- 6, 48, 34, 0, 604, 102, 1, 0, 0, 0, 605, 606, 5, 96, 0, 0, 606, 607, 1, 0, 0, 0, 607, 608,
1115
- 6, 49, 34, 0, 608, 104, 1, 0, 0, 0, 609, 610, 5, 34, 0, 0, 610, 611, 1, 0, 0, 0, 611, 612,
1116
- 6, 50, 34, 0, 612, 106, 1, 0, 0, 0, 613, 614, 5, 91, 0, 0, 614, 615, 6, 51, 35, 0, 615,
1117
- 616, 1, 0, 0, 0, 616, 617, 6, 51, 34, 0, 617, 108, 1, 0, 0, 0, 618, 619, 4, 52, 23, 0,
1118
- 619, 620, 5, 93, 0, 0, 620, 621, 6, 52, 36, 0, 621, 622, 1, 0, 0, 0, 622, 623, 6, 52,
1119
- 34, 0, 623, 110, 1, 0, 0, 0, 624, 625, 5, 93, 0, 0, 625, 626, 6, 53, 37, 0, 626, 627,
1120
- 1, 0, 0, 0, 627, 628, 6, 53, 38, 0, 628, 629, 6, 53, 1, 0, 629, 112, 1, 0, 0, 0, 630, 631,
1121
- 4, 54, 24, 0, 631, 635, 3, 27, 11, 0, 632, 634, 7, 7, 0, 0, 633, 632, 1, 0, 0, 0, 634,
1122
- 637, 1, 0, 0, 0, 635, 633, 1, 0, 0, 0, 635, 636, 1, 0, 0, 0, 636, 638, 1, 0, 0, 0, 637,
1123
- 635, 1, 0, 0, 0, 638, 642, 3, 5, 0, 0, 639, 641, 7, 1, 0, 0, 640, 639, 1, 0, 0, 0, 641,
1124
- 644, 1, 0, 0, 0, 642, 640, 1, 0, 0, 0, 642, 643, 1, 0, 0, 0, 643, 648, 1, 0, 0, 0, 644,
1125
- 642, 1, 0, 0, 0, 645, 647, 7, 7, 0, 0, 646, 645, 1, 0, 0, 0, 647, 650, 1, 0, 0, 0, 648,
1126
- 646, 1, 0, 0, 0, 648, 649, 1, 0, 0, 0, 649, 651, 1, 0, 0, 0, 650, 648, 1, 0, 0, 0, 651,
1127
- 652, 6, 54, 39, 0, 652, 653, 1, 0, 0, 0, 653, 654, 6, 54, 8, 0, 654, 655, 6, 54, 9, 0,
1128
- 655, 114, 1, 0, 0, 0, 656, 660, 4, 55, 25, 0, 657, 659, 7, 7, 0, 0, 658, 657, 1, 0, 0,
1129
- 0, 659, 662, 1, 0, 0, 0, 660, 658, 1, 0, 0, 0, 660, 661, 1, 0, 0, 0, 661, 663, 1, 0, 0,
1130
- 0, 662, 660, 1, 0, 0, 0, 663, 667, 3, 5, 0, 0, 664, 666, 7, 1, 0, 0, 665, 664, 1, 0, 0,
1131
- 0, 666, 669, 1, 0, 0, 0, 667, 665, 1, 0, 0, 0, 667, 668, 1, 0, 0, 0, 668, 673, 1, 0, 0,
1132
- 0, 669, 667, 1, 0, 0, 0, 670, 672, 7, 7, 0, 0, 671, 670, 1, 0, 0, 0, 672, 675, 1, 0, 0,
1133
- 0, 673, 671, 1, 0, 0, 0, 673, 674, 1, 0, 0, 0, 674, 676, 1, 0, 0, 0, 675, 673, 1, 0, 0,
1134
- 0, 676, 677, 6, 55, 40, 0, 677, 678, 1, 0, 0, 0, 678, 679, 6, 55, 8, 0, 679, 680, 6, 55,
1135
- 9, 0, 680, 116, 1, 0, 0, 0, 681, 682, 4, 56, 26, 0, 682, 683, 3, 27, 11, 0, 683, 684,
1136
- 1, 0, 0, 0, 684, 685, 6, 56, 8, 0, 685, 686, 6, 56, 9, 0, 686, 118, 1, 0, 0, 0, 687, 688,
1137
- 4, 57, 27, 0, 688, 689, 3, 27, 11, 0, 689, 690, 1, 0, 0, 0, 690, 691, 6, 57, 8, 0, 691,
1138
- 692, 6, 57, 9, 0, 692, 120, 1, 0, 0, 0, 693, 695, 8, 14, 0, 0, 694, 693, 1, 0, 0, 0, 695,
1139
- 696, 1, 0, 0, 0, 696, 694, 1, 0, 0, 0, 696, 697, 1, 0, 0, 0, 697, 698, 1, 0, 0, 0, 698,
1140
- 699, 6, 58, 24, 0, 699, 122, 1, 0, 0, 0, 700, 701, 5, 96, 0, 0, 701, 702, 1, 0, 0, 0, 702,
1141
- 703, 6, 59, 24, 0, 703, 124, 1, 0, 0, 0, 704, 705, 5, 13, 0, 0, 705, 706, 5, 10, 0, 0,
1142
- 706, 707, 1, 0, 0, 0, 707, 708, 6, 60, 41, 0, 708, 709, 1, 0, 0, 0, 709, 710, 6, 60, 24,
1143
- 0, 710, 126, 1, 0, 0, 0, 711, 712, 5, 10, 0, 0, 712, 713, 6, 61, 42, 0, 713, 714, 1, 0,
1144
- 0, 0, 714, 715, 6, 61, 24, 0, 715, 128, 1, 0, 0, 0, 716, 717, 5, 13, 0, 0, 717, 718, 1,
1145
- 0, 0, 0, 718, 719, 6, 62, 24, 0, 719, 130, 1, 0, 0, 0, 52, 0, 1, 2, 3, 4, 138, 144, 147,
1146
- 152, 158, 160, 167, 169, 174, 189, 192, 195, 200, 206, 211, 222, 227, 233, 238,
1147
- 244, 253, 267, 279, 294, 323, 343, 360, 370, 414, 432, 444, 450, 462, 468, 505,
1148
- 526, 572, 589, 591, 601, 635, 642, 648, 660, 667, 673, 696, 43, 1, 12, 0, 2, 1, 0,
1149
- 1, 13, 1, 7, 24, 0, 0, 1, 0, 1, 17, 2, 1, 18, 3, 1, 19, 4, 7, 20, 0, 2, 0, 0, 1, 20, 5, 6, 0,
1150
- 0, 1, 21, 6, 7, 14, 0, 2, 2, 0, 1, 22, 7, 7, 16, 0, 2, 3, 0, 7, 18, 0, 7, 25, 0, 1, 27, 8, 1,
1151
- 28, 9, 1, 29, 10, 1, 30, 11, 7, 23, 0, 2, 4, 0, 7, 19, 0, 1, 34, 12, 7, 21, 0, 1, 39, 13,
1152
- 1, 40, 14, 1, 44, 15, 7, 15, 0, 1, 45, 16, 7, 22, 0, 1, 51, 17, 1, 52, 18, 1, 53, 19, 7,
1153
- 17, 0, 1, 54, 20, 1, 55, 21, 1, 60, 22, 1, 61, 23
1195
+ 4, 0, 36, 898, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2,
1196
+ 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10,
1197
+ 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17,
1198
+ 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23,
1199
+ 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30,
1200
+ 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36,
1201
+ 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43,
1202
+ 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49,
1203
+ 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56,
1204
+ 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62,
1205
+ 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69,
1206
+ 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 158, 8,
1207
+ 0, 10, 0, 12, 0, 161, 9, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 169, 8, 1, 10, 1, 12,
1208
+ 1, 172, 9, 1, 1, 2, 4, 2, 175, 8, 2, 11, 2, 12, 2, 176, 1, 3, 3, 3, 180, 8, 3, 1, 3, 4, 3,
1209
+ 183, 8, 3, 11, 3, 12, 3, 184, 1, 3, 1, 3, 4, 3, 189, 8, 3, 11, 3, 12, 3, 190, 3, 3, 193,
1210
+ 8, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 200, 8, 4, 3, 4, 202, 8, 4, 1, 4, 5, 4, 205, 8, 4,
1211
+ 10, 4, 12, 4, 208, 9, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1,
1212
+ 6, 3, 6, 222, 8, 6, 1, 6, 3, 6, 225, 8, 6, 1, 6, 3, 6, 228, 8, 6, 1, 7, 1, 7, 1, 7, 4, 7, 233,
1213
+ 8, 7, 11, 7, 12, 7, 234, 1, 8, 1, 8, 4, 8, 239, 8, 8, 11, 8, 12, 8, 240, 1, 9, 1, 9, 1, 9,
1214
+ 1, 9, 1, 9, 3, 9, 248, 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 254, 8, 10, 1, 10, 5, 10,
1215
+ 257, 8, 10, 10, 10, 12, 10, 260, 9, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 5, 11,
1216
+ 268, 8, 11, 10, 11, 12, 11, 271, 9, 11, 1, 12, 1, 12, 3, 12, 275, 8, 12, 1, 13, 1, 13,
1217
+ 1, 13, 1, 13, 3, 13, 281, 8, 13, 1, 13, 5, 13, 284, 8, 13, 10, 13, 12, 13, 287, 9, 13,
1218
+ 1, 13, 1, 13, 1, 14, 3, 14, 292, 8, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 5, 15, 299, 8,
1219
+ 15, 10, 15, 12, 15, 302, 9, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16,
1220
+ 1, 16, 5, 16, 313, 8, 16, 10, 16, 12, 16, 316, 9, 16, 1, 16, 5, 16, 319, 8, 16, 10, 16,
1221
+ 12, 16, 322, 9, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 5, 17, 332,
1222
+ 8, 17, 10, 17, 12, 17, 335, 9, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18,
1223
+ 1, 18, 5, 18, 346, 8, 18, 10, 18, 12, 18, 349, 9, 18, 1, 18, 3, 18, 352, 8, 18, 1, 18,
1224
+ 1, 18, 1, 18, 1, 18, 1, 18, 5, 18, 359, 8, 18, 10, 18, 12, 18, 362, 9, 18, 1, 18, 3, 18,
1225
+ 365, 8, 18, 3, 18, 367, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 4, 19, 376,
1226
+ 8, 19, 11, 19, 12, 19, 377, 1, 19, 1, 19, 1, 20, 4, 20, 383, 8, 20, 11, 20, 12, 20, 384,
1227
+ 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22,
1228
+ 1, 22, 5, 22, 401, 8, 22, 10, 22, 12, 22, 404, 9, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22,
1229
+ 5, 22, 411, 8, 22, 10, 22, 12, 22, 414, 9, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 5, 22,
1230
+ 421, 8, 22, 10, 22, 12, 22, 424, 9, 22, 3, 22, 426, 8, 22, 1, 22, 5, 22, 429, 8, 22, 10,
1231
+ 22, 12, 22, 432, 9, 22, 1, 22, 5, 22, 435, 8, 22, 10, 22, 12, 22, 438, 9, 22, 1, 22, 1,
1232
+ 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 5, 23, 448, 8, 23, 10, 23, 12, 23, 451, 9,
1233
+ 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 5, 23, 458, 8, 23, 10, 23, 12, 23, 461, 9, 23, 1,
1234
+ 23, 1, 23, 1, 23, 1, 23, 1, 23, 5, 23, 468, 8, 23, 10, 23, 12, 23, 471, 9, 23, 3, 23, 473,
1235
+ 8, 23, 1, 23, 5, 23, 476, 8, 23, 10, 23, 12, 23, 479, 9, 23, 1, 23, 5, 23, 482, 8, 23,
1236
+ 10, 23, 12, 23, 485, 9, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 4, 24, 494,
1237
+ 8, 24, 11, 24, 12, 24, 495, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26,
1238
+ 1, 26, 4, 26, 508, 8, 26, 11, 26, 12, 26, 509, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27,
1239
+ 4, 27, 518, 8, 27, 11, 27, 12, 27, 519, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 4, 28, 527,
1240
+ 8, 28, 11, 28, 12, 28, 528, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29,
1241
+ 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 5, 31, 551,
1242
+ 8, 31, 10, 31, 12, 31, 554, 9, 31, 3, 31, 556, 8, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32,
1243
+ 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34,
1244
+ 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 584, 8, 35, 10, 35, 12, 35,
1245
+ 587, 9, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36,
1246
+ 1, 36, 1, 36, 5, 36, 602, 8, 36, 10, 36, 12, 36, 605, 9, 36, 1, 36, 1, 36, 1, 36, 1, 36,
1247
+ 1, 37, 1, 37, 1, 37, 5, 37, 614, 8, 37, 10, 37, 12, 37, 617, 9, 37, 1, 37, 5, 37, 620,
1248
+ 8, 37, 10, 37, 12, 37, 623, 9, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 5, 38,
1249
+ 632, 8, 38, 10, 38, 12, 38, 635, 9, 38, 1, 38, 5, 38, 638, 8, 38, 10, 38, 12, 38, 641,
1250
+ 9, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39,
1251
+ 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41,
1252
+ 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44,
1253
+ 1, 44, 5, 44, 682, 8, 44, 10, 44, 12, 44, 685, 9, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44,
1254
+ 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 4, 47, 703,
1255
+ 8, 47, 11, 47, 12, 47, 704, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49,
1256
+ 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51,
1257
+ 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54,
1258
+ 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 5, 55, 749, 8, 55, 10, 55, 12, 55, 752,
1259
+ 9, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57,
1260
+ 1, 57, 1, 57, 5, 57, 768, 8, 57, 10, 57, 12, 57, 771, 9, 57, 1, 57, 1, 57, 1, 57, 1, 57,
1261
+ 1, 58, 4, 58, 778, 8, 58, 11, 58, 12, 58, 779, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59,
1262
+ 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62,
1263
+ 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 5, 64, 812,
1264
+ 8, 64, 10, 64, 12, 64, 815, 9, 64, 1, 64, 1, 64, 5, 64, 819, 8, 64, 10, 64, 12, 64, 822,
1265
+ 9, 64, 1, 64, 5, 64, 825, 8, 64, 10, 64, 12, 64, 828, 9, 64, 1, 64, 1, 64, 1, 64, 1, 64,
1266
+ 1, 64, 1, 65, 1, 65, 5, 65, 837, 8, 65, 10, 65, 12, 65, 840, 9, 65, 1, 65, 1, 65, 5, 65,
1267
+ 844, 8, 65, 10, 65, 12, 65, 847, 9, 65, 1, 65, 5, 65, 850, 8, 65, 10, 65, 12, 65, 853,
1268
+ 9, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67,
1269
+ 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 4, 68, 873, 8, 68, 11, 68, 12, 68, 874, 1, 68,
1270
+ 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71,
1271
+ 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 585, 0, 73, 6, 0, 8, 0, 10, 0,
1272
+ 12, 0, 14, 0, 16, 0, 18, 0, 20, 0, 22, 0, 24, 0, 26, 0, 28, 0, 30, 0, 32, 0, 34, 0, 36, 27,
1273
+ 38, 0, 40, 0, 42, 0, 44, 28, 46, 0, 48, 0, 50, 0, 52, 0, 54, 0, 56, 0, 58, 0, 60, 29, 62,
1274
+ 30, 64, 0, 66, 0, 68, 31, 70, 0, 72, 0, 74, 0, 76, 0, 78, 0, 80, 32, 82, 0, 84, 0, 86, 0,
1275
+ 88, 0, 90, 0, 92, 0, 94, 0, 96, 0, 98, 0, 100, 0, 102, 33, 104, 0, 106, 0, 108, 0, 110,
1276
+ 0, 112, 34, 114, 0, 116, 0, 118, 0, 120, 0, 122, 0, 124, 0, 126, 35, 128, 0, 130, 0,
1277
+ 132, 0, 134, 0, 136, 0, 138, 0, 140, 0, 142, 0, 144, 0, 146, 0, 148, 0, 150, 36, 6, 0,
1278
+ 1, 2, 3, 4, 5, 20, 6, 0, 43, 43, 45, 46, 48, 57, 65, 90, 95, 95, 97, 122, 1, 0, 48, 57,
1279
+ 3, 0, 48, 57, 65, 90, 97, 122, 2, 0, 43, 43, 45, 45, 2, 0, 32, 32, 58, 58, 1, 0, 49, 57,
1280
+ 2, 0, 9, 9, 32, 32, 3, 0, 9, 10, 13, 13, 32, 32, 4, 0, 9, 10, 13, 13, 32, 32, 96, 96, 4,
1281
+ 0, 10, 10, 13, 13, 96, 96, 126, 126, 3, 0, 8203, 8205, 8288, 8288, 65279, 65279,
1282
+ 4, 0, 10, 10, 13, 13, 33, 33, 62, 62, 3, 0, 10, 10, 13, 13, 62, 62, 2, 0, 10, 10, 13, 13,
1283
+ 7, 0, 9, 10, 13, 13, 32, 32, 40, 40, 60, 60, 91, 91, 96, 96, 2, 0, 40, 41, 92, 92, 6, 0,
1284
+ 10, 10, 13, 13, 40, 41, 60, 60, 92, 92, 96, 96, 4, 0, 10, 10, 13, 13, 34, 34, 92, 92,
1285
+ 6, 0, 10, 10, 13, 13, 34, 34, 91, 91, 93, 93, 96, 96, 3, 0, 10, 10, 13, 13, 96, 96, 951,
1286
+ 0, 36, 1, 0, 0, 0, 0, 38, 1, 0, 0, 0, 0, 40, 1, 0, 0, 0, 0, 42, 1, 0, 0, 0, 0, 44, 1, 0, 0, 0,
1287
+ 0, 46, 1, 0, 0, 0, 0, 48, 1, 0, 0, 0, 1, 50, 1, 0, 0, 0, 1, 52, 1, 0, 0, 0, 1, 54, 1, 0, 0, 0,
1288
+ 1, 56, 1, 0, 0, 0, 2, 58, 1, 0, 0, 0, 2, 60, 1, 0, 0, 0, 2, 62, 1, 0, 0, 0, 2, 64, 1, 0, 0, 0,
1289
+ 2, 66, 1, 0, 0, 0, 2, 68, 1, 0, 0, 0, 2, 70, 1, 0, 0, 0, 2, 72, 1, 0, 0, 0, 2, 74, 1, 0, 0, 0,
1290
+ 2, 76, 1, 0, 0, 0, 2, 78, 1, 0, 0, 0, 2, 80, 1, 0, 0, 0, 2, 82, 1, 0, 0, 0, 2, 84, 1, 0, 0, 0,
1291
+ 2, 86, 1, 0, 0, 0, 2, 88, 1, 0, 0, 0, 2, 90, 1, 0, 0, 0, 2, 92, 1, 0, 0, 0, 3, 94, 1, 0, 0, 0,
1292
+ 3, 96, 1, 0, 0, 0, 3, 98, 1, 0, 0, 0, 3, 100, 1, 0, 0, 0, 3, 102, 1, 0, 0, 0, 3, 104, 1, 0,
1293
+ 0, 0, 3, 106, 1, 0, 0, 0, 3, 108, 1, 0, 0, 0, 3, 110, 1, 0, 0, 0, 3, 112, 1, 0, 0, 0, 3, 114,
1294
+ 1, 0, 0, 0, 4, 116, 1, 0, 0, 0, 4, 118, 1, 0, 0, 0, 4, 120, 1, 0, 0, 0, 4, 122, 1, 0, 0, 0,
1295
+ 4, 124, 1, 0, 0, 0, 4, 126, 1, 0, 0, 0, 4, 128, 1, 0, 0, 0, 4, 130, 1, 0, 0, 0, 4, 132, 1,
1296
+ 0, 0, 0, 5, 134, 1, 0, 0, 0, 5, 136, 1, 0, 0, 0, 5, 138, 1, 0, 0, 0, 5, 140, 1, 0, 0, 0, 5,
1297
+ 142, 1, 0, 0, 0, 5, 144, 1, 0, 0, 0, 5, 146, 1, 0, 0, 0, 5, 148, 1, 0, 0, 0, 5, 150, 1, 0,
1298
+ 0, 0, 6, 152, 1, 0, 0, 0, 8, 162, 1, 0, 0, 0, 10, 174, 1, 0, 0, 0, 12, 179, 1, 0, 0, 0, 14,
1299
+ 194, 1, 0, 0, 0, 16, 211, 1, 0, 0, 0, 18, 218, 1, 0, 0, 0, 20, 229, 1, 0, 0, 0, 22, 236,
1300
+ 1, 0, 0, 0, 24, 247, 1, 0, 0, 0, 26, 249, 1, 0, 0, 0, 28, 263, 1, 0, 0, 0, 30, 274, 1, 0,
1301
+ 0, 0, 32, 276, 1, 0, 0, 0, 34, 291, 1, 0, 0, 0, 36, 295, 1, 0, 0, 0, 38, 309, 1, 0, 0, 0,
1302
+ 40, 328, 1, 0, 0, 0, 42, 342, 1, 0, 0, 0, 44, 375, 1, 0, 0, 0, 46, 382, 1, 0, 0, 0, 48, 391,
1303
+ 1, 0, 0, 0, 50, 397, 1, 0, 0, 0, 52, 445, 1, 0, 0, 0, 54, 493, 1, 0, 0, 0, 56, 500, 1, 0,
1304
+ 0, 0, 58, 505, 1, 0, 0, 0, 60, 517, 1, 0, 0, 0, 62, 526, 1, 0, 0, 0, 64, 532, 1, 0, 0, 0,
1305
+ 66, 539, 1, 0, 0, 0, 68, 546, 1, 0, 0, 0, 70, 561, 1, 0, 0, 0, 72, 566, 1, 0, 0, 0, 74, 571,
1306
+ 1, 0, 0, 0, 76, 576, 1, 0, 0, 0, 78, 594, 1, 0, 0, 0, 80, 610, 1, 0, 0, 0, 82, 628, 1, 0,
1307
+ 0, 0, 84, 647, 1, 0, 0, 0, 86, 654, 1, 0, 0, 0, 88, 661, 1, 0, 0, 0, 90, 667, 1, 0, 0, 0,
1308
+ 92, 673, 1, 0, 0, 0, 94, 678, 1, 0, 0, 0, 96, 691, 1, 0, 0, 0, 98, 696, 1, 0, 0, 0, 100,
1309
+ 702, 1, 0, 0, 0, 102, 708, 1, 0, 0, 0, 104, 712, 1, 0, 0, 0, 106, 717, 1, 0, 0, 0, 108,
1310
+ 723, 1, 0, 0, 0, 110, 729, 1, 0, 0, 0, 112, 735, 1, 0, 0, 0, 114, 739, 1, 0, 0, 0, 116,
1311
+ 745, 1, 0, 0, 0, 118, 758, 1, 0, 0, 0, 120, 763, 1, 0, 0, 0, 122, 777, 1, 0, 0, 0, 124,
1312
+ 783, 1, 0, 0, 0, 126, 787, 1, 0, 0, 0, 128, 791, 1, 0, 0, 0, 130, 796, 1, 0, 0, 0, 132,
1313
+ 802, 1, 0, 0, 0, 134, 808, 1, 0, 0, 0, 136, 834, 1, 0, 0, 0, 138, 859, 1, 0, 0, 0, 140,
1314
+ 865, 1, 0, 0, 0, 142, 872, 1, 0, 0, 0, 144, 878, 1, 0, 0, 0, 146, 882, 1, 0, 0, 0, 148,
1315
+ 889, 1, 0, 0, 0, 150, 894, 1, 0, 0, 0, 152, 153, 5, 96, 0, 0, 153, 154, 5, 96, 0, 0, 154,
1316
+ 155, 5, 96, 0, 0, 155, 159, 1, 0, 0, 0, 156, 158, 5, 96, 0, 0, 157, 156, 1, 0, 0, 0, 158,
1317
+ 161, 1, 0, 0, 0, 159, 157, 1, 0, 0, 0, 159, 160, 1, 0, 0, 0, 160, 7, 1, 0, 0, 0, 161, 159,
1318
+ 1, 0, 0, 0, 162, 163, 5, 96, 0, 0, 163, 164, 5, 96, 0, 0, 164, 165, 5, 96, 0, 0, 165, 166,
1319
+ 5, 96, 0, 0, 166, 170, 1, 0, 0, 0, 167, 169, 5, 96, 0, 0, 168, 167, 1, 0, 0, 0, 169, 172,
1320
+ 1, 0, 0, 0, 170, 168, 1, 0, 0, 0, 170, 171, 1, 0, 0, 0, 171, 9, 1, 0, 0, 0, 172, 170, 1,
1321
+ 0, 0, 0, 173, 175, 7, 0, 0, 0, 174, 173, 1, 0, 0, 0, 175, 176, 1, 0, 0, 0, 176, 174, 1,
1322
+ 0, 0, 0, 176, 177, 1, 0, 0, 0, 177, 11, 1, 0, 0, 0, 178, 180, 5, 45, 0, 0, 179, 178, 1,
1323
+ 0, 0, 0, 179, 180, 1, 0, 0, 0, 180, 182, 1, 0, 0, 0, 181, 183, 7, 1, 0, 0, 182, 181, 1,
1324
+ 0, 0, 0, 183, 184, 1, 0, 0, 0, 184, 182, 1, 0, 0, 0, 184, 185, 1, 0, 0, 0, 185, 192, 1,
1325
+ 0, 0, 0, 186, 188, 5, 46, 0, 0, 187, 189, 7, 1, 0, 0, 188, 187, 1, 0, 0, 0, 189, 190, 1,
1326
+ 0, 0, 0, 190, 188, 1, 0, 0, 0, 190, 191, 1, 0, 0, 0, 191, 193, 1, 0, 0, 0, 192, 186, 1,
1327
+ 0, 0, 0, 192, 193, 1, 0, 0, 0, 193, 13, 1, 0, 0, 0, 194, 195, 5, 60, 0, 0, 195, 206, 3,
1328
+ 12, 3, 0, 196, 202, 5, 45, 0, 0, 197, 199, 5, 44, 0, 0, 198, 200, 5, 32, 0, 0, 199, 198,
1329
+ 1, 0, 0, 0, 199, 200, 1, 0, 0, 0, 200, 202, 1, 0, 0, 0, 201, 196, 1, 0, 0, 0, 201, 197,
1330
+ 1, 0, 0, 0, 202, 203, 1, 0, 0, 0, 203, 205, 3, 12, 3, 0, 204, 201, 1, 0, 0, 0, 205, 208,
1331
+ 1, 0, 0, 0, 206, 204, 1, 0, 0, 0, 206, 207, 1, 0, 0, 0, 207, 209, 1, 0, 0, 0, 208, 206,
1332
+ 1, 0, 0, 0, 209, 210, 5, 62, 0, 0, 210, 15, 1, 0, 0, 0, 211, 212, 5, 64, 0, 0, 212, 213,
1333
+ 7, 2, 0, 0, 213, 214, 7, 2, 0, 0, 214, 215, 7, 2, 0, 0, 215, 216, 7, 2, 0, 0, 216, 217,
1334
+ 7, 2, 0, 0, 217, 17, 1, 0, 0, 0, 218, 219, 5, 64, 0, 0, 219, 221, 7, 1, 0, 0, 220, 222,
1335
+ 7, 1, 0, 0, 221, 220, 1, 0, 0, 0, 221, 222, 1, 0, 0, 0, 222, 224, 1, 0, 0, 0, 223, 225,
1336
+ 7, 1, 0, 0, 224, 223, 1, 0, 0, 0, 224, 225, 1, 0, 0, 0, 225, 227, 1, 0, 0, 0, 226, 228,
1337
+ 7, 1, 0, 0, 227, 226, 1, 0, 0, 0, 227, 228, 1, 0, 0, 0, 228, 19, 1, 0, 0, 0, 229, 230, 3,
1338
+ 16, 5, 0, 230, 232, 7, 3, 0, 0, 231, 233, 7, 1, 0, 0, 232, 231, 1, 0, 0, 0, 233, 234, 1,
1339
+ 0, 0, 0, 234, 232, 1, 0, 0, 0, 234, 235, 1, 0, 0, 0, 235, 21, 1, 0, 0, 0, 236, 238, 5, 43,
1340
+ 0, 0, 237, 239, 7, 1, 0, 0, 238, 237, 1, 0, 0, 0, 239, 240, 1, 0, 0, 0, 240, 238, 1, 0,
1341
+ 0, 0, 240, 241, 1, 0, 0, 0, 241, 23, 1, 0, 0, 0, 242, 248, 3, 12, 3, 0, 243, 248, 3, 20,
1342
+ 7, 0, 244, 248, 3, 16, 5, 0, 245, 248, 3, 18, 6, 0, 246, 248, 3, 22, 8, 0, 247, 242, 1,
1343
+ 0, 0, 0, 247, 243, 1, 0, 0, 0, 247, 244, 1, 0, 0, 0, 247, 245, 1, 0, 0, 0, 247, 246, 1,
1344
+ 0, 0, 0, 248, 25, 1, 0, 0, 0, 249, 250, 5, 60, 0, 0, 250, 258, 3, 24, 9, 0, 251, 253, 5,
1345
+ 44, 0, 0, 252, 254, 5, 32, 0, 0, 253, 252, 1, 0, 0, 0, 253, 254, 1, 0, 0, 0, 254, 255,
1346
+ 1, 0, 0, 0, 255, 257, 3, 24, 9, 0, 256, 251, 1, 0, 0, 0, 257, 260, 1, 0, 0, 0, 258, 256,
1347
+ 1, 0, 0, 0, 258, 259, 1, 0, 0, 0, 259, 261, 1, 0, 0, 0, 260, 258, 1, 0, 0, 0, 261, 262,
1348
+ 5, 62, 0, 0, 262, 27, 1, 0, 0, 0, 263, 264, 3, 16, 5, 0, 264, 265, 7, 4, 0, 0, 265, 269,
1349
+ 7, 5, 0, 0, 266, 268, 7, 1, 0, 0, 267, 266, 1, 0, 0, 0, 268, 271, 1, 0, 0, 0, 269, 267,
1350
+ 1, 0, 0, 0, 269, 270, 1, 0, 0, 0, 270, 29, 1, 0, 0, 0, 271, 269, 1, 0, 0, 0, 272, 275, 3,
1351
+ 24, 9, 0, 273, 275, 3, 28, 11, 0, 274, 272, 1, 0, 0, 0, 274, 273, 1, 0, 0, 0, 275, 31,
1352
+ 1, 0, 0, 0, 276, 277, 5, 60, 0, 0, 277, 285, 3, 30, 12, 0, 278, 280, 5, 44, 0, 0, 279,
1353
+ 281, 5, 32, 0, 0, 280, 279, 1, 0, 0, 0, 280, 281, 1, 0, 0, 0, 281, 282, 1, 0, 0, 0, 282,
1354
+ 284, 3, 30, 12, 0, 283, 278, 1, 0, 0, 0, 284, 287, 1, 0, 0, 0, 285, 283, 1, 0, 0, 0, 285,
1355
+ 286, 1, 0, 0, 0, 286, 288, 1, 0, 0, 0, 287, 285, 1, 0, 0, 0, 288, 289, 5, 62, 0, 0, 289,
1356
+ 33, 1, 0, 0, 0, 290, 292, 5, 13, 0, 0, 291, 290, 1, 0, 0, 0, 291, 292, 1, 0, 0, 0, 292,
1357
+ 293, 1, 0, 0, 0, 293, 294, 5, 10, 0, 0, 294, 35, 1, 0, 0, 0, 295, 296, 4, 15, 0, 0, 296,
1358
+ 300, 3, 8, 1, 0, 297, 299, 7, 1, 0, 0, 298, 297, 1, 0, 0, 0, 299, 302, 1, 0, 0, 0, 300,
1359
+ 298, 1, 0, 0, 0, 300, 301, 1, 0, 0, 0, 301, 303, 1, 0, 0, 0, 302, 300, 1, 0, 0, 0, 303,
1360
+ 304, 3, 10, 2, 0, 304, 305, 4, 15, 1, 0, 305, 306, 6, 15, 0, 0, 306, 307, 1, 0, 0, 0, 307,
1361
+ 308, 6, 15, 1, 0, 308, 37, 1, 0, 0, 0, 309, 310, 4, 16, 2, 0, 310, 314, 3, 6, 0, 0, 311,
1362
+ 313, 7, 1, 0, 0, 312, 311, 1, 0, 0, 0, 313, 316, 1, 0, 0, 0, 314, 312, 1, 0, 0, 0, 314,
1363
+ 315, 1, 0, 0, 0, 315, 320, 1, 0, 0, 0, 316, 314, 1, 0, 0, 0, 317, 319, 7, 6, 0, 0, 318,
1364
+ 317, 1, 0, 0, 0, 319, 322, 1, 0, 0, 0, 320, 318, 1, 0, 0, 0, 320, 321, 1, 0, 0, 0, 321,
1365
+ 323, 1, 0, 0, 0, 322, 320, 1, 0, 0, 0, 323, 324, 4, 16, 3, 0, 324, 325, 1, 0, 0, 0, 325,
1366
+ 326, 6, 16, 2, 0, 326, 327, 6, 16, 3, 0, 327, 39, 1, 0, 0, 0, 328, 329, 4, 17, 4, 0, 329,
1367
+ 333, 3, 6, 0, 0, 330, 332, 7, 1, 0, 0, 331, 330, 1, 0, 0, 0, 332, 335, 1, 0, 0, 0, 333,
1368
+ 331, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 336, 1, 0, 0, 0, 335, 333, 1, 0, 0, 0, 336,
1369
+ 337, 3, 10, 2, 0, 337, 338, 6, 17, 4, 0, 338, 339, 1, 0, 0, 0, 339, 340, 6, 17, 2, 0, 340,
1370
+ 341, 6, 17, 3, 0, 341, 41, 1, 0, 0, 0, 342, 366, 4, 18, 5, 0, 343, 347, 3, 6, 0, 0, 344,
1371
+ 346, 7, 1, 0, 0, 345, 344, 1, 0, 0, 0, 346, 349, 1, 0, 0, 0, 347, 345, 1, 0, 0, 0, 347,
1372
+ 348, 1, 0, 0, 0, 348, 351, 1, 0, 0, 0, 349, 347, 1, 0, 0, 0, 350, 352, 3, 10, 2, 0, 351,
1373
+ 350, 1, 0, 0, 0, 351, 352, 1, 0, 0, 0, 352, 367, 1, 0, 0, 0, 353, 354, 5, 126, 0, 0, 354,
1374
+ 355, 5, 126, 0, 0, 355, 356, 5, 126, 0, 0, 356, 360, 1, 0, 0, 0, 357, 359, 5, 126, 0,
1375
+ 0, 358, 357, 1, 0, 0, 0, 359, 362, 1, 0, 0, 0, 360, 358, 1, 0, 0, 0, 360, 361, 1, 0, 0,
1376
+ 0, 361, 364, 1, 0, 0, 0, 362, 360, 1, 0, 0, 0, 363, 365, 3, 10, 2, 0, 364, 363, 1, 0, 0,
1377
+ 0, 364, 365, 1, 0, 0, 0, 365, 367, 1, 0, 0, 0, 366, 343, 1, 0, 0, 0, 366, 353, 1, 0, 0,
1378
+ 0, 367, 368, 1, 0, 0, 0, 368, 369, 6, 18, 5, 0, 369, 370, 1, 0, 0, 0, 370, 371, 6, 18,
1379
+ 2, 0, 371, 372, 6, 18, 3, 0, 372, 373, 6, 18, 6, 0, 373, 43, 1, 0, 0, 0, 374, 376, 7, 7,
1380
+ 0, 0, 375, 374, 1, 0, 0, 0, 376, 377, 1, 0, 0, 0, 377, 375, 1, 0, 0, 0, 377, 378, 1, 0,
1381
+ 0, 0, 378, 379, 1, 0, 0, 0, 379, 380, 6, 19, 3, 0, 380, 45, 1, 0, 0, 0, 381, 383, 8, 8,
1382
+ 0, 0, 382, 381, 1, 0, 0, 0, 383, 384, 1, 0, 0, 0, 384, 382, 1, 0, 0, 0, 384, 385, 1, 0,
1383
+ 0, 0, 385, 386, 1, 0, 0, 0, 386, 387, 6, 20, 7, 0, 387, 388, 1, 0, 0, 0, 388, 389, 6, 20,
1384
+ 2, 0, 389, 390, 6, 20, 3, 0, 390, 47, 1, 0, 0, 0, 391, 392, 5, 96, 0, 0, 392, 393, 6, 21,
1385
+ 8, 0, 393, 394, 1, 0, 0, 0, 394, 395, 6, 21, 2, 0, 395, 396, 6, 21, 3, 0, 396, 49, 1, 0,
1386
+ 0, 0, 397, 398, 4, 22, 6, 0, 398, 402, 3, 34, 14, 0, 399, 401, 7, 6, 0, 0, 400, 399, 1,
1387
+ 0, 0, 0, 401, 404, 1, 0, 0, 0, 402, 400, 1, 0, 0, 0, 402, 403, 1, 0, 0, 0, 403, 425, 1,
1388
+ 0, 0, 0, 404, 402, 1, 0, 0, 0, 405, 406, 5, 96, 0, 0, 406, 407, 5, 96, 0, 0, 407, 408,
1389
+ 5, 96, 0, 0, 408, 412, 1, 0, 0, 0, 409, 411, 5, 96, 0, 0, 410, 409, 1, 0, 0, 0, 411, 414,
1390
+ 1, 0, 0, 0, 412, 410, 1, 0, 0, 0, 412, 413, 1, 0, 0, 0, 413, 426, 1, 0, 0, 0, 414, 412,
1391
+ 1, 0, 0, 0, 415, 416, 5, 126, 0, 0, 416, 417, 5, 126, 0, 0, 417, 418, 5, 126, 0, 0, 418,
1392
+ 422, 1, 0, 0, 0, 419, 421, 5, 126, 0, 0, 420, 419, 1, 0, 0, 0, 421, 424, 1, 0, 0, 0, 422,
1393
+ 420, 1, 0, 0, 0, 422, 423, 1, 0, 0, 0, 423, 426, 1, 0, 0, 0, 424, 422, 1, 0, 0, 0, 425,
1394
+ 405, 1, 0, 0, 0, 425, 415, 1, 0, 0, 0, 426, 430, 1, 0, 0, 0, 427, 429, 7, 1, 0, 0, 428,
1395
+ 427, 1, 0, 0, 0, 429, 432, 1, 0, 0, 0, 430, 428, 1, 0, 0, 0, 430, 431, 1, 0, 0, 0, 431,
1396
+ 436, 1, 0, 0, 0, 432, 430, 1, 0, 0, 0, 433, 435, 7, 6, 0, 0, 434, 433, 1, 0, 0, 0, 435,
1397
+ 438, 1, 0, 0, 0, 436, 434, 1, 0, 0, 0, 436, 437, 1, 0, 0, 0, 437, 439, 1, 0, 0, 0, 438,
1398
+ 436, 1, 0, 0, 0, 439, 440, 6, 22, 9, 0, 440, 441, 1, 0, 0, 0, 441, 442, 6, 22, 2, 0, 442,
1399
+ 443, 6, 22, 3, 0, 443, 444, 6, 22, 10, 0, 444, 51, 1, 0, 0, 0, 445, 449, 4, 23, 7, 0, 446,
1400
+ 448, 7, 6, 0, 0, 447, 446, 1, 0, 0, 0, 448, 451, 1, 0, 0, 0, 449, 447, 1, 0, 0, 0, 449,
1401
+ 450, 1, 0, 0, 0, 450, 472, 1, 0, 0, 0, 451, 449, 1, 0, 0, 0, 452, 453, 5, 96, 0, 0, 453,
1402
+ 454, 5, 96, 0, 0, 454, 455, 5, 96, 0, 0, 455, 459, 1, 0, 0, 0, 456, 458, 5, 96, 0, 0, 457,
1403
+ 456, 1, 0, 0, 0, 458, 461, 1, 0, 0, 0, 459, 457, 1, 0, 0, 0, 459, 460, 1, 0, 0, 0, 460,
1404
+ 473, 1, 0, 0, 0, 461, 459, 1, 0, 0, 0, 462, 463, 5, 126, 0, 0, 463, 464, 5, 126, 0, 0,
1405
+ 464, 465, 5, 126, 0, 0, 465, 469, 1, 0, 0, 0, 466, 468, 5, 126, 0, 0, 467, 466, 1, 0,
1406
+ 0, 0, 468, 471, 1, 0, 0, 0, 469, 467, 1, 0, 0, 0, 469, 470, 1, 0, 0, 0, 470, 473, 1, 0,
1407
+ 0, 0, 471, 469, 1, 0, 0, 0, 472, 452, 1, 0, 0, 0, 472, 462, 1, 0, 0, 0, 473, 477, 1, 0,
1408
+ 0, 0, 474, 476, 7, 1, 0, 0, 475, 474, 1, 0, 0, 0, 476, 479, 1, 0, 0, 0, 477, 475, 1, 0,
1409
+ 0, 0, 477, 478, 1, 0, 0, 0, 478, 483, 1, 0, 0, 0, 479, 477, 1, 0, 0, 0, 480, 482, 7, 6,
1410
+ 0, 0, 481, 480, 1, 0, 0, 0, 482, 485, 1, 0, 0, 0, 483, 481, 1, 0, 0, 0, 483, 484, 1, 0,
1411
+ 0, 0, 484, 486, 1, 0, 0, 0, 485, 483, 1, 0, 0, 0, 486, 487, 6, 23, 11, 0, 487, 488, 1,
1412
+ 0, 0, 0, 488, 489, 6, 23, 2, 0, 489, 490, 6, 23, 3, 0, 490, 491, 6, 23, 10, 0, 491, 53,
1413
+ 1, 0, 0, 0, 492, 494, 8, 9, 0, 0, 493, 492, 1, 0, 0, 0, 494, 495, 1, 0, 0, 0, 495, 493,
1414
+ 1, 0, 0, 0, 495, 496, 1, 0, 0, 0, 496, 497, 1, 0, 0, 0, 497, 498, 6, 24, 2, 0, 498, 499,
1415
+ 6, 24, 3, 0, 499, 55, 1, 0, 0, 0, 500, 501, 9, 0, 0, 0, 501, 502, 1, 0, 0, 0, 502, 503,
1416
+ 6, 25, 2, 0, 503, 504, 6, 25, 3, 0, 504, 57, 1, 0, 0, 0, 505, 507, 4, 26, 8, 0, 506, 508,
1417
+ 7, 6, 0, 0, 507, 506, 1, 0, 0, 0, 508, 509, 1, 0, 0, 0, 509, 507, 1, 0, 0, 0, 509, 510,
1418
+ 1, 0, 0, 0, 510, 511, 1, 0, 0, 0, 511, 512, 6, 26, 12, 0, 512, 513, 1, 0, 0, 0, 513, 514,
1419
+ 6, 26, 13, 0, 514, 515, 6, 26, 10, 0, 515, 59, 1, 0, 0, 0, 516, 518, 7, 6, 0, 0, 517, 516,
1420
+ 1, 0, 0, 0, 518, 519, 1, 0, 0, 0, 519, 517, 1, 0, 0, 0, 519, 520, 1, 0, 0, 0, 520, 521,
1421
+ 1, 0, 0, 0, 521, 522, 6, 27, 14, 0, 522, 523, 1, 0, 0, 0, 523, 524, 6, 27, 15, 0, 524,
1422
+ 61, 1, 0, 0, 0, 525, 527, 7, 10, 0, 0, 526, 525, 1, 0, 0, 0, 527, 528, 1, 0, 0, 0, 528,
1423
+ 526, 1, 0, 0, 0, 528, 529, 1, 0, 0, 0, 529, 530, 1, 0, 0, 0, 530, 531, 6, 28, 15, 0, 531,
1424
+ 63, 1, 0, 0, 0, 532, 533, 4, 29, 9, 0, 533, 534, 5, 40, 0, 0, 534, 535, 6, 29, 16, 0, 535,
1425
+ 536, 1, 0, 0, 0, 536, 537, 6, 29, 17, 0, 537, 538, 6, 29, 18, 0, 538, 65, 1, 0, 0, 0, 539,
1426
+ 540, 4, 30, 10, 0, 540, 541, 5, 91, 0, 0, 541, 542, 6, 30, 19, 0, 542, 543, 1, 0, 0, 0,
1427
+ 543, 544, 6, 30, 20, 0, 544, 545, 6, 30, 21, 0, 545, 67, 1, 0, 0, 0, 546, 547, 4, 31,
1428
+ 11, 0, 547, 555, 5, 60, 0, 0, 548, 552, 8, 11, 0, 0, 549, 551, 8, 12, 0, 0, 550, 549,
1429
+ 1, 0, 0, 0, 551, 554, 1, 0, 0, 0, 552, 550, 1, 0, 0, 0, 552, 553, 1, 0, 0, 0, 553, 556,
1430
+ 1, 0, 0, 0, 554, 552, 1, 0, 0, 0, 555, 548, 1, 0, 0, 0, 555, 556, 1, 0, 0, 0, 556, 557,
1431
+ 1, 0, 0, 0, 557, 558, 5, 62, 0, 0, 558, 559, 1, 0, 0, 0, 559, 560, 6, 31, 15, 0, 560, 69,
1432
+ 1, 0, 0, 0, 561, 562, 4, 32, 12, 0, 562, 563, 3, 26, 10, 0, 563, 564, 1, 0, 0, 0, 564,
1433
+ 565, 6, 32, 22, 0, 565, 71, 1, 0, 0, 0, 566, 567, 4, 33, 13, 0, 567, 568, 3, 14, 4, 0,
1434
+ 568, 569, 1, 0, 0, 0, 569, 570, 6, 33, 22, 0, 570, 73, 1, 0, 0, 0, 571, 572, 4, 34, 14,
1435
+ 0, 572, 573, 3, 32, 13, 0, 573, 574, 1, 0, 0, 0, 574, 575, 6, 34, 22, 0, 575, 75, 1, 0,
1436
+ 0, 0, 576, 577, 4, 35, 15, 0, 577, 578, 5, 60, 0, 0, 578, 579, 5, 33, 0, 0, 579, 580,
1437
+ 5, 45, 0, 0, 580, 581, 5, 45, 0, 0, 581, 585, 1, 0, 0, 0, 582, 584, 8, 13, 0, 0, 583, 582,
1438
+ 1, 0, 0, 0, 584, 587, 1, 0, 0, 0, 585, 586, 1, 0, 0, 0, 585, 583, 1, 0, 0, 0, 586, 588,
1439
+ 1, 0, 0, 0, 587, 585, 1, 0, 0, 0, 588, 589, 5, 45, 0, 0, 589, 590, 5, 45, 0, 0, 590, 591,
1440
+ 5, 62, 0, 0, 591, 592, 1, 0, 0, 0, 592, 593, 6, 35, 23, 0, 593, 77, 1, 0, 0, 0, 594, 595,
1441
+ 4, 36, 16, 0, 595, 596, 5, 60, 0, 0, 596, 597, 5, 33, 0, 0, 597, 598, 5, 45, 0, 0, 598,
1442
+ 599, 5, 45, 0, 0, 599, 603, 1, 0, 0, 0, 600, 602, 8, 13, 0, 0, 601, 600, 1, 0, 0, 0, 602,
1443
+ 605, 1, 0, 0, 0, 603, 601, 1, 0, 0, 0, 603, 604, 1, 0, 0, 0, 604, 606, 1, 0, 0, 0, 605,
1444
+ 603, 1, 0, 0, 0, 606, 607, 6, 36, 24, 0, 607, 608, 1, 0, 0, 0, 608, 609, 6, 36, 23, 0,
1445
+ 609, 79, 1, 0, 0, 0, 610, 611, 4, 37, 17, 0, 611, 615, 3, 6, 0, 0, 612, 614, 7, 1, 0, 0,
1446
+ 613, 612, 1, 0, 0, 0, 614, 617, 1, 0, 0, 0, 615, 613, 1, 0, 0, 0, 615, 616, 1, 0, 0, 0,
1447
+ 616, 621, 1, 0, 0, 0, 617, 615, 1, 0, 0, 0, 618, 620, 7, 6, 0, 0, 619, 618, 1, 0, 0, 0,
1448
+ 620, 623, 1, 0, 0, 0, 621, 619, 1, 0, 0, 0, 621, 622, 1, 0, 0, 0, 622, 624, 1, 0, 0, 0,
1449
+ 623, 621, 1, 0, 0, 0, 624, 625, 6, 37, 25, 0, 625, 626, 1, 0, 0, 0, 626, 627, 6, 37, 15,
1450
+ 0, 627, 81, 1, 0, 0, 0, 628, 629, 4, 38, 18, 0, 629, 633, 3, 6, 0, 0, 630, 632, 7, 1, 0,
1451
+ 0, 631, 630, 1, 0, 0, 0, 632, 635, 1, 0, 0, 0, 633, 631, 1, 0, 0, 0, 633, 634, 1, 0, 0,
1452
+ 0, 634, 639, 1, 0, 0, 0, 635, 633, 1, 0, 0, 0, 636, 638, 7, 6, 0, 0, 637, 636, 1, 0, 0,
1453
+ 0, 638, 641, 1, 0, 0, 0, 639, 637, 1, 0, 0, 0, 639, 640, 1, 0, 0, 0, 640, 642, 1, 0, 0,
1454
+ 0, 641, 639, 1, 0, 0, 0, 642, 643, 6, 38, 26, 0, 643, 644, 1, 0, 0, 0, 644, 645, 6, 38,
1455
+ 13, 0, 645, 646, 6, 38, 10, 0, 646, 83, 1, 0, 0, 0, 647, 648, 4, 39, 19, 0, 648, 649,
1456
+ 8, 14, 0, 0, 649, 650, 6, 39, 27, 0, 650, 651, 1, 0, 0, 0, 651, 652, 6, 39, 28, 0, 652,
1457
+ 653, 6, 39, 29, 0, 653, 85, 1, 0, 0, 0, 654, 655, 4, 40, 20, 0, 655, 656, 5, 96, 0, 0,
1458
+ 656, 657, 6, 40, 30, 0, 657, 658, 1, 0, 0, 0, 658, 659, 6, 40, 28, 0, 659, 660, 6, 40,
1459
+ 29, 0, 660, 87, 1, 0, 0, 0, 661, 662, 4, 41, 21, 0, 662, 663, 3, 34, 14, 0, 663, 664,
1460
+ 1, 0, 0, 0, 664, 665, 6, 41, 13, 0, 665, 666, 6, 41, 10, 0, 666, 89, 1, 0, 0, 0, 667, 668,
1461
+ 4, 42, 22, 0, 668, 669, 3, 34, 14, 0, 669, 670, 1, 0, 0, 0, 670, 671, 6, 42, 13, 0, 671,
1462
+ 672, 6, 42, 10, 0, 672, 91, 1, 0, 0, 0, 673, 674, 3, 34, 14, 0, 674, 675, 1, 0, 0, 0, 675,
1463
+ 676, 6, 43, 31, 0, 676, 677, 6, 43, 29, 0, 677, 93, 1, 0, 0, 0, 678, 679, 4, 44, 23, 0,
1464
+ 679, 683, 3, 6, 0, 0, 680, 682, 7, 6, 0, 0, 681, 680, 1, 0, 0, 0, 682, 685, 1, 0, 0, 0,
1465
+ 683, 681, 1, 0, 0, 0, 683, 684, 1, 0, 0, 0, 684, 686, 1, 0, 0, 0, 685, 683, 1, 0, 0, 0,
1466
+ 686, 687, 6, 44, 32, 0, 687, 688, 1, 0, 0, 0, 688, 689, 6, 44, 13, 0, 689, 690, 6, 44,
1467
+ 10, 0, 690, 95, 1, 0, 0, 0, 691, 692, 3, 34, 14, 0, 692, 693, 1, 0, 0, 0, 693, 694, 6,
1468
+ 45, 13, 0, 694, 695, 6, 45, 10, 0, 695, 97, 1, 0, 0, 0, 696, 697, 5, 92, 0, 0, 697, 698,
1469
+ 7, 15, 0, 0, 698, 699, 1, 0, 0, 0, 699, 700, 6, 46, 33, 0, 700, 99, 1, 0, 0, 0, 701, 703,
1470
+ 8, 16, 0, 0, 702, 701, 1, 0, 0, 0, 703, 704, 1, 0, 0, 0, 704, 702, 1, 0, 0, 0, 704, 705,
1471
+ 1, 0, 0, 0, 705, 706, 1, 0, 0, 0, 706, 707, 6, 47, 33, 0, 707, 101, 1, 0, 0, 0, 708, 709,
1472
+ 5, 92, 0, 0, 709, 710, 1, 0, 0, 0, 710, 711, 6, 48, 33, 0, 711, 103, 1, 0, 0, 0, 712, 713,
1473
+ 5, 40, 0, 0, 713, 714, 6, 49, 34, 0, 714, 715, 1, 0, 0, 0, 715, 716, 6, 49, 33, 0, 716,
1474
+ 105, 1, 0, 0, 0, 717, 718, 4, 50, 24, 0, 718, 719, 5, 41, 0, 0, 719, 720, 6, 50, 35, 0,
1475
+ 720, 721, 1, 0, 0, 0, 721, 722, 6, 50, 33, 0, 722, 107, 1, 0, 0, 0, 723, 724, 4, 51, 25,
1476
+ 0, 724, 725, 3, 26, 10, 0, 725, 726, 4, 51, 26, 0, 726, 727, 1, 0, 0, 0, 727, 728, 6,
1477
+ 51, 22, 0, 728, 109, 1, 0, 0, 0, 729, 730, 4, 52, 27, 0, 730, 731, 3, 14, 4, 0, 731, 732,
1478
+ 4, 52, 28, 0, 732, 733, 1, 0, 0, 0, 733, 734, 6, 52, 22, 0, 734, 111, 1, 0, 0, 0, 735,
1479
+ 736, 5, 96, 0, 0, 736, 737, 1, 0, 0, 0, 737, 738, 6, 53, 33, 0, 738, 113, 1, 0, 0, 0, 739,
1480
+ 740, 5, 41, 0, 0, 740, 741, 6, 54, 36, 0, 741, 742, 1, 0, 0, 0, 742, 743, 6, 54, 37, 0,
1481
+ 743, 744, 6, 54, 1, 0, 744, 115, 1, 0, 0, 0, 745, 746, 4, 55, 29, 0, 746, 750, 3, 6, 0,
1482
+ 0, 747, 749, 7, 6, 0, 0, 748, 747, 1, 0, 0, 0, 749, 752, 1, 0, 0, 0, 750, 748, 1, 0, 0,
1483
+ 0, 750, 751, 1, 0, 0, 0, 751, 753, 1, 0, 0, 0, 752, 750, 1, 0, 0, 0, 753, 754, 6, 55, 38,
1484
+ 0, 754, 755, 1, 0, 0, 0, 755, 756, 6, 55, 13, 0, 756, 757, 6, 55, 10, 0, 757, 117, 1,
1485
+ 0, 0, 0, 758, 759, 3, 34, 14, 0, 759, 760, 1, 0, 0, 0, 760, 761, 6, 56, 13, 0, 761, 762,
1486
+ 6, 56, 10, 0, 762, 119, 1, 0, 0, 0, 763, 769, 5, 34, 0, 0, 764, 765, 5, 92, 0, 0, 765,
1487
+ 768, 8, 13, 0, 0, 766, 768, 8, 17, 0, 0, 767, 764, 1, 0, 0, 0, 767, 766, 1, 0, 0, 0, 768,
1488
+ 771, 1, 0, 0, 0, 769, 767, 1, 0, 0, 0, 769, 770, 1, 0, 0, 0, 770, 772, 1, 0, 0, 0, 771,
1489
+ 769, 1, 0, 0, 0, 772, 773, 5, 34, 0, 0, 773, 774, 1, 0, 0, 0, 774, 775, 6, 57, 39, 0, 775,
1490
+ 121, 1, 0, 0, 0, 776, 778, 8, 18, 0, 0, 777, 776, 1, 0, 0, 0, 778, 779, 1, 0, 0, 0, 779,
1491
+ 777, 1, 0, 0, 0, 779, 780, 1, 0, 0, 0, 780, 781, 1, 0, 0, 0, 781, 782, 6, 58, 39, 0, 782,
1492
+ 123, 1, 0, 0, 0, 783, 784, 5, 96, 0, 0, 784, 785, 1, 0, 0, 0, 785, 786, 6, 59, 39, 0, 786,
1493
+ 125, 1, 0, 0, 0, 787, 788, 5, 34, 0, 0, 788, 789, 1, 0, 0, 0, 789, 790, 6, 60, 39, 0, 790,
1494
+ 127, 1, 0, 0, 0, 791, 792, 5, 91, 0, 0, 792, 793, 6, 61, 40, 0, 793, 794, 1, 0, 0, 0, 794,
1495
+ 795, 6, 61, 39, 0, 795, 129, 1, 0, 0, 0, 796, 797, 4, 62, 30, 0, 797, 798, 5, 93, 0, 0,
1496
+ 798, 799, 6, 62, 41, 0, 799, 800, 1, 0, 0, 0, 800, 801, 6, 62, 39, 0, 801, 131, 1, 0,
1497
+ 0, 0, 802, 803, 5, 93, 0, 0, 803, 804, 6, 63, 42, 0, 804, 805, 1, 0, 0, 0, 805, 806, 6,
1498
+ 63, 43, 0, 806, 807, 6, 63, 1, 0, 807, 133, 1, 0, 0, 0, 808, 809, 4, 64, 31, 0, 809, 813,
1499
+ 3, 34, 14, 0, 810, 812, 7, 6, 0, 0, 811, 810, 1, 0, 0, 0, 812, 815, 1, 0, 0, 0, 813, 811,
1500
+ 1, 0, 0, 0, 813, 814, 1, 0, 0, 0, 814, 816, 1, 0, 0, 0, 815, 813, 1, 0, 0, 0, 816, 820,
1501
+ 3, 6, 0, 0, 817, 819, 7, 1, 0, 0, 818, 817, 1, 0, 0, 0, 819, 822, 1, 0, 0, 0, 820, 818,
1502
+ 1, 0, 0, 0, 820, 821, 1, 0, 0, 0, 821, 826, 1, 0, 0, 0, 822, 820, 1, 0, 0, 0, 823, 825,
1503
+ 7, 6, 0, 0, 824, 823, 1, 0, 0, 0, 825, 828, 1, 0, 0, 0, 826, 824, 1, 0, 0, 0, 826, 827,
1504
+ 1, 0, 0, 0, 827, 829, 1, 0, 0, 0, 828, 826, 1, 0, 0, 0, 829, 830, 6, 64, 44, 0, 830, 831,
1505
+ 1, 0, 0, 0, 831, 832, 6, 64, 13, 0, 832, 833, 6, 64, 10, 0, 833, 135, 1, 0, 0, 0, 834,
1506
+ 838, 4, 65, 32, 0, 835, 837, 7, 6, 0, 0, 836, 835, 1, 0, 0, 0, 837, 840, 1, 0, 0, 0, 838,
1507
+ 836, 1, 0, 0, 0, 838, 839, 1, 0, 0, 0, 839, 841, 1, 0, 0, 0, 840, 838, 1, 0, 0, 0, 841,
1508
+ 845, 3, 6, 0, 0, 842, 844, 7, 1, 0, 0, 843, 842, 1, 0, 0, 0, 844, 847, 1, 0, 0, 0, 845,
1509
+ 843, 1, 0, 0, 0, 845, 846, 1, 0, 0, 0, 846, 851, 1, 0, 0, 0, 847, 845, 1, 0, 0, 0, 848,
1510
+ 850, 7, 6, 0, 0, 849, 848, 1, 0, 0, 0, 850, 853, 1, 0, 0, 0, 851, 849, 1, 0, 0, 0, 851,
1511
+ 852, 1, 0, 0, 0, 852, 854, 1, 0, 0, 0, 853, 851, 1, 0, 0, 0, 854, 855, 6, 65, 45, 0, 855,
1512
+ 856, 1, 0, 0, 0, 856, 857, 6, 65, 13, 0, 857, 858, 6, 65, 10, 0, 858, 137, 1, 0, 0, 0,
1513
+ 859, 860, 4, 66, 33, 0, 860, 861, 3, 34, 14, 0, 861, 862, 1, 0, 0, 0, 862, 863, 6, 66,
1514
+ 13, 0, 863, 864, 6, 66, 10, 0, 864, 139, 1, 0, 0, 0, 865, 866, 4, 67, 34, 0, 866, 867,
1515
+ 3, 34, 14, 0, 867, 868, 1, 0, 0, 0, 868, 869, 6, 67, 13, 0, 869, 870, 6, 67, 10, 0, 870,
1516
+ 141, 1, 0, 0, 0, 871, 873, 8, 19, 0, 0, 872, 871, 1, 0, 0, 0, 873, 874, 1, 0, 0, 0, 874,
1517
+ 872, 1, 0, 0, 0, 874, 875, 1, 0, 0, 0, 875, 876, 1, 0, 0, 0, 876, 877, 6, 68, 28, 0, 877,
1518
+ 143, 1, 0, 0, 0, 878, 879, 5, 96, 0, 0, 879, 880, 1, 0, 0, 0, 880, 881, 6, 69, 28, 0, 881,
1519
+ 145, 1, 0, 0, 0, 882, 883, 5, 13, 0, 0, 883, 884, 5, 10, 0, 0, 884, 885, 1, 0, 0, 0, 885,
1520
+ 886, 6, 70, 46, 0, 886, 887, 1, 0, 0, 0, 887, 888, 6, 70, 28, 0, 888, 147, 1, 0, 0, 0,
1521
+ 889, 890, 5, 10, 0, 0, 890, 891, 6, 71, 47, 0, 891, 892, 1, 0, 0, 0, 892, 893, 6, 71,
1522
+ 28, 0, 893, 149, 1, 0, 0, 0, 894, 895, 5, 13, 0, 0, 895, 896, 1, 0, 0, 0, 896, 897, 6,
1523
+ 72, 28, 0, 897, 151, 1, 0, 0, 0, 77, 0, 1, 2, 3, 4, 5, 159, 170, 176, 179, 184, 190, 192,
1524
+ 199, 201, 206, 221, 224, 227, 234, 240, 247, 253, 258, 269, 274, 280, 285, 291,
1525
+ 300, 314, 320, 333, 347, 351, 360, 364, 366, 377, 384, 402, 412, 422, 425, 430,
1526
+ 436, 449, 459, 469, 472, 477, 483, 495, 509, 519, 528, 552, 555, 585, 603, 615,
1527
+ 621, 633, 639, 683, 704, 750, 767, 769, 779, 813, 820, 826, 838, 845, 851, 874,
1528
+ 48, 1, 15, 0, 2, 2, 0, 7, 25, 0, 0, 1, 0, 1, 17, 1, 1, 18, 2, 2, 1, 0, 1, 20, 3, 1, 21, 4, 1,
1529
+ 22, 5, 2, 0, 0, 1, 23, 6, 1, 26, 7, 7, 21, 0, 1, 27, 8, 6, 0, 0, 1, 29, 9, 7, 15, 0, 2, 3, 0,
1530
+ 1, 30, 10, 7, 17, 0, 2, 4, 0, 7, 19, 0, 7, 26, 0, 1, 36, 11, 1, 37, 12, 1, 38, 13, 1, 39,
1531
+ 14, 7, 24, 0, 2, 5, 0, 1, 40, 15, 7, 20, 0, 1, 44, 16, 7, 22, 0, 1, 49, 17, 1, 50, 18, 1,
1532
+ 54, 19, 7, 16, 0, 1, 55, 20, 7, 23, 0, 1, 61, 21, 1, 62, 22, 1, 63, 23, 7, 18, 0, 1, 64,
1533
+ 24, 1, 65, 25, 1, 70, 26, 1, 71, 27
1154
1534
  ];
1155
1535
  static __ATN;
1156
1536
  static get _ATN() {