c-next 0.1.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 (72) hide show
  1. package/README.md +726 -0
  2. package/bin/cnext.js +5 -0
  3. package/grammar/C.g4 +1112 -0
  4. package/grammar/CNext.g4 +817 -0
  5. package/grammar/CPP14Lexer.g4 +282 -0
  6. package/grammar/CPP14Parser.g4 +1072 -0
  7. package/package.json +85 -0
  8. package/src/analysis/DivisionByZeroAnalyzer.ts +378 -0
  9. package/src/analysis/FunctionCallAnalyzer.ts +526 -0
  10. package/src/analysis/InitializationAnalyzer.ts +725 -0
  11. package/src/analysis/NullCheckAnalyzer.ts +427 -0
  12. package/src/analysis/types/IDivisionByZeroError.ts +25 -0
  13. package/src/analysis/types/IFunctionCallError.ts +17 -0
  14. package/src/analysis/types/IInitializationError.ts +55 -0
  15. package/src/analysis/types/INullCheckError.ts +25 -0
  16. package/src/codegen/CodeGenerator.ts +7945 -0
  17. package/src/codegen/CommentExtractor.ts +240 -0
  18. package/src/codegen/CommentFormatter.ts +155 -0
  19. package/src/codegen/HeaderGenerator.ts +265 -0
  20. package/src/codegen/TypeResolver.ts +365 -0
  21. package/src/codegen/types/ECommentType.ts +10 -0
  22. package/src/codegen/types/IComment.ts +21 -0
  23. package/src/codegen/types/ICommentError.ts +15 -0
  24. package/src/codegen/types/TOverflowBehavior.ts +6 -0
  25. package/src/codegen/types/TParameterInfo.ts +13 -0
  26. package/src/codegen/types/TTypeConstants.ts +94 -0
  27. package/src/codegen/types/TTypeInfo.ts +22 -0
  28. package/src/index.ts +518 -0
  29. package/src/lib/IncludeDiscovery.ts +131 -0
  30. package/src/lib/InputExpansion.ts +121 -0
  31. package/src/lib/PlatformIODetector.ts +162 -0
  32. package/src/lib/transpiler.ts +439 -0
  33. package/src/lib/types/ITranspileResult.ts +80 -0
  34. package/src/parser/c/grammar/C.interp +338 -0
  35. package/src/parser/c/grammar/C.tokens +229 -0
  36. package/src/parser/c/grammar/CLexer.interp +415 -0
  37. package/src/parser/c/grammar/CLexer.tokens +229 -0
  38. package/src/parser/c/grammar/CLexer.ts +750 -0
  39. package/src/parser/c/grammar/CListener.ts +976 -0
  40. package/src/parser/c/grammar/CParser.ts +9663 -0
  41. package/src/parser/c/grammar/CVisitor.ts +626 -0
  42. package/src/parser/cpp/grammar/CPP14Lexer.interp +478 -0
  43. package/src/parser/cpp/grammar/CPP14Lexer.tokens +264 -0
  44. package/src/parser/cpp/grammar/CPP14Lexer.ts +848 -0
  45. package/src/parser/cpp/grammar/CPP14Parser.interp +492 -0
  46. package/src/parser/cpp/grammar/CPP14Parser.tokens +264 -0
  47. package/src/parser/cpp/grammar/CPP14Parser.ts +19961 -0
  48. package/src/parser/cpp/grammar/CPP14ParserListener.ts +2120 -0
  49. package/src/parser/cpp/grammar/CPP14ParserVisitor.ts +1354 -0
  50. package/src/parser/grammar/CNext.interp +340 -0
  51. package/src/parser/grammar/CNext.tokens +214 -0
  52. package/src/parser/grammar/CNextLexer.interp +374 -0
  53. package/src/parser/grammar/CNextLexer.tokens +214 -0
  54. package/src/parser/grammar/CNextLexer.ts +668 -0
  55. package/src/parser/grammar/CNextListener.ts +1020 -0
  56. package/src/parser/grammar/CNextParser.ts +9239 -0
  57. package/src/parser/grammar/CNextVisitor.ts +654 -0
  58. package/src/preprocessor/Preprocessor.ts +301 -0
  59. package/src/preprocessor/ToolchainDetector.ts +225 -0
  60. package/src/preprocessor/types/IPreprocessResult.ts +39 -0
  61. package/src/preprocessor/types/IToolchain.ts +27 -0
  62. package/src/project/FileDiscovery.ts +236 -0
  63. package/src/project/Project.ts +425 -0
  64. package/src/project/types/IProjectConfig.ts +64 -0
  65. package/src/symbols/CNextSymbolCollector.ts +326 -0
  66. package/src/symbols/CSymbolCollector.ts +457 -0
  67. package/src/symbols/CppSymbolCollector.ts +362 -0
  68. package/src/symbols/SymbolTable.ts +312 -0
  69. package/src/symbols/types/IConflict.ts +20 -0
  70. package/src/types/ESourceLanguage.ts +10 -0
  71. package/src/types/ESymbolKind.ts +20 -0
  72. package/src/types/ISymbol.ts +45 -0
