@plurnk/plurnk-contracts 1.16.4 → 1.17.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 (88) hide show
  1. package/README.md +13 -29
  2. package/SPEC.md +605 -518
  3. package/dist/conformance/agui-v1.json +3 -3
  4. package/dist/schema/CapabilityProjection.json +2 -4
  5. package/dist/schema/ClientStatement.json +5 -52
  6. package/dist/schema/FunctionalityDefinitionState.json +2 -2
  7. package/dist/schema/LineMarker.json +1 -1
  8. package/dist/schema/LoopPolicy.json +2 -3
  9. package/dist/schema/MatcherBody.json +6 -6
  10. package/dist/schema/McpServerDefinition.json +17 -0
  11. package/dist/schema/ModelCatalogPage.json +10 -1
  12. package/dist/schema/ModelRoute.json +9 -0
  13. package/dist/schema/Notice.json +1 -1
  14. package/dist/schema/ParsedPath.json +3 -2
  15. package/dist/schema/Plan.json +9 -5
  16. package/dist/schema/PlurnkStatement.json +86 -134
  17. package/dist/schema/ProposalProjection.json +2 -1
  18. package/dist/schema/ResourceSelection.json +51 -27
  19. package/dist/schema/SkillDefinition.json +3 -3
  20. package/dist/src/AcpPlanValue.d.ts +0 -1
  21. package/dist/src/AcpPlanValue.d.ts.map +1 -1
  22. package/dist/src/AcpPlanValue.js +14 -13
  23. package/dist/src/AcpPlanValue.js.map +1 -1
  24. package/dist/src/ApplicationPort.d.ts +16 -14
  25. package/dist/src/ApplicationPort.d.ts.map +1 -1
  26. package/dist/src/AstBuilder.d.ts +3 -2
  27. package/dist/src/AstBuilder.d.ts.map +1 -1
  28. package/dist/src/AstBuilder.js +340 -187
  29. package/dist/src/AstBuilder.js.map +1 -1
  30. package/dist/src/JsonDocument.d.ts +2 -0
  31. package/dist/src/JsonDocument.d.ts.map +1 -0
  32. package/dist/src/JsonDocument.js +14 -0
  33. package/dist/src/JsonDocument.js.map +1 -0
  34. package/dist/src/LoopLifecycle.d.ts +3 -0
  35. package/dist/src/LoopLifecycle.d.ts.map +1 -0
  36. package/dist/src/LoopLifecycle.js +14 -0
  37. package/dist/src/LoopLifecycle.js.map +1 -0
  38. package/dist/src/PlanValue.d.ts +1 -1
  39. package/dist/src/PlanValue.d.ts.map +1 -1
  40. package/dist/src/PlanValue.js +10 -6
  41. package/dist/src/PlanValue.js.map +1 -1
  42. package/dist/src/PlurnkErrorStrategy.d.ts.map +1 -1
  43. package/dist/src/PlurnkErrorStrategy.js +58 -139
  44. package/dist/src/PlurnkErrorStrategy.js.map +1 -1
  45. package/dist/src/PlurnkParseError.d.ts +3 -1
  46. package/dist/src/PlurnkParseError.d.ts.map +1 -1
  47. package/dist/src/PlurnkParseError.js +4 -1
  48. package/dist/src/PlurnkParseError.js.map +1 -1
  49. package/dist/src/PlurnkParser.d.ts +9 -5
  50. package/dist/src/PlurnkParser.d.ts.map +1 -1
  51. package/dist/src/PlurnkParser.js +175 -180
  52. package/dist/src/PlurnkParser.js.map +1 -1
  53. package/dist/src/RecordingListener.d.ts +1 -1
  54. package/dist/src/RecordingListener.d.ts.map +1 -1
  55. package/dist/src/RecordingListener.js +24 -6
  56. package/dist/src/RecordingListener.js.map +1 -1
  57. package/dist/src/TurnDisposition.d.ts +11 -0
  58. package/dist/src/TurnDisposition.d.ts.map +1 -0
  59. package/dist/src/TurnDisposition.js +32 -0
  60. package/dist/src/TurnDisposition.js.map +1 -0
  61. package/dist/src/Validator.js +1 -1
  62. package/dist/src/Validator.js.map +1 -1
  63. package/dist/src/generated/plurnkLexer.d.ts +95 -106
  64. package/dist/src/generated/plurnkLexer.d.ts.map +1 -1
  65. package/dist/src/generated/plurnkLexer.js +674 -828
  66. package/dist/src/generated/plurnkLexer.js.map +1 -1
  67. package/dist/src/generated/plurnkParser.d.ts +111 -152
  68. package/dist/src/generated/plurnkParser.d.ts.map +1 -1
  69. package/dist/src/generated/plurnkParser.js +756 -1082
  70. package/dist/src/generated/plurnkParser.js.map +1 -1
  71. package/dist/src/generated/plurnkParserVisitor.d.ts +15 -36
  72. package/dist/src/generated/plurnkParserVisitor.d.ts.map +1 -1
  73. package/dist/src/generated/plurnkParserVisitor.js +12 -30
  74. package/dist/src/generated/plurnkParserVisitor.js.map +1 -1
  75. package/dist/src/index.d.ts +5 -1
  76. package/dist/src/index.d.ts.map +1 -1
  77. package/dist/src/index.js +4 -1
  78. package/dist/src/index.js.map +1 -1
  79. package/dist/src/types.d.ts +3 -7
  80. package/dist/src/types.d.ts.map +1 -1
  81. package/dist/src/types.generated.d.ts +147 -80
  82. package/dist/src/types.generated.d.ts.map +1 -1
  83. package/dist/src/types.js +3 -3
  84. package/dist/src/types.js.map +1 -1
  85. package/package.json +4 -8
  86. package/plurnk.md +103 -119
  87. package/dist/plurnk.gemma.gbnf +0 -141
  88. package/dist/plurnk.qwen.gbnf +0 -130
@@ -1,40 +1,37 @@
1
1
  import * as antlr from "antlr4ng";