@@ -0,0 +1,848 @@
1
+ // Generated from grammar/CPP14Lexer.g4 by ANTLR 4.13.1
2
+
3
+ import * as antlr from "antlr4ng";
4
+ import { Token } from "antlr4ng";
5
+
6
+
7
+ export class CPP14Lexer extends antlr.Lexer {
8
+ public static readonly IntegerLiteral = 1;
9
+ public static readonly CharacterLiteral = 2;
10
+ public static readonly FloatingLiteral = 3;
11
+ public static readonly StringLiteral = 4;
12
+ public static readonly BooleanLiteral = 5;
13
+ public static readonly PointerLiteral = 6;
14
+ public static readonly UserDefinedLiteral = 7;
15
+ public static readonly MultiLineMacro = 8;
16
+ public static readonly Directive = 9;
17
+ public static readonly Alignas = 10;
18
+ public static readonly Alignof = 11;
19
+ public static readonly Asm = 12;
20
+ public static readonly Auto = 13;
21
+ public static readonly Bool = 14;
22
+ public static readonly Break = 15;
23
+ public static readonly Case = 16;
24
+ public static readonly Catch = 17;
25
+ public static readonly Char = 18;
26
+ public static readonly Char16 = 19;
27
+ public static readonly Char32 = 20;
28
+ public static readonly Class = 21;
29
+ public static readonly Const = 22;
30
+ public static readonly Constexpr = 23;
31
+ public static readonly Const_cast = 24;
32
+ public static readonly Continue = 25;
33
+ public static readonly Decltype = 26;
34
+ public static readonly Default = 27;
35
+ public static readonly Delete = 28;
36
+ public static readonly Do = 29;
37
+ public static readonly Double = 30;
38
+ public static readonly Dynamic_cast = 31;
39
+ public static readonly Else = 32;
40
+ public static readonly Enum = 33;
41
+ public static readonly Explicit = 34;
42
+ public static readonly Export = 35;
43
+ public static readonly Extern = 36;
44
+ public static readonly False_ = 37;
45
+ public static readonly Final = 38;
46
+ public static readonly Float = 39;
47
+ public static readonly For = 40;
48
+ public static readonly Friend = 41;
49
+ public static readonly Goto = 42;
50
+ public static readonly If = 43;
51
+ public static readonly Inline = 44;
52
+ public static readonly Int = 45;
53
+ public static readonly Long = 46;
54
+ public static readonly Mutable = 47;
55
+ public static readonly Namespace = 48;
56
+ public static readonly New = 49;
57
+ public static readonly Noexcept = 50;
58
+ public static readonly Nullptr = 51;
59
+ public static readonly Operator = 52;
60
+ public static readonly Override = 53;
61
+ public static readonly Private = 54;
62
+ public static readonly Protected = 55;
63
+ public static readonly Public = 56;
64
+ public static readonly Register = 57;
65
+ public static readonly Reinterpret_cast = 58;
66
+ public static readonly Return = 59;
67
+ public static readonly Short = 60;
68
+ public static readonly Signed = 61;
69
+ public static readonly Sizeof = 62;
70
+ public static readonly Static = 63;
71
+ public static readonly Static_assert = 64;
72
+ public static readonly Static_cast = 65;
73
+ public static readonly Struct = 66;
74
+ public static readonly Switch = 67;
75
+ public static readonly Template = 68;
76
+ public static readonly This = 69;
77
+ public static readonly Thread_local = 70;
78
+ public static readonly Throw = 71;
79
+ public static readonly True_ = 72;
80
+ public static readonly Try = 73;
81
+ public static readonly Typedef = 74;
82
+ public static readonly Typeid_ = 75;
83
+ public static readonly Typename_ = 76;
84
+ public static readonly Union = 77;
85
+ public static readonly Unsigned = 78;
86
+ public static readonly Using = 79;
87
+ public static readonly Virtual = 80;
88
+ public static readonly Void = 81;
89
+ public static readonly Volatile = 82;
90
+ public static readonly Wchar = 83;
91
+ public static readonly While = 84;
92
+ public static readonly LeftParen = 85;
93
+ public static readonly RightParen = 86;
94
+ public static readonly LeftBracket = 87;
95
+ public static readonly RightBracket = 88;
96
+ public static readonly LeftBrace = 89;
97
+ public static readonly RightBrace = 90;
98
+ public static readonly Plus = 91;
99
+ public static readonly Minus = 92;
100
+ public static readonly Star = 93;
101
+ public static readonly Div = 94;
102
+ public static readonly Mod = 95;
103
+ public static readonly Caret = 96;
104
+ public static readonly And = 97;
105
+ public static readonly Or = 98;
106
+ public static readonly Tilde = 99;
107
+ public static readonly Not = 100;
108
+ public static readonly Assign = 101;
109
+ public static readonly Less = 102;
110
+ public static readonly Greater = 103;
111
+ public static readonly PlusAssign = 104;
112
+ public static readonly MinusAssign = 105;
113
+ public static readonly StarAssign = 106;
114
+ public static readonly DivAssign = 107;
115
+ public static readonly ModAssign = 108;
116
+ public static readonly XorAssign = 109;
117
+ public static readonly AndAssign = 110;
118
+ public static readonly OrAssign = 111;
119
+ public static readonly LeftShiftAssign = 112;
120
+ public static readonly RightShiftAssign = 113;
121
+ public static readonly Equal = 114;
122
+ public static readonly NotEqual = 115;
123
+ public static readonly LessEqual = 116;
124
+ public static readonly GreaterEqual = 117;
125
+ public static readonly AndAnd = 118;
126
+ public static readonly OrOr = 119;
127
+ public static readonly PlusPlus = 120;
128
+ public static readonly MinusMinus = 121;
129
+ public static readonly Comma = 122;
130
+ public static readonly ArrowStar = 123;
131
+ public static readonly Arrow = 124;
132
+ public static readonly Question = 125;
133
+ public static readonly Colon = 126;
134
+ public static readonly Doublecolon = 127;
135
+ public static readonly Semi = 128;
136
+ public static readonly Dot = 129;
137
+ public static readonly DotStar = 130;
138
+ public static readonly Ellipsis = 131;
139
+ public static readonly Identifier = 132;
140
+ public static readonly DecimalLiteral = 133;
141
+ public static readonly OctalLiteral = 134;
142
+ public static readonly HexadecimalLiteral = 135;
143
+ public static readonly BinaryLiteral = 136;
144
+ public static readonly Integersuffix = 137;
145
+ public static readonly UserDefinedIntegerLiteral = 138;
146
+ public static readonly UserDefinedFloatingLiteral = 139;
147
+ public static readonly UserDefinedStringLiteral = 140;
148
+ public static readonly UserDefinedCharacterLiteral = 141;
149
+ public static readonly Whitespace = 142;
150
+ public static readonly Newline = 143;
151
+ public static readonly BlockComment = 144;
152
+ public static readonly LineComment = 145;
153
+
154
+ public static readonly channelNames = [
155
+ "DEFAULT_TOKEN_CHANNEL", "HIDDEN"
156
+ ];
157
+
158
+ public static readonly literalNames = [
159
+ null, null, null, null, null, null, null, null, null, null, "'alignas'",
160
+ "'alignof'", "'asm'", "'auto'", "'bool'", "'break'", "'case'", "'catch'",
161
+ "'char'", "'char16_t'", "'char32_t'", "'class'", "'const'", "'constexpr'",
162
+ "'const_cast'", "'continue'", "'decltype'", "'default'", "'delete'",
163
+ "'do'", "'double'", "'dynamic_cast'", "'else'", "'enum'", "'explicit'",
164
+ "'export'", "'extern'", "'false'", "'final'", "'float'", "'for'",
165
+ "'friend'", "'goto'", "'if'", "'inline'", "'int'", "'long'", "'mutable'",
166
+ "'namespace'", "'new'", "'noexcept'", "'nullptr'", "'operator'",
167
+ "'override'", "'private'", "'protected'", "'public'", "'register'",
168
+ "'reinterpret_cast'", "'return'", "'short'", "'signed'", "'sizeof'",
169
+ "'static'", "'static_assert'", "'static_cast'", "'struct'", "'switch'",
170
+ "'template'", "'this'", "'thread_local'", "'throw'", "'true'", "'try'",
171
+ "'typedef'", "'typeid'", "'typename'", "'union'", "'unsigned'",
172
+ "'using'", "'virtual'", "'void'", "'volatile'", "'wchar_t'", "'while'",
173
+ "'('", "')'", "'['", "']'", "'{'", "'}'", "'+'", "'-'", "'*'", "'/'",
174
+ "'%'", "'^'", "'&'", "'|'", "'~'", null, "'='", "'<'", "'>'", "'+='",
175
+ "'-='", "'*='", "'/='", "'%='", "'^='", "'&='", "'|='", "'<<='",
176
+ "'>>='", "'=='", "'!='", "'<='", "'>='", null, null, "'++'", "'--'",
177
+ "','", "'->*'", "'->'", "'?'", "':'", "'::'", "';'", "'.'", "'.*'",
178
+ "'...'"
179
+ ];
180
+
181
+ public static readonly symbolicNames = [
182
+ null, "IntegerLiteral", "CharacterLiteral", "FloatingLiteral", "StringLiteral",
183
+ "BooleanLiteral", "PointerLiteral", "UserDefinedLiteral", "MultiLineMacro",
184
+ "Directive", "Alignas", "Alignof", "Asm", "Auto", "Bool", "Break",
185
+ "Case", "Catch", "Char", "Char16", "Char32", "Class", "Const", "Constexpr",
186
+ "Const_cast", "Continue", "Decltype", "Default", "Delete", "Do",
187
+ "Double", "Dynamic_cast", "Else", "Enum", "Explicit", "Export",
188
+ "Extern", "False_", "Final", "Float", "For", "Friend", "Goto", "If",
189
+ "Inline", "Int", "Long", "Mutable", "Namespace", "New", "Noexcept",
190
+ "Nullptr", "Operator", "Override", "Private", "Protected", "Public",
191
+ "Register", "Reinterpret_cast", "Return", "Short", "Signed", "Sizeof",
192
+ "Static", "Static_assert", "Static_cast", "Struct", "Switch", "Template",
193
+ "This", "Thread_local", "Throw", "True_", "Try", "Typedef", "Typeid_",
194
+ "Typename_", "Union", "Unsigned", "Using", "Virtual", "Void", "Volatile",
195
+ "Wchar", "While", "LeftParen", "RightParen", "LeftBracket", "RightBracket",
196
+ "LeftBrace", "RightBrace", "Plus", "Minus", "Star", "Div", "Mod",
197
+ "Caret", "And", "Or", "Tilde", "Not", "Assign", "Less", "Greater",
198
+ "PlusAssign", "MinusAssign", "StarAssign", "DivAssign", "ModAssign",
199
+ "XorAssign", "AndAssign", "OrAssign", "LeftShiftAssign", "RightShiftAssign",
200
+ "Equal", "NotEqual", "LessEqual", "GreaterEqual", "AndAnd", "OrOr",
201
+ "PlusPlus", "MinusMinus", "Comma", "ArrowStar", "Arrow", "Question",
202
+ "Colon", "Doublecolon", "Semi", "Dot", "DotStar", "Ellipsis", "Identifier",
203
+ "DecimalLiteral", "OctalLiteral", "HexadecimalLiteral", "BinaryLiteral",
204
+ "Integersuffix", "UserDefinedIntegerLiteral", "UserDefinedFloatingLiteral",
205
+ "UserDefinedStringLiteral", "UserDefinedCharacterLiteral", "Whitespace",
206
+ "Newline", "BlockComment", "LineComment"
207
+ ];
208
+
209
+ public static readonly modeNames = [
210
+ "DEFAULT_MODE",
211
+ ];
212
+
213
+ public static readonly ruleNames = [
214
+ "IntegerLiteral", "CharacterLiteral", "FloatingLiteral", "StringLiteral",
215
+ "BooleanLiteral", "PointerLiteral", "UserDefinedLiteral", "MultiLineMacro",
216
+ "Directive", "Alignas", "Alignof", "Asm", "Auto", "Bool", "Break",
217
+ "Case", "Catch", "Char", "Char16", "Char32", "Class", "Const", "Constexpr",
218
+ "Const_cast", "Continue", "Decltype", "Default", "Delete", "Do",
219
+ "Double", "Dynamic_cast", "Else", "Enum", "Explicit", "Export",
220
+ "Extern", "False_", "Final", "Float", "For", "Friend", "Goto", "If",
221
+ "Inline", "Int", "Long", "Mutable", "Namespace", "New", "Noexcept",
222
+ "Nullptr", "Operator", "Override", "Private", "Protected", "Public",
223
+ "Register", "Reinterpret_cast", "Return", "Short", "Signed", "Sizeof",
224
+ "Static", "Static_assert", "Static_cast", "Struct", "Switch", "Template",
225
+ "This", "Thread_local", "Throw", "True_", "Try", "Typedef", "Typeid_",
226
+ "Typename_", "Union", "Unsigned", "Using", "Virtual", "Void", "Volatile",
227
+ "Wchar", "While", "LeftParen", "RightParen", "LeftBracket", "RightBracket",
228
+ "LeftBrace", "RightBrace", "Plus", "Minus", "Star", "Div", "Mod",
229
+ "Caret", "And", "Or", "Tilde", "Not", "Assign", "Less", "Greater",
230
+ "PlusAssign", "MinusAssign", "StarAssign", "DivAssign", "ModAssign",
231
+ "XorAssign", "AndAssign", "OrAssign", "LeftShiftAssign", "RightShiftAssign",
232
+ "Equal", "NotEqual", "LessEqual", "GreaterEqual", "AndAnd", "OrOr",
233
+ "PlusPlus", "MinusMinus", "Comma", "ArrowStar", "Arrow", "Question",
234
+ "Colon", "Doublecolon", "Semi", "Dot", "DotStar", "Ellipsis", "Hexquad",
235
+ "Universalcharactername", "Identifier", "Identifiernondigit", "NONDIGIT",
236
+ "DIGIT", "DecimalLiteral", "OctalLiteral", "HexadecimalLiteral",
237
+ "BinaryLiteral", "NONZERODIGIT", "OCTALDIGIT", "HEXADECIMALDIGIT",
238
+ "BINARYDIGIT", "Integersuffix", "Unsignedsuffix", "Longsuffix",
239
+ "Longlongsuffix", "Cchar", "Escapesequence", "Simpleescapesequence",
240
+ "Octalescapesequence", "Hexadecimalescapesequence", "Fractionalconstant",
241
+ "Exponentpart", "SIGN", "Digitsequence", "Floatingsuffix", "Encodingprefix",
242
+ "Schar", "Rawstring", "UserDefinedIntegerLiteral", "UserDefinedFloatingLiteral",
243
+ "UserDefinedStringLiteral", "UserDefinedCharacterLiteral", "Udsuffix",
244
+ "Whitespace", "Newline", "BlockComment", "LineComment",
245
+ ];
246
+
247
+
248
+ public constructor(input: antlr.CharStream) {
249
+ super(input);
250
+ this.interpreter = new antlr.LexerATNSimulator(this, CPP14Lexer._ATN, CPP14Lexer.decisionsToDFA, new antlr.PredictionContextCache());
251
+ }
252
+
253
+ public get grammarFileName(): string { return "CPP14Lexer.g4"; }
254
+
255
+ public get literalNames(): (string | null)[] { return CPP14Lexer.literalNames; }
256
+ public get symbolicNames(): (string | null)[] { return CPP14Lexer.symbolicNames; }
257
+ public get ruleNames(): string[] { return CPP14Lexer.ruleNames; }
258
+
259
+ public get serializedATN(): number[] { return CPP14Lexer._serializedATN; }
260
+
261
+ public get channelNames(): string[] { return CPP14Lexer.channelNames; }
262
+
263
+ public get modeNames(): string[] { return CPP14Lexer.modeNames; }
264
+
265
+ public static readonly _serializedATN: number[] = [
266
+ 4,0,145,1460,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,
267
+ 5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,
268
+ 2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,
269
+ 7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,
270
+ 2,26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,
271
+ 7,32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,
272
+ 2,39,7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,
273
+ 7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,
274
+ 2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,
275
+ 7,58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,
276
+ 2,65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,
277
+ 7,71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,77,
278
+ 2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,
279
+ 7,84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,
280
+ 2,91,7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,
281
+ 7,97,2,98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103,
282
+ 7,103,2,104,7,104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108,
283
+ 2,109,7,109,2,110,7,110,2,111,7,111,2,112,7,112,2,113,7,113,2,114,
284
+ 7,114,2,115,7,115,2,116,7,116,2,117,7,117,2,118,7,118,2,119,7,119,
285
+ 2,120,7,120,2,121,7,121,2,122,7,122,2,123,7,123,2,124,7,124,2,125,
286
+ 7,125,2,126,7,126,2,127,7,127,2,128,7,128,2,129,7,129,2,130,7,130,
287
+ 2,131,7,131,2,132,7,132,2,133,7,133,2,134,7,134,2,135,7,135,2,136,
288
+ 7,136,2,137,7,137,2,138,7,138,2,139,7,139,2,140,7,140,2,141,7,141,
289
+ 2,142,7,142,2,143,7,143,2,144,7,144,2,145,7,145,2,146,7,146,2,147,
290
+ 7,147,2,148,7,148,2,149,7,149,2,150,7,150,2,151,7,151,2,152,7,152,
291
+ 2,153,7,153,2,154,7,154,2,155,7,155,2,156,7,156,2,157,7,157,2,158,
292
+ 7,158,2,159,7,159,2,160,7,160,2,161,7,161,2,162,7,162,2,163,7,163,
293
+ 2,164,7,164,2,165,7,165,2,166,7,166,2,167,7,167,2,168,7,168,2,169,
294
+ 7,169,2,170,7,170,1,0,1,0,3,0,346,8,0,1,0,1,0,3,0,350,8,0,1,0,1,
295
+ 0,3,0,354,8,0,1,0,1,0,3,0,358,8,0,3,0,360,8,0,1,1,3,1,363,8,1,1,
296
+ 1,1,1,4,1,367,8,1,11,1,12,1,368,1,1,1,1,1,2,1,2,3,2,375,8,2,1,2,
297
+ 3,2,378,8,2,1,2,1,2,1,2,3,2,383,8,2,3,2,385,8,2,1,3,3,3,388,8,3,
298
+ 1,3,1,3,1,3,5,3,393,8,3,10,3,12,3,396,9,3,1,3,3,3,399,8,3,1,4,1,
299
+ 4,3,4,403,8,4,1,5,1,5,1,6,1,6,1,6,1,6,3,6,411,8,6,1,7,1,7,5,7,415,
300
+ 8,7,10,7,12,7,418,9,7,1,7,1,7,3,7,422,8,7,1,7,4,7,425,8,7,11,7,12,
301
+ 7,426,1,7,4,7,430,8,7,11,7,12,7,431,1,7,1,7,1,8,1,8,5,8,438,8,8,
302
+ 10,8,12,8,441,9,8,1,8,1,8,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,10,1,
303
+ 10,1,10,1,10,1,10,1,10,1,10,1,10,1,11,1,11,1,11,1,11,1,12,1,12,1,
304
+ 12,1,12,1,12,1,13,1,13,1,13,1,13,1,13,1,14,1,14,1,14,1,14,1,14,1,
305
+ 14,1,15,1,15,1,15,1,15,1,15,1,16,1,16,1,16,1,16,1,16,1,16,1,17,1,
306
+ 17,1,17,1,17,1,17,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,
307
+ 19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,20,1,20,1,20,1,20,1,
308
+ 20,1,20,1,21,1,21,1,21,1,21,1,21,1,21,1,22,1,22,1,22,1,22,1,22,1,
309
+ 22,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,
310
+ 23,1,23,1,23,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,25,1,
311
+ 25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,26,1,26,1,26,1,26,1,26,1,
312
+ 26,1,26,1,26,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,28,1,28,1,28,1,
313
+ 29,1,29,1,29,1,29,1,29,1,29,1,29,1,30,1,30,1,30,1,30,1,30,1,30,1,
314
+ 30,1,30,1,30,1,30,1,30,1,30,1,30,1,31,1,31,1,31,1,31,1,31,1,32,1,
315
+ 32,1,32,1,32,1,32,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,
316
+ 34,1,34,1,34,1,34,1,34,1,34,1,34,1,35,1,35,1,35,1,35,1,35,1,35,1,
317
+ 35,1,36,1,36,1,36,1,36,1,36,1,36,1,37,1,37,1,37,1,37,1,37,1,37,1,
318
+ 38,1,38,1,38,1,38,1,38,1,38,1,39,1,39,1,39,1,39,1,40,1,40,1,40,1,
319
+ 40,1,40,1,40,1,40,1,41,1,41,1,41,1,41,1,41,1,42,1,42,1,42,1,43,1,
320
+ 43,1,43,1,43,1,43,1,43,1,43,1,44,1,44,1,44,1,44,1,45,1,45,1,45,1,
321
+ 45,1,45,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,47,1,47,1,47,1,
322
+ 47,1,47,1,47,1,47,1,47,1,47,1,47,1,48,1,48,1,48,1,48,1,49,1,49,1,
323
+ 49,1,49,1,49,1,49,1,49,1,49,1,49,1,50,1,50,1,50,1,50,1,50,1,50,1,
324
+ 50,1,50,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,52,1,52,1,
325
+ 52,1,52,1,52,1,52,1,52,1,52,1,52,1,53,1,53,1,53,1,53,1,53,1,53,1,
326
+ 53,1,53,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,55,1,
327
+ 55,1,55,1,55,1,55,1,55,1,55,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,
328
+ 56,1,56,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,
329
+ 57,1,57,1,57,1,57,1,57,1,57,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,
330
+ 59,1,59,1,59,1,59,1,59,1,59,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,
331
+ 61,1,61,1,61,1,61,1,61,1,61,1,61,1,62,1,62,1,62,1,62,1,62,1,62,1,
332
+ 62,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,
333
+ 63,1,63,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,
334
+ 64,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,66,1,66,1,66,1,66,1,66,1,
335
+ 66,1,66,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,68,1,68,1,
336
+ 68,1,68,1,68,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,
337
+ 69,1,69,1,69,1,70,1,70,1,70,1,70,1,70,1,70,1,71,1,71,1,71,1,71,1,
338
+ 71,1,72,1,72,1,72,1,72,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,
339
+ 74,1,74,1,74,1,74,1,74,1,74,1,74,1,75,1,75,1,75,1,75,1,75,1,75,1,
340
+ 75,1,75,1,75,1,76,1,76,1,76,1,76,1,76,1,76,1,77,1,77,1,77,1,77,1,
341
+ 77,1,77,1,77,1,77,1,77,1,78,1,78,1,78,1,78,1,78,1,78,1,79,1,79,1,
342
+ 79,1,79,1,79,1,79,1,79,1,79,1,80,1,80,1,80,1,80,1,80,1,81,1,81,1,
343
+ 81,1,81,1,81,1,81,1,81,1,81,1,81,1,82,1,82,1,82,1,82,1,82,1,82,1,
344
+ 82,1,82,1,83,1,83,1,83,1,83,1,83,1,83,1,84,1,84,1,85,1,85,1,86,1,
345
+ 86,1,87,1,87,1,88,1,88,1,89,1,89,1,90,1,90,1,91,1,91,1,92,1,92,1,
346
+ 93,1,93,1,94,1,94,1,95,1,95,1,96,1,96,1,97,1,97,1,98,1,98,1,99,1,
347
+ 99,1,99,1,99,3,99,1029,8,99,1,100,1,100,1,101,1,101,1,102,1,102,
348
+ 1,103,1,103,1,103,1,104,1,104,1,104,1,105,1,105,1,105,1,106,1,106,
349
+ 1,106,1,107,1,107,1,107,1,108,1,108,1,108,1,109,1,109,1,109,1,110,
350
+ 1,110,1,110,1,111,1,111,1,111,1,111,1,112,1,112,1,112,1,112,1,113,
351
+ 1,113,1,113,1,114,1,114,1,114,1,115,1,115,1,115,1,116,1,116,1,116,
352
+ 1,117,1,117,1,117,1,117,1,117,3,117,1086,8,117,1,118,1,118,1,118,
353
+ 1,118,3,118,1092,8,118,1,119,1,119,1,119,1,120,1,120,1,120,1,121,
354
+ 1,121,1,122,1,122,1,122,1,122,1,123,1,123,1,123,1,124,1,124,1,125,
355
+ 1,125,1,126,1,126,1,126,1,127,1,127,1,128,1,128,1,129,1,129,1,129,
356
+ 1,130,1,130,1,130,1,130,1,131,1,131,1,131,1,131,1,131,1,132,1,132,
357
+ 1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,3,132,1142,8,132,
358
+ 1,133,1,133,1,133,5,133,1147,8,133,10,133,12,133,1150,9,133,1,134,
359
+ 1,134,3,134,1154,8,134,1,135,1,135,1,136,1,136,1,137,1,137,3,137,
360
+ 1162,8,137,1,137,5,137,1165,8,137,10,137,12,137,1168,9,137,1,138,
361
+ 1,138,3,138,1172,8,138,1,138,5,138,1175,8,138,10,138,12,138,1178,
362
+ 9,138,1,139,1,139,1,139,1,139,3,139,1184,8,139,1,139,1,139,3,139,
363
+ 1188,8,139,1,139,5,139,1191,8,139,10,139,12,139,1194,9,139,1,140,
364
+ 1,140,1,140,1,140,3,140,1200,8,140,1,140,1,140,3,140,1204,8,140,
365
+ 1,140,5,140,1207,8,140,10,140,12,140,1210,9,140,1,141,1,141,1,142,
366
+ 1,142,1,143,1,143,1,144,1,144,1,145,1,145,3,145,1222,8,145,1,145,
367
+ 1,145,3,145,1226,8,145,1,145,1,145,3,145,1230,8,145,1,145,1,145,
368
+ 3,145,1234,8,145,3,145,1236,8,145,1,146,1,146,1,147,1,147,1,148,
369
+ 1,148,1,148,1,148,3,148,1246,8,148,1,149,1,149,1,149,3,149,1251,
370
+ 8,149,1,150,1,150,1,150,3,150,1256,8,150,1,151,1,151,1,151,1,151,
371
+ 1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,
372
+ 1,151,1,151,1,151,1,151,1,151,1,151,3,151,1279,8,151,1,151,3,151,
373
+ 1282,8,151,1,151,1,151,1,151,1,151,3,151,1288,8,151,1,152,1,152,
374
+ 1,152,1,152,1,152,1,152,1,152,1,152,1,152,1,152,1,152,3,152,1301,
375
+ 8,152,1,153,1,153,1,153,1,153,4,153,1307,8,153,11,153,12,153,1308,
376
+ 1,154,3,154,1312,8,154,1,154,1,154,1,154,1,154,1,154,3,154,1319,
377
+ 8,154,1,155,1,155,3,155,1323,8,155,1,155,1,155,1,155,3,155,1328,
378
+ 8,155,1,155,3,155,1331,8,155,1,156,1,156,1,157,1,157,3,157,1337,
379
+ 8,157,1,157,5,157,1340,8,157,10,157,12,157,1343,9,157,1,158,1,158,
380
+ 1,159,1,159,1,159,3,159,1350,8,159,1,160,1,160,1,160,3,160,1355,
381
+ 8,160,1,161,1,161,1,161,1,161,1,161,1,161,5,161,1363,8,161,10,161,
382
+ 12,161,1366,9,161,1,161,1,161,5,161,1370,8,161,10,161,12,161,1373,
383
+ 9,161,1,161,1,161,1,161,1,161,5,161,1379,8,161,10,161,12,161,1382,
384
+ 9,161,1,161,1,161,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,
385
+ 1,162,1,162,1,162,1,162,3,162,1398,8,162,1,163,1,163,3,163,1402,
386
+ 8,163,1,163,1,163,1,163,1,163,1,163,1,163,3,163,1410,8,163,1,164,
387
+ 1,164,1,164,1,165,1,165,1,165,1,166,1,166,1,167,4,167,1421,8,167,
388
+ 11,167,12,167,1422,1,167,1,167,1,168,1,168,3,168,1429,8,168,1,168,
389
+ 3,168,1432,8,168,1,168,1,168,1,169,1,169,1,169,1,169,5,169,1440,
390
+ 8,169,10,169,12,169,1443,9,169,1,169,1,169,1,169,1,169,1,169,1,170,
391
+ 1,170,1,170,1,170,5,170,1454,8,170,10,170,12,170,1457,9,170,1,170,
392
+ 1,170,5,416,1364,1371,1380,1441,0,171,1,1,3,2,5,3,7,4,9,5,11,6,13,
393
+ 7,15,8,17,9,19,10,21,11,23,12,25,13,27,14,29,15,31,16,33,17,35,18,
394
+ 37,19,39,20,41,21,43,22,45,23,47,24,49,25,51,26,53,27,55,28,57,29,
395
+ 59,30,61,31,63,32,65,33,67,34,69,35,71,36,73,37,75,38,77,39,79,40,
396
+ 81,41,83,42,85,43,87,44,89,45,91,46,93,47,95,48,97,49,99,50,101,
397
+ 51,103,52,105,53,107,54,109,55,111,56,113,57,115,58,117,59,119,60,
398
+ 121,61,123,62,125,63,127,64,129,65,131,66,133,67,135,68,137,69,139,
399
+ 70,141,71,143,72,145,73,147,74,149,75,151,76,153,77,155,78,157,79,
400
+ 159,80,161,81,163,82,165,83,167,84,169,85,171,86,173,87,175,88,177,
401
+ 89,179,90,181,91,183,92,185,93,187,94,189,95,191,96,193,97,195,98,
402
+ 197,99,199,100,201,101,203,102,205,103,207,104,209,105,211,106,213,
403
+ 107,215,108,217,109,219,110,221,111,223,112,225,113,227,114,229,
404
+ 115,231,116,233,117,235,118,237,119,239,120,241,121,243,122,245,
405
+ 123,247,124,249,125,251,126,253,127,255,128,257,129,259,130,261,
406
+ 131,263,0,265,0,267,132,269,0,271,0,273,0,275,133,277,134,279,135,
407
+ 281,136,283,0,285,0,287,0,289,0,291,137,293,0,295,0,297,0,299,0,
408
+ 301,0,303,0,305,0,307,0,309,0,311,0,313,0,315,0,317,0,319,0,321,
409
+ 0,323,0,325,138,327,139,329,140,331,141,333,0,335,142,337,143,339,
410
+ 144,341,145,1,0,20,3,0,76,76,85,85,117,117,1,0,10,10,3,0,65,90,95,
411
+ 95,97,122,1,0,48,57,1,0,49,57,1,0,48,55,3,0,48,57,65,70,97,102,1,
412
+ 0,48,49,2,0,85,85,117,117,2,0,76,76,108,108,4,0,10,10,13,13,39,39,
413
+ 92,92,2,0,43,43,45,45,4,0,70,70,76,76,102,102,108,108,4,0,10,10,
414
+ 13,13,34,34,92,92,2,0,34,34,40,41,4,0,10,10,13,13,32,32,40,40,1,
415
+ 0,41,41,4,0,10,10,13,13,32,32,34,34,2,0,9,9,32,32,2,0,10,10,13,13,
416
+ 1528,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,
417
+ 0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,
418
+ 0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,
419
+ 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,39,1,0,0,0,
420
+ 0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,
421
+ 0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0,0,0,
422
+ 0,61,1,0,0,0,0,63,1,0,0,0,0,65,1,0,0,0,0,67,1,0,0,0,0,69,1,0,0,0,
423
+ 0,71,1,0,0,0,0,73,1,0,0,0,0,75,1,0,0,0,0,77,1,0,0,0,0,79,1,0,0,0,
424
+ 0,81,1,0,0,0,0,83,1,0,0,0,0,85,1,0,0,0,0,87,1,0,0,0,0,89,1,0,0,0,
425
+ 0,91,1,0,0,0,0,93,1,0,0,0,0,95,1,0,0,0,0,97,1,0,0,0,0,99,1,0,0,0,
426
+ 0,101,1,0,0,0,0,103,1,0,0,0,0,105,1,0,0,0,0,107,1,0,0,0,0,109,1,
427
+ 0,0,0,0,111,1,0,0,0,0,113,1,0,0,0,0,115,1,0,0,0,0,117,1,0,0,0,0,
428
+ 119,1,0,0,0,0,121,1,0,0,0,0,123,1,0,0,0,0,125,1,0,0,0,0,127,1,0,
429
+ 0,0,0,129,1,0,0,0,0,131,1,0,0,0,0,133,1,0,0,0,0,135,1,0,0,0,0,137,
430
+ 1,0,0,0,0,139,1,0,0,0,0,141,1,0,0,0,0,143,1,0,0,0,0,145,1,0,0,0,
431
+ 0,147,1,0,0,0,0,149,1,0,0,0,0,151,1,0,0,0,0,153,1,0,0,0,0,155,1,
432
+ 0,0,0,0,157,1,0,0,0,0,159,1,0,0,0,0,161,1,0,0,0,0,163,1,0,0,0,0,
433
+ 165,1,0,0,0,0,167,1,0,0,0,0,169,1,0,0,0,0,171,1,0,0,0,0,173,1,0,
434
+ 0,0,0,175,1,0,0,0,0,177,1,0,0,0,0,179,1,0,0,0,0,181,1,0,0,0,0,183,
435
+ 1,0,0,0,0,185,1,0,0,0,0,187,1,0,0,0,0,189,1,0,0,0,0,191,1,0,0,0,
436
+ 0,193,1,0,0,0,0,195,1,0,0,0,0,197,1,0,0,0,0,199,1,0,0,0,0,201,1,
437
+ 0,0,0,0,203,1,0,0,0,0,205,1,0,0,0,0,207,1,0,0,0,0,209,1,0,0,0,0,
438
+ 211,1,0,0,0,0,213,1,0,0,0,0,215,1,0,0,0,0,217,1,0,0,0,0,219,1,0,
439
+ 0,0,0,221,1,0,0,0,0,223,1,0,0,0,0,225,1,0,0,0,0,227,1,0,0,0,0,229,
440
+ 1,0,0,0,0,231,1,0,0,0,0,233,1,0,0,0,0,235,1,0,0,0,0,237,1,0,0,0,
441
+ 0,239,1,0,0,0,0,241,1,0,0,0,0,243,1,0,0,0,0,245,1,0,0,0,0,247,1,
442
+ 0,0,0,0,249,1,0,0,0,0,251,1,0,0,0,0,253,1,0,0,0,0,255,1,0,0,0,0,
443
+ 257,1,0,0,0,0,259,1,0,0,0,0,261,1,0,0,0,0,267,1,0,0,0,0,275,1,0,
444
+ 0,0,0,277,1,0,0,0,0,279,1,0,0,0,0,281,1,0,0,0,0,291,1,0,0,0,0,325,
445
+ 1,0,0,0,0,327,1,0,0,0,0,329,1,0,0,0,0,331,1,0,0,0,0,335,1,0,0,0,
446
+ 0,337,1,0,0,0,0,339,1,0,0,0,0,341,1,0,0,0,1,359,1,0,0,0,3,362,1,
447
+ 0,0,0,5,384,1,0,0,0,7,387,1,0,0,0,9,402,1,0,0,0,11,404,1,0,0,0,13,
448
+ 410,1,0,0,0,15,412,1,0,0,0,17,435,1,0,0,0,19,444,1,0,0,0,21,452,
449
+ 1,0,0,0,23,460,1,0,0,0,25,464,1,0,0,0,27,469,1,0,0,0,29,474,1,0,
450
+ 0,0,31,480,1,0,0,0,33,485,1,0,0,0,35,491,1,0,0,0,37,496,1,0,0,0,
451
+ 39,505,1,0,0,0,41,514,1,0,0,0,43,520,1,0,0,0,45,526,1,0,0,0,47,536,
452
+ 1,0,0,0,49,547,1,0,0,0,51,556,1,0,0,0,53,565,1,0,0,0,55,573,1,0,
453
+ 0,0,57,580,1,0,0,0,59,583,1,0,0,0,61,590,1,0,0,0,63,603,1,0,0,0,
454
+ 65,608,1,0,0,0,67,613,1,0,0,0,69,622,1,0,0,0,71,629,1,0,0,0,73,636,
455
+ 1,0,0,0,75,642,1,0,0,0,77,648,1,0,0,0,79,654,1,0,0,0,81,658,1,0,
456
+ 0,0,83,665,1,0,0,0,85,670,1,0,0,0,87,673,1,0,0,0,89,680,1,0,0,0,
457
+ 91,684,1,0,0,0,93,689,1,0,0,0,95,697,1,0,0,0,97,707,1,0,0,0,99,711,
458
+ 1,0,0,0,101,720,1,0,0,0,103,728,1,0,0,0,105,737,1,0,0,0,107,746,
459
+ 1,0,0,0,109,754,1,0,0,0,111,764,1,0,0,0,113,771,1,0,0,0,115,780,
460
+ 1,0,0,0,117,797,1,0,0,0,119,804,1,0,0,0,121,810,1,0,0,0,123,817,
461
+ 1,0,0,0,125,824,1,0,0,0,127,831,1,0,0,0,129,845,1,0,0,0,131,857,
462
+ 1,0,0,0,133,864,1,0,0,0,135,871,1,0,0,0,137,880,1,0,0,0,139,885,
463
+ 1,0,0,0,141,898,1,0,0,0,143,904,1,0,0,0,145,909,1,0,0,0,147,913,
464
+ 1,0,0,0,149,921,1,0,0,0,151,928,1,0,0,0,153,937,1,0,0,0,155,943,
465
+ 1,0,0,0,157,952,1,0,0,0,159,958,1,0,0,0,161,966,1,0,0,0,163,971,
466
+ 1,0,0,0,165,980,1,0,0,0,167,988,1,0,0,0,169,994,1,0,0,0,171,996,
467
+ 1,0,0,0,173,998,1,0,0,0,175,1000,1,0,0,0,177,1002,1,0,0,0,179,1004,
468
+ 1,0,0,0,181,1006,1,0,0,0,183,1008,1,0,0,0,185,1010,1,0,0,0,187,1012,
469
+ 1,0,0,0,189,1014,1,0,0,0,191,1016,1,0,0,0,193,1018,1,0,0,0,195,1020,
470
+ 1,0,0,0,197,1022,1,0,0,0,199,1028,1,0,0,0,201,1030,1,0,0,0,203,1032,
471
+ 1,0,0,0,205,1034,1,0,0,0,207,1036,1,0,0,0,209,1039,1,0,0,0,211,1042,
472
+ 1,0,0,0,213,1045,1,0,0,0,215,1048,1,0,0,0,217,1051,1,0,0,0,219,1054,
473
+ 1,0,0,0,221,1057,1,0,0,0,223,1060,1,0,0,0,225,1064,1,0,0,0,227,1068,
474
+ 1,0,0,0,229,1071,1,0,0,0,231,1074,1,0,0,0,233,1077,1,0,0,0,235,1085,
475
+ 1,0,0,0,237,1091,1,0,0,0,239,1093,1,0,0,0,241,1096,1,0,0,0,243,1099,
476
+ 1,0,0,0,245,1101,1,0,0,0,247,1105,1,0,0,0,249,1108,1,0,0,0,251,1110,
477
+ 1,0,0,0,253,1112,1,0,0,0,255,1115,1,0,0,0,257,1117,1,0,0,0,259,1119,
478
+ 1,0,0,0,261,1122,1,0,0,0,263,1126,1,0,0,0,265,1141,1,0,0,0,267,1143,
479
+ 1,0,0,0,269,1153,1,0,0,0,271,1155,1,0,0,0,273,1157,1,0,0,0,275,1159,
480
+ 1,0,0,0,277,1169,1,0,0,0,279,1183,1,0,0,0,281,1199,1,0,0,0,283,1211,
481
+ 1,0,0,0,285,1213,1,0,0,0,287,1215,1,0,0,0,289,1217,1,0,0,0,291,1235,
482
+ 1,0,0,0,293,1237,1,0,0,0,295,1239,1,0,0,0,297,1245,1,0,0,0,299,1250,
483
+ 1,0,0,0,301,1255,1,0,0,0,303,1287,1,0,0,0,305,1300,1,0,0,0,307,1302,
484
+ 1,0,0,0,309,1318,1,0,0,0,311,1330,1,0,0,0,313,1332,1,0,0,0,315,1334,
485
+ 1,0,0,0,317,1344,1,0,0,0,319,1349,1,0,0,0,321,1354,1,0,0,0,323,1356,
486
+ 1,0,0,0,325,1397,1,0,0,0,327,1409,1,0,0,0,329,1411,1,0,0,0,331,1414,
487
+ 1,0,0,0,333,1417,1,0,0,0,335,1420,1,0,0,0,337,1431,1,0,0,0,339,1435,
488
+ 1,0,0,0,341,1449,1,0,0,0,343,345,3,275,137,0,344,346,3,291,145,0,
489
+ 345,344,1,0,0,0,345,346,1,0,0,0,346,360,1,0,0,0,347,349,3,277,138,
490
+ 0,348,350,3,291,145,0,349,348,1,0,0,0,349,350,1,0,0,0,350,360,1,
491
+ 0,0,0,351,353,3,279,139,0,352,354,3,291,145,0,353,352,1,0,0,0,353,
492
+ 354,1,0,0,0,354,360,1,0,0,0,355,357,3,281,140,0,356,358,3,291,145,
493
+ 0,357,356,1,0,0,0,357,358,1,0,0,0,358,360,1,0,0,0,359,343,1,0,0,
494
+ 0,359,347,1,0,0,0,359,351,1,0,0,0,359,355,1,0,0,0,360,2,1,0,0,0,
495
+ 361,363,7,0,0,0,362,361,1,0,0,0,362,363,1,0,0,0,363,364,1,0,0,0,
496
+ 364,366,5,39,0,0,365,367,3,299,149,0,366,365,1,0,0,0,367,368,1,0,
497
+ 0,0,368,366,1,0,0,0,368,369,1,0,0,0,369,370,1,0,0,0,370,371,5,39,
498
+ 0,0,371,4,1,0,0,0,372,374,3,309,154,0,373,375,3,311,155,0,374,373,
499
+ 1,0,0,0,374,375,1,0,0,0,375,377,1,0,0,0,376,378,3,317,158,0,377,
500
+ 376,1,0,0,0,377,378,1,0,0,0,378,385,1,0,0,0,379,380,3,315,157,0,
501
+ 380,382,3,311,155,0,381,383,3,317,158,0,382,381,1,0,0,0,382,383,
502
+ 1,0,0,0,383,385,1,0,0,0,384,372,1,0,0,0,384,379,1,0,0,0,385,6,1,
503
+ 0,0,0,386,388,3,319,159,0,387,386,1,0,0,0,387,388,1,0,0,0,388,398,
504
+ 1,0,0,0,389,399,3,323,161,0,390,394,5,34,0,0,391,393,3,321,160,0,
505
+ 392,391,1,0,0,0,393,396,1,0,0,0,394,392,1,0,0,0,394,395,1,0,0,0,
506
+ 395,397,1,0,0,0,396,394,1,0,0,0,397,399,5,34,0,0,398,389,1,0,0,0,
507
+ 398,390,1,0,0,0,399,8,1,0,0,0,400,403,3,73,36,0,401,403,3,143,71,
508
+ 0,402,400,1,0,0,0,402,401,1,0,0,0,403,10,1,0,0,0,404,405,3,101,50,
509
+ 0,405,12,1,0,0,0,406,411,3,325,162,0,407,411,3,327,163,0,408,411,
510
+ 3,329,164,0,409,411,3,331,165,0,410,406,1,0,0,0,410,407,1,0,0,0,
511
+ 410,408,1,0,0,0,410,409,1,0,0,0,411,14,1,0,0,0,412,424,5,35,0,0,
512
+ 413,415,8,1,0,0,414,413,1,0,0,0,415,418,1,0,0,0,416,417,1,0,0,0,
513
+ 416,414,1,0,0,0,417,419,1,0,0,0,418,416,1,0,0,0,419,421,5,92,0,0,
514
+ 420,422,5,13,0,0,421,420,1,0,0,0,421,422,1,0,0,0,422,423,1,0,0,0,
515
+ 423,425,5,10,0,0,424,416,1,0,0,0,425,426,1,0,0,0,426,424,1,0,0,0,
516
+ 426,427,1,0,0,0,427,429,1,0,0,0,428,430,8,1,0,0,429,428,1,0,0,0,
517
+ 430,431,1,0,0,0,431,429,1,0,0,0,431,432,1,0,0,0,432,433,1,0,0,0,
518
+ 433,434,6,7,0,0,434,16,1,0,0,0,435,439,5,35,0,0,436,438,8,1,0,0,
519
+ 437,436,1,0,0,0,438,441,1,0,0,0,439,437,1,0,0,0,439,440,1,0,0,0,
520
+ 440,442,1,0,0,0,441,439,1,0,0,0,442,443,6,8,0,0,443,18,1,0,0,0,444,
521
+ 445,5,97,0,0,445,446,5,108,0,0,446,447,5,105,0,0,447,448,5,103,0,
522
+ 0,448,449,5,110,0,0,449,450,5,97,0,0,450,451,5,115,0,0,451,20,1,
523
+ 0,0,0,452,453,5,97,0,0,453,454,5,108,0,0,454,455,5,105,0,0,455,456,
524
+ 5,103,0,0,456,457,5,110,0,0,457,458,5,111,0,0,458,459,5,102,0,0,
525
+ 459,22,1,0,0,0,460,461,5,97,0,0,461,462,5,115,0,0,462,463,5,109,
526
+ 0,0,463,24,1,0,0,0,464,465,5,97,0,0,465,466,5,117,0,0,466,467,5,
527
+ 116,0,0,467,468,5,111,0,0,468,26,1,0,0,0,469,470,5,98,0,0,470,471,
528
+ 5,111,0,0,471,472,5,111,0,0,472,473,5,108,0,0,473,28,1,0,0,0,474,
529
+ 475,5,98,0,0,475,476,5,114,0,0,476,477,5,101,0,0,477,478,5,97,0,
530
+ 0,478,479,5,107,0,0,479,30,1,0,0,0,480,481,5,99,0,0,481,482,5,97,
531
+ 0,0,482,483,5,115,0,0,483,484,5,101,0,0,484,32,1,0,0,0,485,486,5,
532
+ 99,0,0,486,487,5,97,0,0,487,488,5,116,0,0,488,489,5,99,0,0,489,490,
533
+ 5,104,0,0,490,34,1,0,0,0,491,492,5,99,0,0,492,493,5,104,0,0,493,
534
+ 494,5,97,0,0,494,495,5,114,0,0,495,36,1,0,0,0,496,497,5,99,0,0,497,
535
+ 498,5,104,0,0,498,499,5,97,0,0,499,500,5,114,0,0,500,501,5,49,0,
536
+ 0,501,502,5,54,0,0,502,503,5,95,0,0,503,504,5,116,0,0,504,38,1,0,
537
+ 0,0,505,506,5,99,0,0,506,507,5,104,0,0,507,508,5,97,0,0,508,509,
538
+ 5,114,0,0,509,510,5,51,0,0,510,511,5,50,0,0,511,512,5,95,0,0,512,
539
+ 513,5,116,0,0,513,40,1,0,0,0,514,515,5,99,0,0,515,516,5,108,0,0,
540
+ 516,517,5,97,0,0,517,518,5,115,0,0,518,519,5,115,0,0,519,42,1,0,
541
+ 0,0,520,521,5,99,0,0,521,522,5,111,0,0,522,523,5,110,0,0,523,524,
542
+ 5,115,0,0,524,525,5,116,0,0,525,44,1,0,0,0,526,527,5,99,0,0,527,
543
+ 528,5,111,0,0,528,529,5,110,0,0,529,530,5,115,0,0,530,531,5,116,
544
+ 0,0,531,532,5,101,0,0,532,533,5,120,0,0,533,534,5,112,0,0,534,535,
545
+ 5,114,0,0,535,46,1,0,0,0,536,537,5,99,0,0,537,538,5,111,0,0,538,
546
+ 539,5,110,0,0,539,540,5,115,0,0,540,541,5,116,0,0,541,542,5,95,0,
547
+ 0,542,543,5,99,0,0,543,544,5,97,0,0,544,545,5,115,0,0,545,546,5,
548
+ 116,0,0,546,48,1,0,0,0,547,548,5,99,0,0,548,549,5,111,0,0,549,550,
549
+ 5,110,0,0,550,551,5,116,0,0,551,552,5,105,0,0,552,553,5,110,0,0,
550
+ 553,554,5,117,0,0,554,555,5,101,0,0,555,50,1,0,0,0,556,557,5,100,
551
+ 0,0,557,558,5,101,0,0,558,559,5,99,0,0,559,560,5,108,0,0,560,561,
552
+ 5,116,0,0,561,562,5,121,0,0,562,563,5,112,0,0,563,564,5,101,0,0,
553
+ 564,52,1,0,0,0,565,566,5,100,0,0,566,567,5,101,0,0,567,568,5,102,
554
+ 0,0,568,569,5,97,0,0,569,570,5,117,0,0,570,571,5,108,0,0,571,572,
555
+ 5,116,0,0,572,54,1,0,0,0,573,574,5,100,0,0,574,575,5,101,0,0,575,
556
+ 576,5,108,0,0,576,577,5,101,0,0,577,578,5,116,0,0,578,579,5,101,
557
+ 0,0,579,56,1,0,0,0,580,581,5,100,0,0,581,582,5,111,0,0,582,58,1,
558
+ 0,0,0,583,584,5,100,0,0,584,585,5,111,0,0,585,586,5,117,0,0,586,
559
+ 587,5,98,0,0,587,588,5,108,0,0,588,589,5,101,0,0,589,60,1,0,0,0,
560
+ 590,591,5,100,0,0,591,592,5,121,0,0,592,593,5,110,0,0,593,594,5,
561
+ 97,0,0,594,595,5,109,0,0,595,596,5,105,0,0,596,597,5,99,0,0,597,
562
+ 598,5,95,0,0,598,599,5,99,0,0,599,600,5,97,0,0,600,601,5,115,0,0,
563
+ 601,602,5,116,0,0,602,62,1,0,0,0,603,604,5,101,0,0,604,605,5,108,
564
+ 0,0,605,606,5,115,0,0,606,607,5,101,0,0,607,64,1,0,0,0,608,609,5,
565
+ 101,0,0,609,610,5,110,0,0,610,611,5,117,0,0,611,612,5,109,0,0,612,
566
+ 66,1,0,0,0,613,614,5,101,0,0,614,615,5,120,0,0,615,616,5,112,0,0,
567
+ 616,617,5,108,0,0,617,618,5,105,0,0,618,619,5,99,0,0,619,620,5,105,
568
+ 0,0,620,621,5,116,0,0,621,68,1,0,0,0,622,623,5,101,0,0,623,624,5,
569
+ 120,0,0,624,625,5,112,0,0,625,626,5,111,0,0,626,627,5,114,0,0,627,
570
+ 628,5,116,0,0,628,70,1,0,0,0,629,630,5,101,0,0,630,631,5,120,0,0,
571
+ 631,632,5,116,0,0,632,633,5,101,0,0,633,634,5,114,0,0,634,635,5,
572
+ 110,0,0,635,72,1,0,0,0,636,637,5,102,0,0,637,638,5,97,0,0,638,639,
573
+ 5,108,0,0,639,640,5,115,0,0,640,641,5,101,0,0,641,74,1,0,0,0,642,
574
+ 643,5,102,0,0,643,644,5,105,0,0,644,645,5,110,0,0,645,646,5,97,0,
575
+ 0,646,647,5,108,0,0,647,76,1,0,0,0,648,649,5,102,0,0,649,650,5,108,
576
+ 0,0,650,651,5,111,0,0,651,652,5,97,0,0,652,653,5,116,0,0,653,78,
577
+ 1,0,0,0,654,655,5,102,0,0,655,656,5,111,0,0,656,657,5,114,0,0,657,
578
+ 80,1,0,0,0,658,659,5,102,0,0,659,660,5,114,0,0,660,661,5,105,0,0,
579
+ 661,662,5,101,0,0,662,663,5,110,0,0,663,664,5,100,0,0,664,82,1,0,
580
+ 0,0,665,666,5,103,0,0,666,667,5,111,0,0,667,668,5,116,0,0,668,669,
581
+ 5,111,0,0,669,84,1,0,0,0,670,671,5,105,0,0,671,672,5,102,0,0,672,
582
+ 86,1,0,0,0,673,674,5,105,0,0,674,675,5,110,0,0,675,676,5,108,0,0,
583
+ 676,677,5,105,0,0,677,678,5,110,0,0,678,679,5,101,0,0,679,88,1,0,
584
+ 0,0,680,681,5,105,0,0,681,682,5,110,0,0,682,683,5,116,0,0,683,90,
585
+ 1,0,0,0,684,685,5,108,0,0,685,686,5,111,0,0,686,687,5,110,0,0,687,
586
+ 688,5,103,0,0,688,92,1,0,0,0,689,690,5,109,0,0,690,691,5,117,0,0,
587
+ 691,692,5,116,0,0,692,693,5,97,0,0,693,694,5,98,0,0,694,695,5,108,
588
+ 0,0,695,696,5,101,0,0,696,94,1,0,0,0,697,698,5,110,0,0,698,699,5,
589
+ 97,0,0,699,700,5,109,0,0,700,701,5,101,0,0,701,702,5,115,0,0,702,
590
+ 703,5,112,0,0,703,704,5,97,0,0,704,705,5,99,0,0,705,706,5,101,0,
591
+ 0,706,96,1,0,0,0,707,708,5,110,0,0,708,709,5,101,0,0,709,710,5,119,
592
+ 0,0,710,98,1,0,0,0,711,712,5,110,0,0,712,713,5,111,0,0,713,714,5,
593
+ 101,0,0,714,715,5,120,0,0,715,716,5,99,0,0,716,717,5,101,0,0,717,
594
+ 718,5,112,0,0,718,719,5,116,0,0,719,100,1,0,0,0,720,721,5,110,0,
595
+ 0,721,722,5,117,0,0,722,723,5,108,0,0,723,724,5,108,0,0,724,725,
596
+ 5,112,0,0,725,726,5,116,0,0,726,727,5,114,0,0,727,102,1,0,0,0,728,
597
+ 729,5,111,0,0,729,730,5,112,0,0,730,731,5,101,0,0,731,732,5,114,
598
+ 0,0,732,733,5,97,0,0,733,734,5,116,0,0,734,735,5,111,0,0,735,736,
599
+ 5,114,0,0,736,104,1,0,0,0,737,738,5,111,0,0,738,739,5,118,0,0,739,
600
+ 740,5,101,0,0,740,741,5,114,0,0,741,742,5,114,0,0,742,743,5,105,
601
+ 0,0,743,744,5,100,0,0,744,745,5,101,0,0,745,106,1,0,0,0,746,747,
602
+ 5,112,0,0,747,748,5,114,0,0,748,749,5,105,0,0,749,750,5,118,0,0,
603
+ 750,751,5,97,0,0,751,752,5,116,0,0,752,753,5,101,0,0,753,108,1,0,
604
+ 0,0,754,755,5,112,0,0,755,756,5,114,0,0,756,757,5,111,0,0,757,758,
605
+ 5,116,0,0,758,759,5,101,0,0,759,760,5,99,0,0,760,761,5,116,0,0,761,
606
+ 762,5,101,0,0,762,763,5,100,0,0,763,110,1,0,0,0,764,765,5,112,0,
607
+ 0,765,766,5,117,0,0,766,767,5,98,0,0,767,768,5,108,0,0,768,769,5,
608
+ 105,0,0,769,770,5,99,0,0,770,112,1,0,0,0,771,772,5,114,0,0,772,773,
609
+ 5,101,0,0,773,774,5,103,0,0,774,775,5,105,0,0,775,776,5,115,0,0,
610
+ 776,777,5,116,0,0,777,778,5,101,0,0,778,779,5,114,0,0,779,114,1,
611
+ 0,0,0,780,781,5,114,0,0,781,782,5,101,0,0,782,783,5,105,0,0,783,
612
+ 784,5,110,0,0,784,785,5,116,0,0,785,786,5,101,0,0,786,787,5,114,
613
+ 0,0,787,788,5,112,0,0,788,789,5,114,0,0,789,790,5,101,0,0,790,791,
614
+ 5,116,0,0,791,792,5,95,0,0,792,793,5,99,0,0,793,794,5,97,0,0,794,
615
+ 795,5,115,0,0,795,796,5,116,0,0,796,116,1,0,0,0,797,798,5,114,0,
616
+ 0,798,799,5,101,0,0,799,800,5,116,0,0,800,801,5,117,0,0,801,802,
617
+ 5,114,0,0,802,803,5,110,0,0,803,118,1,0,0,0,804,805,5,115,0,0,805,
618
+ 806,5,104,0,0,806,807,5,111,0,0,807,808,5,114,0,0,808,809,5,116,
619
+ 0,0,809,120,1,0,0,0,810,811,5,115,0,0,811,812,5,105,0,0,812,813,
620
+ 5,103,0,0,813,814,5,110,0,0,814,815,5,101,0,0,815,816,5,100,0,0,
621
+ 816,122,1,0,0,0,817,818,5,115,0,0,818,819,5,105,0,0,819,820,5,122,
622
+ 0,0,820,821,5,101,0,0,821,822,5,111,0,0,822,823,5,102,0,0,823,124,
623
+ 1,0,0,0,824,825,5,115,0,0,825,826,5,116,0,0,826,827,5,97,0,0,827,
624
+ 828,5,116,0,0,828,829,5,105,0,0,829,830,5,99,0,0,830,126,1,0,0,0,
625
+ 831,832,5,115,0,0,832,833,5,116,0,0,833,834,5,97,0,0,834,835,5,116,
626
+ 0,0,835,836,5,105,0,0,836,837,5,99,0,0,837,838,5,95,0,0,838,839,
627
+ 5,97,0,0,839,840,5,115,0,0,840,841,5,115,0,0,841,842,5,101,0,0,842,
628
+ 843,5,114,0,0,843,844,5,116,0,0,844,128,1,0,0,0,845,846,5,115,0,
629
+ 0,846,847,5,116,0,0,847,848,5,97,0,0,848,849,5,116,0,0,849,850,5,
630
+ 105,0,0,850,851,5,99,0,0,851,852,5,95,0,0,852,853,5,99,0,0,853,854,
631
+ 5,97,0,0,854,855,5,115,0,0,855,856,5,116,0,0,856,130,1,0,0,0,857,
632
+ 858,5,115,0,0,858,859,5,116,0,0,859,860,5,114,0,0,860,861,5,117,
633
+ 0,0,861,862,5,99,0,0,862,863,5,116,0,0,863,132,1,0,0,0,864,865,5,
634
+ 115,0,0,865,866,5,119,0,0,866,867,5,105,0,0,867,868,5,116,0,0,868,
635
+ 869,5,99,0,0,869,870,5,104,0,0,870,134,1,0,0,0,871,872,5,116,0,0,
636
+ 872,873,5,101,0,0,873,874,5,109,0,0,874,875,5,112,0,0,875,876,5,
637
+ 108,0,0,876,877,5,97,0,0,877,878,5,116,0,0,878,879,5,101,0,0,879,
638
+ 136,1,0,0,0,880,881,5,116,0,0,881,882,5,104,0,0,882,883,5,105,0,
639
+ 0,883,884,5,115,0,0,884,138,1,0,0,0,885,886,5,116,0,0,886,887,5,
640
+ 104,0,0,887,888,5,114,0,0,888,889,5,101,0,0,889,890,5,97,0,0,890,
641
+ 891,5,100,0,0,891,892,5,95,0,0,892,893,5,108,0,0,893,894,5,111,0,
642
+ 0,894,895,5,99,0,0,895,896,5,97,0,0,896,897,5,108,0,0,897,140,1,
643
+ 0,0,0,898,899,5,116,0,0,899,900,5,104,0,0,900,901,5,114,0,0,901,
644
+ 902,5,111,0,0,902,903,5,119,0,0,903,142,1,0,0,0,904,905,5,116,0,
645
+ 0,905,906,5,114,0,0,906,907,5,117,0,0,907,908,5,101,0,0,908,144,
646
+ 1,0,0,0,909,910,5,116,0,0,910,911,5,114,0,0,911,912,5,121,0,0,912,
647
+ 146,1,0,0,0,913,914,5,116,0,0,914,915,5,121,0,0,915,916,5,112,0,
648
+ 0,916,917,5,101,0,0,917,918,5,100,0,0,918,919,5,101,0,0,919,920,
649
+ 5,102,0,0,920,148,1,0,0,0,921,922,5,116,0,0,922,923,5,121,0,0,923,
650
+ 924,5,112,0,0,924,925,5,101,0,0,925,926,5,105,0,0,926,927,5,100,
651
+ 0,0,927,150,1,0,0,0,928,929,5,116,0,0,929,930,5,121,0,0,930,931,
652
+ 5,112,0,0,931,932,5,101,0,0,932,933,5,110,0,0,933,934,5,97,0,0,934,
653
+ 935,5,109,0,0,935,936,5,101,0,0,936,152,1,0,0,0,937,938,5,117,0,
654
+ 0,938,939,5,110,0,0,939,940,5,105,0,0,940,941,5,111,0,0,941,942,
655
+ 5,110,0,0,942,154,1,0,0,0,943,944,5,117,0,0,944,945,5,110,0,0,945,
656
+ 946,5,115,0,0,946,947,5,105,0,0,947,948,5,103,0,0,948,949,5,110,
657
+ 0,0,949,950,5,101,0,0,950,951,5,100,0,0,951,156,1,0,0,0,952,953,
658
+ 5,117,0,0,953,954,5,115,0,0,954,955,5,105,0,0,955,956,5,110,0,0,
659
+ 956,957,5,103,0,0,957,158,1,0,0,0,958,959,5,118,0,0,959,960,5,105,
660
+ 0,0,960,961,5,114,0,0,961,962,5,116,0,0,962,963,5,117,0,0,963,964,
661
+ 5,97,0,0,964,965,5,108,0,0,965,160,1,0,0,0,966,967,5,118,0,0,967,
662
+ 968,5,111,0,0,968,969,5,105,0,0,969,970,5,100,0,0,970,162,1,0,0,
663
+ 0,971,972,5,118,0,0,972,973,5,111,0,0,973,974,5,108,0,0,974,975,
664
+ 5,97,0,0,975,976,5,116,0,0,976,977,5,105,0,0,977,978,5,108,0,0,978,
665
+ 979,5,101,0,0,979,164,1,0,0,0,980,981,5,119,0,0,981,982,5,99,0,0,
666
+ 982,983,5,104,0,0,983,984,5,97,0,0,984,985,5,114,0,0,985,986,5,95,
667
+ 0,0,986,987,5,116,0,0,987,166,1,0,0,0,988,989,5,119,0,0,989,990,
668
+ 5,104,0,0,990,991,5,105,0,0,991,992,5,108,0,0,992,993,5,101,0,0,
669
+ 993,168,1,0,0,0,994,995,5,40,0,0,995,170,1,0,0,0,996,997,5,41,0,
670
+ 0,997,172,1,0,0,0,998,999,5,91,0,0,999,174,1,0,0,0,1000,1001,5,93,
671
+ 0,0,1001,176,1,0,0,0,1002,1003,5,123,0,0,1003,178,1,0,0,0,1004,1005,
672
+ 5,125,0,0,1005,180,1,0,0,0,1006,1007,5,43,0,0,1007,182,1,0,0,0,1008,
673
+ 1009,5,45,0,0,1009,184,1,0,0,0,1010,1011,5,42,0,0,1011,186,1,0,0,
674
+ 0,1012,1013,5,47,0,0,1013,188,1,0,0,0,1014,1015,5,37,0,0,1015,190,
675
+ 1,0,0,0,1016,1017,5,94,0,0,1017,192,1,0,0,0,1018,1019,5,38,0,0,1019,
676
+ 194,1,0,0,0,1020,1021,5,124,0,0,1021,196,1,0,0,0,1022,1023,5,126,
677
+ 0,0,1023,198,1,0,0,0,1024,1029,5,33,0,0,1025,1026,5,110,0,0,1026,
678
+ 1027,5,111,0,0,1027,1029,5,116,0,0,1028,1024,1,0,0,0,1028,1025,1,
679
+ 0,0,0,1029,200,1,0,0,0,1030,1031,5,61,0,0,1031,202,1,0,0,0,1032,
680
+ 1033,5,60,0,0,1033,204,1,0,0,0,1034,1035,5,62,0,0,1035,206,1,0,0,
681
+ 0,1036,1037,5,43,0,0,1037,1038,5,61,0,0,1038,208,1,0,0,0,1039,1040,
682
+ 5,45,0,0,1040,1041,5,61,0,0,1041,210,1,0,0,0,1042,1043,5,42,0,0,
683
+ 1043,1044,5,61,0,0,1044,212,1,0,0,0,1045,1046,5,47,0,0,1046,1047,
684
+ 5,61,0,0,1047,214,1,0,0,0,1048,1049,5,37,0,0,1049,1050,5,61,0,0,
685
+ 1050,216,1,0,0,0,1051,1052,5,94,0,0,1052,1053,5,61,0,0,1053,218,
686
+ 1,0,0,0,1054,1055,5,38,0,0,1055,1056,5,61,0,0,1056,220,1,0,0,0,1057,
687
+ 1058,5,124,0,0,1058,1059,5,61,0,0,1059,222,1,0,0,0,1060,1061,5,60,
688
+ 0,0,1061,1062,5,60,0,0,1062,1063,5,61,0,0,1063,224,1,0,0,0,1064,
689
+ 1065,5,62,0,0,1065,1066,5,62,0,0,1066,1067,5,61,0,0,1067,226,1,0,
690
+ 0,0,1068,1069,5,61,0,0,1069,1070,5,61,0,0,1070,228,1,0,0,0,1071,
691
+ 1072,5,33,0,0,1072,1073,5,61,0,0,1073,230,1,0,0,0,1074,1075,5,60,
692
+ 0,0,1075,1076,5,61,0,0,1076,232,1,0,0,0,1077,1078,5,62,0,0,1078,
693
+ 1079,5,61,0,0,1079,234,1,0,0,0,1080,1081,5,38,0,0,1081,1086,5,38,
694
+ 0,0,1082,1083,5,97,0,0,1083,1084,5,110,0,0,1084,1086,5,100,0,0,1085,
695
+ 1080,1,0,0,0,1085,1082,1,0,0,0,1086,236,1,0,0,0,1087,1088,5,124,
696
+ 0,0,1088,1092,5,124,0,0,1089,1090,5,111,0,0,1090,1092,5,114,0,0,
697
+ 1091,1087,1,0,0,0,1091,1089,1,0,0,0,1092,238,1,0,0,0,1093,1094,5,
698
+ 43,0,0,1094,1095,5,43,0,0,1095,240,1,0,0,0,1096,1097,5,45,0,0,1097,
699
+ 1098,5,45,0,0,1098,242,1,0,0,0,1099,1100,5,44,0,0,1100,244,1,0,0,
700
+ 0,1101,1102,5,45,0,0,1102,1103,5,62,0,0,1103,1104,5,42,0,0,1104,
701
+ 246,1,0,0,0,1105,1106,5,45,0,0,1106,1107,5,62,0,0,1107,248,1,0,0,
702
+ 0,1108,1109,5,63,0,0,1109,250,1,0,0,0,1110,1111,5,58,0,0,1111,252,
703
+ 1,0,0,0,1112,1113,5,58,0,0,1113,1114,5,58,0,0,1114,254,1,0,0,0,1115,
704
+ 1116,5,59,0,0,1116,256,1,0,0,0,1117,1118,5,46,0,0,1118,258,1,0,0,
705
+ 0,1119,1120,5,46,0,0,1120,1121,5,42,0,0,1121,260,1,0,0,0,1122,1123,
706
+ 5,46,0,0,1123,1124,5,46,0,0,1124,1125,5,46,0,0,1125,262,1,0,0,0,
707
+ 1126,1127,3,287,143,0,1127,1128,3,287,143,0,1128,1129,3,287,143,
708
+ 0,1129,1130,3,287,143,0,1130,264,1,0,0,0,1131,1132,5,92,0,0,1132,
709
+ 1133,5,117,0,0,1133,1134,1,0,0,0,1134,1142,3,263,131,0,1135,1136,
710
+ 5,92,0,0,1136,1137,5,85,0,0,1137,1138,1,0,0,0,1138,1139,3,263,131,
711
+ 0,1139,1140,3,263,131,0,1140,1142,1,0,0,0,1141,1131,1,0,0,0,1141,
712
+ 1135,1,0,0,0,1142,266,1,0,0,0,1143,1148,3,269,134,0,1144,1147,3,
713
+ 269,134,0,1145,1147,3,273,136,0,1146,1144,1,0,0,0,1146,1145,1,0,
714
+ 0,0,1147,1150,1,0,0,0,1148,1146,1,0,0,0,1148,1149,1,0,0,0,1149,268,
715
+ 1,0,0,0,1150,1148,1,0,0,0,1151,1154,3,271,135,0,1152,1154,3,265,
716
+ 132,0,1153,1151,1,0,0,0,1153,1152,1,0,0,0,1154,270,1,0,0,0,1155,
717
+ 1156,7,2,0,0,1156,272,1,0,0,0,1157,1158,7,3,0,0,1158,274,1,0,0,0,
718
+ 1159,1166,3,283,141,0,1160,1162,5,39,0,0,1161,1160,1,0,0,0,1161,
719
+ 1162,1,0,0,0,1162,1163,1,0,0,0,1163,1165,3,273,136,0,1164,1161,1,
720
+ 0,0,0,1165,1168,1,0,0,0,1166,1164,1,0,0,0,1166,1167,1,0,0,0,1167,
721
+ 276,1,0,0,0,1168,1166,1,0,0,0,1169,1176,5,48,0,0,1170,1172,5,39,
722
+ 0,0,1171,1170,1,0,0,0,1171,1172,1,0,0,0,1172,1173,1,0,0,0,1173,1175,
723
+ 3,285,142,0,1174,1171,1,0,0,0,1175,1178,1,0,0,0,1176,1174,1,0,0,
724
+ 0,1176,1177,1,0,0,0,1177,278,1,0,0,0,1178,1176,1,0,0,0,1179,1180,
725
+ 5,48,0,0,1180,1184,5,120,0,0,1181,1182,5,48,0,0,1182,1184,5,88,0,
726
+ 0,1183,1179,1,0,0,0,1183,1181,1,0,0,0,1184,1185,1,0,0,0,1185,1192,
727
+ 3,287,143,0,1186,1188,5,39,0,0,1187,1186,1,0,0,0,1187,1188,1,0,0,
728
+ 0,1188,1189,1,0,0,0,1189,1191,3,287,143,0,1190,1187,1,0,0,0,1191,
729
+ 1194,1,0,0,0,1192,1190,1,0,0,0,1192,1193,1,0,0,0,1193,280,1,0,0,
730
+ 0,1194,1192,1,0,0,0,1195,1196,5,48,0,0,1196,1200,5,98,0,0,1197,1198,
731
+ 5,48,0,0,1198,1200,5,66,0,0,1199,1195,1,0,0,0,1199,1197,1,0,0,0,
732
+ 1200,1201,1,0,0,0,1201,1208,3,289,144,0,1202,1204,5,39,0,0,1203,
733
+ 1202,1,0,0,0,1203,1204,1,0,0,0,1204,1205,1,0,0,0,1205,1207,3,289,
734
+ 144,0,1206,1203,1,0,0,0,1207,1210,1,0,0,0,1208,1206,1,0,0,0,1208,
735
+ 1209,1,0,0,0,1209,282,1,0,0,0,1210,1208,1,0,0,0,1211,1212,7,4,0,
736
+ 0,1212,284,1,0,0,0,1213,1214,7,5,0,0,1214,286,1,0,0,0,1215,1216,
737
+ 7,6,0,0,1216,288,1,0,0,0,1217,1218,7,7,0,0,1218,290,1,0,0,0,1219,
738
+ 1221,3,293,146,0,1220,1222,3,295,147,0,1221,1220,1,0,0,0,1221,1222,
739
+ 1,0,0,0,1222,1236,1,0,0,0,1223,1225,3,293,146,0,1224,1226,3,297,
740
+ 148,0,1225,1224,1,0,0,0,1225,1226,1,0,0,0,1226,1236,1,0,0,0,1227,
741
+ 1229,3,295,147,0,1228,1230,3,293,146,0,1229,1228,1,0,0,0,1229,1230,
742
+ 1,0,0,0,1230,1236,1,0,0,0,1231,1233,3,297,148,0,1232,1234,3,293,
743
+ 146,0,1233,1232,1,0,0,0,1233,1234,1,0,0,0,1234,1236,1,0,0,0,1235,
744
+ 1219,1,0,0,0,1235,1223,1,0,0,0,1235,1227,1,0,0,0,1235,1231,1,0,0,
745
+ 0,1236,292,1,0,0,0,1237,1238,7,8,0,0,1238,294,1,0,0,0,1239,1240,
746
+ 7,9,0,0,1240,296,1,0,0,0,1241,1242,5,108,0,0,1242,1246,5,108,0,0,
747
+ 1243,1244,5,76,0,0,1244,1246,5,76,0,0,1245,1241,1,0,0,0,1245,1243,
748
+ 1,0,0,0,1246,298,1,0,0,0,1247,1251,8,10,0,0,1248,1251,3,301,150,
749
+ 0,1249,1251,3,265,132,0,1250,1247,1,0,0,0,1250,1248,1,0,0,0,1250,
750
+ 1249,1,0,0,0,1251,300,1,0,0,0,1252,1256,3,303,151,0,1253,1256,3,
751
+ 305,152,0,1254,1256,3,307,153,0,1255,1252,1,0,0,0,1255,1253,1,0,
752
+ 0,0,1255,1254,1,0,0,0,1256,302,1,0,0,0,1257,1258,5,92,0,0,1258,1288,
753
+ 5,39,0,0,1259,1260,5,92,0,0,1260,1288,5,34,0,0,1261,1262,5,92,0,
754
+ 0,1262,1288,5,63,0,0,1263,1264,5,92,0,0,1264,1288,5,92,0,0,1265,
755
+ 1266,5,92,0,0,1266,1288,5,97,0,0,1267,1268,5,92,0,0,1268,1288,5,
756
+ 98,0,0,1269,1270,5,92,0,0,1270,1288,5,102,0,0,1271,1272,5,92,0,0,
757
+ 1272,1288,5,110,0,0,1273,1274,5,92,0,0,1274,1288,5,114,0,0,1275,
758
+ 1281,5,92,0,0,1276,1278,5,13,0,0,1277,1279,5,10,0,0,1278,1277,1,
759
+ 0,0,0,1278,1279,1,0,0,0,1279,1282,1,0,0,0,1280,1282,5,10,0,0,1281,
760
+ 1276,1,0,0,0,1281,1280,1,0,0,0,1282,1288,1,0,0,0,1283,1284,5,92,
761
+ 0,0,1284,1288,5,116,0,0,1285,1286,5,92,0,0,1286,1288,5,118,0,0,1287,
762
+ 1257,1,0,0,0,1287,1259,1,0,0,0,1287,1261,1,0,0,0,1287,1263,1,0,0,
763
+ 0,1287,1265,1,0,0,0,1287,1267,1,0,0,0,1287,1269,1,0,0,0,1287,1271,
764
+ 1,0,0,0,1287,1273,1,0,0,0,1287,1275,1,0,0,0,1287,1283,1,0,0,0,1287,
765
+ 1285,1,0,0,0,1288,304,1,0,0,0,1289,1290,5,92,0,0,1290,1301,3,285,
766
+ 142,0,1291,1292,5,92,0,0,1292,1293,3,285,142,0,1293,1294,3,285,142,
767
+ 0,1294,1301,1,0,0,0,1295,1296,5,92,0,0,1296,1297,3,285,142,0,1297,
768
+ 1298,3,285,142,0,1298,1299,3,285,142,0,1299,1301,1,0,0,0,1300,1289,
769
+ 1,0,0,0,1300,1291,1,0,0,0,1300,1295,1,0,0,0,1301,306,1,0,0,0,1302,
770
+ 1303,5,92,0,0,1303,1304,5,120,0,0,1304,1306,1,0,0,0,1305,1307,3,
771
+ 287,143,0,1306,1305,1,0,0,0,1307,1308,1,0,0,0,1308,1306,1,0,0,0,
772
+ 1308,1309,1,0,0,0,1309,308,1,0,0,0,1310,1312,3,315,157,0,1311,1310,
773
+ 1,0,0,0,1311,1312,1,0,0,0,1312,1313,1,0,0,0,1313,1314,5,46,0,0,1314,
774
+ 1319,3,315,157,0,1315,1316,3,315,157,0,1316,1317,5,46,0,0,1317,1319,
775
+ 1,0,0,0,1318,1311,1,0,0,0,1318,1315,1,0,0,0,1319,310,1,0,0,0,1320,
776
+ 1322,5,101,0,0,1321,1323,3,313,156,0,1322,1321,1,0,0,0,1322,1323,
777
+ 1,0,0,0,1323,1324,1,0,0,0,1324,1331,3,315,157,0,1325,1327,5,69,0,
778
+ 0,1326,1328,3,313,156,0,1327,1326,1,0,0,0,1327,1328,1,0,0,0,1328,
779
+ 1329,1,0,0,0,1329,1331,3,315,157,0,1330,1320,1,0,0,0,1330,1325,1,
780
+ 0,0,0,1331,312,1,0,0,0,1332,1333,7,11,0,0,1333,314,1,0,0,0,1334,
781
+ 1341,3,273,136,0,1335,1337,5,39,0,0,1336,1335,1,0,0,0,1336,1337,
782
+ 1,0,0,0,1337,1338,1,0,0,0,1338,1340,3,273,136,0,1339,1336,1,0,0,
783
+ 0,1340,1343,1,0,0,0,1341,1339,1,0,0,0,1341,1342,1,0,0,0,1342,316,
784
+ 1,0,0,0,1343,1341,1,0,0,0,1344,1345,7,12,0,0,1345,318,1,0,0,0,1346,
785
+ 1347,5,117,0,0,1347,1350,5,56,0,0,1348,1350,7,0,0,0,1349,1346,1,
786
+ 0,0,0,1349,1348,1,0,0,0,1350,320,1,0,0,0,1351,1355,8,13,0,0,1352,
787
+ 1355,3,301,150,0,1353,1355,3,265,132,0,1354,1351,1,0,0,0,1354,1352,
788
+ 1,0,0,0,1354,1353,1,0,0,0,1355,322,1,0,0,0,1356,1357,5,82,0,0,1357,
789
+ 1358,5,34,0,0,1358,1364,1,0,0,0,1359,1360,5,92,0,0,1360,1363,7,14,
790
+ 0,0,1361,1363,8,15,0,0,1362,1359,1,0,0,0,1362,1361,1,0,0,0,1363,
791
+ 1366,1,0,0,0,1364,1365,1,0,0,0,1364,1362,1,0,0,0,1365,1367,1,0,0,
792
+ 0,1366,1364,1,0,0,0,1367,1371,5,40,0,0,1368,1370,8,16,0,0,1369,1368,
793
+ 1,0,0,0,1370,1373,1,0,0,0,1371,1372,1,0,0,0,1371,1369,1,0,0,0,1372,
794
+ 1374,1,0,0,0,1373,1371,1,0,0,0,1374,1380,5,41,0,0,1375,1376,5,92,
795
+ 0,0,1376,1379,7,14,0,0,1377,1379,8,17,0,0,1378,1375,1,0,0,0,1378,
796
+ 1377,1,0,0,0,1379,1382,1,0,0,0,1380,1381,1,0,0,0,1380,1378,1,0,0,
797
+ 0,1381,1383,1,0,0,0,1382,1380,1,0,0,0,1383,1384,5,34,0,0,1384,324,
798
+ 1,0,0,0,1385,1386,3,275,137,0,1386,1387,3,333,166,0,1387,1398,1,
799
+ 0,0,0,1388,1389,3,277,138,0,1389,1390,3,333,166,0,1390,1398,1,0,
800
+ 0,0,1391,1392,3,279,139,0,1392,1393,3,333,166,0,1393,1398,1,0,0,
801
+ 0,1394,1395,3,281,140,0,1395,1396,3,333,166,0,1396,1398,1,0,0,0,
802
+ 1397,1385,1,0,0,0,1397,1388,1,0,0,0,1397,1391,1,0,0,0,1397,1394,
803
+ 1,0,0,0,1398,326,1,0,0,0,1399,1401,3,309,154,0,1400,1402,3,311,155,
804
+ 0,1401,1400,1,0,0,0,1401,1402,1,0,0,0,1402,1403,1,0,0,0,1403,1404,
805
+ 3,333,166,0,1404,1410,1,0,0,0,1405,1406,3,315,157,0,1406,1407,3,
806
+ 311,155,0,1407,1408,3,333,166,0,1408,1410,1,0,0,0,1409,1399,1,0,
807
+ 0,0,1409,1405,1,0,0,0,1410,328,1,0,0,0,1411,1412,3,7,3,0,1412,1413,
808
+ 3,333,166,0,1413,330,1,0,0,0,1414,1415,3,3,1,0,1415,1416,3,333,166,
809
+ 0,1416,332,1,0,0,0,1417,1418,3,267,133,0,1418,334,1,0,0,0,1419,1421,
810
+ 7,18,0,0,1420,1419,1,0,0,0,1421,1422,1,0,0,0,1422,1420,1,0,0,0,1422,
811
+ 1423,1,0,0,0,1423,1424,1,0,0,0,1424,1425,6,167,1,0,1425,336,1,0,
812
+ 0,0,1426,1428,5,13,0,0,1427,1429,5,10,0,0,1428,1427,1,0,0,0,1428,
813
+ 1429,1,0,0,0,1429,1432,1,0,0,0,1430,1432,5,10,0,0,1431,1426,1,0,
814
+ 0,0,1431,1430,1,0,0,0,1432,1433,1,0,0,0,1433,1434,6,168,1,0,1434,
815
+ 338,1,0,0,0,1435,1436,5,47,0,0,1436,1437,5,42,0,0,1437,1441,1,0,
816
+ 0,0,1438,1440,9,0,0,0,1439,1438,1,0,0,0,1440,1443,1,0,0,0,1441,1442,
817
+ 1,0,0,0,1441,1439,1,0,0,0,1442,1444,1,0,0,0,1443,1441,1,0,0,0,1444,
818
+ 1445,5,42,0,0,1445,1446,5,47,0,0,1446,1447,1,0,0,0,1447,1448,6,169,
819
+ 1,0,1448,340,1,0,0,0,1449,1450,5,47,0,0,1450,1451,5,47,0,0,1451,
820
+ 1455,1,0,0,0,1452,1454,8,19,0,0,1453,1452,1,0,0,0,1454,1457,1,0,
821
+ 0,0,1455,1453,1,0,0,0,1455,1456,1,0,0,0,1456,1458,1,0,0,0,1457,1455,
822
+ 1,0,0,0,1458,1459,6,170,1,0,1459,342,1,0,0,0,74,0,345,349,353,357,
823
+ 359,362,368,374,377,382,384,387,394,398,402,410,416,421,426,431,
824
+ 439,1028,1085,1091,1141,1146,1148,1153,1161,1166,1171,1176,1183,
825
+ 1187,1192,1199,1203,1208,1221,1225,1229,1233,1235,1245,1250,1255,
826
+ 1278,1281,1287,1300,1308,1311,1318,1322,1327,1330,1336,1341,1349,
827
+ 1354,1362,1364,1371,1378,1380,1397,1401,1409,1422,1428,1431,1441,
828
+ 1455,2,0,1,0,6,0,0
829
+ ];
830
+
831
+ private static __ATN: antlr.ATN;
832
+ public static get _ATN(): antlr.ATN {
833
+ if (!CPP14Lexer.__ATN) {
834
+ CPP14Lexer.__ATN = new antlr.ATNDeserializer().deserialize(CPP14Lexer._serializedATN);
835
+ }
836
+
837
+ return CPP14Lexer.__ATN;
838
+ }
839
+
840
+
841
+ private static readonly vocabulary = new antlr.Vocabulary(CPP14Lexer.literalNames, CPP14Lexer.symbolicNames, []);
842
+
843
+ public override get vocabulary(): antlr.Vocabulary {
844
+ return CPP14Lexer.vocabulary;
845
+ }
846
+
847
+ private static readonly decisionsToDFA = CPP14Lexer._ATN.decisionToState.map( (ds: antlr.DecisionState, index: number) => new antlr.DFA(ds, index) );
848
+ }