2
2
  export class plurnkLexer extends antlr.Lexer {
3
- static LPAREN = 1;
4
- static RPAREN = 2;
5
- static LBRACE = 3;
6
- static RBRACE = 4;
7
- static L_MARKER = 5;
8
- static COMBINED_L_MARKER = 6;
9
- static BODY_OPEN = 7;
10
- static SECTION_END = 8;
11
- static TARGET_TEXT = 9;
12
- static METADATA_TEXT = 10;
13
- static BODY_TEXT = 11;
14
- static TEXT = 12;
15
- static ANNOTATION = 13;
16
- static SEND_LABEL = 14;
17
- static EXECUTOR = 15;
18
- static OPEN_PLAN = 16;
19
- static OPEN_FIND = 17;
20
- static OPEN_READ = 18;
21
- static OPEN_EDIT = 19;
22
- static OPEN_COPY = 20;
23
- static OPEN_MOVE = 21;
24
- static OPEN_SEND = 22;
25
- static OPEN_EXEC = 23;
26
- static OPEN_BARE = 24;
27
- static OPEN_WORK = 25;
28
- static OPEN_FORK = 26;
29
- static OPEN_KILL = 27;
30
- static OPEN_LOOK = 28;
31
- static OPEN_BUFF = 29;
32
- static FENCE_OPEN = 30;
33
- static FENCE_CLOSE = 31;
34
- static WS = 32;
35
- static SLOTS_WS = 33;
36
- static TEXT_HASH = 34;
37
- static TARGET_BACKSLASH = 35;
3
+ static OPEN_FIND = 1;
4
+ static OPEN_READ = 2;
5
+ static OPEN_EDIT = 3;
6
+ static OPEN_COPY = 4;
7
+ static OPEN_MOVE = 5;
8
+ 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 TARGET_BACKSLASH = 29;
32
+ static TARGET_TICK = 30;
33
+ static METADATA_QUOTE = 31;
34
+ static B_CR = 32;
38
35
  static SLOTS = 1;
39
36
  static TARGET = 2;
40
37
  static METADATA = 3;
@@ -45,167 +42,278 @@ export class plurnkLexer extends antlr.Lexer {
45
42
  static literalNames = [
46
43
  null, null, null, null, null, null, null, null, null, null, null,
47
44
  null, null, null, null, null, null, null, null, null, null, null,
48
- null, null, null, null, null, null, null, null, null, null, null,
49
- null, "'#'", "'\\'"
45
+ null, null, null, null, null, null, null, "'\\'", null, "'\"'",
46
+ "'\\r'"
50
47
  ];
51
48
  static symbolicNames = [
52
- null, "LPAREN", "RPAREN", "LBRACE", "RBRACE", "L_MARKER", "COMBINED_L_MARKER",
53
- "BODY_OPEN", "SECTION_END", "TARGET_TEXT", "METADATA_TEXT", "BODY_TEXT",
54
- "TEXT", "ANNOTATION", "SEND_LABEL", "EXECUTOR", "OPEN_PLAN", "OPEN_FIND",
55
- "OPEN_READ", "OPEN_EDIT", "OPEN_COPY", "OPEN_MOVE", "OPEN_SEND",
56
- "OPEN_EXEC", "OPEN_BARE", "OPEN_WORK", "OPEN_FORK", "OPEN_KILL",
57
- "OPEN_LOOK", "OPEN_BUFF", "FENCE_OPEN", "FENCE_CLOSE", "WS", "SLOTS_WS",
58
- "TEXT_HASH", "TARGET_BACKSLASH"
49
+ null, "OPEN_FIND", "OPEN_READ", "OPEN_EDIT", "OPEN_COPY", "OPEN_MOVE",
50
+ "OPEN_SEND", "OPEN_TASK", "OPEN_EXEC", "OPEN_BARE", "OPEN_WORK",
51
+ "OPEN_FORK", "OPEN_KILL", "OPEN_LOOK", "LPAREN", "RPAREN", "LBRACKET",
52
+ "RBRACKET", "L_MARKER", "BODY_OPEN", "SECTION_END", "TARGET_TEXT",
53
+ "METADATA_TEXT", "BODY_TEXT", "TEXT", "ASIDE", "OPEN", "WS", "SLOTS_WS",
54
+ "TARGET_BACKSLASH", "TARGET_TICK", "METADATA_QUOTE", "B_CR"
59
55
  ];
60
56
  static modeNames = [
61
57
  "DEFAULT_MODE", "SLOTS", "TARGET", "METADATA", "BODY",
62
58
  ];
63
59
  static ruleNames = [
64
- "DELIMITER", "NUM", "L_PATTERN", "LINE_ANCHOR", "TEXT_COORD", "TEXT_L_PATTERN",
65
- "COMBINED_LINE_COORD", "COMBINED_TEXT_COORD", "COMBINED_TEXT_L_PATTERN",
66
- "EOL", "OPEN_PLAN", "OPEN_FIND", "OPEN_READ", "OPEN_EDIT", "OPEN_COPY",
67
- "OPEN_MOVE", "OPEN_SEND", "OPEN_EXEC", "OPEN_BARE", "OPEN_WORK",
68
- "OPEN_FORK", "OPEN_KILL", "OPEN_LOOK", "OPEN_BUFF", "FENCE_OPEN",
69
- "FENCE_CLOSE", "WS", "THINK_BLOCK", "CHANNEL_BLOCK", "TEXT", "TEXT_HASH",
70
- "SLOTS_WS", "SLOTS_SEND_LABEL", "SLOTS_EXECUTOR", "SLOTS_LPAREN",
71
- "SLOTS_LBRACE", "SLOTS_TEXT_L", "SLOTS_L", "SLOTS_COMBINED_TEXT_L",
72
- "SLOTS_ANNOTATION", "SLOTS_INLINE_BODY", "SLOTS_DIRECT_END", "SLOTS_BODY_OPEN",
60
+ "FENCE", "NAME", "NUM", "L_PATTERN", "LINE_ANCHOR", "DIGIT_ANCHOR",
61
+ "TEXT_COORD", "TEXT_L_PATTERN", "COMBINED_LINE_COORD", "COMBINED_TEXT_COORD",
62
+ "COMBINED_TEXT_L_PATTERN", "EOL", "OPEN", "UNKNOWN_TAG", "WS", "THINK_BLOCK",
63
+ "CHANNEL_BLOCK", "TEXT_RUN", "TEXT_TICK", "SLOTS_NEXT_OPENER", "SLOTS_WS",
64
+ "SLOTS_LPAREN", "SLOTS_LBRACKET", "SLOTS_TEXT_L", "SLOTS_L", "SLOTS_COMBINED_TEXT_L",
65
+ "SLOTS_ASIDE", "SLOTS_ASIDE_OPEN", "SLOTS_END", "SLOTS_INLINE_BODY",
66
+ "SLOTS_NEXT_HEADING", "SLOTS_BODY_OPEN", "TARGET_FENCE", "TARGET_BODY_OPEN",
73
67
  "TARGET_ESCAPE", "TARGET_INNER", "TARGET_BACKSLASH", "TARGET_NEST_OPEN",
74
- "TARGET_NEST_END", "TARGET_END", "METADATA_INNER", "METADATA_NEST_OPEN",
75
- "METADATA_NEST_END", "METADATA_END", "B_FENCE_CLOSE", "B_FENCE_END",
76
- "B_SECTION_END", "B_DIRECT_END", "B_EMPTY_SPACED_END", "B_RUN",
77
- "B_CRLF", "B_LF", "B_CR",
68
+ "TARGET_NEST_END", "TARGET_TEXT_SCOPE", "TARGET_SCOPE", "TARGET_TICK",
69
+ "TARGET_END", "METADATA_FENCE", "METADATA_BODY_OPEN", "METADATA_STRING",
70
+ "METADATA_INNER", "METADATA_TICK", "METADATA_QUOTE", "METADATA_NEST_OPEN",
71
+ "METADATA_NEST_END", "METADATA_END", "B_END", "B_EMPTY_END", "B_NEXT_HEADING",
72
+ "B_RUN", "B_TICK", "B_CRLF", "B_LF", "B_CR",
78
73
  ];
79
- activeDelimiter = null;
80
74
  openOp = "";
81
75
  openHeading = "";
82
76
  openHeadingLine = 0;
83
77
  openHeadingColumn = 0;
78
+ fenceLength = 0;
79
+ fenceDelimiter = "";
80
+ started = false;
81
+ // {§inline-chain} — a closer on the heading line may be followed by the next opener on the same line.
82
+ inlineChain = false;
83
+ unclosedAsides = [];
84
+ // After a closer's text, does an opener (backticks, digits, a known name) follow on the same line?
85
+ openerFollows() {
86
+ let cursor = 1;
87
+ while (this.inputStream.LA(cursor) === 0x20 || this.inputStream.LA(cursor) === 0x09)
88
+ cursor++;
89
+ let ticks = 0;
90
+ while (this.inputStream.LA(cursor) === 0x60) {
91
+ ticks++;
92
+ cursor++;
93
+ }
94
+ if (ticks < 3)
95
+ return false;
96
+ while (this.inputStream.LA(cursor) >= 0x30 && this.inputStream.LA(cursor) <= 0x39)
97
+ cursor++;
98
+ let name = "";
99
+ for (;;) {
100
+ const c = this.inputStream.LA(cursor);
101
+ if (c <= 0)
102
+ break;
103
+ const ch = String.fromCharCode(c);
104
+ if (!/[A-Za-z0-9_.+-]/.test(ch))
105
+ break;
106
+ name += ch;
107
+ cursor++;
108
+ }
109
+ return name !== "" && (Object.hasOwn(plurnkLexer.OPERATIONS, name) || this.knownExecutor(name));
110
+ }
111
+ noteUnclosedAside() {
112
+ this.unclosedAsides.push({ line: this.currentTokenStartLine, column: this.currentTokenColumn });
113
+ }
114
+ takeUnclosedAsides() {
115
+ const taken = this.unclosedAsides;
116
+ this.unclosedAsides = [];
117
+ return taken;
118
+ }
119
+ asideClosesOnLine() {
120
+ let cursor = 1;
121
+ for (;;) {
122
+ const c = this.inputStream.LA(cursor);
123
+ if (c <= 0 || c === 0x0A || c === 0x0D)
124
+ return false;
125
+ if (c === 0x2D && this.inputStream.LA(cursor + 1) === 0x2D && this.inputStream.LA(cursor + 2) === 0x3E)
126
+ return true;
127
+ cursor++;
128
+ }
129
+ }
130
+ // {§fence-heading-in-body} - tags that end an open block from inside it; the host adds executors.
131
+ knownExecutors = new Set(["sh"]);
132
+ // {§executor-case} - an executor tag matches its registered name in any case (`SH` is `sh`).
133
+ knownExecutor(name) {
134
+ if (this.knownExecutors.has(name))
135
+ return true;
136
+ const lower = name.toLowerCase();
137
+ for (const known of this.knownExecutors)
138
+ if (known.toLowerCase() === lower)
139
+ return true;
140
+ return false;
141
+ }
84
142
  slotReady = false;
85
143
  targetDepth = 0;
86
144
  metadataDepth = 0;
87
145
  metadataReady = false;
88
- bodyAtStart = false;
89
- terminalSend = false;
90
- documentFence = false;
91
- static PROTOCOL_OPS = [
92
- "FIND", "READ", "EDIT", "COPY", "MOVE",
93
- "SEND", "EXEC", "BARE", "WORK", "FORK", "KILL",
94
- ];
95
- static CLIENT_OPS = ["LOOK", "BUFF"];
96
- isDelimiterChar(c) {
97
- return (c >= 0x30 && c <= 0x39)
98
- || (c >= 0x41 && c <= 0x5A)
99
- || (c >= 0x61 && c <= 0x7A)
100
- || c === 0x5F;
101
- }
102
- matchesLiteral(offset, literal) {
103
- for (let i = 0; i < literal.length; i++) {
104
- if (this.inputStream.LA(offset + i) !== literal.charCodeAt(i))
105
- return false;
106
- }
107
- return true;
146
+ inlineBody = false;
147
+ inlineBodies = [];
148
+ unknownTags = [];
149
+ // {§interstitial-fence} - only a native operation or a known executor opens a block.
150
+ knownHeading() {
151
+ const name = this.text.replace(/^\x60+[0-9]*/, "");
152
+ return Object.hasOwn(plurnkLexer.OPERATIONS, name) || this.knownExecutor(name);
153
+ }
154
+ noteUnknownTag() {
155
+ this.unknownTags.push({ line: this.currentTokenStartLine, column: this.currentTokenColumn, tag: this.text.replace(/^\x60+[0-9]*/, "") });
156
+ }
157
+ takeUnknownTags() {
158
+ const taken = this.unknownTags;
159
+ this.unknownTags = [];
160
+ return taken;
108
161
  }
109
- headingAt(offset) {
110
- let level;
111
- let cursor = offset;
112
- if (this.matchesLiteral(cursor, "## PLAN")) {
113
- level = 1;
114
- cursor += "## PLAN".length;
115
- }
116
- else if (this.matchesLiteral(cursor, "### ")) {
117
- level = 2;
118
- cursor += 4;
119
- }
120
- else {
121
- return null;
122
- }
123
- let op = "PLAN";
124
- if (level === 2) {
125
- const operations = [...plurnkLexer.PROTOCOL_OPS, ...plurnkLexer.CLIENT_OPS];
126
- op = operations.find((candidate) => this.matchesLiteral(cursor, candidate)) ?? "";
127
- if (op.length === 0)
128
- return null;
129
- cursor += op.length;
130
- }
131
- let delimiter = "";
132
- while (this.isDelimiterChar(this.inputStream.LA(cursor))) {
133
- delimiter += String.fromCharCode(this.inputStream.LA(cursor));
134
- cursor++;
135
- }
136
- const next = this.inputStream.LA(cursor);
137
- const headerContinues = next <= 0
138
- || next === 0x20 || next === 0x09
139
- || next === 0x5B || next === 0x28 || next === 0x7B || next === 0x3C
140
- || next === 0x0A || next === 0x0D;
141
- if (!headerContinues)
142
- return null;
143
- const startsNextTurn = this.terminalSend;
144
- if (this.activeDelimiter !== null && delimiter !== this.activeDelimiter && !startsNextTurn)
145
- return null;
146
- return { level, op, delimiter };
147
- }
148
- matchesHeading(level, op) {
149
- // The initial PLAN terminates tolerated provider preamble text, even when
150
- // the provider omitted a separating newline. Once PLAN establishes the
151
- // lane, every heading retains the ordinary column-zero boundary.
152
- const initialPlan = level === 1 && op === "PLAN" && this.activeDelimiter === null;
153
- if (this.column !== 0 && !initialPlan)
154
- return false;
155
- const heading = this.headingAt(1);
156
- return heading !== null && heading.level === level && heading.op === op;
157
- }
158
- open(level, op) {
159
- const prefixLength = (level === 1 ? "## " : "### ").length + op.length;
160
- const delimiter = this.text.slice(prefixLength);
161
- const startsNextTurn = this.terminalSend;
162
- if (this.activeDelimiter === null || startsNextTurn)
163
- this.activeDelimiter = delimiter;
164
- this.openOp = op;
162
+ static OPERATIONS = {
163
+ FIND: plurnkLexer.OPEN_FIND, READ: plurnkLexer.OPEN_READ,
164
+ EDIT: plurnkLexer.OPEN_EDIT, COPY: plurnkLexer.OPEN_COPY, MOVE: plurnkLexer.OPEN_MOVE,
165
+ SEND: plurnkLexer.OPEN_SEND, EXEC: plurnkLexer.OPEN_EXEC, BARE: plurnkLexer.OPEN_BARE,
166
+ TASK: plurnkLexer.OPEN_TASK,
167
+ WORK: plurnkLexer.OPEN_WORK, FORK: plurnkLexer.OPEN_FORK, KILL: plurnkLexer.OPEN_KILL,
168
+ LOOK: plurnkLexer.OPEN_LOOK,
169
+ };
170
+ open(implicitName) {
171
+ this.fenceLength = 0;
172
+ while (this.text.charCodeAt(this.fenceLength) === 0x60)
173
+ this.fenceLength++;
174
+ // {§numeric-delimiter} - digits between the backticks and the name identify the block.
175
+ let digits = this.fenceLength;
176
+ while (this.text.charCodeAt(digits) >= 0x30 && this.text.charCodeAt(digits) <= 0x39)
177
+ digits++;
178
+ this.fenceDelimiter = this.text.slice(this.fenceLength, digits);
179
+ const name = implicitName ?? this.text.slice(digits);
180
+ const native = Object.hasOwn(plurnkLexer.OPERATIONS, name) ? plurnkLexer.OPERATIONS[name] : undefined;
181
+ this.openOp = native === undefined ? "EXEC" : name;
182
+ this.type = native ?? plurnkLexer.OPEN_EXEC;
183
+ this.inlineChain = false;
165
184
  this.openHeading = this.text;
166
185
  this.openHeadingLine = this.currentTokenStartLine;
167
186
  this.openHeadingColumn = this.currentTokenColumn;
187
+ this.started = true;
168
188
  this.slotReady = true;
169
- // {§exec-executor-slot} — an EXEC heading admits `{cwd=…}` before any path; elsewhere metadata follows a target.
170
- this.metadataReady = op === "EXEC";
171
- this.bodyAtStart = false;
172
- this.terminalSend = false;
189
+ // {§one-line-turn} - TASK takes its inventory as a heading-line block; a bracket there is a slot.
190
+ this.metadataReady = this.openOp === "EXEC" || this.openOp === "TASK";
191
+ this.inlineBody = false;
192
+ }
193
+ // {§indented-fences} - a fence line may carry leading horizontal whitespace; the line still
194
+ // starts there for every fence purpose (CommonMark allows three spaces; this allows any).
195
+ atLineStart() {
196
+ for (let back = 1;; back++) {
197
+ const c = this.inputStream.LA(-back);
198
+ if (c <= 0 || c === 0x0A || c === 0x0D)
199
+ return true;
200
+ if (c !== 0x20 && c !== 0x09)
201
+ return false;
202
+ }
203
+ }
204
+ skipHorizontal(offset) {
205
+ while (this.inputStream.LA(offset) === 0x20 || this.inputStream.LA(offset) === 0x09)
206
+ offset++;
207
+ return offset;
173
208
  }
174
209
  offsetAfterEol(offset) {
175
210
  if (this.inputStream.LA(offset) === 0x0D && this.inputStream.LA(offset + 1) === 0x0A)
176
211
  return offset + 2;
177
- if (this.inputStream.LA(offset) === 0x0A)
178
- return offset + 1;
179
- return null;
212
+ return this.inputStream.LA(offset) === 0x0A ? offset + 1 : null;
213
+ }
214
+ // {§fence-closer} - a closer is a line of at least the opener's backticks carrying exactly the
215
+ // opener's numeric delimiter (none when the opener had none). Count is CommonMark's rule; the
216
+ // delimiter is what lets an equal-count block nest ({§numeric-delimiter}).
217
+ closingAt(offset) {
218
+ if (this.inputStream.LA(offset === 1 ? -1 : offset - 1) === 0x60)
219
+ return false;
220
+ offset = this.skipHorizontal(offset);
221
+ let cursor = offset;
222
+ while (this.inputStream.LA(cursor) === 0x60)
223
+ cursor++;
224
+ if (cursor - offset < this.fenceLength)
225
+ return false;
226
+ let digits = "";
227
+ while (this.inputStream.LA(cursor) >= 0x30 && this.inputStream.LA(cursor) <= 0x39) {
228
+ digits += String.fromCharCode(this.inputStream.LA(cursor));
229
+ cursor++;
230
+ }
231
+ if (digits !== this.fenceDelimiter)
232
+ return false;
233
+ while (this.inputStream.LA(cursor) === 0x20 || this.inputStream.LA(cursor) === 0x09)
234
+ cursor++;
235
+ if (this.inputStream.LA(cursor) <= 0 || this.offsetAfterEol(cursor) !== null)
236
+ return true;
237
+ // {§inline-chain} — a closer followed on its line by the next opener still closes.
238
+ let ticks = 0;
239
+ while (this.inputStream.LA(cursor + ticks) === 0x60)
240
+ ticks++;
241
+ if (ticks < 3)
242
+ return false;
243
+ let at = cursor + ticks;
244
+ while (this.inputStream.LA(at) >= 0x30 && this.inputStream.LA(at) <= 0x39)
245
+ at++;
246
+ let name = "";
247
+ for (;;) {
248
+ const c = this.inputStream.LA(at);
249
+ if (c <= 0)
250
+ break;
251
+ const ch = String.fromCharCode(c);
252
+ if (!/[A-Za-z0-9_.+-]/.test(ch))
253
+ break;
254
+ name += ch;
255
+ at++;
256
+ }
257
+ return name !== "" && (Object.hasOwn(plurnkLexer.OPERATIONS, name) || this.knownExecutor(name));
258
+ }
259
+ // {§fence-heading-in-body} - a fence line of four or more backticks naming an operation or a known
260
+ // executor is a heading wherever it stands: it ends the open block without closing it, so a
261
+ // glued opener (eight backticks then READ) can never swallow the turn. A delimited block is exempt: its
262
+ // delimiter says everything up to its own closer is body ({§numeric-delimiter}).
263
+ headingAt(offset) {
264
+ let cursor = offset;
265
+ while (this.inputStream.LA(cursor) === 0x60)
266
+ cursor++;
267
+ if (cursor - offset < 4)
268
+ return false;
269
+ while (this.inputStream.LA(cursor) >= 0x30 && this.inputStream.LA(cursor) <= 0x39)
270
+ cursor++;
271
+ let name = "";
272
+ for (;;) {
273
+ const c = this.inputStream.LA(cursor);
274
+ if (c <= 0)
275
+ break;
276
+ const ch = String.fromCharCode(c);
277
+ if (!/[A-Za-z0-9_.+-]/.test(ch))
278
+ break;
279
+ name += ch;
280
+ cursor++;
281
+ }
282
+ if (name === "")
283
+ return false;
284
+ if (!Object.hasOwn(plurnkLexer.OPERATIONS, name) && !this.knownExecutor(name))
285
+ return false;
286
+ const next = this.inputStream.LA(cursor);
287
+ return next <= 0 || next === 0x20 || next === 0x09 || next === 0x28 || next === 0x3C || next === 0x5B
288
+ || this.offsetAfterEol(cursor) !== null;
180
289
  }
181
- headingAfterDirectEol() {
290
+ headingAfterEol() {
182
291
  const after = this.offsetAfterEol(1);
183
- return after !== null && this.headingAt(after) !== null;
292
+ return after !== null && this.headingAt(this.skipHorizontal(after));
184
293
  }
185
- headingAfterBlankLine() {
186
- let after = this.offsetAfterEol(1);
187
- if (after === null)
188
- return false;
189
- while (this.inputStream.LA(after) === 0x20 || this.inputStream.LA(after) === 0x09)
190
- after++;
191
- after = this.offsetAfterEol(after);
192
- return after !== null && this.headingAt(after) !== null;
294
+ closingAfterEol() {
295
+ const after = this.offsetAfterEol(1);
296
+ return after !== null && this.closingAt(this.skipHorizontal(after));
297
+ }
298
+ targetScopeEnd() {
299
+ let offset = 1;
300
+ while (this.inputStream.LA(offset) === 0x20 || this.inputStream.LA(offset) === 0x09)
301
+ offset++;
302
+ return this.targetDepth === 0 && this.inputStream.LA(offset) === 0x29;
303
+ }
304
+ inlineBodyAhead() {
305
+ const previous = this.inputStream.LA(-1);
306
+ return previous === 0x20 || previous === 0x09;
193
307
  }
194
- headingAfterEmptySpacedLine() {
195
- if (!this.bodyAtStart)
196
- return false;
197
- let after = 1;
198
- while (this.inputStream.LA(after) === 0x20 || this.inputStream.LA(after) === 0x09)
199
- after++;
200
- const lineEnd = this.offsetAfterEol(after);
201
- return lineEnd !== null && this.headingAt(lineEnd) !== null;
202
- }
203
- beginBody() { this.bodyAtStart = true; }
204
- retainBody() { this.bodyAtStart = false; }
205
- // {§heading-inline-body} — body text on the heading line is tolerated AND announced: the
206
- // parser turns each note into one warning-severity advisory after the statement.
207
- inlineBodies = [];
208
308
  noteInlineBody() {
309
+ this.inlineBody = true;
310
+ // {§naked-pattern} - a sigil is a matcher on any heading, and every heading-line word on FIND,
311
+ // READ or KILL is one, so only a bodied operation's stray heading text is worth an advisory.
312
+ const first = this.text.charCodeAt(0);
313
+ if (first === 0x2F || first === 0x24 || first === 0x7E || first === 0x26 || first === 0x5E)
314
+ return;
315
+ if (this.openOp === "FIND" || this.openOp === "READ" || this.openOp === "KILL")
316
+ return;
209
317
  this.inlineBodies.push({ line: this.getOpenTagLine(), column: this.getOpenTagColumn(), heading: this.getOpenHeading() });
210
318
  }
211
319
  takeInlineBodies() {
@@ -213,26 +321,16 @@ export class plurnkLexer extends antlr.Lexer {
213
321
  this.inlineBodies = [];
214
322
  return taken;
215
323
  }
216
- openDocumentFence() { this.documentFence = true; }
217
- closeDocumentFence() { this.documentFence = false; }
218
- inDocumentFence() { return this.documentFence; }
219
- fenceAfterDirectEol() {
220
- const after = this.offsetAfterEol(1);
221
- return after !== null && this.matchesLiteral(after, "```");
222
- }
223
- getOpenTag() { return this.openOp + (this.activeDelimiter ?? ""); }
324
+ getOpenTag() { return this.openOp; }
325
+ getOpenOp() { return this.openOp; }
224
326
  getOpenTagLine() { return this.openHeadingLine; }
225
327
  getOpenTagColumn() { return this.openHeadingColumn; }
226
328
  getOpenHeading() { return this.openHeading; }
227
- // {§kill-scope} — KILL scopes lines of a log body or an entry, so it takes anchors like EDIT.
329
+ getFenceLength() { return this.fenceLength; }
228
330
  isTextCoordinateOp() {
229
331
  return this.openOp === "READ" || this.openOp === "EDIT" || this.openOp === "COPY" || this.openOp === "MOVE"
230
332
  || this.openOp === "KILL" || this.openOp === "LOOK";
231
333
  }
232
- inlineBodyAhead() {
233
- const previous = this.inputStream.LA(-1);
234
- return previous === 0x20 || previous === 0x09;
235
- }
236
334
  constructor(input) {
237
335
  super(input);
238
336
  this.interpreter = new antlr.LexerATNSimulator(this, plurnkLexer._ATN, plurnkLexer.decisionsToDFA, new antlr.PredictionContextCache());
@@ -246,659 +344,452 @@ export class plurnkLexer extends antlr.Lexer {
246
344
  get modeNames() { return plurnkLexer.modeNames; }
247
345
  action(localContext, ruleIndex, actionIndex) {
248
346
  switch (ruleIndex) {
249
- case 10:
250
- this.OPEN_PLAN_action(localContext, actionIndex);
251
- break;
252
- case 11:
253
- this.OPEN_FIND_action(localContext, actionIndex);
254
- break;
255
347
  case 12:
256
- this.OPEN_READ_action(localContext, actionIndex);
348
+ this.OPEN_action(localContext, actionIndex);
257
349
  break;
258
350
  case 13:
259
- this.OPEN_EDIT_action(localContext, actionIndex);
260
- break;
261
- case 14:
262
- this.OPEN_COPY_action(localContext, actionIndex);
263
- break;
264
- case 15:
265
- this.OPEN_MOVE_action(localContext, actionIndex);
266
- break;
267
- case 16:
268
- this.OPEN_SEND_action(localContext, actionIndex);
351
+ this.UNKNOWN_TAG_action(localContext, actionIndex);
269
352
  break;
270
353
  case 17:
271
- this.OPEN_EXEC_action(localContext, actionIndex);
354
+ this.TEXT_RUN_action(localContext, actionIndex);
272
355
  break;
273
356
  case 18:
274
- this.OPEN_BARE_action(localContext, actionIndex);
357
+ this.TEXT_TICK_action(localContext, actionIndex);
275
358
  break;
276
359
  case 19:
277
- this.OPEN_WORK_action(localContext, actionIndex);
360
+ this.SLOTS_NEXT_OPENER_action(localContext, actionIndex);
278
361
  break;
279
362
  case 20:
280
- this.OPEN_FORK_action(localContext, actionIndex);
363
+ this.SLOTS_WS_action(localContext, actionIndex);
281
364
  break;
282
365
  case 21:
283
- this.OPEN_KILL_action(localContext, actionIndex);
366
+ this.SLOTS_LPAREN_action(localContext, actionIndex);
284
367
  break;
285
368
  case 22:
286
- this.OPEN_LOOK_action(localContext, actionIndex);
287
- break;
288
- case 23:
289
- this.OPEN_BUFF_action(localContext, actionIndex);
290
- break;
291
- case 24:
292
- this.FENCE_OPEN_action(localContext, actionIndex);
293
- break;
294
- case 25:
295
- this.FENCE_CLOSE_action(localContext, actionIndex);
296
- break;
297
- case 31:
298
- this.SLOTS_WS_action(localContext, actionIndex);
369
+ this.SLOTS_LBRACKET_action(localContext, actionIndex);
299
370
  break;
300
- case 32:
301
- this.SLOTS_SEND_LABEL_action(localContext, actionIndex);
302
- break;
303
- case 33:
304
- this.SLOTS_EXECUTOR_action(localContext, actionIndex);
305
- break;
306
- case 34:
307
- this.SLOTS_LPAREN_action(localContext, actionIndex);
371
+ case 27:
372
+ this.SLOTS_ASIDE_OPEN_action(localContext, actionIndex);
308
373
  break;
309
- case 35:
310
- this.SLOTS_LBRACE_action(localContext, actionIndex);
374
+ case 28:
375
+ this.SLOTS_END_action(localContext, actionIndex);
311
376
  break;
312
- case 40:
377
+ case 29:
313
378
  this.SLOTS_INLINE_BODY_action(localContext, actionIndex);
314
379
  break;
315
- case 42:
316
- this.SLOTS_BODY_OPEN_action(localContext, actionIndex);
380
+ case 32:
381
+ this.TARGET_FENCE_action(localContext, actionIndex);
317
382
  break;
318
- case 46:
383
+ case 37:
319
384
  this.TARGET_NEST_OPEN_action(localContext, actionIndex);
320
385
  break;
321
- case 47:
386
+ case 38:
322
387
  this.TARGET_NEST_END_action(localContext, actionIndex);
323
388
  break;
324
- case 48:
389
+ case 42:
325
390
  this.TARGET_END_action(localContext, actionIndex);
326
391
  break;
327
- case 50:
392
+ case 43:
393
+ this.METADATA_FENCE_action(localContext, actionIndex);
394
+ break;
395
+ case 49:
328
396
  this.METADATA_NEST_OPEN_action(localContext, actionIndex);
329
397
  break;
330
- case 51:
398
+ case 50:
331
399
  this.METADATA_NEST_END_action(localContext, actionIndex);
332
400
  break;
333
- case 52:
401
+ case 51:
334
402
  this.METADATA_END_action(localContext, actionIndex);
335
403
  break;
336
- case 53:
337
- this.B_FENCE_CLOSE_action(localContext, actionIndex);
404
+ case 52:
405
+ this.B_END_action(localContext, actionIndex);
338
406
  break;
339
- case 58:
340
- this.B_RUN_action(localContext, actionIndex);
407
+ case 53:
408
+ this.B_EMPTY_END_action(localContext, actionIndex);
341
409
  break;
342
- case 59:
410
+ case 57:
343
411
  this.B_CRLF_action(localContext, actionIndex);
344
412
  break;
345
- case 60:
413
+ case 58:
346
414
  this.B_LF_action(localContext, actionIndex);
347
415
  break;
348
- case 61:
349
- this.B_CR_action(localContext, actionIndex);
350
- break;
351
416
  }
352
417
  }
353
- OPEN_PLAN_action(localContext, actionIndex) {
418
+ OPEN_action(localContext, actionIndex) {
354
419
  switch (actionIndex) {
355
420
  case 0:
356
- this.open(1, "PLAN");
421
+ this.open();
357
422
  break;
358
423
  }
359
424
  }
360
- OPEN_FIND_action(localContext, actionIndex) {
425
+ UNKNOWN_TAG_action(localContext, actionIndex) {
361
426
  switch (actionIndex) {
362
427
  case 1:
363
- this.open(2, "FIND");
428
+ this.noteUnknownTag();
364
429
  break;
365
430
  }
366
431
  }
367
- OPEN_READ_action(localContext, actionIndex) {
432
+ TEXT_RUN_action(localContext, actionIndex) {
368
433
  switch (actionIndex) {
369
434
  case 2:
370
- this.open(2, "READ");
435
+ this.inlineChain = false;
371
436
  break;
372
437
  }
373
438
  }
374
- OPEN_EDIT_action(localContext, actionIndex) {
439
+ TEXT_TICK_action(localContext, actionIndex) {
375
440
  switch (actionIndex) {
376
441
  case 3:
377
- this.open(2, "EDIT");
442
+ this.inlineChain = false;
378
443
  break;
379
444
  }
380
445
  }
381
- OPEN_COPY_action(localContext, actionIndex) {
446
+ SLOTS_NEXT_OPENER_action(localContext, actionIndex) {
382
447
  switch (actionIndex) {
383
448
  case 4:
384
- this.open(2, "COPY");
449
+ this.inlineChain = true;
385
450
  break;
386
451
  }
387
452
  }
388
- OPEN_MOVE_action(localContext, actionIndex) {
453
+ SLOTS_WS_action(localContext, actionIndex) {
389
454
  switch (actionIndex) {
390
455
  case 5:
391
- this.open(2, "MOVE");
456
+ this.slotReady = true;
392
457
  break;
393
458
  }
394
459
  }
395
- OPEN_SEND_action(localContext, actionIndex) {
460
+ SLOTS_LPAREN_action(localContext, actionIndex) {
396
461
  switch (actionIndex) {
397
462
  case 6:
398
- this.open(2, "SEND");
463
+ this.targetDepth = 0;
464
+ this.metadataReady = false;
399
465
  break;
400
466
  }
401
467
  }
402
- OPEN_EXEC_action(localContext, actionIndex) {
468
+ SLOTS_LBRACKET_action(localContext, actionIndex) {
403
469
  switch (actionIndex) {
404
470
  case 7:
405
- this.open(2, "EXEC");
471
+ this.metadataDepth = 0;
406
472
  break;
407
473
  }
408
474
  }
409
- OPEN_BARE_action(localContext, actionIndex) {
475
+ SLOTS_ASIDE_OPEN_action(localContext, actionIndex) {
410
476
  switch (actionIndex) {
411
477
  case 8:
412
- this.open(2, "BARE");
478
+ this.noteUnclosedAside();
413
479
  break;
414
480
  }
415
481
  }
416
- OPEN_WORK_action(localContext, actionIndex) {
482
+ SLOTS_END_action(localContext, actionIndex) {
417
483
  switch (actionIndex) {
418
484
  case 9:
419
- this.open(2, "WORK");
485
+ this.inlineChain = this.openerFollows();
420
486
  break;
421
487
  }
422
488
  }
423
- OPEN_FORK_action(localContext, actionIndex) {
489
+ SLOTS_INLINE_BODY_action(localContext, actionIndex) {
424
490
  switch (actionIndex) {
425
491
  case 10:
426
- this.open(2, "FORK");
492
+ this.noteInlineBody();
427
493
  break;
428
494
  }
429
495
  }
430
- OPEN_KILL_action(localContext, actionIndex) {
496
+ TARGET_FENCE_action(localContext, actionIndex) {
431
497
  switch (actionIndex) {
432
498
  case 11:
433
- this.open(2, "KILL");
499
+ this.inlineChain = this.openerFollows();
434
500
  break;
435
501
  }
436
502
  }
437
- OPEN_LOOK_action(localContext, actionIndex) {
503
+ TARGET_NEST_OPEN_action(localContext, actionIndex) {
438
504
  switch (actionIndex) {
439
505
  case 12:
440
- this.open(2, "LOOK");
506
+ this.targetDepth++;
441
507
  break;
442
508
  }
443
509
  }
444
- OPEN_BUFF_action(localContext, actionIndex) {
510
+ TARGET_NEST_END_action(localContext, actionIndex) {
445
511
  switch (actionIndex) {
446
512
  case 13:
447
- this.open(2, "BUFF");
513
+ this.targetDepth--;
448
514
  break;
449
515
  }
450
516
  }
451
- FENCE_OPEN_action(localContext, actionIndex) {
517
+ TARGET_END_action(localContext, actionIndex) {
452
518
  switch (actionIndex) {
453
519
  case 14:
454
- this.openDocumentFence();
455
- break;
456
- }
457
- }
458
- FENCE_CLOSE_action(localContext, actionIndex) {
459
- switch (actionIndex) {
460
- case 15:
461
- this.closeDocumentFence();
462
- break;
463
- }
464
- }
465
- SLOTS_WS_action(localContext, actionIndex) {
466
- switch (actionIndex) {
467
- case 16:
468
- this.slotReady = true;
469
- break;
470
- }
471
- }
472
- SLOTS_SEND_LABEL_action(localContext, actionIndex) {
473
- switch (actionIndex) {
474
- case 17:
475
- this.terminalSend = true;
476
- this.slotReady = true;
477
- this.metadataReady = false;
478
- break;
479
- }
480
- }
481
- SLOTS_EXECUTOR_action(localContext, actionIndex) {
482
- switch (actionIndex) {
483
- case 18:
484
520
  this.slotReady = true;
485
521
  this.metadataReady = true;
486
522
  break;
487
523
  }
488
524
  }
489
- SLOTS_LPAREN_action(localContext, actionIndex) {
490
- switch (actionIndex) {
491
- case 19:
492
- this.targetDepth = 0;
493
- this.metadataReady = false;
494
- break;
495
- }
496
- }
497
- SLOTS_LBRACE_action(localContext, actionIndex) {
525
+ METADATA_FENCE_action(localContext, actionIndex) {
498
526
  switch (actionIndex) {
499
- case 20:
500
- this.metadataDepth = 0;
501
- break;
502
- }
503
- }
504
- SLOTS_INLINE_BODY_action(localContext, actionIndex) {
505
- switch (actionIndex) {
506
- case 21:
507
- this.noteInlineBody();
508
- this.retainBody();
509
- break;
510
- }
511
- }
512
- SLOTS_BODY_OPEN_action(localContext, actionIndex) {
513
- switch (actionIndex) {
514
- case 22:
515
- this.beginBody();
516
- break;
517
- }
518
- }
519
- TARGET_NEST_OPEN_action(localContext, actionIndex) {
520
- switch (actionIndex) {
521
- case 23:
522
- this.targetDepth++;
523
- break;
524
- }
525
- }
526
- TARGET_NEST_END_action(localContext, actionIndex) {
527
- switch (actionIndex) {
528
- case 24:
529
- this.targetDepth--;
530
- break;
531
- }
532
- }
533
- TARGET_END_action(localContext, actionIndex) {
534
- switch (actionIndex) {
535
- case 25:
536
- this.slotReady = true;
537
- this.metadataReady = true;
527
+ case 15:
528
+ this.inlineChain = this.openerFollows();
538
529
  break;
539
530
  }
540
531
  }
541
532
  METADATA_NEST_OPEN_action(localContext, actionIndex) {
542
533
  switch (actionIndex) {
543
- case 26:
534
+ case 16:
544
535
  this.metadataDepth++;
545
536
  break;
546
537
  }
547
538
  }
548
539
  METADATA_NEST_END_action(localContext, actionIndex) {
549
540
  switch (actionIndex) {
550
- case 27:
541
+ case 17:
551
542
  this.metadataDepth--;
552
543
  break;
553
544
  }
554
545
  }
555
546
  METADATA_END_action(localContext, actionIndex) {
556
547
  switch (actionIndex) {
557
- case 28:
548
+ case 18:
558
549
  this.slotReady = true;
559
550
  this.metadataReady = true;
560
551
  break;
561
552
  }
562
553
  }
563
- B_FENCE_CLOSE_action(localContext, actionIndex) {
554
+ B_END_action(localContext, actionIndex) {
564
555
  switch (actionIndex) {
565
- case 29:
566
- this.closeDocumentFence();
556
+ case 19:
557
+ this.inlineChain = this.openerFollows();
567
558
  break;
568
559
  }
569
560
  }
570
- B_RUN_action(localContext, actionIndex) {
561
+ B_EMPTY_END_action(localContext, actionIndex) {
571
562
  switch (actionIndex) {
572
- case 30:
573
- this.retainBody();
563
+ case 20:
564
+ this.inlineChain = this.openerFollows();
574
565
  break;
575
566
  }
576
567
  }
577
568
  B_CRLF_action(localContext, actionIndex) {
578
569
  switch (actionIndex) {
579
- case 31:
580
- this.retainBody();
570
+ case 21:
571
+ this.inlineBody = false;
581
572
  break;
582
573
  }
583
574
  }
584
575
  B_LF_action(localContext, actionIndex) {
585
576
  switch (actionIndex) {
586
- case 32:
587
- this.retainBody();
588
- break;
589
- }
590
- }
591
- B_CR_action(localContext, actionIndex) {
592
- switch (actionIndex) {
593
- case 33:
594
- this.retainBody();
577
+ case 22:
578
+ this.inlineBody = false;
595
579
  break;
596
580
  }
597
581
  }
598
582
  sempred(localContext, ruleIndex, predIndex) {
599
583
  switch (ruleIndex) {
600
- case 10:
601
- return this.OPEN_PLAN_sempred(localContext, predIndex);
602
- case 11:
603
- return this.OPEN_FIND_sempred(localContext, predIndex);
604
584
  case 12:
605
- return this.OPEN_READ_sempred(localContext, predIndex);
585
+ return this.OPEN_sempred(localContext, predIndex);
606
586
  case 13:
607
- return this.OPEN_EDIT_sempred(localContext, predIndex);
608
- case 14:
609
- return this.OPEN_COPY_sempred(localContext, predIndex);
610
- case 15:
611
- return this.OPEN_MOVE_sempred(localContext, predIndex);
612
- case 16:
613
- return this.OPEN_SEND_sempred(localContext, predIndex);
614
- case 17:
615
- return this.OPEN_EXEC_sempred(localContext, predIndex);
616
- case 18:
617
- return this.OPEN_BARE_sempred(localContext, predIndex);
587
+ return this.UNKNOWN_TAG_sempred(localContext, predIndex);
618
588
  case 19:
619
- return this.OPEN_WORK_sempred(localContext, predIndex);
620
- case 20:
621
- return this.OPEN_FORK_sempred(localContext, predIndex);
589
+ return this.SLOTS_NEXT_OPENER_sempred(localContext, predIndex);
622
590
  case 21:
623
- return this.OPEN_KILL_sempred(localContext, predIndex);
591
+ return this.SLOTS_LPAREN_sempred(localContext, predIndex);
624
592
  case 22:
625
- return this.OPEN_LOOK_sempred(localContext, predIndex);
593
+ return this.SLOTS_LBRACKET_sempred(localContext, predIndex);
626
594
  case 23:
627
- return this.OPEN_BUFF_sempred(localContext, predIndex);
595
+ return this.SLOTS_TEXT_L_sempred(localContext, predIndex);
628
596
  case 24:
629
- return this.FENCE_OPEN_sempred(localContext, predIndex);
597
+ return this.SLOTS_L_sempred(localContext, predIndex);
630
598
  case 25:
631
- return this.FENCE_CLOSE_sempred(localContext, predIndex);
599
+ return this.SLOTS_COMBINED_TEXT_L_sempred(localContext, predIndex);
600
+ case 26:
601
+ return this.SLOTS_ASIDE_sempred(localContext, predIndex);
602
+ case 27:
603
+ return this.SLOTS_ASIDE_OPEN_sempred(localContext, predIndex);
604
+ case 28:
605
+ return this.SLOTS_END_sempred(localContext, predIndex);
606
+ case 29:
607
+ return this.SLOTS_INLINE_BODY_sempred(localContext, predIndex);
608
+ case 30:
609
+ return this.SLOTS_NEXT_HEADING_sempred(localContext, predIndex);
632
610
  case 32:
633
- return this.SLOTS_SEND_LABEL_sempred(localContext, predIndex);
634
- case 33:
635
- return this.SLOTS_EXECUTOR_sempred(localContext, predIndex);
636
- case 34:
637
- return this.SLOTS_LPAREN_sempred(localContext, predIndex);
638
- case 35:
639
- return this.SLOTS_LBRACE_sempred(localContext, predIndex);
640
- case 36:
641
- return this.SLOTS_TEXT_L_sempred(localContext, predIndex);
642
- case 37:
643
- return this.SLOTS_L_sempred(localContext, predIndex);
611
+ return this.TARGET_FENCE_sempred(localContext, predIndex);
644
612
  case 38:
645
- return this.SLOTS_COMBINED_TEXT_L_sempred(localContext, predIndex);
613
+ return this.TARGET_NEST_END_sempred(localContext, predIndex);
646
614
  case 39:
647
- return this.SLOTS_ANNOTATION_sempred(localContext, predIndex);
615
+ return this.TARGET_TEXT_SCOPE_sempred(localContext, predIndex);
648
616
  case 40:
649
- return this.SLOTS_INLINE_BODY_sempred(localContext, predIndex);
650
- case 41:
651
- return this.SLOTS_DIRECT_END_sempred(localContext, predIndex);
652
- case 47:
653
- return this.TARGET_NEST_END_sempred(localContext, predIndex);
654
- case 51:
617
+ return this.TARGET_SCOPE_sempred(localContext, predIndex);
618
+ case 43:
619
+ return this.METADATA_FENCE_sempred(localContext, predIndex);
620
+ case 50:
655
621
  return this.METADATA_NEST_END_sempred(localContext, predIndex);
622
+ case 52:
623
+ return this.B_END_sempred(localContext, predIndex);
656
624
  case 53:
657
- return this.B_FENCE_CLOSE_sempred(localContext, predIndex);
625
+ return this.B_EMPTY_END_sempred(localContext, predIndex);
658
626
  case 54:
659
- return this.B_FENCE_END_sempred(localContext, predIndex);
660
- case 55:
661
- return this.B_SECTION_END_sempred(localContext, predIndex);
662
- case 56:
663
- return this.B_DIRECT_END_sempred(localContext, predIndex);
664
- case 57:
665
- return this.B_EMPTY_SPACED_END_sempred(localContext, predIndex);
627
+ return this.B_NEXT_HEADING_sempred(localContext, predIndex);
666
628
  }
667
629
  return true;
668
630
  }
669
- OPEN_PLAN_sempred(localContext, predIndex) {
631
+ OPEN_sempred(localContext, predIndex) {
670
632
  switch (predIndex) {
671
633
  case 0:
672
- return this.matchesHeading(1, "PLAN");
673
- }
674
- return true;
675
- }
676
- OPEN_FIND_sempred(localContext, predIndex) {
677
- switch (predIndex) {
634
+ return this.atLineStart() || !this.started || this.inlineChain;
678
635
  case 1:
679
- return this.matchesHeading(2, "FIND");
636
+ return this.knownHeading();
680
637
  }
681
638
  return true;
682
639
  }
683
- OPEN_READ_sempred(localContext, predIndex) {
640
+ UNKNOWN_TAG_sempred(localContext, predIndex) {
684
641
  switch (predIndex) {
685
642
  case 2:
686
- return this.matchesHeading(2, "READ");
643
+ return this.atLineStart() || !this.started;
687
644
  }
688
645
  return true;
689
646
  }
690
- OPEN_EDIT_sempred(localContext, predIndex) {
647
+ SLOTS_NEXT_OPENER_sempred(localContext, predIndex) {
691
648
  switch (predIndex) {
692
649
  case 3:
693
- return this.matchesHeading(2, "EDIT");
650
+ return this.slotReady && this.openerFollows();
694
651
  }
695
652
  return true;
696
653
  }
697
- OPEN_COPY_sempred(localContext, predIndex) {
654
+ SLOTS_LPAREN_sempred(localContext, predIndex) {
698
655
  switch (predIndex) {
699
656
  case 4:
700
- return this.matchesHeading(2, "COPY");
657
+ return this.slotReady;
701
658
  }
702
659
  return true;
703
660
  }
704
- OPEN_MOVE_sempred(localContext, predIndex) {
661
+ SLOTS_LBRACKET_sempred(localContext, predIndex) {
705
662
  switch (predIndex) {
706
663
  case 5:
707
- return this.matchesHeading(2, "MOVE");
664
+ return this.slotReady && this.metadataReady;
708
665
  }
709
666
  return true;
710
667
  }
711
- OPEN_SEND_sempred(localContext, predIndex) {
668
+ SLOTS_TEXT_L_sempred(localContext, predIndex) {
712
669
  switch (predIndex) {
713
670
  case 6:
714
- return this.matchesHeading(2, "SEND");
671
+ return this.slotReady && this.isTextCoordinateOp();
715
672
  }
716
673
  return true;
717
674
  }
718
- OPEN_EXEC_sempred(localContext, predIndex) {
675
+ SLOTS_L_sempred(localContext, predIndex) {
719
676
  switch (predIndex) {
720
677
  case 7:
721
- return this.matchesHeading(2, "EXEC");
678
+ return this.slotReady;
722
679
  }
723
680
  return true;
724
681
  }
725
- OPEN_BARE_sempred(localContext, predIndex) {
682
+ SLOTS_COMBINED_TEXT_L_sempred(localContext, predIndex) {
726
683
  switch (predIndex) {
727
684
  case 8:
728
- return this.matchesHeading(2, "BARE");
685
+ return this.slotReady && this.isTextCoordinateOp();
729
686
  }
730
687
  return true;
731
688
  }
732
- OPEN_WORK_sempred(localContext, predIndex) {
689
+ SLOTS_ASIDE_sempred(localContext, predIndex) {
733
690
  switch (predIndex) {
734
691
  case 9:
735
- return this.matchesHeading(2, "WORK");
692
+ return this.slotReady;
736
693
  }
737
694
  return true;
738
695
  }
739
- OPEN_FORK_sempred(localContext, predIndex) {
696
+ SLOTS_ASIDE_OPEN_sempred(localContext, predIndex) {
740
697
  switch (predIndex) {
741
698
  case 10:
742
- return this.matchesHeading(2, "FORK");
699
+ return this.slotReady && !this.asideClosesOnLine();
743
700
  }
744
701
  return true;
745
702
  }
746
- OPEN_KILL_sempred(localContext, predIndex) {
703
+ SLOTS_END_sempred(localContext, predIndex) {
747
704
  switch (predIndex) {
748
705
  case 11:
749
- return this.matchesHeading(2, "KILL");
706
+ return this.closingAt(1);
750
707
  }
751
708
  return true;
752
709
  }
753
- OPEN_LOOK_sempred(localContext, predIndex) {
710
+ SLOTS_INLINE_BODY_sempred(localContext, predIndex) {
754
711
  switch (predIndex) {
755
712
  case 12:
756
- return this.matchesHeading(2, "LOOK");
713
+ return this.slotReady && this.inlineBodyAhead();
757
714
  }
758
715
  return true;
759
716
  }
760
- OPEN_BUFF_sempred(localContext, predIndex) {
717
+ SLOTS_NEXT_HEADING_sempred(localContext, predIndex) {
761
718
  switch (predIndex) {
762
719
  case 13:
763
- return this.matchesHeading(2, "BUFF");
720
+ return this.fenceDelimiter === "" && this.headingAfterEol();
764
721
  }
765
722
  return true;
766
723
  }
767
- FENCE_OPEN_sempred(localContext, predIndex) {
724
+ TARGET_FENCE_sempred(localContext, predIndex) {
768
725
  switch (predIndex) {
769
726
  case 14:
770
- return this.column === 0 && !this.inDocumentFence();
727
+ return this.closingAt(1);
771
728
  }
772
729
  return true;
773
730
  }
774
- FENCE_CLOSE_sempred(localContext, predIndex) {
731
+ TARGET_NEST_END_sempred(localContext, predIndex) {
775
732
  switch (predIndex) {
776
733
  case 15:
777
- return this.column === 0 && this.inDocumentFence();
734
+ return this.targetDepth > 0;
778
735
  }
779
736
  return true;
780
737
  }
781
- SLOTS_SEND_LABEL_sempred(localContext, predIndex) {
738
+ TARGET_TEXT_SCOPE_sempred(localContext, predIndex) {
782
739
  switch (predIndex) {
783
740
  case 16:
784
- return this.slotReady && this.openOp === "SEND";
785
- }
786
- return true;
787
- }
788
- SLOTS_EXECUTOR_sempred(localContext, predIndex) {
789
- switch (predIndex) {
741
+ return this.isTextCoordinateOp();
790
742
  case 17:
791
- return this.slotReady && this.openOp === "EXEC";
743
+ return this.targetScopeEnd();
792
744
  }
793
745
  return true;
794
746
  }
795
- SLOTS_LPAREN_sempred(localContext, predIndex) {
747
+ TARGET_SCOPE_sempred(localContext, predIndex) {
796
748
  switch (predIndex) {
797
749
  case 18:
798
- return this.slotReady;
799
- }
800
- return true;
801
- }
802
- SLOTS_LBRACE_sempred(localContext, predIndex) {
803
- switch (predIndex) {
750
+ return this.openOp === "FIND" || this.openOp === "EXEC" || this.openOp === "SEND";
804
751
  case 19:
805
- return this.slotReady && this.metadataReady;
752
+ return this.targetScopeEnd();
806
753
  }
807
754
  return true;
808
755
  }
809
- SLOTS_TEXT_L_sempred(localContext, predIndex) {
756
+ METADATA_FENCE_sempred(localContext, predIndex) {
810
757
  switch (predIndex) {
811
758
  case 20:
812
- return this.slotReady && this.isTextCoordinateOp();
759
+ return this.closingAt(1);
813
760
  }
814
761
  return true;
815
762
  }
816
- SLOTS_L_sempred(localContext, predIndex) {
763
+ METADATA_NEST_END_sempred(localContext, predIndex) {
817
764
  switch (predIndex) {
818
765
  case 21:
819
- return this.slotReady;
766
+ return this.metadataDepth > 0;
820
767
  }
821
768
  return true;
822
769
  }
823
- SLOTS_COMBINED_TEXT_L_sempred(localContext, predIndex) {
770
+ B_END_sempred(localContext, predIndex) {
824
771
  switch (predIndex) {
825
772
  case 22:
826
- return this.slotReady && this.isTextCoordinateOp();
773
+ return this.closingAfterEol();
827
774
  }
828
775
  return true;
829
776
  }
830
- SLOTS_ANNOTATION_sempred(localContext, predIndex) {
777
+ B_EMPTY_END_sempred(localContext, predIndex) {
831
778
  switch (predIndex) {
832
779
  case 23:
833
- return this.slotReady;
780
+ return (this.atLineStart() || this.inlineBody) && this.closingAt(1);
834
781
  }
835
782
  return true;
836
783
  }
837
- SLOTS_INLINE_BODY_sempred(localContext, predIndex) {
784
+ B_NEXT_HEADING_sempred(localContext, predIndex) {
838
785
  switch (predIndex) {
839
786
  case 24:
840
- return this.slotReady && this.inlineBodyAhead();
841
- }
842
- return true;
843
- }
844
- SLOTS_DIRECT_END_sempred(localContext, predIndex) {
845
- switch (predIndex) {
846
- case 25:
847
- return this.headingAfterDirectEol();
848
- }
849
- return true;
850
- }
851
- TARGET_NEST_END_sempred(localContext, predIndex) {
852
- switch (predIndex) {
853
- case 26:
854
- return this.targetDepth > 0;
855
- }
856
- return true;
857
- }
858
- METADATA_NEST_END_sempred(localContext, predIndex) {
859
- switch (predIndex) {
860
- case 27:
861
- return this.metadataDepth > 0;
862
- }
863
- return true;
864
- }
865
- B_FENCE_CLOSE_sempred(localContext, predIndex) {
866
- switch (predIndex) {
867
- case 28:
868
- return this.column === 0 && this.inDocumentFence();
869
- }
870
- return true;
871
- }
872
- B_FENCE_END_sempred(localContext, predIndex) {
873
- switch (predIndex) {
874
- case 29:
875
- return this.inDocumentFence() && this.fenceAfterDirectEol();
876
- }
877
- return true;
878
- }
879
- B_SECTION_END_sempred(localContext, predIndex) {
880
- switch (predIndex) {
881
- case 30:
882
- return this.headingAfterBlankLine();
883
- }
884
- return true;
885
- }
886
- B_DIRECT_END_sempred(localContext, predIndex) {
887
- switch (predIndex) {
888
- case 31:
889
- return this.headingAfterDirectEol();
890
- }
891
- return true;
892
- }
893
- B_EMPTY_SPACED_END_sempred(localContext, predIndex) {
894
- switch (predIndex) {
895
- case 32:
896
- return this.headingAfterEmptySpacedLine();
787
+ return this.fenceDelimiter === "" && this.headingAfterEol();
897
788
  }
898
789
  return true;
899
790
  }
900
791
  static _serializedATN = [
901
- 4, 0, 35, 811, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3,
792
+ 4, 0, 32, 684, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3,
902
793
  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,
903
794
  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,
904
795
  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,
@@ -907,296 +798,251 @@ export class plurnkLexer extends antlr.Lexer {
907
798
  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,
908
799
  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,
909
800
  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,
910
- 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 1, 0, 4, 0, 131,
911
- 8, 0, 11, 0, 12, 0, 132, 1, 1, 3, 1, 136, 8, 1, 1, 1, 4, 1, 139, 8, 1, 11, 1, 12, 1, 140,
912
- 1, 1, 1, 1, 4, 1, 145, 8, 1, 11, 1, 12, 1, 146, 3, 1, 149, 8, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1,
913
- 2, 3, 2, 156, 8, 2, 3, 2, 158, 8, 2, 1, 2, 5, 2, 161, 8, 2, 10, 2, 12, 2, 164, 9, 2, 1, 2,
914
- 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 3, 4, 177, 8, 4, 1, 5, 1, 5, 1, 5,
915
- 1, 5, 3, 5, 183, 8, 5, 1, 5, 5, 5, 186, 8, 5, 10, 5, 12, 5, 189, 9, 5, 1, 5, 1, 5, 1, 6, 1,
916
- 6, 1, 6, 1, 6, 5, 6, 197, 8, 6, 10, 6, 12, 6, 200, 9, 6, 1, 7, 1, 7, 3, 7, 204, 8, 7, 1, 8,
917
- 1, 8, 1, 8, 1, 8, 3, 8, 210, 8, 8, 1, 8, 5, 8, 213, 8, 8, 10, 8, 12, 8, 216, 9, 8, 1, 8, 1,
918
- 8, 1, 9, 3, 9, 221, 8, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10,
919
- 1, 10, 1, 10, 3, 10, 235, 8, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11,
920
- 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 252, 8, 11, 1, 11, 1, 11, 1, 11,
921
- 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12,
922
- 269, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13,
923
- 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 286, 8, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14,
924
- 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 303, 8, 14, 1, 14,
925
- 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15,
926
- 1, 15, 3, 15, 320, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16,
927
- 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 337, 8, 16, 1, 16, 1, 16, 1, 16, 1, 16,
928
- 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 354,
929
- 8, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18,
930
- 1, 18, 1, 18, 1, 18, 3, 18, 371, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19,
931
- 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 388, 8, 19, 1, 19, 1, 19,
932
- 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20,
933
- 3, 20, 405, 8, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21,
934
- 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 422, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22,
935
- 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 439, 8, 22,
936
- 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23,
937
- 1, 23, 1, 23, 3, 23, 456, 8, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24,
938
- 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24,
939
- 1, 24, 1, 24, 1, 24, 3, 24, 482, 8, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25,
940
- 1, 25, 1, 25, 3, 25, 493, 8, 25, 1, 25, 1, 25, 1, 26, 4, 26, 498, 8, 26, 11, 26, 12, 26,
941
- 499, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 5, 27,
942
- 513, 8, 27, 10, 27, 12, 27, 516, 9, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27,
943
- 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28,
944
- 1, 28, 1, 28, 1, 28, 5, 28, 541, 8, 28, 10, 28, 12, 28, 544, 9, 28, 1, 28, 1, 28, 1, 28,
945
- 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 4, 29, 560,
946
- 8, 29, 11, 29, 12, 29, 561, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 4, 31, 569, 8, 31, 11, 31,
947
- 12, 31, 570, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32,
948
- 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 595,
949
- 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 4, 33, 605, 8, 33, 11, 33,
950
- 12, 33, 606, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34,
951
- 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36,
952
- 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39,
953
- 1, 39, 1, 39, 1, 39, 1, 39, 5, 39, 650, 8, 39, 10, 39, 12, 39, 653, 9, 39, 1, 39, 1, 39,
954
- 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41,
955
- 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,
956
- 1, 43, 1, 43, 1, 44, 4, 44, 686, 8, 44, 11, 44, 12, 44, 687, 1, 44, 1, 44, 1, 45, 1, 45,
957
- 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47,
958
- 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 4, 49, 714, 8, 49, 11, 49, 12, 49, 715,
959
- 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51,
960
- 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53,
961
- 743, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54,
962
- 1, 55, 1, 55, 1, 55, 5, 55, 759, 8, 55, 10, 55, 12, 55, 762, 9, 55, 1, 55, 1, 55, 1, 55,
963
- 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 4, 57, 777, 8, 57,
964
- 11, 57, 12, 57, 778, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 4, 58, 787, 8, 58, 11, 58,
965
- 12, 58, 788, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59,
966
- 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 3, 514, 542, 651,
967
- 0, 62, 5, 0, 7, 0, 9, 0, 11, 0, 13, 0, 15, 0, 17, 0, 19, 0, 21, 0, 23, 0, 25, 16, 27, 17,
968
- 29, 18, 31, 19, 33, 20, 35, 21, 37, 22, 39, 23, 41, 24, 43, 25, 45, 26, 47, 27, 49, 28,
969
- 51, 29, 53, 30, 55, 31, 57, 32, 59, 0, 61, 0, 63, 12, 65, 34, 67, 33, 69, 0, 71, 0, 73,
970
- 0, 75, 0, 77, 0, 79, 0, 81, 0, 83, 0, 85, 0, 87, 0, 89, 0, 91, 0, 93, 0, 95, 35, 97, 0, 99,
971
- 0, 101, 0, 103, 0, 105, 0, 107, 0, 109, 0, 111, 0, 113, 0, 115, 0, 117, 0, 119, 0, 121,
972
- 0, 123, 0, 125, 0, 127, 0, 5, 0, 1, 2, 3, 4, 14, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122,
973
- 1, 0, 48, 57, 3, 0, 48, 57, 65, 90, 97, 122, 2, 0, 32, 32, 58, 58, 1, 0, 49, 57, 3, 0, 9,
974
- 10, 13, 13, 32, 32, 4, 0, 9, 10, 13, 13, 32, 32, 35, 35, 2, 0, 9, 9, 32, 32, 6, 0, 43, 43,
975
- 45, 46, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 10, 10, 13, 13, 6, 0, 9, 10, 13, 13, 32,
976
- 32, 40, 40, 60, 60, 91, 91, 2, 0, 40, 41, 92, 92, 5, 0, 10, 10, 13, 13, 40, 41, 60, 60,
977
- 92, 92, 4, 0, 10, 10, 13, 13, 123, 123, 125, 125, 844, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0,
978
- 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0,
979
- 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0,
980
- 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0,
981
- 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 1, 67, 1, 0,
982
- 0, 0, 1, 69, 1, 0, 0, 0, 1, 71, 1, 0, 0, 0, 1, 73, 1, 0, 0, 0, 1, 75, 1, 0, 0, 0, 1, 77, 1, 0,
983
- 0, 0, 1, 79, 1, 0, 0, 0, 1, 81, 1, 0, 0, 0, 1, 83, 1, 0, 0, 0, 1, 85, 1, 0, 0, 0, 1, 87, 1, 0,
984
- 0, 0, 1, 89, 1, 0, 0, 0, 2, 91, 1, 0, 0, 0, 2, 93, 1, 0, 0, 0, 2, 95, 1, 0, 0, 0, 2, 97, 1, 0,
985
- 0, 0, 2, 99, 1, 0, 0, 0, 2, 101, 1, 0, 0, 0, 3, 103, 1, 0, 0, 0, 3, 105, 1, 0, 0, 0, 3, 107,
986
- 1, 0, 0, 0, 3, 109, 1, 0, 0, 0, 4, 111, 1, 0, 0, 0, 4, 113, 1, 0, 0, 0, 4, 115, 1, 0, 0, 0,
987
- 4, 117, 1, 0, 0, 0, 4, 119, 1, 0, 0, 0, 4, 121, 1, 0, 0, 0, 4, 123, 1, 0, 0, 0, 4, 125, 1,
988
- 0, 0, 0, 4, 127, 1, 0, 0, 0, 5, 130, 1, 0, 0, 0, 7, 135, 1, 0, 0, 0, 9, 150, 1, 0, 0, 0, 11,
989
- 167, 1, 0, 0, 0, 13, 176, 1, 0, 0, 0, 15, 178, 1, 0, 0, 0, 17, 192, 1, 0, 0, 0, 19, 203,
990
- 1, 0, 0, 0, 21, 205, 1, 0, 0, 0, 23, 220, 1, 0, 0, 0, 25, 224, 1, 0, 0, 0, 27, 240, 1, 0,
991
- 0, 0, 29, 257, 1, 0, 0, 0, 31, 274, 1, 0, 0, 0, 33, 291, 1, 0, 0, 0, 35, 308, 1, 0, 0, 0,
992
- 37, 325, 1, 0, 0, 0, 39, 342, 1, 0, 0, 0, 41, 359, 1, 0, 0, 0, 43, 376, 1, 0, 0, 0, 45, 393,
993
- 1, 0, 0, 0, 47, 410, 1, 0, 0, 0, 49, 427, 1, 0, 0, 0, 51, 444, 1, 0, 0, 0, 53, 461, 1, 0,
994
- 0, 0, 55, 486, 1, 0, 0, 0, 57, 497, 1, 0, 0, 0, 59, 503, 1, 0, 0, 0, 61, 528, 1, 0, 0, 0,
995
- 63, 559, 1, 0, 0, 0, 65, 563, 1, 0, 0, 0, 67, 568, 1, 0, 0, 0, 69, 576, 1, 0, 0, 0, 71, 601,
996
- 1, 0, 0, 0, 73, 613, 1, 0, 0, 0, 75, 620, 1, 0, 0, 0, 77, 627, 1, 0, 0, 0, 79, 632, 1, 0,
997
- 0, 0, 81, 637, 1, 0, 0, 0, 83, 642, 1, 0, 0, 0, 85, 660, 1, 0, 0, 0, 87, 667, 1, 0, 0, 0,
998
- 89, 673, 1, 0, 0, 0, 91, 679, 1, 0, 0, 0, 93, 685, 1, 0, 0, 0, 95, 691, 1, 0, 0, 0, 97, 695,
999
- 1, 0, 0, 0, 99, 700, 1, 0, 0, 0, 101, 706, 1, 0, 0, 0, 103, 713, 1, 0, 0, 0, 105, 719, 1,
1000
- 0, 0, 0, 107, 724, 1, 0, 0, 0, 109, 730, 1, 0, 0, 0, 111, 736, 1, 0, 0, 0, 113, 749, 1,
1001
- 0, 0, 0, 115, 755, 1, 0, 0, 0, 117, 768, 1, 0, 0, 0, 119, 774, 1, 0, 0, 0, 121, 786, 1,
1002
- 0, 0, 0, 123, 794, 1, 0, 0, 0, 125, 801, 1, 0, 0, 0, 127, 806, 1, 0, 0, 0, 129, 131, 7,
1003
- 0, 0, 0, 130, 129, 1, 0, 0, 0, 131, 132, 1, 0, 0, 0, 132, 130, 1, 0, 0, 0, 132, 133, 1,
1004
- 0, 0, 0, 133, 6, 1, 0, 0, 0, 134, 136, 5, 45, 0, 0, 135, 134, 1, 0, 0, 0, 135, 136, 1, 0,
1005
- 0, 0, 136, 138, 1, 0, 0, 0, 137, 139, 7, 1, 0, 0, 138, 137, 1, 0, 0, 0, 139, 140, 1, 0,
1006
- 0, 0, 140, 138, 1, 0, 0, 0, 140, 141, 1, 0, 0, 0, 141, 148, 1, 0, 0, 0, 142, 144, 5, 46,
1007
- 0, 0, 143, 145, 7, 1, 0, 0, 144, 143, 1, 0, 0, 0, 145, 146, 1, 0, 0, 0, 146, 144, 1, 0,
1008
- 0, 0, 146, 147, 1, 0, 0, 0, 147, 149, 1, 0, 0, 0, 148, 142, 1, 0, 0, 0, 148, 149, 1, 0,
1009
- 0, 0, 149, 8, 1, 0, 0, 0, 150, 151, 5, 60, 0, 0, 151, 162, 3, 7, 1, 0, 152, 158, 5, 45,
1010
- 0, 0, 153, 155, 5, 44, 0, 0, 154, 156, 5, 32, 0, 0, 155, 154, 1, 0, 0, 0, 155, 156, 1,
1011
- 0, 0, 0, 156, 158, 1, 0, 0, 0, 157, 152, 1, 0, 0, 0, 157, 153, 1, 0, 0, 0, 158, 159, 1,
1012
- 0, 0, 0, 159, 161, 3, 7, 1, 0, 160, 157, 1, 0, 0, 0, 161, 164, 1, 0, 0, 0, 162, 160, 1,
1013
- 0, 0, 0, 162, 163, 1, 0, 0, 0, 163, 165, 1, 0, 0, 0, 164, 162, 1, 0, 0, 0, 165, 166, 5,
1014
- 62, 0, 0, 166, 10, 1, 0, 0, 0, 167, 168, 5, 64, 0, 0, 168, 169, 7, 2, 0, 0, 169, 170, 7,
1015
- 2, 0, 0, 170, 171, 7, 2, 0, 0, 171, 172, 7, 2, 0, 0, 172, 173, 7, 2, 0, 0, 173, 12, 1, 0,
1016
- 0, 0, 174, 177, 3, 7, 1, 0, 175, 177, 3, 11, 3, 0, 176, 174, 1, 0, 0, 0, 176, 175, 1, 0,
1017
- 0, 0, 177, 14, 1, 0, 0, 0, 178, 179, 5, 60, 0, 0, 179, 187, 3, 13, 4, 0, 180, 182, 5, 44,
1018
- 0, 0, 181, 183, 5, 32, 0, 0, 182, 181, 1, 0, 0, 0, 182, 183, 1, 0, 0, 0, 183, 184, 1, 0,
1019
- 0, 0, 184, 186, 3, 13, 4, 0, 185, 180, 1, 0, 0, 0, 186, 189, 1, 0, 0, 0, 187, 185, 1, 0,
1020
- 0, 0, 187, 188, 1, 0, 0, 0, 188, 190, 1, 0, 0, 0, 189, 187, 1, 0, 0, 0, 190, 191, 5, 62,
1021
- 0, 0, 191, 16, 1, 0, 0, 0, 192, 193, 3, 11, 3, 0, 193, 194, 7, 3, 0, 0, 194, 198, 7, 4,
1022
- 0, 0, 195, 197, 7, 1, 0, 0, 196, 195, 1, 0, 0, 0, 197, 200, 1, 0, 0, 0, 198, 196, 1, 0,
1023
- 0, 0, 198, 199, 1, 0, 0, 0, 199, 18, 1, 0, 0, 0, 200, 198, 1, 0, 0, 0, 201, 204, 3, 13,
1024
- 4, 0, 202, 204, 3, 17, 6, 0, 203, 201, 1, 0, 0, 0, 203, 202, 1, 0, 0, 0, 204, 20, 1, 0,
1025
- 0, 0, 205, 206, 5, 60, 0, 0, 206, 214, 3, 19, 7, 0, 207, 209, 5, 44, 0, 0, 208, 210, 5,
1026
- 32, 0, 0, 209, 208, 1, 0, 0, 0, 209, 210, 1, 0, 0, 0, 210, 211, 1, 0, 0, 0, 211, 213, 3,
1027
- 19, 7, 0, 212, 207, 1, 0, 0, 0, 213, 216, 1, 0, 0, 0, 214, 212, 1, 0, 0, 0, 214, 215, 1,
1028
- 0, 0, 0, 215, 217, 1, 0, 0, 0, 216, 214, 1, 0, 0, 0, 217, 218, 5, 62, 0, 0, 218, 22, 1,
1029
- 0, 0, 0, 219, 221, 5, 13, 0, 0, 220, 219, 1, 0, 0, 0, 220, 221, 1, 0, 0, 0, 221, 222, 1,
1030
- 0, 0, 0, 222, 223, 5, 10, 0, 0, 223, 24, 1, 0, 0, 0, 224, 225, 4, 10, 0, 0, 225, 226, 5,
1031
- 35, 0, 0, 226, 227, 5, 35, 0, 0, 227, 228, 5, 32, 0, 0, 228, 229, 5, 80, 0, 0, 229, 230,
1032
- 5, 76, 0, 0, 230, 231, 5, 65, 0, 0, 231, 232, 5, 78, 0, 0, 232, 234, 1, 0, 0, 0, 233, 235,
1033
- 3, 5, 0, 0, 234, 233, 1, 0, 0, 0, 234, 235, 1, 0, 0, 0, 235, 236, 1, 0, 0, 0, 236, 237,
1034
- 6, 10, 0, 0, 237, 238, 1, 0, 0, 0, 238, 239, 6, 10, 1, 0, 239, 26, 1, 0, 0, 0, 240, 241,
1035
- 4, 11, 1, 0, 241, 242, 5, 35, 0, 0, 242, 243, 5, 35, 0, 0, 243, 244, 5, 35, 0, 0, 244,
1036
- 245, 5, 32, 0, 0, 245, 246, 5, 70, 0, 0, 246, 247, 5, 73, 0, 0, 247, 248, 5, 78, 0, 0,
1037
- 248, 249, 5, 68, 0, 0, 249, 251, 1, 0, 0, 0, 250, 252, 3, 5, 0, 0, 251, 250, 1, 0, 0, 0,
1038
- 251, 252, 1, 0, 0, 0, 252, 253, 1, 0, 0, 0, 253, 254, 6, 11, 2, 0, 254, 255, 1, 0, 0, 0,
1039
- 255, 256, 6, 11, 1, 0, 256, 28, 1, 0, 0, 0, 257, 258, 4, 12, 2, 0, 258, 259, 5, 35, 0,
1040
- 0, 259, 260, 5, 35, 0, 0, 260, 261, 5, 35, 0, 0, 261, 262, 5, 32, 0, 0, 262, 263, 5, 82,
1041
- 0, 0, 263, 264, 5, 69, 0, 0, 264, 265, 5, 65, 0, 0, 265, 266, 5, 68, 0, 0, 266, 268, 1,
1042
- 0, 0, 0, 267, 269, 3, 5, 0, 0, 268, 267, 1, 0, 0, 0, 268, 269, 1, 0, 0, 0, 269, 270, 1,
1043
- 0, 0, 0, 270, 271, 6, 12, 3, 0, 271, 272, 1, 0, 0, 0, 272, 273, 6, 12, 1, 0, 273, 30, 1,
1044
- 0, 0, 0, 274, 275, 4, 13, 3, 0, 275, 276, 5, 35, 0, 0, 276, 277, 5, 35, 0, 0, 277, 278,
1045
- 5, 35, 0, 0, 278, 279, 5, 32, 0, 0, 279, 280, 5, 69, 0, 0, 280, 281, 5, 68, 0, 0, 281,
1046
- 282, 5, 73, 0, 0, 282, 283, 5, 84, 0, 0, 283, 285, 1, 0, 0, 0, 284, 286, 3, 5, 0, 0, 285,
1047
- 284, 1, 0, 0, 0, 285, 286, 1, 0, 0, 0, 286, 287, 1, 0, 0, 0, 287, 288, 6, 13, 4, 0, 288,
1048
- 289, 1, 0, 0, 0, 289, 290, 6, 13, 1, 0, 290, 32, 1, 0, 0, 0, 291, 292, 4, 14, 4, 0, 292,
1049
- 293, 5, 35, 0, 0, 293, 294, 5, 35, 0, 0, 294, 295, 5, 35, 0, 0, 295, 296, 5, 32, 0, 0,
1050
- 296, 297, 5, 67, 0, 0, 297, 298, 5, 79, 0, 0, 298, 299, 5, 80, 0, 0, 299, 300, 5, 89,
1051
- 0, 0, 300, 302, 1, 0, 0, 0, 301, 303, 3, 5, 0, 0, 302, 301, 1, 0, 0, 0, 302, 303, 1, 0,
1052
- 0, 0, 303, 304, 1, 0, 0, 0, 304, 305, 6, 14, 5, 0, 305, 306, 1, 0, 0, 0, 306, 307, 6, 14,
1053
- 1, 0, 307, 34, 1, 0, 0, 0, 308, 309, 4, 15, 5, 0, 309, 310, 5, 35, 0, 0, 310, 311, 5, 35,
1054
- 0, 0, 311, 312, 5, 35, 0, 0, 312, 313, 5, 32, 0, 0, 313, 314, 5, 77, 0, 0, 314, 315, 5,
1055
- 79, 0, 0, 315, 316, 5, 86, 0, 0, 316, 317, 5, 69, 0, 0, 317, 319, 1, 0, 0, 0, 318, 320,
1056
- 3, 5, 0, 0, 319, 318, 1, 0, 0, 0, 319, 320, 1, 0, 0, 0, 320, 321, 1, 0, 0, 0, 321, 322,
1057
- 6, 15, 6, 0, 322, 323, 1, 0, 0, 0, 323, 324, 6, 15, 1, 0, 324, 36, 1, 0, 0, 0, 325, 326,
1058
- 4, 16, 6, 0, 326, 327, 5, 35, 0, 0, 327, 328, 5, 35, 0, 0, 328, 329, 5, 35, 0, 0, 329,
1059
- 330, 5, 32, 0, 0, 330, 331, 5, 83, 0, 0, 331, 332, 5, 69, 0, 0, 332, 333, 5, 78, 0, 0,
1060
- 333, 334, 5, 68, 0, 0, 334, 336, 1, 0, 0, 0, 335, 337, 3, 5, 0, 0, 336, 335, 1, 0, 0, 0,
1061
- 336, 337, 1, 0, 0, 0, 337, 338, 1, 0, 0, 0, 338, 339, 6, 16, 7, 0, 339, 340, 1, 0, 0, 0,
1062
- 340, 341, 6, 16, 1, 0, 341, 38, 1, 0, 0, 0, 342, 343, 4, 17, 7, 0, 343, 344, 5, 35, 0,
1063
- 0, 344, 345, 5, 35, 0, 0, 345, 346, 5, 35, 0, 0, 346, 347, 5, 32, 0, 0, 347, 348, 5, 69,
1064
- 0, 0, 348, 349, 5, 88, 0, 0, 349, 350, 5, 69, 0, 0, 350, 351, 5, 67, 0, 0, 351, 353, 1,
1065
- 0, 0, 0, 352, 354, 3, 5, 0, 0, 353, 352, 1, 0, 0, 0, 353, 354, 1, 0, 0, 0, 354, 355, 1,
1066
- 0, 0, 0, 355, 356, 6, 17, 8, 0, 356, 357, 1, 0, 0, 0, 357, 358, 6, 17, 1, 0, 358, 40, 1,
1067
- 0, 0, 0, 359, 360, 4, 18, 8, 0, 360, 361, 5, 35, 0, 0, 361, 362, 5, 35, 0, 0, 362, 363,
1068
- 5, 35, 0, 0, 363, 364, 5, 32, 0, 0, 364, 365, 5, 66, 0, 0, 365, 366, 5, 65, 0, 0, 366,
1069
- 367, 5, 82, 0, 0, 367, 368, 5, 69, 0, 0, 368, 370, 1, 0, 0, 0, 369, 371, 3, 5, 0, 0, 370,
1070
- 369, 1, 0, 0, 0, 370, 371, 1, 0, 0, 0, 371, 372, 1, 0, 0, 0, 372, 373, 6, 18, 9, 0, 373,
1071
- 374, 1, 0, 0, 0, 374, 375, 6, 18, 1, 0, 375, 42, 1, 0, 0, 0, 376, 377, 4, 19, 9, 0, 377,
1072
- 378, 5, 35, 0, 0, 378, 379, 5, 35, 0, 0, 379, 380, 5, 35, 0, 0, 380, 381, 5, 32, 0, 0,
1073
- 381, 382, 5, 87, 0, 0, 382, 383, 5, 79, 0, 0, 383, 384, 5, 82, 0, 0, 384, 385, 5, 75,
1074
- 0, 0, 385, 387, 1, 0, 0, 0, 386, 388, 3, 5, 0, 0, 387, 386, 1, 0, 0, 0, 387, 388, 1, 0,
1075
- 0, 0, 388, 389, 1, 0, 0, 0, 389, 390, 6, 19, 10, 0, 390, 391, 1, 0, 0, 0, 391, 392, 6,
1076
- 19, 1, 0, 392, 44, 1, 0, 0, 0, 393, 394, 4, 20, 10, 0, 394, 395, 5, 35, 0, 0, 395, 396,
1077
- 5, 35, 0, 0, 396, 397, 5, 35, 0, 0, 397, 398, 5, 32, 0, 0, 398, 399, 5, 70, 0, 0, 399,
1078
- 400, 5, 79, 0, 0, 400, 401, 5, 82, 0, 0, 401, 402, 5, 75, 0, 0, 402, 404, 1, 0, 0, 0, 403,
1079
- 405, 3, 5, 0, 0, 404, 403, 1, 0, 0, 0, 404, 405, 1, 0, 0, 0, 405, 406, 1, 0, 0, 0, 406,
1080
- 407, 6, 20, 11, 0, 407, 408, 1, 0, 0, 0, 408, 409, 6, 20, 1, 0, 409, 46, 1, 0, 0, 0, 410,
1081
- 411, 4, 21, 11, 0, 411, 412, 5, 35, 0, 0, 412, 413, 5, 35, 0, 0, 413, 414, 5, 35, 0, 0,
1082
- 414, 415, 5, 32, 0, 0, 415, 416, 5, 75, 0, 0, 416, 417, 5, 73, 0, 0, 417, 418, 5, 76,
1083
- 0, 0, 418, 419, 5, 76, 0, 0, 419, 421, 1, 0, 0, 0, 420, 422, 3, 5, 0, 0, 421, 420, 1, 0,
1084
- 0, 0, 421, 422, 1, 0, 0, 0, 422, 423, 1, 0, 0, 0, 423, 424, 6, 21, 12, 0, 424, 425, 1,
1085
- 0, 0, 0, 425, 426, 6, 21, 1, 0, 426, 48, 1, 0, 0, 0, 427, 428, 4, 22, 12, 0, 428, 429,
1086
- 5, 35, 0, 0, 429, 430, 5, 35, 0, 0, 430, 431, 5, 35, 0, 0, 431, 432, 5, 32, 0, 0, 432,
1087
- 433, 5, 76, 0, 0, 433, 434, 5, 79, 0, 0, 434, 435, 5, 79, 0, 0, 435, 436, 5, 75, 0, 0,
1088
- 436, 438, 1, 0, 0, 0, 437, 439, 3, 5, 0, 0, 438, 437, 1, 0, 0, 0, 438, 439, 1, 0, 0, 0,
1089
- 439, 440, 1, 0, 0, 0, 440, 441, 6, 22, 13, 0, 441, 442, 1, 0, 0, 0, 442, 443, 6, 22, 1,
1090
- 0, 443, 50, 1, 0, 0, 0, 444, 445, 4, 23, 13, 0, 445, 446, 5, 35, 0, 0, 446, 447, 5, 35,
1091
- 0, 0, 447, 448, 5, 35, 0, 0, 448, 449, 5, 32, 0, 0, 449, 450, 5, 66, 0, 0, 450, 451, 5,
1092
- 85, 0, 0, 451, 452, 5, 70, 0, 0, 452, 453, 5, 70, 0, 0, 453, 455, 1, 0, 0, 0, 454, 456,
1093
- 3, 5, 0, 0, 455, 454, 1, 0, 0, 0, 455, 456, 1, 0, 0, 0, 456, 457, 1, 0, 0, 0, 457, 458,
1094
- 6, 23, 14, 0, 458, 459, 1, 0, 0, 0, 459, 460, 6, 23, 1, 0, 460, 52, 1, 0, 0, 0, 461, 481,
1095
- 4, 24, 14, 0, 462, 463, 5, 96, 0, 0, 463, 464, 5, 96, 0, 0, 464, 465, 5, 96, 0, 0, 465,
1096
- 466, 5, 101, 0, 0, 466, 467, 5, 120, 0, 0, 467, 468, 5, 97, 0, 0, 468, 469, 5, 109, 0,
1097
- 0, 469, 470, 5, 112, 0, 0, 470, 471, 5, 108, 0, 0, 471, 482, 5, 101, 0, 0, 472, 473,
1098
- 5, 96, 0, 0, 473, 474, 5, 96, 0, 0, 474, 475, 5, 96, 0, 0, 475, 476, 5, 112, 0, 0, 476,
1099
- 477, 5, 108, 0, 0, 477, 478, 5, 117, 0, 0, 478, 479, 5, 114, 0, 0, 479, 480, 5, 110,
1100
- 0, 0, 480, 482, 5, 107, 0, 0, 481, 462, 1, 0, 0, 0, 481, 472, 1, 0, 0, 0, 482, 483, 1,
1101
- 0, 0, 0, 483, 484, 3, 23, 9, 0, 484, 485, 6, 24, 15, 0, 485, 54, 1, 0, 0, 0, 486, 487,
1102
- 4, 25, 15, 0, 487, 488, 5, 96, 0, 0, 488, 489, 5, 96, 0, 0, 489, 490, 5, 96, 0, 0, 490,
1103
- 492, 1, 0, 0, 0, 491, 493, 3, 23, 9, 0, 492, 491, 1, 0, 0, 0, 492, 493, 1, 0, 0, 0, 493,
1104
- 494, 1, 0, 0, 0, 494, 495, 6, 25, 16, 0, 495, 56, 1, 0, 0, 0, 496, 498, 7, 5, 0, 0, 497,
1105
- 496, 1, 0, 0, 0, 498, 499, 1, 0, 0, 0, 499, 497, 1, 0, 0, 0, 499, 500, 1, 0, 0, 0, 500,
1106
- 501, 1, 0, 0, 0, 501, 502, 6, 26, 17, 0, 502, 58, 1, 0, 0, 0, 503, 504, 5, 60, 0, 0, 504,
1107
- 505, 5, 116, 0, 0, 505, 506, 5, 104, 0, 0, 506, 507, 5, 105, 0, 0, 507, 508, 5, 110,
1108
- 0, 0, 508, 509, 5, 107, 0, 0, 509, 510, 5, 62, 0, 0, 510, 514, 1, 0, 0, 0, 511, 513, 9,
1109
- 0, 0, 0, 512, 511, 1, 0, 0, 0, 513, 516, 1, 0, 0, 0, 514, 515, 1, 0, 0, 0, 514, 512, 1,
1110
- 0, 0, 0, 515, 517, 1, 0, 0, 0, 516, 514, 1, 0, 0, 0, 517, 518, 5, 60, 0, 0, 518, 519, 5,
1111
- 47, 0, 0, 519, 520, 5, 116, 0, 0, 520, 521, 5, 104, 0, 0, 521, 522, 5, 105, 0, 0, 522,
1112
- 523, 5, 110, 0, 0, 523, 524, 5, 107, 0, 0, 524, 525, 5, 62, 0, 0, 525, 526, 1, 0, 0, 0,
1113
- 526, 527, 6, 27, 18, 0, 527, 60, 1, 0, 0, 0, 528, 529, 5, 60, 0, 0, 529, 530, 5, 124,
1114
- 0, 0, 530, 531, 5, 99, 0, 0, 531, 532, 5, 104, 0, 0, 532, 533, 5, 97, 0, 0, 533, 534,
1115
- 5, 110, 0, 0, 534, 535, 5, 110, 0, 0, 535, 536, 5, 101, 0, 0, 536, 537, 5, 108, 0, 0,
1116
- 537, 538, 5, 62, 0, 0, 538, 542, 1, 0, 0, 0, 539, 541, 9, 0, 0, 0, 540, 539, 1, 0, 0, 0,
1117
- 541, 544, 1, 0, 0, 0, 542, 543, 1, 0, 0, 0, 542, 540, 1, 0, 0, 0, 543, 545, 1, 0, 0, 0,
1118
- 544, 542, 1, 0, 0, 0, 545, 546, 5, 60, 0, 0, 546, 547, 5, 99, 0, 0, 547, 548, 5, 104,
1119
- 0, 0, 548, 549, 5, 97, 0, 0, 549, 550, 5, 110, 0, 0, 550, 551, 5, 110, 0, 0, 551, 552,
1120
- 5, 101, 0, 0, 552, 553, 5, 108, 0, 0, 553, 554, 5, 124, 0, 0, 554, 555, 5, 62, 0, 0, 555,
1121
- 556, 1, 0, 0, 0, 556, 557, 6, 28, 18, 0, 557, 62, 1, 0, 0, 0, 558, 560, 8, 6, 0, 0, 559,
1122
- 558, 1, 0, 0, 0, 560, 561, 1, 0, 0, 0, 561, 559, 1, 0, 0, 0, 561, 562, 1, 0, 0, 0, 562,
1123
- 64, 1, 0, 0, 0, 563, 564, 5, 35, 0, 0, 564, 565, 1, 0, 0, 0, 565, 566, 6, 30, 18, 0, 566,
1124
- 66, 1, 0, 0, 0, 567, 569, 7, 7, 0, 0, 568, 567, 1, 0, 0, 0, 569, 570, 1, 0, 0, 0, 570, 568,
1125
- 1, 0, 0, 0, 570, 571, 1, 0, 0, 0, 571, 572, 1, 0, 0, 0, 572, 573, 6, 31, 19, 0, 573, 574,
1126
- 1, 0, 0, 0, 574, 575, 6, 31, 20, 0, 575, 68, 1, 0, 0, 0, 576, 577, 4, 32, 16, 0, 577, 594,
1127
- 5, 40, 0, 0, 578, 579, 5, 78, 0, 0, 579, 580, 5, 69, 0, 0, 580, 581, 5, 88, 0, 0, 581,
1128
- 595, 5, 84, 0, 0, 582, 583, 5, 87, 0, 0, 583, 584, 5, 65, 0, 0, 584, 585, 5, 73, 0, 0,
1129
- 585, 595, 5, 84, 0, 0, 586, 587, 5, 84, 0, 0, 587, 588, 5, 69, 0, 0, 588, 589, 5, 82,
1130
- 0, 0, 589, 595, 5, 77, 0, 0, 590, 591, 5, 70, 0, 0, 591, 592, 5, 65, 0, 0, 592, 593, 5,
1131
- 73, 0, 0, 593, 595, 5, 76, 0, 0, 594, 578, 1, 0, 0, 0, 594, 582, 1, 0, 0, 0, 594, 586,
1132
- 1, 0, 0, 0, 594, 590, 1, 0, 0, 0, 595, 596, 1, 0, 0, 0, 596, 597, 5, 41, 0, 0, 597, 598,
1133
- 6, 32, 21, 0, 598, 599, 1, 0, 0, 0, 599, 600, 6, 32, 22, 0, 600, 70, 1, 0, 0, 0, 601, 602,
1134
- 4, 33, 17, 0, 602, 604, 5, 91, 0, 0, 603, 605, 7, 8, 0, 0, 604, 603, 1, 0, 0, 0, 605, 606,
1135
- 1, 0, 0, 0, 606, 604, 1, 0, 0, 0, 606, 607, 1, 0, 0, 0, 607, 608, 1, 0, 0, 0, 608, 609,
1136
- 5, 93, 0, 0, 609, 610, 6, 33, 23, 0, 610, 611, 1, 0, 0, 0, 611, 612, 6, 33, 24, 0, 612,
1137
- 72, 1, 0, 0, 0, 613, 614, 4, 34, 18, 0, 614, 615, 5, 40, 0, 0, 615, 616, 6, 34, 25, 0,
1138
- 616, 617, 1, 0, 0, 0, 617, 618, 6, 34, 26, 0, 618, 619, 6, 34, 27, 0, 619, 74, 1, 0, 0,
1139
- 0, 620, 621, 4, 35, 19, 0, 621, 622, 5, 123, 0, 0, 622, 623, 6, 35, 28, 0, 623, 624,
1140
- 1, 0, 0, 0, 624, 625, 6, 35, 29, 0, 625, 626, 6, 35, 30, 0, 626, 76, 1, 0, 0, 0, 627, 628,
1141
- 4, 36, 20, 0, 628, 629, 3, 15, 5, 0, 629, 630, 1, 0, 0, 0, 630, 631, 6, 36, 31, 0, 631,
1142
- 78, 1, 0, 0, 0, 632, 633, 4, 37, 21, 0, 633, 634, 3, 9, 2, 0, 634, 635, 1, 0, 0, 0, 635,
1143
- 636, 6, 37, 31, 0, 636, 80, 1, 0, 0, 0, 637, 638, 4, 38, 22, 0, 638, 639, 3, 21, 8, 0,
1144
- 639, 640, 1, 0, 0, 0, 640, 641, 6, 38, 32, 0, 641, 82, 1, 0, 0, 0, 642, 643, 4, 39, 23,
1145
- 0, 643, 644, 5, 60, 0, 0, 644, 645, 5, 33, 0, 0, 645, 646, 5, 45, 0, 0, 646, 647, 5, 45,
1146
- 0, 0, 647, 651, 1, 0, 0, 0, 648, 650, 8, 9, 0, 0, 649, 648, 1, 0, 0, 0, 650, 653, 1, 0,
1147
- 0, 0, 651, 652, 1, 0, 0, 0, 651, 649, 1, 0, 0, 0, 652, 654, 1, 0, 0, 0, 653, 651, 1, 0,
1148
- 0, 0, 654, 655, 5, 45, 0, 0, 655, 656, 5, 45, 0, 0, 656, 657, 5, 62, 0, 0, 657, 658, 1,
1149
- 0, 0, 0, 658, 659, 6, 39, 33, 0, 659, 84, 1, 0, 0, 0, 660, 661, 4, 40, 24, 0, 661, 662,
1150
- 8, 10, 0, 0, 662, 663, 6, 40, 34, 0, 663, 664, 1, 0, 0, 0, 664, 665, 6, 40, 35, 0, 665,
1151
- 666, 6, 40, 36, 0, 666, 86, 1, 0, 0, 0, 667, 668, 4, 41, 25, 0, 668, 669, 3, 23, 9, 0,
1152
- 669, 670, 1, 0, 0, 0, 670, 671, 6, 41, 37, 0, 671, 672, 6, 41, 38, 0, 672, 88, 1, 0, 0,
1153
- 0, 673, 674, 3, 23, 9, 0, 674, 675, 6, 42, 39, 0, 675, 676, 1, 0, 0, 0, 676, 677, 6, 42,
1154
- 40, 0, 677, 678, 6, 42, 36, 0, 678, 90, 1, 0, 0, 0, 679, 680, 5, 92, 0, 0, 680, 681, 7,
1155
- 11, 0, 0, 681, 682, 1, 0, 0, 0, 682, 683, 6, 43, 41, 0, 683, 92, 1, 0, 0, 0, 684, 686,
1156
- 8, 12, 0, 0, 685, 684, 1, 0, 0, 0, 686, 687, 1, 0, 0, 0, 687, 685, 1, 0, 0, 0, 687, 688,
1157
- 1, 0, 0, 0, 688, 689, 1, 0, 0, 0, 689, 690, 6, 44, 41, 0, 690, 94, 1, 0, 0, 0, 691, 692,
1158
- 5, 92, 0, 0, 692, 693, 1, 0, 0, 0, 693, 694, 6, 45, 41, 0, 694, 96, 1, 0, 0, 0, 695, 696,
1159
- 5, 40, 0, 0, 696, 697, 6, 46, 42, 0, 697, 698, 1, 0, 0, 0, 698, 699, 6, 46, 41, 0, 699,
1160
- 98, 1, 0, 0, 0, 700, 701, 4, 47, 26, 0, 701, 702, 5, 41, 0, 0, 702, 703, 6, 47, 43, 0,
1161
- 703, 704, 1, 0, 0, 0, 704, 705, 6, 47, 41, 0, 705, 100, 1, 0, 0, 0, 706, 707, 5, 41, 0,
1162
- 0, 707, 708, 6, 48, 44, 0, 708, 709, 1, 0, 0, 0, 709, 710, 6, 48, 45, 0, 710, 711, 6,
1163
- 48, 1, 0, 711, 102, 1, 0, 0, 0, 712, 714, 8, 13, 0, 0, 713, 712, 1, 0, 0, 0, 714, 715,
1164
- 1, 0, 0, 0, 715, 713, 1, 0, 0, 0, 715, 716, 1, 0, 0, 0, 716, 717, 1, 0, 0, 0, 717, 718,
1165
- 6, 49, 46, 0, 718, 104, 1, 0, 0, 0, 719, 720, 5, 123, 0, 0, 720, 721, 6, 50, 47, 0, 721,
1166
- 722, 1, 0, 0, 0, 722, 723, 6, 50, 46, 0, 723, 106, 1, 0, 0, 0, 724, 725, 4, 51, 27, 0,
1167
- 725, 726, 5, 125, 0, 0, 726, 727, 6, 51, 48, 0, 727, 728, 1, 0, 0, 0, 728, 729, 6, 51,
1168
- 46, 0, 729, 108, 1, 0, 0, 0, 730, 731, 5, 125, 0, 0, 731, 732, 6, 52, 49, 0, 732, 733,
1169
- 1, 0, 0, 0, 733, 734, 6, 52, 50, 0, 734, 735, 6, 52, 1, 0, 735, 110, 1, 0, 0, 0, 736, 737,
1170
- 4, 53, 28, 0, 737, 738, 5, 96, 0, 0, 738, 739, 5, 96, 0, 0, 739, 740, 5, 96, 0, 0, 740,
1171
- 742, 1, 0, 0, 0, 741, 743, 3, 23, 9, 0, 742, 741, 1, 0, 0, 0, 742, 743, 1, 0, 0, 0, 743,
1172
- 744, 1, 0, 0, 0, 744, 745, 6, 53, 51, 0, 745, 746, 1, 0, 0, 0, 746, 747, 6, 53, 52, 0,
1173
- 747, 748, 6, 53, 38, 0, 748, 112, 1, 0, 0, 0, 749, 750, 4, 54, 29, 0, 750, 751, 3, 23,
1174
- 9, 0, 751, 752, 1, 0, 0, 0, 752, 753, 6, 54, 37, 0, 753, 754, 6, 54, 38, 0, 754, 114,
1175
- 1, 0, 0, 0, 755, 756, 4, 55, 30, 0, 756, 760, 3, 23, 9, 0, 757, 759, 7, 7, 0, 0, 758, 757,
1176
- 1, 0, 0, 0, 759, 762, 1, 0, 0, 0, 760, 758, 1, 0, 0, 0, 760, 761, 1, 0, 0, 0, 761, 763,
1177
- 1, 0, 0, 0, 762, 760, 1, 0, 0, 0, 763, 764, 3, 23, 9, 0, 764, 765, 1, 0, 0, 0, 765, 766,
1178
- 6, 55, 37, 0, 766, 767, 6, 55, 38, 0, 767, 116, 1, 0, 0, 0, 768, 769, 4, 56, 31, 0, 769,
1179
- 770, 3, 23, 9, 0, 770, 771, 1, 0, 0, 0, 771, 772, 6, 56, 37, 0, 772, 773, 6, 56, 38, 0,
1180
- 773, 118, 1, 0, 0, 0, 774, 776, 4, 57, 32, 0, 775, 777, 7, 7, 0, 0, 776, 775, 1, 0, 0,
1181
- 0, 777, 778, 1, 0, 0, 0, 778, 776, 1, 0, 0, 0, 778, 779, 1, 0, 0, 0, 779, 780, 1, 0, 0,
1182
- 0, 780, 781, 3, 23, 9, 0, 781, 782, 1, 0, 0, 0, 782, 783, 6, 57, 37, 0, 783, 784, 6, 57,
1183
- 38, 0, 784, 120, 1, 0, 0, 0, 785, 787, 8, 9, 0, 0, 786, 785, 1, 0, 0, 0, 787, 788, 1, 0,
1184
- 0, 0, 788, 786, 1, 0, 0, 0, 788, 789, 1, 0, 0, 0, 789, 790, 1, 0, 0, 0, 790, 791, 6, 58,
1185
- 53, 0, 791, 792, 1, 0, 0, 0, 792, 793, 6, 58, 35, 0, 793, 122, 1, 0, 0, 0, 794, 795, 5,
1186
- 13, 0, 0, 795, 796, 5, 10, 0, 0, 796, 797, 1, 0, 0, 0, 797, 798, 6, 59, 54, 0, 798, 799,
1187
- 1, 0, 0, 0, 799, 800, 6, 59, 35, 0, 800, 124, 1, 0, 0, 0, 801, 802, 5, 10, 0, 0, 802, 803,
1188
- 6, 60, 55, 0, 803, 804, 1, 0, 0, 0, 804, 805, 6, 60, 35, 0, 805, 126, 1, 0, 0, 0, 806,
1189
- 807, 5, 13, 0, 0, 807, 808, 6, 61, 56, 0, 808, 809, 1, 0, 0, 0, 809, 810, 6, 61, 35, 0,
1190
- 810, 128, 1, 0, 0, 0, 51, 0, 1, 2, 3, 4, 132, 135, 140, 146, 148, 155, 157, 162, 176,
1191
- 182, 187, 198, 203, 209, 214, 220, 234, 251, 268, 285, 302, 319, 336, 353, 370,
1192
- 387, 404, 421, 438, 455, 481, 492, 499, 514, 542, 561, 570, 594, 606, 651, 687,
1193
- 715, 742, 760, 778, 788, 57, 1, 10, 0, 2, 1, 0, 1, 11, 1, 1, 12, 2, 1, 13, 3, 1, 14, 4,
1194
- 1, 15, 5, 1, 16, 6, 1, 17, 7, 1, 18, 8, 1, 19, 9, 1, 20, 10, 1, 21, 11, 1, 22, 12, 1, 23,
1195
- 13, 1, 24, 14, 1, 25, 15, 0, 1, 0, 7, 12, 0, 1, 31, 16, 6, 0, 0, 1, 32, 17, 7, 14, 0, 1, 33,
1196
- 18, 7, 15, 0, 1, 34, 19, 7, 1, 0, 2, 2, 0, 1, 35, 20, 7, 3, 0, 2, 3, 0, 7, 5, 0, 7, 6, 0, 7,
1197
- 13, 0, 1, 40, 21, 7, 11, 0, 2, 4, 0, 7, 8, 0, 2, 0, 0, 1, 42, 22, 7, 7, 0, 7, 9, 0, 1, 46, 23,
1198
- 1, 47, 24, 1, 48, 25, 7, 2, 0, 7, 10, 0, 1, 50, 26, 1, 51, 27, 1, 52, 28, 7, 4, 0, 1, 53,
1199
- 29, 7, 31, 0, 1, 58, 30, 1, 59, 31, 1, 60, 32, 1, 61, 33
801
+ 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 131, 8, 0,
802
+ 10, 0, 12, 0, 134, 9, 0, 1, 1, 4, 1, 137, 8, 1, 11, 1, 12, 1, 138, 1, 2, 3, 2, 142, 8, 2,
803
+ 1, 2, 4, 2, 145, 8, 2, 11, 2, 12, 2, 146, 1, 2, 1, 2, 4, 2, 151, 8, 2, 11, 2, 12, 2, 152,
804
+ 3, 2, 155, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 162, 8, 3, 3, 3, 164, 8, 3, 1, 3, 5, 3,
805
+ 167, 8, 3, 10, 3, 12, 3, 170, 9, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1,
806
+ 5, 1, 5, 1, 5, 3, 5, 184, 8, 5, 1, 5, 3, 5, 187, 8, 5, 1, 5, 3, 5, 190, 8, 5, 1, 6, 1, 6, 1,
807
+ 6, 3, 6, 195, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 201, 8, 7, 1, 7, 5, 7, 204, 8, 7, 10, 7, 12,
808
+ 7, 207, 9, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 215, 8, 8, 10, 8, 12, 8, 218, 9, 8,
809
+ 1, 9, 1, 9, 3, 9, 222, 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 228, 8, 10, 1, 10, 5, 10,
810
+ 231, 8, 10, 10, 10, 12, 10, 234, 9, 10, 1, 10, 1, 10, 1, 11, 3, 11, 239, 8, 11, 1, 11,
811
+ 1, 11, 1, 12, 1, 12, 1, 12, 5, 12, 246, 8, 12, 10, 12, 12, 12, 249, 9, 12, 1, 12, 1, 12,
812
+ 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 5, 13, 260, 8, 13, 10, 13, 12, 13, 263,
813
+ 9, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 4, 14, 272, 8, 14, 11, 14, 12, 14,
814
+ 273, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 5, 15,
815
+ 287, 8, 15, 10, 15, 12, 15, 290, 9, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15,
816
+ 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16,
817
+ 1, 16, 1, 16, 1, 16, 1, 16, 5, 16, 316, 8, 16, 10, 16, 12, 16, 319, 9, 16, 1, 16, 1, 16,
818
+ 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17,
819
+ 4, 17, 336, 8, 17, 11, 17, 12, 17, 337, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18,
820
+ 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 4, 19, 353, 8, 19, 11, 19, 12, 19, 354, 1, 19,
821
+ 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 4, 20, 363, 8, 20, 11, 20, 12, 20, 364, 1, 20, 1, 20,
822
+ 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22,
823
+ 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24,
824
+ 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 5, 26,
825
+ 407, 8, 26, 10, 26, 12, 26, 410, 9, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27,
826
+ 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 5, 27, 425, 8, 27, 10, 27, 12, 27, 428, 9, 27,
827
+ 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 5, 28, 437, 8, 28, 10, 28, 12, 28, 440,
828
+ 9, 28, 1, 28, 5, 28, 443, 8, 28, 10, 28, 12, 28, 446, 9, 28, 1, 28, 1, 28, 1, 28, 1, 28,
829
+ 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30,
830
+ 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 5, 32, 474, 8, 32, 10, 32,
831
+ 12, 32, 477, 9, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33,
832
+ 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 4, 35, 495, 8, 35, 11, 35, 12, 35, 496, 1, 35,
833
+ 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38,
834
+ 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40,
835
+ 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43,
836
+ 1, 43, 1, 43, 5, 43, 541, 8, 43, 10, 43, 12, 43, 544, 9, 43, 1, 43, 1, 43, 1, 43, 1, 43,
837
+ 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 5, 45, 560, 8, 45,
838
+ 10, 45, 12, 45, 563, 9, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 4, 46, 570, 8, 46, 11, 46,
839
+ 12, 46, 571, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49,
840
+ 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51,
841
+ 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 5, 52, 604, 8, 52, 10, 52, 12, 52, 607, 9, 52,
842
+ 1, 52, 1, 52, 5, 52, 611, 8, 52, 10, 52, 12, 52, 614, 9, 52, 1, 52, 5, 52, 617, 8, 52,
843
+ 10, 52, 12, 52, 620, 9, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 5, 53, 629,
844
+ 8, 53, 10, 53, 12, 53, 632, 9, 53, 1, 53, 1, 53, 5, 53, 636, 8, 53, 10, 53, 12, 53, 639,
845
+ 9, 53, 1, 53, 5, 53, 642, 8, 53, 10, 53, 12, 53, 645, 9, 53, 1, 53, 1, 53, 1, 53, 1, 53,
846
+ 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 4, 55, 659, 8, 55, 11, 55, 12, 55,
847
+ 660, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57,
848
+ 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 3, 288, 317, 408,
849
+ 0, 60, 5, 0, 7, 0, 9, 0, 11, 0, 13, 0, 15, 0, 17, 0, 19, 0, 21, 0, 23, 0, 25, 0, 27, 0, 29,
850
+ 26, 31, 0, 33, 27, 35, 0, 37, 0, 39, 0, 41, 0, 43, 0, 45, 28, 47, 0, 49, 0, 51, 0, 53, 0,
851
+ 55, 0, 57, 0, 59, 0, 61, 0, 63, 0, 65, 0, 67, 0, 69, 0, 71, 0, 73, 0, 75, 0, 77, 29, 79,
852
+ 0, 81, 0, 83, 0, 85, 0, 87, 30, 89, 0, 91, 0, 93, 0, 95, 0, 97, 0, 99, 0, 101, 31, 103,
853
+ 0, 105, 0, 107, 0, 109, 0, 111, 0, 113, 0, 115, 0, 117, 0, 119, 0, 121, 0, 123, 32, 5,
854
+ 0, 1, 2, 3, 4, 15, 6, 0, 43, 43, 45, 46, 48, 57, 65, 90, 95, 95, 97, 122, 1, 0, 48, 57,
855
+ 3, 0, 48, 57, 65, 90, 97, 122, 2, 0, 32, 32, 58, 58, 1, 0, 49, 57, 3, 0, 9, 10, 13, 13,
856
+ 32, 32, 4, 0, 9, 10, 13, 13, 32, 32, 96, 96, 2, 0, 9, 9, 32, 32, 2, 0, 10, 10, 13, 13, 7,
857
+ 0, 9, 10, 13, 13, 32, 32, 40, 40, 60, 60, 91, 91, 96, 96, 2, 0, 40, 41, 92, 92, 6, 0, 10,
858
+ 10, 13, 13, 40, 41, 60, 60, 92, 92, 96, 96, 4, 0, 10, 10, 13, 13, 34, 34, 92, 92, 6, 0,
859
+ 10, 10, 13, 13, 34, 34, 91, 91, 93, 93, 96, 96, 3, 0, 10, 10, 13, 13, 96, 96, 713, 0,
860
+ 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0,
861
+ 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 1, 43, 1, 0, 0, 0, 1, 45, 1, 0, 0, 0, 1, 47, 1, 0, 0, 0, 1,
862
+ 49, 1, 0, 0, 0, 1, 51, 1, 0, 0, 0, 1, 53, 1, 0, 0, 0, 1, 55, 1, 0, 0, 0, 1, 57, 1, 0, 0, 0, 1,
863
+ 59, 1, 0, 0, 0, 1, 61, 1, 0, 0, 0, 1, 63, 1, 0, 0, 0, 1, 65, 1, 0, 0, 0, 1, 67, 1, 0, 0, 0, 2,
864
+ 69, 1, 0, 0, 0, 2, 71, 1, 0, 0, 0, 2, 73, 1, 0, 0, 0, 2, 75, 1, 0, 0, 0, 2, 77, 1, 0, 0, 0, 2,
865
+ 79, 1, 0, 0, 0, 2, 81, 1, 0, 0, 0, 2, 83, 1, 0, 0, 0, 2, 85, 1, 0, 0, 0, 2, 87, 1, 0, 0, 0, 2,
866
+ 89, 1, 0, 0, 0, 3, 91, 1, 0, 0, 0, 3, 93, 1, 0, 0, 0, 3, 95, 1, 0, 0, 0, 3, 97, 1, 0, 0, 0, 3,
867
+ 99, 1, 0, 0, 0, 3, 101, 1, 0, 0, 0, 3, 103, 1, 0, 0, 0, 3, 105, 1, 0, 0, 0, 3, 107, 1, 0, 0,
868
+ 0, 4, 109, 1, 0, 0, 0, 4, 111, 1, 0, 0, 0, 4, 113, 1, 0, 0, 0, 4, 115, 1, 0, 0, 0, 4, 117,
869
+ 1, 0, 0, 0, 4, 119, 1, 0, 0, 0, 4, 121, 1, 0, 0, 0, 4, 123, 1, 0, 0, 0, 5, 125, 1, 0, 0, 0,
870
+ 7, 136, 1, 0, 0, 0, 9, 141, 1, 0, 0, 0, 11, 156, 1, 0, 0, 0, 13, 173, 1, 0, 0, 0, 15, 180,
871
+ 1, 0, 0, 0, 17, 194, 1, 0, 0, 0, 19, 196, 1, 0, 0, 0, 21, 210, 1, 0, 0, 0, 23, 221, 1, 0,
872
+ 0, 0, 25, 223, 1, 0, 0, 0, 27, 238, 1, 0, 0, 0, 29, 242, 1, 0, 0, 0, 31, 256, 1, 0, 0, 0,
873
+ 33, 271, 1, 0, 0, 0, 35, 277, 1, 0, 0, 0, 37, 303, 1, 0, 0, 0, 39, 335, 1, 0, 0, 0, 41, 344,
874
+ 1, 0, 0, 0, 43, 350, 1, 0, 0, 0, 45, 362, 1, 0, 0, 0, 47, 370, 1, 0, 0, 0, 49, 377, 1, 0,
875
+ 0, 0, 51, 384, 1, 0, 0, 0, 53, 389, 1, 0, 0, 0, 55, 394, 1, 0, 0, 0, 57, 399, 1, 0, 0, 0,
876
+ 59, 417, 1, 0, 0, 0, 61, 433, 1, 0, 0, 0, 63, 452, 1, 0, 0, 0, 65, 459, 1, 0, 0, 0, 67, 465,
877
+ 1, 0, 0, 0, 69, 470, 1, 0, 0, 0, 71, 483, 1, 0, 0, 0, 73, 488, 1, 0, 0, 0, 75, 494, 1, 0,
878
+ 0, 0, 77, 500, 1, 0, 0, 0, 79, 504, 1, 0, 0, 0, 81, 509, 1, 0, 0, 0, 83, 515, 1, 0, 0, 0,
879
+ 85, 521, 1, 0, 0, 0, 87, 527, 1, 0, 0, 0, 89, 531, 1, 0, 0, 0, 91, 537, 1, 0, 0, 0, 93, 550,
880
+ 1, 0, 0, 0, 95, 555, 1, 0, 0, 0, 97, 569, 1, 0, 0, 0, 99, 575, 1, 0, 0, 0, 101, 579, 1, 0,
881
+ 0, 0, 103, 583, 1, 0, 0, 0, 105, 588, 1, 0, 0, 0, 107, 594, 1, 0, 0, 0, 109, 600, 1, 0,
882
+ 0, 0, 111, 626, 1, 0, 0, 0, 113, 651, 1, 0, 0, 0, 115, 658, 1, 0, 0, 0, 117, 664, 1, 0,
883
+ 0, 0, 119, 668, 1, 0, 0, 0, 121, 675, 1, 0, 0, 0, 123, 680, 1, 0, 0, 0, 125, 126, 5, 96,
884
+ 0, 0, 126, 127, 5, 96, 0, 0, 127, 128, 5, 96, 0, 0, 128, 132, 1, 0, 0, 0, 129, 131, 5,
885
+ 96, 0, 0, 130, 129, 1, 0, 0, 0, 131, 134, 1, 0, 0, 0, 132, 130, 1, 0, 0, 0, 132, 133, 1,
886
+ 0, 0, 0, 133, 6, 1, 0, 0, 0, 134, 132, 1, 0, 0, 0, 135, 137, 7, 0, 0, 0, 136, 135, 1, 0,
887
+ 0, 0, 137, 138, 1, 0, 0, 0, 138, 136, 1, 0, 0, 0, 138, 139, 1, 0, 0, 0, 139, 8, 1, 0, 0,
888
+ 0, 140, 142, 5, 45, 0, 0, 141, 140, 1, 0, 0, 0, 141, 142, 1, 0, 0, 0, 142, 144, 1, 0, 0,
889
+ 0, 143, 145, 7, 1, 0, 0, 144, 143, 1, 0, 0, 0, 145, 146, 1, 0, 0, 0, 146, 144, 1, 0, 0,
890
+ 0, 146, 147, 1, 0, 0, 0, 147, 154, 1, 0, 0, 0, 148, 150, 5, 46, 0, 0, 149, 151, 7, 1, 0,
891
+ 0, 150, 149, 1, 0, 0, 0, 151, 152, 1, 0, 0, 0, 152, 150, 1, 0, 0, 0, 152, 153, 1, 0, 0,
892
+ 0, 153, 155, 1, 0, 0, 0, 154, 148, 1, 0, 0, 0, 154, 155, 1, 0, 0, 0, 155, 10, 1, 0, 0, 0,
893
+ 156, 157, 5, 60, 0, 0, 157, 168, 3, 9, 2, 0, 158, 164, 5, 45, 0, 0, 159, 161, 5, 44, 0,
894
+ 0, 160, 162, 5, 32, 0, 0, 161, 160, 1, 0, 0, 0, 161, 162, 1, 0, 0, 0, 162, 164, 1, 0, 0,
895
+ 0, 163, 158, 1, 0, 0, 0, 163, 159, 1, 0, 0, 0, 164, 165, 1, 0, 0, 0, 165, 167, 3, 9, 2,
896
+ 0, 166, 163, 1, 0, 0, 0, 167, 170, 1, 0, 0, 0, 168, 166, 1, 0, 0, 0, 168, 169, 1, 0, 0,
897
+ 0, 169, 171, 1, 0, 0, 0, 170, 168, 1, 0, 0, 0, 171, 172, 5, 62, 0, 0, 172, 12, 1, 0, 0,
898
+ 0, 173, 174, 5, 64, 0, 0, 174, 175, 7, 2, 0, 0, 175, 176, 7, 2, 0, 0, 176, 177, 7, 2, 0,
899
+ 0, 177, 178, 7, 2, 0, 0, 178, 179, 7, 2, 0, 0, 179, 14, 1, 0, 0, 0, 180, 181, 5, 64, 0,
900
+ 0, 181, 183, 7, 1, 0, 0, 182, 184, 7, 1, 0, 0, 183, 182, 1, 0, 0, 0, 183, 184, 1, 0, 0,
901
+ 0, 184, 186, 1, 0, 0, 0, 185, 187, 7, 1, 0, 0, 186, 185, 1, 0, 0, 0, 186, 187, 1, 0, 0,
902
+ 0, 187, 189, 1, 0, 0, 0, 188, 190, 7, 1, 0, 0, 189, 188, 1, 0, 0, 0, 189, 190, 1, 0, 0,
903
+ 0, 190, 16, 1, 0, 0, 0, 191, 195, 3, 9, 2, 0, 192, 195, 3, 13, 4, 0, 193, 195, 3, 15, 5,
904
+ 0, 194, 191, 1, 0, 0, 0, 194, 192, 1, 0, 0, 0, 194, 193, 1, 0, 0, 0, 195, 18, 1, 0, 0, 0,
905
+ 196, 197, 5, 60, 0, 0, 197, 205, 3, 17, 6, 0, 198, 200, 5, 44, 0, 0, 199, 201, 5, 32,
906
+ 0, 0, 200, 199, 1, 0, 0, 0, 200, 201, 1, 0, 0, 0, 201, 202, 1, 0, 0, 0, 202, 204, 3, 17,
907
+ 6, 0, 203, 198, 1, 0, 0, 0, 204, 207, 1, 0, 0, 0, 205, 203, 1, 0, 0, 0, 205, 206, 1, 0,
908
+ 0, 0, 206, 208, 1, 0, 0, 0, 207, 205, 1, 0, 0, 0, 208, 209, 5, 62, 0, 0, 209, 20, 1, 0,
909
+ 0, 0, 210, 211, 3, 13, 4, 0, 211, 212, 7, 3, 0, 0, 212, 216, 7, 4, 0, 0, 213, 215, 7, 1,
910
+ 0, 0, 214, 213, 1, 0, 0, 0, 215, 218, 1, 0, 0, 0, 216, 214, 1, 0, 0, 0, 216, 217, 1, 0,
911
+ 0, 0, 217, 22, 1, 0, 0, 0, 218, 216, 1, 0, 0, 0, 219, 222, 3, 17, 6, 0, 220, 222, 3, 21,
912
+ 8, 0, 221, 219, 1, 0, 0, 0, 221, 220, 1, 0, 0, 0, 222, 24, 1, 0, 0, 0, 223, 224, 5, 60,
913
+ 0, 0, 224, 232, 3, 23, 9, 0, 225, 227, 5, 44, 0, 0, 226, 228, 5, 32, 0, 0, 227, 226, 1,
914
+ 0, 0, 0, 227, 228, 1, 0, 0, 0, 228, 229, 1, 0, 0, 0, 229, 231, 3, 23, 9, 0, 230, 225, 1,
915
+ 0, 0, 0, 231, 234, 1, 0, 0, 0, 232, 230, 1, 0, 0, 0, 232, 233, 1, 0, 0, 0, 233, 235, 1,
916
+ 0, 0, 0, 234, 232, 1, 0, 0, 0, 235, 236, 5, 62, 0, 0, 236, 26, 1, 0, 0, 0, 237, 239, 5,
917
+ 13, 0, 0, 238, 237, 1, 0, 0, 0, 238, 239, 1, 0, 0, 0, 239, 240, 1, 0, 0, 0, 240, 241, 5,
918
+ 10, 0, 0, 241, 28, 1, 0, 0, 0, 242, 243, 4, 12, 0, 0, 243, 247, 3, 5, 0, 0, 244, 246, 7,
919
+ 1, 0, 0, 245, 244, 1, 0, 0, 0, 246, 249, 1, 0, 0, 0, 247, 245, 1, 0, 0, 0, 247, 248, 1,
920
+ 0, 0, 0, 248, 250, 1, 0, 0, 0, 249, 247, 1, 0, 0, 0, 250, 251, 3, 7, 1, 0, 251, 252, 4,
921
+ 12, 1, 0, 252, 253, 6, 12, 0, 0, 253, 254, 1, 0, 0, 0, 254, 255, 6, 12, 1, 0, 255, 30,
922
+ 1, 0, 0, 0, 256, 257, 4, 13, 2, 0, 257, 261, 3, 5, 0, 0, 258, 260, 7, 1, 0, 0, 259, 258,
923
+ 1, 0, 0, 0, 260, 263, 1, 0, 0, 0, 261, 259, 1, 0, 0, 0, 261, 262, 1, 0, 0, 0, 262, 264,
924
+ 1, 0, 0, 0, 263, 261, 1, 0, 0, 0, 264, 265, 3, 7, 1, 0, 265, 266, 6, 13, 2, 0, 266, 267,
925
+ 1, 0, 0, 0, 267, 268, 6, 13, 3, 0, 268, 269, 6, 13, 4, 0, 269, 32, 1, 0, 0, 0, 270, 272,
926
+ 7, 5, 0, 0, 271, 270, 1, 0, 0, 0, 272, 273, 1, 0, 0, 0, 273, 271, 1, 0, 0, 0, 273, 274,
927
+ 1, 0, 0, 0, 274, 275, 1, 0, 0, 0, 275, 276, 6, 14, 4, 0, 276, 34, 1, 0, 0, 0, 277, 278,
928
+ 5, 60, 0, 0, 278, 279, 5, 116, 0, 0, 279, 280, 5, 104, 0, 0, 280, 281, 5, 105, 0, 0, 281,
929
+ 282, 5, 110, 0, 0, 282, 283, 5, 107, 0, 0, 283, 284, 5, 62, 0, 0, 284, 288, 1, 0, 0, 0,
930
+ 285, 287, 9, 0, 0, 0, 286, 285, 1, 0, 0, 0, 287, 290, 1, 0, 0, 0, 288, 289, 1, 0, 0, 0,
931
+ 288, 286, 1, 0, 0, 0, 289, 291, 1, 0, 0, 0, 290, 288, 1, 0, 0, 0, 291, 292, 5, 60, 0, 0,
932
+ 292, 293, 5, 47, 0, 0, 293, 294, 5, 116, 0, 0, 294, 295, 5, 104, 0, 0, 295, 296, 5, 105,
933
+ 0, 0, 296, 297, 5, 110, 0, 0, 297, 298, 5, 107, 0, 0, 298, 299, 5, 62, 0, 0, 299, 300,
934
+ 1, 0, 0, 0, 300, 301, 6, 15, 3, 0, 301, 302, 6, 15, 4, 0, 302, 36, 1, 0, 0, 0, 303, 304,
935
+ 5, 60, 0, 0, 304, 305, 5, 124, 0, 0, 305, 306, 5, 99, 0, 0, 306, 307, 5, 104, 0, 0, 307,
936
+ 308, 5, 97, 0, 0, 308, 309, 5, 110, 0, 0, 309, 310, 5, 110, 0, 0, 310, 311, 5, 101, 0,
937
+ 0, 311, 312, 5, 108, 0, 0, 312, 313, 5, 62, 0, 0, 313, 317, 1, 0, 0, 0, 314, 316, 9, 0,
938
+ 0, 0, 315, 314, 1, 0, 0, 0, 316, 319, 1, 0, 0, 0, 317, 318, 1, 0, 0, 0, 317, 315, 1, 0,
939
+ 0, 0, 318, 320, 1, 0, 0, 0, 319, 317, 1, 0, 0, 0, 320, 321, 5, 60, 0, 0, 321, 322, 5, 99,
940
+ 0, 0, 322, 323, 5, 104, 0, 0, 323, 324, 5, 97, 0, 0, 324, 325, 5, 110, 0, 0, 325, 326,
941
+ 5, 110, 0, 0, 326, 327, 5, 101, 0, 0, 327, 328, 5, 108, 0, 0, 328, 329, 5, 124, 0, 0,
942
+ 329, 330, 5, 62, 0, 0, 330, 331, 1, 0, 0, 0, 331, 332, 6, 16, 3, 0, 332, 333, 6, 16, 4,
943
+ 0, 333, 38, 1, 0, 0, 0, 334, 336, 8, 6, 0, 0, 335, 334, 1, 0, 0, 0, 336, 337, 1, 0, 0, 0,
944
+ 337, 335, 1, 0, 0, 0, 337, 338, 1, 0, 0, 0, 338, 339, 1, 0, 0, 0, 339, 340, 6, 17, 5, 0,
945
+ 340, 341, 1, 0, 0, 0, 341, 342, 6, 17, 3, 0, 342, 343, 6, 17, 4, 0, 343, 40, 1, 0, 0, 0,
946
+ 344, 345, 5, 96, 0, 0, 345, 346, 6, 18, 6, 0, 346, 347, 1, 0, 0, 0, 347, 348, 6, 18, 3,
947
+ 0, 348, 349, 6, 18, 4, 0, 349, 42, 1, 0, 0, 0, 350, 352, 4, 19, 3, 0, 351, 353, 7, 7, 0,
948
+ 0, 352, 351, 1, 0, 0, 0, 353, 354, 1, 0, 0, 0, 354, 352, 1, 0, 0, 0, 354, 355, 1, 0, 0,
949
+ 0, 355, 356, 1, 0, 0, 0, 356, 357, 6, 19, 7, 0, 357, 358, 1, 0, 0, 0, 358, 359, 6, 19,
950
+ 8, 0, 359, 360, 6, 19, 9, 0, 360, 44, 1, 0, 0, 0, 361, 363, 7, 7, 0, 0, 362, 361, 1, 0,
951
+ 0, 0, 363, 364, 1, 0, 0, 0, 364, 362, 1, 0, 0, 0, 364, 365, 1, 0, 0, 0, 365, 366, 1, 0,
952
+ 0, 0, 366, 367, 6, 20, 10, 0, 367, 368, 1, 0, 0, 0, 368, 369, 6, 20, 11, 0, 369, 46, 1,
953
+ 0, 0, 0, 370, 371, 4, 21, 4, 0, 371, 372, 5, 40, 0, 0, 372, 373, 6, 21, 12, 0, 373, 374,
954
+ 1, 0, 0, 0, 374, 375, 6, 21, 13, 0, 375, 376, 6, 21, 14, 0, 376, 48, 1, 0, 0, 0, 377, 378,
955
+ 4, 22, 5, 0, 378, 379, 5, 91, 0, 0, 379, 380, 6, 22, 15, 0, 380, 381, 1, 0, 0, 0, 381,
956
+ 382, 6, 22, 16, 0, 382, 383, 6, 22, 17, 0, 383, 50, 1, 0, 0, 0, 384, 385, 4, 23, 6, 0,
957
+ 385, 386, 3, 19, 7, 0, 386, 387, 1, 0, 0, 0, 387, 388, 6, 23, 18, 0, 388, 52, 1, 0, 0,
958
+ 0, 389, 390, 4, 24, 7, 0, 390, 391, 3, 11, 3, 0, 391, 392, 1, 0, 0, 0, 392, 393, 6, 24,
959
+ 18, 0, 393, 54, 1, 0, 0, 0, 394, 395, 4, 25, 8, 0, 395, 396, 3, 25, 10, 0, 396, 397, 1,
960
+ 0, 0, 0, 397, 398, 6, 25, 18, 0, 398, 56, 1, 0, 0, 0, 399, 400, 4, 26, 9, 0, 400, 401,
961
+ 5, 60, 0, 0, 401, 402, 5, 33, 0, 0, 402, 403, 5, 45, 0, 0, 403, 404, 5, 45, 0, 0, 404,
962
+ 408, 1, 0, 0, 0, 405, 407, 8, 8, 0, 0, 406, 405, 1, 0, 0, 0, 407, 410, 1, 0, 0, 0, 408,
963
+ 409, 1, 0, 0, 0, 408, 406, 1, 0, 0, 0, 409, 411, 1, 0, 0, 0, 410, 408, 1, 0, 0, 0, 411,
964
+ 412, 5, 45, 0, 0, 412, 413, 5, 45, 0, 0, 413, 414, 5, 62, 0, 0, 414, 415, 1, 0, 0, 0, 415,
965
+ 416, 6, 26, 19, 0, 416, 58, 1, 0, 0, 0, 417, 418, 4, 27, 10, 0, 418, 419, 5, 60, 0, 0,
966
+ 419, 420, 5, 33, 0, 0, 420, 421, 5, 45, 0, 0, 421, 422, 5, 45, 0, 0, 422, 426, 1, 0, 0,
967
+ 0, 423, 425, 8, 8, 0, 0, 424, 423, 1, 0, 0, 0, 425, 428, 1, 0, 0, 0, 426, 424, 1, 0, 0,
968
+ 0, 426, 427, 1, 0, 0, 0, 427, 429, 1, 0, 0, 0, 428, 426, 1, 0, 0, 0, 429, 430, 6, 27, 20,
969
+ 0, 430, 431, 1, 0, 0, 0, 431, 432, 6, 27, 19, 0, 432, 60, 1, 0, 0, 0, 433, 434, 4, 28,
970
+ 11, 0, 434, 438, 3, 5, 0, 0, 435, 437, 7, 1, 0, 0, 436, 435, 1, 0, 0, 0, 437, 440, 1, 0,
971
+ 0, 0, 438, 436, 1, 0, 0, 0, 438, 439, 1, 0, 0, 0, 439, 444, 1, 0, 0, 0, 440, 438, 1, 0,
972
+ 0, 0, 441, 443, 7, 7, 0, 0, 442, 441, 1, 0, 0, 0, 443, 446, 1, 0, 0, 0, 444, 442, 1, 0,
973
+ 0, 0, 444, 445, 1, 0, 0, 0, 445, 447, 1, 0, 0, 0, 446, 444, 1, 0, 0, 0, 447, 448, 6, 28,
974
+ 21, 0, 448, 449, 1, 0, 0, 0, 449, 450, 6, 28, 8, 0, 450, 451, 6, 28, 9, 0, 451, 62, 1,
975
+ 0, 0, 0, 452, 453, 4, 29, 12, 0, 453, 454, 8, 9, 0, 0, 454, 455, 6, 29, 22, 0, 455, 456,
976
+ 1, 0, 0, 0, 456, 457, 6, 29, 23, 0, 457, 458, 6, 29, 24, 0, 458, 64, 1, 0, 0, 0, 459, 460,
977
+ 4, 30, 13, 0, 460, 461, 3, 27, 11, 0, 461, 462, 1, 0, 0, 0, 462, 463, 6, 30, 8, 0, 463,
978
+ 464, 6, 30, 9, 0, 464, 66, 1, 0, 0, 0, 465, 466, 3, 27, 11, 0, 466, 467, 1, 0, 0, 0, 467,
979
+ 468, 6, 31, 25, 0, 468, 469, 6, 31, 24, 0, 469, 68, 1, 0, 0, 0, 470, 471, 4, 32, 14, 0,
980
+ 471, 475, 3, 5, 0, 0, 472, 474, 7, 7, 0, 0, 473, 472, 1, 0, 0, 0, 474, 477, 1, 0, 0, 0,
981
+ 475, 473, 1, 0, 0, 0, 475, 476, 1, 0, 0, 0, 476, 478, 1, 0, 0, 0, 477, 475, 1, 0, 0, 0,
982
+ 478, 479, 6, 32, 26, 0, 479, 480, 1, 0, 0, 0, 480, 481, 6, 32, 8, 0, 481, 482, 6, 32,
983
+ 9, 0, 482, 70, 1, 0, 0, 0, 483, 484, 3, 27, 11, 0, 484, 485, 1, 0, 0, 0, 485, 486, 6, 33,
984
+ 8, 0, 486, 487, 6, 33, 9, 0, 487, 72, 1, 0, 0, 0, 488, 489, 5, 92, 0, 0, 489, 490, 7, 10,
985
+ 0, 0, 490, 491, 1, 0, 0, 0, 491, 492, 6, 34, 27, 0, 492, 74, 1, 0, 0, 0, 493, 495, 8, 11,
986
+ 0, 0, 494, 493, 1, 0, 0, 0, 495, 496, 1, 0, 0, 0, 496, 494, 1, 0, 0, 0, 496, 497, 1, 0,
987
+ 0, 0, 497, 498, 1, 0, 0, 0, 498, 499, 6, 35, 27, 0, 499, 76, 1, 0, 0, 0, 500, 501, 5, 92,
988
+ 0, 0, 501, 502, 1, 0, 0, 0, 502, 503, 6, 36, 27, 0, 503, 78, 1, 0, 0, 0, 504, 505, 5, 40,
989
+ 0, 0, 505, 506, 6, 37, 28, 0, 506, 507, 1, 0, 0, 0, 507, 508, 6, 37, 27, 0, 508, 80, 1,
990
+ 0, 0, 0, 509, 510, 4, 38, 15, 0, 510, 511, 5, 41, 0, 0, 511, 512, 6, 38, 29, 0, 512, 513,
991
+ 1, 0, 0, 0, 513, 514, 6, 38, 27, 0, 514, 82, 1, 0, 0, 0, 515, 516, 4, 39, 16, 0, 516, 517,
992
+ 3, 19, 7, 0, 517, 518, 4, 39, 17, 0, 518, 519, 1, 0, 0, 0, 519, 520, 6, 39, 18, 0, 520,
993
+ 84, 1, 0, 0, 0, 521, 522, 4, 40, 18, 0, 522, 523, 3, 11, 3, 0, 523, 524, 4, 40, 19, 0,
994
+ 524, 525, 1, 0, 0, 0, 525, 526, 6, 40, 18, 0, 526, 86, 1, 0, 0, 0, 527, 528, 5, 96, 0,
995
+ 0, 528, 529, 1, 0, 0, 0, 529, 530, 6, 41, 27, 0, 530, 88, 1, 0, 0, 0, 531, 532, 5, 41,
996
+ 0, 0, 532, 533, 6, 42, 30, 0, 533, 534, 1, 0, 0, 0, 534, 535, 6, 42, 31, 0, 535, 536,
997
+ 6, 42, 1, 0, 536, 90, 1, 0, 0, 0, 537, 538, 4, 43, 20, 0, 538, 542, 3, 5, 0, 0, 539, 541,
998
+ 7, 7, 0, 0, 540, 539, 1, 0, 0, 0, 541, 544, 1, 0, 0, 0, 542, 540, 1, 0, 0, 0, 542, 543,
999
+ 1, 0, 0, 0, 543, 545, 1, 0, 0, 0, 544, 542, 1, 0, 0, 0, 545, 546, 6, 43, 32, 0, 546, 547,
1000
+ 1, 0, 0, 0, 547, 548, 6, 43, 8, 0, 548, 549, 6, 43, 9, 0, 549, 92, 1, 0, 0, 0, 550, 551,
1001
+ 3, 27, 11, 0, 551, 552, 1, 0, 0, 0, 552, 553, 6, 44, 8, 0, 553, 554, 6, 44, 9, 0, 554,
1002
+ 94, 1, 0, 0, 0, 555, 561, 5, 34, 0, 0, 556, 557, 5, 92, 0, 0, 557, 560, 8, 8, 0, 0, 558,
1003
+ 560, 8, 12, 0, 0, 559, 556, 1, 0, 0, 0, 559, 558, 1, 0, 0, 0, 560, 563, 1, 0, 0, 0, 561,
1004
+ 559, 1, 0, 0, 0, 561, 562, 1, 0, 0, 0, 562, 564, 1, 0, 0, 0, 563, 561, 1, 0, 0, 0, 564,
1005
+ 565, 5, 34, 0, 0, 565, 566, 1, 0, 0, 0, 566, 567, 6, 45, 33, 0, 567, 96, 1, 0, 0, 0, 568,
1006
+ 570, 8, 13, 0, 0, 569, 568, 1, 0, 0, 0, 570, 571, 1, 0, 0, 0, 571, 569, 1, 0, 0, 0, 571,
1007
+ 572, 1, 0, 0, 0, 572, 573, 1, 0, 0, 0, 573, 574, 6, 46, 33, 0, 574, 98, 1, 0, 0, 0, 575,
1008
+ 576, 5, 96, 0, 0, 576, 577, 1, 0, 0, 0, 577, 578, 6, 47, 33, 0, 578, 100, 1, 0, 0, 0, 579,
1009
+ 580, 5, 34, 0, 0, 580, 581, 1, 0, 0, 0, 581, 582, 6, 48, 33, 0, 582, 102, 1, 0, 0, 0, 583,
1010
+ 584, 5, 91, 0, 0, 584, 585, 6, 49, 34, 0, 585, 586, 1, 0, 0, 0, 586, 587, 6, 49, 33, 0,
1011
+ 587, 104, 1, 0, 0, 0, 588, 589, 4, 50, 21, 0, 589, 590, 5, 93, 0, 0, 590, 591, 6, 50,
1012
+ 35, 0, 591, 592, 1, 0, 0, 0, 592, 593, 6, 50, 33, 0, 593, 106, 1, 0, 0, 0, 594, 595, 5,
1013
+ 93, 0, 0, 595, 596, 6, 51, 36, 0, 596, 597, 1, 0, 0, 0, 597, 598, 6, 51, 37, 0, 598, 599,
1014
+ 6, 51, 1, 0, 599, 108, 1, 0, 0, 0, 600, 601, 4, 52, 22, 0, 601, 605, 3, 27, 11, 0, 602,
1015
+ 604, 7, 7, 0, 0, 603, 602, 1, 0, 0, 0, 604, 607, 1, 0, 0, 0, 605, 603, 1, 0, 0, 0, 605,
1016
+ 606, 1, 0, 0, 0, 606, 608, 1, 0, 0, 0, 607, 605, 1, 0, 0, 0, 608, 612, 3, 5, 0, 0, 609,
1017
+ 611, 7, 1, 0, 0, 610, 609, 1, 0, 0, 0, 611, 614, 1, 0, 0, 0, 612, 610, 1, 0, 0, 0, 612,
1018
+ 613, 1, 0, 0, 0, 613, 618, 1, 0, 0, 0, 614, 612, 1, 0, 0, 0, 615, 617, 7, 7, 0, 0, 616,
1019
+ 615, 1, 0, 0, 0, 617, 620, 1, 0, 0, 0, 618, 616, 1, 0, 0, 0, 618, 619, 1, 0, 0, 0, 619,
1020
+ 621, 1, 0, 0, 0, 620, 618, 1, 0, 0, 0, 621, 622, 6, 52, 38, 0, 622, 623, 1, 0, 0, 0, 623,
1021
+ 624, 6, 52, 8, 0, 624, 625, 6, 52, 9, 0, 625, 110, 1, 0, 0, 0, 626, 630, 4, 53, 23, 0,
1022
+ 627, 629, 7, 7, 0, 0, 628, 627, 1, 0, 0, 0, 629, 632, 1, 0, 0, 0, 630, 628, 1, 0, 0, 0,
1023
+ 630, 631, 1, 0, 0, 0, 631, 633, 1, 0, 0, 0, 632, 630, 1, 0, 0, 0, 633, 637, 3, 5, 0, 0,
1024
+ 634, 636, 7, 1, 0, 0, 635, 634, 1, 0, 0, 0, 636, 639, 1, 0, 0, 0, 637, 635, 1, 0, 0, 0,
1025
+ 637, 638, 1, 0, 0, 0, 638, 643, 1, 0, 0, 0, 639, 637, 1, 0, 0, 0, 640, 642, 7, 7, 0, 0,
1026
+ 641, 640, 1, 0, 0, 0, 642, 645, 1, 0, 0, 0, 643, 641, 1, 0, 0, 0, 643, 644, 1, 0, 0, 0,
1027
+ 644, 646, 1, 0, 0, 0, 645, 643, 1, 0, 0, 0, 646, 647, 6, 53, 39, 0, 647, 648, 1, 0, 0,
1028
+ 0, 648, 649, 6, 53, 8, 0, 649, 650, 6, 53, 9, 0, 650, 112, 1, 0, 0, 0, 651, 652, 4, 54,
1029
+ 24, 0, 652, 653, 3, 27, 11, 0, 653, 654, 1, 0, 0, 0, 654, 655, 6, 54, 8, 0, 655, 656,
1030
+ 6, 54, 9, 0, 656, 114, 1, 0, 0, 0, 657, 659, 8, 14, 0, 0, 658, 657, 1, 0, 0, 0, 659, 660,
1031
+ 1, 0, 0, 0, 660, 658, 1, 0, 0, 0, 660, 661, 1, 0, 0, 0, 661, 662, 1, 0, 0, 0, 662, 663,
1032
+ 6, 55, 23, 0, 663, 116, 1, 0, 0, 0, 664, 665, 5, 96, 0, 0, 665, 666, 1, 0, 0, 0, 666, 667,
1033
+ 6, 56, 23, 0, 667, 118, 1, 0, 0, 0, 668, 669, 5, 13, 0, 0, 669, 670, 5, 10, 0, 0, 670,
1034
+ 671, 1, 0, 0, 0, 671, 672, 6, 57, 40, 0, 672, 673, 1, 0, 0, 0, 673, 674, 6, 57, 23, 0,
1035
+ 674, 120, 1, 0, 0, 0, 675, 676, 5, 10, 0, 0, 676, 677, 6, 58, 41, 0, 677, 678, 1, 0, 0,
1036
+ 0, 678, 679, 6, 58, 23, 0, 679, 122, 1, 0, 0, 0, 680, 681, 5, 13, 0, 0, 681, 682, 1, 0,
1037
+ 0, 0, 682, 683, 6, 59, 23, 0, 683, 124, 1, 0, 0, 0, 50, 0, 1, 2, 3, 4, 132, 138, 141, 146,
1038
+ 152, 154, 161, 163, 168, 183, 186, 189, 194, 200, 205, 216, 221, 227, 232, 238,
1039
+ 247, 261, 273, 288, 317, 337, 354, 364, 408, 426, 438, 444, 475, 496, 542, 559,
1040
+ 561, 571, 605, 612, 618, 630, 637, 643, 660, 42, 1, 12, 0, 2, 1, 0, 1, 13, 1, 7, 24,
1041
+ 0, 0, 1, 0, 1, 17, 2, 1, 18, 3, 1, 19, 4, 7, 20, 0, 2, 0, 0, 1, 20, 5, 6, 0, 0, 1, 21, 6, 7,
1042
+ 14, 0, 2, 2, 0, 1, 22, 7, 7, 16, 0, 2, 3, 0, 7, 18, 0, 7, 25, 0, 1, 27, 8, 1, 28, 9, 1, 29,
1043
+ 10, 7, 23, 0, 2, 4, 0, 7, 19, 0, 1, 32, 11, 7, 21, 0, 1, 37, 12, 1, 38, 13, 1, 42, 14, 7,
1044
+ 15, 0, 1, 43, 15, 7, 22, 0, 1, 49, 16, 1, 50, 17, 1, 51, 18, 7, 17, 0, 1, 52, 19, 1, 53,
1045
+ 20, 1, 57, 21, 1, 58, 22
1200
1046
  ];
1201
1047
  static __ATN;
1202
1048
  static get _ATN() {