From e0ed5dab440956dde21b197df180304dc779edd9 Mon Sep 17 00:00:00 2001 From: Franco Victorio Date: Wed, 13 Nov 2024 10:26:57 +0100 Subject: [PATCH 1/2] Update grammar --- antlr | 2 +- src/antlr/Solidity.interp | 4 +- src/antlr/Solidity.tokens | 82 +- src/antlr/SolidityLexer.interp | 5 +- src/antlr/SolidityLexer.tokens | 82 +- src/antlr/SolidityLexer.ts | 884 ++++++------- src/antlr/SolidityListener.ts | 204 +-- src/antlr/SolidityParser.ts | 2235 ++++++++++++++++---------------- src/antlr/SolidityVisitor.ts | 204 +-- src/antlr/solidity-tokens.ts | 47 +- 10 files changed, 1891 insertions(+), 1858 deletions(-) diff --git a/antlr b/antlr index b8d85ea..5ffe248 160000 --- a/antlr +++ b/antlr @@ -1 +1 @@ -Subproject commit b8d85eac0ede33db81692a97e93a185f05cd7215 +Subproject commit 5ffe248a1adc547b16a894c0a65856070d5ae4d5 diff --git a/src/antlr/Solidity.interp b/src/antlr/Solidity.interp index 4445590..506142d 100644 --- a/src/antlr/Solidity.interp +++ b/src/antlr/Solidity.interp @@ -110,6 +110,7 @@ null 'anonymous' 'break' 'constant' +'transient' 'immutable' 'continue' 'leave' @@ -246,6 +247,7 @@ ReservedKeyword AnonymousKeyword BreakKeyword ConstantKeyword +TransientKeyword ImmutableKeyword ContinueKeyword LeaveKeyword @@ -375,4 +377,4 @@ stringLiteral atn: -[4, 1, 133, 1170, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 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, 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, 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, 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, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 214, 8, 0, 10, 0, 12, 0, 217, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 3, 3, 231, 8, 3, 1, 4, 1, 4, 3, 4, 235, 8, 4, 1, 4, 5, 4, 238, 8, 4, 10, 4, 12, 4, 241, 9, 4, 1, 5, 1, 5, 1, 6, 3, 6, 246, 8, 6, 1, 6, 1, 6, 3, 6, 250, 8, 6, 1, 6, 3, 6, 253, 8, 6, 1, 7, 1, 7, 1, 7, 3, 7, 258, 8, 7, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 264, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 271, 8, 8, 1, 8, 1, 8, 3, 8, 275, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 286, 8, 8, 10, 8, 12, 8, 289, 9, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 296, 8, 8, 1, 9, 1, 9, 1, 10, 3, 10, 301, 8, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 5, 10, 309, 8, 10, 10, 10, 12, 10, 312, 9, 10, 3, 10, 314, 8, 10, 1, 10, 1, 10, 5, 10, 318, 8, 10, 10, 10, 12, 10, 321, 9, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 3, 11, 328, 8, 11, 1, 11, 3, 11, 331, 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 342, 8, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 351, 8, 13, 10, 13, 12, 13, 354, 9, 13, 1, 13, 1, 13, 1, 13, 3, 13, 359, 8, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 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, 17, 1, 17, 1, 17, 1, 17, 3, 17, 386, 8, 17, 1, 17, 3, 17, 389, 8, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 5, 18, 398, 8, 18, 10, 18, 12, 18, 401, 9, 18, 1, 18, 1, 18, 3, 18, 405, 8, 18, 1, 19, 1, 19, 1, 19, 3, 19, 410, 8, 19, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 5, 21, 422, 8, 21, 10, 21, 12, 21, 425, 9, 21, 3, 21, 427, 8, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 3, 22, 434, 8, 22, 1, 22, 1, 22, 5, 22, 438, 8, 22, 10, 22, 12, 22, 441, 9, 22, 1, 22, 1, 22, 3, 22, 445, 8, 22, 1, 23, 1, 23, 1, 23, 3, 23, 450, 8, 23, 1, 23, 3, 23, 453, 8, 23, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 459, 8, 24, 1, 24, 1, 24, 3, 24, 463, 8, 24, 1, 25, 1, 25, 3, 25, 467, 8, 25, 1, 25, 1, 25, 1, 25, 3, 25, 472, 8, 25, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 5, 27, 485, 8, 27, 10, 27, 12, 27, 488, 9, 27, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 494, 8, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 504, 8, 30, 1, 30, 1, 30, 5, 30, 508, 8, 30, 10, 30, 12, 30, 511, 9, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 5, 31, 519, 8, 31, 10, 31, 12, 31, 522, 9, 31, 3, 31, 524, 8, 31, 1, 31, 1, 31, 1, 32, 1, 32, 3, 32, 530, 8, 32, 1, 32, 3, 32, 533, 8, 32, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 539, 8, 33, 10, 33, 12, 33, 542, 9, 33, 3, 33, 544, 8, 33, 1, 33, 1, 33, 1, 34, 1, 34, 3, 34, 550, 8, 34, 1, 34, 3, 34, 553, 8, 34, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 559, 8, 35, 10, 35, 12, 35, 562, 9, 35, 3, 35, 564, 8, 35, 1, 35, 1, 35, 1, 36, 1, 36, 3, 36, 570, 8, 36, 1, 37, 1, 37, 3, 37, 574, 8, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 585, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 590, 8, 38, 1, 38, 5, 38, 593, 8, 38, 10, 38, 12, 38, 596, 9, 38, 1, 39, 1, 39, 1, 39, 5, 39, 601, 8, 39, 10, 39, 12, 39, 604, 9, 39, 1, 40, 1, 40, 3, 40, 608, 8, 40, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 614, 8, 41, 1, 41, 1, 41, 1, 41, 3, 41, 619, 8, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 5, 44, 632, 8, 44, 10, 44, 12, 44, 635, 9, 44, 1, 44, 1, 44, 3, 44, 639, 8, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 5, 47, 647, 8, 47, 10, 47, 12, 47, 650, 9, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 669, 8, 48, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 681, 8, 50, 1, 51, 1, 51, 1, 51, 3, 51, 686, 8, 51, 1, 51, 1, 51, 4, 51, 690, 8, 51, 11, 51, 12, 51, 691, 1, 52, 1, 52, 3, 52, 696, 8, 52, 1, 52, 3, 52, 699, 8, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 3, 54, 711, 8, 54, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 720, 8, 56, 1, 56, 1, 56, 3, 56, 724, 8, 56, 1, 56, 3, 56, 727, 8, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 3, 57, 734, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 740, 8, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 3, 62, 762, 8, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 784, 8, 66, 1, 66, 1, 66, 3, 66, 788, 8, 66, 1, 66, 1, 66, 1, 67, 3, 67, 793, 8, 67, 1, 67, 1, 67, 3, 67, 797, 8, 67, 5, 67, 799, 8, 67, 10, 67, 12, 67, 802, 9, 67, 1, 68, 1, 68, 3, 68, 806, 8, 68, 1, 68, 5, 68, 809, 8, 68, 10, 68, 12, 68, 812, 9, 68, 1, 68, 3, 68, 815, 8, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 839, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 893, 8, 70, 1, 70, 1, 70, 3, 70, 897, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 5, 70, 913, 8, 70, 10, 70, 12, 70, 916, 9, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 927, 8, 71, 1, 72, 1, 72, 1, 72, 5, 72, 932, 8, 72, 10, 72, 12, 72, 935, 9, 72, 1, 73, 1, 73, 1, 73, 5, 73, 940, 8, 73, 10, 73, 12, 73, 943, 9, 73, 1, 73, 3, 73, 946, 8, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 3, 75, 954, 8, 75, 1, 75, 1, 75, 3, 75, 958, 8, 75, 3, 75, 960, 8, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 5, 77, 969, 8, 77, 10, 77, 12, 77, 972, 9, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 3, 78, 993, 8, 78, 1, 79, 1, 79, 1, 79, 3, 79, 998, 8, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 3, 81, 1008, 8, 81, 1, 81, 1, 81, 3, 81, 1012, 8, 81, 1, 81, 1, 81, 5, 81, 1016, 8, 81, 10, 81, 12, 81, 1019, 9, 81, 1, 81, 3, 81, 1022, 8, 81, 1, 82, 1, 82, 1, 82, 1, 82, 3, 82, 1028, 8, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 3, 84, 1041, 8, 84, 1, 85, 1, 85, 1, 85, 5, 85, 1046, 8, 85, 10, 85, 12, 85, 1049, 9, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 5, 88, 1061, 8, 88, 10, 88, 12, 88, 1064, 9, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 3, 89, 1072, 8, 89, 1, 90, 1, 90, 1, 90, 1, 90, 3, 90, 1078, 8, 90, 1, 90, 1, 90, 3, 90, 1082, 8, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 3, 92, 1092, 8, 92, 1, 92, 1, 92, 1, 92, 3, 92, 1097, 8, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 3, 94, 1110, 8, 94, 1, 95, 1, 95, 3, 95, 1114, 8, 95, 1, 95, 1, 95, 3, 95, 1118, 8, 95, 5, 95, 1120, 8, 95, 10, 95, 12, 95, 1123, 9, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 5, 95, 1130, 8, 95, 10, 95, 12, 95, 1133, 9, 95, 3, 95, 1135, 8, 95, 1, 95, 3, 95, 1138, 8, 95, 1, 96, 1, 96, 3, 96, 1142, 8, 96, 1, 97, 1, 97, 1, 98, 4, 98, 1147, 8, 98, 11, 98, 12, 98, 1148, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 5, 99, 1156, 8, 99, 10, 99, 12, 99, 1159, 9, 99, 1, 99, 1, 99, 3, 99, 1163, 8, 99, 1, 100, 4, 100, 1166, 8, 100, 11, 100, 12, 100, 1167, 1, 100, 0, 2, 76, 140, 101, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 0, 15, 1, 0, 5, 11, 1, 0, 19, 21, 3, 0, 3, 3, 5, 10, 28, 35, 1, 0, 48, 50, 4, 0, 110, 110, 117, 117, 121, 121, 123, 123, 3, 0, 44, 44, 63, 66, 97, 101, 1, 0, 67, 68, 1, 0, 30, 31, 2, 0, 3, 3, 32, 33, 1, 0, 74, 75, 1, 0, 7, 10, 1, 0, 34, 35, 2, 0, 11, 11, 78, 87, 1, 0, 103, 104, 10, 0, 14, 14, 25, 25, 44, 44, 50, 50, 62, 62, 95, 95, 113, 113, 117, 117, 124, 125, 127, 128, 1299, 0, 215, 1, 0, 0, 0, 2, 220, 1, 0, 0, 0, 4, 225, 1, 0, 0, 0, 6, 230, 1, 0, 0, 0, 8, 232, 1, 0, 0, 0, 10, 242, 1, 0, 0, 0, 12, 252, 1, 0, 0, 0, 14, 254, 1, 0, 0, 0, 16, 295, 1, 0, 0, 0, 18, 297, 1, 0, 0, 0, 20, 300, 1, 0, 0, 0, 22, 324, 1, 0, 0, 0, 24, 341, 1, 0, 0, 0, 26, 343, 1, 0, 0, 0, 28, 362, 1, 0, 0, 0, 30, 369, 1, 0, 0, 0, 32, 374, 1, 0, 0, 0, 34, 380, 1, 0, 0, 0, 36, 404, 1, 0, 0, 0, 38, 406, 1, 0, 0, 0, 40, 411, 1, 0, 0, 0, 42, 413, 1, 0, 0, 0, 44, 430, 1, 0, 0, 0, 46, 446, 1, 0, 0, 0, 48, 454, 1, 0, 0, 0, 50, 471, 1, 0, 0, 0, 52, 473, 1, 0, 0, 0, 54, 486, 1, 0, 0, 0, 56, 489, 1, 0, 0, 0, 58, 497, 1, 0, 0, 0, 60, 499, 1, 0, 0, 0, 62, 514, 1, 0, 0, 0, 64, 527, 1, 0, 0, 0, 66, 534, 1, 0, 0, 0, 68, 547, 1, 0, 0, 0, 70, 554, 1, 0, 0, 0, 72, 567, 1, 0, 0, 0, 74, 571, 1, 0, 0, 0, 76, 584, 1, 0, 0, 0, 78, 597, 1, 0, 0, 0, 80, 607, 1, 0, 0, 0, 82, 609, 1, 0, 0, 0, 84, 622, 1, 0, 0, 0, 86, 624, 1, 0, 0, 0, 88, 626, 1, 0, 0, 0, 90, 640, 1, 0, 0, 0, 92, 642, 1, 0, 0, 0, 94, 644, 1, 0, 0, 0, 96, 668, 1, 0, 0, 0, 98, 670, 1, 0, 0, 0, 100, 673, 1, 0, 0, 0, 102, 682, 1, 0, 0, 0, 104, 693, 1, 0, 0, 0, 106, 702, 1, 0, 0, 0, 108, 710, 1, 0, 0, 0, 110, 712, 1, 0, 0, 0, 112, 715, 1, 0, 0, 0, 114, 731, 1, 0, 0, 0, 116, 743, 1, 0, 0, 0, 118, 745, 1, 0, 0, 0, 120, 753, 1, 0, 0, 0, 122, 756, 1, 0, 0, 0, 124, 759, 1, 0, 0, 0, 126, 765, 1, 0, 0, 0, 128, 768, 1, 0, 0, 0, 130, 772, 1, 0, 0, 0, 132, 783, 1, 0, 0, 0, 134, 792, 1, 0, 0, 0, 136, 803, 1, 0, 0, 0, 138, 818, 1, 0, 0, 0, 140, 838, 1, 0, 0, 0, 142, 926, 1, 0, 0, 0, 144, 928, 1, 0, 0, 0, 146, 936, 1, 0, 0, 0, 148, 947, 1, 0, 0, 0, 150, 959, 1, 0, 0, 0, 152, 961, 1, 0, 0, 0, 154, 966, 1, 0, 0, 0, 156, 992, 1, 0, 0, 0, 158, 997, 1, 0, 0, 0, 160, 999, 1, 0, 0, 0, 162, 1007, 1, 0, 0, 0, 164, 1023, 1, 0, 0, 0, 166, 1029, 1, 0, 0, 0, 168, 1040, 1, 0, 0, 0, 170, 1042, 1, 0, 0, 0, 172, 1050, 1, 0, 0, 0, 174, 1054, 1, 0, 0, 0, 176, 1057, 1, 0, 0, 0, 178, 1071, 1, 0, 0, 0, 180, 1073, 1, 0, 0, 0, 182, 1085, 1, 0, 0, 0, 184, 1088, 1, 0, 0, 0, 186, 1100, 1, 0, 0, 0, 188, 1109, 1, 0, 0, 0, 190, 1137, 1, 0, 0, 0, 192, 1139, 1, 0, 0, 0, 194, 1143, 1, 0, 0, 0, 196, 1146, 1, 0, 0, 0, 198, 1150, 1, 0, 0, 0, 200, 1165, 1, 0, 0, 0, 202, 214, 3, 2, 1, 0, 203, 214, 3, 16, 8, 0, 204, 214, 3, 20, 10, 0, 205, 214, 3, 60, 30, 0, 206, 214, 3, 56, 28, 0, 207, 214, 3, 42, 21, 0, 208, 214, 3, 48, 24, 0, 209, 214, 3, 28, 14, 0, 210, 214, 3, 30, 15, 0, 211, 214, 3, 32, 16, 0, 212, 214, 3, 34, 17, 0, 213, 202, 1, 0, 0, 0, 213, 203, 1, 0, 0, 0, 213, 204, 1, 0, 0, 0, 213, 205, 1, 0, 0, 0, 213, 206, 1, 0, 0, 0, 213, 207, 1, 0, 0, 0, 213, 208, 1, 0, 0, 0, 213, 209, 1, 0, 0, 0, 213, 210, 1, 0, 0, 0, 213, 211, 1, 0, 0, 0, 213, 212, 1, 0, 0, 0, 214, 217, 1, 0, 0, 0, 215, 213, 1, 0, 0, 0, 215, 216, 1, 0, 0, 0, 216, 218, 1, 0, 0, 0, 217, 215, 1, 0, 0, 0, 218, 219, 5, 0, 0, 1, 219, 1, 1, 0, 0, 0, 220, 221, 5, 1, 0, 0, 221, 222, 3, 4, 2, 0, 222, 223, 3, 6, 3, 0, 223, 224, 5, 2, 0, 0, 224, 3, 1, 0, 0, 0, 225, 226, 3, 194, 97, 0, 226, 5, 1, 0, 0, 0, 227, 231, 5, 3, 0, 0, 228, 231, 3, 8, 4, 0, 229, 231, 3, 140, 70, 0, 230, 227, 1, 0, 0, 0, 230, 228, 1, 0, 0, 0, 230, 229, 1, 0, 0, 0, 231, 7, 1, 0, 0, 0, 232, 239, 3, 12, 6, 0, 233, 235, 5, 4, 0, 0, 234, 233, 1, 0, 0, 0, 234, 235, 1, 0, 0, 0, 235, 236, 1, 0, 0, 0, 236, 238, 3, 12, 6, 0, 237, 234, 1, 0, 0, 0, 238, 241, 1, 0, 0, 0, 239, 237, 1, 0, 0, 0, 239, 240, 1, 0, 0, 0, 240, 9, 1, 0, 0, 0, 241, 239, 1, 0, 0, 0, 242, 243, 7, 0, 0, 0, 243, 11, 1, 0, 0, 0, 244, 246, 3, 10, 5, 0, 245, 244, 1, 0, 0, 0, 245, 246, 1, 0, 0, 0, 246, 247, 1, 0, 0, 0, 247, 253, 5, 130, 0, 0, 248, 250, 3, 10, 5, 0, 249, 248, 1, 0, 0, 0, 249, 250, 1, 0, 0, 0, 250, 251, 1, 0, 0, 0, 251, 253, 5, 103, 0, 0, 252, 245, 1, 0, 0, 0, 252, 249, 1, 0, 0, 0, 253, 13, 1, 0, 0, 0, 254, 257, 3, 194, 97, 0, 255, 256, 5, 12, 0, 0, 256, 258, 3, 194, 97, 0, 257, 255, 1, 0, 0, 0, 257, 258, 1, 0, 0, 0, 258, 15, 1, 0, 0, 0, 259, 260, 5, 13, 0, 0, 260, 263, 3, 18, 9, 0, 261, 262, 5, 12, 0, 0, 262, 264, 3, 194, 97, 0, 263, 261, 1, 0, 0, 0, 263, 264, 1, 0, 0, 0, 264, 265, 1, 0, 0, 0, 265, 266, 5, 2, 0, 0, 266, 296, 1, 0, 0, 0, 267, 270, 5, 13, 0, 0, 268, 271, 5, 3, 0, 0, 269, 271, 3, 194, 97, 0, 270, 268, 1, 0, 0, 0, 270, 269, 1, 0, 0, 0, 271, 274, 1, 0, 0, 0, 272, 273, 5, 12, 0, 0, 273, 275, 3, 194, 97, 0, 274, 272, 1, 0, 0, 0, 274, 275, 1, 0, 0, 0, 275, 276, 1, 0, 0, 0, 276, 277, 5, 14, 0, 0, 277, 278, 3, 18, 9, 0, 278, 279, 5, 2, 0, 0, 279, 296, 1, 0, 0, 0, 280, 281, 5, 13, 0, 0, 281, 282, 5, 15, 0, 0, 282, 287, 3, 14, 7, 0, 283, 284, 5, 16, 0, 0, 284, 286, 3, 14, 7, 0, 285, 283, 1, 0, 0, 0, 286, 289, 1, 0, 0, 0, 287, 285, 1, 0, 0, 0, 287, 288, 1, 0, 0, 0, 288, 290, 1, 0, 0, 0, 289, 287, 1, 0, 0, 0, 290, 291, 5, 17, 0, 0, 291, 292, 5, 14, 0, 0, 292, 293, 3, 18, 9, 0, 293, 294, 5, 2, 0, 0, 294, 296, 1, 0, 0, 0, 295, 259, 1, 0, 0, 0, 295, 267, 1, 0, 0, 0, 295, 280, 1, 0, 0, 0, 296, 17, 1, 0, 0, 0, 297, 298, 5, 129, 0, 0, 298, 19, 1, 0, 0, 0, 299, 301, 5, 18, 0, 0, 300, 299, 1, 0, 0, 0, 300, 301, 1, 0, 0, 0, 301, 302, 1, 0, 0, 0, 302, 303, 7, 1, 0, 0, 303, 313, 3, 194, 97, 0, 304, 305, 5, 22, 0, 0, 305, 310, 3, 22, 11, 0, 306, 307, 5, 16, 0, 0, 307, 309, 3, 22, 11, 0, 308, 306, 1, 0, 0, 0, 309, 312, 1, 0, 0, 0, 310, 308, 1, 0, 0, 0, 310, 311, 1, 0, 0, 0, 311, 314, 1, 0, 0, 0, 312, 310, 1, 0, 0, 0, 313, 304, 1, 0, 0, 0, 313, 314, 1, 0, 0, 0, 314, 315, 1, 0, 0, 0, 315, 319, 5, 15, 0, 0, 316, 318, 3, 24, 12, 0, 317, 316, 1, 0, 0, 0, 318, 321, 1, 0, 0, 0, 319, 317, 1, 0, 0, 0, 319, 320, 1, 0, 0, 0, 320, 322, 1, 0, 0, 0, 321, 319, 1, 0, 0, 0, 322, 323, 5, 17, 0, 0, 323, 21, 1, 0, 0, 0, 324, 330, 3, 78, 39, 0, 325, 327, 5, 23, 0, 0, 326, 328, 3, 144, 72, 0, 327, 326, 1, 0, 0, 0, 327, 328, 1, 0, 0, 0, 328, 329, 1, 0, 0, 0, 329, 331, 5, 24, 0, 0, 330, 325, 1, 0, 0, 0, 330, 331, 1, 0, 0, 0, 331, 23, 1, 0, 0, 0, 332, 342, 3, 26, 13, 0, 333, 342, 3, 34, 17, 0, 334, 342, 3, 42, 21, 0, 335, 342, 3, 44, 22, 0, 336, 342, 3, 48, 24, 0, 337, 342, 3, 56, 28, 0, 338, 342, 3, 60, 30, 0, 339, 342, 3, 30, 15, 0, 340, 342, 3, 32, 16, 0, 341, 332, 1, 0, 0, 0, 341, 333, 1, 0, 0, 0, 341, 334, 1, 0, 0, 0, 341, 335, 1, 0, 0, 0, 341, 336, 1, 0, 0, 0, 341, 337, 1, 0, 0, 0, 341, 338, 1, 0, 0, 0, 341, 339, 1, 0, 0, 0, 341, 340, 1, 0, 0, 0, 342, 25, 1, 0, 0, 0, 343, 352, 3, 76, 38, 0, 344, 351, 5, 119, 0, 0, 345, 351, 5, 116, 0, 0, 346, 351, 5, 118, 0, 0, 347, 351, 5, 110, 0, 0, 348, 351, 5, 111, 0, 0, 349, 351, 3, 198, 99, 0, 350, 344, 1, 0, 0, 0, 350, 345, 1, 0, 0, 0, 350, 346, 1, 0, 0, 0, 350, 347, 1, 0, 0, 0, 350, 348, 1, 0, 0, 0, 350, 349, 1, 0, 0, 0, 351, 354, 1, 0, 0, 0, 352, 350, 1, 0, 0, 0, 352, 353, 1, 0, 0, 0, 353, 355, 1, 0, 0, 0, 354, 352, 1, 0, 0, 0, 355, 358, 3, 194, 97, 0, 356, 357, 5, 11, 0, 0, 357, 359, 3, 140, 70, 0, 358, 356, 1, 0, 0, 0, 358, 359, 1, 0, 0, 0, 359, 360, 1, 0, 0, 0, 360, 361, 5, 2, 0, 0, 361, 27, 1, 0, 0, 0, 362, 363, 3, 76, 38, 0, 363, 364, 5, 110, 0, 0, 364, 365, 3, 194, 97, 0, 365, 366, 5, 11, 0, 0, 366, 367, 3, 140, 70, 0, 367, 368, 5, 2, 0, 0, 368, 29, 1, 0, 0, 0, 369, 370, 5, 25, 0, 0, 370, 371, 3, 194, 97, 0, 371, 372, 3, 62, 31, 0, 372, 373, 5, 2, 0, 0, 373, 31, 1, 0, 0, 0, 374, 375, 5, 122, 0, 0, 375, 376, 3, 194, 97, 0, 376, 377, 5, 22, 0, 0, 377, 378, 3, 138, 69, 0, 378, 379, 5, 2, 0, 0, 379, 33, 1, 0, 0, 0, 380, 381, 5, 26, 0, 0, 381, 382, 3, 36, 18, 0, 382, 385, 5, 27, 0, 0, 383, 386, 5, 3, 0, 0, 384, 386, 3, 76, 38, 0, 385, 383, 1, 0, 0, 0, 385, 384, 1, 0, 0, 0, 386, 388, 1, 0, 0, 0, 387, 389, 5, 124, 0, 0, 388, 387, 1, 0, 0, 0, 388, 389, 1, 0, 0, 0, 389, 390, 1, 0, 0, 0, 390, 391, 5, 2, 0, 0, 391, 35, 1, 0, 0, 0, 392, 405, 3, 78, 39, 0, 393, 394, 5, 15, 0, 0, 394, 399, 3, 38, 19, 0, 395, 396, 5, 16, 0, 0, 396, 398, 3, 38, 19, 0, 397, 395, 1, 0, 0, 0, 398, 401, 1, 0, 0, 0, 399, 397, 1, 0, 0, 0, 399, 400, 1, 0, 0, 0, 400, 402, 1, 0, 0, 0, 401, 399, 1, 0, 0, 0, 402, 403, 5, 17, 0, 0, 403, 405, 1, 0, 0, 0, 404, 392, 1, 0, 0, 0, 404, 393, 1, 0, 0, 0, 405, 37, 1, 0, 0, 0, 406, 409, 3, 78, 39, 0, 407, 408, 5, 12, 0, 0, 408, 410, 3, 40, 20, 0, 409, 407, 1, 0, 0, 0, 409, 410, 1, 0, 0, 0, 410, 39, 1, 0, 0, 0, 411, 412, 7, 2, 0, 0, 412, 41, 1, 0, 0, 0, 413, 414, 5, 36, 0, 0, 414, 415, 3, 194, 97, 0, 415, 426, 5, 15, 0, 0, 416, 417, 3, 74, 37, 0, 417, 423, 5, 2, 0, 0, 418, 419, 3, 74, 37, 0, 419, 420, 5, 2, 0, 0, 420, 422, 1, 0, 0, 0, 421, 418, 1, 0, 0, 0, 422, 425, 1, 0, 0, 0, 423, 421, 1, 0, 0, 0, 423, 424, 1, 0, 0, 0, 424, 427, 1, 0, 0, 0, 425, 423, 1, 0, 0, 0, 426, 416, 1, 0, 0, 0, 426, 427, 1, 0, 0, 0, 427, 428, 1, 0, 0, 0, 428, 429, 5, 17, 0, 0, 429, 43, 1, 0, 0, 0, 430, 431, 5, 37, 0, 0, 431, 433, 3, 194, 97, 0, 432, 434, 3, 62, 31, 0, 433, 432, 1, 0, 0, 0, 433, 434, 1, 0, 0, 0, 434, 439, 1, 0, 0, 0, 435, 438, 5, 120, 0, 0, 436, 438, 3, 198, 99, 0, 437, 435, 1, 0, 0, 0, 437, 436, 1, 0, 0, 0, 438, 441, 1, 0, 0, 0, 439, 437, 1, 0, 0, 0, 439, 440, 1, 0, 0, 0, 440, 444, 1, 0, 0, 0, 441, 439, 1, 0, 0, 0, 442, 445, 5, 2, 0, 0, 443, 445, 3, 94, 47, 0, 444, 442, 1, 0, 0, 0, 444, 443, 1, 0, 0, 0, 445, 45, 1, 0, 0, 0, 446, 452, 3, 194, 97, 0, 447, 449, 5, 23, 0, 0, 448, 450, 3, 144, 72, 0, 449, 448, 1, 0, 0, 0, 449, 450, 1, 0, 0, 0, 450, 451, 1, 0, 0, 0, 451, 453, 5, 24, 0, 0, 452, 447, 1, 0, 0, 0, 452, 453, 1, 0, 0, 0, 453, 47, 1, 0, 0, 0, 454, 455, 3, 50, 25, 0, 455, 456, 3, 62, 31, 0, 456, 458, 3, 54, 27, 0, 457, 459, 3, 52, 26, 0, 458, 457, 1, 0, 0, 0, 458, 459, 1, 0, 0, 0, 459, 462, 1, 0, 0, 0, 460, 463, 5, 2, 0, 0, 461, 463, 3, 94, 47, 0, 462, 460, 1, 0, 0, 0, 462, 461, 1, 0, 0, 0, 463, 49, 1, 0, 0, 0, 464, 466, 5, 38, 0, 0, 465, 467, 3, 194, 97, 0, 466, 465, 1, 0, 0, 0, 466, 467, 1, 0, 0, 0, 467, 472, 1, 0, 0, 0, 468, 472, 5, 125, 0, 0, 469, 472, 5, 126, 0, 0, 470, 472, 5, 127, 0, 0, 471, 464, 1, 0, 0, 0, 471, 468, 1, 0, 0, 0, 471, 469, 1, 0, 0, 0, 471, 470, 1, 0, 0, 0, 472, 51, 1, 0, 0, 0, 473, 474, 5, 39, 0, 0, 474, 475, 3, 62, 31, 0, 475, 53, 1, 0, 0, 0, 476, 485, 5, 114, 0, 0, 477, 485, 5, 119, 0, 0, 478, 485, 5, 116, 0, 0, 479, 485, 5, 118, 0, 0, 480, 485, 5, 120, 0, 0, 481, 485, 3, 92, 46, 0, 482, 485, 3, 46, 23, 0, 483, 485, 3, 198, 99, 0, 484, 476, 1, 0, 0, 0, 484, 477, 1, 0, 0, 0, 484, 478, 1, 0, 0, 0, 484, 479, 1, 0, 0, 0, 484, 480, 1, 0, 0, 0, 484, 481, 1, 0, 0, 0, 484, 482, 1, 0, 0, 0, 484, 483, 1, 0, 0, 0, 485, 488, 1, 0, 0, 0, 486, 484, 1, 0, 0, 0, 486, 487, 1, 0, 0, 0, 487, 55, 1, 0, 0, 0, 488, 486, 1, 0, 0, 0, 489, 490, 5, 40, 0, 0, 490, 491, 3, 194, 97, 0, 491, 493, 3, 66, 33, 0, 492, 494, 5, 108, 0, 0, 493, 492, 1, 0, 0, 0, 493, 494, 1, 0, 0, 0, 494, 495, 1, 0, 0, 0, 495, 496, 5, 2, 0, 0, 496, 57, 1, 0, 0, 0, 497, 498, 3, 194, 97, 0, 498, 59, 1, 0, 0, 0, 499, 500, 5, 41, 0, 0, 500, 501, 3, 194, 97, 0, 501, 503, 5, 15, 0, 0, 502, 504, 3, 58, 29, 0, 503, 502, 1, 0, 0, 0, 503, 504, 1, 0, 0, 0, 504, 509, 1, 0, 0, 0, 505, 506, 5, 16, 0, 0, 506, 508, 3, 58, 29, 0, 507, 505, 1, 0, 0, 0, 508, 511, 1, 0, 0, 0, 509, 507, 1, 0, 0, 0, 509, 510, 1, 0, 0, 0, 510, 512, 1, 0, 0, 0, 511, 509, 1, 0, 0, 0, 512, 513, 5, 17, 0, 0, 513, 61, 1, 0, 0, 0, 514, 523, 5, 23, 0, 0, 515, 520, 3, 64, 32, 0, 516, 517, 5, 16, 0, 0, 517, 519, 3, 64, 32, 0, 518, 516, 1, 0, 0, 0, 519, 522, 1, 0, 0, 0, 520, 518, 1, 0, 0, 0, 520, 521, 1, 0, 0, 0, 521, 524, 1, 0, 0, 0, 522, 520, 1, 0, 0, 0, 523, 515, 1, 0, 0, 0, 523, 524, 1, 0, 0, 0, 524, 525, 1, 0, 0, 0, 525, 526, 5, 24, 0, 0, 526, 63, 1, 0, 0, 0, 527, 529, 3, 76, 38, 0, 528, 530, 3, 90, 45, 0, 529, 528, 1, 0, 0, 0, 529, 530, 1, 0, 0, 0, 530, 532, 1, 0, 0, 0, 531, 533, 3, 194, 97, 0, 532, 531, 1, 0, 0, 0, 532, 533, 1, 0, 0, 0, 533, 65, 1, 0, 0, 0, 534, 543, 5, 23, 0, 0, 535, 540, 3, 68, 34, 0, 536, 537, 5, 16, 0, 0, 537, 539, 3, 68, 34, 0, 538, 536, 1, 0, 0, 0, 539, 542, 1, 0, 0, 0, 540, 538, 1, 0, 0, 0, 540, 541, 1, 0, 0, 0, 541, 544, 1, 0, 0, 0, 542, 540, 1, 0, 0, 0, 543, 535, 1, 0, 0, 0, 543, 544, 1, 0, 0, 0, 544, 545, 1, 0, 0, 0, 545, 546, 5, 24, 0, 0, 546, 67, 1, 0, 0, 0, 547, 549, 3, 76, 38, 0, 548, 550, 5, 115, 0, 0, 549, 548, 1, 0, 0, 0, 549, 550, 1, 0, 0, 0, 550, 552, 1, 0, 0, 0, 551, 553, 3, 194, 97, 0, 552, 551, 1, 0, 0, 0, 552, 553, 1, 0, 0, 0, 553, 69, 1, 0, 0, 0, 554, 563, 5, 23, 0, 0, 555, 560, 3, 72, 36, 0, 556, 557, 5, 16, 0, 0, 557, 559, 3, 72, 36, 0, 558, 556, 1, 0, 0, 0, 559, 562, 1, 0, 0, 0, 560, 558, 1, 0, 0, 0, 560, 561, 1, 0, 0, 0, 561, 564, 1, 0, 0, 0, 562, 560, 1, 0, 0, 0, 563, 555, 1, 0, 0, 0, 563, 564, 1, 0, 0, 0, 564, 565, 1, 0, 0, 0, 565, 566, 5, 24, 0, 0, 566, 71, 1, 0, 0, 0, 567, 569, 3, 76, 38, 0, 568, 570, 3, 90, 45, 0, 569, 568, 1, 0, 0, 0, 569, 570, 1, 0, 0, 0, 570, 73, 1, 0, 0, 0, 571, 573, 3, 76, 38, 0, 572, 574, 3, 90, 45, 0, 573, 572, 1, 0, 0, 0, 573, 574, 1, 0, 0, 0, 574, 575, 1, 0, 0, 0, 575, 576, 3, 194, 97, 0, 576, 75, 1, 0, 0, 0, 577, 578, 6, 38, -1, 0, 578, 585, 3, 138, 69, 0, 579, 585, 3, 78, 39, 0, 580, 585, 3, 82, 41, 0, 581, 585, 3, 88, 44, 0, 582, 583, 5, 44, 0, 0, 583, 585, 5, 117, 0, 0, 584, 577, 1, 0, 0, 0, 584, 579, 1, 0, 0, 0, 584, 580, 1, 0, 0, 0, 584, 581, 1, 0, 0, 0, 584, 582, 1, 0, 0, 0, 585, 594, 1, 0, 0, 0, 586, 587, 10, 3, 0, 0, 587, 589, 5, 42, 0, 0, 588, 590, 3, 140, 70, 0, 589, 588, 1, 0, 0, 0, 589, 590, 1, 0, 0, 0, 590, 591, 1, 0, 0, 0, 591, 593, 5, 43, 0, 0, 592, 586, 1, 0, 0, 0, 593, 596, 1, 0, 0, 0, 594, 592, 1, 0, 0, 0, 594, 595, 1, 0, 0, 0, 595, 77, 1, 0, 0, 0, 596, 594, 1, 0, 0, 0, 597, 602, 3, 194, 97, 0, 598, 599, 5, 45, 0, 0, 599, 601, 3, 194, 97, 0, 600, 598, 1, 0, 0, 0, 601, 604, 1, 0, 0, 0, 602, 600, 1, 0, 0, 0, 602, 603, 1, 0, 0, 0, 603, 79, 1, 0, 0, 0, 604, 602, 1, 0, 0, 0, 605, 608, 3, 138, 69, 0, 606, 608, 3, 78, 39, 0, 607, 605, 1, 0, 0, 0, 607, 606, 1, 0, 0, 0, 608, 81, 1, 0, 0, 0, 609, 610, 5, 46, 0, 0, 610, 611, 5, 23, 0, 0, 611, 613, 3, 80, 40, 0, 612, 614, 3, 84, 42, 0, 613, 612, 1, 0, 0, 0, 613, 614, 1, 0, 0, 0, 614, 615, 1, 0, 0, 0, 615, 616, 5, 47, 0, 0, 616, 618, 3, 76, 38, 0, 617, 619, 3, 86, 43, 0, 618, 617, 1, 0, 0, 0, 618, 619, 1, 0, 0, 0, 619, 620, 1, 0, 0, 0, 620, 621, 5, 24, 0, 0, 621, 83, 1, 0, 0, 0, 622, 623, 3, 194, 97, 0, 623, 85, 1, 0, 0, 0, 624, 625, 3, 194, 97, 0, 625, 87, 1, 0, 0, 0, 626, 627, 5, 38, 0, 0, 627, 633, 3, 70, 35, 0, 628, 632, 5, 116, 0, 0, 629, 632, 5, 114, 0, 0, 630, 632, 3, 92, 46, 0, 631, 628, 1, 0, 0, 0, 631, 629, 1, 0, 0, 0, 631, 630, 1, 0, 0, 0, 632, 635, 1, 0, 0, 0, 633, 631, 1, 0, 0, 0, 633, 634, 1, 0, 0, 0, 634, 638, 1, 0, 0, 0, 635, 633, 1, 0, 0, 0, 636, 637, 5, 39, 0, 0, 637, 639, 3, 70, 35, 0, 638, 636, 1, 0, 0, 0, 638, 639, 1, 0, 0, 0, 639, 89, 1, 0, 0, 0, 640, 641, 7, 3, 0, 0, 641, 91, 1, 0, 0, 0, 642, 643, 7, 4, 0, 0, 643, 93, 1, 0, 0, 0, 644, 648, 5, 15, 0, 0, 645, 647, 3, 96, 48, 0, 646, 645, 1, 0, 0, 0, 647, 650, 1, 0, 0, 0, 648, 646, 1, 0, 0, 0, 648, 649, 1, 0, 0, 0, 649, 651, 1, 0, 0, 0, 650, 648, 1, 0, 0, 0, 651, 652, 5, 17, 0, 0, 652, 95, 1, 0, 0, 0, 653, 669, 3, 100, 50, 0, 654, 669, 3, 102, 51, 0, 655, 669, 3, 106, 53, 0, 656, 669, 3, 112, 56, 0, 657, 669, 3, 94, 47, 0, 658, 669, 3, 114, 57, 0, 659, 669, 3, 118, 59, 0, 660, 669, 3, 120, 60, 0, 661, 669, 3, 122, 61, 0, 662, 669, 3, 124, 62, 0, 663, 669, 3, 126, 63, 0, 664, 669, 3, 128, 64, 0, 665, 669, 3, 108, 54, 0, 666, 669, 3, 110, 55, 0, 667, 669, 3, 130, 65, 0, 668, 653, 1, 0, 0, 0, 668, 654, 1, 0, 0, 0, 668, 655, 1, 0, 0, 0, 668, 656, 1, 0, 0, 0, 668, 657, 1, 0, 0, 0, 668, 658, 1, 0, 0, 0, 668, 659, 1, 0, 0, 0, 668, 660, 1, 0, 0, 0, 668, 661, 1, 0, 0, 0, 668, 662, 1, 0, 0, 0, 668, 663, 1, 0, 0, 0, 668, 664, 1, 0, 0, 0, 668, 665, 1, 0, 0, 0, 668, 666, 1, 0, 0, 0, 668, 667, 1, 0, 0, 0, 669, 97, 1, 0, 0, 0, 670, 671, 3, 140, 70, 0, 671, 672, 5, 2, 0, 0, 672, 99, 1, 0, 0, 0, 673, 674, 5, 51, 0, 0, 674, 675, 5, 23, 0, 0, 675, 676, 3, 140, 70, 0, 676, 677, 5, 24, 0, 0, 677, 680, 3, 96, 48, 0, 678, 679, 5, 52, 0, 0, 679, 681, 3, 96, 48, 0, 680, 678, 1, 0, 0, 0, 680, 681, 1, 0, 0, 0, 681, 101, 1, 0, 0, 0, 682, 683, 5, 53, 0, 0, 683, 685, 3, 140, 70, 0, 684, 686, 3, 52, 26, 0, 685, 684, 1, 0, 0, 0, 685, 686, 1, 0, 0, 0, 686, 687, 1, 0, 0, 0, 687, 689, 3, 94, 47, 0, 688, 690, 3, 104, 52, 0, 689, 688, 1, 0, 0, 0, 690, 691, 1, 0, 0, 0, 691, 689, 1, 0, 0, 0, 691, 692, 1, 0, 0, 0, 692, 103, 1, 0, 0, 0, 693, 698, 5, 54, 0, 0, 694, 696, 3, 194, 97, 0, 695, 694, 1, 0, 0, 0, 695, 696, 1, 0, 0, 0, 696, 697, 1, 0, 0, 0, 697, 699, 3, 62, 31, 0, 698, 695, 1, 0, 0, 0, 698, 699, 1, 0, 0, 0, 699, 700, 1, 0, 0, 0, 700, 701, 3, 94, 47, 0, 701, 105, 1, 0, 0, 0, 702, 703, 5, 55, 0, 0, 703, 704, 5, 23, 0, 0, 704, 705, 3, 140, 70, 0, 705, 706, 5, 24, 0, 0, 706, 707, 3, 96, 48, 0, 707, 107, 1, 0, 0, 0, 708, 711, 3, 132, 66, 0, 709, 711, 3, 98, 49, 0, 710, 708, 1, 0, 0, 0, 710, 709, 1, 0, 0, 0, 711, 109, 1, 0, 0, 0, 712, 713, 5, 56, 0, 0, 713, 714, 3, 94, 47, 0, 714, 111, 1, 0, 0, 0, 715, 716, 5, 27, 0, 0, 716, 719, 5, 23, 0, 0, 717, 720, 3, 108, 54, 0, 718, 720, 5, 2, 0, 0, 719, 717, 1, 0, 0, 0, 719, 718, 1, 0, 0, 0, 720, 723, 1, 0, 0, 0, 721, 724, 3, 98, 49, 0, 722, 724, 5, 2, 0, 0, 723, 721, 1, 0, 0, 0, 723, 722, 1, 0, 0, 0, 724, 726, 1, 0, 0, 0, 725, 727, 3, 140, 70, 0, 726, 725, 1, 0, 0, 0, 726, 727, 1, 0, 0, 0, 727, 728, 1, 0, 0, 0, 728, 729, 5, 24, 0, 0, 729, 730, 3, 96, 48, 0, 730, 113, 1, 0, 0, 0, 731, 733, 5, 57, 0, 0, 732, 734, 5, 129, 0, 0, 733, 732, 1, 0, 0, 0, 733, 734, 1, 0, 0, 0, 734, 739, 1, 0, 0, 0, 735, 736, 5, 23, 0, 0, 736, 737, 3, 116, 58, 0, 737, 738, 5, 24, 0, 0, 738, 740, 1, 0, 0, 0, 739, 735, 1, 0, 0, 0, 739, 740, 1, 0, 0, 0, 740, 741, 1, 0, 0, 0, 741, 742, 3, 154, 77, 0, 742, 115, 1, 0, 0, 0, 743, 744, 3, 200, 100, 0, 744, 117, 1, 0, 0, 0, 745, 746, 5, 58, 0, 0, 746, 747, 3, 96, 48, 0, 747, 748, 5, 55, 0, 0, 748, 749, 5, 23, 0, 0, 749, 750, 3, 140, 70, 0, 750, 751, 5, 24, 0, 0, 751, 752, 5, 2, 0, 0, 752, 119, 1, 0, 0, 0, 753, 754, 5, 112, 0, 0, 754, 755, 5, 2, 0, 0, 755, 121, 1, 0, 0, 0, 756, 757, 5, 109, 0, 0, 757, 758, 5, 2, 0, 0, 758, 123, 1, 0, 0, 0, 759, 761, 5, 59, 0, 0, 760, 762, 3, 140, 70, 0, 761, 760, 1, 0, 0, 0, 761, 762, 1, 0, 0, 0, 762, 763, 1, 0, 0, 0, 763, 764, 5, 2, 0, 0, 764, 125, 1, 0, 0, 0, 765, 766, 5, 60, 0, 0, 766, 767, 5, 2, 0, 0, 767, 127, 1, 0, 0, 0, 768, 769, 5, 61, 0, 0, 769, 770, 3, 152, 76, 0, 770, 771, 5, 2, 0, 0, 771, 129, 1, 0, 0, 0, 772, 773, 5, 62, 0, 0, 773, 774, 3, 152, 76, 0, 774, 775, 5, 2, 0, 0, 775, 131, 1, 0, 0, 0, 776, 777, 5, 63, 0, 0, 777, 784, 3, 136, 68, 0, 778, 784, 3, 74, 37, 0, 779, 780, 5, 23, 0, 0, 780, 781, 3, 134, 67, 0, 781, 782, 5, 24, 0, 0, 782, 784, 1, 0, 0, 0, 783, 776, 1, 0, 0, 0, 783, 778, 1, 0, 0, 0, 783, 779, 1, 0, 0, 0, 784, 787, 1, 0, 0, 0, 785, 786, 5, 11, 0, 0, 786, 788, 3, 140, 70, 0, 787, 785, 1, 0, 0, 0, 787, 788, 1, 0, 0, 0, 788, 789, 1, 0, 0, 0, 789, 790, 5, 2, 0, 0, 790, 133, 1, 0, 0, 0, 791, 793, 3, 74, 37, 0, 792, 791, 1, 0, 0, 0, 792, 793, 1, 0, 0, 0, 793, 800, 1, 0, 0, 0, 794, 796, 5, 16, 0, 0, 795, 797, 3, 74, 37, 0, 796, 795, 1, 0, 0, 0, 796, 797, 1, 0, 0, 0, 797, 799, 1, 0, 0, 0, 798, 794, 1, 0, 0, 0, 799, 802, 1, 0, 0, 0, 800, 798, 1, 0, 0, 0, 800, 801, 1, 0, 0, 0, 801, 135, 1, 0, 0, 0, 802, 800, 1, 0, 0, 0, 803, 810, 5, 23, 0, 0, 804, 806, 3, 194, 97, 0, 805, 804, 1, 0, 0, 0, 805, 806, 1, 0, 0, 0, 806, 807, 1, 0, 0, 0, 807, 809, 5, 16, 0, 0, 808, 805, 1, 0, 0, 0, 809, 812, 1, 0, 0, 0, 810, 808, 1, 0, 0, 0, 810, 811, 1, 0, 0, 0, 811, 814, 1, 0, 0, 0, 812, 810, 1, 0, 0, 0, 813, 815, 3, 194, 97, 0, 814, 813, 1, 0, 0, 0, 814, 815, 1, 0, 0, 0, 815, 816, 1, 0, 0, 0, 816, 817, 5, 24, 0, 0, 817, 137, 1, 0, 0, 0, 818, 819, 7, 5, 0, 0, 819, 139, 1, 0, 0, 0, 820, 821, 6, 70, -1, 0, 821, 822, 5, 69, 0, 0, 822, 839, 3, 76, 38, 0, 823, 824, 5, 23, 0, 0, 824, 825, 3, 140, 70, 0, 825, 826, 5, 24, 0, 0, 826, 839, 1, 0, 0, 0, 827, 828, 7, 6, 0, 0, 828, 839, 3, 140, 70, 19, 829, 830, 7, 7, 0, 0, 830, 839, 3, 140, 70, 18, 831, 832, 5, 71, 0, 0, 832, 839, 3, 140, 70, 17, 833, 834, 5, 72, 0, 0, 834, 839, 3, 140, 70, 16, 835, 836, 5, 6, 0, 0, 836, 839, 3, 140, 70, 15, 837, 839, 3, 142, 71, 0, 838, 820, 1, 0, 0, 0, 838, 823, 1, 0, 0, 0, 838, 827, 1, 0, 0, 0, 838, 829, 1, 0, 0, 0, 838, 831, 1, 0, 0, 0, 838, 833, 1, 0, 0, 0, 838, 835, 1, 0, 0, 0, 838, 837, 1, 0, 0, 0, 839, 914, 1, 0, 0, 0, 840, 841, 10, 14, 0, 0, 841, 842, 5, 73, 0, 0, 842, 913, 3, 140, 70, 14, 843, 844, 10, 13, 0, 0, 844, 845, 7, 8, 0, 0, 845, 913, 3, 140, 70, 14, 846, 847, 10, 12, 0, 0, 847, 848, 7, 7, 0, 0, 848, 913, 3, 140, 70, 13, 849, 850, 10, 11, 0, 0, 850, 851, 7, 9, 0, 0, 851, 913, 3, 140, 70, 12, 852, 853, 10, 10, 0, 0, 853, 854, 5, 29, 0, 0, 854, 913, 3, 140, 70, 11, 855, 856, 10, 9, 0, 0, 856, 857, 5, 5, 0, 0, 857, 913, 3, 140, 70, 10, 858, 859, 10, 8, 0, 0, 859, 860, 5, 28, 0, 0, 860, 913, 3, 140, 70, 9, 861, 862, 10, 7, 0, 0, 862, 863, 7, 10, 0, 0, 863, 913, 3, 140, 70, 8, 864, 865, 10, 6, 0, 0, 865, 866, 7, 11, 0, 0, 866, 913, 3, 140, 70, 7, 867, 868, 10, 5, 0, 0, 868, 869, 5, 76, 0, 0, 869, 913, 3, 140, 70, 6, 870, 871, 10, 4, 0, 0, 871, 872, 5, 4, 0, 0, 872, 913, 3, 140, 70, 5, 873, 874, 10, 3, 0, 0, 874, 875, 5, 77, 0, 0, 875, 876, 3, 140, 70, 0, 876, 877, 5, 70, 0, 0, 877, 878, 3, 140, 70, 3, 878, 913, 1, 0, 0, 0, 879, 880, 10, 2, 0, 0, 880, 881, 7, 12, 0, 0, 881, 913, 3, 140, 70, 3, 882, 883, 10, 27, 0, 0, 883, 913, 7, 6, 0, 0, 884, 885, 10, 25, 0, 0, 885, 886, 5, 42, 0, 0, 886, 887, 3, 140, 70, 0, 887, 888, 5, 43, 0, 0, 888, 913, 1, 0, 0, 0, 889, 890, 10, 24, 0, 0, 890, 892, 5, 42, 0, 0, 891, 893, 3, 140, 70, 0, 892, 891, 1, 0, 0, 0, 892, 893, 1, 0, 0, 0, 893, 894, 1, 0, 0, 0, 894, 896, 5, 70, 0, 0, 895, 897, 3, 140, 70, 0, 896, 895, 1, 0, 0, 0, 896, 897, 1, 0, 0, 0, 897, 898, 1, 0, 0, 0, 898, 913, 5, 43, 0, 0, 899, 900, 10, 23, 0, 0, 900, 901, 5, 45, 0, 0, 901, 913, 3, 194, 97, 0, 902, 903, 10, 22, 0, 0, 903, 904, 5, 15, 0, 0, 904, 905, 3, 146, 73, 0, 905, 906, 5, 17, 0, 0, 906, 913, 1, 0, 0, 0, 907, 908, 10, 21, 0, 0, 908, 909, 5, 23, 0, 0, 909, 910, 3, 150, 75, 0, 910, 911, 5, 24, 0, 0, 911, 913, 1, 0, 0, 0, 912, 840, 1, 0, 0, 0, 912, 843, 1, 0, 0, 0, 912, 846, 1, 0, 0, 0, 912, 849, 1, 0, 0, 0, 912, 852, 1, 0, 0, 0, 912, 855, 1, 0, 0, 0, 912, 858, 1, 0, 0, 0, 912, 861, 1, 0, 0, 0, 912, 864, 1, 0, 0, 0, 912, 867, 1, 0, 0, 0, 912, 870, 1, 0, 0, 0, 912, 873, 1, 0, 0, 0, 912, 879, 1, 0, 0, 0, 912, 882, 1, 0, 0, 0, 912, 884, 1, 0, 0, 0, 912, 889, 1, 0, 0, 0, 912, 899, 1, 0, 0, 0, 912, 902, 1, 0, 0, 0, 912, 907, 1, 0, 0, 0, 913, 916, 1, 0, 0, 0, 914, 912, 1, 0, 0, 0, 914, 915, 1, 0, 0, 0, 915, 141, 1, 0, 0, 0, 916, 914, 1, 0, 0, 0, 917, 927, 5, 102, 0, 0, 918, 927, 3, 192, 96, 0, 919, 927, 3, 196, 98, 0, 920, 927, 3, 200, 100, 0, 921, 927, 3, 194, 97, 0, 922, 927, 5, 122, 0, 0, 923, 927, 5, 117, 0, 0, 924, 927, 3, 190, 95, 0, 925, 927, 3, 76, 38, 0, 926, 917, 1, 0, 0, 0, 926, 918, 1, 0, 0, 0, 926, 919, 1, 0, 0, 0, 926, 920, 1, 0, 0, 0, 926, 921, 1, 0, 0, 0, 926, 922, 1, 0, 0, 0, 926, 923, 1, 0, 0, 0, 926, 924, 1, 0, 0, 0, 926, 925, 1, 0, 0, 0, 927, 143, 1, 0, 0, 0, 928, 933, 3, 140, 70, 0, 929, 930, 5, 16, 0, 0, 930, 932, 3, 140, 70, 0, 931, 929, 1, 0, 0, 0, 932, 935, 1, 0, 0, 0, 933, 931, 1, 0, 0, 0, 933, 934, 1, 0, 0, 0, 934, 145, 1, 0, 0, 0, 935, 933, 1, 0, 0, 0, 936, 941, 3, 148, 74, 0, 937, 938, 5, 16, 0, 0, 938, 940, 3, 148, 74, 0, 939, 937, 1, 0, 0, 0, 940, 943, 1, 0, 0, 0, 941, 939, 1, 0, 0, 0, 941, 942, 1, 0, 0, 0, 942, 945, 1, 0, 0, 0, 943, 941, 1, 0, 0, 0, 944, 946, 5, 16, 0, 0, 945, 944, 1, 0, 0, 0, 945, 946, 1, 0, 0, 0, 946, 147, 1, 0, 0, 0, 947, 948, 3, 194, 97, 0, 948, 949, 5, 70, 0, 0, 949, 950, 3, 140, 70, 0, 950, 149, 1, 0, 0, 0, 951, 953, 5, 15, 0, 0, 952, 954, 3, 146, 73, 0, 953, 952, 1, 0, 0, 0, 953, 954, 1, 0, 0, 0, 954, 955, 1, 0, 0, 0, 955, 960, 5, 17, 0, 0, 956, 958, 3, 144, 72, 0, 957, 956, 1, 0, 0, 0, 957, 958, 1, 0, 0, 0, 958, 960, 1, 0, 0, 0, 959, 951, 1, 0, 0, 0, 959, 957, 1, 0, 0, 0, 960, 151, 1, 0, 0, 0, 961, 962, 3, 140, 70, 0, 962, 963, 5, 23, 0, 0, 963, 964, 3, 150, 75, 0, 964, 965, 5, 24, 0, 0, 965, 153, 1, 0, 0, 0, 966, 970, 5, 15, 0, 0, 967, 969, 3, 156, 78, 0, 968, 967, 1, 0, 0, 0, 969, 972, 1, 0, 0, 0, 970, 968, 1, 0, 0, 0, 970, 971, 1, 0, 0, 0, 971, 973, 1, 0, 0, 0, 972, 970, 1, 0, 0, 0, 973, 974, 5, 17, 0, 0, 974, 155, 1, 0, 0, 0, 975, 993, 3, 194, 97, 0, 976, 993, 3, 154, 77, 0, 977, 993, 3, 158, 79, 0, 978, 993, 3, 164, 82, 0, 979, 993, 3, 166, 83, 0, 980, 993, 3, 172, 86, 0, 981, 993, 3, 174, 87, 0, 982, 993, 3, 176, 88, 0, 983, 993, 3, 180, 90, 0, 984, 993, 3, 184, 92, 0, 985, 993, 3, 186, 93, 0, 986, 993, 5, 109, 0, 0, 987, 993, 5, 112, 0, 0, 988, 993, 5, 113, 0, 0, 989, 993, 3, 192, 96, 0, 990, 993, 3, 200, 100, 0, 991, 993, 3, 196, 98, 0, 992, 975, 1, 0, 0, 0, 992, 976, 1, 0, 0, 0, 992, 977, 1, 0, 0, 0, 992, 978, 1, 0, 0, 0, 992, 979, 1, 0, 0, 0, 992, 980, 1, 0, 0, 0, 992, 981, 1, 0, 0, 0, 992, 982, 1, 0, 0, 0, 992, 983, 1, 0, 0, 0, 992, 984, 1, 0, 0, 0, 992, 985, 1, 0, 0, 0, 992, 986, 1, 0, 0, 0, 992, 987, 1, 0, 0, 0, 992, 988, 1, 0, 0, 0, 992, 989, 1, 0, 0, 0, 992, 990, 1, 0, 0, 0, 992, 991, 1, 0, 0, 0, 993, 157, 1, 0, 0, 0, 994, 998, 3, 162, 81, 0, 995, 998, 3, 188, 94, 0, 996, 998, 3, 160, 80, 0, 997, 994, 1, 0, 0, 0, 997, 995, 1, 0, 0, 0, 997, 996, 1, 0, 0, 0, 998, 159, 1, 0, 0, 0, 999, 1000, 3, 194, 97, 0, 1000, 1001, 5, 45, 0, 0, 1001, 1002, 3, 194, 97, 0, 1002, 161, 1, 0, 0, 0, 1003, 1008, 5, 59, 0, 0, 1004, 1008, 5, 44, 0, 0, 1005, 1008, 5, 66, 0, 0, 1006, 1008, 3, 194, 97, 0, 1007, 1003, 1, 0, 0, 0, 1007, 1004, 1, 0, 0, 0, 1007, 1005, 1, 0, 0, 0, 1007, 1006, 1, 0, 0, 0, 1008, 1021, 1, 0, 0, 0, 1009, 1011, 5, 23, 0, 0, 1010, 1012, 3, 158, 79, 0, 1011, 1010, 1, 0, 0, 0, 1011, 1012, 1, 0, 0, 0, 1012, 1017, 1, 0, 0, 0, 1013, 1014, 5, 16, 0, 0, 1014, 1016, 3, 158, 79, 0, 1015, 1013, 1, 0, 0, 0, 1016, 1019, 1, 0, 0, 0, 1017, 1015, 1, 0, 0, 0, 1017, 1018, 1, 0, 0, 0, 1018, 1020, 1, 0, 0, 0, 1019, 1017, 1, 0, 0, 0, 1020, 1022, 5, 24, 0, 0, 1021, 1009, 1, 0, 0, 0, 1021, 1022, 1, 0, 0, 0, 1022, 163, 1, 0, 0, 0, 1023, 1024, 5, 88, 0, 0, 1024, 1027, 3, 168, 84, 0, 1025, 1026, 5, 89, 0, 0, 1026, 1028, 3, 158, 79, 0, 1027, 1025, 1, 0, 0, 0, 1027, 1028, 1, 0, 0, 0, 1028, 165, 1, 0, 0, 0, 1029, 1030, 3, 168, 84, 0, 1030, 1031, 5, 89, 0, 0, 1031, 1032, 3, 158, 79, 0, 1032, 167, 1, 0, 0, 0, 1033, 1041, 3, 194, 97, 0, 1034, 1041, 3, 160, 80, 0, 1035, 1041, 3, 170, 85, 0, 1036, 1037, 5, 23, 0, 0, 1037, 1038, 3, 170, 85, 0, 1038, 1039, 5, 24, 0, 0, 1039, 1041, 1, 0, 0, 0, 1040, 1033, 1, 0, 0, 0, 1040, 1034, 1, 0, 0, 0, 1040, 1035, 1, 0, 0, 0, 1040, 1036, 1, 0, 0, 0, 1041, 169, 1, 0, 0, 0, 1042, 1047, 3, 194, 97, 0, 1043, 1044, 5, 16, 0, 0, 1044, 1046, 3, 194, 97, 0, 1045, 1043, 1, 0, 0, 0, 1046, 1049, 1, 0, 0, 0, 1047, 1045, 1, 0, 0, 0, 1047, 1048, 1, 0, 0, 0, 1048, 171, 1, 0, 0, 0, 1049, 1047, 1, 0, 0, 0, 1050, 1051, 3, 158, 79, 0, 1051, 1052, 5, 90, 0, 0, 1052, 1053, 3, 194, 97, 0, 1053, 173, 1, 0, 0, 0, 1054, 1055, 3, 194, 97, 0, 1055, 1056, 5, 70, 0, 0, 1056, 175, 1, 0, 0, 0, 1057, 1058, 5, 91, 0, 0, 1058, 1062, 3, 158, 79, 0, 1059, 1061, 3, 178, 89, 0, 1060, 1059, 1, 0, 0, 0, 1061, 1064, 1, 0, 0, 0, 1062, 1060, 1, 0, 0, 0, 1062, 1063, 1, 0, 0, 0, 1063, 177, 1, 0, 0, 0, 1064, 1062, 1, 0, 0, 0, 1065, 1066, 5, 92, 0, 0, 1066, 1067, 3, 188, 94, 0, 1067, 1068, 3, 154, 77, 0, 1068, 1072, 1, 0, 0, 0, 1069, 1070, 5, 93, 0, 0, 1070, 1072, 3, 154, 77, 0, 1071, 1065, 1, 0, 0, 0, 1071, 1069, 1, 0, 0, 0, 1072, 179, 1, 0, 0, 0, 1073, 1074, 5, 38, 0, 0, 1074, 1075, 3, 194, 97, 0, 1075, 1077, 5, 23, 0, 0, 1076, 1078, 3, 170, 85, 0, 1077, 1076, 1, 0, 0, 0, 1077, 1078, 1, 0, 0, 0, 1078, 1079, 1, 0, 0, 0, 1079, 1081, 5, 24, 0, 0, 1080, 1082, 3, 182, 91, 0, 1081, 1080, 1, 0, 0, 0, 1081, 1082, 1, 0, 0, 0, 1082, 1083, 1, 0, 0, 0, 1083, 1084, 3, 154, 77, 0, 1084, 181, 1, 0, 0, 0, 1085, 1086, 5, 94, 0, 0, 1086, 1087, 3, 170, 85, 0, 1087, 183, 1, 0, 0, 0, 1088, 1091, 5, 27, 0, 0, 1089, 1092, 3, 154, 77, 0, 1090, 1092, 3, 158, 79, 0, 1091, 1089, 1, 0, 0, 0, 1091, 1090, 1, 0, 0, 0, 1092, 1093, 1, 0, 0, 0, 1093, 1096, 3, 158, 79, 0, 1094, 1097, 3, 154, 77, 0, 1095, 1097, 3, 158, 79, 0, 1096, 1094, 1, 0, 0, 0, 1096, 1095, 1, 0, 0, 0, 1097, 1098, 1, 0, 0, 0, 1098, 1099, 3, 154, 77, 0, 1099, 185, 1, 0, 0, 0, 1100, 1101, 5, 51, 0, 0, 1101, 1102, 3, 158, 79, 0, 1102, 1103, 3, 154, 77, 0, 1103, 187, 1, 0, 0, 0, 1104, 1110, 3, 200, 100, 0, 1105, 1110, 5, 103, 0, 0, 1106, 1110, 5, 104, 0, 0, 1107, 1110, 3, 196, 98, 0, 1108, 1110, 5, 102, 0, 0, 1109, 1104, 1, 0, 0, 0, 1109, 1105, 1, 0, 0, 0, 1109, 1106, 1, 0, 0, 0, 1109, 1107, 1, 0, 0, 0, 1109, 1108, 1, 0, 0, 0, 1110, 189, 1, 0, 0, 0, 1111, 1113, 5, 23, 0, 0, 1112, 1114, 3, 140, 70, 0, 1113, 1112, 1, 0, 0, 0, 1113, 1114, 1, 0, 0, 0, 1114, 1121, 1, 0, 0, 0, 1115, 1117, 5, 16, 0, 0, 1116, 1118, 3, 140, 70, 0, 1117, 1116, 1, 0, 0, 0, 1117, 1118, 1, 0, 0, 0, 1118, 1120, 1, 0, 0, 0, 1119, 1115, 1, 0, 0, 0, 1120, 1123, 1, 0, 0, 0, 1121, 1119, 1, 0, 0, 0, 1121, 1122, 1, 0, 0, 0, 1122, 1124, 1, 0, 0, 0, 1123, 1121, 1, 0, 0, 0, 1124, 1138, 5, 24, 0, 0, 1125, 1134, 5, 42, 0, 0, 1126, 1131, 3, 140, 70, 0, 1127, 1128, 5, 16, 0, 0, 1128, 1130, 3, 140, 70, 0, 1129, 1127, 1, 0, 0, 0, 1130, 1133, 1, 0, 0, 0, 1131, 1129, 1, 0, 0, 0, 1131, 1132, 1, 0, 0, 0, 1132, 1135, 1, 0, 0, 0, 1133, 1131, 1, 0, 0, 0, 1134, 1126, 1, 0, 0, 0, 1134, 1135, 1, 0, 0, 0, 1135, 1136, 1, 0, 0, 0, 1136, 1138, 5, 43, 0, 0, 1137, 1111, 1, 0, 0, 0, 1137, 1125, 1, 0, 0, 0, 1138, 191, 1, 0, 0, 0, 1139, 1141, 7, 13, 0, 0, 1140, 1142, 5, 105, 0, 0, 1141, 1140, 1, 0, 0, 0, 1141, 1142, 1, 0, 0, 0, 1142, 193, 1, 0, 0, 0, 1143, 1144, 7, 14, 0, 0, 1144, 195, 1, 0, 0, 0, 1145, 1147, 5, 106, 0, 0, 1146, 1145, 1, 0, 0, 0, 1147, 1148, 1, 0, 0, 0, 1148, 1146, 1, 0, 0, 0, 1148, 1149, 1, 0, 0, 0, 1149, 197, 1, 0, 0, 0, 1150, 1162, 5, 96, 0, 0, 1151, 1152, 5, 23, 0, 0, 1152, 1157, 3, 78, 39, 0, 1153, 1154, 5, 16, 0, 0, 1154, 1156, 3, 78, 39, 0, 1155, 1153, 1, 0, 0, 0, 1156, 1159, 1, 0, 0, 0, 1157, 1155, 1, 0, 0, 0, 1157, 1158, 1, 0, 0, 0, 1158, 1160, 1, 0, 0, 0, 1159, 1157, 1, 0, 0, 0, 1160, 1161, 5, 24, 0, 0, 1161, 1163, 1, 0, 0, 0, 1162, 1151, 1, 0, 0, 0, 1162, 1163, 1, 0, 0, 0, 1163, 199, 1, 0, 0, 0, 1164, 1166, 5, 129, 0, 0, 1165, 1164, 1, 0, 0, 0, 1166, 1167, 1, 0, 0, 0, 1167, 1165, 1, 0, 0, 0, 1167, 1168, 1, 0, 0, 0, 1168, 201, 1, 0, 0, 0, 130, 213, 215, 230, 234, 239, 245, 249, 252, 257, 263, 270, 274, 287, 295, 300, 310, 313, 319, 327, 330, 341, 350, 352, 358, 385, 388, 399, 404, 409, 423, 426, 433, 437, 439, 444, 449, 452, 458, 462, 466, 471, 484, 486, 493, 503, 509, 520, 523, 529, 532, 540, 543, 549, 552, 560, 563, 569, 573, 584, 589, 594, 602, 607, 613, 618, 631, 633, 638, 648, 668, 680, 685, 691, 695, 698, 710, 719, 723, 726, 733, 739, 761, 783, 787, 792, 796, 800, 805, 810, 814, 838, 892, 896, 912, 914, 926, 933, 941, 945, 953, 957, 959, 970, 992, 997, 1007, 1011, 1017, 1021, 1027, 1040, 1047, 1062, 1071, 1077, 1081, 1091, 1096, 1109, 1113, 1117, 1121, 1131, 1134, 1137, 1141, 1148, 1157, 1162, 1167] \ No newline at end of file +[4, 1, 134, 1171, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 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, 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, 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, 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, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 214, 8, 0, 10, 0, 12, 0, 217, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 3, 3, 231, 8, 3, 1, 4, 1, 4, 3, 4, 235, 8, 4, 1, 4, 5, 4, 238, 8, 4, 10, 4, 12, 4, 241, 9, 4, 1, 5, 1, 5, 1, 6, 3, 6, 246, 8, 6, 1, 6, 1, 6, 3, 6, 250, 8, 6, 1, 6, 3, 6, 253, 8, 6, 1, 7, 1, 7, 1, 7, 3, 7, 258, 8, 7, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 264, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 271, 8, 8, 1, 8, 1, 8, 3, 8, 275, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 286, 8, 8, 10, 8, 12, 8, 289, 9, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 296, 8, 8, 1, 9, 1, 9, 1, 10, 3, 10, 301, 8, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 5, 10, 309, 8, 10, 10, 10, 12, 10, 312, 9, 10, 3, 10, 314, 8, 10, 1, 10, 1, 10, 5, 10, 318, 8, 10, 10, 10, 12, 10, 321, 9, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 3, 11, 328, 8, 11, 1, 11, 3, 11, 331, 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 342, 8, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 352, 8, 13, 10, 13, 12, 13, 355, 9, 13, 1, 13, 1, 13, 1, 13, 3, 13, 360, 8, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 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, 17, 1, 17, 1, 17, 1, 17, 3, 17, 387, 8, 17, 1, 17, 3, 17, 390, 8, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 5, 18, 399, 8, 18, 10, 18, 12, 18, 402, 9, 18, 1, 18, 1, 18, 3, 18, 406, 8, 18, 1, 19, 1, 19, 1, 19, 3, 19, 411, 8, 19, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 5, 21, 423, 8, 21, 10, 21, 12, 21, 426, 9, 21, 3, 21, 428, 8, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 3, 22, 435, 8, 22, 1, 22, 1, 22, 5, 22, 439, 8, 22, 10, 22, 12, 22, 442, 9, 22, 1, 22, 1, 22, 3, 22, 446, 8, 22, 1, 23, 1, 23, 1, 23, 3, 23, 451, 8, 23, 1, 23, 3, 23, 454, 8, 23, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 460, 8, 24, 1, 24, 1, 24, 3, 24, 464, 8, 24, 1, 25, 1, 25, 3, 25, 468, 8, 25, 1, 25, 1, 25, 1, 25, 3, 25, 473, 8, 25, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 5, 27, 486, 8, 27, 10, 27, 12, 27, 489, 9, 27, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 495, 8, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 505, 8, 30, 1, 30, 1, 30, 5, 30, 509, 8, 30, 10, 30, 12, 30, 512, 9, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 5, 31, 520, 8, 31, 10, 31, 12, 31, 523, 9, 31, 3, 31, 525, 8, 31, 1, 31, 1, 31, 1, 32, 1, 32, 3, 32, 531, 8, 32, 1, 32, 3, 32, 534, 8, 32, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 540, 8, 33, 10, 33, 12, 33, 543, 9, 33, 3, 33, 545, 8, 33, 1, 33, 1, 33, 1, 34, 1, 34, 3, 34, 551, 8, 34, 1, 34, 3, 34, 554, 8, 34, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 560, 8, 35, 10, 35, 12, 35, 563, 9, 35, 3, 35, 565, 8, 35, 1, 35, 1, 35, 1, 36, 1, 36, 3, 36, 571, 8, 36, 1, 37, 1, 37, 3, 37, 575, 8, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 586, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 591, 8, 38, 1, 38, 5, 38, 594, 8, 38, 10, 38, 12, 38, 597, 9, 38, 1, 39, 1, 39, 1, 39, 5, 39, 602, 8, 39, 10, 39, 12, 39, 605, 9, 39, 1, 40, 1, 40, 3, 40, 609, 8, 40, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 615, 8, 41, 1, 41, 1, 41, 1, 41, 3, 41, 620, 8, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 5, 44, 633, 8, 44, 10, 44, 12, 44, 636, 9, 44, 1, 44, 1, 44, 3, 44, 640, 8, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 5, 47, 648, 8, 47, 10, 47, 12, 47, 651, 9, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 670, 8, 48, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 682, 8, 50, 1, 51, 1, 51, 1, 51, 3, 51, 687, 8, 51, 1, 51, 1, 51, 4, 51, 691, 8, 51, 11, 51, 12, 51, 692, 1, 52, 1, 52, 3, 52, 697, 8, 52, 1, 52, 3, 52, 700, 8, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 3, 54, 712, 8, 54, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 721, 8, 56, 1, 56, 1, 56, 3, 56, 725, 8, 56, 1, 56, 3, 56, 728, 8, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 3, 57, 735, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 741, 8, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 3, 62, 763, 8, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 785, 8, 66, 1, 66, 1, 66, 3, 66, 789, 8, 66, 1, 66, 1, 66, 1, 67, 3, 67, 794, 8, 67, 1, 67, 1, 67, 3, 67, 798, 8, 67, 5, 67, 800, 8, 67, 10, 67, 12, 67, 803, 9, 67, 1, 68, 1, 68, 3, 68, 807, 8, 68, 1, 68, 5, 68, 810, 8, 68, 10, 68, 12, 68, 813, 9, 68, 1, 68, 3, 68, 816, 8, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 840, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 894, 8, 70, 1, 70, 1, 70, 3, 70, 898, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 5, 70, 914, 8, 70, 10, 70, 12, 70, 917, 9, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 928, 8, 71, 1, 72, 1, 72, 1, 72, 5, 72, 933, 8, 72, 10, 72, 12, 72, 936, 9, 72, 1, 73, 1, 73, 1, 73, 5, 73, 941, 8, 73, 10, 73, 12, 73, 944, 9, 73, 1, 73, 3, 73, 947, 8, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 3, 75, 955, 8, 75, 1, 75, 1, 75, 3, 75, 959, 8, 75, 3, 75, 961, 8, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 5, 77, 970, 8, 77, 10, 77, 12, 77, 973, 9, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 3, 78, 994, 8, 78, 1, 79, 1, 79, 1, 79, 3, 79, 999, 8, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 3, 81, 1009, 8, 81, 1, 81, 1, 81, 3, 81, 1013, 8, 81, 1, 81, 1, 81, 5, 81, 1017, 8, 81, 10, 81, 12, 81, 1020, 9, 81, 1, 81, 3, 81, 1023, 8, 81, 1, 82, 1, 82, 1, 82, 1, 82, 3, 82, 1029, 8, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 3, 84, 1042, 8, 84, 1, 85, 1, 85, 1, 85, 5, 85, 1047, 8, 85, 10, 85, 12, 85, 1050, 9, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 5, 88, 1062, 8, 88, 10, 88, 12, 88, 1065, 9, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 3, 89, 1073, 8, 89, 1, 90, 1, 90, 1, 90, 1, 90, 3, 90, 1079, 8, 90, 1, 90, 1, 90, 3, 90, 1083, 8, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 3, 92, 1093, 8, 92, 1, 92, 1, 92, 1, 92, 3, 92, 1098, 8, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 3, 94, 1111, 8, 94, 1, 95, 1, 95, 3, 95, 1115, 8, 95, 1, 95, 1, 95, 3, 95, 1119, 8, 95, 5, 95, 1121, 8, 95, 10, 95, 12, 95, 1124, 9, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 5, 95, 1131, 8, 95, 10, 95, 12, 95, 1134, 9, 95, 3, 95, 1136, 8, 95, 1, 95, 3, 95, 1139, 8, 95, 1, 96, 1, 96, 3, 96, 1143, 8, 96, 1, 97, 1, 97, 1, 98, 4, 98, 1148, 8, 98, 11, 98, 12, 98, 1149, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 5, 99, 1157, 8, 99, 10, 99, 12, 99, 1160, 9, 99, 1, 99, 1, 99, 3, 99, 1164, 8, 99, 1, 100, 4, 100, 1167, 8, 100, 11, 100, 12, 100, 1168, 1, 100, 0, 2, 76, 140, 101, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 0, 15, 1, 0, 5, 11, 1, 0, 19, 21, 3, 0, 3, 3, 5, 10, 28, 35, 1, 0, 48, 50, 4, 0, 110, 110, 118, 118, 122, 122, 124, 124, 3, 0, 44, 44, 63, 66, 97, 101, 1, 0, 67, 68, 1, 0, 30, 31, 2, 0, 3, 3, 32, 33, 1, 0, 74, 75, 1, 0, 7, 10, 1, 0, 34, 35, 2, 0, 11, 11, 78, 87, 1, 0, 103, 104, 10, 0, 14, 14, 25, 25, 44, 44, 50, 50, 62, 62, 95, 95, 114, 114, 118, 118, 125, 126, 128, 129, 1301, 0, 215, 1, 0, 0, 0, 2, 220, 1, 0, 0, 0, 4, 225, 1, 0, 0, 0, 6, 230, 1, 0, 0, 0, 8, 232, 1, 0, 0, 0, 10, 242, 1, 0, 0, 0, 12, 252, 1, 0, 0, 0, 14, 254, 1, 0, 0, 0, 16, 295, 1, 0, 0, 0, 18, 297, 1, 0, 0, 0, 20, 300, 1, 0, 0, 0, 22, 324, 1, 0, 0, 0, 24, 341, 1, 0, 0, 0, 26, 343, 1, 0, 0, 0, 28, 363, 1, 0, 0, 0, 30, 370, 1, 0, 0, 0, 32, 375, 1, 0, 0, 0, 34, 381, 1, 0, 0, 0, 36, 405, 1, 0, 0, 0, 38, 407, 1, 0, 0, 0, 40, 412, 1, 0, 0, 0, 42, 414, 1, 0, 0, 0, 44, 431, 1, 0, 0, 0, 46, 447, 1, 0, 0, 0, 48, 455, 1, 0, 0, 0, 50, 472, 1, 0, 0, 0, 52, 474, 1, 0, 0, 0, 54, 487, 1, 0, 0, 0, 56, 490, 1, 0, 0, 0, 58, 498, 1, 0, 0, 0, 60, 500, 1, 0, 0, 0, 62, 515, 1, 0, 0, 0, 64, 528, 1, 0, 0, 0, 66, 535, 1, 0, 0, 0, 68, 548, 1, 0, 0, 0, 70, 555, 1, 0, 0, 0, 72, 568, 1, 0, 0, 0, 74, 572, 1, 0, 0, 0, 76, 585, 1, 0, 0, 0, 78, 598, 1, 0, 0, 0, 80, 608, 1, 0, 0, 0, 82, 610, 1, 0, 0, 0, 84, 623, 1, 0, 0, 0, 86, 625, 1, 0, 0, 0, 88, 627, 1, 0, 0, 0, 90, 641, 1, 0, 0, 0, 92, 643, 1, 0, 0, 0, 94, 645, 1, 0, 0, 0, 96, 669, 1, 0, 0, 0, 98, 671, 1, 0, 0, 0, 100, 674, 1, 0, 0, 0, 102, 683, 1, 0, 0, 0, 104, 694, 1, 0, 0, 0, 106, 703, 1, 0, 0, 0, 108, 711, 1, 0, 0, 0, 110, 713, 1, 0, 0, 0, 112, 716, 1, 0, 0, 0, 114, 732, 1, 0, 0, 0, 116, 744, 1, 0, 0, 0, 118, 746, 1, 0, 0, 0, 120, 754, 1, 0, 0, 0, 122, 757, 1, 0, 0, 0, 124, 760, 1, 0, 0, 0, 126, 766, 1, 0, 0, 0, 128, 769, 1, 0, 0, 0, 130, 773, 1, 0, 0, 0, 132, 784, 1, 0, 0, 0, 134, 793, 1, 0, 0, 0, 136, 804, 1, 0, 0, 0, 138, 819, 1, 0, 0, 0, 140, 839, 1, 0, 0, 0, 142, 927, 1, 0, 0, 0, 144, 929, 1, 0, 0, 0, 146, 937, 1, 0, 0, 0, 148, 948, 1, 0, 0, 0, 150, 960, 1, 0, 0, 0, 152, 962, 1, 0, 0, 0, 154, 967, 1, 0, 0, 0, 156, 993, 1, 0, 0, 0, 158, 998, 1, 0, 0, 0, 160, 1000, 1, 0, 0, 0, 162, 1008, 1, 0, 0, 0, 164, 1024, 1, 0, 0, 0, 166, 1030, 1, 0, 0, 0, 168, 1041, 1, 0, 0, 0, 170, 1043, 1, 0, 0, 0, 172, 1051, 1, 0, 0, 0, 174, 1055, 1, 0, 0, 0, 176, 1058, 1, 0, 0, 0, 178, 1072, 1, 0, 0, 0, 180, 1074, 1, 0, 0, 0, 182, 1086, 1, 0, 0, 0, 184, 1089, 1, 0, 0, 0, 186, 1101, 1, 0, 0, 0, 188, 1110, 1, 0, 0, 0, 190, 1138, 1, 0, 0, 0, 192, 1140, 1, 0, 0, 0, 194, 1144, 1, 0, 0, 0, 196, 1147, 1, 0, 0, 0, 198, 1151, 1, 0, 0, 0, 200, 1166, 1, 0, 0, 0, 202, 214, 3, 2, 1, 0, 203, 214, 3, 16, 8, 0, 204, 214, 3, 20, 10, 0, 205, 214, 3, 60, 30, 0, 206, 214, 3, 56, 28, 0, 207, 214, 3, 42, 21, 0, 208, 214, 3, 48, 24, 0, 209, 214, 3, 28, 14, 0, 210, 214, 3, 30, 15, 0, 211, 214, 3, 32, 16, 0, 212, 214, 3, 34, 17, 0, 213, 202, 1, 0, 0, 0, 213, 203, 1, 0, 0, 0, 213, 204, 1, 0, 0, 0, 213, 205, 1, 0, 0, 0, 213, 206, 1, 0, 0, 0, 213, 207, 1, 0, 0, 0, 213, 208, 1, 0, 0, 0, 213, 209, 1, 0, 0, 0, 213, 210, 1, 0, 0, 0, 213, 211, 1, 0, 0, 0, 213, 212, 1, 0, 0, 0, 214, 217, 1, 0, 0, 0, 215, 213, 1, 0, 0, 0, 215, 216, 1, 0, 0, 0, 216, 218, 1, 0, 0, 0, 217, 215, 1, 0, 0, 0, 218, 219, 5, 0, 0, 1, 219, 1, 1, 0, 0, 0, 220, 221, 5, 1, 0, 0, 221, 222, 3, 4, 2, 0, 222, 223, 3, 6, 3, 0, 223, 224, 5, 2, 0, 0, 224, 3, 1, 0, 0, 0, 225, 226, 3, 194, 97, 0, 226, 5, 1, 0, 0, 0, 227, 231, 5, 3, 0, 0, 228, 231, 3, 8, 4, 0, 229, 231, 3, 140, 70, 0, 230, 227, 1, 0, 0, 0, 230, 228, 1, 0, 0, 0, 230, 229, 1, 0, 0, 0, 231, 7, 1, 0, 0, 0, 232, 239, 3, 12, 6, 0, 233, 235, 5, 4, 0, 0, 234, 233, 1, 0, 0, 0, 234, 235, 1, 0, 0, 0, 235, 236, 1, 0, 0, 0, 236, 238, 3, 12, 6, 0, 237, 234, 1, 0, 0, 0, 238, 241, 1, 0, 0, 0, 239, 237, 1, 0, 0, 0, 239, 240, 1, 0, 0, 0, 240, 9, 1, 0, 0, 0, 241, 239, 1, 0, 0, 0, 242, 243, 7, 0, 0, 0, 243, 11, 1, 0, 0, 0, 244, 246, 3, 10, 5, 0, 245, 244, 1, 0, 0, 0, 245, 246, 1, 0, 0, 0, 246, 247, 1, 0, 0, 0, 247, 253, 5, 131, 0, 0, 248, 250, 3, 10, 5, 0, 249, 248, 1, 0, 0, 0, 249, 250, 1, 0, 0, 0, 250, 251, 1, 0, 0, 0, 251, 253, 5, 103, 0, 0, 252, 245, 1, 0, 0, 0, 252, 249, 1, 0, 0, 0, 253, 13, 1, 0, 0, 0, 254, 257, 3, 194, 97, 0, 255, 256, 5, 12, 0, 0, 256, 258, 3, 194, 97, 0, 257, 255, 1, 0, 0, 0, 257, 258, 1, 0, 0, 0, 258, 15, 1, 0, 0, 0, 259, 260, 5, 13, 0, 0, 260, 263, 3, 18, 9, 0, 261, 262, 5, 12, 0, 0, 262, 264, 3, 194, 97, 0, 263, 261, 1, 0, 0, 0, 263, 264, 1, 0, 0, 0, 264, 265, 1, 0, 0, 0, 265, 266, 5, 2, 0, 0, 266, 296, 1, 0, 0, 0, 267, 270, 5, 13, 0, 0, 268, 271, 5, 3, 0, 0, 269, 271, 3, 194, 97, 0, 270, 268, 1, 0, 0, 0, 270, 269, 1, 0, 0, 0, 271, 274, 1, 0, 0, 0, 272, 273, 5, 12, 0, 0, 273, 275, 3, 194, 97, 0, 274, 272, 1, 0, 0, 0, 274, 275, 1, 0, 0, 0, 275, 276, 1, 0, 0, 0, 276, 277, 5, 14, 0, 0, 277, 278, 3, 18, 9, 0, 278, 279, 5, 2, 0, 0, 279, 296, 1, 0, 0, 0, 280, 281, 5, 13, 0, 0, 281, 282, 5, 15, 0, 0, 282, 287, 3, 14, 7, 0, 283, 284, 5, 16, 0, 0, 284, 286, 3, 14, 7, 0, 285, 283, 1, 0, 0, 0, 286, 289, 1, 0, 0, 0, 287, 285, 1, 0, 0, 0, 287, 288, 1, 0, 0, 0, 288, 290, 1, 0, 0, 0, 289, 287, 1, 0, 0, 0, 290, 291, 5, 17, 0, 0, 291, 292, 5, 14, 0, 0, 292, 293, 3, 18, 9, 0, 293, 294, 5, 2, 0, 0, 294, 296, 1, 0, 0, 0, 295, 259, 1, 0, 0, 0, 295, 267, 1, 0, 0, 0, 295, 280, 1, 0, 0, 0, 296, 17, 1, 0, 0, 0, 297, 298, 5, 130, 0, 0, 298, 19, 1, 0, 0, 0, 299, 301, 5, 18, 0, 0, 300, 299, 1, 0, 0, 0, 300, 301, 1, 0, 0, 0, 301, 302, 1, 0, 0, 0, 302, 303, 7, 1, 0, 0, 303, 313, 3, 194, 97, 0, 304, 305, 5, 22, 0, 0, 305, 310, 3, 22, 11, 0, 306, 307, 5, 16, 0, 0, 307, 309, 3, 22, 11, 0, 308, 306, 1, 0, 0, 0, 309, 312, 1, 0, 0, 0, 310, 308, 1, 0, 0, 0, 310, 311, 1, 0, 0, 0, 311, 314, 1, 0, 0, 0, 312, 310, 1, 0, 0, 0, 313, 304, 1, 0, 0, 0, 313, 314, 1, 0, 0, 0, 314, 315, 1, 0, 0, 0, 315, 319, 5, 15, 0, 0, 316, 318, 3, 24, 12, 0, 317, 316, 1, 0, 0, 0, 318, 321, 1, 0, 0, 0, 319, 317, 1, 0, 0, 0, 319, 320, 1, 0, 0, 0, 320, 322, 1, 0, 0, 0, 321, 319, 1, 0, 0, 0, 322, 323, 5, 17, 0, 0, 323, 21, 1, 0, 0, 0, 324, 330, 3, 78, 39, 0, 325, 327, 5, 23, 0, 0, 326, 328, 3, 144, 72, 0, 327, 326, 1, 0, 0, 0, 327, 328, 1, 0, 0, 0, 328, 329, 1, 0, 0, 0, 329, 331, 5, 24, 0, 0, 330, 325, 1, 0, 0, 0, 330, 331, 1, 0, 0, 0, 331, 23, 1, 0, 0, 0, 332, 342, 3, 26, 13, 0, 333, 342, 3, 34, 17, 0, 334, 342, 3, 42, 21, 0, 335, 342, 3, 44, 22, 0, 336, 342, 3, 48, 24, 0, 337, 342, 3, 56, 28, 0, 338, 342, 3, 60, 30, 0, 339, 342, 3, 30, 15, 0, 340, 342, 3, 32, 16, 0, 341, 332, 1, 0, 0, 0, 341, 333, 1, 0, 0, 0, 341, 334, 1, 0, 0, 0, 341, 335, 1, 0, 0, 0, 341, 336, 1, 0, 0, 0, 341, 337, 1, 0, 0, 0, 341, 338, 1, 0, 0, 0, 341, 339, 1, 0, 0, 0, 341, 340, 1, 0, 0, 0, 342, 25, 1, 0, 0, 0, 343, 353, 3, 76, 38, 0, 344, 352, 5, 120, 0, 0, 345, 352, 5, 117, 0, 0, 346, 352, 5, 119, 0, 0, 347, 352, 5, 110, 0, 0, 348, 352, 5, 111, 0, 0, 349, 352, 5, 112, 0, 0, 350, 352, 3, 198, 99, 0, 351, 344, 1, 0, 0, 0, 351, 345, 1, 0, 0, 0, 351, 346, 1, 0, 0, 0, 351, 347, 1, 0, 0, 0, 351, 348, 1, 0, 0, 0, 351, 349, 1, 0, 0, 0, 351, 350, 1, 0, 0, 0, 352, 355, 1, 0, 0, 0, 353, 351, 1, 0, 0, 0, 353, 354, 1, 0, 0, 0, 354, 356, 1, 0, 0, 0, 355, 353, 1, 0, 0, 0, 356, 359, 3, 194, 97, 0, 357, 358, 5, 11, 0, 0, 358, 360, 3, 140, 70, 0, 359, 357, 1, 0, 0, 0, 359, 360, 1, 0, 0, 0, 360, 361, 1, 0, 0, 0, 361, 362, 5, 2, 0, 0, 362, 27, 1, 0, 0, 0, 363, 364, 3, 76, 38, 0, 364, 365, 5, 110, 0, 0, 365, 366, 3, 194, 97, 0, 366, 367, 5, 11, 0, 0, 367, 368, 3, 140, 70, 0, 368, 369, 5, 2, 0, 0, 369, 29, 1, 0, 0, 0, 370, 371, 5, 25, 0, 0, 371, 372, 3, 194, 97, 0, 372, 373, 3, 62, 31, 0, 373, 374, 5, 2, 0, 0, 374, 31, 1, 0, 0, 0, 375, 376, 5, 123, 0, 0, 376, 377, 3, 194, 97, 0, 377, 378, 5, 22, 0, 0, 378, 379, 3, 138, 69, 0, 379, 380, 5, 2, 0, 0, 380, 33, 1, 0, 0, 0, 381, 382, 5, 26, 0, 0, 382, 383, 3, 36, 18, 0, 383, 386, 5, 27, 0, 0, 384, 387, 5, 3, 0, 0, 385, 387, 3, 76, 38, 0, 386, 384, 1, 0, 0, 0, 386, 385, 1, 0, 0, 0, 387, 389, 1, 0, 0, 0, 388, 390, 5, 125, 0, 0, 389, 388, 1, 0, 0, 0, 389, 390, 1, 0, 0, 0, 390, 391, 1, 0, 0, 0, 391, 392, 5, 2, 0, 0, 392, 35, 1, 0, 0, 0, 393, 406, 3, 78, 39, 0, 394, 395, 5, 15, 0, 0, 395, 400, 3, 38, 19, 0, 396, 397, 5, 16, 0, 0, 397, 399, 3, 38, 19, 0, 398, 396, 1, 0, 0, 0, 399, 402, 1, 0, 0, 0, 400, 398, 1, 0, 0, 0, 400, 401, 1, 0, 0, 0, 401, 403, 1, 0, 0, 0, 402, 400, 1, 0, 0, 0, 403, 404, 5, 17, 0, 0, 404, 406, 1, 0, 0, 0, 405, 393, 1, 0, 0, 0, 405, 394, 1, 0, 0, 0, 406, 37, 1, 0, 0, 0, 407, 410, 3, 78, 39, 0, 408, 409, 5, 12, 0, 0, 409, 411, 3, 40, 20, 0, 410, 408, 1, 0, 0, 0, 410, 411, 1, 0, 0, 0, 411, 39, 1, 0, 0, 0, 412, 413, 7, 2, 0, 0, 413, 41, 1, 0, 0, 0, 414, 415, 5, 36, 0, 0, 415, 416, 3, 194, 97, 0, 416, 427, 5, 15, 0, 0, 417, 418, 3, 74, 37, 0, 418, 424, 5, 2, 0, 0, 419, 420, 3, 74, 37, 0, 420, 421, 5, 2, 0, 0, 421, 423, 1, 0, 0, 0, 422, 419, 1, 0, 0, 0, 423, 426, 1, 0, 0, 0, 424, 422, 1, 0, 0, 0, 424, 425, 1, 0, 0, 0, 425, 428, 1, 0, 0, 0, 426, 424, 1, 0, 0, 0, 427, 417, 1, 0, 0, 0, 427, 428, 1, 0, 0, 0, 428, 429, 1, 0, 0, 0, 429, 430, 5, 17, 0, 0, 430, 43, 1, 0, 0, 0, 431, 432, 5, 37, 0, 0, 432, 434, 3, 194, 97, 0, 433, 435, 3, 62, 31, 0, 434, 433, 1, 0, 0, 0, 434, 435, 1, 0, 0, 0, 435, 440, 1, 0, 0, 0, 436, 439, 5, 121, 0, 0, 437, 439, 3, 198, 99, 0, 438, 436, 1, 0, 0, 0, 438, 437, 1, 0, 0, 0, 439, 442, 1, 0, 0, 0, 440, 438, 1, 0, 0, 0, 440, 441, 1, 0, 0, 0, 441, 445, 1, 0, 0, 0, 442, 440, 1, 0, 0, 0, 443, 446, 5, 2, 0, 0, 444, 446, 3, 94, 47, 0, 445, 443, 1, 0, 0, 0, 445, 444, 1, 0, 0, 0, 446, 45, 1, 0, 0, 0, 447, 453, 3, 194, 97, 0, 448, 450, 5, 23, 0, 0, 449, 451, 3, 144, 72, 0, 450, 449, 1, 0, 0, 0, 450, 451, 1, 0, 0, 0, 451, 452, 1, 0, 0, 0, 452, 454, 5, 24, 0, 0, 453, 448, 1, 0, 0, 0, 453, 454, 1, 0, 0, 0, 454, 47, 1, 0, 0, 0, 455, 456, 3, 50, 25, 0, 456, 457, 3, 62, 31, 0, 457, 459, 3, 54, 27, 0, 458, 460, 3, 52, 26, 0, 459, 458, 1, 0, 0, 0, 459, 460, 1, 0, 0, 0, 460, 463, 1, 0, 0, 0, 461, 464, 5, 2, 0, 0, 462, 464, 3, 94, 47, 0, 463, 461, 1, 0, 0, 0, 463, 462, 1, 0, 0, 0, 464, 49, 1, 0, 0, 0, 465, 467, 5, 38, 0, 0, 466, 468, 3, 194, 97, 0, 467, 466, 1, 0, 0, 0, 467, 468, 1, 0, 0, 0, 468, 473, 1, 0, 0, 0, 469, 473, 5, 126, 0, 0, 470, 473, 5, 127, 0, 0, 471, 473, 5, 128, 0, 0, 472, 465, 1, 0, 0, 0, 472, 469, 1, 0, 0, 0, 472, 470, 1, 0, 0, 0, 472, 471, 1, 0, 0, 0, 473, 51, 1, 0, 0, 0, 474, 475, 5, 39, 0, 0, 475, 476, 3, 62, 31, 0, 476, 53, 1, 0, 0, 0, 477, 486, 5, 115, 0, 0, 478, 486, 5, 120, 0, 0, 479, 486, 5, 117, 0, 0, 480, 486, 5, 119, 0, 0, 481, 486, 5, 121, 0, 0, 482, 486, 3, 92, 46, 0, 483, 486, 3, 46, 23, 0, 484, 486, 3, 198, 99, 0, 485, 477, 1, 0, 0, 0, 485, 478, 1, 0, 0, 0, 485, 479, 1, 0, 0, 0, 485, 480, 1, 0, 0, 0, 485, 481, 1, 0, 0, 0, 485, 482, 1, 0, 0, 0, 485, 483, 1, 0, 0, 0, 485, 484, 1, 0, 0, 0, 486, 489, 1, 0, 0, 0, 487, 485, 1, 0, 0, 0, 487, 488, 1, 0, 0, 0, 488, 55, 1, 0, 0, 0, 489, 487, 1, 0, 0, 0, 490, 491, 5, 40, 0, 0, 491, 492, 3, 194, 97, 0, 492, 494, 3, 66, 33, 0, 493, 495, 5, 108, 0, 0, 494, 493, 1, 0, 0, 0, 494, 495, 1, 0, 0, 0, 495, 496, 1, 0, 0, 0, 496, 497, 5, 2, 0, 0, 497, 57, 1, 0, 0, 0, 498, 499, 3, 194, 97, 0, 499, 59, 1, 0, 0, 0, 500, 501, 5, 41, 0, 0, 501, 502, 3, 194, 97, 0, 502, 504, 5, 15, 0, 0, 503, 505, 3, 58, 29, 0, 504, 503, 1, 0, 0, 0, 504, 505, 1, 0, 0, 0, 505, 510, 1, 0, 0, 0, 506, 507, 5, 16, 0, 0, 507, 509, 3, 58, 29, 0, 508, 506, 1, 0, 0, 0, 509, 512, 1, 0, 0, 0, 510, 508, 1, 0, 0, 0, 510, 511, 1, 0, 0, 0, 511, 513, 1, 0, 0, 0, 512, 510, 1, 0, 0, 0, 513, 514, 5, 17, 0, 0, 514, 61, 1, 0, 0, 0, 515, 524, 5, 23, 0, 0, 516, 521, 3, 64, 32, 0, 517, 518, 5, 16, 0, 0, 518, 520, 3, 64, 32, 0, 519, 517, 1, 0, 0, 0, 520, 523, 1, 0, 0, 0, 521, 519, 1, 0, 0, 0, 521, 522, 1, 0, 0, 0, 522, 525, 1, 0, 0, 0, 523, 521, 1, 0, 0, 0, 524, 516, 1, 0, 0, 0, 524, 525, 1, 0, 0, 0, 525, 526, 1, 0, 0, 0, 526, 527, 5, 24, 0, 0, 527, 63, 1, 0, 0, 0, 528, 530, 3, 76, 38, 0, 529, 531, 3, 90, 45, 0, 530, 529, 1, 0, 0, 0, 530, 531, 1, 0, 0, 0, 531, 533, 1, 0, 0, 0, 532, 534, 3, 194, 97, 0, 533, 532, 1, 0, 0, 0, 533, 534, 1, 0, 0, 0, 534, 65, 1, 0, 0, 0, 535, 544, 5, 23, 0, 0, 536, 541, 3, 68, 34, 0, 537, 538, 5, 16, 0, 0, 538, 540, 3, 68, 34, 0, 539, 537, 1, 0, 0, 0, 540, 543, 1, 0, 0, 0, 541, 539, 1, 0, 0, 0, 541, 542, 1, 0, 0, 0, 542, 545, 1, 0, 0, 0, 543, 541, 1, 0, 0, 0, 544, 536, 1, 0, 0, 0, 544, 545, 1, 0, 0, 0, 545, 546, 1, 0, 0, 0, 546, 547, 5, 24, 0, 0, 547, 67, 1, 0, 0, 0, 548, 550, 3, 76, 38, 0, 549, 551, 5, 116, 0, 0, 550, 549, 1, 0, 0, 0, 550, 551, 1, 0, 0, 0, 551, 553, 1, 0, 0, 0, 552, 554, 3, 194, 97, 0, 553, 552, 1, 0, 0, 0, 553, 554, 1, 0, 0, 0, 554, 69, 1, 0, 0, 0, 555, 564, 5, 23, 0, 0, 556, 561, 3, 72, 36, 0, 557, 558, 5, 16, 0, 0, 558, 560, 3, 72, 36, 0, 559, 557, 1, 0, 0, 0, 560, 563, 1, 0, 0, 0, 561, 559, 1, 0, 0, 0, 561, 562, 1, 0, 0, 0, 562, 565, 1, 0, 0, 0, 563, 561, 1, 0, 0, 0, 564, 556, 1, 0, 0, 0, 564, 565, 1, 0, 0, 0, 565, 566, 1, 0, 0, 0, 566, 567, 5, 24, 0, 0, 567, 71, 1, 0, 0, 0, 568, 570, 3, 76, 38, 0, 569, 571, 3, 90, 45, 0, 570, 569, 1, 0, 0, 0, 570, 571, 1, 0, 0, 0, 571, 73, 1, 0, 0, 0, 572, 574, 3, 76, 38, 0, 573, 575, 3, 90, 45, 0, 574, 573, 1, 0, 0, 0, 574, 575, 1, 0, 0, 0, 575, 576, 1, 0, 0, 0, 576, 577, 3, 194, 97, 0, 577, 75, 1, 0, 0, 0, 578, 579, 6, 38, -1, 0, 579, 586, 3, 138, 69, 0, 580, 586, 3, 78, 39, 0, 581, 586, 3, 82, 41, 0, 582, 586, 3, 88, 44, 0, 583, 584, 5, 44, 0, 0, 584, 586, 5, 118, 0, 0, 585, 578, 1, 0, 0, 0, 585, 580, 1, 0, 0, 0, 585, 581, 1, 0, 0, 0, 585, 582, 1, 0, 0, 0, 585, 583, 1, 0, 0, 0, 586, 595, 1, 0, 0, 0, 587, 588, 10, 3, 0, 0, 588, 590, 5, 42, 0, 0, 589, 591, 3, 140, 70, 0, 590, 589, 1, 0, 0, 0, 590, 591, 1, 0, 0, 0, 591, 592, 1, 0, 0, 0, 592, 594, 5, 43, 0, 0, 593, 587, 1, 0, 0, 0, 594, 597, 1, 0, 0, 0, 595, 593, 1, 0, 0, 0, 595, 596, 1, 0, 0, 0, 596, 77, 1, 0, 0, 0, 597, 595, 1, 0, 0, 0, 598, 603, 3, 194, 97, 0, 599, 600, 5, 45, 0, 0, 600, 602, 3, 194, 97, 0, 601, 599, 1, 0, 0, 0, 602, 605, 1, 0, 0, 0, 603, 601, 1, 0, 0, 0, 603, 604, 1, 0, 0, 0, 604, 79, 1, 0, 0, 0, 605, 603, 1, 0, 0, 0, 606, 609, 3, 138, 69, 0, 607, 609, 3, 78, 39, 0, 608, 606, 1, 0, 0, 0, 608, 607, 1, 0, 0, 0, 609, 81, 1, 0, 0, 0, 610, 611, 5, 46, 0, 0, 611, 612, 5, 23, 0, 0, 612, 614, 3, 80, 40, 0, 613, 615, 3, 84, 42, 0, 614, 613, 1, 0, 0, 0, 614, 615, 1, 0, 0, 0, 615, 616, 1, 0, 0, 0, 616, 617, 5, 47, 0, 0, 617, 619, 3, 76, 38, 0, 618, 620, 3, 86, 43, 0, 619, 618, 1, 0, 0, 0, 619, 620, 1, 0, 0, 0, 620, 621, 1, 0, 0, 0, 621, 622, 5, 24, 0, 0, 622, 83, 1, 0, 0, 0, 623, 624, 3, 194, 97, 0, 624, 85, 1, 0, 0, 0, 625, 626, 3, 194, 97, 0, 626, 87, 1, 0, 0, 0, 627, 628, 5, 38, 0, 0, 628, 634, 3, 70, 35, 0, 629, 633, 5, 117, 0, 0, 630, 633, 5, 115, 0, 0, 631, 633, 3, 92, 46, 0, 632, 629, 1, 0, 0, 0, 632, 630, 1, 0, 0, 0, 632, 631, 1, 0, 0, 0, 633, 636, 1, 0, 0, 0, 634, 632, 1, 0, 0, 0, 634, 635, 1, 0, 0, 0, 635, 639, 1, 0, 0, 0, 636, 634, 1, 0, 0, 0, 637, 638, 5, 39, 0, 0, 638, 640, 3, 70, 35, 0, 639, 637, 1, 0, 0, 0, 639, 640, 1, 0, 0, 0, 640, 89, 1, 0, 0, 0, 641, 642, 7, 3, 0, 0, 642, 91, 1, 0, 0, 0, 643, 644, 7, 4, 0, 0, 644, 93, 1, 0, 0, 0, 645, 649, 5, 15, 0, 0, 646, 648, 3, 96, 48, 0, 647, 646, 1, 0, 0, 0, 648, 651, 1, 0, 0, 0, 649, 647, 1, 0, 0, 0, 649, 650, 1, 0, 0, 0, 650, 652, 1, 0, 0, 0, 651, 649, 1, 0, 0, 0, 652, 653, 5, 17, 0, 0, 653, 95, 1, 0, 0, 0, 654, 670, 3, 100, 50, 0, 655, 670, 3, 102, 51, 0, 656, 670, 3, 106, 53, 0, 657, 670, 3, 112, 56, 0, 658, 670, 3, 94, 47, 0, 659, 670, 3, 114, 57, 0, 660, 670, 3, 118, 59, 0, 661, 670, 3, 120, 60, 0, 662, 670, 3, 122, 61, 0, 663, 670, 3, 124, 62, 0, 664, 670, 3, 126, 63, 0, 665, 670, 3, 128, 64, 0, 666, 670, 3, 108, 54, 0, 667, 670, 3, 110, 55, 0, 668, 670, 3, 130, 65, 0, 669, 654, 1, 0, 0, 0, 669, 655, 1, 0, 0, 0, 669, 656, 1, 0, 0, 0, 669, 657, 1, 0, 0, 0, 669, 658, 1, 0, 0, 0, 669, 659, 1, 0, 0, 0, 669, 660, 1, 0, 0, 0, 669, 661, 1, 0, 0, 0, 669, 662, 1, 0, 0, 0, 669, 663, 1, 0, 0, 0, 669, 664, 1, 0, 0, 0, 669, 665, 1, 0, 0, 0, 669, 666, 1, 0, 0, 0, 669, 667, 1, 0, 0, 0, 669, 668, 1, 0, 0, 0, 670, 97, 1, 0, 0, 0, 671, 672, 3, 140, 70, 0, 672, 673, 5, 2, 0, 0, 673, 99, 1, 0, 0, 0, 674, 675, 5, 51, 0, 0, 675, 676, 5, 23, 0, 0, 676, 677, 3, 140, 70, 0, 677, 678, 5, 24, 0, 0, 678, 681, 3, 96, 48, 0, 679, 680, 5, 52, 0, 0, 680, 682, 3, 96, 48, 0, 681, 679, 1, 0, 0, 0, 681, 682, 1, 0, 0, 0, 682, 101, 1, 0, 0, 0, 683, 684, 5, 53, 0, 0, 684, 686, 3, 140, 70, 0, 685, 687, 3, 52, 26, 0, 686, 685, 1, 0, 0, 0, 686, 687, 1, 0, 0, 0, 687, 688, 1, 0, 0, 0, 688, 690, 3, 94, 47, 0, 689, 691, 3, 104, 52, 0, 690, 689, 1, 0, 0, 0, 691, 692, 1, 0, 0, 0, 692, 690, 1, 0, 0, 0, 692, 693, 1, 0, 0, 0, 693, 103, 1, 0, 0, 0, 694, 699, 5, 54, 0, 0, 695, 697, 3, 194, 97, 0, 696, 695, 1, 0, 0, 0, 696, 697, 1, 0, 0, 0, 697, 698, 1, 0, 0, 0, 698, 700, 3, 62, 31, 0, 699, 696, 1, 0, 0, 0, 699, 700, 1, 0, 0, 0, 700, 701, 1, 0, 0, 0, 701, 702, 3, 94, 47, 0, 702, 105, 1, 0, 0, 0, 703, 704, 5, 55, 0, 0, 704, 705, 5, 23, 0, 0, 705, 706, 3, 140, 70, 0, 706, 707, 5, 24, 0, 0, 707, 708, 3, 96, 48, 0, 708, 107, 1, 0, 0, 0, 709, 712, 3, 132, 66, 0, 710, 712, 3, 98, 49, 0, 711, 709, 1, 0, 0, 0, 711, 710, 1, 0, 0, 0, 712, 109, 1, 0, 0, 0, 713, 714, 5, 56, 0, 0, 714, 715, 3, 94, 47, 0, 715, 111, 1, 0, 0, 0, 716, 717, 5, 27, 0, 0, 717, 720, 5, 23, 0, 0, 718, 721, 3, 108, 54, 0, 719, 721, 5, 2, 0, 0, 720, 718, 1, 0, 0, 0, 720, 719, 1, 0, 0, 0, 721, 724, 1, 0, 0, 0, 722, 725, 3, 98, 49, 0, 723, 725, 5, 2, 0, 0, 724, 722, 1, 0, 0, 0, 724, 723, 1, 0, 0, 0, 725, 727, 1, 0, 0, 0, 726, 728, 3, 140, 70, 0, 727, 726, 1, 0, 0, 0, 727, 728, 1, 0, 0, 0, 728, 729, 1, 0, 0, 0, 729, 730, 5, 24, 0, 0, 730, 731, 3, 96, 48, 0, 731, 113, 1, 0, 0, 0, 732, 734, 5, 57, 0, 0, 733, 735, 5, 130, 0, 0, 734, 733, 1, 0, 0, 0, 734, 735, 1, 0, 0, 0, 735, 740, 1, 0, 0, 0, 736, 737, 5, 23, 0, 0, 737, 738, 3, 116, 58, 0, 738, 739, 5, 24, 0, 0, 739, 741, 1, 0, 0, 0, 740, 736, 1, 0, 0, 0, 740, 741, 1, 0, 0, 0, 741, 742, 1, 0, 0, 0, 742, 743, 3, 154, 77, 0, 743, 115, 1, 0, 0, 0, 744, 745, 3, 200, 100, 0, 745, 117, 1, 0, 0, 0, 746, 747, 5, 58, 0, 0, 747, 748, 3, 96, 48, 0, 748, 749, 5, 55, 0, 0, 749, 750, 5, 23, 0, 0, 750, 751, 3, 140, 70, 0, 751, 752, 5, 24, 0, 0, 752, 753, 5, 2, 0, 0, 753, 119, 1, 0, 0, 0, 754, 755, 5, 113, 0, 0, 755, 756, 5, 2, 0, 0, 756, 121, 1, 0, 0, 0, 757, 758, 5, 109, 0, 0, 758, 759, 5, 2, 0, 0, 759, 123, 1, 0, 0, 0, 760, 762, 5, 59, 0, 0, 761, 763, 3, 140, 70, 0, 762, 761, 1, 0, 0, 0, 762, 763, 1, 0, 0, 0, 763, 764, 1, 0, 0, 0, 764, 765, 5, 2, 0, 0, 765, 125, 1, 0, 0, 0, 766, 767, 5, 60, 0, 0, 767, 768, 5, 2, 0, 0, 768, 127, 1, 0, 0, 0, 769, 770, 5, 61, 0, 0, 770, 771, 3, 152, 76, 0, 771, 772, 5, 2, 0, 0, 772, 129, 1, 0, 0, 0, 773, 774, 5, 62, 0, 0, 774, 775, 3, 152, 76, 0, 775, 776, 5, 2, 0, 0, 776, 131, 1, 0, 0, 0, 777, 778, 5, 63, 0, 0, 778, 785, 3, 136, 68, 0, 779, 785, 3, 74, 37, 0, 780, 781, 5, 23, 0, 0, 781, 782, 3, 134, 67, 0, 782, 783, 5, 24, 0, 0, 783, 785, 1, 0, 0, 0, 784, 777, 1, 0, 0, 0, 784, 779, 1, 0, 0, 0, 784, 780, 1, 0, 0, 0, 785, 788, 1, 0, 0, 0, 786, 787, 5, 11, 0, 0, 787, 789, 3, 140, 70, 0, 788, 786, 1, 0, 0, 0, 788, 789, 1, 0, 0, 0, 789, 790, 1, 0, 0, 0, 790, 791, 5, 2, 0, 0, 791, 133, 1, 0, 0, 0, 792, 794, 3, 74, 37, 0, 793, 792, 1, 0, 0, 0, 793, 794, 1, 0, 0, 0, 794, 801, 1, 0, 0, 0, 795, 797, 5, 16, 0, 0, 796, 798, 3, 74, 37, 0, 797, 796, 1, 0, 0, 0, 797, 798, 1, 0, 0, 0, 798, 800, 1, 0, 0, 0, 799, 795, 1, 0, 0, 0, 800, 803, 1, 0, 0, 0, 801, 799, 1, 0, 0, 0, 801, 802, 1, 0, 0, 0, 802, 135, 1, 0, 0, 0, 803, 801, 1, 0, 0, 0, 804, 811, 5, 23, 0, 0, 805, 807, 3, 194, 97, 0, 806, 805, 1, 0, 0, 0, 806, 807, 1, 0, 0, 0, 807, 808, 1, 0, 0, 0, 808, 810, 5, 16, 0, 0, 809, 806, 1, 0, 0, 0, 810, 813, 1, 0, 0, 0, 811, 809, 1, 0, 0, 0, 811, 812, 1, 0, 0, 0, 812, 815, 1, 0, 0, 0, 813, 811, 1, 0, 0, 0, 814, 816, 3, 194, 97, 0, 815, 814, 1, 0, 0, 0, 815, 816, 1, 0, 0, 0, 816, 817, 1, 0, 0, 0, 817, 818, 5, 24, 0, 0, 818, 137, 1, 0, 0, 0, 819, 820, 7, 5, 0, 0, 820, 139, 1, 0, 0, 0, 821, 822, 6, 70, -1, 0, 822, 823, 5, 69, 0, 0, 823, 840, 3, 76, 38, 0, 824, 825, 5, 23, 0, 0, 825, 826, 3, 140, 70, 0, 826, 827, 5, 24, 0, 0, 827, 840, 1, 0, 0, 0, 828, 829, 7, 6, 0, 0, 829, 840, 3, 140, 70, 19, 830, 831, 7, 7, 0, 0, 831, 840, 3, 140, 70, 18, 832, 833, 5, 71, 0, 0, 833, 840, 3, 140, 70, 17, 834, 835, 5, 72, 0, 0, 835, 840, 3, 140, 70, 16, 836, 837, 5, 6, 0, 0, 837, 840, 3, 140, 70, 15, 838, 840, 3, 142, 71, 0, 839, 821, 1, 0, 0, 0, 839, 824, 1, 0, 0, 0, 839, 828, 1, 0, 0, 0, 839, 830, 1, 0, 0, 0, 839, 832, 1, 0, 0, 0, 839, 834, 1, 0, 0, 0, 839, 836, 1, 0, 0, 0, 839, 838, 1, 0, 0, 0, 840, 915, 1, 0, 0, 0, 841, 842, 10, 14, 0, 0, 842, 843, 5, 73, 0, 0, 843, 914, 3, 140, 70, 14, 844, 845, 10, 13, 0, 0, 845, 846, 7, 8, 0, 0, 846, 914, 3, 140, 70, 14, 847, 848, 10, 12, 0, 0, 848, 849, 7, 7, 0, 0, 849, 914, 3, 140, 70, 13, 850, 851, 10, 11, 0, 0, 851, 852, 7, 9, 0, 0, 852, 914, 3, 140, 70, 12, 853, 854, 10, 10, 0, 0, 854, 855, 5, 29, 0, 0, 855, 914, 3, 140, 70, 11, 856, 857, 10, 9, 0, 0, 857, 858, 5, 5, 0, 0, 858, 914, 3, 140, 70, 10, 859, 860, 10, 8, 0, 0, 860, 861, 5, 28, 0, 0, 861, 914, 3, 140, 70, 9, 862, 863, 10, 7, 0, 0, 863, 864, 7, 10, 0, 0, 864, 914, 3, 140, 70, 8, 865, 866, 10, 6, 0, 0, 866, 867, 7, 11, 0, 0, 867, 914, 3, 140, 70, 7, 868, 869, 10, 5, 0, 0, 869, 870, 5, 76, 0, 0, 870, 914, 3, 140, 70, 6, 871, 872, 10, 4, 0, 0, 872, 873, 5, 4, 0, 0, 873, 914, 3, 140, 70, 5, 874, 875, 10, 3, 0, 0, 875, 876, 5, 77, 0, 0, 876, 877, 3, 140, 70, 0, 877, 878, 5, 70, 0, 0, 878, 879, 3, 140, 70, 3, 879, 914, 1, 0, 0, 0, 880, 881, 10, 2, 0, 0, 881, 882, 7, 12, 0, 0, 882, 914, 3, 140, 70, 3, 883, 884, 10, 27, 0, 0, 884, 914, 7, 6, 0, 0, 885, 886, 10, 25, 0, 0, 886, 887, 5, 42, 0, 0, 887, 888, 3, 140, 70, 0, 888, 889, 5, 43, 0, 0, 889, 914, 1, 0, 0, 0, 890, 891, 10, 24, 0, 0, 891, 893, 5, 42, 0, 0, 892, 894, 3, 140, 70, 0, 893, 892, 1, 0, 0, 0, 893, 894, 1, 0, 0, 0, 894, 895, 1, 0, 0, 0, 895, 897, 5, 70, 0, 0, 896, 898, 3, 140, 70, 0, 897, 896, 1, 0, 0, 0, 897, 898, 1, 0, 0, 0, 898, 899, 1, 0, 0, 0, 899, 914, 5, 43, 0, 0, 900, 901, 10, 23, 0, 0, 901, 902, 5, 45, 0, 0, 902, 914, 3, 194, 97, 0, 903, 904, 10, 22, 0, 0, 904, 905, 5, 15, 0, 0, 905, 906, 3, 146, 73, 0, 906, 907, 5, 17, 0, 0, 907, 914, 1, 0, 0, 0, 908, 909, 10, 21, 0, 0, 909, 910, 5, 23, 0, 0, 910, 911, 3, 150, 75, 0, 911, 912, 5, 24, 0, 0, 912, 914, 1, 0, 0, 0, 913, 841, 1, 0, 0, 0, 913, 844, 1, 0, 0, 0, 913, 847, 1, 0, 0, 0, 913, 850, 1, 0, 0, 0, 913, 853, 1, 0, 0, 0, 913, 856, 1, 0, 0, 0, 913, 859, 1, 0, 0, 0, 913, 862, 1, 0, 0, 0, 913, 865, 1, 0, 0, 0, 913, 868, 1, 0, 0, 0, 913, 871, 1, 0, 0, 0, 913, 874, 1, 0, 0, 0, 913, 880, 1, 0, 0, 0, 913, 883, 1, 0, 0, 0, 913, 885, 1, 0, 0, 0, 913, 890, 1, 0, 0, 0, 913, 900, 1, 0, 0, 0, 913, 903, 1, 0, 0, 0, 913, 908, 1, 0, 0, 0, 914, 917, 1, 0, 0, 0, 915, 913, 1, 0, 0, 0, 915, 916, 1, 0, 0, 0, 916, 141, 1, 0, 0, 0, 917, 915, 1, 0, 0, 0, 918, 928, 5, 102, 0, 0, 919, 928, 3, 192, 96, 0, 920, 928, 3, 196, 98, 0, 921, 928, 3, 200, 100, 0, 922, 928, 3, 194, 97, 0, 923, 928, 5, 123, 0, 0, 924, 928, 5, 118, 0, 0, 925, 928, 3, 190, 95, 0, 926, 928, 3, 76, 38, 0, 927, 918, 1, 0, 0, 0, 927, 919, 1, 0, 0, 0, 927, 920, 1, 0, 0, 0, 927, 921, 1, 0, 0, 0, 927, 922, 1, 0, 0, 0, 927, 923, 1, 0, 0, 0, 927, 924, 1, 0, 0, 0, 927, 925, 1, 0, 0, 0, 927, 926, 1, 0, 0, 0, 928, 143, 1, 0, 0, 0, 929, 934, 3, 140, 70, 0, 930, 931, 5, 16, 0, 0, 931, 933, 3, 140, 70, 0, 932, 930, 1, 0, 0, 0, 933, 936, 1, 0, 0, 0, 934, 932, 1, 0, 0, 0, 934, 935, 1, 0, 0, 0, 935, 145, 1, 0, 0, 0, 936, 934, 1, 0, 0, 0, 937, 942, 3, 148, 74, 0, 938, 939, 5, 16, 0, 0, 939, 941, 3, 148, 74, 0, 940, 938, 1, 0, 0, 0, 941, 944, 1, 0, 0, 0, 942, 940, 1, 0, 0, 0, 942, 943, 1, 0, 0, 0, 943, 946, 1, 0, 0, 0, 944, 942, 1, 0, 0, 0, 945, 947, 5, 16, 0, 0, 946, 945, 1, 0, 0, 0, 946, 947, 1, 0, 0, 0, 947, 147, 1, 0, 0, 0, 948, 949, 3, 194, 97, 0, 949, 950, 5, 70, 0, 0, 950, 951, 3, 140, 70, 0, 951, 149, 1, 0, 0, 0, 952, 954, 5, 15, 0, 0, 953, 955, 3, 146, 73, 0, 954, 953, 1, 0, 0, 0, 954, 955, 1, 0, 0, 0, 955, 956, 1, 0, 0, 0, 956, 961, 5, 17, 0, 0, 957, 959, 3, 144, 72, 0, 958, 957, 1, 0, 0, 0, 958, 959, 1, 0, 0, 0, 959, 961, 1, 0, 0, 0, 960, 952, 1, 0, 0, 0, 960, 958, 1, 0, 0, 0, 961, 151, 1, 0, 0, 0, 962, 963, 3, 140, 70, 0, 963, 964, 5, 23, 0, 0, 964, 965, 3, 150, 75, 0, 965, 966, 5, 24, 0, 0, 966, 153, 1, 0, 0, 0, 967, 971, 5, 15, 0, 0, 968, 970, 3, 156, 78, 0, 969, 968, 1, 0, 0, 0, 970, 973, 1, 0, 0, 0, 971, 969, 1, 0, 0, 0, 971, 972, 1, 0, 0, 0, 972, 974, 1, 0, 0, 0, 973, 971, 1, 0, 0, 0, 974, 975, 5, 17, 0, 0, 975, 155, 1, 0, 0, 0, 976, 994, 3, 194, 97, 0, 977, 994, 3, 154, 77, 0, 978, 994, 3, 158, 79, 0, 979, 994, 3, 164, 82, 0, 980, 994, 3, 166, 83, 0, 981, 994, 3, 172, 86, 0, 982, 994, 3, 174, 87, 0, 983, 994, 3, 176, 88, 0, 984, 994, 3, 180, 90, 0, 985, 994, 3, 184, 92, 0, 986, 994, 3, 186, 93, 0, 987, 994, 5, 109, 0, 0, 988, 994, 5, 113, 0, 0, 989, 994, 5, 114, 0, 0, 990, 994, 3, 192, 96, 0, 991, 994, 3, 200, 100, 0, 992, 994, 3, 196, 98, 0, 993, 976, 1, 0, 0, 0, 993, 977, 1, 0, 0, 0, 993, 978, 1, 0, 0, 0, 993, 979, 1, 0, 0, 0, 993, 980, 1, 0, 0, 0, 993, 981, 1, 0, 0, 0, 993, 982, 1, 0, 0, 0, 993, 983, 1, 0, 0, 0, 993, 984, 1, 0, 0, 0, 993, 985, 1, 0, 0, 0, 993, 986, 1, 0, 0, 0, 993, 987, 1, 0, 0, 0, 993, 988, 1, 0, 0, 0, 993, 989, 1, 0, 0, 0, 993, 990, 1, 0, 0, 0, 993, 991, 1, 0, 0, 0, 993, 992, 1, 0, 0, 0, 994, 157, 1, 0, 0, 0, 995, 999, 3, 162, 81, 0, 996, 999, 3, 188, 94, 0, 997, 999, 3, 160, 80, 0, 998, 995, 1, 0, 0, 0, 998, 996, 1, 0, 0, 0, 998, 997, 1, 0, 0, 0, 999, 159, 1, 0, 0, 0, 1000, 1001, 3, 194, 97, 0, 1001, 1002, 5, 45, 0, 0, 1002, 1003, 3, 194, 97, 0, 1003, 161, 1, 0, 0, 0, 1004, 1009, 5, 59, 0, 0, 1005, 1009, 5, 44, 0, 0, 1006, 1009, 5, 66, 0, 0, 1007, 1009, 3, 194, 97, 0, 1008, 1004, 1, 0, 0, 0, 1008, 1005, 1, 0, 0, 0, 1008, 1006, 1, 0, 0, 0, 1008, 1007, 1, 0, 0, 0, 1009, 1022, 1, 0, 0, 0, 1010, 1012, 5, 23, 0, 0, 1011, 1013, 3, 158, 79, 0, 1012, 1011, 1, 0, 0, 0, 1012, 1013, 1, 0, 0, 0, 1013, 1018, 1, 0, 0, 0, 1014, 1015, 5, 16, 0, 0, 1015, 1017, 3, 158, 79, 0, 1016, 1014, 1, 0, 0, 0, 1017, 1020, 1, 0, 0, 0, 1018, 1016, 1, 0, 0, 0, 1018, 1019, 1, 0, 0, 0, 1019, 1021, 1, 0, 0, 0, 1020, 1018, 1, 0, 0, 0, 1021, 1023, 5, 24, 0, 0, 1022, 1010, 1, 0, 0, 0, 1022, 1023, 1, 0, 0, 0, 1023, 163, 1, 0, 0, 0, 1024, 1025, 5, 88, 0, 0, 1025, 1028, 3, 168, 84, 0, 1026, 1027, 5, 89, 0, 0, 1027, 1029, 3, 158, 79, 0, 1028, 1026, 1, 0, 0, 0, 1028, 1029, 1, 0, 0, 0, 1029, 165, 1, 0, 0, 0, 1030, 1031, 3, 168, 84, 0, 1031, 1032, 5, 89, 0, 0, 1032, 1033, 3, 158, 79, 0, 1033, 167, 1, 0, 0, 0, 1034, 1042, 3, 194, 97, 0, 1035, 1042, 3, 160, 80, 0, 1036, 1042, 3, 170, 85, 0, 1037, 1038, 5, 23, 0, 0, 1038, 1039, 3, 170, 85, 0, 1039, 1040, 5, 24, 0, 0, 1040, 1042, 1, 0, 0, 0, 1041, 1034, 1, 0, 0, 0, 1041, 1035, 1, 0, 0, 0, 1041, 1036, 1, 0, 0, 0, 1041, 1037, 1, 0, 0, 0, 1042, 169, 1, 0, 0, 0, 1043, 1048, 3, 194, 97, 0, 1044, 1045, 5, 16, 0, 0, 1045, 1047, 3, 194, 97, 0, 1046, 1044, 1, 0, 0, 0, 1047, 1050, 1, 0, 0, 0, 1048, 1046, 1, 0, 0, 0, 1048, 1049, 1, 0, 0, 0, 1049, 171, 1, 0, 0, 0, 1050, 1048, 1, 0, 0, 0, 1051, 1052, 3, 158, 79, 0, 1052, 1053, 5, 90, 0, 0, 1053, 1054, 3, 194, 97, 0, 1054, 173, 1, 0, 0, 0, 1055, 1056, 3, 194, 97, 0, 1056, 1057, 5, 70, 0, 0, 1057, 175, 1, 0, 0, 0, 1058, 1059, 5, 91, 0, 0, 1059, 1063, 3, 158, 79, 0, 1060, 1062, 3, 178, 89, 0, 1061, 1060, 1, 0, 0, 0, 1062, 1065, 1, 0, 0, 0, 1063, 1061, 1, 0, 0, 0, 1063, 1064, 1, 0, 0, 0, 1064, 177, 1, 0, 0, 0, 1065, 1063, 1, 0, 0, 0, 1066, 1067, 5, 92, 0, 0, 1067, 1068, 3, 188, 94, 0, 1068, 1069, 3, 154, 77, 0, 1069, 1073, 1, 0, 0, 0, 1070, 1071, 5, 93, 0, 0, 1071, 1073, 3, 154, 77, 0, 1072, 1066, 1, 0, 0, 0, 1072, 1070, 1, 0, 0, 0, 1073, 179, 1, 0, 0, 0, 1074, 1075, 5, 38, 0, 0, 1075, 1076, 3, 194, 97, 0, 1076, 1078, 5, 23, 0, 0, 1077, 1079, 3, 170, 85, 0, 1078, 1077, 1, 0, 0, 0, 1078, 1079, 1, 0, 0, 0, 1079, 1080, 1, 0, 0, 0, 1080, 1082, 5, 24, 0, 0, 1081, 1083, 3, 182, 91, 0, 1082, 1081, 1, 0, 0, 0, 1082, 1083, 1, 0, 0, 0, 1083, 1084, 1, 0, 0, 0, 1084, 1085, 3, 154, 77, 0, 1085, 181, 1, 0, 0, 0, 1086, 1087, 5, 94, 0, 0, 1087, 1088, 3, 170, 85, 0, 1088, 183, 1, 0, 0, 0, 1089, 1092, 5, 27, 0, 0, 1090, 1093, 3, 154, 77, 0, 1091, 1093, 3, 158, 79, 0, 1092, 1090, 1, 0, 0, 0, 1092, 1091, 1, 0, 0, 0, 1093, 1094, 1, 0, 0, 0, 1094, 1097, 3, 158, 79, 0, 1095, 1098, 3, 154, 77, 0, 1096, 1098, 3, 158, 79, 0, 1097, 1095, 1, 0, 0, 0, 1097, 1096, 1, 0, 0, 0, 1098, 1099, 1, 0, 0, 0, 1099, 1100, 3, 154, 77, 0, 1100, 185, 1, 0, 0, 0, 1101, 1102, 5, 51, 0, 0, 1102, 1103, 3, 158, 79, 0, 1103, 1104, 3, 154, 77, 0, 1104, 187, 1, 0, 0, 0, 1105, 1111, 3, 200, 100, 0, 1106, 1111, 5, 103, 0, 0, 1107, 1111, 5, 104, 0, 0, 1108, 1111, 3, 196, 98, 0, 1109, 1111, 5, 102, 0, 0, 1110, 1105, 1, 0, 0, 0, 1110, 1106, 1, 0, 0, 0, 1110, 1107, 1, 0, 0, 0, 1110, 1108, 1, 0, 0, 0, 1110, 1109, 1, 0, 0, 0, 1111, 189, 1, 0, 0, 0, 1112, 1114, 5, 23, 0, 0, 1113, 1115, 3, 140, 70, 0, 1114, 1113, 1, 0, 0, 0, 1114, 1115, 1, 0, 0, 0, 1115, 1122, 1, 0, 0, 0, 1116, 1118, 5, 16, 0, 0, 1117, 1119, 3, 140, 70, 0, 1118, 1117, 1, 0, 0, 0, 1118, 1119, 1, 0, 0, 0, 1119, 1121, 1, 0, 0, 0, 1120, 1116, 1, 0, 0, 0, 1121, 1124, 1, 0, 0, 0, 1122, 1120, 1, 0, 0, 0, 1122, 1123, 1, 0, 0, 0, 1123, 1125, 1, 0, 0, 0, 1124, 1122, 1, 0, 0, 0, 1125, 1139, 5, 24, 0, 0, 1126, 1135, 5, 42, 0, 0, 1127, 1132, 3, 140, 70, 0, 1128, 1129, 5, 16, 0, 0, 1129, 1131, 3, 140, 70, 0, 1130, 1128, 1, 0, 0, 0, 1131, 1134, 1, 0, 0, 0, 1132, 1130, 1, 0, 0, 0, 1132, 1133, 1, 0, 0, 0, 1133, 1136, 1, 0, 0, 0, 1134, 1132, 1, 0, 0, 0, 1135, 1127, 1, 0, 0, 0, 1135, 1136, 1, 0, 0, 0, 1136, 1137, 1, 0, 0, 0, 1137, 1139, 5, 43, 0, 0, 1138, 1112, 1, 0, 0, 0, 1138, 1126, 1, 0, 0, 0, 1139, 191, 1, 0, 0, 0, 1140, 1142, 7, 13, 0, 0, 1141, 1143, 5, 105, 0, 0, 1142, 1141, 1, 0, 0, 0, 1142, 1143, 1, 0, 0, 0, 1143, 193, 1, 0, 0, 0, 1144, 1145, 7, 14, 0, 0, 1145, 195, 1, 0, 0, 0, 1146, 1148, 5, 106, 0, 0, 1147, 1146, 1, 0, 0, 0, 1148, 1149, 1, 0, 0, 0, 1149, 1147, 1, 0, 0, 0, 1149, 1150, 1, 0, 0, 0, 1150, 197, 1, 0, 0, 0, 1151, 1163, 5, 96, 0, 0, 1152, 1153, 5, 23, 0, 0, 1153, 1158, 3, 78, 39, 0, 1154, 1155, 5, 16, 0, 0, 1155, 1157, 3, 78, 39, 0, 1156, 1154, 1, 0, 0, 0, 1157, 1160, 1, 0, 0, 0, 1158, 1156, 1, 0, 0, 0, 1158, 1159, 1, 0, 0, 0, 1159, 1161, 1, 0, 0, 0, 1160, 1158, 1, 0, 0, 0, 1161, 1162, 5, 24, 0, 0, 1162, 1164, 1, 0, 0, 0, 1163, 1152, 1, 0, 0, 0, 1163, 1164, 1, 0, 0, 0, 1164, 199, 1, 0, 0, 0, 1165, 1167, 5, 130, 0, 0, 1166, 1165, 1, 0, 0, 0, 1167, 1168, 1, 0, 0, 0, 1168, 1166, 1, 0, 0, 0, 1168, 1169, 1, 0, 0, 0, 1169, 201, 1, 0, 0, 0, 130, 213, 215, 230, 234, 239, 245, 249, 252, 257, 263, 270, 274, 287, 295, 300, 310, 313, 319, 327, 330, 341, 351, 353, 359, 386, 389, 400, 405, 410, 424, 427, 434, 438, 440, 445, 450, 453, 459, 463, 467, 472, 485, 487, 494, 504, 510, 521, 524, 530, 533, 541, 544, 550, 553, 561, 564, 570, 574, 585, 590, 595, 603, 608, 614, 619, 632, 634, 639, 649, 669, 681, 686, 692, 696, 699, 711, 720, 724, 727, 734, 740, 762, 784, 788, 793, 797, 801, 806, 811, 815, 839, 893, 897, 913, 915, 927, 934, 942, 946, 954, 958, 960, 971, 993, 998, 1008, 1012, 1018, 1022, 1028, 1041, 1048, 1063, 1072, 1078, 1082, 1092, 1097, 1110, 1114, 1118, 1122, 1132, 1135, 1138, 1142, 1149, 1158, 1163, 1168] \ No newline at end of file diff --git a/src/antlr/Solidity.tokens b/src/antlr/Solidity.tokens index 4064f6f..a5b5d2a 100644 --- a/src/antlr/Solidity.tokens +++ b/src/antlr/Solidity.tokens @@ -108,29 +108,30 @@ ReservedKeyword=107 AnonymousKeyword=108 BreakKeyword=109 ConstantKeyword=110 -ImmutableKeyword=111 -ContinueKeyword=112 -LeaveKeyword=113 -ExternalKeyword=114 -IndexedKeyword=115 -InternalKeyword=116 -PayableKeyword=117 -PrivateKeyword=118 -PublicKeyword=119 -VirtualKeyword=120 -PureKeyword=121 -TypeKeyword=122 -ViewKeyword=123 -GlobalKeyword=124 -ConstructorKeyword=125 -FallbackKeyword=126 -ReceiveKeyword=127 -Identifier=128 -StringLiteralFragment=129 -VersionLiteral=130 -WS=131 -COMMENT=132 -LINE_COMMENT=133 +TransientKeyword=111 +ImmutableKeyword=112 +ContinueKeyword=113 +LeaveKeyword=114 +ExternalKeyword=115 +IndexedKeyword=116 +InternalKeyword=117 +PayableKeyword=118 +PrivateKeyword=119 +PublicKeyword=120 +VirtualKeyword=121 +PureKeyword=122 +TypeKeyword=123 +ViewKeyword=124 +GlobalKeyword=125 +ConstructorKeyword=126 +FallbackKeyword=127 +ReceiveKeyword=128 +Identifier=129 +StringLiteralFragment=130 +VersionLiteral=131 +WS=132 +COMMENT=133 +LINE_COMMENT=134 'pragma'=1 ';'=2 '*'=3 @@ -230,20 +231,21 @@ LINE_COMMENT=133 'anonymous'=108 'break'=109 'constant'=110 -'immutable'=111 -'continue'=112 -'leave'=113 -'external'=114 -'indexed'=115 -'internal'=116 -'payable'=117 -'private'=118 -'public'=119 -'virtual'=120 -'pure'=121 -'type'=122 -'view'=123 -'global'=124 -'constructor'=125 -'fallback'=126 -'receive'=127 +'transient'=111 +'immutable'=112 +'continue'=113 +'leave'=114 +'external'=115 +'indexed'=116 +'internal'=117 +'payable'=118 +'private'=119 +'public'=120 +'virtual'=121 +'pure'=122 +'type'=123 +'view'=124 +'global'=125 +'constructor'=126 +'fallback'=127 +'receive'=128 diff --git a/src/antlr/SolidityLexer.interp b/src/antlr/SolidityLexer.interp index aa12990..f06c059 100644 --- a/src/antlr/SolidityLexer.interp +++ b/src/antlr/SolidityLexer.interp @@ -110,6 +110,7 @@ null 'anonymous' 'break' 'constant' +'transient' 'immutable' 'continue' 'leave' @@ -246,6 +247,7 @@ ReservedKeyword AnonymousKeyword BreakKeyword ConstantKeyword +TransientKeyword ImmutableKeyword ContinueKeyword LeaveKeyword @@ -386,6 +388,7 @@ ReservedKeyword AnonymousKeyword BreakKeyword ConstantKeyword +TransientKeyword ImmutableKeyword ContinueKeyword LeaveKeyword @@ -422,4 +425,4 @@ mode names: DEFAULT_MODE atn: -[4, 0, 133, 1336, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 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, 1, 18, 1, 19, 1, 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, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 28, 1, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 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, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 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, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 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, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 3, 96, 722, 8, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 3, 97, 730, 8, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 3, 98, 739, 8, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 4, 99, 750, 8, 99, 11, 99, 12, 99, 751, 3, 99, 754, 8, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 4, 100, 766, 8, 100, 11, 100, 12, 100, 767, 3, 100, 770, 8, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 3, 101, 855, 8, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 3, 102, 862, 8, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 3, 103, 873, 8, 103, 1, 104, 1, 104, 3, 104, 877, 8, 104, 1, 104, 1, 104, 3, 104, 881, 8, 104, 1, 104, 1, 104, 3, 104, 885, 8, 104, 1, 104, 3, 104, 888, 8, 104, 1, 105, 1, 105, 3, 105, 892, 8, 105, 1, 105, 5, 105, 895, 8, 105, 10, 105, 12, 105, 898, 9, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 3, 107, 906, 8, 107, 1, 107, 5, 107, 909, 8, 107, 10, 107, 12, 107, 912, 9, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 3, 108, 970, 8, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 3, 109, 978, 8, 109, 1, 109, 1, 109, 1, 109, 3, 109, 983, 8, 109, 1, 109, 3, 109, 986, 8, 109, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 3, 111, 1078, 8, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 5, 132, 1240, 8, 132, 10, 132, 12, 132, 1243, 9, 132, 1, 133, 1, 133, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 3, 135, 1256, 8, 135, 1, 135, 1, 135, 5, 135, 1260, 8, 135, 10, 135, 12, 135, 1263, 9, 135, 1, 135, 1, 135, 1, 135, 5, 135, 1268, 8, 135, 10, 135, 12, 135, 1271, 9, 135, 1, 135, 3, 135, 1274, 8, 135, 1, 136, 1, 136, 1, 136, 3, 136, 1279, 8, 136, 1, 137, 1, 137, 1, 137, 3, 137, 1284, 8, 137, 1, 138, 4, 138, 1287, 8, 138, 11, 138, 12, 138, 1288, 1, 138, 1, 138, 4, 138, 1293, 8, 138, 11, 138, 12, 138, 1294, 1, 138, 1, 138, 4, 138, 1299, 8, 138, 11, 138, 12, 138, 1300, 3, 138, 1303, 8, 138, 1, 139, 4, 139, 1306, 8, 139, 11, 139, 12, 139, 1307, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 5, 140, 1316, 8, 140, 10, 140, 12, 140, 1319, 9, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 5, 141, 1330, 8, 141, 10, 141, 12, 141, 1333, 9, 141, 1, 141, 1, 141, 1, 1317, 0, 142, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 0, 205, 0, 207, 102, 209, 103, 211, 0, 213, 104, 215, 0, 217, 105, 219, 106, 221, 0, 223, 107, 225, 108, 227, 109, 229, 110, 231, 111, 233, 112, 235, 113, 237, 114, 239, 115, 241, 116, 243, 117, 245, 118, 247, 119, 249, 120, 251, 121, 253, 122, 255, 123, 257, 124, 259, 125, 261, 126, 263, 127, 265, 128, 267, 0, 269, 0, 271, 129, 273, 0, 275, 0, 277, 130, 279, 131, 281, 132, 283, 133, 1, 0, 13, 1, 0, 48, 57, 1, 0, 49, 57, 1, 0, 49, 50, 1, 0, 48, 50, 2, 0, 69, 69, 101, 101, 2, 0, 88, 88, 120, 120, 3, 0, 48, 57, 65, 70, 97, 102, 4, 0, 36, 36, 65, 90, 95, 95, 97, 122, 5, 0, 36, 36, 48, 57, 65, 90, 95, 95, 97, 122, 4, 0, 10, 10, 13, 13, 34, 34, 92, 92, 4, 0, 10, 10, 13, 13, 39, 39, 92, 92, 3, 0, 9, 10, 12, 13, 32, 32, 2, 0, 10, 10, 13, 13, 1418, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 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, 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, 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, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 1, 285, 1, 0, 0, 0, 3, 292, 1, 0, 0, 0, 5, 294, 1, 0, 0, 0, 7, 296, 1, 0, 0, 0, 9, 299, 1, 0, 0, 0, 11, 301, 1, 0, 0, 0, 13, 303, 1, 0, 0, 0, 15, 306, 1, 0, 0, 0, 17, 308, 1, 0, 0, 0, 19, 310, 1, 0, 0, 0, 21, 313, 1, 0, 0, 0, 23, 315, 1, 0, 0, 0, 25, 318, 1, 0, 0, 0, 27, 325, 1, 0, 0, 0, 29, 330, 1, 0, 0, 0, 31, 332, 1, 0, 0, 0, 33, 334, 1, 0, 0, 0, 35, 336, 1, 0, 0, 0, 37, 345, 1, 0, 0, 0, 39, 354, 1, 0, 0, 0, 41, 364, 1, 0, 0, 0, 43, 372, 1, 0, 0, 0, 45, 375, 1, 0, 0, 0, 47, 377, 1, 0, 0, 0, 49, 379, 1, 0, 0, 0, 51, 385, 1, 0, 0, 0, 53, 391, 1, 0, 0, 0, 55, 395, 1, 0, 0, 0, 57, 397, 1, 0, 0, 0, 59, 399, 1, 0, 0, 0, 61, 401, 1, 0, 0, 0, 63, 403, 1, 0, 0, 0, 65, 405, 1, 0, 0, 0, 67, 407, 1, 0, 0, 0, 69, 410, 1, 0, 0, 0, 71, 413, 1, 0, 0, 0, 73, 420, 1, 0, 0, 0, 75, 429, 1, 0, 0, 0, 77, 438, 1, 0, 0, 0, 79, 446, 1, 0, 0, 0, 81, 452, 1, 0, 0, 0, 83, 457, 1, 0, 0, 0, 85, 459, 1, 0, 0, 0, 87, 461, 1, 0, 0, 0, 89, 469, 1, 0, 0, 0, 91, 471, 1, 0, 0, 0, 93, 479, 1, 0, 0, 0, 95, 482, 1, 0, 0, 0, 97, 489, 1, 0, 0, 0, 99, 497, 1, 0, 0, 0, 101, 506, 1, 0, 0, 0, 103, 509, 1, 0, 0, 0, 105, 514, 1, 0, 0, 0, 107, 518, 1, 0, 0, 0, 109, 524, 1, 0, 0, 0, 111, 530, 1, 0, 0, 0, 113, 540, 1, 0, 0, 0, 115, 549, 1, 0, 0, 0, 117, 552, 1, 0, 0, 0, 119, 559, 1, 0, 0, 0, 121, 565, 1, 0, 0, 0, 123, 570, 1, 0, 0, 0, 125, 577, 1, 0, 0, 0, 127, 581, 1, 0, 0, 0, 129, 586, 1, 0, 0, 0, 131, 593, 1, 0, 0, 0, 133, 598, 1, 0, 0, 0, 135, 601, 1, 0, 0, 0, 137, 604, 1, 0, 0, 0, 139, 608, 1, 0, 0, 0, 141, 610, 1, 0, 0, 0, 143, 617, 1, 0, 0, 0, 145, 619, 1, 0, 0, 0, 147, 622, 1, 0, 0, 0, 149, 625, 1, 0, 0, 0, 151, 628, 1, 0, 0, 0, 153, 631, 1, 0, 0, 0, 155, 633, 1, 0, 0, 0, 157, 636, 1, 0, 0, 0, 159, 639, 1, 0, 0, 0, 161, 642, 1, 0, 0, 0, 163, 646, 1, 0, 0, 0, 165, 650, 1, 0, 0, 0, 167, 653, 1, 0, 0, 0, 169, 656, 1, 0, 0, 0, 171, 659, 1, 0, 0, 0, 173, 662, 1, 0, 0, 0, 175, 665, 1, 0, 0, 0, 177, 669, 1, 0, 0, 0, 179, 672, 1, 0, 0, 0, 181, 675, 1, 0, 0, 0, 183, 682, 1, 0, 0, 0, 185, 687, 1, 0, 0, 0, 187, 695, 1, 0, 0, 0, 189, 698, 1, 0, 0, 0, 191, 707, 1, 0, 0, 0, 193, 716, 1, 0, 0, 0, 195, 723, 1, 0, 0, 0, 197, 731, 1, 0, 0, 0, 199, 740, 1, 0, 0, 0, 201, 755, 1, 0, 0, 0, 203, 854, 1, 0, 0, 0, 205, 861, 1, 0, 0, 0, 207, 872, 1, 0, 0, 0, 209, 880, 1, 0, 0, 0, 211, 889, 1, 0, 0, 0, 213, 899, 1, 0, 0, 0, 215, 903, 1, 0, 0, 0, 217, 969, 1, 0, 0, 0, 219, 971, 1, 0, 0, 0, 221, 987, 1, 0, 0, 0, 223, 1077, 1, 0, 0, 0, 225, 1079, 1, 0, 0, 0, 227, 1089, 1, 0, 0, 0, 229, 1095, 1, 0, 0, 0, 231, 1104, 1, 0, 0, 0, 233, 1114, 1, 0, 0, 0, 235, 1123, 1, 0, 0, 0, 237, 1129, 1, 0, 0, 0, 239, 1138, 1, 0, 0, 0, 241, 1146, 1, 0, 0, 0, 243, 1155, 1, 0, 0, 0, 245, 1163, 1, 0, 0, 0, 247, 1171, 1, 0, 0, 0, 249, 1178, 1, 0, 0, 0, 251, 1186, 1, 0, 0, 0, 253, 1191, 1, 0, 0, 0, 255, 1196, 1, 0, 0, 0, 257, 1201, 1, 0, 0, 0, 259, 1208, 1, 0, 0, 0, 261, 1220, 1, 0, 0, 0, 263, 1229, 1, 0, 0, 0, 265, 1237, 1, 0, 0, 0, 267, 1244, 1, 0, 0, 0, 269, 1246, 1, 0, 0, 0, 271, 1255, 1, 0, 0, 0, 273, 1278, 1, 0, 0, 0, 275, 1283, 1, 0, 0, 0, 277, 1286, 1, 0, 0, 0, 279, 1305, 1, 0, 0, 0, 281, 1311, 1, 0, 0, 0, 283, 1325, 1, 0, 0, 0, 285, 286, 5, 112, 0, 0, 286, 287, 5, 114, 0, 0, 287, 288, 5, 97, 0, 0, 288, 289, 5, 103, 0, 0, 289, 290, 5, 109, 0, 0, 290, 291, 5, 97, 0, 0, 291, 2, 1, 0, 0, 0, 292, 293, 5, 59, 0, 0, 293, 4, 1, 0, 0, 0, 294, 295, 5, 42, 0, 0, 295, 6, 1, 0, 0, 0, 296, 297, 5, 124, 0, 0, 297, 298, 5, 124, 0, 0, 298, 8, 1, 0, 0, 0, 299, 300, 5, 94, 0, 0, 300, 10, 1, 0, 0, 0, 301, 302, 5, 126, 0, 0, 302, 12, 1, 0, 0, 0, 303, 304, 5, 62, 0, 0, 304, 305, 5, 61, 0, 0, 305, 14, 1, 0, 0, 0, 306, 307, 5, 62, 0, 0, 307, 16, 1, 0, 0, 0, 308, 309, 5, 60, 0, 0, 309, 18, 1, 0, 0, 0, 310, 311, 5, 60, 0, 0, 311, 312, 5, 61, 0, 0, 312, 20, 1, 0, 0, 0, 313, 314, 5, 61, 0, 0, 314, 22, 1, 0, 0, 0, 315, 316, 5, 97, 0, 0, 316, 317, 5, 115, 0, 0, 317, 24, 1, 0, 0, 0, 318, 319, 5, 105, 0, 0, 319, 320, 5, 109, 0, 0, 320, 321, 5, 112, 0, 0, 321, 322, 5, 111, 0, 0, 322, 323, 5, 114, 0, 0, 323, 324, 5, 116, 0, 0, 324, 26, 1, 0, 0, 0, 325, 326, 5, 102, 0, 0, 326, 327, 5, 114, 0, 0, 327, 328, 5, 111, 0, 0, 328, 329, 5, 109, 0, 0, 329, 28, 1, 0, 0, 0, 330, 331, 5, 123, 0, 0, 331, 30, 1, 0, 0, 0, 332, 333, 5, 44, 0, 0, 333, 32, 1, 0, 0, 0, 334, 335, 5, 125, 0, 0, 335, 34, 1, 0, 0, 0, 336, 337, 5, 97, 0, 0, 337, 338, 5, 98, 0, 0, 338, 339, 5, 115, 0, 0, 339, 340, 5, 116, 0, 0, 340, 341, 5, 114, 0, 0, 341, 342, 5, 97, 0, 0, 342, 343, 5, 99, 0, 0, 343, 344, 5, 116, 0, 0, 344, 36, 1, 0, 0, 0, 345, 346, 5, 99, 0, 0, 346, 347, 5, 111, 0, 0, 347, 348, 5, 110, 0, 0, 348, 349, 5, 116, 0, 0, 349, 350, 5, 114, 0, 0, 350, 351, 5, 97, 0, 0, 351, 352, 5, 99, 0, 0, 352, 353, 5, 116, 0, 0, 353, 38, 1, 0, 0, 0, 354, 355, 5, 105, 0, 0, 355, 356, 5, 110, 0, 0, 356, 357, 5, 116, 0, 0, 357, 358, 5, 101, 0, 0, 358, 359, 5, 114, 0, 0, 359, 360, 5, 102, 0, 0, 360, 361, 5, 97, 0, 0, 361, 362, 5, 99, 0, 0, 362, 363, 5, 101, 0, 0, 363, 40, 1, 0, 0, 0, 364, 365, 5, 108, 0, 0, 365, 366, 5, 105, 0, 0, 366, 367, 5, 98, 0, 0, 367, 368, 5, 114, 0, 0, 368, 369, 5, 97, 0, 0, 369, 370, 5, 114, 0, 0, 370, 371, 5, 121, 0, 0, 371, 42, 1, 0, 0, 0, 372, 373, 5, 105, 0, 0, 373, 374, 5, 115, 0, 0, 374, 44, 1, 0, 0, 0, 375, 376, 5, 40, 0, 0, 376, 46, 1, 0, 0, 0, 377, 378, 5, 41, 0, 0, 378, 48, 1, 0, 0, 0, 379, 380, 5, 101, 0, 0, 380, 381, 5, 114, 0, 0, 381, 382, 5, 114, 0, 0, 382, 383, 5, 111, 0, 0, 383, 384, 5, 114, 0, 0, 384, 50, 1, 0, 0, 0, 385, 386, 5, 117, 0, 0, 386, 387, 5, 115, 0, 0, 387, 388, 5, 105, 0, 0, 388, 389, 5, 110, 0, 0, 389, 390, 5, 103, 0, 0, 390, 52, 1, 0, 0, 0, 391, 392, 5, 102, 0, 0, 392, 393, 5, 111, 0, 0, 393, 394, 5, 114, 0, 0, 394, 54, 1, 0, 0, 0, 395, 396, 5, 124, 0, 0, 396, 56, 1, 0, 0, 0, 397, 398, 5, 38, 0, 0, 398, 58, 1, 0, 0, 0, 399, 400, 5, 43, 0, 0, 400, 60, 1, 0, 0, 0, 401, 402, 5, 45, 0, 0, 402, 62, 1, 0, 0, 0, 403, 404, 5, 47, 0, 0, 404, 64, 1, 0, 0, 0, 405, 406, 5, 37, 0, 0, 406, 66, 1, 0, 0, 0, 407, 408, 5, 61, 0, 0, 408, 409, 5, 61, 0, 0, 409, 68, 1, 0, 0, 0, 410, 411, 5, 33, 0, 0, 411, 412, 5, 61, 0, 0, 412, 70, 1, 0, 0, 0, 413, 414, 5, 115, 0, 0, 414, 415, 5, 116, 0, 0, 415, 416, 5, 114, 0, 0, 416, 417, 5, 117, 0, 0, 417, 418, 5, 99, 0, 0, 418, 419, 5, 116, 0, 0, 419, 72, 1, 0, 0, 0, 420, 421, 5, 109, 0, 0, 421, 422, 5, 111, 0, 0, 422, 423, 5, 100, 0, 0, 423, 424, 5, 105, 0, 0, 424, 425, 5, 102, 0, 0, 425, 426, 5, 105, 0, 0, 426, 427, 5, 101, 0, 0, 427, 428, 5, 114, 0, 0, 428, 74, 1, 0, 0, 0, 429, 430, 5, 102, 0, 0, 430, 431, 5, 117, 0, 0, 431, 432, 5, 110, 0, 0, 432, 433, 5, 99, 0, 0, 433, 434, 5, 116, 0, 0, 434, 435, 5, 105, 0, 0, 435, 436, 5, 111, 0, 0, 436, 437, 5, 110, 0, 0, 437, 76, 1, 0, 0, 0, 438, 439, 5, 114, 0, 0, 439, 440, 5, 101, 0, 0, 440, 441, 5, 116, 0, 0, 441, 442, 5, 117, 0, 0, 442, 443, 5, 114, 0, 0, 443, 444, 5, 110, 0, 0, 444, 445, 5, 115, 0, 0, 445, 78, 1, 0, 0, 0, 446, 447, 5, 101, 0, 0, 447, 448, 5, 118, 0, 0, 448, 449, 5, 101, 0, 0, 449, 450, 5, 110, 0, 0, 450, 451, 5, 116, 0, 0, 451, 80, 1, 0, 0, 0, 452, 453, 5, 101, 0, 0, 453, 454, 5, 110, 0, 0, 454, 455, 5, 117, 0, 0, 455, 456, 5, 109, 0, 0, 456, 82, 1, 0, 0, 0, 457, 458, 5, 91, 0, 0, 458, 84, 1, 0, 0, 0, 459, 460, 5, 93, 0, 0, 460, 86, 1, 0, 0, 0, 461, 462, 5, 97, 0, 0, 462, 463, 5, 100, 0, 0, 463, 464, 5, 100, 0, 0, 464, 465, 5, 114, 0, 0, 465, 466, 5, 101, 0, 0, 466, 467, 5, 115, 0, 0, 467, 468, 5, 115, 0, 0, 468, 88, 1, 0, 0, 0, 469, 470, 5, 46, 0, 0, 470, 90, 1, 0, 0, 0, 471, 472, 5, 109, 0, 0, 472, 473, 5, 97, 0, 0, 473, 474, 5, 112, 0, 0, 474, 475, 5, 112, 0, 0, 475, 476, 5, 105, 0, 0, 476, 477, 5, 110, 0, 0, 477, 478, 5, 103, 0, 0, 478, 92, 1, 0, 0, 0, 479, 480, 5, 61, 0, 0, 480, 481, 5, 62, 0, 0, 481, 94, 1, 0, 0, 0, 482, 483, 5, 109, 0, 0, 483, 484, 5, 101, 0, 0, 484, 485, 5, 109, 0, 0, 485, 486, 5, 111, 0, 0, 486, 487, 5, 114, 0, 0, 487, 488, 5, 121, 0, 0, 488, 96, 1, 0, 0, 0, 489, 490, 5, 115, 0, 0, 490, 491, 5, 116, 0, 0, 491, 492, 5, 111, 0, 0, 492, 493, 5, 114, 0, 0, 493, 494, 5, 97, 0, 0, 494, 495, 5, 103, 0, 0, 495, 496, 5, 101, 0, 0, 496, 98, 1, 0, 0, 0, 497, 498, 5, 99, 0, 0, 498, 499, 5, 97, 0, 0, 499, 500, 5, 108, 0, 0, 500, 501, 5, 108, 0, 0, 501, 502, 5, 100, 0, 0, 502, 503, 5, 97, 0, 0, 503, 504, 5, 116, 0, 0, 504, 505, 5, 97, 0, 0, 505, 100, 1, 0, 0, 0, 506, 507, 5, 105, 0, 0, 507, 508, 5, 102, 0, 0, 508, 102, 1, 0, 0, 0, 509, 510, 5, 101, 0, 0, 510, 511, 5, 108, 0, 0, 511, 512, 5, 115, 0, 0, 512, 513, 5, 101, 0, 0, 513, 104, 1, 0, 0, 0, 514, 515, 5, 116, 0, 0, 515, 516, 5, 114, 0, 0, 516, 517, 5, 121, 0, 0, 517, 106, 1, 0, 0, 0, 518, 519, 5, 99, 0, 0, 519, 520, 5, 97, 0, 0, 520, 521, 5, 116, 0, 0, 521, 522, 5, 99, 0, 0, 522, 523, 5, 104, 0, 0, 523, 108, 1, 0, 0, 0, 524, 525, 5, 119, 0, 0, 525, 526, 5, 104, 0, 0, 526, 527, 5, 105, 0, 0, 527, 528, 5, 108, 0, 0, 528, 529, 5, 101, 0, 0, 529, 110, 1, 0, 0, 0, 530, 531, 5, 117, 0, 0, 531, 532, 5, 110, 0, 0, 532, 533, 5, 99, 0, 0, 533, 534, 5, 104, 0, 0, 534, 535, 5, 101, 0, 0, 535, 536, 5, 99, 0, 0, 536, 537, 5, 107, 0, 0, 537, 538, 5, 101, 0, 0, 538, 539, 5, 100, 0, 0, 539, 112, 1, 0, 0, 0, 540, 541, 5, 97, 0, 0, 541, 542, 5, 115, 0, 0, 542, 543, 5, 115, 0, 0, 543, 544, 5, 101, 0, 0, 544, 545, 5, 109, 0, 0, 545, 546, 5, 98, 0, 0, 546, 547, 5, 108, 0, 0, 547, 548, 5, 121, 0, 0, 548, 114, 1, 0, 0, 0, 549, 550, 5, 100, 0, 0, 550, 551, 5, 111, 0, 0, 551, 116, 1, 0, 0, 0, 552, 553, 5, 114, 0, 0, 553, 554, 5, 101, 0, 0, 554, 555, 5, 116, 0, 0, 555, 556, 5, 117, 0, 0, 556, 557, 5, 114, 0, 0, 557, 558, 5, 110, 0, 0, 558, 118, 1, 0, 0, 0, 559, 560, 5, 116, 0, 0, 560, 561, 5, 104, 0, 0, 561, 562, 5, 114, 0, 0, 562, 563, 5, 111, 0, 0, 563, 564, 5, 119, 0, 0, 564, 120, 1, 0, 0, 0, 565, 566, 5, 101, 0, 0, 566, 567, 5, 109, 0, 0, 567, 568, 5, 105, 0, 0, 568, 569, 5, 116, 0, 0, 569, 122, 1, 0, 0, 0, 570, 571, 5, 114, 0, 0, 571, 572, 5, 101, 0, 0, 572, 573, 5, 118, 0, 0, 573, 574, 5, 101, 0, 0, 574, 575, 5, 114, 0, 0, 575, 576, 5, 116, 0, 0, 576, 124, 1, 0, 0, 0, 577, 578, 5, 118, 0, 0, 578, 579, 5, 97, 0, 0, 579, 580, 5, 114, 0, 0, 580, 126, 1, 0, 0, 0, 581, 582, 5, 98, 0, 0, 582, 583, 5, 111, 0, 0, 583, 584, 5, 111, 0, 0, 584, 585, 5, 108, 0, 0, 585, 128, 1, 0, 0, 0, 586, 587, 5, 115, 0, 0, 587, 588, 5, 116, 0, 0, 588, 589, 5, 114, 0, 0, 589, 590, 5, 105, 0, 0, 590, 591, 5, 110, 0, 0, 591, 592, 5, 103, 0, 0, 592, 130, 1, 0, 0, 0, 593, 594, 5, 98, 0, 0, 594, 595, 5, 121, 0, 0, 595, 596, 5, 116, 0, 0, 596, 597, 5, 101, 0, 0, 597, 132, 1, 0, 0, 0, 598, 599, 5, 43, 0, 0, 599, 600, 5, 43, 0, 0, 600, 134, 1, 0, 0, 0, 601, 602, 5, 45, 0, 0, 602, 603, 5, 45, 0, 0, 603, 136, 1, 0, 0, 0, 604, 605, 5, 110, 0, 0, 605, 606, 5, 101, 0, 0, 606, 607, 5, 119, 0, 0, 607, 138, 1, 0, 0, 0, 608, 609, 5, 58, 0, 0, 609, 140, 1, 0, 0, 0, 610, 611, 5, 100, 0, 0, 611, 612, 5, 101, 0, 0, 612, 613, 5, 108, 0, 0, 613, 614, 5, 101, 0, 0, 614, 615, 5, 116, 0, 0, 615, 616, 5, 101, 0, 0, 616, 142, 1, 0, 0, 0, 617, 618, 5, 33, 0, 0, 618, 144, 1, 0, 0, 0, 619, 620, 5, 42, 0, 0, 620, 621, 5, 42, 0, 0, 621, 146, 1, 0, 0, 0, 622, 623, 5, 60, 0, 0, 623, 624, 5, 60, 0, 0, 624, 148, 1, 0, 0, 0, 625, 626, 5, 62, 0, 0, 626, 627, 5, 62, 0, 0, 627, 150, 1, 0, 0, 0, 628, 629, 5, 38, 0, 0, 629, 630, 5, 38, 0, 0, 630, 152, 1, 0, 0, 0, 631, 632, 5, 63, 0, 0, 632, 154, 1, 0, 0, 0, 633, 634, 5, 124, 0, 0, 634, 635, 5, 61, 0, 0, 635, 156, 1, 0, 0, 0, 636, 637, 5, 94, 0, 0, 637, 638, 5, 61, 0, 0, 638, 158, 1, 0, 0, 0, 639, 640, 5, 38, 0, 0, 640, 641, 5, 61, 0, 0, 641, 160, 1, 0, 0, 0, 642, 643, 5, 60, 0, 0, 643, 644, 5, 60, 0, 0, 644, 645, 5, 61, 0, 0, 645, 162, 1, 0, 0, 0, 646, 647, 5, 62, 0, 0, 647, 648, 5, 62, 0, 0, 648, 649, 5, 61, 0, 0, 649, 164, 1, 0, 0, 0, 650, 651, 5, 43, 0, 0, 651, 652, 5, 61, 0, 0, 652, 166, 1, 0, 0, 0, 653, 654, 5, 45, 0, 0, 654, 655, 5, 61, 0, 0, 655, 168, 1, 0, 0, 0, 656, 657, 5, 42, 0, 0, 657, 658, 5, 61, 0, 0, 658, 170, 1, 0, 0, 0, 659, 660, 5, 47, 0, 0, 660, 661, 5, 61, 0, 0, 661, 172, 1, 0, 0, 0, 662, 663, 5, 37, 0, 0, 663, 664, 5, 61, 0, 0, 664, 174, 1, 0, 0, 0, 665, 666, 5, 108, 0, 0, 666, 667, 5, 101, 0, 0, 667, 668, 5, 116, 0, 0, 668, 176, 1, 0, 0, 0, 669, 670, 5, 58, 0, 0, 670, 671, 5, 61, 0, 0, 671, 178, 1, 0, 0, 0, 672, 673, 5, 61, 0, 0, 673, 674, 5, 58, 0, 0, 674, 180, 1, 0, 0, 0, 675, 676, 5, 115, 0, 0, 676, 677, 5, 119, 0, 0, 677, 678, 5, 105, 0, 0, 678, 679, 5, 116, 0, 0, 679, 680, 5, 99, 0, 0, 680, 681, 5, 104, 0, 0, 681, 182, 1, 0, 0, 0, 682, 683, 5, 99, 0, 0, 683, 684, 5, 97, 0, 0, 684, 685, 5, 115, 0, 0, 685, 686, 5, 101, 0, 0, 686, 184, 1, 0, 0, 0, 687, 688, 5, 100, 0, 0, 688, 689, 5, 101, 0, 0, 689, 690, 5, 102, 0, 0, 690, 691, 5, 97, 0, 0, 691, 692, 5, 117, 0, 0, 692, 693, 5, 108, 0, 0, 693, 694, 5, 116, 0, 0, 694, 186, 1, 0, 0, 0, 695, 696, 5, 45, 0, 0, 696, 697, 5, 62, 0, 0, 697, 188, 1, 0, 0, 0, 698, 699, 5, 99, 0, 0, 699, 700, 5, 97, 0, 0, 700, 701, 5, 108, 0, 0, 701, 702, 5, 108, 0, 0, 702, 703, 5, 98, 0, 0, 703, 704, 5, 97, 0, 0, 704, 705, 5, 99, 0, 0, 705, 706, 5, 107, 0, 0, 706, 190, 1, 0, 0, 0, 707, 708, 5, 111, 0, 0, 708, 709, 5, 118, 0, 0, 709, 710, 5, 101, 0, 0, 710, 711, 5, 114, 0, 0, 711, 712, 5, 114, 0, 0, 712, 713, 5, 105, 0, 0, 713, 714, 5, 100, 0, 0, 714, 715, 5, 101, 0, 0, 715, 192, 1, 0, 0, 0, 716, 717, 5, 105, 0, 0, 717, 718, 5, 110, 0, 0, 718, 719, 5, 116, 0, 0, 719, 721, 1, 0, 0, 0, 720, 722, 3, 203, 101, 0, 721, 720, 1, 0, 0, 0, 721, 722, 1, 0, 0, 0, 722, 194, 1, 0, 0, 0, 723, 724, 5, 117, 0, 0, 724, 725, 5, 105, 0, 0, 725, 726, 5, 110, 0, 0, 726, 727, 5, 116, 0, 0, 727, 729, 1, 0, 0, 0, 728, 730, 3, 203, 101, 0, 729, 728, 1, 0, 0, 0, 729, 730, 1, 0, 0, 0, 730, 196, 1, 0, 0, 0, 731, 732, 5, 98, 0, 0, 732, 733, 5, 121, 0, 0, 733, 734, 5, 116, 0, 0, 734, 735, 5, 101, 0, 0, 735, 736, 5, 115, 0, 0, 736, 738, 1, 0, 0, 0, 737, 739, 3, 205, 102, 0, 738, 737, 1, 0, 0, 0, 738, 739, 1, 0, 0, 0, 739, 198, 1, 0, 0, 0, 740, 741, 5, 102, 0, 0, 741, 742, 5, 105, 0, 0, 742, 743, 5, 120, 0, 0, 743, 744, 5, 101, 0, 0, 744, 745, 5, 100, 0, 0, 745, 753, 1, 0, 0, 0, 746, 747, 3, 203, 101, 0, 747, 749, 5, 120, 0, 0, 748, 750, 7, 0, 0, 0, 749, 748, 1, 0, 0, 0, 750, 751, 1, 0, 0, 0, 751, 749, 1, 0, 0, 0, 751, 752, 1, 0, 0, 0, 752, 754, 1, 0, 0, 0, 753, 746, 1, 0, 0, 0, 753, 754, 1, 0, 0, 0, 754, 200, 1, 0, 0, 0, 755, 756, 5, 117, 0, 0, 756, 757, 5, 102, 0, 0, 757, 758, 5, 105, 0, 0, 758, 759, 5, 120, 0, 0, 759, 760, 5, 101, 0, 0, 760, 761, 5, 100, 0, 0, 761, 769, 1, 0, 0, 0, 762, 763, 3, 203, 101, 0, 763, 765, 5, 120, 0, 0, 764, 766, 7, 0, 0, 0, 765, 764, 1, 0, 0, 0, 766, 767, 1, 0, 0, 0, 767, 765, 1, 0, 0, 0, 767, 768, 1, 0, 0, 0, 768, 770, 1, 0, 0, 0, 769, 762, 1, 0, 0, 0, 769, 770, 1, 0, 0, 0, 770, 202, 1, 0, 0, 0, 771, 855, 5, 56, 0, 0, 772, 773, 5, 49, 0, 0, 773, 855, 5, 54, 0, 0, 774, 775, 5, 50, 0, 0, 775, 855, 5, 52, 0, 0, 776, 777, 5, 51, 0, 0, 777, 855, 5, 50, 0, 0, 778, 779, 5, 52, 0, 0, 779, 855, 5, 48, 0, 0, 780, 781, 5, 52, 0, 0, 781, 855, 5, 56, 0, 0, 782, 783, 5, 53, 0, 0, 783, 855, 5, 54, 0, 0, 784, 785, 5, 54, 0, 0, 785, 855, 5, 52, 0, 0, 786, 787, 5, 55, 0, 0, 787, 855, 5, 50, 0, 0, 788, 789, 5, 56, 0, 0, 789, 855, 5, 48, 0, 0, 790, 791, 5, 56, 0, 0, 791, 855, 5, 56, 0, 0, 792, 793, 5, 57, 0, 0, 793, 855, 5, 54, 0, 0, 794, 795, 5, 49, 0, 0, 795, 796, 5, 48, 0, 0, 796, 855, 5, 52, 0, 0, 797, 798, 5, 49, 0, 0, 798, 799, 5, 49, 0, 0, 799, 855, 5, 50, 0, 0, 800, 801, 5, 49, 0, 0, 801, 802, 5, 50, 0, 0, 802, 855, 5, 48, 0, 0, 803, 804, 5, 49, 0, 0, 804, 805, 5, 50, 0, 0, 805, 855, 5, 56, 0, 0, 806, 807, 5, 49, 0, 0, 807, 808, 5, 51, 0, 0, 808, 855, 5, 54, 0, 0, 809, 810, 5, 49, 0, 0, 810, 811, 5, 52, 0, 0, 811, 855, 5, 52, 0, 0, 812, 813, 5, 49, 0, 0, 813, 814, 5, 53, 0, 0, 814, 855, 5, 50, 0, 0, 815, 816, 5, 49, 0, 0, 816, 817, 5, 54, 0, 0, 817, 855, 5, 48, 0, 0, 818, 819, 5, 49, 0, 0, 819, 820, 5, 54, 0, 0, 820, 855, 5, 56, 0, 0, 821, 822, 5, 49, 0, 0, 822, 823, 5, 55, 0, 0, 823, 855, 5, 54, 0, 0, 824, 825, 5, 49, 0, 0, 825, 826, 5, 56, 0, 0, 826, 855, 5, 52, 0, 0, 827, 828, 5, 49, 0, 0, 828, 829, 5, 57, 0, 0, 829, 855, 5, 50, 0, 0, 830, 831, 5, 50, 0, 0, 831, 832, 5, 48, 0, 0, 832, 855, 5, 48, 0, 0, 833, 834, 5, 50, 0, 0, 834, 835, 5, 48, 0, 0, 835, 855, 5, 56, 0, 0, 836, 837, 5, 50, 0, 0, 837, 838, 5, 49, 0, 0, 838, 855, 5, 54, 0, 0, 839, 840, 5, 50, 0, 0, 840, 841, 5, 50, 0, 0, 841, 855, 5, 52, 0, 0, 842, 843, 5, 50, 0, 0, 843, 844, 5, 51, 0, 0, 844, 855, 5, 50, 0, 0, 845, 846, 5, 50, 0, 0, 846, 847, 5, 52, 0, 0, 847, 855, 5, 48, 0, 0, 848, 849, 5, 50, 0, 0, 849, 850, 5, 52, 0, 0, 850, 855, 5, 56, 0, 0, 851, 852, 5, 50, 0, 0, 852, 853, 5, 53, 0, 0, 853, 855, 5, 54, 0, 0, 854, 771, 1, 0, 0, 0, 854, 772, 1, 0, 0, 0, 854, 774, 1, 0, 0, 0, 854, 776, 1, 0, 0, 0, 854, 778, 1, 0, 0, 0, 854, 780, 1, 0, 0, 0, 854, 782, 1, 0, 0, 0, 854, 784, 1, 0, 0, 0, 854, 786, 1, 0, 0, 0, 854, 788, 1, 0, 0, 0, 854, 790, 1, 0, 0, 0, 854, 792, 1, 0, 0, 0, 854, 794, 1, 0, 0, 0, 854, 797, 1, 0, 0, 0, 854, 800, 1, 0, 0, 0, 854, 803, 1, 0, 0, 0, 854, 806, 1, 0, 0, 0, 854, 809, 1, 0, 0, 0, 854, 812, 1, 0, 0, 0, 854, 815, 1, 0, 0, 0, 854, 818, 1, 0, 0, 0, 854, 821, 1, 0, 0, 0, 854, 824, 1, 0, 0, 0, 854, 827, 1, 0, 0, 0, 854, 830, 1, 0, 0, 0, 854, 833, 1, 0, 0, 0, 854, 836, 1, 0, 0, 0, 854, 839, 1, 0, 0, 0, 854, 842, 1, 0, 0, 0, 854, 845, 1, 0, 0, 0, 854, 848, 1, 0, 0, 0, 854, 851, 1, 0, 0, 0, 855, 204, 1, 0, 0, 0, 856, 862, 7, 1, 0, 0, 857, 858, 7, 2, 0, 0, 858, 862, 7, 0, 0, 0, 859, 860, 5, 51, 0, 0, 860, 862, 7, 3, 0, 0, 861, 856, 1, 0, 0, 0, 861, 857, 1, 0, 0, 0, 861, 859, 1, 0, 0, 0, 862, 206, 1, 0, 0, 0, 863, 864, 5, 116, 0, 0, 864, 865, 5, 114, 0, 0, 865, 866, 5, 117, 0, 0, 866, 873, 5, 101, 0, 0, 867, 868, 5, 102, 0, 0, 868, 869, 5, 97, 0, 0, 869, 870, 5, 108, 0, 0, 870, 871, 5, 115, 0, 0, 871, 873, 5, 101, 0, 0, 872, 863, 1, 0, 0, 0, 872, 867, 1, 0, 0, 0, 873, 208, 1, 0, 0, 0, 874, 881, 3, 211, 105, 0, 875, 877, 3, 211, 105, 0, 876, 875, 1, 0, 0, 0, 876, 877, 1, 0, 0, 0, 877, 878, 1, 0, 0, 0, 878, 879, 5, 46, 0, 0, 879, 881, 3, 211, 105, 0, 880, 874, 1, 0, 0, 0, 880, 876, 1, 0, 0, 0, 881, 887, 1, 0, 0, 0, 882, 884, 7, 4, 0, 0, 883, 885, 5, 45, 0, 0, 884, 883, 1, 0, 0, 0, 884, 885, 1, 0, 0, 0, 885, 886, 1, 0, 0, 0, 886, 888, 3, 211, 105, 0, 887, 882, 1, 0, 0, 0, 887, 888, 1, 0, 0, 0, 888, 210, 1, 0, 0, 0, 889, 896, 7, 0, 0, 0, 890, 892, 5, 95, 0, 0, 891, 890, 1, 0, 0, 0, 891, 892, 1, 0, 0, 0, 892, 893, 1, 0, 0, 0, 893, 895, 7, 0, 0, 0, 894, 891, 1, 0, 0, 0, 895, 898, 1, 0, 0, 0, 896, 894, 1, 0, 0, 0, 896, 897, 1, 0, 0, 0, 897, 212, 1, 0, 0, 0, 898, 896, 1, 0, 0, 0, 899, 900, 5, 48, 0, 0, 900, 901, 7, 5, 0, 0, 901, 902, 3, 215, 107, 0, 902, 214, 1, 0, 0, 0, 903, 910, 3, 221, 110, 0, 904, 906, 5, 95, 0, 0, 905, 904, 1, 0, 0, 0, 905, 906, 1, 0, 0, 0, 906, 907, 1, 0, 0, 0, 907, 909, 3, 221, 110, 0, 908, 905, 1, 0, 0, 0, 909, 912, 1, 0, 0, 0, 910, 908, 1, 0, 0, 0, 910, 911, 1, 0, 0, 0, 911, 216, 1, 0, 0, 0, 912, 910, 1, 0, 0, 0, 913, 914, 5, 119, 0, 0, 914, 915, 5, 101, 0, 0, 915, 970, 5, 105, 0, 0, 916, 917, 5, 103, 0, 0, 917, 918, 5, 119, 0, 0, 918, 919, 5, 101, 0, 0, 919, 970, 5, 105, 0, 0, 920, 921, 5, 115, 0, 0, 921, 922, 5, 122, 0, 0, 922, 923, 5, 97, 0, 0, 923, 924, 5, 98, 0, 0, 924, 970, 5, 111, 0, 0, 925, 926, 5, 102, 0, 0, 926, 927, 5, 105, 0, 0, 927, 928, 5, 110, 0, 0, 928, 929, 5, 110, 0, 0, 929, 930, 5, 101, 0, 0, 930, 970, 5, 121, 0, 0, 931, 932, 5, 101, 0, 0, 932, 933, 5, 116, 0, 0, 933, 934, 5, 104, 0, 0, 934, 935, 5, 101, 0, 0, 935, 970, 5, 114, 0, 0, 936, 937, 5, 115, 0, 0, 937, 938, 5, 101, 0, 0, 938, 939, 5, 99, 0, 0, 939, 940, 5, 111, 0, 0, 940, 941, 5, 110, 0, 0, 941, 942, 5, 100, 0, 0, 942, 970, 5, 115, 0, 0, 943, 944, 5, 109, 0, 0, 944, 945, 5, 105, 0, 0, 945, 946, 5, 110, 0, 0, 946, 947, 5, 117, 0, 0, 947, 948, 5, 116, 0, 0, 948, 949, 5, 101, 0, 0, 949, 970, 5, 115, 0, 0, 950, 951, 5, 104, 0, 0, 951, 952, 5, 111, 0, 0, 952, 953, 5, 117, 0, 0, 953, 954, 5, 114, 0, 0, 954, 970, 5, 115, 0, 0, 955, 956, 5, 100, 0, 0, 956, 957, 5, 97, 0, 0, 957, 958, 5, 121, 0, 0, 958, 970, 5, 115, 0, 0, 959, 960, 5, 119, 0, 0, 960, 961, 5, 101, 0, 0, 961, 962, 5, 101, 0, 0, 962, 963, 5, 107, 0, 0, 963, 970, 5, 115, 0, 0, 964, 965, 5, 121, 0, 0, 965, 966, 5, 101, 0, 0, 966, 967, 5, 97, 0, 0, 967, 968, 5, 114, 0, 0, 968, 970, 5, 115, 0, 0, 969, 913, 1, 0, 0, 0, 969, 916, 1, 0, 0, 0, 969, 920, 1, 0, 0, 0, 969, 925, 1, 0, 0, 0, 969, 931, 1, 0, 0, 0, 969, 936, 1, 0, 0, 0, 969, 943, 1, 0, 0, 0, 969, 950, 1, 0, 0, 0, 969, 955, 1, 0, 0, 0, 969, 959, 1, 0, 0, 0, 969, 964, 1, 0, 0, 0, 970, 218, 1, 0, 0, 0, 971, 972, 5, 104, 0, 0, 972, 973, 5, 101, 0, 0, 973, 974, 5, 120, 0, 0, 974, 985, 1, 0, 0, 0, 975, 977, 5, 34, 0, 0, 976, 978, 3, 215, 107, 0, 977, 976, 1, 0, 0, 0, 977, 978, 1, 0, 0, 0, 978, 979, 1, 0, 0, 0, 979, 986, 5, 34, 0, 0, 980, 982, 5, 39, 0, 0, 981, 983, 3, 215, 107, 0, 982, 981, 1, 0, 0, 0, 982, 983, 1, 0, 0, 0, 983, 984, 1, 0, 0, 0, 984, 986, 5, 39, 0, 0, 985, 975, 1, 0, 0, 0, 985, 980, 1, 0, 0, 0, 986, 220, 1, 0, 0, 0, 987, 988, 7, 6, 0, 0, 988, 222, 1, 0, 0, 0, 989, 990, 5, 97, 0, 0, 990, 991, 5, 98, 0, 0, 991, 992, 5, 115, 0, 0, 992, 993, 5, 116, 0, 0, 993, 994, 5, 114, 0, 0, 994, 995, 5, 97, 0, 0, 995, 996, 5, 99, 0, 0, 996, 1078, 5, 116, 0, 0, 997, 998, 5, 97, 0, 0, 998, 999, 5, 102, 0, 0, 999, 1000, 5, 116, 0, 0, 1000, 1001, 5, 101, 0, 0, 1001, 1078, 5, 114, 0, 0, 1002, 1003, 5, 99, 0, 0, 1003, 1004, 5, 97, 0, 0, 1004, 1005, 5, 115, 0, 0, 1005, 1078, 5, 101, 0, 0, 1006, 1007, 5, 99, 0, 0, 1007, 1008, 5, 97, 0, 0, 1008, 1009, 5, 116, 0, 0, 1009, 1010, 5, 99, 0, 0, 1010, 1078, 5, 104, 0, 0, 1011, 1012, 5, 100, 0, 0, 1012, 1013, 5, 101, 0, 0, 1013, 1014, 5, 102, 0, 0, 1014, 1015, 5, 97, 0, 0, 1015, 1016, 5, 117, 0, 0, 1016, 1017, 5, 108, 0, 0, 1017, 1078, 5, 116, 0, 0, 1018, 1019, 5, 102, 0, 0, 1019, 1020, 5, 105, 0, 0, 1020, 1021, 5, 110, 0, 0, 1021, 1022, 5, 97, 0, 0, 1022, 1078, 5, 108, 0, 0, 1023, 1024, 5, 105, 0, 0, 1024, 1078, 5, 110, 0, 0, 1025, 1026, 5, 105, 0, 0, 1026, 1027, 5, 110, 0, 0, 1027, 1028, 5, 108, 0, 0, 1028, 1029, 5, 105, 0, 0, 1029, 1030, 5, 110, 0, 0, 1030, 1078, 5, 101, 0, 0, 1031, 1032, 5, 108, 0, 0, 1032, 1033, 5, 101, 0, 0, 1033, 1078, 5, 116, 0, 0, 1034, 1035, 5, 109, 0, 0, 1035, 1036, 5, 97, 0, 0, 1036, 1037, 5, 116, 0, 0, 1037, 1038, 5, 99, 0, 0, 1038, 1078, 5, 104, 0, 0, 1039, 1040, 5, 110, 0, 0, 1040, 1041, 5, 117, 0, 0, 1041, 1042, 5, 108, 0, 0, 1042, 1078, 5, 108, 0, 0, 1043, 1044, 5, 111, 0, 0, 1044, 1078, 5, 102, 0, 0, 1045, 1046, 5, 114, 0, 0, 1046, 1047, 5, 101, 0, 0, 1047, 1048, 5, 108, 0, 0, 1048, 1049, 5, 111, 0, 0, 1049, 1050, 5, 99, 0, 0, 1050, 1051, 5, 97, 0, 0, 1051, 1052, 5, 116, 0, 0, 1052, 1053, 5, 97, 0, 0, 1053, 1054, 5, 98, 0, 0, 1054, 1055, 5, 108, 0, 0, 1055, 1078, 5, 101, 0, 0, 1056, 1057, 5, 115, 0, 0, 1057, 1058, 5, 116, 0, 0, 1058, 1059, 5, 97, 0, 0, 1059, 1060, 5, 116, 0, 0, 1060, 1061, 5, 105, 0, 0, 1061, 1078, 5, 99, 0, 0, 1062, 1063, 5, 115, 0, 0, 1063, 1064, 5, 119, 0, 0, 1064, 1065, 5, 105, 0, 0, 1065, 1066, 5, 116, 0, 0, 1066, 1067, 5, 99, 0, 0, 1067, 1078, 5, 104, 0, 0, 1068, 1069, 5, 116, 0, 0, 1069, 1070, 5, 114, 0, 0, 1070, 1078, 5, 121, 0, 0, 1071, 1072, 5, 116, 0, 0, 1072, 1073, 5, 121, 0, 0, 1073, 1074, 5, 112, 0, 0, 1074, 1075, 5, 101, 0, 0, 1075, 1076, 5, 111, 0, 0, 1076, 1078, 5, 102, 0, 0, 1077, 989, 1, 0, 0, 0, 1077, 997, 1, 0, 0, 0, 1077, 1002, 1, 0, 0, 0, 1077, 1006, 1, 0, 0, 0, 1077, 1011, 1, 0, 0, 0, 1077, 1018, 1, 0, 0, 0, 1077, 1023, 1, 0, 0, 0, 1077, 1025, 1, 0, 0, 0, 1077, 1031, 1, 0, 0, 0, 1077, 1034, 1, 0, 0, 0, 1077, 1039, 1, 0, 0, 0, 1077, 1043, 1, 0, 0, 0, 1077, 1045, 1, 0, 0, 0, 1077, 1056, 1, 0, 0, 0, 1077, 1062, 1, 0, 0, 0, 1077, 1068, 1, 0, 0, 0, 1077, 1071, 1, 0, 0, 0, 1078, 224, 1, 0, 0, 0, 1079, 1080, 5, 97, 0, 0, 1080, 1081, 5, 110, 0, 0, 1081, 1082, 5, 111, 0, 0, 1082, 1083, 5, 110, 0, 0, 1083, 1084, 5, 121, 0, 0, 1084, 1085, 5, 109, 0, 0, 1085, 1086, 5, 111, 0, 0, 1086, 1087, 5, 117, 0, 0, 1087, 1088, 5, 115, 0, 0, 1088, 226, 1, 0, 0, 0, 1089, 1090, 5, 98, 0, 0, 1090, 1091, 5, 114, 0, 0, 1091, 1092, 5, 101, 0, 0, 1092, 1093, 5, 97, 0, 0, 1093, 1094, 5, 107, 0, 0, 1094, 228, 1, 0, 0, 0, 1095, 1096, 5, 99, 0, 0, 1096, 1097, 5, 111, 0, 0, 1097, 1098, 5, 110, 0, 0, 1098, 1099, 5, 115, 0, 0, 1099, 1100, 5, 116, 0, 0, 1100, 1101, 5, 97, 0, 0, 1101, 1102, 5, 110, 0, 0, 1102, 1103, 5, 116, 0, 0, 1103, 230, 1, 0, 0, 0, 1104, 1105, 5, 105, 0, 0, 1105, 1106, 5, 109, 0, 0, 1106, 1107, 5, 109, 0, 0, 1107, 1108, 5, 117, 0, 0, 1108, 1109, 5, 116, 0, 0, 1109, 1110, 5, 97, 0, 0, 1110, 1111, 5, 98, 0, 0, 1111, 1112, 5, 108, 0, 0, 1112, 1113, 5, 101, 0, 0, 1113, 232, 1, 0, 0, 0, 1114, 1115, 5, 99, 0, 0, 1115, 1116, 5, 111, 0, 0, 1116, 1117, 5, 110, 0, 0, 1117, 1118, 5, 116, 0, 0, 1118, 1119, 5, 105, 0, 0, 1119, 1120, 5, 110, 0, 0, 1120, 1121, 5, 117, 0, 0, 1121, 1122, 5, 101, 0, 0, 1122, 234, 1, 0, 0, 0, 1123, 1124, 5, 108, 0, 0, 1124, 1125, 5, 101, 0, 0, 1125, 1126, 5, 97, 0, 0, 1126, 1127, 5, 118, 0, 0, 1127, 1128, 5, 101, 0, 0, 1128, 236, 1, 0, 0, 0, 1129, 1130, 5, 101, 0, 0, 1130, 1131, 5, 120, 0, 0, 1131, 1132, 5, 116, 0, 0, 1132, 1133, 5, 101, 0, 0, 1133, 1134, 5, 114, 0, 0, 1134, 1135, 5, 110, 0, 0, 1135, 1136, 5, 97, 0, 0, 1136, 1137, 5, 108, 0, 0, 1137, 238, 1, 0, 0, 0, 1138, 1139, 5, 105, 0, 0, 1139, 1140, 5, 110, 0, 0, 1140, 1141, 5, 100, 0, 0, 1141, 1142, 5, 101, 0, 0, 1142, 1143, 5, 120, 0, 0, 1143, 1144, 5, 101, 0, 0, 1144, 1145, 5, 100, 0, 0, 1145, 240, 1, 0, 0, 0, 1146, 1147, 5, 105, 0, 0, 1147, 1148, 5, 110, 0, 0, 1148, 1149, 5, 116, 0, 0, 1149, 1150, 5, 101, 0, 0, 1150, 1151, 5, 114, 0, 0, 1151, 1152, 5, 110, 0, 0, 1152, 1153, 5, 97, 0, 0, 1153, 1154, 5, 108, 0, 0, 1154, 242, 1, 0, 0, 0, 1155, 1156, 5, 112, 0, 0, 1156, 1157, 5, 97, 0, 0, 1157, 1158, 5, 121, 0, 0, 1158, 1159, 5, 97, 0, 0, 1159, 1160, 5, 98, 0, 0, 1160, 1161, 5, 108, 0, 0, 1161, 1162, 5, 101, 0, 0, 1162, 244, 1, 0, 0, 0, 1163, 1164, 5, 112, 0, 0, 1164, 1165, 5, 114, 0, 0, 1165, 1166, 5, 105, 0, 0, 1166, 1167, 5, 118, 0, 0, 1167, 1168, 5, 97, 0, 0, 1168, 1169, 5, 116, 0, 0, 1169, 1170, 5, 101, 0, 0, 1170, 246, 1, 0, 0, 0, 1171, 1172, 5, 112, 0, 0, 1172, 1173, 5, 117, 0, 0, 1173, 1174, 5, 98, 0, 0, 1174, 1175, 5, 108, 0, 0, 1175, 1176, 5, 105, 0, 0, 1176, 1177, 5, 99, 0, 0, 1177, 248, 1, 0, 0, 0, 1178, 1179, 5, 118, 0, 0, 1179, 1180, 5, 105, 0, 0, 1180, 1181, 5, 114, 0, 0, 1181, 1182, 5, 116, 0, 0, 1182, 1183, 5, 117, 0, 0, 1183, 1184, 5, 97, 0, 0, 1184, 1185, 5, 108, 0, 0, 1185, 250, 1, 0, 0, 0, 1186, 1187, 5, 112, 0, 0, 1187, 1188, 5, 117, 0, 0, 1188, 1189, 5, 114, 0, 0, 1189, 1190, 5, 101, 0, 0, 1190, 252, 1, 0, 0, 0, 1191, 1192, 5, 116, 0, 0, 1192, 1193, 5, 121, 0, 0, 1193, 1194, 5, 112, 0, 0, 1194, 1195, 5, 101, 0, 0, 1195, 254, 1, 0, 0, 0, 1196, 1197, 5, 118, 0, 0, 1197, 1198, 5, 105, 0, 0, 1198, 1199, 5, 101, 0, 0, 1199, 1200, 5, 119, 0, 0, 1200, 256, 1, 0, 0, 0, 1201, 1202, 5, 103, 0, 0, 1202, 1203, 5, 108, 0, 0, 1203, 1204, 5, 111, 0, 0, 1204, 1205, 5, 98, 0, 0, 1205, 1206, 5, 97, 0, 0, 1206, 1207, 5, 108, 0, 0, 1207, 258, 1, 0, 0, 0, 1208, 1209, 5, 99, 0, 0, 1209, 1210, 5, 111, 0, 0, 1210, 1211, 5, 110, 0, 0, 1211, 1212, 5, 115, 0, 0, 1212, 1213, 5, 116, 0, 0, 1213, 1214, 5, 114, 0, 0, 1214, 1215, 5, 117, 0, 0, 1215, 1216, 5, 99, 0, 0, 1216, 1217, 5, 116, 0, 0, 1217, 1218, 5, 111, 0, 0, 1218, 1219, 5, 114, 0, 0, 1219, 260, 1, 0, 0, 0, 1220, 1221, 5, 102, 0, 0, 1221, 1222, 5, 97, 0, 0, 1222, 1223, 5, 108, 0, 0, 1223, 1224, 5, 108, 0, 0, 1224, 1225, 5, 98, 0, 0, 1225, 1226, 5, 97, 0, 0, 1226, 1227, 5, 99, 0, 0, 1227, 1228, 5, 107, 0, 0, 1228, 262, 1, 0, 0, 0, 1229, 1230, 5, 114, 0, 0, 1230, 1231, 5, 101, 0, 0, 1231, 1232, 5, 99, 0, 0, 1232, 1233, 5, 101, 0, 0, 1233, 1234, 5, 105, 0, 0, 1234, 1235, 5, 118, 0, 0, 1235, 1236, 5, 101, 0, 0, 1236, 264, 1, 0, 0, 0, 1237, 1241, 3, 267, 133, 0, 1238, 1240, 3, 269, 134, 0, 1239, 1238, 1, 0, 0, 0, 1240, 1243, 1, 0, 0, 0, 1241, 1239, 1, 0, 0, 0, 1241, 1242, 1, 0, 0, 0, 1242, 266, 1, 0, 0, 0, 1243, 1241, 1, 0, 0, 0, 1244, 1245, 7, 7, 0, 0, 1245, 268, 1, 0, 0, 0, 1246, 1247, 7, 8, 0, 0, 1247, 270, 1, 0, 0, 0, 1248, 1249, 5, 117, 0, 0, 1249, 1250, 5, 110, 0, 0, 1250, 1251, 5, 105, 0, 0, 1251, 1252, 5, 99, 0, 0, 1252, 1253, 5, 111, 0, 0, 1253, 1254, 5, 100, 0, 0, 1254, 1256, 5, 101, 0, 0, 1255, 1248, 1, 0, 0, 0, 1255, 1256, 1, 0, 0, 0, 1256, 1273, 1, 0, 0, 0, 1257, 1261, 5, 34, 0, 0, 1258, 1260, 3, 273, 136, 0, 1259, 1258, 1, 0, 0, 0, 1260, 1263, 1, 0, 0, 0, 1261, 1259, 1, 0, 0, 0, 1261, 1262, 1, 0, 0, 0, 1262, 1264, 1, 0, 0, 0, 1263, 1261, 1, 0, 0, 0, 1264, 1274, 5, 34, 0, 0, 1265, 1269, 5, 39, 0, 0, 1266, 1268, 3, 275, 137, 0, 1267, 1266, 1, 0, 0, 0, 1268, 1271, 1, 0, 0, 0, 1269, 1267, 1, 0, 0, 0, 1269, 1270, 1, 0, 0, 0, 1270, 1272, 1, 0, 0, 0, 1271, 1269, 1, 0, 0, 0, 1272, 1274, 5, 39, 0, 0, 1273, 1257, 1, 0, 0, 0, 1273, 1265, 1, 0, 0, 0, 1274, 272, 1, 0, 0, 0, 1275, 1279, 8, 9, 0, 0, 1276, 1277, 5, 92, 0, 0, 1277, 1279, 9, 0, 0, 0, 1278, 1275, 1, 0, 0, 0, 1278, 1276, 1, 0, 0, 0, 1279, 274, 1, 0, 0, 0, 1280, 1284, 8, 10, 0, 0, 1281, 1282, 5, 92, 0, 0, 1282, 1284, 9, 0, 0, 0, 1283, 1280, 1, 0, 0, 0, 1283, 1281, 1, 0, 0, 0, 1284, 276, 1, 0, 0, 0, 1285, 1287, 7, 0, 0, 0, 1286, 1285, 1, 0, 0, 0, 1287, 1288, 1, 0, 0, 0, 1288, 1286, 1, 0, 0, 0, 1288, 1289, 1, 0, 0, 0, 1289, 1290, 1, 0, 0, 0, 1290, 1292, 5, 46, 0, 0, 1291, 1293, 7, 0, 0, 0, 1292, 1291, 1, 0, 0, 0, 1293, 1294, 1, 0, 0, 0, 1294, 1292, 1, 0, 0, 0, 1294, 1295, 1, 0, 0, 0, 1295, 1302, 1, 0, 0, 0, 1296, 1298, 5, 46, 0, 0, 1297, 1299, 7, 0, 0, 0, 1298, 1297, 1, 0, 0, 0, 1299, 1300, 1, 0, 0, 0, 1300, 1298, 1, 0, 0, 0, 1300, 1301, 1, 0, 0, 0, 1301, 1303, 1, 0, 0, 0, 1302, 1296, 1, 0, 0, 0, 1302, 1303, 1, 0, 0, 0, 1303, 278, 1, 0, 0, 0, 1304, 1306, 7, 11, 0, 0, 1305, 1304, 1, 0, 0, 0, 1306, 1307, 1, 0, 0, 0, 1307, 1305, 1, 0, 0, 0, 1307, 1308, 1, 0, 0, 0, 1308, 1309, 1, 0, 0, 0, 1309, 1310, 6, 139, 0, 0, 1310, 280, 1, 0, 0, 0, 1311, 1312, 5, 47, 0, 0, 1312, 1313, 5, 42, 0, 0, 1313, 1317, 1, 0, 0, 0, 1314, 1316, 9, 0, 0, 0, 1315, 1314, 1, 0, 0, 0, 1316, 1319, 1, 0, 0, 0, 1317, 1318, 1, 0, 0, 0, 1317, 1315, 1, 0, 0, 0, 1318, 1320, 1, 0, 0, 0, 1319, 1317, 1, 0, 0, 0, 1320, 1321, 5, 42, 0, 0, 1321, 1322, 5, 47, 0, 0, 1322, 1323, 1, 0, 0, 0, 1323, 1324, 6, 140, 1, 0, 1324, 282, 1, 0, 0, 0, 1325, 1326, 5, 47, 0, 0, 1326, 1327, 5, 47, 0, 0, 1327, 1331, 1, 0, 0, 0, 1328, 1330, 8, 12, 0, 0, 1329, 1328, 1, 0, 0, 0, 1330, 1333, 1, 0, 0, 0, 1331, 1329, 1, 0, 0, 0, 1331, 1332, 1, 0, 0, 0, 1332, 1334, 1, 0, 0, 0, 1333, 1331, 1, 0, 0, 0, 1334, 1335, 6, 141, 1, 0, 1335, 284, 1, 0, 0, 0, 38, 0, 721, 729, 738, 751, 753, 767, 769, 854, 861, 872, 876, 880, 884, 887, 891, 896, 905, 910, 969, 977, 982, 985, 1077, 1241, 1255, 1261, 1269, 1273, 1278, 1283, 1288, 1294, 1300, 1302, 1307, 1317, 1331, 2, 6, 0, 0, 0, 1, 0] \ No newline at end of file +[4, 0, 134, 1348, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 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, 1, 18, 1, 19, 1, 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, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 28, 1, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 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, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 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, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 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, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 3, 96, 724, 8, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 3, 97, 732, 8, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 3, 98, 741, 8, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 4, 99, 752, 8, 99, 11, 99, 12, 99, 753, 3, 99, 756, 8, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 4, 100, 768, 8, 100, 11, 100, 12, 100, 769, 3, 100, 772, 8, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 3, 101, 857, 8, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 3, 102, 864, 8, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 3, 103, 875, 8, 103, 1, 104, 1, 104, 3, 104, 879, 8, 104, 1, 104, 1, 104, 3, 104, 883, 8, 104, 1, 104, 1, 104, 3, 104, 887, 8, 104, 1, 104, 3, 104, 890, 8, 104, 1, 105, 1, 105, 3, 105, 894, 8, 105, 1, 105, 5, 105, 897, 8, 105, 10, 105, 12, 105, 900, 9, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 3, 107, 908, 8, 107, 1, 107, 5, 107, 911, 8, 107, 10, 107, 12, 107, 914, 9, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 3, 108, 972, 8, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 3, 109, 980, 8, 109, 1, 109, 1, 109, 1, 109, 3, 109, 985, 8, 109, 1, 109, 3, 109, 988, 8, 109, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 3, 111, 1080, 8, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 5, 133, 1252, 8, 133, 10, 133, 12, 133, 1255, 9, 133, 1, 134, 1, 134, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 3, 136, 1268, 8, 136, 1, 136, 1, 136, 5, 136, 1272, 8, 136, 10, 136, 12, 136, 1275, 9, 136, 1, 136, 1, 136, 1, 136, 5, 136, 1280, 8, 136, 10, 136, 12, 136, 1283, 9, 136, 1, 136, 3, 136, 1286, 8, 136, 1, 137, 1, 137, 1, 137, 3, 137, 1291, 8, 137, 1, 138, 1, 138, 1, 138, 3, 138, 1296, 8, 138, 1, 139, 4, 139, 1299, 8, 139, 11, 139, 12, 139, 1300, 1, 139, 1, 139, 4, 139, 1305, 8, 139, 11, 139, 12, 139, 1306, 1, 139, 1, 139, 4, 139, 1311, 8, 139, 11, 139, 12, 139, 1312, 3, 139, 1315, 8, 139, 1, 140, 4, 140, 1318, 8, 140, 11, 140, 12, 140, 1319, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 5, 141, 1328, 8, 141, 10, 141, 12, 141, 1331, 9, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 5, 142, 1342, 8, 142, 10, 142, 12, 142, 1345, 9, 142, 1, 142, 1, 142, 1, 1329, 0, 143, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 0, 205, 0, 207, 102, 209, 103, 211, 0, 213, 104, 215, 0, 217, 105, 219, 106, 221, 0, 223, 107, 225, 108, 227, 109, 229, 110, 231, 111, 233, 112, 235, 113, 237, 114, 239, 115, 241, 116, 243, 117, 245, 118, 247, 119, 249, 120, 251, 121, 253, 122, 255, 123, 257, 124, 259, 125, 261, 126, 263, 127, 265, 128, 267, 129, 269, 0, 271, 0, 273, 130, 275, 0, 277, 0, 279, 131, 281, 132, 283, 133, 285, 134, 1, 0, 13, 1, 0, 48, 57, 1, 0, 49, 57, 1, 0, 49, 50, 1, 0, 48, 50, 2, 0, 69, 69, 101, 101, 2, 0, 88, 88, 120, 120, 3, 0, 48, 57, 65, 70, 97, 102, 4, 0, 36, 36, 65, 90, 95, 95, 97, 122, 5, 0, 36, 36, 48, 57, 65, 90, 95, 95, 97, 122, 4, 0, 10, 10, 13, 13, 34, 34, 92, 92, 4, 0, 10, 10, 13, 13, 39, 39, 92, 92, 3, 0, 9, 10, 12, 13, 32, 32, 2, 0, 10, 10, 13, 13, 1430, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 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, 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, 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, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 1, 287, 1, 0, 0, 0, 3, 294, 1, 0, 0, 0, 5, 296, 1, 0, 0, 0, 7, 298, 1, 0, 0, 0, 9, 301, 1, 0, 0, 0, 11, 303, 1, 0, 0, 0, 13, 305, 1, 0, 0, 0, 15, 308, 1, 0, 0, 0, 17, 310, 1, 0, 0, 0, 19, 312, 1, 0, 0, 0, 21, 315, 1, 0, 0, 0, 23, 317, 1, 0, 0, 0, 25, 320, 1, 0, 0, 0, 27, 327, 1, 0, 0, 0, 29, 332, 1, 0, 0, 0, 31, 334, 1, 0, 0, 0, 33, 336, 1, 0, 0, 0, 35, 338, 1, 0, 0, 0, 37, 347, 1, 0, 0, 0, 39, 356, 1, 0, 0, 0, 41, 366, 1, 0, 0, 0, 43, 374, 1, 0, 0, 0, 45, 377, 1, 0, 0, 0, 47, 379, 1, 0, 0, 0, 49, 381, 1, 0, 0, 0, 51, 387, 1, 0, 0, 0, 53, 393, 1, 0, 0, 0, 55, 397, 1, 0, 0, 0, 57, 399, 1, 0, 0, 0, 59, 401, 1, 0, 0, 0, 61, 403, 1, 0, 0, 0, 63, 405, 1, 0, 0, 0, 65, 407, 1, 0, 0, 0, 67, 409, 1, 0, 0, 0, 69, 412, 1, 0, 0, 0, 71, 415, 1, 0, 0, 0, 73, 422, 1, 0, 0, 0, 75, 431, 1, 0, 0, 0, 77, 440, 1, 0, 0, 0, 79, 448, 1, 0, 0, 0, 81, 454, 1, 0, 0, 0, 83, 459, 1, 0, 0, 0, 85, 461, 1, 0, 0, 0, 87, 463, 1, 0, 0, 0, 89, 471, 1, 0, 0, 0, 91, 473, 1, 0, 0, 0, 93, 481, 1, 0, 0, 0, 95, 484, 1, 0, 0, 0, 97, 491, 1, 0, 0, 0, 99, 499, 1, 0, 0, 0, 101, 508, 1, 0, 0, 0, 103, 511, 1, 0, 0, 0, 105, 516, 1, 0, 0, 0, 107, 520, 1, 0, 0, 0, 109, 526, 1, 0, 0, 0, 111, 532, 1, 0, 0, 0, 113, 542, 1, 0, 0, 0, 115, 551, 1, 0, 0, 0, 117, 554, 1, 0, 0, 0, 119, 561, 1, 0, 0, 0, 121, 567, 1, 0, 0, 0, 123, 572, 1, 0, 0, 0, 125, 579, 1, 0, 0, 0, 127, 583, 1, 0, 0, 0, 129, 588, 1, 0, 0, 0, 131, 595, 1, 0, 0, 0, 133, 600, 1, 0, 0, 0, 135, 603, 1, 0, 0, 0, 137, 606, 1, 0, 0, 0, 139, 610, 1, 0, 0, 0, 141, 612, 1, 0, 0, 0, 143, 619, 1, 0, 0, 0, 145, 621, 1, 0, 0, 0, 147, 624, 1, 0, 0, 0, 149, 627, 1, 0, 0, 0, 151, 630, 1, 0, 0, 0, 153, 633, 1, 0, 0, 0, 155, 635, 1, 0, 0, 0, 157, 638, 1, 0, 0, 0, 159, 641, 1, 0, 0, 0, 161, 644, 1, 0, 0, 0, 163, 648, 1, 0, 0, 0, 165, 652, 1, 0, 0, 0, 167, 655, 1, 0, 0, 0, 169, 658, 1, 0, 0, 0, 171, 661, 1, 0, 0, 0, 173, 664, 1, 0, 0, 0, 175, 667, 1, 0, 0, 0, 177, 671, 1, 0, 0, 0, 179, 674, 1, 0, 0, 0, 181, 677, 1, 0, 0, 0, 183, 684, 1, 0, 0, 0, 185, 689, 1, 0, 0, 0, 187, 697, 1, 0, 0, 0, 189, 700, 1, 0, 0, 0, 191, 709, 1, 0, 0, 0, 193, 718, 1, 0, 0, 0, 195, 725, 1, 0, 0, 0, 197, 733, 1, 0, 0, 0, 199, 742, 1, 0, 0, 0, 201, 757, 1, 0, 0, 0, 203, 856, 1, 0, 0, 0, 205, 863, 1, 0, 0, 0, 207, 874, 1, 0, 0, 0, 209, 882, 1, 0, 0, 0, 211, 891, 1, 0, 0, 0, 213, 901, 1, 0, 0, 0, 215, 905, 1, 0, 0, 0, 217, 971, 1, 0, 0, 0, 219, 973, 1, 0, 0, 0, 221, 989, 1, 0, 0, 0, 223, 1079, 1, 0, 0, 0, 225, 1081, 1, 0, 0, 0, 227, 1091, 1, 0, 0, 0, 229, 1097, 1, 0, 0, 0, 231, 1106, 1, 0, 0, 0, 233, 1116, 1, 0, 0, 0, 235, 1126, 1, 0, 0, 0, 237, 1135, 1, 0, 0, 0, 239, 1141, 1, 0, 0, 0, 241, 1150, 1, 0, 0, 0, 243, 1158, 1, 0, 0, 0, 245, 1167, 1, 0, 0, 0, 247, 1175, 1, 0, 0, 0, 249, 1183, 1, 0, 0, 0, 251, 1190, 1, 0, 0, 0, 253, 1198, 1, 0, 0, 0, 255, 1203, 1, 0, 0, 0, 257, 1208, 1, 0, 0, 0, 259, 1213, 1, 0, 0, 0, 261, 1220, 1, 0, 0, 0, 263, 1232, 1, 0, 0, 0, 265, 1241, 1, 0, 0, 0, 267, 1249, 1, 0, 0, 0, 269, 1256, 1, 0, 0, 0, 271, 1258, 1, 0, 0, 0, 273, 1267, 1, 0, 0, 0, 275, 1290, 1, 0, 0, 0, 277, 1295, 1, 0, 0, 0, 279, 1298, 1, 0, 0, 0, 281, 1317, 1, 0, 0, 0, 283, 1323, 1, 0, 0, 0, 285, 1337, 1, 0, 0, 0, 287, 288, 5, 112, 0, 0, 288, 289, 5, 114, 0, 0, 289, 290, 5, 97, 0, 0, 290, 291, 5, 103, 0, 0, 291, 292, 5, 109, 0, 0, 292, 293, 5, 97, 0, 0, 293, 2, 1, 0, 0, 0, 294, 295, 5, 59, 0, 0, 295, 4, 1, 0, 0, 0, 296, 297, 5, 42, 0, 0, 297, 6, 1, 0, 0, 0, 298, 299, 5, 124, 0, 0, 299, 300, 5, 124, 0, 0, 300, 8, 1, 0, 0, 0, 301, 302, 5, 94, 0, 0, 302, 10, 1, 0, 0, 0, 303, 304, 5, 126, 0, 0, 304, 12, 1, 0, 0, 0, 305, 306, 5, 62, 0, 0, 306, 307, 5, 61, 0, 0, 307, 14, 1, 0, 0, 0, 308, 309, 5, 62, 0, 0, 309, 16, 1, 0, 0, 0, 310, 311, 5, 60, 0, 0, 311, 18, 1, 0, 0, 0, 312, 313, 5, 60, 0, 0, 313, 314, 5, 61, 0, 0, 314, 20, 1, 0, 0, 0, 315, 316, 5, 61, 0, 0, 316, 22, 1, 0, 0, 0, 317, 318, 5, 97, 0, 0, 318, 319, 5, 115, 0, 0, 319, 24, 1, 0, 0, 0, 320, 321, 5, 105, 0, 0, 321, 322, 5, 109, 0, 0, 322, 323, 5, 112, 0, 0, 323, 324, 5, 111, 0, 0, 324, 325, 5, 114, 0, 0, 325, 326, 5, 116, 0, 0, 326, 26, 1, 0, 0, 0, 327, 328, 5, 102, 0, 0, 328, 329, 5, 114, 0, 0, 329, 330, 5, 111, 0, 0, 330, 331, 5, 109, 0, 0, 331, 28, 1, 0, 0, 0, 332, 333, 5, 123, 0, 0, 333, 30, 1, 0, 0, 0, 334, 335, 5, 44, 0, 0, 335, 32, 1, 0, 0, 0, 336, 337, 5, 125, 0, 0, 337, 34, 1, 0, 0, 0, 338, 339, 5, 97, 0, 0, 339, 340, 5, 98, 0, 0, 340, 341, 5, 115, 0, 0, 341, 342, 5, 116, 0, 0, 342, 343, 5, 114, 0, 0, 343, 344, 5, 97, 0, 0, 344, 345, 5, 99, 0, 0, 345, 346, 5, 116, 0, 0, 346, 36, 1, 0, 0, 0, 347, 348, 5, 99, 0, 0, 348, 349, 5, 111, 0, 0, 349, 350, 5, 110, 0, 0, 350, 351, 5, 116, 0, 0, 351, 352, 5, 114, 0, 0, 352, 353, 5, 97, 0, 0, 353, 354, 5, 99, 0, 0, 354, 355, 5, 116, 0, 0, 355, 38, 1, 0, 0, 0, 356, 357, 5, 105, 0, 0, 357, 358, 5, 110, 0, 0, 358, 359, 5, 116, 0, 0, 359, 360, 5, 101, 0, 0, 360, 361, 5, 114, 0, 0, 361, 362, 5, 102, 0, 0, 362, 363, 5, 97, 0, 0, 363, 364, 5, 99, 0, 0, 364, 365, 5, 101, 0, 0, 365, 40, 1, 0, 0, 0, 366, 367, 5, 108, 0, 0, 367, 368, 5, 105, 0, 0, 368, 369, 5, 98, 0, 0, 369, 370, 5, 114, 0, 0, 370, 371, 5, 97, 0, 0, 371, 372, 5, 114, 0, 0, 372, 373, 5, 121, 0, 0, 373, 42, 1, 0, 0, 0, 374, 375, 5, 105, 0, 0, 375, 376, 5, 115, 0, 0, 376, 44, 1, 0, 0, 0, 377, 378, 5, 40, 0, 0, 378, 46, 1, 0, 0, 0, 379, 380, 5, 41, 0, 0, 380, 48, 1, 0, 0, 0, 381, 382, 5, 101, 0, 0, 382, 383, 5, 114, 0, 0, 383, 384, 5, 114, 0, 0, 384, 385, 5, 111, 0, 0, 385, 386, 5, 114, 0, 0, 386, 50, 1, 0, 0, 0, 387, 388, 5, 117, 0, 0, 388, 389, 5, 115, 0, 0, 389, 390, 5, 105, 0, 0, 390, 391, 5, 110, 0, 0, 391, 392, 5, 103, 0, 0, 392, 52, 1, 0, 0, 0, 393, 394, 5, 102, 0, 0, 394, 395, 5, 111, 0, 0, 395, 396, 5, 114, 0, 0, 396, 54, 1, 0, 0, 0, 397, 398, 5, 124, 0, 0, 398, 56, 1, 0, 0, 0, 399, 400, 5, 38, 0, 0, 400, 58, 1, 0, 0, 0, 401, 402, 5, 43, 0, 0, 402, 60, 1, 0, 0, 0, 403, 404, 5, 45, 0, 0, 404, 62, 1, 0, 0, 0, 405, 406, 5, 47, 0, 0, 406, 64, 1, 0, 0, 0, 407, 408, 5, 37, 0, 0, 408, 66, 1, 0, 0, 0, 409, 410, 5, 61, 0, 0, 410, 411, 5, 61, 0, 0, 411, 68, 1, 0, 0, 0, 412, 413, 5, 33, 0, 0, 413, 414, 5, 61, 0, 0, 414, 70, 1, 0, 0, 0, 415, 416, 5, 115, 0, 0, 416, 417, 5, 116, 0, 0, 417, 418, 5, 114, 0, 0, 418, 419, 5, 117, 0, 0, 419, 420, 5, 99, 0, 0, 420, 421, 5, 116, 0, 0, 421, 72, 1, 0, 0, 0, 422, 423, 5, 109, 0, 0, 423, 424, 5, 111, 0, 0, 424, 425, 5, 100, 0, 0, 425, 426, 5, 105, 0, 0, 426, 427, 5, 102, 0, 0, 427, 428, 5, 105, 0, 0, 428, 429, 5, 101, 0, 0, 429, 430, 5, 114, 0, 0, 430, 74, 1, 0, 0, 0, 431, 432, 5, 102, 0, 0, 432, 433, 5, 117, 0, 0, 433, 434, 5, 110, 0, 0, 434, 435, 5, 99, 0, 0, 435, 436, 5, 116, 0, 0, 436, 437, 5, 105, 0, 0, 437, 438, 5, 111, 0, 0, 438, 439, 5, 110, 0, 0, 439, 76, 1, 0, 0, 0, 440, 441, 5, 114, 0, 0, 441, 442, 5, 101, 0, 0, 442, 443, 5, 116, 0, 0, 443, 444, 5, 117, 0, 0, 444, 445, 5, 114, 0, 0, 445, 446, 5, 110, 0, 0, 446, 447, 5, 115, 0, 0, 447, 78, 1, 0, 0, 0, 448, 449, 5, 101, 0, 0, 449, 450, 5, 118, 0, 0, 450, 451, 5, 101, 0, 0, 451, 452, 5, 110, 0, 0, 452, 453, 5, 116, 0, 0, 453, 80, 1, 0, 0, 0, 454, 455, 5, 101, 0, 0, 455, 456, 5, 110, 0, 0, 456, 457, 5, 117, 0, 0, 457, 458, 5, 109, 0, 0, 458, 82, 1, 0, 0, 0, 459, 460, 5, 91, 0, 0, 460, 84, 1, 0, 0, 0, 461, 462, 5, 93, 0, 0, 462, 86, 1, 0, 0, 0, 463, 464, 5, 97, 0, 0, 464, 465, 5, 100, 0, 0, 465, 466, 5, 100, 0, 0, 466, 467, 5, 114, 0, 0, 467, 468, 5, 101, 0, 0, 468, 469, 5, 115, 0, 0, 469, 470, 5, 115, 0, 0, 470, 88, 1, 0, 0, 0, 471, 472, 5, 46, 0, 0, 472, 90, 1, 0, 0, 0, 473, 474, 5, 109, 0, 0, 474, 475, 5, 97, 0, 0, 475, 476, 5, 112, 0, 0, 476, 477, 5, 112, 0, 0, 477, 478, 5, 105, 0, 0, 478, 479, 5, 110, 0, 0, 479, 480, 5, 103, 0, 0, 480, 92, 1, 0, 0, 0, 481, 482, 5, 61, 0, 0, 482, 483, 5, 62, 0, 0, 483, 94, 1, 0, 0, 0, 484, 485, 5, 109, 0, 0, 485, 486, 5, 101, 0, 0, 486, 487, 5, 109, 0, 0, 487, 488, 5, 111, 0, 0, 488, 489, 5, 114, 0, 0, 489, 490, 5, 121, 0, 0, 490, 96, 1, 0, 0, 0, 491, 492, 5, 115, 0, 0, 492, 493, 5, 116, 0, 0, 493, 494, 5, 111, 0, 0, 494, 495, 5, 114, 0, 0, 495, 496, 5, 97, 0, 0, 496, 497, 5, 103, 0, 0, 497, 498, 5, 101, 0, 0, 498, 98, 1, 0, 0, 0, 499, 500, 5, 99, 0, 0, 500, 501, 5, 97, 0, 0, 501, 502, 5, 108, 0, 0, 502, 503, 5, 108, 0, 0, 503, 504, 5, 100, 0, 0, 504, 505, 5, 97, 0, 0, 505, 506, 5, 116, 0, 0, 506, 507, 5, 97, 0, 0, 507, 100, 1, 0, 0, 0, 508, 509, 5, 105, 0, 0, 509, 510, 5, 102, 0, 0, 510, 102, 1, 0, 0, 0, 511, 512, 5, 101, 0, 0, 512, 513, 5, 108, 0, 0, 513, 514, 5, 115, 0, 0, 514, 515, 5, 101, 0, 0, 515, 104, 1, 0, 0, 0, 516, 517, 5, 116, 0, 0, 517, 518, 5, 114, 0, 0, 518, 519, 5, 121, 0, 0, 519, 106, 1, 0, 0, 0, 520, 521, 5, 99, 0, 0, 521, 522, 5, 97, 0, 0, 522, 523, 5, 116, 0, 0, 523, 524, 5, 99, 0, 0, 524, 525, 5, 104, 0, 0, 525, 108, 1, 0, 0, 0, 526, 527, 5, 119, 0, 0, 527, 528, 5, 104, 0, 0, 528, 529, 5, 105, 0, 0, 529, 530, 5, 108, 0, 0, 530, 531, 5, 101, 0, 0, 531, 110, 1, 0, 0, 0, 532, 533, 5, 117, 0, 0, 533, 534, 5, 110, 0, 0, 534, 535, 5, 99, 0, 0, 535, 536, 5, 104, 0, 0, 536, 537, 5, 101, 0, 0, 537, 538, 5, 99, 0, 0, 538, 539, 5, 107, 0, 0, 539, 540, 5, 101, 0, 0, 540, 541, 5, 100, 0, 0, 541, 112, 1, 0, 0, 0, 542, 543, 5, 97, 0, 0, 543, 544, 5, 115, 0, 0, 544, 545, 5, 115, 0, 0, 545, 546, 5, 101, 0, 0, 546, 547, 5, 109, 0, 0, 547, 548, 5, 98, 0, 0, 548, 549, 5, 108, 0, 0, 549, 550, 5, 121, 0, 0, 550, 114, 1, 0, 0, 0, 551, 552, 5, 100, 0, 0, 552, 553, 5, 111, 0, 0, 553, 116, 1, 0, 0, 0, 554, 555, 5, 114, 0, 0, 555, 556, 5, 101, 0, 0, 556, 557, 5, 116, 0, 0, 557, 558, 5, 117, 0, 0, 558, 559, 5, 114, 0, 0, 559, 560, 5, 110, 0, 0, 560, 118, 1, 0, 0, 0, 561, 562, 5, 116, 0, 0, 562, 563, 5, 104, 0, 0, 563, 564, 5, 114, 0, 0, 564, 565, 5, 111, 0, 0, 565, 566, 5, 119, 0, 0, 566, 120, 1, 0, 0, 0, 567, 568, 5, 101, 0, 0, 568, 569, 5, 109, 0, 0, 569, 570, 5, 105, 0, 0, 570, 571, 5, 116, 0, 0, 571, 122, 1, 0, 0, 0, 572, 573, 5, 114, 0, 0, 573, 574, 5, 101, 0, 0, 574, 575, 5, 118, 0, 0, 575, 576, 5, 101, 0, 0, 576, 577, 5, 114, 0, 0, 577, 578, 5, 116, 0, 0, 578, 124, 1, 0, 0, 0, 579, 580, 5, 118, 0, 0, 580, 581, 5, 97, 0, 0, 581, 582, 5, 114, 0, 0, 582, 126, 1, 0, 0, 0, 583, 584, 5, 98, 0, 0, 584, 585, 5, 111, 0, 0, 585, 586, 5, 111, 0, 0, 586, 587, 5, 108, 0, 0, 587, 128, 1, 0, 0, 0, 588, 589, 5, 115, 0, 0, 589, 590, 5, 116, 0, 0, 590, 591, 5, 114, 0, 0, 591, 592, 5, 105, 0, 0, 592, 593, 5, 110, 0, 0, 593, 594, 5, 103, 0, 0, 594, 130, 1, 0, 0, 0, 595, 596, 5, 98, 0, 0, 596, 597, 5, 121, 0, 0, 597, 598, 5, 116, 0, 0, 598, 599, 5, 101, 0, 0, 599, 132, 1, 0, 0, 0, 600, 601, 5, 43, 0, 0, 601, 602, 5, 43, 0, 0, 602, 134, 1, 0, 0, 0, 603, 604, 5, 45, 0, 0, 604, 605, 5, 45, 0, 0, 605, 136, 1, 0, 0, 0, 606, 607, 5, 110, 0, 0, 607, 608, 5, 101, 0, 0, 608, 609, 5, 119, 0, 0, 609, 138, 1, 0, 0, 0, 610, 611, 5, 58, 0, 0, 611, 140, 1, 0, 0, 0, 612, 613, 5, 100, 0, 0, 613, 614, 5, 101, 0, 0, 614, 615, 5, 108, 0, 0, 615, 616, 5, 101, 0, 0, 616, 617, 5, 116, 0, 0, 617, 618, 5, 101, 0, 0, 618, 142, 1, 0, 0, 0, 619, 620, 5, 33, 0, 0, 620, 144, 1, 0, 0, 0, 621, 622, 5, 42, 0, 0, 622, 623, 5, 42, 0, 0, 623, 146, 1, 0, 0, 0, 624, 625, 5, 60, 0, 0, 625, 626, 5, 60, 0, 0, 626, 148, 1, 0, 0, 0, 627, 628, 5, 62, 0, 0, 628, 629, 5, 62, 0, 0, 629, 150, 1, 0, 0, 0, 630, 631, 5, 38, 0, 0, 631, 632, 5, 38, 0, 0, 632, 152, 1, 0, 0, 0, 633, 634, 5, 63, 0, 0, 634, 154, 1, 0, 0, 0, 635, 636, 5, 124, 0, 0, 636, 637, 5, 61, 0, 0, 637, 156, 1, 0, 0, 0, 638, 639, 5, 94, 0, 0, 639, 640, 5, 61, 0, 0, 640, 158, 1, 0, 0, 0, 641, 642, 5, 38, 0, 0, 642, 643, 5, 61, 0, 0, 643, 160, 1, 0, 0, 0, 644, 645, 5, 60, 0, 0, 645, 646, 5, 60, 0, 0, 646, 647, 5, 61, 0, 0, 647, 162, 1, 0, 0, 0, 648, 649, 5, 62, 0, 0, 649, 650, 5, 62, 0, 0, 650, 651, 5, 61, 0, 0, 651, 164, 1, 0, 0, 0, 652, 653, 5, 43, 0, 0, 653, 654, 5, 61, 0, 0, 654, 166, 1, 0, 0, 0, 655, 656, 5, 45, 0, 0, 656, 657, 5, 61, 0, 0, 657, 168, 1, 0, 0, 0, 658, 659, 5, 42, 0, 0, 659, 660, 5, 61, 0, 0, 660, 170, 1, 0, 0, 0, 661, 662, 5, 47, 0, 0, 662, 663, 5, 61, 0, 0, 663, 172, 1, 0, 0, 0, 664, 665, 5, 37, 0, 0, 665, 666, 5, 61, 0, 0, 666, 174, 1, 0, 0, 0, 667, 668, 5, 108, 0, 0, 668, 669, 5, 101, 0, 0, 669, 670, 5, 116, 0, 0, 670, 176, 1, 0, 0, 0, 671, 672, 5, 58, 0, 0, 672, 673, 5, 61, 0, 0, 673, 178, 1, 0, 0, 0, 674, 675, 5, 61, 0, 0, 675, 676, 5, 58, 0, 0, 676, 180, 1, 0, 0, 0, 677, 678, 5, 115, 0, 0, 678, 679, 5, 119, 0, 0, 679, 680, 5, 105, 0, 0, 680, 681, 5, 116, 0, 0, 681, 682, 5, 99, 0, 0, 682, 683, 5, 104, 0, 0, 683, 182, 1, 0, 0, 0, 684, 685, 5, 99, 0, 0, 685, 686, 5, 97, 0, 0, 686, 687, 5, 115, 0, 0, 687, 688, 5, 101, 0, 0, 688, 184, 1, 0, 0, 0, 689, 690, 5, 100, 0, 0, 690, 691, 5, 101, 0, 0, 691, 692, 5, 102, 0, 0, 692, 693, 5, 97, 0, 0, 693, 694, 5, 117, 0, 0, 694, 695, 5, 108, 0, 0, 695, 696, 5, 116, 0, 0, 696, 186, 1, 0, 0, 0, 697, 698, 5, 45, 0, 0, 698, 699, 5, 62, 0, 0, 699, 188, 1, 0, 0, 0, 700, 701, 5, 99, 0, 0, 701, 702, 5, 97, 0, 0, 702, 703, 5, 108, 0, 0, 703, 704, 5, 108, 0, 0, 704, 705, 5, 98, 0, 0, 705, 706, 5, 97, 0, 0, 706, 707, 5, 99, 0, 0, 707, 708, 5, 107, 0, 0, 708, 190, 1, 0, 0, 0, 709, 710, 5, 111, 0, 0, 710, 711, 5, 118, 0, 0, 711, 712, 5, 101, 0, 0, 712, 713, 5, 114, 0, 0, 713, 714, 5, 114, 0, 0, 714, 715, 5, 105, 0, 0, 715, 716, 5, 100, 0, 0, 716, 717, 5, 101, 0, 0, 717, 192, 1, 0, 0, 0, 718, 719, 5, 105, 0, 0, 719, 720, 5, 110, 0, 0, 720, 721, 5, 116, 0, 0, 721, 723, 1, 0, 0, 0, 722, 724, 3, 203, 101, 0, 723, 722, 1, 0, 0, 0, 723, 724, 1, 0, 0, 0, 724, 194, 1, 0, 0, 0, 725, 726, 5, 117, 0, 0, 726, 727, 5, 105, 0, 0, 727, 728, 5, 110, 0, 0, 728, 729, 5, 116, 0, 0, 729, 731, 1, 0, 0, 0, 730, 732, 3, 203, 101, 0, 731, 730, 1, 0, 0, 0, 731, 732, 1, 0, 0, 0, 732, 196, 1, 0, 0, 0, 733, 734, 5, 98, 0, 0, 734, 735, 5, 121, 0, 0, 735, 736, 5, 116, 0, 0, 736, 737, 5, 101, 0, 0, 737, 738, 5, 115, 0, 0, 738, 740, 1, 0, 0, 0, 739, 741, 3, 205, 102, 0, 740, 739, 1, 0, 0, 0, 740, 741, 1, 0, 0, 0, 741, 198, 1, 0, 0, 0, 742, 743, 5, 102, 0, 0, 743, 744, 5, 105, 0, 0, 744, 745, 5, 120, 0, 0, 745, 746, 5, 101, 0, 0, 746, 747, 5, 100, 0, 0, 747, 755, 1, 0, 0, 0, 748, 749, 3, 203, 101, 0, 749, 751, 5, 120, 0, 0, 750, 752, 7, 0, 0, 0, 751, 750, 1, 0, 0, 0, 752, 753, 1, 0, 0, 0, 753, 751, 1, 0, 0, 0, 753, 754, 1, 0, 0, 0, 754, 756, 1, 0, 0, 0, 755, 748, 1, 0, 0, 0, 755, 756, 1, 0, 0, 0, 756, 200, 1, 0, 0, 0, 757, 758, 5, 117, 0, 0, 758, 759, 5, 102, 0, 0, 759, 760, 5, 105, 0, 0, 760, 761, 5, 120, 0, 0, 761, 762, 5, 101, 0, 0, 762, 763, 5, 100, 0, 0, 763, 771, 1, 0, 0, 0, 764, 765, 3, 203, 101, 0, 765, 767, 5, 120, 0, 0, 766, 768, 7, 0, 0, 0, 767, 766, 1, 0, 0, 0, 768, 769, 1, 0, 0, 0, 769, 767, 1, 0, 0, 0, 769, 770, 1, 0, 0, 0, 770, 772, 1, 0, 0, 0, 771, 764, 1, 0, 0, 0, 771, 772, 1, 0, 0, 0, 772, 202, 1, 0, 0, 0, 773, 857, 5, 56, 0, 0, 774, 775, 5, 49, 0, 0, 775, 857, 5, 54, 0, 0, 776, 777, 5, 50, 0, 0, 777, 857, 5, 52, 0, 0, 778, 779, 5, 51, 0, 0, 779, 857, 5, 50, 0, 0, 780, 781, 5, 52, 0, 0, 781, 857, 5, 48, 0, 0, 782, 783, 5, 52, 0, 0, 783, 857, 5, 56, 0, 0, 784, 785, 5, 53, 0, 0, 785, 857, 5, 54, 0, 0, 786, 787, 5, 54, 0, 0, 787, 857, 5, 52, 0, 0, 788, 789, 5, 55, 0, 0, 789, 857, 5, 50, 0, 0, 790, 791, 5, 56, 0, 0, 791, 857, 5, 48, 0, 0, 792, 793, 5, 56, 0, 0, 793, 857, 5, 56, 0, 0, 794, 795, 5, 57, 0, 0, 795, 857, 5, 54, 0, 0, 796, 797, 5, 49, 0, 0, 797, 798, 5, 48, 0, 0, 798, 857, 5, 52, 0, 0, 799, 800, 5, 49, 0, 0, 800, 801, 5, 49, 0, 0, 801, 857, 5, 50, 0, 0, 802, 803, 5, 49, 0, 0, 803, 804, 5, 50, 0, 0, 804, 857, 5, 48, 0, 0, 805, 806, 5, 49, 0, 0, 806, 807, 5, 50, 0, 0, 807, 857, 5, 56, 0, 0, 808, 809, 5, 49, 0, 0, 809, 810, 5, 51, 0, 0, 810, 857, 5, 54, 0, 0, 811, 812, 5, 49, 0, 0, 812, 813, 5, 52, 0, 0, 813, 857, 5, 52, 0, 0, 814, 815, 5, 49, 0, 0, 815, 816, 5, 53, 0, 0, 816, 857, 5, 50, 0, 0, 817, 818, 5, 49, 0, 0, 818, 819, 5, 54, 0, 0, 819, 857, 5, 48, 0, 0, 820, 821, 5, 49, 0, 0, 821, 822, 5, 54, 0, 0, 822, 857, 5, 56, 0, 0, 823, 824, 5, 49, 0, 0, 824, 825, 5, 55, 0, 0, 825, 857, 5, 54, 0, 0, 826, 827, 5, 49, 0, 0, 827, 828, 5, 56, 0, 0, 828, 857, 5, 52, 0, 0, 829, 830, 5, 49, 0, 0, 830, 831, 5, 57, 0, 0, 831, 857, 5, 50, 0, 0, 832, 833, 5, 50, 0, 0, 833, 834, 5, 48, 0, 0, 834, 857, 5, 48, 0, 0, 835, 836, 5, 50, 0, 0, 836, 837, 5, 48, 0, 0, 837, 857, 5, 56, 0, 0, 838, 839, 5, 50, 0, 0, 839, 840, 5, 49, 0, 0, 840, 857, 5, 54, 0, 0, 841, 842, 5, 50, 0, 0, 842, 843, 5, 50, 0, 0, 843, 857, 5, 52, 0, 0, 844, 845, 5, 50, 0, 0, 845, 846, 5, 51, 0, 0, 846, 857, 5, 50, 0, 0, 847, 848, 5, 50, 0, 0, 848, 849, 5, 52, 0, 0, 849, 857, 5, 48, 0, 0, 850, 851, 5, 50, 0, 0, 851, 852, 5, 52, 0, 0, 852, 857, 5, 56, 0, 0, 853, 854, 5, 50, 0, 0, 854, 855, 5, 53, 0, 0, 855, 857, 5, 54, 0, 0, 856, 773, 1, 0, 0, 0, 856, 774, 1, 0, 0, 0, 856, 776, 1, 0, 0, 0, 856, 778, 1, 0, 0, 0, 856, 780, 1, 0, 0, 0, 856, 782, 1, 0, 0, 0, 856, 784, 1, 0, 0, 0, 856, 786, 1, 0, 0, 0, 856, 788, 1, 0, 0, 0, 856, 790, 1, 0, 0, 0, 856, 792, 1, 0, 0, 0, 856, 794, 1, 0, 0, 0, 856, 796, 1, 0, 0, 0, 856, 799, 1, 0, 0, 0, 856, 802, 1, 0, 0, 0, 856, 805, 1, 0, 0, 0, 856, 808, 1, 0, 0, 0, 856, 811, 1, 0, 0, 0, 856, 814, 1, 0, 0, 0, 856, 817, 1, 0, 0, 0, 856, 820, 1, 0, 0, 0, 856, 823, 1, 0, 0, 0, 856, 826, 1, 0, 0, 0, 856, 829, 1, 0, 0, 0, 856, 832, 1, 0, 0, 0, 856, 835, 1, 0, 0, 0, 856, 838, 1, 0, 0, 0, 856, 841, 1, 0, 0, 0, 856, 844, 1, 0, 0, 0, 856, 847, 1, 0, 0, 0, 856, 850, 1, 0, 0, 0, 856, 853, 1, 0, 0, 0, 857, 204, 1, 0, 0, 0, 858, 864, 7, 1, 0, 0, 859, 860, 7, 2, 0, 0, 860, 864, 7, 0, 0, 0, 861, 862, 5, 51, 0, 0, 862, 864, 7, 3, 0, 0, 863, 858, 1, 0, 0, 0, 863, 859, 1, 0, 0, 0, 863, 861, 1, 0, 0, 0, 864, 206, 1, 0, 0, 0, 865, 866, 5, 116, 0, 0, 866, 867, 5, 114, 0, 0, 867, 868, 5, 117, 0, 0, 868, 875, 5, 101, 0, 0, 869, 870, 5, 102, 0, 0, 870, 871, 5, 97, 0, 0, 871, 872, 5, 108, 0, 0, 872, 873, 5, 115, 0, 0, 873, 875, 5, 101, 0, 0, 874, 865, 1, 0, 0, 0, 874, 869, 1, 0, 0, 0, 875, 208, 1, 0, 0, 0, 876, 883, 3, 211, 105, 0, 877, 879, 3, 211, 105, 0, 878, 877, 1, 0, 0, 0, 878, 879, 1, 0, 0, 0, 879, 880, 1, 0, 0, 0, 880, 881, 5, 46, 0, 0, 881, 883, 3, 211, 105, 0, 882, 876, 1, 0, 0, 0, 882, 878, 1, 0, 0, 0, 883, 889, 1, 0, 0, 0, 884, 886, 7, 4, 0, 0, 885, 887, 5, 45, 0, 0, 886, 885, 1, 0, 0, 0, 886, 887, 1, 0, 0, 0, 887, 888, 1, 0, 0, 0, 888, 890, 3, 211, 105, 0, 889, 884, 1, 0, 0, 0, 889, 890, 1, 0, 0, 0, 890, 210, 1, 0, 0, 0, 891, 898, 7, 0, 0, 0, 892, 894, 5, 95, 0, 0, 893, 892, 1, 0, 0, 0, 893, 894, 1, 0, 0, 0, 894, 895, 1, 0, 0, 0, 895, 897, 7, 0, 0, 0, 896, 893, 1, 0, 0, 0, 897, 900, 1, 0, 0, 0, 898, 896, 1, 0, 0, 0, 898, 899, 1, 0, 0, 0, 899, 212, 1, 0, 0, 0, 900, 898, 1, 0, 0, 0, 901, 902, 5, 48, 0, 0, 902, 903, 7, 5, 0, 0, 903, 904, 3, 215, 107, 0, 904, 214, 1, 0, 0, 0, 905, 912, 3, 221, 110, 0, 906, 908, 5, 95, 0, 0, 907, 906, 1, 0, 0, 0, 907, 908, 1, 0, 0, 0, 908, 909, 1, 0, 0, 0, 909, 911, 3, 221, 110, 0, 910, 907, 1, 0, 0, 0, 911, 914, 1, 0, 0, 0, 912, 910, 1, 0, 0, 0, 912, 913, 1, 0, 0, 0, 913, 216, 1, 0, 0, 0, 914, 912, 1, 0, 0, 0, 915, 916, 5, 119, 0, 0, 916, 917, 5, 101, 0, 0, 917, 972, 5, 105, 0, 0, 918, 919, 5, 103, 0, 0, 919, 920, 5, 119, 0, 0, 920, 921, 5, 101, 0, 0, 921, 972, 5, 105, 0, 0, 922, 923, 5, 115, 0, 0, 923, 924, 5, 122, 0, 0, 924, 925, 5, 97, 0, 0, 925, 926, 5, 98, 0, 0, 926, 972, 5, 111, 0, 0, 927, 928, 5, 102, 0, 0, 928, 929, 5, 105, 0, 0, 929, 930, 5, 110, 0, 0, 930, 931, 5, 110, 0, 0, 931, 932, 5, 101, 0, 0, 932, 972, 5, 121, 0, 0, 933, 934, 5, 101, 0, 0, 934, 935, 5, 116, 0, 0, 935, 936, 5, 104, 0, 0, 936, 937, 5, 101, 0, 0, 937, 972, 5, 114, 0, 0, 938, 939, 5, 115, 0, 0, 939, 940, 5, 101, 0, 0, 940, 941, 5, 99, 0, 0, 941, 942, 5, 111, 0, 0, 942, 943, 5, 110, 0, 0, 943, 944, 5, 100, 0, 0, 944, 972, 5, 115, 0, 0, 945, 946, 5, 109, 0, 0, 946, 947, 5, 105, 0, 0, 947, 948, 5, 110, 0, 0, 948, 949, 5, 117, 0, 0, 949, 950, 5, 116, 0, 0, 950, 951, 5, 101, 0, 0, 951, 972, 5, 115, 0, 0, 952, 953, 5, 104, 0, 0, 953, 954, 5, 111, 0, 0, 954, 955, 5, 117, 0, 0, 955, 956, 5, 114, 0, 0, 956, 972, 5, 115, 0, 0, 957, 958, 5, 100, 0, 0, 958, 959, 5, 97, 0, 0, 959, 960, 5, 121, 0, 0, 960, 972, 5, 115, 0, 0, 961, 962, 5, 119, 0, 0, 962, 963, 5, 101, 0, 0, 963, 964, 5, 101, 0, 0, 964, 965, 5, 107, 0, 0, 965, 972, 5, 115, 0, 0, 966, 967, 5, 121, 0, 0, 967, 968, 5, 101, 0, 0, 968, 969, 5, 97, 0, 0, 969, 970, 5, 114, 0, 0, 970, 972, 5, 115, 0, 0, 971, 915, 1, 0, 0, 0, 971, 918, 1, 0, 0, 0, 971, 922, 1, 0, 0, 0, 971, 927, 1, 0, 0, 0, 971, 933, 1, 0, 0, 0, 971, 938, 1, 0, 0, 0, 971, 945, 1, 0, 0, 0, 971, 952, 1, 0, 0, 0, 971, 957, 1, 0, 0, 0, 971, 961, 1, 0, 0, 0, 971, 966, 1, 0, 0, 0, 972, 218, 1, 0, 0, 0, 973, 974, 5, 104, 0, 0, 974, 975, 5, 101, 0, 0, 975, 976, 5, 120, 0, 0, 976, 987, 1, 0, 0, 0, 977, 979, 5, 34, 0, 0, 978, 980, 3, 215, 107, 0, 979, 978, 1, 0, 0, 0, 979, 980, 1, 0, 0, 0, 980, 981, 1, 0, 0, 0, 981, 988, 5, 34, 0, 0, 982, 984, 5, 39, 0, 0, 983, 985, 3, 215, 107, 0, 984, 983, 1, 0, 0, 0, 984, 985, 1, 0, 0, 0, 985, 986, 1, 0, 0, 0, 986, 988, 5, 39, 0, 0, 987, 977, 1, 0, 0, 0, 987, 982, 1, 0, 0, 0, 988, 220, 1, 0, 0, 0, 989, 990, 7, 6, 0, 0, 990, 222, 1, 0, 0, 0, 991, 992, 5, 97, 0, 0, 992, 993, 5, 98, 0, 0, 993, 994, 5, 115, 0, 0, 994, 995, 5, 116, 0, 0, 995, 996, 5, 114, 0, 0, 996, 997, 5, 97, 0, 0, 997, 998, 5, 99, 0, 0, 998, 1080, 5, 116, 0, 0, 999, 1000, 5, 97, 0, 0, 1000, 1001, 5, 102, 0, 0, 1001, 1002, 5, 116, 0, 0, 1002, 1003, 5, 101, 0, 0, 1003, 1080, 5, 114, 0, 0, 1004, 1005, 5, 99, 0, 0, 1005, 1006, 5, 97, 0, 0, 1006, 1007, 5, 115, 0, 0, 1007, 1080, 5, 101, 0, 0, 1008, 1009, 5, 99, 0, 0, 1009, 1010, 5, 97, 0, 0, 1010, 1011, 5, 116, 0, 0, 1011, 1012, 5, 99, 0, 0, 1012, 1080, 5, 104, 0, 0, 1013, 1014, 5, 100, 0, 0, 1014, 1015, 5, 101, 0, 0, 1015, 1016, 5, 102, 0, 0, 1016, 1017, 5, 97, 0, 0, 1017, 1018, 5, 117, 0, 0, 1018, 1019, 5, 108, 0, 0, 1019, 1080, 5, 116, 0, 0, 1020, 1021, 5, 102, 0, 0, 1021, 1022, 5, 105, 0, 0, 1022, 1023, 5, 110, 0, 0, 1023, 1024, 5, 97, 0, 0, 1024, 1080, 5, 108, 0, 0, 1025, 1026, 5, 105, 0, 0, 1026, 1080, 5, 110, 0, 0, 1027, 1028, 5, 105, 0, 0, 1028, 1029, 5, 110, 0, 0, 1029, 1030, 5, 108, 0, 0, 1030, 1031, 5, 105, 0, 0, 1031, 1032, 5, 110, 0, 0, 1032, 1080, 5, 101, 0, 0, 1033, 1034, 5, 108, 0, 0, 1034, 1035, 5, 101, 0, 0, 1035, 1080, 5, 116, 0, 0, 1036, 1037, 5, 109, 0, 0, 1037, 1038, 5, 97, 0, 0, 1038, 1039, 5, 116, 0, 0, 1039, 1040, 5, 99, 0, 0, 1040, 1080, 5, 104, 0, 0, 1041, 1042, 5, 110, 0, 0, 1042, 1043, 5, 117, 0, 0, 1043, 1044, 5, 108, 0, 0, 1044, 1080, 5, 108, 0, 0, 1045, 1046, 5, 111, 0, 0, 1046, 1080, 5, 102, 0, 0, 1047, 1048, 5, 114, 0, 0, 1048, 1049, 5, 101, 0, 0, 1049, 1050, 5, 108, 0, 0, 1050, 1051, 5, 111, 0, 0, 1051, 1052, 5, 99, 0, 0, 1052, 1053, 5, 97, 0, 0, 1053, 1054, 5, 116, 0, 0, 1054, 1055, 5, 97, 0, 0, 1055, 1056, 5, 98, 0, 0, 1056, 1057, 5, 108, 0, 0, 1057, 1080, 5, 101, 0, 0, 1058, 1059, 5, 115, 0, 0, 1059, 1060, 5, 116, 0, 0, 1060, 1061, 5, 97, 0, 0, 1061, 1062, 5, 116, 0, 0, 1062, 1063, 5, 105, 0, 0, 1063, 1080, 5, 99, 0, 0, 1064, 1065, 5, 115, 0, 0, 1065, 1066, 5, 119, 0, 0, 1066, 1067, 5, 105, 0, 0, 1067, 1068, 5, 116, 0, 0, 1068, 1069, 5, 99, 0, 0, 1069, 1080, 5, 104, 0, 0, 1070, 1071, 5, 116, 0, 0, 1071, 1072, 5, 114, 0, 0, 1072, 1080, 5, 121, 0, 0, 1073, 1074, 5, 116, 0, 0, 1074, 1075, 5, 121, 0, 0, 1075, 1076, 5, 112, 0, 0, 1076, 1077, 5, 101, 0, 0, 1077, 1078, 5, 111, 0, 0, 1078, 1080, 5, 102, 0, 0, 1079, 991, 1, 0, 0, 0, 1079, 999, 1, 0, 0, 0, 1079, 1004, 1, 0, 0, 0, 1079, 1008, 1, 0, 0, 0, 1079, 1013, 1, 0, 0, 0, 1079, 1020, 1, 0, 0, 0, 1079, 1025, 1, 0, 0, 0, 1079, 1027, 1, 0, 0, 0, 1079, 1033, 1, 0, 0, 0, 1079, 1036, 1, 0, 0, 0, 1079, 1041, 1, 0, 0, 0, 1079, 1045, 1, 0, 0, 0, 1079, 1047, 1, 0, 0, 0, 1079, 1058, 1, 0, 0, 0, 1079, 1064, 1, 0, 0, 0, 1079, 1070, 1, 0, 0, 0, 1079, 1073, 1, 0, 0, 0, 1080, 224, 1, 0, 0, 0, 1081, 1082, 5, 97, 0, 0, 1082, 1083, 5, 110, 0, 0, 1083, 1084, 5, 111, 0, 0, 1084, 1085, 5, 110, 0, 0, 1085, 1086, 5, 121, 0, 0, 1086, 1087, 5, 109, 0, 0, 1087, 1088, 5, 111, 0, 0, 1088, 1089, 5, 117, 0, 0, 1089, 1090, 5, 115, 0, 0, 1090, 226, 1, 0, 0, 0, 1091, 1092, 5, 98, 0, 0, 1092, 1093, 5, 114, 0, 0, 1093, 1094, 5, 101, 0, 0, 1094, 1095, 5, 97, 0, 0, 1095, 1096, 5, 107, 0, 0, 1096, 228, 1, 0, 0, 0, 1097, 1098, 5, 99, 0, 0, 1098, 1099, 5, 111, 0, 0, 1099, 1100, 5, 110, 0, 0, 1100, 1101, 5, 115, 0, 0, 1101, 1102, 5, 116, 0, 0, 1102, 1103, 5, 97, 0, 0, 1103, 1104, 5, 110, 0, 0, 1104, 1105, 5, 116, 0, 0, 1105, 230, 1, 0, 0, 0, 1106, 1107, 5, 116, 0, 0, 1107, 1108, 5, 114, 0, 0, 1108, 1109, 5, 97, 0, 0, 1109, 1110, 5, 110, 0, 0, 1110, 1111, 5, 115, 0, 0, 1111, 1112, 5, 105, 0, 0, 1112, 1113, 5, 101, 0, 0, 1113, 1114, 5, 110, 0, 0, 1114, 1115, 5, 116, 0, 0, 1115, 232, 1, 0, 0, 0, 1116, 1117, 5, 105, 0, 0, 1117, 1118, 5, 109, 0, 0, 1118, 1119, 5, 109, 0, 0, 1119, 1120, 5, 117, 0, 0, 1120, 1121, 5, 116, 0, 0, 1121, 1122, 5, 97, 0, 0, 1122, 1123, 5, 98, 0, 0, 1123, 1124, 5, 108, 0, 0, 1124, 1125, 5, 101, 0, 0, 1125, 234, 1, 0, 0, 0, 1126, 1127, 5, 99, 0, 0, 1127, 1128, 5, 111, 0, 0, 1128, 1129, 5, 110, 0, 0, 1129, 1130, 5, 116, 0, 0, 1130, 1131, 5, 105, 0, 0, 1131, 1132, 5, 110, 0, 0, 1132, 1133, 5, 117, 0, 0, 1133, 1134, 5, 101, 0, 0, 1134, 236, 1, 0, 0, 0, 1135, 1136, 5, 108, 0, 0, 1136, 1137, 5, 101, 0, 0, 1137, 1138, 5, 97, 0, 0, 1138, 1139, 5, 118, 0, 0, 1139, 1140, 5, 101, 0, 0, 1140, 238, 1, 0, 0, 0, 1141, 1142, 5, 101, 0, 0, 1142, 1143, 5, 120, 0, 0, 1143, 1144, 5, 116, 0, 0, 1144, 1145, 5, 101, 0, 0, 1145, 1146, 5, 114, 0, 0, 1146, 1147, 5, 110, 0, 0, 1147, 1148, 5, 97, 0, 0, 1148, 1149, 5, 108, 0, 0, 1149, 240, 1, 0, 0, 0, 1150, 1151, 5, 105, 0, 0, 1151, 1152, 5, 110, 0, 0, 1152, 1153, 5, 100, 0, 0, 1153, 1154, 5, 101, 0, 0, 1154, 1155, 5, 120, 0, 0, 1155, 1156, 5, 101, 0, 0, 1156, 1157, 5, 100, 0, 0, 1157, 242, 1, 0, 0, 0, 1158, 1159, 5, 105, 0, 0, 1159, 1160, 5, 110, 0, 0, 1160, 1161, 5, 116, 0, 0, 1161, 1162, 5, 101, 0, 0, 1162, 1163, 5, 114, 0, 0, 1163, 1164, 5, 110, 0, 0, 1164, 1165, 5, 97, 0, 0, 1165, 1166, 5, 108, 0, 0, 1166, 244, 1, 0, 0, 0, 1167, 1168, 5, 112, 0, 0, 1168, 1169, 5, 97, 0, 0, 1169, 1170, 5, 121, 0, 0, 1170, 1171, 5, 97, 0, 0, 1171, 1172, 5, 98, 0, 0, 1172, 1173, 5, 108, 0, 0, 1173, 1174, 5, 101, 0, 0, 1174, 246, 1, 0, 0, 0, 1175, 1176, 5, 112, 0, 0, 1176, 1177, 5, 114, 0, 0, 1177, 1178, 5, 105, 0, 0, 1178, 1179, 5, 118, 0, 0, 1179, 1180, 5, 97, 0, 0, 1180, 1181, 5, 116, 0, 0, 1181, 1182, 5, 101, 0, 0, 1182, 248, 1, 0, 0, 0, 1183, 1184, 5, 112, 0, 0, 1184, 1185, 5, 117, 0, 0, 1185, 1186, 5, 98, 0, 0, 1186, 1187, 5, 108, 0, 0, 1187, 1188, 5, 105, 0, 0, 1188, 1189, 5, 99, 0, 0, 1189, 250, 1, 0, 0, 0, 1190, 1191, 5, 118, 0, 0, 1191, 1192, 5, 105, 0, 0, 1192, 1193, 5, 114, 0, 0, 1193, 1194, 5, 116, 0, 0, 1194, 1195, 5, 117, 0, 0, 1195, 1196, 5, 97, 0, 0, 1196, 1197, 5, 108, 0, 0, 1197, 252, 1, 0, 0, 0, 1198, 1199, 5, 112, 0, 0, 1199, 1200, 5, 117, 0, 0, 1200, 1201, 5, 114, 0, 0, 1201, 1202, 5, 101, 0, 0, 1202, 254, 1, 0, 0, 0, 1203, 1204, 5, 116, 0, 0, 1204, 1205, 5, 121, 0, 0, 1205, 1206, 5, 112, 0, 0, 1206, 1207, 5, 101, 0, 0, 1207, 256, 1, 0, 0, 0, 1208, 1209, 5, 118, 0, 0, 1209, 1210, 5, 105, 0, 0, 1210, 1211, 5, 101, 0, 0, 1211, 1212, 5, 119, 0, 0, 1212, 258, 1, 0, 0, 0, 1213, 1214, 5, 103, 0, 0, 1214, 1215, 5, 108, 0, 0, 1215, 1216, 5, 111, 0, 0, 1216, 1217, 5, 98, 0, 0, 1217, 1218, 5, 97, 0, 0, 1218, 1219, 5, 108, 0, 0, 1219, 260, 1, 0, 0, 0, 1220, 1221, 5, 99, 0, 0, 1221, 1222, 5, 111, 0, 0, 1222, 1223, 5, 110, 0, 0, 1223, 1224, 5, 115, 0, 0, 1224, 1225, 5, 116, 0, 0, 1225, 1226, 5, 114, 0, 0, 1226, 1227, 5, 117, 0, 0, 1227, 1228, 5, 99, 0, 0, 1228, 1229, 5, 116, 0, 0, 1229, 1230, 5, 111, 0, 0, 1230, 1231, 5, 114, 0, 0, 1231, 262, 1, 0, 0, 0, 1232, 1233, 5, 102, 0, 0, 1233, 1234, 5, 97, 0, 0, 1234, 1235, 5, 108, 0, 0, 1235, 1236, 5, 108, 0, 0, 1236, 1237, 5, 98, 0, 0, 1237, 1238, 5, 97, 0, 0, 1238, 1239, 5, 99, 0, 0, 1239, 1240, 5, 107, 0, 0, 1240, 264, 1, 0, 0, 0, 1241, 1242, 5, 114, 0, 0, 1242, 1243, 5, 101, 0, 0, 1243, 1244, 5, 99, 0, 0, 1244, 1245, 5, 101, 0, 0, 1245, 1246, 5, 105, 0, 0, 1246, 1247, 5, 118, 0, 0, 1247, 1248, 5, 101, 0, 0, 1248, 266, 1, 0, 0, 0, 1249, 1253, 3, 269, 134, 0, 1250, 1252, 3, 271, 135, 0, 1251, 1250, 1, 0, 0, 0, 1252, 1255, 1, 0, 0, 0, 1253, 1251, 1, 0, 0, 0, 1253, 1254, 1, 0, 0, 0, 1254, 268, 1, 0, 0, 0, 1255, 1253, 1, 0, 0, 0, 1256, 1257, 7, 7, 0, 0, 1257, 270, 1, 0, 0, 0, 1258, 1259, 7, 8, 0, 0, 1259, 272, 1, 0, 0, 0, 1260, 1261, 5, 117, 0, 0, 1261, 1262, 5, 110, 0, 0, 1262, 1263, 5, 105, 0, 0, 1263, 1264, 5, 99, 0, 0, 1264, 1265, 5, 111, 0, 0, 1265, 1266, 5, 100, 0, 0, 1266, 1268, 5, 101, 0, 0, 1267, 1260, 1, 0, 0, 0, 1267, 1268, 1, 0, 0, 0, 1268, 1285, 1, 0, 0, 0, 1269, 1273, 5, 34, 0, 0, 1270, 1272, 3, 275, 137, 0, 1271, 1270, 1, 0, 0, 0, 1272, 1275, 1, 0, 0, 0, 1273, 1271, 1, 0, 0, 0, 1273, 1274, 1, 0, 0, 0, 1274, 1276, 1, 0, 0, 0, 1275, 1273, 1, 0, 0, 0, 1276, 1286, 5, 34, 0, 0, 1277, 1281, 5, 39, 0, 0, 1278, 1280, 3, 277, 138, 0, 1279, 1278, 1, 0, 0, 0, 1280, 1283, 1, 0, 0, 0, 1281, 1279, 1, 0, 0, 0, 1281, 1282, 1, 0, 0, 0, 1282, 1284, 1, 0, 0, 0, 1283, 1281, 1, 0, 0, 0, 1284, 1286, 5, 39, 0, 0, 1285, 1269, 1, 0, 0, 0, 1285, 1277, 1, 0, 0, 0, 1286, 274, 1, 0, 0, 0, 1287, 1291, 8, 9, 0, 0, 1288, 1289, 5, 92, 0, 0, 1289, 1291, 9, 0, 0, 0, 1290, 1287, 1, 0, 0, 0, 1290, 1288, 1, 0, 0, 0, 1291, 276, 1, 0, 0, 0, 1292, 1296, 8, 10, 0, 0, 1293, 1294, 5, 92, 0, 0, 1294, 1296, 9, 0, 0, 0, 1295, 1292, 1, 0, 0, 0, 1295, 1293, 1, 0, 0, 0, 1296, 278, 1, 0, 0, 0, 1297, 1299, 7, 0, 0, 0, 1298, 1297, 1, 0, 0, 0, 1299, 1300, 1, 0, 0, 0, 1300, 1298, 1, 0, 0, 0, 1300, 1301, 1, 0, 0, 0, 1301, 1302, 1, 0, 0, 0, 1302, 1304, 5, 46, 0, 0, 1303, 1305, 7, 0, 0, 0, 1304, 1303, 1, 0, 0, 0, 1305, 1306, 1, 0, 0, 0, 1306, 1304, 1, 0, 0, 0, 1306, 1307, 1, 0, 0, 0, 1307, 1314, 1, 0, 0, 0, 1308, 1310, 5, 46, 0, 0, 1309, 1311, 7, 0, 0, 0, 1310, 1309, 1, 0, 0, 0, 1311, 1312, 1, 0, 0, 0, 1312, 1310, 1, 0, 0, 0, 1312, 1313, 1, 0, 0, 0, 1313, 1315, 1, 0, 0, 0, 1314, 1308, 1, 0, 0, 0, 1314, 1315, 1, 0, 0, 0, 1315, 280, 1, 0, 0, 0, 1316, 1318, 7, 11, 0, 0, 1317, 1316, 1, 0, 0, 0, 1318, 1319, 1, 0, 0, 0, 1319, 1317, 1, 0, 0, 0, 1319, 1320, 1, 0, 0, 0, 1320, 1321, 1, 0, 0, 0, 1321, 1322, 6, 140, 0, 0, 1322, 282, 1, 0, 0, 0, 1323, 1324, 5, 47, 0, 0, 1324, 1325, 5, 42, 0, 0, 1325, 1329, 1, 0, 0, 0, 1326, 1328, 9, 0, 0, 0, 1327, 1326, 1, 0, 0, 0, 1328, 1331, 1, 0, 0, 0, 1329, 1330, 1, 0, 0, 0, 1329, 1327, 1, 0, 0, 0, 1330, 1332, 1, 0, 0, 0, 1331, 1329, 1, 0, 0, 0, 1332, 1333, 5, 42, 0, 0, 1333, 1334, 5, 47, 0, 0, 1334, 1335, 1, 0, 0, 0, 1335, 1336, 6, 141, 1, 0, 1336, 284, 1, 0, 0, 0, 1337, 1338, 5, 47, 0, 0, 1338, 1339, 5, 47, 0, 0, 1339, 1343, 1, 0, 0, 0, 1340, 1342, 8, 12, 0, 0, 1341, 1340, 1, 0, 0, 0, 1342, 1345, 1, 0, 0, 0, 1343, 1341, 1, 0, 0, 0, 1343, 1344, 1, 0, 0, 0, 1344, 1346, 1, 0, 0, 0, 1345, 1343, 1, 0, 0, 0, 1346, 1347, 6, 142, 1, 0, 1347, 286, 1, 0, 0, 0, 38, 0, 723, 731, 740, 753, 755, 769, 771, 856, 863, 874, 878, 882, 886, 889, 893, 898, 907, 912, 971, 979, 984, 987, 1079, 1253, 1267, 1273, 1281, 1285, 1290, 1295, 1300, 1306, 1312, 1314, 1319, 1329, 1343, 2, 6, 0, 0, 0, 1, 0] \ No newline at end of file diff --git a/src/antlr/SolidityLexer.tokens b/src/antlr/SolidityLexer.tokens index 4064f6f..a5b5d2a 100644 --- a/src/antlr/SolidityLexer.tokens +++ b/src/antlr/SolidityLexer.tokens @@ -108,29 +108,30 @@ ReservedKeyword=107 AnonymousKeyword=108 BreakKeyword=109 ConstantKeyword=110 -ImmutableKeyword=111 -ContinueKeyword=112 -LeaveKeyword=113 -ExternalKeyword=114 -IndexedKeyword=115 -InternalKeyword=116 -PayableKeyword=117 -PrivateKeyword=118 -PublicKeyword=119 -VirtualKeyword=120 -PureKeyword=121 -TypeKeyword=122 -ViewKeyword=123 -GlobalKeyword=124 -ConstructorKeyword=125 -FallbackKeyword=126 -ReceiveKeyword=127 -Identifier=128 -StringLiteralFragment=129 -VersionLiteral=130 -WS=131 -COMMENT=132 -LINE_COMMENT=133 +TransientKeyword=111 +ImmutableKeyword=112 +ContinueKeyword=113 +LeaveKeyword=114 +ExternalKeyword=115 +IndexedKeyword=116 +InternalKeyword=117 +PayableKeyword=118 +PrivateKeyword=119 +PublicKeyword=120 +VirtualKeyword=121 +PureKeyword=122 +TypeKeyword=123 +ViewKeyword=124 +GlobalKeyword=125 +ConstructorKeyword=126 +FallbackKeyword=127 +ReceiveKeyword=128 +Identifier=129 +StringLiteralFragment=130 +VersionLiteral=131 +WS=132 +COMMENT=133 +LINE_COMMENT=134 'pragma'=1 ';'=2 '*'=3 @@ -230,20 +231,21 @@ LINE_COMMENT=133 'anonymous'=108 'break'=109 'constant'=110 -'immutable'=111 -'continue'=112 -'leave'=113 -'external'=114 -'indexed'=115 -'internal'=116 -'payable'=117 -'private'=118 -'public'=119 -'virtual'=120 -'pure'=121 -'type'=122 -'view'=123 -'global'=124 -'constructor'=125 -'fallback'=126 -'receive'=127 +'transient'=111 +'immutable'=112 +'continue'=113 +'leave'=114 +'external'=115 +'indexed'=116 +'internal'=117 +'payable'=118 +'private'=119 +'public'=120 +'virtual'=121 +'pure'=122 +'type'=123 +'view'=124 +'global'=125 +'constructor'=126 +'fallback'=127 +'receive'=128 diff --git a/src/antlr/SolidityLexer.ts b/src/antlr/SolidityLexer.ts index eedaf07..92bde3f 100644 --- a/src/antlr/SolidityLexer.ts +++ b/src/antlr/SolidityLexer.ts @@ -1,4 +1,4 @@ -// Generated from antlr/Solidity.g4 by ANTLR 4.13.1 +// Generated from antlr/Solidity.g4 by ANTLR 4.13.2 // noinspection ES6UnusedImports,JSUnusedGlobalSymbols,JSUnusedLocalSymbols import { ATN, @@ -122,29 +122,30 @@ export default class SolidityLexer extends Lexer { public static readonly AnonymousKeyword = 108; public static readonly BreakKeyword = 109; public static readonly ConstantKeyword = 110; - public static readonly ImmutableKeyword = 111; - public static readonly ContinueKeyword = 112; - public static readonly LeaveKeyword = 113; - public static readonly ExternalKeyword = 114; - public static readonly IndexedKeyword = 115; - public static readonly InternalKeyword = 116; - public static readonly PayableKeyword = 117; - public static readonly PrivateKeyword = 118; - public static readonly PublicKeyword = 119; - public static readonly VirtualKeyword = 120; - public static readonly PureKeyword = 121; - public static readonly TypeKeyword = 122; - public static readonly ViewKeyword = 123; - public static readonly GlobalKeyword = 124; - public static readonly ConstructorKeyword = 125; - public static readonly FallbackKeyword = 126; - public static readonly ReceiveKeyword = 127; - public static readonly Identifier = 128; - public static readonly StringLiteralFragment = 129; - public static readonly VersionLiteral = 130; - public static readonly WS = 131; - public static readonly COMMENT = 132; - public static readonly LINE_COMMENT = 133; + public static readonly TransientKeyword = 111; + public static readonly ImmutableKeyword = 112; + public static readonly ContinueKeyword = 113; + public static readonly LeaveKeyword = 114; + public static readonly ExternalKeyword = 115; + public static readonly IndexedKeyword = 116; + public static readonly InternalKeyword = 117; + public static readonly PayableKeyword = 118; + public static readonly PrivateKeyword = 119; + public static readonly PublicKeyword = 120; + public static readonly VirtualKeyword = 121; + public static readonly PureKeyword = 122; + public static readonly TypeKeyword = 123; + public static readonly ViewKeyword = 124; + public static readonly GlobalKeyword = 125; + public static readonly ConstructorKeyword = 126; + public static readonly FallbackKeyword = 127; + public static readonly ReceiveKeyword = 128; + public static readonly Identifier = 129; + public static readonly StringLiteralFragment = 130; + public static readonly VersionLiteral = 131; + public static readonly WS = 132; + public static readonly COMMENT = 133; + public static readonly LINE_COMMENT = 134; public static readonly EOF = Token.EOF; public static readonly channelNames: string[] = [ "DEFAULT_TOKEN_CHANNEL", "HIDDEN" ]; @@ -211,6 +212,7 @@ export default class SolidityLexer extends Lexer { null, null, null, "'anonymous'", "'break'", "'constant'", + "'transient'", "'immutable'", "'continue'", "'leave'", "'external'", @@ -285,6 +287,7 @@ export default class SolidityLexer extends Lexer { "AnonymousKeyword", "BreakKeyword", "ConstantKeyword", + "TransientKeyword", "ImmutableKeyword", "ContinueKeyword", "LeaveKeyword", @@ -325,12 +328,12 @@ export default class SolidityLexer extends Lexer { "Uint", "Byte", "Fixed", "Ufixed", "NumberOfBits", "NumberOfBytes", "BooleanLiteral", "DecimalNumber", "DecimalDigits", "HexNumber", "HexDigits", "NumberUnit", "HexLiteralFragment", "HexCharacter", "ReservedKeyword", "AnonymousKeyword", - "BreakKeyword", "ConstantKeyword", "ImmutableKeyword", "ContinueKeyword", - "LeaveKeyword", "ExternalKeyword", "IndexedKeyword", "InternalKeyword", - "PayableKeyword", "PrivateKeyword", "PublicKeyword", "VirtualKeyword", - "PureKeyword", "TypeKeyword", "ViewKeyword", "GlobalKeyword", "ConstructorKeyword", - "FallbackKeyword", "ReceiveKeyword", "Identifier", "IdentifierStart", - "IdentifierPart", "StringLiteralFragment", "DoubleQuotedStringCharacter", + "BreakKeyword", "ConstantKeyword", "TransientKeyword", "ImmutableKeyword", + "ContinueKeyword", "LeaveKeyword", "ExternalKeyword", "IndexedKeyword", + "InternalKeyword", "PayableKeyword", "PrivateKeyword", "PublicKeyword", + "VirtualKeyword", "PureKeyword", "TypeKeyword", "ViewKeyword", "GlobalKeyword", + "ConstructorKeyword", "FallbackKeyword", "ReceiveKeyword", "Identifier", + "IdentifierStart", "IdentifierPart", "StringLiteralFragment", "DoubleQuotedStringCharacter", "SingleQuotedStringCharacter", "VersionLiteral", "WS", "COMMENT", "LINE_COMMENT", ]; @@ -352,7 +355,7 @@ export default class SolidityLexer extends Lexer { public get modeNames(): string[] { return SolidityLexer.modeNames; } - public static readonly _serializedATN: number[] = [4,0,133,1336,6,-1,2, + public static readonly _serializedATN: number[] = [4,0,134,1348,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,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,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,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7, @@ -373,108 +376,109 @@ export default class SolidityLexer extends Lexer { 2,121,7,121,2,122,7,122,2,123,7,123,2,124,7,124,2,125,7,125,2,126,7,126, 2,127,7,127,2,128,7,128,2,129,7,129,2,130,7,130,2,131,7,131,2,132,7,132, 2,133,7,133,2,134,7,134,2,135,7,135,2,136,7,136,2,137,7,137,2,138,7,138, - 2,139,7,139,2,140,7,140,2,141,7,141,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1,1, - 1,2,1,2,1,3,1,3,1,3,1,4,1,4,1,5,1,5,1,6,1,6,1,6,1,7,1,7,1,8,1,8,1,9,1,9, - 1,9,1,10,1,10,1,11,1,11,1,11,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,13,1, - 13,1,13,1,13,1,13,1,14,1,14,1,15,1,15,1,16,1,16,1,17,1,17,1,17,1,17,1,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,1,18,1,19,1, - 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,20,1,20, - 1,20,1,20,1,21,1,21,1,21,1,22,1,22,1,23,1,23,1,24,1,24,1,24,1,24,1,24,1, - 24,1,25,1,25,1,25,1,25,1,25,1,25,1,26,1,26,1,26,1,26,1,27,1,27,1,28,1,28, - 1,29,1,29,1,30,1,30,1,31,1,31,1,32,1,32,1,33,1,33,1,33,1,34,1,34,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,1,36,1,36,1,36, - 1,36,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,38,1,38,1,38,1,38,1, - 38,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,1,40, - 1,41,1,41,1,42,1,42,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,44,1,44,1, - 45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,46,1,46,1,46,1,47,1,47,1,47,1,47, - 1,47,1,47,1,47,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,49,1,49,1,49,1, - 49,1,49,1,49,1,49,1,49,1,49,1,50,1,50,1,50,1,51,1,51,1,51,1,51,1,51,1,52, - 1,52,1,52,1,52,1,53,1,53,1,53,1,53,1,53,1,53,1,54,1,54,1,54,1,54,1,54,1, - 54,1,55,1,55,1,55,1,55,1,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,56,1,56,1,57,1,57,1,57,1,58,1,58,1,58,1,58,1,58,1,58,1, - 58,1,59,1,59,1,59,1,59,1,59,1,59,1,60,1,60,1,60,1,60,1,60,1,61,1,61,1,61, - 1,61,1,61,1,61,1,61,1,62,1,62,1,62,1,62,1,63,1,63,1,63,1,63,1,63,1,64,1, - 64,1,64,1,64,1,64,1,64,1,64,1,65,1,65,1,65,1,65,1,65,1,66,1,66,1,66,1,67, - 1,67,1,67,1,68,1,68,1,68,1,68,1,69,1,69,1,70,1,70,1,70,1,70,1,70,1,70,1, - 70,1,71,1,71,1,72,1,72,1,72,1,73,1,73,1,73,1,74,1,74,1,74,1,75,1,75,1,75, - 1,76,1,76,1,77,1,77,1,77,1,78,1,78,1,78,1,79,1,79,1,79,1,80,1,80,1,80,1, - 80,1,81,1,81,1,81,1,81,1,82,1,82,1,82,1,83,1,83,1,83,1,84,1,84,1,84,1,85, - 1,85,1,85,1,86,1,86,1,86,1,87,1,87,1,87,1,87,1,88,1,88,1,88,1,89,1,89,1, - 89,1,90,1,90,1,90,1,90,1,90,1,90,1,90,1,91,1,91,1,91,1,91,1,91,1,92,1,92, - 1,92,1,92,1,92,1,92,1,92,1,92,1,93,1,93,1,93,1,94,1,94,1,94,1,94,1,94,1, - 94,1,94,1,94,1,94,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,96,1,96, - 1,96,1,96,1,96,3,96,722,8,96,1,97,1,97,1,97,1,97,1,97,1,97,3,97,730,8,97, - 1,98,1,98,1,98,1,98,1,98,1,98,1,98,3,98,739,8,98,1,99,1,99,1,99,1,99,1, - 99,1,99,1,99,1,99,1,99,4,99,750,8,99,11,99,12,99,751,3,99,754,8,99,1,100, - 1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,4,100,766,8,100,11, - 100,12,100,767,3,100,770,8,100,1,101,1,101,1,101,1,101,1,101,1,101,1,101, + 2,139,7,139,2,140,7,140,2,141,7,141,2,142,7,142,1,0,1,0,1,0,1,0,1,0,1,0, + 1,0,1,1,1,1,1,2,1,2,1,3,1,3,1,3,1,4,1,4,1,5,1,5,1,6,1,6,1,6,1,7,1,7,1,8, + 1,8,1,9,1,9,1,9,1,10,1,10,1,11,1,11,1,11,1,12,1,12,1,12,1,12,1,12,1,12, + 1,12,1,13,1,13,1,13,1,13,1,13,1,14,1,14,1,15,1,15,1,16,1,16,1,17,1,17,1, + 17,1,17,1,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, + 1,18,1,19,1,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,20,1,20,1,20,1,20,1,21,1,21,1,21,1,22,1,22,1,23,1,23,1,24,1,24,1,24, + 1,24,1,24,1,24,1,25,1,25,1,25,1,25,1,25,1,25,1,26,1,26,1,26,1,26,1,27,1, + 27,1,28,1,28,1,29,1,29,1,30,1,30,1,31,1,31,1,32,1,32,1,33,1,33,1,33,1,34, + 1,34,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,1, + 36,1,36,1,36,1,36,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,38,1,38, + 1,38,1,38,1,38,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,1,40,1,41,1,41,1,42,1,42,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43, + 1,44,1,44,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,46,1,46,1,46,1,47,1, + 47,1,47,1,47,1,47,1,47,1,47,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,49, + 1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,50,1,50,1,50,1,51,1,51,1,51,1, + 51,1,51,1,52,1,52,1,52,1,52,1,53,1,53,1,53,1,53,1,53,1,53,1,54,1,54,1,54, + 1,54,1,54,1,54,1,55,1,55,1,55,1,55,1,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,56,1,56,1,57,1,57,1,57,1,58,1,58,1,58,1,58, + 1,58,1,58,1,58,1,59,1,59,1,59,1,59,1,59,1,59,1,60,1,60,1,60,1,60,1,60,1, + 61,1,61,1,61,1,61,1,61,1,61,1,61,1,62,1,62,1,62,1,62,1,63,1,63,1,63,1,63, + 1,63,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,65,1,65,1,65,1,65,1,65,1,66,1, + 66,1,66,1,67,1,67,1,67,1,68,1,68,1,68,1,68,1,69,1,69,1,70,1,70,1,70,1,70, + 1,70,1,70,1,70,1,71,1,71,1,72,1,72,1,72,1,73,1,73,1,73,1,74,1,74,1,74,1, + 75,1,75,1,75,1,76,1,76,1,77,1,77,1,77,1,78,1,78,1,78,1,79,1,79,1,79,1,80, + 1,80,1,80,1,80,1,81,1,81,1,81,1,81,1,82,1,82,1,82,1,83,1,83,1,83,1,84,1, + 84,1,84,1,85,1,85,1,85,1,86,1,86,1,86,1,87,1,87,1,87,1,87,1,88,1,88,1,88, + 1,89,1,89,1,89,1,90,1,90,1,90,1,90,1,90,1,90,1,90,1,91,1,91,1,91,1,91,1, + 91,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,93,1,93,1,93,1,94,1,94,1,94, + 1,94,1,94,1,94,1,94,1,94,1,94,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1, + 95,1,96,1,96,1,96,1,96,1,96,3,96,724,8,96,1,97,1,97,1,97,1,97,1,97,1,97, + 3,97,732,8,97,1,98,1,98,1,98,1,98,1,98,1,98,1,98,3,98,741,8,98,1,99,1,99, + 1,99,1,99,1,99,1,99,1,99,1,99,1,99,4,99,752,8,99,11,99,12,99,753,3,99,756, + 8,99,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,4,100, + 768,8,100,11,100,12,100,769,3,100,772,8,100,1,101,1,101,1,101,1,101,1,101, 1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101, 1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101, 1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101, 1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101, 1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101, 1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101, - 1,101,1,101,1,101,1,101,3,101,855,8,101,1,102,1,102,1,102,1,102,1,102,3, - 102,862,8,102,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,3,103, - 873,8,103,1,104,1,104,3,104,877,8,104,1,104,1,104,3,104,881,8,104,1,104, - 1,104,3,104,885,8,104,1,104,3,104,888,8,104,1,105,1,105,3,105,892,8,105, - 1,105,5,105,895,8,105,10,105,12,105,898,9,105,1,106,1,106,1,106,1,106,1, - 107,1,107,3,107,906,8,107,1,107,5,107,909,8,107,10,107,12,107,912,9,107, + 1,101,1,101,1,101,1,101,1,101,1,101,3,101,857,8,101,1,102,1,102,1,102,1, + 102,1,102,3,102,864,8,102,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103, + 1,103,3,103,875,8,103,1,104,1,104,3,104,879,8,104,1,104,1,104,3,104,883, + 8,104,1,104,1,104,3,104,887,8,104,1,104,3,104,890,8,104,1,105,1,105,3,105, + 894,8,105,1,105,5,105,897,8,105,10,105,12,105,900,9,105,1,106,1,106,1,106, + 1,106,1,107,1,107,3,107,908,8,107,1,107,5,107,911,8,107,10,107,12,107,914, + 9,107,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108, 1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108, 1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108, 1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108, - 1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108, - 1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,3,108,970,8,108,1,109,1, - 109,1,109,1,109,1,109,1,109,3,109,978,8,109,1,109,1,109,1,109,3,109,983, - 8,109,1,109,3,109,986,8,109,1,110,1,110,1,111,1,111,1,111,1,111,1,111,1, - 111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1, - 111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1, - 111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1, - 111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1, - 111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1, - 111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1, - 111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,3,111,1078, - 8,111,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,113, - 1,113,1,113,1,113,1,113,1,113,1,114,1,114,1,114,1,114,1,114,1,114,1,114, - 1,114,1,114,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,115, - 1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,117,1,117,1,117, - 1,117,1,117,1,117,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118, - 1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,120,1,120,1,120,1,120, - 1,120,1,120,1,120,1,120,1,120,1,121,1,121,1,121,1,121,1,121,1,121,1,121, - 1,121,1,122,1,122,1,122,1,122,1,122,1,122,1,122,1,122,1,123,1,123,1,123, - 1,123,1,123,1,123,1,123,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124, - 1,125,1,125,1,125,1,125,1,125,1,126,1,126,1,126,1,126,1,126,1,127,1,127, - 1,127,1,127,1,127,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,129,1,129, - 1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,130,1,130, - 1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,131,1,131,1,131,1,131,1,131, - 1,131,1,131,1,131,1,132,1,132,5,132,1240,8,132,10,132,12,132,1243,9,132, - 1,133,1,133,1,134,1,134,1,135,1,135,1,135,1,135,1,135,1,135,1,135,3,135, - 1256,8,135,1,135,1,135,5,135,1260,8,135,10,135,12,135,1263,9,135,1,135, - 1,135,1,135,5,135,1268,8,135,10,135,12,135,1271,9,135,1,135,3,135,1274, - 8,135,1,136,1,136,1,136,3,136,1279,8,136,1,137,1,137,1,137,3,137,1284,8, - 137,1,138,4,138,1287,8,138,11,138,12,138,1288,1,138,1,138,4,138,1293,8, - 138,11,138,12,138,1294,1,138,1,138,4,138,1299,8,138,11,138,12,138,1300, - 3,138,1303,8,138,1,139,4,139,1306,8,139,11,139,12,139,1307,1,139,1,139, - 1,140,1,140,1,140,1,140,5,140,1316,8,140,10,140,12,140,1319,9,140,1,140, - 1,140,1,140,1,140,1,140,1,141,1,141,1,141,1,141,5,141,1330,8,141,10,141, - 12,141,1333,9,141,1,141,1,141,1,1317,0,142,1,1,3,2,5,3,7,4,9,5,11,6,13, - 7,15,8,17,9,19,10,21,11,23,12,25,13,27,14,29,15,31,16,33,17,35,18,37,19, - 39,20,41,21,43,22,45,23,47,24,49,25,51,26,53,27,55,28,57,29,59,30,61,31, - 63,32,65,33,67,34,69,35,71,36,73,37,75,38,77,39,79,40,81,41,83,42,85,43, - 87,44,89,45,91,46,93,47,95,48,97,49,99,50,101,51,103,52,105,53,107,54,109, - 55,111,56,113,57,115,58,117,59,119,60,121,61,123,62,125,63,127,64,129,65, - 131,66,133,67,135,68,137,69,139,70,141,71,143,72,145,73,147,74,149,75,151, - 76,153,77,155,78,157,79,159,80,161,81,163,82,165,83,167,84,169,85,171,86, - 173,87,175,88,177,89,179,90,181,91,183,92,185,93,187,94,189,95,191,96,193, - 97,195,98,197,99,199,100,201,101,203,0,205,0,207,102,209,103,211,0,213, - 104,215,0,217,105,219,106,221,0,223,107,225,108,227,109,229,110,231,111, - 233,112,235,113,237,114,239,115,241,116,243,117,245,118,247,119,249,120, - 251,121,253,122,255,123,257,124,259,125,261,126,263,127,265,128,267,0,269, - 0,271,129,273,0,275,0,277,130,279,131,281,132,283,133,1,0,13,1,0,48,57, - 1,0,49,57,1,0,49,50,1,0,48,50,2,0,69,69,101,101,2,0,88,88,120,120,3,0,48, + 1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,3,108,972,8,108,1, + 109,1,109,1,109,1,109,1,109,1,109,3,109,980,8,109,1,109,1,109,1,109,3,109, + 985,8,109,1,109,3,109,988,8,109,1,110,1,110,1,111,1,111,1,111,1,111,1,111, + 1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111, + 1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111, + 1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111, + 1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111, + 1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111, + 1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111, + 1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,3,111, + 1080,8,111,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112, + 1,113,1,113,1,113,1,113,1,113,1,113,1,114,1,114,1,114,1,114,1,114,1,114, + 1,114,1,114,1,114,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,115, + 1,115,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,117, + 1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,118,1,118,1,118,1,118, + 1,118,1,118,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,120, + 1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,121,1,121,1,121,1,121,1,121, + 1,121,1,121,1,121,1,121,1,122,1,122,1,122,1,122,1,122,1,122,1,122,1,122, + 1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,124,1,124,1,124,1,124, + 1,124,1,124,1,124,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,126, + 1,126,1,126,1,126,1,126,1,127,1,127,1,127,1,127,1,127,1,128,1,128,1,128, + 1,128,1,128,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,130,1,130,1,130, + 1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,131,1,131,1,131, + 1,131,1,131,1,131,1,131,1,131,1,131,1,132,1,132,1,132,1,132,1,132,1,132, + 1,132,1,132,1,133,1,133,5,133,1252,8,133,10,133,12,133,1255,9,133,1,134, + 1,134,1,135,1,135,1,136,1,136,1,136,1,136,1,136,1,136,1,136,3,136,1268, + 8,136,1,136,1,136,5,136,1272,8,136,10,136,12,136,1275,9,136,1,136,1,136, + 1,136,5,136,1280,8,136,10,136,12,136,1283,9,136,1,136,3,136,1286,8,136, + 1,137,1,137,1,137,3,137,1291,8,137,1,138,1,138,1,138,3,138,1296,8,138,1, + 139,4,139,1299,8,139,11,139,12,139,1300,1,139,1,139,4,139,1305,8,139,11, + 139,12,139,1306,1,139,1,139,4,139,1311,8,139,11,139,12,139,1312,3,139,1315, + 8,139,1,140,4,140,1318,8,140,11,140,12,140,1319,1,140,1,140,1,141,1,141, + 1,141,1,141,5,141,1328,8,141,10,141,12,141,1331,9,141,1,141,1,141,1,141, + 1,141,1,141,1,142,1,142,1,142,1,142,5,142,1342,8,142,10,142,12,142,1345, + 9,142,1,142,1,142,1,1329,0,143,1,1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,17,9, + 19,10,21,11,23,12,25,13,27,14,29,15,31,16,33,17,35,18,37,19,39,20,41,21, + 43,22,45,23,47,24,49,25,51,26,53,27,55,28,57,29,59,30,61,31,63,32,65,33, + 67,34,69,35,71,36,73,37,75,38,77,39,79,40,81,41,83,42,85,43,87,44,89,45, + 91,46,93,47,95,48,97,49,99,50,101,51,103,52,105,53,107,54,109,55,111,56, + 113,57,115,58,117,59,119,60,121,61,123,62,125,63,127,64,129,65,131,66,133, + 67,135,68,137,69,139,70,141,71,143,72,145,73,147,74,149,75,151,76,153,77, + 155,78,157,79,159,80,161,81,163,82,165,83,167,84,169,85,171,86,173,87,175, + 88,177,89,179,90,181,91,183,92,185,93,187,94,189,95,191,96,193,97,195,98, + 197,99,199,100,201,101,203,0,205,0,207,102,209,103,211,0,213,104,215,0, + 217,105,219,106,221,0,223,107,225,108,227,109,229,110,231,111,233,112,235, + 113,237,114,239,115,241,116,243,117,245,118,247,119,249,120,251,121,253, + 122,255,123,257,124,259,125,261,126,263,127,265,128,267,129,269,0,271,0, + 273,130,275,0,277,0,279,131,281,132,283,133,285,134,1,0,13,1,0,48,57,1, + 0,49,57,1,0,49,50,1,0,48,50,2,0,69,69,101,101,2,0,88,88,120,120,3,0,48, 57,65,70,97,102,4,0,36,36,65,90,95,95,97,122,5,0,36,36,48,57,65,90,95,95, 97,122,4,0,10,10,13,13,34,34,92,92,4,0,10,10,13,13,39,39,92,92,3,0,9,10, - 12,13,32,32,2,0,10,10,13,13,1418,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0, + 12,13,32,32,2,0,10,10,13,13,1430,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,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,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,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, @@ -498,322 +502,326 @@ export default class SolidityLexer extends Lexer { 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,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,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,257,1,0,0,0,0,259,1,0,0,0, - 0,261,1,0,0,0,0,263,1,0,0,0,0,265,1,0,0,0,0,271,1,0,0,0,0,277,1,0,0,0,0, - 279,1,0,0,0,0,281,1,0,0,0,0,283,1,0,0,0,1,285,1,0,0,0,3,292,1,0,0,0,5,294, - 1,0,0,0,7,296,1,0,0,0,9,299,1,0,0,0,11,301,1,0,0,0,13,303,1,0,0,0,15,306, - 1,0,0,0,17,308,1,0,0,0,19,310,1,0,0,0,21,313,1,0,0,0,23,315,1,0,0,0,25, - 318,1,0,0,0,27,325,1,0,0,0,29,330,1,0,0,0,31,332,1,0,0,0,33,334,1,0,0,0, - 35,336,1,0,0,0,37,345,1,0,0,0,39,354,1,0,0,0,41,364,1,0,0,0,43,372,1,0, - 0,0,45,375,1,0,0,0,47,377,1,0,0,0,49,379,1,0,0,0,51,385,1,0,0,0,53,391, - 1,0,0,0,55,395,1,0,0,0,57,397,1,0,0,0,59,399,1,0,0,0,61,401,1,0,0,0,63, - 403,1,0,0,0,65,405,1,0,0,0,67,407,1,0,0,0,69,410,1,0,0,0,71,413,1,0,0,0, - 73,420,1,0,0,0,75,429,1,0,0,0,77,438,1,0,0,0,79,446,1,0,0,0,81,452,1,0, - 0,0,83,457,1,0,0,0,85,459,1,0,0,0,87,461,1,0,0,0,89,469,1,0,0,0,91,471, - 1,0,0,0,93,479,1,0,0,0,95,482,1,0,0,0,97,489,1,0,0,0,99,497,1,0,0,0,101, - 506,1,0,0,0,103,509,1,0,0,0,105,514,1,0,0,0,107,518,1,0,0,0,109,524,1,0, - 0,0,111,530,1,0,0,0,113,540,1,0,0,0,115,549,1,0,0,0,117,552,1,0,0,0,119, - 559,1,0,0,0,121,565,1,0,0,0,123,570,1,0,0,0,125,577,1,0,0,0,127,581,1,0, - 0,0,129,586,1,0,0,0,131,593,1,0,0,0,133,598,1,0,0,0,135,601,1,0,0,0,137, - 604,1,0,0,0,139,608,1,0,0,0,141,610,1,0,0,0,143,617,1,0,0,0,145,619,1,0, - 0,0,147,622,1,0,0,0,149,625,1,0,0,0,151,628,1,0,0,0,153,631,1,0,0,0,155, - 633,1,0,0,0,157,636,1,0,0,0,159,639,1,0,0,0,161,642,1,0,0,0,163,646,1,0, - 0,0,165,650,1,0,0,0,167,653,1,0,0,0,169,656,1,0,0,0,171,659,1,0,0,0,173, - 662,1,0,0,0,175,665,1,0,0,0,177,669,1,0,0,0,179,672,1,0,0,0,181,675,1,0, - 0,0,183,682,1,0,0,0,185,687,1,0,0,0,187,695,1,0,0,0,189,698,1,0,0,0,191, - 707,1,0,0,0,193,716,1,0,0,0,195,723,1,0,0,0,197,731,1,0,0,0,199,740,1,0, - 0,0,201,755,1,0,0,0,203,854,1,0,0,0,205,861,1,0,0,0,207,872,1,0,0,0,209, - 880,1,0,0,0,211,889,1,0,0,0,213,899,1,0,0,0,215,903,1,0,0,0,217,969,1,0, - 0,0,219,971,1,0,0,0,221,987,1,0,0,0,223,1077,1,0,0,0,225,1079,1,0,0,0,227, - 1089,1,0,0,0,229,1095,1,0,0,0,231,1104,1,0,0,0,233,1114,1,0,0,0,235,1123, - 1,0,0,0,237,1129,1,0,0,0,239,1138,1,0,0,0,241,1146,1,0,0,0,243,1155,1,0, - 0,0,245,1163,1,0,0,0,247,1171,1,0,0,0,249,1178,1,0,0,0,251,1186,1,0,0,0, - 253,1191,1,0,0,0,255,1196,1,0,0,0,257,1201,1,0,0,0,259,1208,1,0,0,0,261, - 1220,1,0,0,0,263,1229,1,0,0,0,265,1237,1,0,0,0,267,1244,1,0,0,0,269,1246, - 1,0,0,0,271,1255,1,0,0,0,273,1278,1,0,0,0,275,1283,1,0,0,0,277,1286,1,0, - 0,0,279,1305,1,0,0,0,281,1311,1,0,0,0,283,1325,1,0,0,0,285,286,5,112,0, - 0,286,287,5,114,0,0,287,288,5,97,0,0,288,289,5,103,0,0,289,290,5,109,0, - 0,290,291,5,97,0,0,291,2,1,0,0,0,292,293,5,59,0,0,293,4,1,0,0,0,294,295, - 5,42,0,0,295,6,1,0,0,0,296,297,5,124,0,0,297,298,5,124,0,0,298,8,1,0,0, - 0,299,300,5,94,0,0,300,10,1,0,0,0,301,302,5,126,0,0,302,12,1,0,0,0,303, - 304,5,62,0,0,304,305,5,61,0,0,305,14,1,0,0,0,306,307,5,62,0,0,307,16,1, - 0,0,0,308,309,5,60,0,0,309,18,1,0,0,0,310,311,5,60,0,0,311,312,5,61,0,0, - 312,20,1,0,0,0,313,314,5,61,0,0,314,22,1,0,0,0,315,316,5,97,0,0,316,317, - 5,115,0,0,317,24,1,0,0,0,318,319,5,105,0,0,319,320,5,109,0,0,320,321,5, - 112,0,0,321,322,5,111,0,0,322,323,5,114,0,0,323,324,5,116,0,0,324,26,1, - 0,0,0,325,326,5,102,0,0,326,327,5,114,0,0,327,328,5,111,0,0,328,329,5,109, - 0,0,329,28,1,0,0,0,330,331,5,123,0,0,331,30,1,0,0,0,332,333,5,44,0,0,333, - 32,1,0,0,0,334,335,5,125,0,0,335,34,1,0,0,0,336,337,5,97,0,0,337,338,5, - 98,0,0,338,339,5,115,0,0,339,340,5,116,0,0,340,341,5,114,0,0,341,342,5, - 97,0,0,342,343,5,99,0,0,343,344,5,116,0,0,344,36,1,0,0,0,345,346,5,99,0, - 0,346,347,5,111,0,0,347,348,5,110,0,0,348,349,5,116,0,0,349,350,5,114,0, - 0,350,351,5,97,0,0,351,352,5,99,0,0,352,353,5,116,0,0,353,38,1,0,0,0,354, - 355,5,105,0,0,355,356,5,110,0,0,356,357,5,116,0,0,357,358,5,101,0,0,358, - 359,5,114,0,0,359,360,5,102,0,0,360,361,5,97,0,0,361,362,5,99,0,0,362,363, - 5,101,0,0,363,40,1,0,0,0,364,365,5,108,0,0,365,366,5,105,0,0,366,367,5, - 98,0,0,367,368,5,114,0,0,368,369,5,97,0,0,369,370,5,114,0,0,370,371,5,121, - 0,0,371,42,1,0,0,0,372,373,5,105,0,0,373,374,5,115,0,0,374,44,1,0,0,0,375, - 376,5,40,0,0,376,46,1,0,0,0,377,378,5,41,0,0,378,48,1,0,0,0,379,380,5,101, - 0,0,380,381,5,114,0,0,381,382,5,114,0,0,382,383,5,111,0,0,383,384,5,114, - 0,0,384,50,1,0,0,0,385,386,5,117,0,0,386,387,5,115,0,0,387,388,5,105,0, - 0,388,389,5,110,0,0,389,390,5,103,0,0,390,52,1,0,0,0,391,392,5,102,0,0, - 392,393,5,111,0,0,393,394,5,114,0,0,394,54,1,0,0,0,395,396,5,124,0,0,396, - 56,1,0,0,0,397,398,5,38,0,0,398,58,1,0,0,0,399,400,5,43,0,0,400,60,1,0, - 0,0,401,402,5,45,0,0,402,62,1,0,0,0,403,404,5,47,0,0,404,64,1,0,0,0,405, - 406,5,37,0,0,406,66,1,0,0,0,407,408,5,61,0,0,408,409,5,61,0,0,409,68,1, - 0,0,0,410,411,5,33,0,0,411,412,5,61,0,0,412,70,1,0,0,0,413,414,5,115,0, - 0,414,415,5,116,0,0,415,416,5,114,0,0,416,417,5,117,0,0,417,418,5,99,0, - 0,418,419,5,116,0,0,419,72,1,0,0,0,420,421,5,109,0,0,421,422,5,111,0,0, - 422,423,5,100,0,0,423,424,5,105,0,0,424,425,5,102,0,0,425,426,5,105,0,0, - 426,427,5,101,0,0,427,428,5,114,0,0,428,74,1,0,0,0,429,430,5,102,0,0,430, - 431,5,117,0,0,431,432,5,110,0,0,432,433,5,99,0,0,433,434,5,116,0,0,434, - 435,5,105,0,0,435,436,5,111,0,0,436,437,5,110,0,0,437,76,1,0,0,0,438,439, - 5,114,0,0,439,440,5,101,0,0,440,441,5,116,0,0,441,442,5,117,0,0,442,443, - 5,114,0,0,443,444,5,110,0,0,444,445,5,115,0,0,445,78,1,0,0,0,446,447,5, - 101,0,0,447,448,5,118,0,0,448,449,5,101,0,0,449,450,5,110,0,0,450,451,5, - 116,0,0,451,80,1,0,0,0,452,453,5,101,0,0,453,454,5,110,0,0,454,455,5,117, - 0,0,455,456,5,109,0,0,456,82,1,0,0,0,457,458,5,91,0,0,458,84,1,0,0,0,459, - 460,5,93,0,0,460,86,1,0,0,0,461,462,5,97,0,0,462,463,5,100,0,0,463,464, - 5,100,0,0,464,465,5,114,0,0,465,466,5,101,0,0,466,467,5,115,0,0,467,468, - 5,115,0,0,468,88,1,0,0,0,469,470,5,46,0,0,470,90,1,0,0,0,471,472,5,109, - 0,0,472,473,5,97,0,0,473,474,5,112,0,0,474,475,5,112,0,0,475,476,5,105, - 0,0,476,477,5,110,0,0,477,478,5,103,0,0,478,92,1,0,0,0,479,480,5,61,0,0, - 480,481,5,62,0,0,481,94,1,0,0,0,482,483,5,109,0,0,483,484,5,101,0,0,484, - 485,5,109,0,0,485,486,5,111,0,0,486,487,5,114,0,0,487,488,5,121,0,0,488, - 96,1,0,0,0,489,490,5,115,0,0,490,491,5,116,0,0,491,492,5,111,0,0,492,493, - 5,114,0,0,493,494,5,97,0,0,494,495,5,103,0,0,495,496,5,101,0,0,496,98,1, - 0,0,0,497,498,5,99,0,0,498,499,5,97,0,0,499,500,5,108,0,0,500,501,5,108, - 0,0,501,502,5,100,0,0,502,503,5,97,0,0,503,504,5,116,0,0,504,505,5,97,0, - 0,505,100,1,0,0,0,506,507,5,105,0,0,507,508,5,102,0,0,508,102,1,0,0,0,509, - 510,5,101,0,0,510,511,5,108,0,0,511,512,5,115,0,0,512,513,5,101,0,0,513, - 104,1,0,0,0,514,515,5,116,0,0,515,516,5,114,0,0,516,517,5,121,0,0,517,106, - 1,0,0,0,518,519,5,99,0,0,519,520,5,97,0,0,520,521,5,116,0,0,521,522,5,99, - 0,0,522,523,5,104,0,0,523,108,1,0,0,0,524,525,5,119,0,0,525,526,5,104,0, - 0,526,527,5,105,0,0,527,528,5,108,0,0,528,529,5,101,0,0,529,110,1,0,0,0, - 530,531,5,117,0,0,531,532,5,110,0,0,532,533,5,99,0,0,533,534,5,104,0,0, - 534,535,5,101,0,0,535,536,5,99,0,0,536,537,5,107,0,0,537,538,5,101,0,0, - 538,539,5,100,0,0,539,112,1,0,0,0,540,541,5,97,0,0,541,542,5,115,0,0,542, - 543,5,115,0,0,543,544,5,101,0,0,544,545,5,109,0,0,545,546,5,98,0,0,546, - 547,5,108,0,0,547,548,5,121,0,0,548,114,1,0,0,0,549,550,5,100,0,0,550,551, - 5,111,0,0,551,116,1,0,0,0,552,553,5,114,0,0,553,554,5,101,0,0,554,555,5, - 116,0,0,555,556,5,117,0,0,556,557,5,114,0,0,557,558,5,110,0,0,558,118,1, - 0,0,0,559,560,5,116,0,0,560,561,5,104,0,0,561,562,5,114,0,0,562,563,5,111, - 0,0,563,564,5,119,0,0,564,120,1,0,0,0,565,566,5,101,0,0,566,567,5,109,0, - 0,567,568,5,105,0,0,568,569,5,116,0,0,569,122,1,0,0,0,570,571,5,114,0,0, - 571,572,5,101,0,0,572,573,5,118,0,0,573,574,5,101,0,0,574,575,5,114,0,0, - 575,576,5,116,0,0,576,124,1,0,0,0,577,578,5,118,0,0,578,579,5,97,0,0,579, - 580,5,114,0,0,580,126,1,0,0,0,581,582,5,98,0,0,582,583,5,111,0,0,583,584, - 5,111,0,0,584,585,5,108,0,0,585,128,1,0,0,0,586,587,5,115,0,0,587,588,5, - 116,0,0,588,589,5,114,0,0,589,590,5,105,0,0,590,591,5,110,0,0,591,592,5, - 103,0,0,592,130,1,0,0,0,593,594,5,98,0,0,594,595,5,121,0,0,595,596,5,116, - 0,0,596,597,5,101,0,0,597,132,1,0,0,0,598,599,5,43,0,0,599,600,5,43,0,0, - 600,134,1,0,0,0,601,602,5,45,0,0,602,603,5,45,0,0,603,136,1,0,0,0,604,605, - 5,110,0,0,605,606,5,101,0,0,606,607,5,119,0,0,607,138,1,0,0,0,608,609,5, - 58,0,0,609,140,1,0,0,0,610,611,5,100,0,0,611,612,5,101,0,0,612,613,5,108, - 0,0,613,614,5,101,0,0,614,615,5,116,0,0,615,616,5,101,0,0,616,142,1,0,0, - 0,617,618,5,33,0,0,618,144,1,0,0,0,619,620,5,42,0,0,620,621,5,42,0,0,621, - 146,1,0,0,0,622,623,5,60,0,0,623,624,5,60,0,0,624,148,1,0,0,0,625,626,5, - 62,0,0,626,627,5,62,0,0,627,150,1,0,0,0,628,629,5,38,0,0,629,630,5,38,0, - 0,630,152,1,0,0,0,631,632,5,63,0,0,632,154,1,0,0,0,633,634,5,124,0,0,634, - 635,5,61,0,0,635,156,1,0,0,0,636,637,5,94,0,0,637,638,5,61,0,0,638,158, - 1,0,0,0,639,640,5,38,0,0,640,641,5,61,0,0,641,160,1,0,0,0,642,643,5,60, - 0,0,643,644,5,60,0,0,644,645,5,61,0,0,645,162,1,0,0,0,646,647,5,62,0,0, - 647,648,5,62,0,0,648,649,5,61,0,0,649,164,1,0,0,0,650,651,5,43,0,0,651, - 652,5,61,0,0,652,166,1,0,0,0,653,654,5,45,0,0,654,655,5,61,0,0,655,168, - 1,0,0,0,656,657,5,42,0,0,657,658,5,61,0,0,658,170,1,0,0,0,659,660,5,47, - 0,0,660,661,5,61,0,0,661,172,1,0,0,0,662,663,5,37,0,0,663,664,5,61,0,0, - 664,174,1,0,0,0,665,666,5,108,0,0,666,667,5,101,0,0,667,668,5,116,0,0,668, - 176,1,0,0,0,669,670,5,58,0,0,670,671,5,61,0,0,671,178,1,0,0,0,672,673,5, - 61,0,0,673,674,5,58,0,0,674,180,1,0,0,0,675,676,5,115,0,0,676,677,5,119, - 0,0,677,678,5,105,0,0,678,679,5,116,0,0,679,680,5,99,0,0,680,681,5,104, - 0,0,681,182,1,0,0,0,682,683,5,99,0,0,683,684,5,97,0,0,684,685,5,115,0,0, - 685,686,5,101,0,0,686,184,1,0,0,0,687,688,5,100,0,0,688,689,5,101,0,0,689, - 690,5,102,0,0,690,691,5,97,0,0,691,692,5,117,0,0,692,693,5,108,0,0,693, - 694,5,116,0,0,694,186,1,0,0,0,695,696,5,45,0,0,696,697,5,62,0,0,697,188, - 1,0,0,0,698,699,5,99,0,0,699,700,5,97,0,0,700,701,5,108,0,0,701,702,5,108, - 0,0,702,703,5,98,0,0,703,704,5,97,0,0,704,705,5,99,0,0,705,706,5,107,0, - 0,706,190,1,0,0,0,707,708,5,111,0,0,708,709,5,118,0,0,709,710,5,101,0,0, - 710,711,5,114,0,0,711,712,5,114,0,0,712,713,5,105,0,0,713,714,5,100,0,0, - 714,715,5,101,0,0,715,192,1,0,0,0,716,717,5,105,0,0,717,718,5,110,0,0,718, - 719,5,116,0,0,719,721,1,0,0,0,720,722,3,203,101,0,721,720,1,0,0,0,721,722, - 1,0,0,0,722,194,1,0,0,0,723,724,5,117,0,0,724,725,5,105,0,0,725,726,5,110, - 0,0,726,727,5,116,0,0,727,729,1,0,0,0,728,730,3,203,101,0,729,728,1,0,0, - 0,729,730,1,0,0,0,730,196,1,0,0,0,731,732,5,98,0,0,732,733,5,121,0,0,733, - 734,5,116,0,0,734,735,5,101,0,0,735,736,5,115,0,0,736,738,1,0,0,0,737,739, - 3,205,102,0,738,737,1,0,0,0,738,739,1,0,0,0,739,198,1,0,0,0,740,741,5,102, - 0,0,741,742,5,105,0,0,742,743,5,120,0,0,743,744,5,101,0,0,744,745,5,100, - 0,0,745,753,1,0,0,0,746,747,3,203,101,0,747,749,5,120,0,0,748,750,7,0,0, - 0,749,748,1,0,0,0,750,751,1,0,0,0,751,749,1,0,0,0,751,752,1,0,0,0,752,754, - 1,0,0,0,753,746,1,0,0,0,753,754,1,0,0,0,754,200,1,0,0,0,755,756,5,117,0, - 0,756,757,5,102,0,0,757,758,5,105,0,0,758,759,5,120,0,0,759,760,5,101,0, - 0,760,761,5,100,0,0,761,769,1,0,0,0,762,763,3,203,101,0,763,765,5,120,0, - 0,764,766,7,0,0,0,765,764,1,0,0,0,766,767,1,0,0,0,767,765,1,0,0,0,767,768, - 1,0,0,0,768,770,1,0,0,0,769,762,1,0,0,0,769,770,1,0,0,0,770,202,1,0,0,0, - 771,855,5,56,0,0,772,773,5,49,0,0,773,855,5,54,0,0,774,775,5,50,0,0,775, - 855,5,52,0,0,776,777,5,51,0,0,777,855,5,50,0,0,778,779,5,52,0,0,779,855, - 5,48,0,0,780,781,5,52,0,0,781,855,5,56,0,0,782,783,5,53,0,0,783,855,5,54, - 0,0,784,785,5,54,0,0,785,855,5,52,0,0,786,787,5,55,0,0,787,855,5,50,0,0, - 788,789,5,56,0,0,789,855,5,48,0,0,790,791,5,56,0,0,791,855,5,56,0,0,792, - 793,5,57,0,0,793,855,5,54,0,0,794,795,5,49,0,0,795,796,5,48,0,0,796,855, - 5,52,0,0,797,798,5,49,0,0,798,799,5,49,0,0,799,855,5,50,0,0,800,801,5,49, - 0,0,801,802,5,50,0,0,802,855,5,48,0,0,803,804,5,49,0,0,804,805,5,50,0,0, - 805,855,5,56,0,0,806,807,5,49,0,0,807,808,5,51,0,0,808,855,5,54,0,0,809, - 810,5,49,0,0,810,811,5,52,0,0,811,855,5,52,0,0,812,813,5,49,0,0,813,814, - 5,53,0,0,814,855,5,50,0,0,815,816,5,49,0,0,816,817,5,54,0,0,817,855,5,48, - 0,0,818,819,5,49,0,0,819,820,5,54,0,0,820,855,5,56,0,0,821,822,5,49,0,0, - 822,823,5,55,0,0,823,855,5,54,0,0,824,825,5,49,0,0,825,826,5,56,0,0,826, - 855,5,52,0,0,827,828,5,49,0,0,828,829,5,57,0,0,829,855,5,50,0,0,830,831, - 5,50,0,0,831,832,5,48,0,0,832,855,5,48,0,0,833,834,5,50,0,0,834,835,5,48, - 0,0,835,855,5,56,0,0,836,837,5,50,0,0,837,838,5,49,0,0,838,855,5,54,0,0, - 839,840,5,50,0,0,840,841,5,50,0,0,841,855,5,52,0,0,842,843,5,50,0,0,843, - 844,5,51,0,0,844,855,5,50,0,0,845,846,5,50,0,0,846,847,5,52,0,0,847,855, - 5,48,0,0,848,849,5,50,0,0,849,850,5,52,0,0,850,855,5,56,0,0,851,852,5,50, - 0,0,852,853,5,53,0,0,853,855,5,54,0,0,854,771,1,0,0,0,854,772,1,0,0,0,854, - 774,1,0,0,0,854,776,1,0,0,0,854,778,1,0,0,0,854,780,1,0,0,0,854,782,1,0, - 0,0,854,784,1,0,0,0,854,786,1,0,0,0,854,788,1,0,0,0,854,790,1,0,0,0,854, - 792,1,0,0,0,854,794,1,0,0,0,854,797,1,0,0,0,854,800,1,0,0,0,854,803,1,0, - 0,0,854,806,1,0,0,0,854,809,1,0,0,0,854,812,1,0,0,0,854,815,1,0,0,0,854, - 818,1,0,0,0,854,821,1,0,0,0,854,824,1,0,0,0,854,827,1,0,0,0,854,830,1,0, - 0,0,854,833,1,0,0,0,854,836,1,0,0,0,854,839,1,0,0,0,854,842,1,0,0,0,854, - 845,1,0,0,0,854,848,1,0,0,0,854,851,1,0,0,0,855,204,1,0,0,0,856,862,7,1, - 0,0,857,858,7,2,0,0,858,862,7,0,0,0,859,860,5,51,0,0,860,862,7,3,0,0,861, - 856,1,0,0,0,861,857,1,0,0,0,861,859,1,0,0,0,862,206,1,0,0,0,863,864,5,116, - 0,0,864,865,5,114,0,0,865,866,5,117,0,0,866,873,5,101,0,0,867,868,5,102, - 0,0,868,869,5,97,0,0,869,870,5,108,0,0,870,871,5,115,0,0,871,873,5,101, - 0,0,872,863,1,0,0,0,872,867,1,0,0,0,873,208,1,0,0,0,874,881,3,211,105,0, - 875,877,3,211,105,0,876,875,1,0,0,0,876,877,1,0,0,0,877,878,1,0,0,0,878, - 879,5,46,0,0,879,881,3,211,105,0,880,874,1,0,0,0,880,876,1,0,0,0,881,887, - 1,0,0,0,882,884,7,4,0,0,883,885,5,45,0,0,884,883,1,0,0,0,884,885,1,0,0, - 0,885,886,1,0,0,0,886,888,3,211,105,0,887,882,1,0,0,0,887,888,1,0,0,0,888, - 210,1,0,0,0,889,896,7,0,0,0,890,892,5,95,0,0,891,890,1,0,0,0,891,892,1, - 0,0,0,892,893,1,0,0,0,893,895,7,0,0,0,894,891,1,0,0,0,895,898,1,0,0,0,896, - 894,1,0,0,0,896,897,1,0,0,0,897,212,1,0,0,0,898,896,1,0,0,0,899,900,5,48, - 0,0,900,901,7,5,0,0,901,902,3,215,107,0,902,214,1,0,0,0,903,910,3,221,110, - 0,904,906,5,95,0,0,905,904,1,0,0,0,905,906,1,0,0,0,906,907,1,0,0,0,907, - 909,3,221,110,0,908,905,1,0,0,0,909,912,1,0,0,0,910,908,1,0,0,0,910,911, - 1,0,0,0,911,216,1,0,0,0,912,910,1,0,0,0,913,914,5,119,0,0,914,915,5,101, - 0,0,915,970,5,105,0,0,916,917,5,103,0,0,917,918,5,119,0,0,918,919,5,101, - 0,0,919,970,5,105,0,0,920,921,5,115,0,0,921,922,5,122,0,0,922,923,5,97, - 0,0,923,924,5,98,0,0,924,970,5,111,0,0,925,926,5,102,0,0,926,927,5,105, - 0,0,927,928,5,110,0,0,928,929,5,110,0,0,929,930,5,101,0,0,930,970,5,121, - 0,0,931,932,5,101,0,0,932,933,5,116,0,0,933,934,5,104,0,0,934,935,5,101, - 0,0,935,970,5,114,0,0,936,937,5,115,0,0,937,938,5,101,0,0,938,939,5,99, - 0,0,939,940,5,111,0,0,940,941,5,110,0,0,941,942,5,100,0,0,942,970,5,115, - 0,0,943,944,5,109,0,0,944,945,5,105,0,0,945,946,5,110,0,0,946,947,5,117, - 0,0,947,948,5,116,0,0,948,949,5,101,0,0,949,970,5,115,0,0,950,951,5,104, - 0,0,951,952,5,111,0,0,952,953,5,117,0,0,953,954,5,114,0,0,954,970,5,115, - 0,0,955,956,5,100,0,0,956,957,5,97,0,0,957,958,5,121,0,0,958,970,5,115, - 0,0,959,960,5,119,0,0,960,961,5,101,0,0,961,962,5,101,0,0,962,963,5,107, - 0,0,963,970,5,115,0,0,964,965,5,121,0,0,965,966,5,101,0,0,966,967,5,97, - 0,0,967,968,5,114,0,0,968,970,5,115,0,0,969,913,1,0,0,0,969,916,1,0,0,0, - 969,920,1,0,0,0,969,925,1,0,0,0,969,931,1,0,0,0,969,936,1,0,0,0,969,943, - 1,0,0,0,969,950,1,0,0,0,969,955,1,0,0,0,969,959,1,0,0,0,969,964,1,0,0,0, - 970,218,1,0,0,0,971,972,5,104,0,0,972,973,5,101,0,0,973,974,5,120,0,0,974, - 985,1,0,0,0,975,977,5,34,0,0,976,978,3,215,107,0,977,976,1,0,0,0,977,978, - 1,0,0,0,978,979,1,0,0,0,979,986,5,34,0,0,980,982,5,39,0,0,981,983,3,215, - 107,0,982,981,1,0,0,0,982,983,1,0,0,0,983,984,1,0,0,0,984,986,5,39,0,0, - 985,975,1,0,0,0,985,980,1,0,0,0,986,220,1,0,0,0,987,988,7,6,0,0,988,222, - 1,0,0,0,989,990,5,97,0,0,990,991,5,98,0,0,991,992,5,115,0,0,992,993,5,116, - 0,0,993,994,5,114,0,0,994,995,5,97,0,0,995,996,5,99,0,0,996,1078,5,116, - 0,0,997,998,5,97,0,0,998,999,5,102,0,0,999,1000,5,116,0,0,1000,1001,5,101, - 0,0,1001,1078,5,114,0,0,1002,1003,5,99,0,0,1003,1004,5,97,0,0,1004,1005, - 5,115,0,0,1005,1078,5,101,0,0,1006,1007,5,99,0,0,1007,1008,5,97,0,0,1008, - 1009,5,116,0,0,1009,1010,5,99,0,0,1010,1078,5,104,0,0,1011,1012,5,100,0, - 0,1012,1013,5,101,0,0,1013,1014,5,102,0,0,1014,1015,5,97,0,0,1015,1016, - 5,117,0,0,1016,1017,5,108,0,0,1017,1078,5,116,0,0,1018,1019,5,102,0,0,1019, - 1020,5,105,0,0,1020,1021,5,110,0,0,1021,1022,5,97,0,0,1022,1078,5,108,0, - 0,1023,1024,5,105,0,0,1024,1078,5,110,0,0,1025,1026,5,105,0,0,1026,1027, - 5,110,0,0,1027,1028,5,108,0,0,1028,1029,5,105,0,0,1029,1030,5,110,0,0,1030, - 1078,5,101,0,0,1031,1032,5,108,0,0,1032,1033,5,101,0,0,1033,1078,5,116, - 0,0,1034,1035,5,109,0,0,1035,1036,5,97,0,0,1036,1037,5,116,0,0,1037,1038, - 5,99,0,0,1038,1078,5,104,0,0,1039,1040,5,110,0,0,1040,1041,5,117,0,0,1041, - 1042,5,108,0,0,1042,1078,5,108,0,0,1043,1044,5,111,0,0,1044,1078,5,102, - 0,0,1045,1046,5,114,0,0,1046,1047,5,101,0,0,1047,1048,5,108,0,0,1048,1049, - 5,111,0,0,1049,1050,5,99,0,0,1050,1051,5,97,0,0,1051,1052,5,116,0,0,1052, - 1053,5,97,0,0,1053,1054,5,98,0,0,1054,1055,5,108,0,0,1055,1078,5,101,0, - 0,1056,1057,5,115,0,0,1057,1058,5,116,0,0,1058,1059,5,97,0,0,1059,1060, - 5,116,0,0,1060,1061,5,105,0,0,1061,1078,5,99,0,0,1062,1063,5,115,0,0,1063, - 1064,5,119,0,0,1064,1065,5,105,0,0,1065,1066,5,116,0,0,1066,1067,5,99,0, - 0,1067,1078,5,104,0,0,1068,1069,5,116,0,0,1069,1070,5,114,0,0,1070,1078, - 5,121,0,0,1071,1072,5,116,0,0,1072,1073,5,121,0,0,1073,1074,5,112,0,0,1074, - 1075,5,101,0,0,1075,1076,5,111,0,0,1076,1078,5,102,0,0,1077,989,1,0,0,0, - 1077,997,1,0,0,0,1077,1002,1,0,0,0,1077,1006,1,0,0,0,1077,1011,1,0,0,0, - 1077,1018,1,0,0,0,1077,1023,1,0,0,0,1077,1025,1,0,0,0,1077,1031,1,0,0,0, - 1077,1034,1,0,0,0,1077,1039,1,0,0,0,1077,1043,1,0,0,0,1077,1045,1,0,0,0, - 1077,1056,1,0,0,0,1077,1062,1,0,0,0,1077,1068,1,0,0,0,1077,1071,1,0,0,0, - 1078,224,1,0,0,0,1079,1080,5,97,0,0,1080,1081,5,110,0,0,1081,1082,5,111, - 0,0,1082,1083,5,110,0,0,1083,1084,5,121,0,0,1084,1085,5,109,0,0,1085,1086, - 5,111,0,0,1086,1087,5,117,0,0,1087,1088,5,115,0,0,1088,226,1,0,0,0,1089, - 1090,5,98,0,0,1090,1091,5,114,0,0,1091,1092,5,101,0,0,1092,1093,5,97,0, - 0,1093,1094,5,107,0,0,1094,228,1,0,0,0,1095,1096,5,99,0,0,1096,1097,5,111, - 0,0,1097,1098,5,110,0,0,1098,1099,5,115,0,0,1099,1100,5,116,0,0,1100,1101, - 5,97,0,0,1101,1102,5,110,0,0,1102,1103,5,116,0,0,1103,230,1,0,0,0,1104, - 1105,5,105,0,0,1105,1106,5,109,0,0,1106,1107,5,109,0,0,1107,1108,5,117, - 0,0,1108,1109,5,116,0,0,1109,1110,5,97,0,0,1110,1111,5,98,0,0,1111,1112, - 5,108,0,0,1112,1113,5,101,0,0,1113,232,1,0,0,0,1114,1115,5,99,0,0,1115, - 1116,5,111,0,0,1116,1117,5,110,0,0,1117,1118,5,116,0,0,1118,1119,5,105, - 0,0,1119,1120,5,110,0,0,1120,1121,5,117,0,0,1121,1122,5,101,0,0,1122,234, - 1,0,0,0,1123,1124,5,108,0,0,1124,1125,5,101,0,0,1125,1126,5,97,0,0,1126, - 1127,5,118,0,0,1127,1128,5,101,0,0,1128,236,1,0,0,0,1129,1130,5,101,0,0, - 1130,1131,5,120,0,0,1131,1132,5,116,0,0,1132,1133,5,101,0,0,1133,1134,5, - 114,0,0,1134,1135,5,110,0,0,1135,1136,5,97,0,0,1136,1137,5,108,0,0,1137, - 238,1,0,0,0,1138,1139,5,105,0,0,1139,1140,5,110,0,0,1140,1141,5,100,0,0, - 1141,1142,5,101,0,0,1142,1143,5,120,0,0,1143,1144,5,101,0,0,1144,1145,5, - 100,0,0,1145,240,1,0,0,0,1146,1147,5,105,0,0,1147,1148,5,110,0,0,1148,1149, - 5,116,0,0,1149,1150,5,101,0,0,1150,1151,5,114,0,0,1151,1152,5,110,0,0,1152, - 1153,5,97,0,0,1153,1154,5,108,0,0,1154,242,1,0,0,0,1155,1156,5,112,0,0, - 1156,1157,5,97,0,0,1157,1158,5,121,0,0,1158,1159,5,97,0,0,1159,1160,5,98, - 0,0,1160,1161,5,108,0,0,1161,1162,5,101,0,0,1162,244,1,0,0,0,1163,1164, - 5,112,0,0,1164,1165,5,114,0,0,1165,1166,5,105,0,0,1166,1167,5,118,0,0,1167, - 1168,5,97,0,0,1168,1169,5,116,0,0,1169,1170,5,101,0,0,1170,246,1,0,0,0, - 1171,1172,5,112,0,0,1172,1173,5,117,0,0,1173,1174,5,98,0,0,1174,1175,5, - 108,0,0,1175,1176,5,105,0,0,1176,1177,5,99,0,0,1177,248,1,0,0,0,1178,1179, - 5,118,0,0,1179,1180,5,105,0,0,1180,1181,5,114,0,0,1181,1182,5,116,0,0,1182, - 1183,5,117,0,0,1183,1184,5,97,0,0,1184,1185,5,108,0,0,1185,250,1,0,0,0, - 1186,1187,5,112,0,0,1187,1188,5,117,0,0,1188,1189,5,114,0,0,1189,1190,5, - 101,0,0,1190,252,1,0,0,0,1191,1192,5,116,0,0,1192,1193,5,121,0,0,1193,1194, - 5,112,0,0,1194,1195,5,101,0,0,1195,254,1,0,0,0,1196,1197,5,118,0,0,1197, - 1198,5,105,0,0,1198,1199,5,101,0,0,1199,1200,5,119,0,0,1200,256,1,0,0,0, - 1201,1202,5,103,0,0,1202,1203,5,108,0,0,1203,1204,5,111,0,0,1204,1205,5, - 98,0,0,1205,1206,5,97,0,0,1206,1207,5,108,0,0,1207,258,1,0,0,0,1208,1209, - 5,99,0,0,1209,1210,5,111,0,0,1210,1211,5,110,0,0,1211,1212,5,115,0,0,1212, - 1213,5,116,0,0,1213,1214,5,114,0,0,1214,1215,5,117,0,0,1215,1216,5,99,0, - 0,1216,1217,5,116,0,0,1217,1218,5,111,0,0,1218,1219,5,114,0,0,1219,260, - 1,0,0,0,1220,1221,5,102,0,0,1221,1222,5,97,0,0,1222,1223,5,108,0,0,1223, - 1224,5,108,0,0,1224,1225,5,98,0,0,1225,1226,5,97,0,0,1226,1227,5,99,0,0, - 1227,1228,5,107,0,0,1228,262,1,0,0,0,1229,1230,5,114,0,0,1230,1231,5,101, - 0,0,1231,1232,5,99,0,0,1232,1233,5,101,0,0,1233,1234,5,105,0,0,1234,1235, - 5,118,0,0,1235,1236,5,101,0,0,1236,264,1,0,0,0,1237,1241,3,267,133,0,1238, - 1240,3,269,134,0,1239,1238,1,0,0,0,1240,1243,1,0,0,0,1241,1239,1,0,0,0, - 1241,1242,1,0,0,0,1242,266,1,0,0,0,1243,1241,1,0,0,0,1244,1245,7,7,0,0, - 1245,268,1,0,0,0,1246,1247,7,8,0,0,1247,270,1,0,0,0,1248,1249,5,117,0,0, - 1249,1250,5,110,0,0,1250,1251,5,105,0,0,1251,1252,5,99,0,0,1252,1253,5, - 111,0,0,1253,1254,5,100,0,0,1254,1256,5,101,0,0,1255,1248,1,0,0,0,1255, - 1256,1,0,0,0,1256,1273,1,0,0,0,1257,1261,5,34,0,0,1258,1260,3,273,136,0, - 1259,1258,1,0,0,0,1260,1263,1,0,0,0,1261,1259,1,0,0,0,1261,1262,1,0,0,0, - 1262,1264,1,0,0,0,1263,1261,1,0,0,0,1264,1274,5,34,0,0,1265,1269,5,39,0, - 0,1266,1268,3,275,137,0,1267,1266,1,0,0,0,1268,1271,1,0,0,0,1269,1267,1, - 0,0,0,1269,1270,1,0,0,0,1270,1272,1,0,0,0,1271,1269,1,0,0,0,1272,1274,5, - 39,0,0,1273,1257,1,0,0,0,1273,1265,1,0,0,0,1274,272,1,0,0,0,1275,1279,8, - 9,0,0,1276,1277,5,92,0,0,1277,1279,9,0,0,0,1278,1275,1,0,0,0,1278,1276, - 1,0,0,0,1279,274,1,0,0,0,1280,1284,8,10,0,0,1281,1282,5,92,0,0,1282,1284, - 9,0,0,0,1283,1280,1,0,0,0,1283,1281,1,0,0,0,1284,276,1,0,0,0,1285,1287, - 7,0,0,0,1286,1285,1,0,0,0,1287,1288,1,0,0,0,1288,1286,1,0,0,0,1288,1289, - 1,0,0,0,1289,1290,1,0,0,0,1290,1292,5,46,0,0,1291,1293,7,0,0,0,1292,1291, - 1,0,0,0,1293,1294,1,0,0,0,1294,1292,1,0,0,0,1294,1295,1,0,0,0,1295,1302, - 1,0,0,0,1296,1298,5,46,0,0,1297,1299,7,0,0,0,1298,1297,1,0,0,0,1299,1300, - 1,0,0,0,1300,1298,1,0,0,0,1300,1301,1,0,0,0,1301,1303,1,0,0,0,1302,1296, - 1,0,0,0,1302,1303,1,0,0,0,1303,278,1,0,0,0,1304,1306,7,11,0,0,1305,1304, - 1,0,0,0,1306,1307,1,0,0,0,1307,1305,1,0,0,0,1307,1308,1,0,0,0,1308,1309, - 1,0,0,0,1309,1310,6,139,0,0,1310,280,1,0,0,0,1311,1312,5,47,0,0,1312,1313, - 5,42,0,0,1313,1317,1,0,0,0,1314,1316,9,0,0,0,1315,1314,1,0,0,0,1316,1319, - 1,0,0,0,1317,1318,1,0,0,0,1317,1315,1,0,0,0,1318,1320,1,0,0,0,1319,1317, - 1,0,0,0,1320,1321,5,42,0,0,1321,1322,5,47,0,0,1322,1323,1,0,0,0,1323,1324, - 6,140,1,0,1324,282,1,0,0,0,1325,1326,5,47,0,0,1326,1327,5,47,0,0,1327,1331, - 1,0,0,0,1328,1330,8,12,0,0,1329,1328,1,0,0,0,1330,1333,1,0,0,0,1331,1329, - 1,0,0,0,1331,1332,1,0,0,0,1332,1334,1,0,0,0,1333,1331,1,0,0,0,1334,1335, - 6,141,1,0,1335,284,1,0,0,0,38,0,721,729,738,751,753,767,769,854,861,872, - 876,880,884,887,891,896,905,910,969,977,982,985,1077,1241,1255,1261,1269, - 1273,1278,1283,1288,1294,1300,1302,1307,1317,1331,2,6,0,0,0,1,0]; + 0,261,1,0,0,0,0,263,1,0,0,0,0,265,1,0,0,0,0,267,1,0,0,0,0,273,1,0,0,0,0, + 279,1,0,0,0,0,281,1,0,0,0,0,283,1,0,0,0,0,285,1,0,0,0,1,287,1,0,0,0,3,294, + 1,0,0,0,5,296,1,0,0,0,7,298,1,0,0,0,9,301,1,0,0,0,11,303,1,0,0,0,13,305, + 1,0,0,0,15,308,1,0,0,0,17,310,1,0,0,0,19,312,1,0,0,0,21,315,1,0,0,0,23, + 317,1,0,0,0,25,320,1,0,0,0,27,327,1,0,0,0,29,332,1,0,0,0,31,334,1,0,0,0, + 33,336,1,0,0,0,35,338,1,0,0,0,37,347,1,0,0,0,39,356,1,0,0,0,41,366,1,0, + 0,0,43,374,1,0,0,0,45,377,1,0,0,0,47,379,1,0,0,0,49,381,1,0,0,0,51,387, + 1,0,0,0,53,393,1,0,0,0,55,397,1,0,0,0,57,399,1,0,0,0,59,401,1,0,0,0,61, + 403,1,0,0,0,63,405,1,0,0,0,65,407,1,0,0,0,67,409,1,0,0,0,69,412,1,0,0,0, + 71,415,1,0,0,0,73,422,1,0,0,0,75,431,1,0,0,0,77,440,1,0,0,0,79,448,1,0, + 0,0,81,454,1,0,0,0,83,459,1,0,0,0,85,461,1,0,0,0,87,463,1,0,0,0,89,471, + 1,0,0,0,91,473,1,0,0,0,93,481,1,0,0,0,95,484,1,0,0,0,97,491,1,0,0,0,99, + 499,1,0,0,0,101,508,1,0,0,0,103,511,1,0,0,0,105,516,1,0,0,0,107,520,1,0, + 0,0,109,526,1,0,0,0,111,532,1,0,0,0,113,542,1,0,0,0,115,551,1,0,0,0,117, + 554,1,0,0,0,119,561,1,0,0,0,121,567,1,0,0,0,123,572,1,0,0,0,125,579,1,0, + 0,0,127,583,1,0,0,0,129,588,1,0,0,0,131,595,1,0,0,0,133,600,1,0,0,0,135, + 603,1,0,0,0,137,606,1,0,0,0,139,610,1,0,0,0,141,612,1,0,0,0,143,619,1,0, + 0,0,145,621,1,0,0,0,147,624,1,0,0,0,149,627,1,0,0,0,151,630,1,0,0,0,153, + 633,1,0,0,0,155,635,1,0,0,0,157,638,1,0,0,0,159,641,1,0,0,0,161,644,1,0, + 0,0,163,648,1,0,0,0,165,652,1,0,0,0,167,655,1,0,0,0,169,658,1,0,0,0,171, + 661,1,0,0,0,173,664,1,0,0,0,175,667,1,0,0,0,177,671,1,0,0,0,179,674,1,0, + 0,0,181,677,1,0,0,0,183,684,1,0,0,0,185,689,1,0,0,0,187,697,1,0,0,0,189, + 700,1,0,0,0,191,709,1,0,0,0,193,718,1,0,0,0,195,725,1,0,0,0,197,733,1,0, + 0,0,199,742,1,0,0,0,201,757,1,0,0,0,203,856,1,0,0,0,205,863,1,0,0,0,207, + 874,1,0,0,0,209,882,1,0,0,0,211,891,1,0,0,0,213,901,1,0,0,0,215,905,1,0, + 0,0,217,971,1,0,0,0,219,973,1,0,0,0,221,989,1,0,0,0,223,1079,1,0,0,0,225, + 1081,1,0,0,0,227,1091,1,0,0,0,229,1097,1,0,0,0,231,1106,1,0,0,0,233,1116, + 1,0,0,0,235,1126,1,0,0,0,237,1135,1,0,0,0,239,1141,1,0,0,0,241,1150,1,0, + 0,0,243,1158,1,0,0,0,245,1167,1,0,0,0,247,1175,1,0,0,0,249,1183,1,0,0,0, + 251,1190,1,0,0,0,253,1198,1,0,0,0,255,1203,1,0,0,0,257,1208,1,0,0,0,259, + 1213,1,0,0,0,261,1220,1,0,0,0,263,1232,1,0,0,0,265,1241,1,0,0,0,267,1249, + 1,0,0,0,269,1256,1,0,0,0,271,1258,1,0,0,0,273,1267,1,0,0,0,275,1290,1,0, + 0,0,277,1295,1,0,0,0,279,1298,1,0,0,0,281,1317,1,0,0,0,283,1323,1,0,0,0, + 285,1337,1,0,0,0,287,288,5,112,0,0,288,289,5,114,0,0,289,290,5,97,0,0,290, + 291,5,103,0,0,291,292,5,109,0,0,292,293,5,97,0,0,293,2,1,0,0,0,294,295, + 5,59,0,0,295,4,1,0,0,0,296,297,5,42,0,0,297,6,1,0,0,0,298,299,5,124,0,0, + 299,300,5,124,0,0,300,8,1,0,0,0,301,302,5,94,0,0,302,10,1,0,0,0,303,304, + 5,126,0,0,304,12,1,0,0,0,305,306,5,62,0,0,306,307,5,61,0,0,307,14,1,0,0, + 0,308,309,5,62,0,0,309,16,1,0,0,0,310,311,5,60,0,0,311,18,1,0,0,0,312,313, + 5,60,0,0,313,314,5,61,0,0,314,20,1,0,0,0,315,316,5,61,0,0,316,22,1,0,0, + 0,317,318,5,97,0,0,318,319,5,115,0,0,319,24,1,0,0,0,320,321,5,105,0,0,321, + 322,5,109,0,0,322,323,5,112,0,0,323,324,5,111,0,0,324,325,5,114,0,0,325, + 326,5,116,0,0,326,26,1,0,0,0,327,328,5,102,0,0,328,329,5,114,0,0,329,330, + 5,111,0,0,330,331,5,109,0,0,331,28,1,0,0,0,332,333,5,123,0,0,333,30,1,0, + 0,0,334,335,5,44,0,0,335,32,1,0,0,0,336,337,5,125,0,0,337,34,1,0,0,0,338, + 339,5,97,0,0,339,340,5,98,0,0,340,341,5,115,0,0,341,342,5,116,0,0,342,343, + 5,114,0,0,343,344,5,97,0,0,344,345,5,99,0,0,345,346,5,116,0,0,346,36,1, + 0,0,0,347,348,5,99,0,0,348,349,5,111,0,0,349,350,5,110,0,0,350,351,5,116, + 0,0,351,352,5,114,0,0,352,353,5,97,0,0,353,354,5,99,0,0,354,355,5,116,0, + 0,355,38,1,0,0,0,356,357,5,105,0,0,357,358,5,110,0,0,358,359,5,116,0,0, + 359,360,5,101,0,0,360,361,5,114,0,0,361,362,5,102,0,0,362,363,5,97,0,0, + 363,364,5,99,0,0,364,365,5,101,0,0,365,40,1,0,0,0,366,367,5,108,0,0,367, + 368,5,105,0,0,368,369,5,98,0,0,369,370,5,114,0,0,370,371,5,97,0,0,371,372, + 5,114,0,0,372,373,5,121,0,0,373,42,1,0,0,0,374,375,5,105,0,0,375,376,5, + 115,0,0,376,44,1,0,0,0,377,378,5,40,0,0,378,46,1,0,0,0,379,380,5,41,0,0, + 380,48,1,0,0,0,381,382,5,101,0,0,382,383,5,114,0,0,383,384,5,114,0,0,384, + 385,5,111,0,0,385,386,5,114,0,0,386,50,1,0,0,0,387,388,5,117,0,0,388,389, + 5,115,0,0,389,390,5,105,0,0,390,391,5,110,0,0,391,392,5,103,0,0,392,52, + 1,0,0,0,393,394,5,102,0,0,394,395,5,111,0,0,395,396,5,114,0,0,396,54,1, + 0,0,0,397,398,5,124,0,0,398,56,1,0,0,0,399,400,5,38,0,0,400,58,1,0,0,0, + 401,402,5,43,0,0,402,60,1,0,0,0,403,404,5,45,0,0,404,62,1,0,0,0,405,406, + 5,47,0,0,406,64,1,0,0,0,407,408,5,37,0,0,408,66,1,0,0,0,409,410,5,61,0, + 0,410,411,5,61,0,0,411,68,1,0,0,0,412,413,5,33,0,0,413,414,5,61,0,0,414, + 70,1,0,0,0,415,416,5,115,0,0,416,417,5,116,0,0,417,418,5,114,0,0,418,419, + 5,117,0,0,419,420,5,99,0,0,420,421,5,116,0,0,421,72,1,0,0,0,422,423,5,109, + 0,0,423,424,5,111,0,0,424,425,5,100,0,0,425,426,5,105,0,0,426,427,5,102, + 0,0,427,428,5,105,0,0,428,429,5,101,0,0,429,430,5,114,0,0,430,74,1,0,0, + 0,431,432,5,102,0,0,432,433,5,117,0,0,433,434,5,110,0,0,434,435,5,99,0, + 0,435,436,5,116,0,0,436,437,5,105,0,0,437,438,5,111,0,0,438,439,5,110,0, + 0,439,76,1,0,0,0,440,441,5,114,0,0,441,442,5,101,0,0,442,443,5,116,0,0, + 443,444,5,117,0,0,444,445,5,114,0,0,445,446,5,110,0,0,446,447,5,115,0,0, + 447,78,1,0,0,0,448,449,5,101,0,0,449,450,5,118,0,0,450,451,5,101,0,0,451, + 452,5,110,0,0,452,453,5,116,0,0,453,80,1,0,0,0,454,455,5,101,0,0,455,456, + 5,110,0,0,456,457,5,117,0,0,457,458,5,109,0,0,458,82,1,0,0,0,459,460,5, + 91,0,0,460,84,1,0,0,0,461,462,5,93,0,0,462,86,1,0,0,0,463,464,5,97,0,0, + 464,465,5,100,0,0,465,466,5,100,0,0,466,467,5,114,0,0,467,468,5,101,0,0, + 468,469,5,115,0,0,469,470,5,115,0,0,470,88,1,0,0,0,471,472,5,46,0,0,472, + 90,1,0,0,0,473,474,5,109,0,0,474,475,5,97,0,0,475,476,5,112,0,0,476,477, + 5,112,0,0,477,478,5,105,0,0,478,479,5,110,0,0,479,480,5,103,0,0,480,92, + 1,0,0,0,481,482,5,61,0,0,482,483,5,62,0,0,483,94,1,0,0,0,484,485,5,109, + 0,0,485,486,5,101,0,0,486,487,5,109,0,0,487,488,5,111,0,0,488,489,5,114, + 0,0,489,490,5,121,0,0,490,96,1,0,0,0,491,492,5,115,0,0,492,493,5,116,0, + 0,493,494,5,111,0,0,494,495,5,114,0,0,495,496,5,97,0,0,496,497,5,103,0, + 0,497,498,5,101,0,0,498,98,1,0,0,0,499,500,5,99,0,0,500,501,5,97,0,0,501, + 502,5,108,0,0,502,503,5,108,0,0,503,504,5,100,0,0,504,505,5,97,0,0,505, + 506,5,116,0,0,506,507,5,97,0,0,507,100,1,0,0,0,508,509,5,105,0,0,509,510, + 5,102,0,0,510,102,1,0,0,0,511,512,5,101,0,0,512,513,5,108,0,0,513,514,5, + 115,0,0,514,515,5,101,0,0,515,104,1,0,0,0,516,517,5,116,0,0,517,518,5,114, + 0,0,518,519,5,121,0,0,519,106,1,0,0,0,520,521,5,99,0,0,521,522,5,97,0,0, + 522,523,5,116,0,0,523,524,5,99,0,0,524,525,5,104,0,0,525,108,1,0,0,0,526, + 527,5,119,0,0,527,528,5,104,0,0,528,529,5,105,0,0,529,530,5,108,0,0,530, + 531,5,101,0,0,531,110,1,0,0,0,532,533,5,117,0,0,533,534,5,110,0,0,534,535, + 5,99,0,0,535,536,5,104,0,0,536,537,5,101,0,0,537,538,5,99,0,0,538,539,5, + 107,0,0,539,540,5,101,0,0,540,541,5,100,0,0,541,112,1,0,0,0,542,543,5,97, + 0,0,543,544,5,115,0,0,544,545,5,115,0,0,545,546,5,101,0,0,546,547,5,109, + 0,0,547,548,5,98,0,0,548,549,5,108,0,0,549,550,5,121,0,0,550,114,1,0,0, + 0,551,552,5,100,0,0,552,553,5,111,0,0,553,116,1,0,0,0,554,555,5,114,0,0, + 555,556,5,101,0,0,556,557,5,116,0,0,557,558,5,117,0,0,558,559,5,114,0,0, + 559,560,5,110,0,0,560,118,1,0,0,0,561,562,5,116,0,0,562,563,5,104,0,0,563, + 564,5,114,0,0,564,565,5,111,0,0,565,566,5,119,0,0,566,120,1,0,0,0,567,568, + 5,101,0,0,568,569,5,109,0,0,569,570,5,105,0,0,570,571,5,116,0,0,571,122, + 1,0,0,0,572,573,5,114,0,0,573,574,5,101,0,0,574,575,5,118,0,0,575,576,5, + 101,0,0,576,577,5,114,0,0,577,578,5,116,0,0,578,124,1,0,0,0,579,580,5,118, + 0,0,580,581,5,97,0,0,581,582,5,114,0,0,582,126,1,0,0,0,583,584,5,98,0,0, + 584,585,5,111,0,0,585,586,5,111,0,0,586,587,5,108,0,0,587,128,1,0,0,0,588, + 589,5,115,0,0,589,590,5,116,0,0,590,591,5,114,0,0,591,592,5,105,0,0,592, + 593,5,110,0,0,593,594,5,103,0,0,594,130,1,0,0,0,595,596,5,98,0,0,596,597, + 5,121,0,0,597,598,5,116,0,0,598,599,5,101,0,0,599,132,1,0,0,0,600,601,5, + 43,0,0,601,602,5,43,0,0,602,134,1,0,0,0,603,604,5,45,0,0,604,605,5,45,0, + 0,605,136,1,0,0,0,606,607,5,110,0,0,607,608,5,101,0,0,608,609,5,119,0,0, + 609,138,1,0,0,0,610,611,5,58,0,0,611,140,1,0,0,0,612,613,5,100,0,0,613, + 614,5,101,0,0,614,615,5,108,0,0,615,616,5,101,0,0,616,617,5,116,0,0,617, + 618,5,101,0,0,618,142,1,0,0,0,619,620,5,33,0,0,620,144,1,0,0,0,621,622, + 5,42,0,0,622,623,5,42,0,0,623,146,1,0,0,0,624,625,5,60,0,0,625,626,5,60, + 0,0,626,148,1,0,0,0,627,628,5,62,0,0,628,629,5,62,0,0,629,150,1,0,0,0,630, + 631,5,38,0,0,631,632,5,38,0,0,632,152,1,0,0,0,633,634,5,63,0,0,634,154, + 1,0,0,0,635,636,5,124,0,0,636,637,5,61,0,0,637,156,1,0,0,0,638,639,5,94, + 0,0,639,640,5,61,0,0,640,158,1,0,0,0,641,642,5,38,0,0,642,643,5,61,0,0, + 643,160,1,0,0,0,644,645,5,60,0,0,645,646,5,60,0,0,646,647,5,61,0,0,647, + 162,1,0,0,0,648,649,5,62,0,0,649,650,5,62,0,0,650,651,5,61,0,0,651,164, + 1,0,0,0,652,653,5,43,0,0,653,654,5,61,0,0,654,166,1,0,0,0,655,656,5,45, + 0,0,656,657,5,61,0,0,657,168,1,0,0,0,658,659,5,42,0,0,659,660,5,61,0,0, + 660,170,1,0,0,0,661,662,5,47,0,0,662,663,5,61,0,0,663,172,1,0,0,0,664,665, + 5,37,0,0,665,666,5,61,0,0,666,174,1,0,0,0,667,668,5,108,0,0,668,669,5,101, + 0,0,669,670,5,116,0,0,670,176,1,0,0,0,671,672,5,58,0,0,672,673,5,61,0,0, + 673,178,1,0,0,0,674,675,5,61,0,0,675,676,5,58,0,0,676,180,1,0,0,0,677,678, + 5,115,0,0,678,679,5,119,0,0,679,680,5,105,0,0,680,681,5,116,0,0,681,682, + 5,99,0,0,682,683,5,104,0,0,683,182,1,0,0,0,684,685,5,99,0,0,685,686,5,97, + 0,0,686,687,5,115,0,0,687,688,5,101,0,0,688,184,1,0,0,0,689,690,5,100,0, + 0,690,691,5,101,0,0,691,692,5,102,0,0,692,693,5,97,0,0,693,694,5,117,0, + 0,694,695,5,108,0,0,695,696,5,116,0,0,696,186,1,0,0,0,697,698,5,45,0,0, + 698,699,5,62,0,0,699,188,1,0,0,0,700,701,5,99,0,0,701,702,5,97,0,0,702, + 703,5,108,0,0,703,704,5,108,0,0,704,705,5,98,0,0,705,706,5,97,0,0,706,707, + 5,99,0,0,707,708,5,107,0,0,708,190,1,0,0,0,709,710,5,111,0,0,710,711,5, + 118,0,0,711,712,5,101,0,0,712,713,5,114,0,0,713,714,5,114,0,0,714,715,5, + 105,0,0,715,716,5,100,0,0,716,717,5,101,0,0,717,192,1,0,0,0,718,719,5,105, + 0,0,719,720,5,110,0,0,720,721,5,116,0,0,721,723,1,0,0,0,722,724,3,203,101, + 0,723,722,1,0,0,0,723,724,1,0,0,0,724,194,1,0,0,0,725,726,5,117,0,0,726, + 727,5,105,0,0,727,728,5,110,0,0,728,729,5,116,0,0,729,731,1,0,0,0,730,732, + 3,203,101,0,731,730,1,0,0,0,731,732,1,0,0,0,732,196,1,0,0,0,733,734,5,98, + 0,0,734,735,5,121,0,0,735,736,5,116,0,0,736,737,5,101,0,0,737,738,5,115, + 0,0,738,740,1,0,0,0,739,741,3,205,102,0,740,739,1,0,0,0,740,741,1,0,0,0, + 741,198,1,0,0,0,742,743,5,102,0,0,743,744,5,105,0,0,744,745,5,120,0,0,745, + 746,5,101,0,0,746,747,5,100,0,0,747,755,1,0,0,0,748,749,3,203,101,0,749, + 751,5,120,0,0,750,752,7,0,0,0,751,750,1,0,0,0,752,753,1,0,0,0,753,751,1, + 0,0,0,753,754,1,0,0,0,754,756,1,0,0,0,755,748,1,0,0,0,755,756,1,0,0,0,756, + 200,1,0,0,0,757,758,5,117,0,0,758,759,5,102,0,0,759,760,5,105,0,0,760,761, + 5,120,0,0,761,762,5,101,0,0,762,763,5,100,0,0,763,771,1,0,0,0,764,765,3, + 203,101,0,765,767,5,120,0,0,766,768,7,0,0,0,767,766,1,0,0,0,768,769,1,0, + 0,0,769,767,1,0,0,0,769,770,1,0,0,0,770,772,1,0,0,0,771,764,1,0,0,0,771, + 772,1,0,0,0,772,202,1,0,0,0,773,857,5,56,0,0,774,775,5,49,0,0,775,857,5, + 54,0,0,776,777,5,50,0,0,777,857,5,52,0,0,778,779,5,51,0,0,779,857,5,50, + 0,0,780,781,5,52,0,0,781,857,5,48,0,0,782,783,5,52,0,0,783,857,5,56,0,0, + 784,785,5,53,0,0,785,857,5,54,0,0,786,787,5,54,0,0,787,857,5,52,0,0,788, + 789,5,55,0,0,789,857,5,50,0,0,790,791,5,56,0,0,791,857,5,48,0,0,792,793, + 5,56,0,0,793,857,5,56,0,0,794,795,5,57,0,0,795,857,5,54,0,0,796,797,5,49, + 0,0,797,798,5,48,0,0,798,857,5,52,0,0,799,800,5,49,0,0,800,801,5,49,0,0, + 801,857,5,50,0,0,802,803,5,49,0,0,803,804,5,50,0,0,804,857,5,48,0,0,805, + 806,5,49,0,0,806,807,5,50,0,0,807,857,5,56,0,0,808,809,5,49,0,0,809,810, + 5,51,0,0,810,857,5,54,0,0,811,812,5,49,0,0,812,813,5,52,0,0,813,857,5,52, + 0,0,814,815,5,49,0,0,815,816,5,53,0,0,816,857,5,50,0,0,817,818,5,49,0,0, + 818,819,5,54,0,0,819,857,5,48,0,0,820,821,5,49,0,0,821,822,5,54,0,0,822, + 857,5,56,0,0,823,824,5,49,0,0,824,825,5,55,0,0,825,857,5,54,0,0,826,827, + 5,49,0,0,827,828,5,56,0,0,828,857,5,52,0,0,829,830,5,49,0,0,830,831,5,57, + 0,0,831,857,5,50,0,0,832,833,5,50,0,0,833,834,5,48,0,0,834,857,5,48,0,0, + 835,836,5,50,0,0,836,837,5,48,0,0,837,857,5,56,0,0,838,839,5,50,0,0,839, + 840,5,49,0,0,840,857,5,54,0,0,841,842,5,50,0,0,842,843,5,50,0,0,843,857, + 5,52,0,0,844,845,5,50,0,0,845,846,5,51,0,0,846,857,5,50,0,0,847,848,5,50, + 0,0,848,849,5,52,0,0,849,857,5,48,0,0,850,851,5,50,0,0,851,852,5,52,0,0, + 852,857,5,56,0,0,853,854,5,50,0,0,854,855,5,53,0,0,855,857,5,54,0,0,856, + 773,1,0,0,0,856,774,1,0,0,0,856,776,1,0,0,0,856,778,1,0,0,0,856,780,1,0, + 0,0,856,782,1,0,0,0,856,784,1,0,0,0,856,786,1,0,0,0,856,788,1,0,0,0,856, + 790,1,0,0,0,856,792,1,0,0,0,856,794,1,0,0,0,856,796,1,0,0,0,856,799,1,0, + 0,0,856,802,1,0,0,0,856,805,1,0,0,0,856,808,1,0,0,0,856,811,1,0,0,0,856, + 814,1,0,0,0,856,817,1,0,0,0,856,820,1,0,0,0,856,823,1,0,0,0,856,826,1,0, + 0,0,856,829,1,0,0,0,856,832,1,0,0,0,856,835,1,0,0,0,856,838,1,0,0,0,856, + 841,1,0,0,0,856,844,1,0,0,0,856,847,1,0,0,0,856,850,1,0,0,0,856,853,1,0, + 0,0,857,204,1,0,0,0,858,864,7,1,0,0,859,860,7,2,0,0,860,864,7,0,0,0,861, + 862,5,51,0,0,862,864,7,3,0,0,863,858,1,0,0,0,863,859,1,0,0,0,863,861,1, + 0,0,0,864,206,1,0,0,0,865,866,5,116,0,0,866,867,5,114,0,0,867,868,5,117, + 0,0,868,875,5,101,0,0,869,870,5,102,0,0,870,871,5,97,0,0,871,872,5,108, + 0,0,872,873,5,115,0,0,873,875,5,101,0,0,874,865,1,0,0,0,874,869,1,0,0,0, + 875,208,1,0,0,0,876,883,3,211,105,0,877,879,3,211,105,0,878,877,1,0,0,0, + 878,879,1,0,0,0,879,880,1,0,0,0,880,881,5,46,0,0,881,883,3,211,105,0,882, + 876,1,0,0,0,882,878,1,0,0,0,883,889,1,0,0,0,884,886,7,4,0,0,885,887,5,45, + 0,0,886,885,1,0,0,0,886,887,1,0,0,0,887,888,1,0,0,0,888,890,3,211,105,0, + 889,884,1,0,0,0,889,890,1,0,0,0,890,210,1,0,0,0,891,898,7,0,0,0,892,894, + 5,95,0,0,893,892,1,0,0,0,893,894,1,0,0,0,894,895,1,0,0,0,895,897,7,0,0, + 0,896,893,1,0,0,0,897,900,1,0,0,0,898,896,1,0,0,0,898,899,1,0,0,0,899,212, + 1,0,0,0,900,898,1,0,0,0,901,902,5,48,0,0,902,903,7,5,0,0,903,904,3,215, + 107,0,904,214,1,0,0,0,905,912,3,221,110,0,906,908,5,95,0,0,907,906,1,0, + 0,0,907,908,1,0,0,0,908,909,1,0,0,0,909,911,3,221,110,0,910,907,1,0,0,0, + 911,914,1,0,0,0,912,910,1,0,0,0,912,913,1,0,0,0,913,216,1,0,0,0,914,912, + 1,0,0,0,915,916,5,119,0,0,916,917,5,101,0,0,917,972,5,105,0,0,918,919,5, + 103,0,0,919,920,5,119,0,0,920,921,5,101,0,0,921,972,5,105,0,0,922,923,5, + 115,0,0,923,924,5,122,0,0,924,925,5,97,0,0,925,926,5,98,0,0,926,972,5,111, + 0,0,927,928,5,102,0,0,928,929,5,105,0,0,929,930,5,110,0,0,930,931,5,110, + 0,0,931,932,5,101,0,0,932,972,5,121,0,0,933,934,5,101,0,0,934,935,5,116, + 0,0,935,936,5,104,0,0,936,937,5,101,0,0,937,972,5,114,0,0,938,939,5,115, + 0,0,939,940,5,101,0,0,940,941,5,99,0,0,941,942,5,111,0,0,942,943,5,110, + 0,0,943,944,5,100,0,0,944,972,5,115,0,0,945,946,5,109,0,0,946,947,5,105, + 0,0,947,948,5,110,0,0,948,949,5,117,0,0,949,950,5,116,0,0,950,951,5,101, + 0,0,951,972,5,115,0,0,952,953,5,104,0,0,953,954,5,111,0,0,954,955,5,117, + 0,0,955,956,5,114,0,0,956,972,5,115,0,0,957,958,5,100,0,0,958,959,5,97, + 0,0,959,960,5,121,0,0,960,972,5,115,0,0,961,962,5,119,0,0,962,963,5,101, + 0,0,963,964,5,101,0,0,964,965,5,107,0,0,965,972,5,115,0,0,966,967,5,121, + 0,0,967,968,5,101,0,0,968,969,5,97,0,0,969,970,5,114,0,0,970,972,5,115, + 0,0,971,915,1,0,0,0,971,918,1,0,0,0,971,922,1,0,0,0,971,927,1,0,0,0,971, + 933,1,0,0,0,971,938,1,0,0,0,971,945,1,0,0,0,971,952,1,0,0,0,971,957,1,0, + 0,0,971,961,1,0,0,0,971,966,1,0,0,0,972,218,1,0,0,0,973,974,5,104,0,0,974, + 975,5,101,0,0,975,976,5,120,0,0,976,987,1,0,0,0,977,979,5,34,0,0,978,980, + 3,215,107,0,979,978,1,0,0,0,979,980,1,0,0,0,980,981,1,0,0,0,981,988,5,34, + 0,0,982,984,5,39,0,0,983,985,3,215,107,0,984,983,1,0,0,0,984,985,1,0,0, + 0,985,986,1,0,0,0,986,988,5,39,0,0,987,977,1,0,0,0,987,982,1,0,0,0,988, + 220,1,0,0,0,989,990,7,6,0,0,990,222,1,0,0,0,991,992,5,97,0,0,992,993,5, + 98,0,0,993,994,5,115,0,0,994,995,5,116,0,0,995,996,5,114,0,0,996,997,5, + 97,0,0,997,998,5,99,0,0,998,1080,5,116,0,0,999,1000,5,97,0,0,1000,1001, + 5,102,0,0,1001,1002,5,116,0,0,1002,1003,5,101,0,0,1003,1080,5,114,0,0,1004, + 1005,5,99,0,0,1005,1006,5,97,0,0,1006,1007,5,115,0,0,1007,1080,5,101,0, + 0,1008,1009,5,99,0,0,1009,1010,5,97,0,0,1010,1011,5,116,0,0,1011,1012,5, + 99,0,0,1012,1080,5,104,0,0,1013,1014,5,100,0,0,1014,1015,5,101,0,0,1015, + 1016,5,102,0,0,1016,1017,5,97,0,0,1017,1018,5,117,0,0,1018,1019,5,108,0, + 0,1019,1080,5,116,0,0,1020,1021,5,102,0,0,1021,1022,5,105,0,0,1022,1023, + 5,110,0,0,1023,1024,5,97,0,0,1024,1080,5,108,0,0,1025,1026,5,105,0,0,1026, + 1080,5,110,0,0,1027,1028,5,105,0,0,1028,1029,5,110,0,0,1029,1030,5,108, + 0,0,1030,1031,5,105,0,0,1031,1032,5,110,0,0,1032,1080,5,101,0,0,1033,1034, + 5,108,0,0,1034,1035,5,101,0,0,1035,1080,5,116,0,0,1036,1037,5,109,0,0,1037, + 1038,5,97,0,0,1038,1039,5,116,0,0,1039,1040,5,99,0,0,1040,1080,5,104,0, + 0,1041,1042,5,110,0,0,1042,1043,5,117,0,0,1043,1044,5,108,0,0,1044,1080, + 5,108,0,0,1045,1046,5,111,0,0,1046,1080,5,102,0,0,1047,1048,5,114,0,0,1048, + 1049,5,101,0,0,1049,1050,5,108,0,0,1050,1051,5,111,0,0,1051,1052,5,99,0, + 0,1052,1053,5,97,0,0,1053,1054,5,116,0,0,1054,1055,5,97,0,0,1055,1056,5, + 98,0,0,1056,1057,5,108,0,0,1057,1080,5,101,0,0,1058,1059,5,115,0,0,1059, + 1060,5,116,0,0,1060,1061,5,97,0,0,1061,1062,5,116,0,0,1062,1063,5,105,0, + 0,1063,1080,5,99,0,0,1064,1065,5,115,0,0,1065,1066,5,119,0,0,1066,1067, + 5,105,0,0,1067,1068,5,116,0,0,1068,1069,5,99,0,0,1069,1080,5,104,0,0,1070, + 1071,5,116,0,0,1071,1072,5,114,0,0,1072,1080,5,121,0,0,1073,1074,5,116, + 0,0,1074,1075,5,121,0,0,1075,1076,5,112,0,0,1076,1077,5,101,0,0,1077,1078, + 5,111,0,0,1078,1080,5,102,0,0,1079,991,1,0,0,0,1079,999,1,0,0,0,1079,1004, + 1,0,0,0,1079,1008,1,0,0,0,1079,1013,1,0,0,0,1079,1020,1,0,0,0,1079,1025, + 1,0,0,0,1079,1027,1,0,0,0,1079,1033,1,0,0,0,1079,1036,1,0,0,0,1079,1041, + 1,0,0,0,1079,1045,1,0,0,0,1079,1047,1,0,0,0,1079,1058,1,0,0,0,1079,1064, + 1,0,0,0,1079,1070,1,0,0,0,1079,1073,1,0,0,0,1080,224,1,0,0,0,1081,1082, + 5,97,0,0,1082,1083,5,110,0,0,1083,1084,5,111,0,0,1084,1085,5,110,0,0,1085, + 1086,5,121,0,0,1086,1087,5,109,0,0,1087,1088,5,111,0,0,1088,1089,5,117, + 0,0,1089,1090,5,115,0,0,1090,226,1,0,0,0,1091,1092,5,98,0,0,1092,1093,5, + 114,0,0,1093,1094,5,101,0,0,1094,1095,5,97,0,0,1095,1096,5,107,0,0,1096, + 228,1,0,0,0,1097,1098,5,99,0,0,1098,1099,5,111,0,0,1099,1100,5,110,0,0, + 1100,1101,5,115,0,0,1101,1102,5,116,0,0,1102,1103,5,97,0,0,1103,1104,5, + 110,0,0,1104,1105,5,116,0,0,1105,230,1,0,0,0,1106,1107,5,116,0,0,1107,1108, + 5,114,0,0,1108,1109,5,97,0,0,1109,1110,5,110,0,0,1110,1111,5,115,0,0,1111, + 1112,5,105,0,0,1112,1113,5,101,0,0,1113,1114,5,110,0,0,1114,1115,5,116, + 0,0,1115,232,1,0,0,0,1116,1117,5,105,0,0,1117,1118,5,109,0,0,1118,1119, + 5,109,0,0,1119,1120,5,117,0,0,1120,1121,5,116,0,0,1121,1122,5,97,0,0,1122, + 1123,5,98,0,0,1123,1124,5,108,0,0,1124,1125,5,101,0,0,1125,234,1,0,0,0, + 1126,1127,5,99,0,0,1127,1128,5,111,0,0,1128,1129,5,110,0,0,1129,1130,5, + 116,0,0,1130,1131,5,105,0,0,1131,1132,5,110,0,0,1132,1133,5,117,0,0,1133, + 1134,5,101,0,0,1134,236,1,0,0,0,1135,1136,5,108,0,0,1136,1137,5,101,0,0, + 1137,1138,5,97,0,0,1138,1139,5,118,0,0,1139,1140,5,101,0,0,1140,238,1,0, + 0,0,1141,1142,5,101,0,0,1142,1143,5,120,0,0,1143,1144,5,116,0,0,1144,1145, + 5,101,0,0,1145,1146,5,114,0,0,1146,1147,5,110,0,0,1147,1148,5,97,0,0,1148, + 1149,5,108,0,0,1149,240,1,0,0,0,1150,1151,5,105,0,0,1151,1152,5,110,0,0, + 1152,1153,5,100,0,0,1153,1154,5,101,0,0,1154,1155,5,120,0,0,1155,1156,5, + 101,0,0,1156,1157,5,100,0,0,1157,242,1,0,0,0,1158,1159,5,105,0,0,1159,1160, + 5,110,0,0,1160,1161,5,116,0,0,1161,1162,5,101,0,0,1162,1163,5,114,0,0,1163, + 1164,5,110,0,0,1164,1165,5,97,0,0,1165,1166,5,108,0,0,1166,244,1,0,0,0, + 1167,1168,5,112,0,0,1168,1169,5,97,0,0,1169,1170,5,121,0,0,1170,1171,5, + 97,0,0,1171,1172,5,98,0,0,1172,1173,5,108,0,0,1173,1174,5,101,0,0,1174, + 246,1,0,0,0,1175,1176,5,112,0,0,1176,1177,5,114,0,0,1177,1178,5,105,0,0, + 1178,1179,5,118,0,0,1179,1180,5,97,0,0,1180,1181,5,116,0,0,1181,1182,5, + 101,0,0,1182,248,1,0,0,0,1183,1184,5,112,0,0,1184,1185,5,117,0,0,1185,1186, + 5,98,0,0,1186,1187,5,108,0,0,1187,1188,5,105,0,0,1188,1189,5,99,0,0,1189, + 250,1,0,0,0,1190,1191,5,118,0,0,1191,1192,5,105,0,0,1192,1193,5,114,0,0, + 1193,1194,5,116,0,0,1194,1195,5,117,0,0,1195,1196,5,97,0,0,1196,1197,5, + 108,0,0,1197,252,1,0,0,0,1198,1199,5,112,0,0,1199,1200,5,117,0,0,1200,1201, + 5,114,0,0,1201,1202,5,101,0,0,1202,254,1,0,0,0,1203,1204,5,116,0,0,1204, + 1205,5,121,0,0,1205,1206,5,112,0,0,1206,1207,5,101,0,0,1207,256,1,0,0,0, + 1208,1209,5,118,0,0,1209,1210,5,105,0,0,1210,1211,5,101,0,0,1211,1212,5, + 119,0,0,1212,258,1,0,0,0,1213,1214,5,103,0,0,1214,1215,5,108,0,0,1215,1216, + 5,111,0,0,1216,1217,5,98,0,0,1217,1218,5,97,0,0,1218,1219,5,108,0,0,1219, + 260,1,0,0,0,1220,1221,5,99,0,0,1221,1222,5,111,0,0,1222,1223,5,110,0,0, + 1223,1224,5,115,0,0,1224,1225,5,116,0,0,1225,1226,5,114,0,0,1226,1227,5, + 117,0,0,1227,1228,5,99,0,0,1228,1229,5,116,0,0,1229,1230,5,111,0,0,1230, + 1231,5,114,0,0,1231,262,1,0,0,0,1232,1233,5,102,0,0,1233,1234,5,97,0,0, + 1234,1235,5,108,0,0,1235,1236,5,108,0,0,1236,1237,5,98,0,0,1237,1238,5, + 97,0,0,1238,1239,5,99,0,0,1239,1240,5,107,0,0,1240,264,1,0,0,0,1241,1242, + 5,114,0,0,1242,1243,5,101,0,0,1243,1244,5,99,0,0,1244,1245,5,101,0,0,1245, + 1246,5,105,0,0,1246,1247,5,118,0,0,1247,1248,5,101,0,0,1248,266,1,0,0,0, + 1249,1253,3,269,134,0,1250,1252,3,271,135,0,1251,1250,1,0,0,0,1252,1255, + 1,0,0,0,1253,1251,1,0,0,0,1253,1254,1,0,0,0,1254,268,1,0,0,0,1255,1253, + 1,0,0,0,1256,1257,7,7,0,0,1257,270,1,0,0,0,1258,1259,7,8,0,0,1259,272,1, + 0,0,0,1260,1261,5,117,0,0,1261,1262,5,110,0,0,1262,1263,5,105,0,0,1263, + 1264,5,99,0,0,1264,1265,5,111,0,0,1265,1266,5,100,0,0,1266,1268,5,101,0, + 0,1267,1260,1,0,0,0,1267,1268,1,0,0,0,1268,1285,1,0,0,0,1269,1273,5,34, + 0,0,1270,1272,3,275,137,0,1271,1270,1,0,0,0,1272,1275,1,0,0,0,1273,1271, + 1,0,0,0,1273,1274,1,0,0,0,1274,1276,1,0,0,0,1275,1273,1,0,0,0,1276,1286, + 5,34,0,0,1277,1281,5,39,0,0,1278,1280,3,277,138,0,1279,1278,1,0,0,0,1280, + 1283,1,0,0,0,1281,1279,1,0,0,0,1281,1282,1,0,0,0,1282,1284,1,0,0,0,1283, + 1281,1,0,0,0,1284,1286,5,39,0,0,1285,1269,1,0,0,0,1285,1277,1,0,0,0,1286, + 274,1,0,0,0,1287,1291,8,9,0,0,1288,1289,5,92,0,0,1289,1291,9,0,0,0,1290, + 1287,1,0,0,0,1290,1288,1,0,0,0,1291,276,1,0,0,0,1292,1296,8,10,0,0,1293, + 1294,5,92,0,0,1294,1296,9,0,0,0,1295,1292,1,0,0,0,1295,1293,1,0,0,0,1296, + 278,1,0,0,0,1297,1299,7,0,0,0,1298,1297,1,0,0,0,1299,1300,1,0,0,0,1300, + 1298,1,0,0,0,1300,1301,1,0,0,0,1301,1302,1,0,0,0,1302,1304,5,46,0,0,1303, + 1305,7,0,0,0,1304,1303,1,0,0,0,1305,1306,1,0,0,0,1306,1304,1,0,0,0,1306, + 1307,1,0,0,0,1307,1314,1,0,0,0,1308,1310,5,46,0,0,1309,1311,7,0,0,0,1310, + 1309,1,0,0,0,1311,1312,1,0,0,0,1312,1310,1,0,0,0,1312,1313,1,0,0,0,1313, + 1315,1,0,0,0,1314,1308,1,0,0,0,1314,1315,1,0,0,0,1315,280,1,0,0,0,1316, + 1318,7,11,0,0,1317,1316,1,0,0,0,1318,1319,1,0,0,0,1319,1317,1,0,0,0,1319, + 1320,1,0,0,0,1320,1321,1,0,0,0,1321,1322,6,140,0,0,1322,282,1,0,0,0,1323, + 1324,5,47,0,0,1324,1325,5,42,0,0,1325,1329,1,0,0,0,1326,1328,9,0,0,0,1327, + 1326,1,0,0,0,1328,1331,1,0,0,0,1329,1330,1,0,0,0,1329,1327,1,0,0,0,1330, + 1332,1,0,0,0,1331,1329,1,0,0,0,1332,1333,5,42,0,0,1333,1334,5,47,0,0,1334, + 1335,1,0,0,0,1335,1336,6,141,1,0,1336,284,1,0,0,0,1337,1338,5,47,0,0,1338, + 1339,5,47,0,0,1339,1343,1,0,0,0,1340,1342,8,12,0,0,1341,1340,1,0,0,0,1342, + 1345,1,0,0,0,1343,1341,1,0,0,0,1343,1344,1,0,0,0,1344,1346,1,0,0,0,1345, + 1343,1,0,0,0,1346,1347,6,142,1,0,1347,286,1,0,0,0,38,0,723,731,740,753, + 755,769,771,856,863,874,878,882,886,889,893,898,907,912,971,979,984,987, + 1079,1253,1267,1273,1281,1285,1290,1295,1300,1306,1312,1314,1319,1329,1343, + 2,6,0,0,0,1,0]; private static __ATN: ATN; public static get _ATN(): ATN { diff --git a/src/antlr/SolidityListener.ts b/src/antlr/SolidityListener.ts index d777d4f..de2eb39 100644 --- a/src/antlr/SolidityListener.ts +++ b/src/antlr/SolidityListener.ts @@ -1,109 +1,109 @@ -// Generated from antlr/Solidity.g4 by ANTLR 4.13.1 +// Generated from antlr/Solidity.g4 by ANTLR 4.13.2 import {ParseTreeListener} from "antlr4"; -import { SourceUnitContext } from "./SolidityParser"; -import { PragmaDirectiveContext } from "./SolidityParser"; -import { PragmaNameContext } from "./SolidityParser"; -import { PragmaValueContext } from "./SolidityParser"; -import { VersionContext } from "./SolidityParser"; -import { VersionOperatorContext } from "./SolidityParser"; -import { VersionConstraintContext } from "./SolidityParser"; -import { ImportDeclarationContext } from "./SolidityParser"; -import { ImportDirectiveContext } from "./SolidityParser"; -import { ImportPathContext } from "./SolidityParser"; -import { ContractDefinitionContext } from "./SolidityParser"; -import { InheritanceSpecifierContext } from "./SolidityParser"; -import { ContractPartContext } from "./SolidityParser"; -import { StateVariableDeclarationContext } from "./SolidityParser"; -import { FileLevelConstantContext } from "./SolidityParser"; -import { CustomErrorDefinitionContext } from "./SolidityParser"; -import { TypeDefinitionContext } from "./SolidityParser"; -import { UsingForDeclarationContext } from "./SolidityParser"; -import { UsingForObjectContext } from "./SolidityParser"; -import { UsingForObjectDirectiveContext } from "./SolidityParser"; -import { UserDefinableOperatorsContext } from "./SolidityParser"; -import { StructDefinitionContext } from "./SolidityParser"; -import { ModifierDefinitionContext } from "./SolidityParser"; -import { ModifierInvocationContext } from "./SolidityParser"; -import { FunctionDefinitionContext } from "./SolidityParser"; -import { FunctionDescriptorContext } from "./SolidityParser"; -import { ReturnParametersContext } from "./SolidityParser"; -import { ModifierListContext } from "./SolidityParser"; -import { EventDefinitionContext } from "./SolidityParser"; -import { EnumValueContext } from "./SolidityParser"; -import { EnumDefinitionContext } from "./SolidityParser"; -import { ParameterListContext } from "./SolidityParser"; -import { ParameterContext } from "./SolidityParser"; -import { EventParameterListContext } from "./SolidityParser"; -import { EventParameterContext } from "./SolidityParser"; -import { FunctionTypeParameterListContext } from "./SolidityParser"; -import { FunctionTypeParameterContext } from "./SolidityParser"; -import { VariableDeclarationContext } from "./SolidityParser"; -import { TypeNameContext } from "./SolidityParser"; -import { UserDefinedTypeNameContext } from "./SolidityParser"; -import { MappingKeyContext } from "./SolidityParser"; -import { MappingContext } from "./SolidityParser"; -import { MappingKeyNameContext } from "./SolidityParser"; -import { MappingValueNameContext } from "./SolidityParser"; -import { FunctionTypeNameContext } from "./SolidityParser"; -import { StorageLocationContext } from "./SolidityParser"; -import { StateMutabilityContext } from "./SolidityParser"; -import { BlockContext } from "./SolidityParser"; -import { StatementContext } from "./SolidityParser"; -import { ExpressionStatementContext } from "./SolidityParser"; -import { IfStatementContext } from "./SolidityParser"; -import { TryStatementContext } from "./SolidityParser"; -import { CatchClauseContext } from "./SolidityParser"; -import { WhileStatementContext } from "./SolidityParser"; -import { SimpleStatementContext } from "./SolidityParser"; -import { UncheckedStatementContext } from "./SolidityParser"; -import { ForStatementContext } from "./SolidityParser"; -import { InlineAssemblyStatementContext } from "./SolidityParser"; -import { InlineAssemblyStatementFlagContext } from "./SolidityParser"; -import { DoWhileStatementContext } from "./SolidityParser"; -import { ContinueStatementContext } from "./SolidityParser"; -import { BreakStatementContext } from "./SolidityParser"; -import { ReturnStatementContext } from "./SolidityParser"; -import { ThrowStatementContext } from "./SolidityParser"; -import { EmitStatementContext } from "./SolidityParser"; -import { RevertStatementContext } from "./SolidityParser"; -import { VariableDeclarationStatementContext } from "./SolidityParser"; -import { VariableDeclarationListContext } from "./SolidityParser"; -import { IdentifierListContext } from "./SolidityParser"; -import { ElementaryTypeNameContext } from "./SolidityParser"; -import { ExpressionContext } from "./SolidityParser"; -import { PrimaryExpressionContext } from "./SolidityParser"; -import { ExpressionListContext } from "./SolidityParser"; -import { NameValueListContext } from "./SolidityParser"; -import { NameValueContext } from "./SolidityParser"; -import { FunctionCallArgumentsContext } from "./SolidityParser"; -import { FunctionCallContext } from "./SolidityParser"; -import { AssemblyBlockContext } from "./SolidityParser"; -import { AssemblyItemContext } from "./SolidityParser"; -import { AssemblyExpressionContext } from "./SolidityParser"; -import { AssemblyMemberContext } from "./SolidityParser"; -import { AssemblyCallContext } from "./SolidityParser"; -import { AssemblyLocalDefinitionContext } from "./SolidityParser"; -import { AssemblyAssignmentContext } from "./SolidityParser"; -import { AssemblyIdentifierOrListContext } from "./SolidityParser"; -import { AssemblyIdentifierListContext } from "./SolidityParser"; -import { AssemblyStackAssignmentContext } from "./SolidityParser"; -import { LabelDefinitionContext } from "./SolidityParser"; -import { AssemblySwitchContext } from "./SolidityParser"; -import { AssemblyCaseContext } from "./SolidityParser"; -import { AssemblyFunctionDefinitionContext } from "./SolidityParser"; -import { AssemblyFunctionReturnsContext } from "./SolidityParser"; -import { AssemblyForContext } from "./SolidityParser"; -import { AssemblyIfContext } from "./SolidityParser"; -import { AssemblyLiteralContext } from "./SolidityParser"; -import { TupleExpressionContext } from "./SolidityParser"; -import { NumberLiteralContext } from "./SolidityParser"; -import { IdentifierContext } from "./SolidityParser"; -import { HexLiteralContext } from "./SolidityParser"; -import { OverrideSpecifierContext } from "./SolidityParser"; -import { StringLiteralContext } from "./SolidityParser"; +import { SourceUnitContext } from "./SolidityParser.js"; +import { PragmaDirectiveContext } from "./SolidityParser.js"; +import { PragmaNameContext } from "./SolidityParser.js"; +import { PragmaValueContext } from "./SolidityParser.js"; +import { VersionContext } from "./SolidityParser.js"; +import { VersionOperatorContext } from "./SolidityParser.js"; +import { VersionConstraintContext } from "./SolidityParser.js"; +import { ImportDeclarationContext } from "./SolidityParser.js"; +import { ImportDirectiveContext } from "./SolidityParser.js"; +import { ImportPathContext } from "./SolidityParser.js"; +import { ContractDefinitionContext } from "./SolidityParser.js"; +import { InheritanceSpecifierContext } from "./SolidityParser.js"; +import { ContractPartContext } from "./SolidityParser.js"; +import { StateVariableDeclarationContext } from "./SolidityParser.js"; +import { FileLevelConstantContext } from "./SolidityParser.js"; +import { CustomErrorDefinitionContext } from "./SolidityParser.js"; +import { TypeDefinitionContext } from "./SolidityParser.js"; +import { UsingForDeclarationContext } from "./SolidityParser.js"; +import { UsingForObjectContext } from "./SolidityParser.js"; +import { UsingForObjectDirectiveContext } from "./SolidityParser.js"; +import { UserDefinableOperatorsContext } from "./SolidityParser.js"; +import { StructDefinitionContext } from "./SolidityParser.js"; +import { ModifierDefinitionContext } from "./SolidityParser.js"; +import { ModifierInvocationContext } from "./SolidityParser.js"; +import { FunctionDefinitionContext } from "./SolidityParser.js"; +import { FunctionDescriptorContext } from "./SolidityParser.js"; +import { ReturnParametersContext } from "./SolidityParser.js"; +import { ModifierListContext } from "./SolidityParser.js"; +import { EventDefinitionContext } from "./SolidityParser.js"; +import { EnumValueContext } from "./SolidityParser.js"; +import { EnumDefinitionContext } from "./SolidityParser.js"; +import { ParameterListContext } from "./SolidityParser.js"; +import { ParameterContext } from "./SolidityParser.js"; +import { EventParameterListContext } from "./SolidityParser.js"; +import { EventParameterContext } from "./SolidityParser.js"; +import { FunctionTypeParameterListContext } from "./SolidityParser.js"; +import { FunctionTypeParameterContext } from "./SolidityParser.js"; +import { VariableDeclarationContext } from "./SolidityParser.js"; +import { TypeNameContext } from "./SolidityParser.js"; +import { UserDefinedTypeNameContext } from "./SolidityParser.js"; +import { MappingKeyContext } from "./SolidityParser.js"; +import { MappingContext } from "./SolidityParser.js"; +import { MappingKeyNameContext } from "./SolidityParser.js"; +import { MappingValueNameContext } from "./SolidityParser.js"; +import { FunctionTypeNameContext } from "./SolidityParser.js"; +import { StorageLocationContext } from "./SolidityParser.js"; +import { StateMutabilityContext } from "./SolidityParser.js"; +import { BlockContext } from "./SolidityParser.js"; +import { StatementContext } from "./SolidityParser.js"; +import { ExpressionStatementContext } from "./SolidityParser.js"; +import { IfStatementContext } from "./SolidityParser.js"; +import { TryStatementContext } from "./SolidityParser.js"; +import { CatchClauseContext } from "./SolidityParser.js"; +import { WhileStatementContext } from "./SolidityParser.js"; +import { SimpleStatementContext } from "./SolidityParser.js"; +import { UncheckedStatementContext } from "./SolidityParser.js"; +import { ForStatementContext } from "./SolidityParser.js"; +import { InlineAssemblyStatementContext } from "./SolidityParser.js"; +import { InlineAssemblyStatementFlagContext } from "./SolidityParser.js"; +import { DoWhileStatementContext } from "./SolidityParser.js"; +import { ContinueStatementContext } from "./SolidityParser.js"; +import { BreakStatementContext } from "./SolidityParser.js"; +import { ReturnStatementContext } from "./SolidityParser.js"; +import { ThrowStatementContext } from "./SolidityParser.js"; +import { EmitStatementContext } from "./SolidityParser.js"; +import { RevertStatementContext } from "./SolidityParser.js"; +import { VariableDeclarationStatementContext } from "./SolidityParser.js"; +import { VariableDeclarationListContext } from "./SolidityParser.js"; +import { IdentifierListContext } from "./SolidityParser.js"; +import { ElementaryTypeNameContext } from "./SolidityParser.js"; +import { ExpressionContext } from "./SolidityParser.js"; +import { PrimaryExpressionContext } from "./SolidityParser.js"; +import { ExpressionListContext } from "./SolidityParser.js"; +import { NameValueListContext } from "./SolidityParser.js"; +import { NameValueContext } from "./SolidityParser.js"; +import { FunctionCallArgumentsContext } from "./SolidityParser.js"; +import { FunctionCallContext } from "./SolidityParser.js"; +import { AssemblyBlockContext } from "./SolidityParser.js"; +import { AssemblyItemContext } from "./SolidityParser.js"; +import { AssemblyExpressionContext } from "./SolidityParser.js"; +import { AssemblyMemberContext } from "./SolidityParser.js"; +import { AssemblyCallContext } from "./SolidityParser.js"; +import { AssemblyLocalDefinitionContext } from "./SolidityParser.js"; +import { AssemblyAssignmentContext } from "./SolidityParser.js"; +import { AssemblyIdentifierOrListContext } from "./SolidityParser.js"; +import { AssemblyIdentifierListContext } from "./SolidityParser.js"; +import { AssemblyStackAssignmentContext } from "./SolidityParser.js"; +import { LabelDefinitionContext } from "./SolidityParser.js"; +import { AssemblySwitchContext } from "./SolidityParser.js"; +import { AssemblyCaseContext } from "./SolidityParser.js"; +import { AssemblyFunctionDefinitionContext } from "./SolidityParser.js"; +import { AssemblyFunctionReturnsContext } from "./SolidityParser.js"; +import { AssemblyForContext } from "./SolidityParser.js"; +import { AssemblyIfContext } from "./SolidityParser.js"; +import { AssemblyLiteralContext } from "./SolidityParser.js"; +import { TupleExpressionContext } from "./SolidityParser.js"; +import { NumberLiteralContext } from "./SolidityParser.js"; +import { IdentifierContext } from "./SolidityParser.js"; +import { HexLiteralContext } from "./SolidityParser.js"; +import { OverrideSpecifierContext } from "./SolidityParser.js"; +import { StringLiteralContext } from "./SolidityParser.js"; /** diff --git a/src/antlr/SolidityParser.ts b/src/antlr/SolidityParser.ts index 594ae1c..c6fadba 100644 --- a/src/antlr/SolidityParser.ts +++ b/src/antlr/SolidityParser.ts @@ -1,4 +1,4 @@ -// Generated from antlr/Solidity.g4 by ANTLR 4.13.1 +// Generated from antlr/Solidity.g4 by ANTLR 4.13.2 // noinspection ES6UnusedImports,JSUnusedGlobalSymbols,JSUnusedLocalSymbols import { @@ -129,30 +129,31 @@ export default class SolidityParser extends Parser { public static readonly AnonymousKeyword = 108; public static readonly BreakKeyword = 109; public static readonly ConstantKeyword = 110; - public static readonly ImmutableKeyword = 111; - public static readonly ContinueKeyword = 112; - public static readonly LeaveKeyword = 113; - public static readonly ExternalKeyword = 114; - public static readonly IndexedKeyword = 115; - public static readonly InternalKeyword = 116; - public static readonly PayableKeyword = 117; - public static readonly PrivateKeyword = 118; - public static readonly PublicKeyword = 119; - public static readonly VirtualKeyword = 120; - public static readonly PureKeyword = 121; - public static readonly TypeKeyword = 122; - public static readonly ViewKeyword = 123; - public static readonly GlobalKeyword = 124; - public static readonly ConstructorKeyword = 125; - public static readonly FallbackKeyword = 126; - public static readonly ReceiveKeyword = 127; - public static readonly Identifier = 128; - public static readonly StringLiteralFragment = 129; - public static readonly VersionLiteral = 130; - public static readonly WS = 131; - public static readonly COMMENT = 132; - public static readonly LINE_COMMENT = 133; - public static readonly EOF = Token.EOF; + public static readonly TransientKeyword = 111; + public static readonly ImmutableKeyword = 112; + public static readonly ContinueKeyword = 113; + public static readonly LeaveKeyword = 114; + public static readonly ExternalKeyword = 115; + public static readonly IndexedKeyword = 116; + public static readonly InternalKeyword = 117; + public static readonly PayableKeyword = 118; + public static readonly PrivateKeyword = 119; + public static readonly PublicKeyword = 120; + public static readonly VirtualKeyword = 121; + public static readonly PureKeyword = 122; + public static readonly TypeKeyword = 123; + public static readonly ViewKeyword = 124; + public static readonly GlobalKeyword = 125; + public static readonly ConstructorKeyword = 126; + public static readonly FallbackKeyword = 127; + public static readonly ReceiveKeyword = 128; + public static readonly Identifier = 129; + public static readonly StringLiteralFragment = 130; + public static readonly VersionLiteral = 131; + public static readonly WS = 132; + public static readonly COMMENT = 133; + public static readonly LINE_COMMENT = 134; + public static override readonly EOF = Token.EOF; public static readonly RULE_sourceUnit = 0; public static readonly RULE_pragmaDirective = 1; public static readonly RULE_pragmaName = 2; @@ -317,6 +318,7 @@ export default class SolidityParser extends Parser { null, null, null, "'anonymous'", "'break'", "'constant'", + "'transient'", "'immutable'", "'continue'", "'leave'", "'external'", @@ -391,6 +393,7 @@ export default class SolidityParser extends Parser { "AnonymousKeyword", "BreakKeyword", "ConstantKeyword", + "TransientKeyword", "ImmutableKeyword", "ContinueKeyword", "LeaveKeyword", @@ -466,7 +469,7 @@ export default class SolidityParser extends Parser { this.state = 215; this._errHandler.sync(this); _la = this._input.LA(1); - while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 104620034) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 2080392501) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 3896770685) !== 0) || _la===127 || _la===128) { + while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 104620034) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 2080392501) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 3498573949) !== 0) || ((((_la - 127)) & ~0x1F) === 0 && ((1 << (_la - 127)) & 7) !== 0)) { { this.state = 213; this._errHandler.sync(this); @@ -675,7 +678,7 @@ export default class SolidityParser extends Parser { this.state = 239; this._errHandler.sync(this); _la = this._input.LA(1); - while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 4080) !== 0) || _la===103 || _la===130) { + while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 4080) !== 0) || _la===103 || _la===131) { { { this.state = 234; @@ -894,12 +897,12 @@ export default class SolidityParser extends Parser { case 50: case 62: case 95: - case 113: - case 117: - case 124: + case 114: + case 118: case 125: - case 127: + case 126: case 128: + case 129: { this.state = 269; this.identifier(); @@ -1066,7 +1069,7 @@ export default class SolidityParser extends Parser { this.state = 319; this._errHandler.sync(this); _la = this._input.LA(1); - while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 100679680) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 2080392503) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 3896770685) !== 0) || _la===127 || _la===128) { + while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 100679680) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 2080392503) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 3498573949) !== 0) || ((((_la - 127)) & ~0x1F) === 0 && ((1 << (_la - 127)) & 7) !== 0)) { { { this.state = 316; @@ -1115,7 +1118,7 @@ export default class SolidityParser extends Parser { this.state = 327; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3263184960) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 4278194513) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & 4244635651) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 124273675) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3263184960) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 4278194513) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & 4244635651) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 248547339) !== 0)) { { this.state = 326; this.expressionList(); @@ -1240,27 +1243,27 @@ export default class SolidityParser extends Parser { { this.state = 343; this.typeName(0); - this.state = 352; + this.state = 353; this._errHandler.sync(this); _la = this._input.LA(1); - while (((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 13680641) !== 0)) { + while (((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 27377665) !== 0)) { { - this.state = 350; + this.state = 351; this._errHandler.sync(this); switch (this._input.LA(1)) { - case 119: + case 120: { this.state = 344; this.match(SolidityParser.PublicKeyword); } break; - case 116: + case 117: { this.state = 345; this.match(SolidityParser.InternalKeyword); } break; - case 118: + case 119: { this.state = 346; this.match(SolidityParser.PrivateKeyword); @@ -1275,12 +1278,18 @@ export default class SolidityParser extends Parser { case 111: { this.state = 348; + this.match(SolidityParser.TransientKeyword); + } + break; + case 112: + { + this.state = 349; this.match(SolidityParser.ImmutableKeyword); } break; case 96: { - this.state = 349; + this.state = 350; this.overrideSpecifier(); } break; @@ -1288,25 +1297,25 @@ export default class SolidityParser extends Parser { throw new NoViableAltException(this); } } - this.state = 354; + this.state = 355; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 355; + this.state = 356; this.identifier(); - this.state = 358; + this.state = 359; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===11) { { - this.state = 356; - this.match(SolidityParser.T__10); this.state = 357; + this.match(SolidityParser.T__10); + this.state = 358; this.expression(0); } } - this.state = 360; + this.state = 361; this.match(SolidityParser.T__1); } } @@ -1331,17 +1340,17 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 362; - this.typeName(0); this.state = 363; - this.match(SolidityParser.ConstantKeyword); + this.typeName(0); this.state = 364; - this.identifier(); + this.match(SolidityParser.ConstantKeyword); this.state = 365; - this.match(SolidityParser.T__10); + this.identifier(); this.state = 366; - this.expression(0); + this.match(SolidityParser.T__10); this.state = 367; + this.expression(0); + this.state = 368; this.match(SolidityParser.T__1); } } @@ -1366,13 +1375,13 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 369; - this.match(SolidityParser.T__24); this.state = 370; - this.identifier(); + this.match(SolidityParser.T__24); this.state = 371; - this.parameterList(); + this.identifier(); this.state = 372; + this.parameterList(); + this.state = 373; this.match(SolidityParser.T__1); } } @@ -1397,15 +1406,15 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 374; - this.match(SolidityParser.TypeKeyword); this.state = 375; - this.identifier(); + this.match(SolidityParser.TypeKeyword); this.state = 376; - this.match(SolidityParser.T__21); + this.identifier(); this.state = 377; - this.elementaryTypeName(); + this.match(SolidityParser.T__21); this.state = 378; + this.elementaryTypeName(); + this.state = 379; this.match(SolidityParser.T__1); } } @@ -1431,18 +1440,18 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 380; - this.match(SolidityParser.T__25); this.state = 381; - this.usingForObject(); + this.match(SolidityParser.T__25); this.state = 382; + this.usingForObject(); + this.state = 383; this.match(SolidityParser.T__26); - this.state = 385; + this.state = 386; this._errHandler.sync(this); switch (this._input.LA(1)) { case 3: { - this.state = 383; + this.state = 384; this.match(SolidityParser.T__2); } break; @@ -1463,31 +1472,31 @@ export default class SolidityParser extends Parser { case 99: case 100: case 101: - case 113: - case 117: - case 124: + case 114: + case 118: case 125: - case 127: + case 126: case 128: + case 129: { - this.state = 384; + this.state = 385; this.typeName(0); } break; default: throw new NoViableAltException(this); } - this.state = 388; + this.state = 389; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===124) { + if (_la===125) { { - this.state = 387; + this.state = 388; this.match(SolidityParser.GlobalKeyword); } } - this.state = 390; + this.state = 391; this.match(SolidityParser.T__1); } } @@ -1511,7 +1520,7 @@ export default class SolidityParser extends Parser { this.enterRule(localctx, 36, SolidityParser.RULE_usingForObject); let _la: number; try { - this.state = 404; + this.state = 405; this._errHandler.sync(this); switch (this._input.LA(1)) { case 14: @@ -1520,42 +1529,42 @@ export default class SolidityParser extends Parser { case 50: case 62: case 95: - case 113: - case 117: - case 124: + case 114: + case 118: case 125: - case 127: + case 126: case 128: + case 129: this.enterOuterAlt(localctx, 1); { - this.state = 392; + this.state = 393; this.userDefinedTypeName(); } break; case 15: this.enterOuterAlt(localctx, 2); { - this.state = 393; - this.match(SolidityParser.T__14); this.state = 394; + this.match(SolidityParser.T__14); + this.state = 395; this.usingForObjectDirective(); - this.state = 399; + this.state = 400; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===16) { { { - this.state = 395; - this.match(SolidityParser.T__15); this.state = 396; + this.match(SolidityParser.T__15); + this.state = 397; this.usingForObjectDirective(); } } - this.state = 401; + this.state = 402; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 402; + this.state = 403; this.match(SolidityParser.T__16); } break; @@ -1585,16 +1594,16 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 406; + this.state = 407; this.userDefinedTypeName(); - this.state = 409; + this.state = 410; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===12) { { - this.state = 407; - this.match(SolidityParser.T__11); this.state = 408; + this.match(SolidityParser.T__11); + this.state = 409; this.userDefinableOperators(); } } @@ -1623,7 +1632,7 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 411; + this.state = 412; _la = this._input.LA(1); if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 4026533864) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 15) !== 0))) { this._errHandler.recoverInline(this); @@ -1656,41 +1665,41 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 413; - this.match(SolidityParser.T__35); this.state = 414; - this.identifier(); + this.match(SolidityParser.T__35); this.state = 415; + this.identifier(); + this.state = 416; this.match(SolidityParser.T__14); - this.state = 426; + this.state = 427; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===14 || _la===25 || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 520098113) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069309) !== 0) || _la===127 || _la===128) { + if (_la===14 || _la===25 || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 520098113) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 3230138493) !== 0) || _la===128 || _la===129) { { - this.state = 416; - this.variableDeclaration(); this.state = 417; + this.variableDeclaration(); + this.state = 418; this.match(SolidityParser.T__1); - this.state = 423; + this.state = 424; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la===14 || _la===25 || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 520098113) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069309) !== 0) || _la===127 || _la===128) { + while (_la===14 || _la===25 || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 520098113) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 3230138493) !== 0) || _la===128 || _la===129) { { { - this.state = 418; - this.variableDeclaration(); this.state = 419; + this.variableDeclaration(); + this.state = 420; this.match(SolidityParser.T__1); } } - this.state = 425; + this.state = 426; this._errHandler.sync(this); _la = this._input.LA(1); } } } - this.state = 428; + this.state = 429; this.match(SolidityParser.T__16); } } @@ -1716,37 +1725,37 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 430; - this.match(SolidityParser.T__36); this.state = 431; + this.match(SolidityParser.T__36); + this.state = 432; this.identifier(); - this.state = 433; + this.state = 434; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===23) { { - this.state = 432; + this.state = 433; this.parameterList(); } } - this.state = 439; + this.state = 440; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la===96 || _la===120) { + while (_la===96 || _la===121) { { - this.state = 437; + this.state = 438; this._errHandler.sync(this); switch (this._input.LA(1)) { - case 120: + case 121: { - this.state = 435; + this.state = 436; this.match(SolidityParser.VirtualKeyword); } break; case 96: { - this.state = 436; + this.state = 437; this.overrideSpecifier(); } break; @@ -1754,22 +1763,22 @@ export default class SolidityParser extends Parser { throw new NoViableAltException(this); } } - this.state = 441; + this.state = 442; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 444; + this.state = 445; this._errHandler.sync(this); switch (this._input.LA(1)) { case 2: { - this.state = 442; + this.state = 443; this.match(SolidityParser.T__1); } break; case 15: { - this.state = 443; + this.state = 444; this.block(); } break; @@ -1800,26 +1809,26 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 446; + this.state = 447; this.identifier(); - this.state = 452; + this.state = 453; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===23) { { - this.state = 447; + this.state = 448; this.match(SolidityParser.T__22); - this.state = 449; + this.state = 450; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3263184960) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 4278194513) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & 4244635651) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 124273675) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3263184960) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 4278194513) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & 4244635651) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 248547339) !== 0)) { { - this.state = 448; + this.state = 449; this.expressionList(); } } - this.state = 451; + this.state = 452; this.match(SolidityParser.T__23); } } @@ -1848,34 +1857,34 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 454; - this.functionDescriptor(); this.state = 455; - this.parameterList(); + this.functionDescriptor(); this.state = 456; + this.parameterList(); + this.state = 457; this.modifierList(); - this.state = 458; + this.state = 459; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===39) { { - this.state = 457; + this.state = 458; this.returnParameters(); } } - this.state = 462; + this.state = 463; this._errHandler.sync(this); switch (this._input.LA(1)) { case 2: { - this.state = 460; + this.state = 461; this.match(SolidityParser.T__1); } break; case 15: { - this.state = 461; + this.state = 462; this.block(); } break; @@ -1904,44 +1913,44 @@ export default class SolidityParser extends Parser { this.enterRule(localctx, 50, SolidityParser.RULE_functionDescriptor); let _la: number; try { - this.state = 471; + this.state = 472; this._errHandler.sync(this); switch (this._input.LA(1)) { case 38: this.enterOuterAlt(localctx, 1); { - this.state = 464; + this.state = 465; this.match(SolidityParser.T__37); - this.state = 466; + this.state = 467; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069185) !== 0) || _la===127 || _la===128) { + if (_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 3230138369) !== 0) || _la===128 || _la===129) { { - this.state = 465; + this.state = 466; this.identifier(); } } } break; - case 125: + case 126: this.enterOuterAlt(localctx, 2); { - this.state = 468; + this.state = 469; this.match(SolidityParser.ConstructorKeyword); } break; - case 126: + case 127: this.enterOuterAlt(localctx, 3); { - this.state = 469; + this.state = 470; this.match(SolidityParser.FallbackKeyword); } break; - case 127: + case 128: this.enterOuterAlt(localctx, 4); { - this.state = 470; + this.state = 471; this.match(SolidityParser.ReceiveKeyword); } break; @@ -1970,9 +1979,9 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 473; - this.match(SolidityParser.T__38); this.state = 474; + this.match(SolidityParser.T__38); + this.state = 475; this.parameterList(); } } @@ -1998,65 +2007,65 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 486; + this.state = 487; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 2011987971) !== 0) || _la===127 || _la===128) { + while (_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 4023943171) !== 0) || _la===128 || _la===129) { { - this.state = 484; + this.state = 485; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 41, this._ctx) ) { case 1: { - this.state = 476; + this.state = 477; this.match(SolidityParser.ExternalKeyword); } break; case 2: { - this.state = 477; + this.state = 478; this.match(SolidityParser.PublicKeyword); } break; case 3: { - this.state = 478; + this.state = 479; this.match(SolidityParser.InternalKeyword); } break; case 4: { - this.state = 479; + this.state = 480; this.match(SolidityParser.PrivateKeyword); } break; case 5: { - this.state = 480; + this.state = 481; this.match(SolidityParser.VirtualKeyword); } break; case 6: { - this.state = 481; + this.state = 482; this.stateMutability(); } break; case 7: { - this.state = 482; + this.state = 483; this.modifierInvocation(); } break; case 8: { - this.state = 483; + this.state = 484; this.overrideSpecifier(); } break; } } - this.state = 488; + this.state = 489; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -2084,23 +2093,23 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 489; - this.match(SolidityParser.T__39); this.state = 490; - this.identifier(); + this.match(SolidityParser.T__39); this.state = 491; + this.identifier(); + this.state = 492; this.eventParameterList(); - this.state = 493; + this.state = 494; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===108) { { - this.state = 492; + this.state = 493; this.match(SolidityParser.AnonymousKeyword); } } - this.state = 495; + this.state = 496; this.match(SolidityParser.T__1); } } @@ -2125,7 +2134,7 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 497; + this.state = 498; this.identifier(); } } @@ -2151,39 +2160,39 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 499; - this.match(SolidityParser.T__40); this.state = 500; - this.identifier(); + this.match(SolidityParser.T__40); this.state = 501; + this.identifier(); + this.state = 502; this.match(SolidityParser.T__14); - this.state = 503; + this.state = 504; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069185) !== 0) || _la===127 || _la===128) { + if (_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 3230138369) !== 0) || _la===128 || _la===129) { { - this.state = 502; + this.state = 503; this.enumValue(); } } - this.state = 509; + this.state = 510; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===16) { { { - this.state = 505; - this.match(SolidityParser.T__15); this.state = 506; + this.match(SolidityParser.T__15); + this.state = 507; this.enumValue(); } } - this.state = 511; + this.state = 512; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 512; + this.state = 513; this.match(SolidityParser.T__16); } } @@ -2209,35 +2218,35 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 514; + this.state = 515; this.match(SolidityParser.T__22); - this.state = 523; + this.state = 524; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===14 || _la===25 || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 520098113) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069309) !== 0) || _la===127 || _la===128) { + if (_la===14 || _la===25 || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 520098113) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 3230138493) !== 0) || _la===128 || _la===129) { { - this.state = 515; + this.state = 516; this.parameter(); - this.state = 520; + this.state = 521; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===16) { { { - this.state = 516; - this.match(SolidityParser.T__15); this.state = 517; + this.match(SolidityParser.T__15); + this.state = 518; this.parameter(); } } - this.state = 522; + this.state = 523; this._errHandler.sync(this); _la = this._input.LA(1); } } } - this.state = 525; + this.state = 526; this.match(SolidityParser.T__23); } } @@ -2263,24 +2272,24 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 527; + this.state = 528; this.typeName(0); - this.state = 529; + this.state = 530; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 48, this._ctx) ) { case 1: { - this.state = 528; + this.state = 529; this.storageLocation(); } break; } - this.state = 532; + this.state = 533; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069185) !== 0) || _la===127 || _la===128) { + if (_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 3230138369) !== 0) || _la===128 || _la===129) { { - this.state = 531; + this.state = 532; this.identifier(); } } @@ -2309,35 +2318,35 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 534; + this.state = 535; this.match(SolidityParser.T__22); - this.state = 543; + this.state = 544; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===14 || _la===25 || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 520098113) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069309) !== 0) || _la===127 || _la===128) { + if (_la===14 || _la===25 || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 520098113) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 3230138493) !== 0) || _la===128 || _la===129) { { - this.state = 535; + this.state = 536; this.eventParameter(); - this.state = 540; + this.state = 541; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===16) { { { - this.state = 536; - this.match(SolidityParser.T__15); this.state = 537; + this.match(SolidityParser.T__15); + this.state = 538; this.eventParameter(); } } - this.state = 542; + this.state = 543; this._errHandler.sync(this); _la = this._input.LA(1); } } } - this.state = 545; + this.state = 546; this.match(SolidityParser.T__23); } } @@ -2363,24 +2372,24 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 547; + this.state = 548; this.typeName(0); - this.state = 549; + this.state = 550; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===115) { + if (_la===116) { { - this.state = 548; + this.state = 549; this.match(SolidityParser.IndexedKeyword); } } - this.state = 552; + this.state = 553; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069185) !== 0) || _la===127 || _la===128) { + if (_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 3230138369) !== 0) || _la===128 || _la===129) { { - this.state = 551; + this.state = 552; this.identifier(); } } @@ -2409,35 +2418,35 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 554; + this.state = 555; this.match(SolidityParser.T__22); - this.state = 563; + this.state = 564; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===14 || _la===25 || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 520098113) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069309) !== 0) || _la===127 || _la===128) { + if (_la===14 || _la===25 || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 520098113) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 3230138493) !== 0) || _la===128 || _la===129) { { - this.state = 555; + this.state = 556; this.functionTypeParameter(); - this.state = 560; + this.state = 561; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===16) { { { - this.state = 556; - this.match(SolidityParser.T__15); this.state = 557; + this.match(SolidityParser.T__15); + this.state = 558; this.functionTypeParameter(); } } - this.state = 562; + this.state = 563; this._errHandler.sync(this); _la = this._input.LA(1); } } } - this.state = 565; + this.state = 566; this.match(SolidityParser.T__23); } } @@ -2463,14 +2472,14 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 567; + this.state = 568; this.typeName(0); - this.state = 569; + this.state = 570; this._errHandler.sync(this); _la = this._input.LA(1); if (((((_la - 48)) & ~0x1F) === 0 && ((1 << (_la - 48)) & 7) !== 0)) { { - this.state = 568; + this.state = 569; this.storageLocation(); } } @@ -2498,19 +2507,19 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 571; + this.state = 572; this.typeName(0); - this.state = 573; + this.state = 574; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 57, this._ctx) ) { case 1: { - this.state = 572; + this.state = 573; this.storageLocation(); } break; } - this.state = 575; + this.state = 576; this.identifier(); } } @@ -2548,44 +2557,44 @@ export default class SolidityParser extends Parser { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 584; + this.state = 585; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 58, this._ctx) ) { case 1: { - this.state = 578; + this.state = 579; this.elementaryTypeName(); } break; case 2: { - this.state = 579; + this.state = 580; this.userDefinedTypeName(); } break; case 3: { - this.state = 580; + this.state = 581; this.mapping(); } break; case 4: { - this.state = 581; + this.state = 582; this.functionTypeName(); } break; case 5: { - this.state = 582; - this.match(SolidityParser.T__43); this.state = 583; + this.match(SolidityParser.T__43); + this.state = 584; this.match(SolidityParser.PayableKeyword); } break; } this._ctx.stop = this._input.LT(-1); - this.state = 594; + this.state = 595; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 60, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { @@ -2598,28 +2607,28 @@ export default class SolidityParser extends Parser { { localctx = new TypeNameContext(this, _parentctx, _parentState); this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_typeName); - this.state = 586; + this.state = 587; if (!(this.precpred(this._ctx, 3))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 3)"); } - this.state = 587; + this.state = 588; this.match(SolidityParser.T__41); - this.state = 589; + this.state = 590; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3263184960) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 4278194513) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & 4244635651) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 124273675) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3263184960) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 4278194513) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & 4244635651) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 248547339) !== 0)) { { - this.state = 588; + this.state = 589; this.expression(0); } } - this.state = 591; + this.state = 592; this.match(SolidityParser.T__42); } } } - this.state = 596; + this.state = 597; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 60, this._ctx); } @@ -2647,23 +2656,23 @@ export default class SolidityParser extends Parser { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 597; + this.state = 598; this.identifier(); - this.state = 602; + this.state = 603; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 61, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 598; - this.match(SolidityParser.T__44); this.state = 599; + this.match(SolidityParser.T__44); + this.state = 600; this.identifier(); } } } - this.state = 604; + this.state = 605; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 61, this._ctx); } @@ -2688,20 +2697,20 @@ export default class SolidityParser extends Parser { let localctx: MappingKeyContext = new MappingKeyContext(this, this._ctx, this.state); this.enterRule(localctx, 80, SolidityParser.RULE_mappingKey); try { - this.state = 607; + this.state = 608; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 62, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 605; + this.state = 606; this.elementaryTypeName(); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 606; + this.state = 607; this.userDefinedTypeName(); } break; @@ -2729,37 +2738,37 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 609; - this.match(SolidityParser.T__45); this.state = 610; - this.match(SolidityParser.T__22); + this.match(SolidityParser.T__45); this.state = 611; + this.match(SolidityParser.T__22); + this.state = 612; this.mappingKey(); - this.state = 613; + this.state = 614; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069185) !== 0) || _la===127 || _la===128) { + if (_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 3230138369) !== 0) || _la===128 || _la===129) { { - this.state = 612; + this.state = 613; this.mappingKeyName(); } } - this.state = 615; - this.match(SolidityParser.T__46); this.state = 616; + this.match(SolidityParser.T__46); + this.state = 617; this.typeName(0); - this.state = 618; + this.state = 619; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069185) !== 0) || _la===127 || _la===128) { + if (_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 3230138369) !== 0) || _la===128 || _la===129) { { - this.state = 617; + this.state = 618; this.mappingValueName(); } } - this.state = 620; + this.state = 621; this.match(SolidityParser.T__23); } } @@ -2784,7 +2793,7 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 622; + this.state = 623; this.identifier(); } } @@ -2809,7 +2818,7 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 624; + this.state = 625; this.identifier(); } } @@ -2835,37 +2844,37 @@ export default class SolidityParser extends Parser { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 626; - this.match(SolidityParser.T__37); this.state = 627; + this.match(SolidityParser.T__37); + this.state = 628; this.functionTypeParameterList(); - this.state = 633; + this.state = 634; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 66, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { - this.state = 631; + this.state = 632; this._errHandler.sync(this); switch (this._input.LA(1)) { - case 116: + case 117: { - this.state = 628; + this.state = 629; this.match(SolidityParser.InternalKeyword); } break; - case 114: + case 115: { - this.state = 629; + this.state = 630; this.match(SolidityParser.ExternalKeyword); } break; case 110: - case 117: - case 121: - case 123: + case 118: + case 122: + case 124: { - this.state = 630; + this.state = 631; this.stateMutability(); } break; @@ -2874,18 +2883,18 @@ export default class SolidityParser extends Parser { } } } - this.state = 635; + this.state = 636; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 66, this._ctx); } - this.state = 638; + this.state = 639; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 67, this._ctx) ) { case 1: { - this.state = 636; - this.match(SolidityParser.T__38); this.state = 637; + this.match(SolidityParser.T__38); + this.state = 638; this.functionTypeParameterList(); } break; @@ -2914,7 +2923,7 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 640; + this.state = 641; _la = this._input.LA(1); if(!(((((_la - 48)) & ~0x1F) === 0 && ((1 << (_la - 48)) & 7) !== 0))) { this._errHandler.recoverInline(this); @@ -2947,9 +2956,9 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 642; + this.state = 643; _la = this._input.LA(1); - if(!(((((_la - 110)) & ~0x1F) === 0 && ((1 << (_la - 110)) & 10369) !== 0))) { + if(!(((((_la - 110)) & ~0x1F) === 0 && ((1 << (_la - 110)) & 20737) !== 0))) { this._errHandler.recoverInline(this); } else { @@ -2980,23 +2989,23 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 644; + this.state = 645; this.match(SolidityParser.T__14); - this.state = 648; + this.state = 649; this._errHandler.sync(this); _la = this._input.LA(1); - while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3397435456) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 4294881617) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & 4244635651) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 124274251) !== 0)) { + while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3397435456) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 4294881617) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & 4244635651) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 248548427) !== 0)) { { { - this.state = 645; + this.state = 646; this.statement(); } } - this.state = 650; + this.state = 651; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 651; + this.state = 652; this.match(SolidityParser.T__16); } } @@ -3019,111 +3028,111 @@ export default class SolidityParser extends Parser { let localctx: StatementContext = new StatementContext(this, this._ctx, this.state); this.enterRule(localctx, 96, SolidityParser.RULE_statement); try { - this.state = 668; + this.state = 669; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 69, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 653; + this.state = 654; this.ifStatement(); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 654; + this.state = 655; this.tryStatement(); } break; case 3: this.enterOuterAlt(localctx, 3); { - this.state = 655; + this.state = 656; this.whileStatement(); } break; case 4: this.enterOuterAlt(localctx, 4); { - this.state = 656; + this.state = 657; this.forStatement(); } break; case 5: this.enterOuterAlt(localctx, 5); { - this.state = 657; + this.state = 658; this.block(); } break; case 6: this.enterOuterAlt(localctx, 6); { - this.state = 658; + this.state = 659; this.inlineAssemblyStatement(); } break; case 7: this.enterOuterAlt(localctx, 7); { - this.state = 659; + this.state = 660; this.doWhileStatement(); } break; case 8: this.enterOuterAlt(localctx, 8); { - this.state = 660; + this.state = 661; this.continueStatement(); } break; case 9: this.enterOuterAlt(localctx, 9); { - this.state = 661; + this.state = 662; this.breakStatement(); } break; case 10: this.enterOuterAlt(localctx, 10); { - this.state = 662; + this.state = 663; this.returnStatement(); } break; case 11: this.enterOuterAlt(localctx, 11); { - this.state = 663; + this.state = 664; this.throwStatement(); } break; case 12: this.enterOuterAlt(localctx, 12); { - this.state = 664; + this.state = 665; this.emitStatement(); } break; case 13: this.enterOuterAlt(localctx, 13); { - this.state = 665; + this.state = 666; this.simpleStatement(); } break; case 14: this.enterOuterAlt(localctx, 14); { - this.state = 666; + this.state = 667; this.uncheckedStatement(); } break; case 15: this.enterOuterAlt(localctx, 15); { - this.state = 667; + this.state = 668; this.revertStatement(); } break; @@ -3150,9 +3159,9 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 670; - this.expression(0); this.state = 671; + this.expression(0); + this.state = 672; this.match(SolidityParser.T__1); } } @@ -3177,24 +3186,24 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 673; - this.match(SolidityParser.T__50); this.state = 674; - this.match(SolidityParser.T__22); + this.match(SolidityParser.T__50); this.state = 675; - this.expression(0); + this.match(SolidityParser.T__22); this.state = 676; - this.match(SolidityParser.T__23); + this.expression(0); this.state = 677; + this.match(SolidityParser.T__23); + this.state = 678; this.statement(); - this.state = 680; + this.state = 681; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 70, this._ctx) ) { case 1: { - this.state = 678; - this.match(SolidityParser.T__51); this.state = 679; + this.match(SolidityParser.T__51); + this.state = 680; this.statement(); } break; @@ -3223,33 +3232,33 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 682; - this.match(SolidityParser.T__52); this.state = 683; + this.match(SolidityParser.T__52); + this.state = 684; this.expression(0); - this.state = 685; + this.state = 686; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===39) { { - this.state = 684; + this.state = 685; this.returnParameters(); } } - this.state = 687; + this.state = 688; this.block(); - this.state = 689; + this.state = 690; this._errHandler.sync(this); _la = this._input.LA(1); do { { { - this.state = 688; + this.state = 689; this.catchClause(); } } - this.state = 691; + this.state = 692; this._errHandler.sync(this); _la = this._input.LA(1); } while (_la===54); @@ -3277,29 +3286,29 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 693; + this.state = 694; this.match(SolidityParser.T__53); - this.state = 698; + this.state = 699; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 41959424) !== 0) || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069185) !== 0) || _la===127 || _la===128) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 41959424) !== 0) || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 3230138369) !== 0) || _la===128 || _la===129) { { - this.state = 695; + this.state = 696; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069185) !== 0) || _la===127 || _la===128) { + if (_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 3230138369) !== 0) || _la===128 || _la===129) { { - this.state = 694; + this.state = 695; this.identifier(); } } - this.state = 697; + this.state = 698; this.parameterList(); } } - this.state = 700; + this.state = 701; this.block(); } } @@ -3324,15 +3333,15 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 702; - this.match(SolidityParser.T__54); this.state = 703; - this.match(SolidityParser.T__22); + this.match(SolidityParser.T__54); this.state = 704; - this.expression(0); + this.match(SolidityParser.T__22); this.state = 705; - this.match(SolidityParser.T__23); + this.expression(0); this.state = 706; + this.match(SolidityParser.T__23); + this.state = 707; this.statement(); } } @@ -3357,18 +3366,18 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 710; + this.state = 711; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 75, this._ctx) ) { case 1: { - this.state = 708; + this.state = 709; this.variableDeclarationStatement(); } break; case 2: { - this.state = 709; + this.state = 710; this.expressionStatement(); } break; @@ -3396,9 +3405,9 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 712; - this.match(SolidityParser.T__55); this.state = 713; + this.match(SolidityParser.T__55); + this.state = 714; this.block(); } } @@ -3424,11 +3433,11 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 715; - this.match(SolidityParser.T__26); this.state = 716; + this.match(SolidityParser.T__26); + this.state = 717; this.match(SolidityParser.T__22); - this.state = 719; + this.state = 720; this._errHandler.sync(this); switch (this._input.LA(1)) { case 6: @@ -3462,29 +3471,29 @@ export default class SolidityParser extends Parser { case 103: case 104: case 106: - case 113: - case 117: - case 122: - case 124: + case 114: + case 118: + case 123: case 125: - case 127: + case 126: case 128: case 129: + case 130: { - this.state = 717; + this.state = 718; this.simpleStatement(); } break; case 2: { - this.state = 718; + this.state = 719; this.match(SolidityParser.T__1); } break; default: throw new NoViableAltException(this); } - this.state = 723; + this.state = 724; this._errHandler.sync(this); switch (this._input.LA(1)) { case 6: @@ -3518,41 +3527,41 @@ export default class SolidityParser extends Parser { case 103: case 104: case 106: - case 113: - case 117: - case 122: - case 124: + case 114: + case 118: + case 123: case 125: - case 127: + case 126: case 128: case 129: + case 130: { - this.state = 721; + this.state = 722; this.expressionStatement(); } break; case 2: { - this.state = 722; + this.state = 723; this.match(SolidityParser.T__1); } break; default: throw new NoViableAltException(this); } - this.state = 726; + this.state = 727; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3263184960) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 4278194513) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & 4244635651) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 124273675) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3263184960) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 4278194513) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & 4244635651) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 248547339) !== 0)) { { - this.state = 725; + this.state = 726; this.expression(0); } } - this.state = 728; - this.match(SolidityParser.T__23); this.state = 729; + this.match(SolidityParser.T__23); + this.state = 730; this.statement(); } } @@ -3578,33 +3587,33 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 731; + this.state = 732; this.match(SolidityParser.T__56); - this.state = 733; + this.state = 734; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===129) { + if (_la===130) { { - this.state = 732; + this.state = 733; this.match(SolidityParser.StringLiteralFragment); } } - this.state = 739; + this.state = 740; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===23) { { - this.state = 735; - this.match(SolidityParser.T__22); this.state = 736; - this.inlineAssemblyStatementFlag(); + this.match(SolidityParser.T__22); this.state = 737; + this.inlineAssemblyStatementFlag(); + this.state = 738; this.match(SolidityParser.T__23); } } - this.state = 741; + this.state = 742; this.assemblyBlock(); } } @@ -3629,7 +3638,7 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 743; + this.state = 744; this.stringLiteral(); } } @@ -3654,19 +3663,19 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 745; - this.match(SolidityParser.T__57); this.state = 746; - this.statement(); + this.match(SolidityParser.T__57); this.state = 747; - this.match(SolidityParser.T__54); + this.statement(); this.state = 748; - this.match(SolidityParser.T__22); + this.match(SolidityParser.T__54); this.state = 749; - this.expression(0); + this.match(SolidityParser.T__22); this.state = 750; - this.match(SolidityParser.T__23); + this.expression(0); this.state = 751; + this.match(SolidityParser.T__23); + this.state = 752; this.match(SolidityParser.T__1); } } @@ -3691,9 +3700,9 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 753; - this.match(SolidityParser.ContinueKeyword); this.state = 754; + this.match(SolidityParser.ContinueKeyword); + this.state = 755; this.match(SolidityParser.T__1); } } @@ -3718,9 +3727,9 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 756; - this.match(SolidityParser.BreakKeyword); this.state = 757; + this.match(SolidityParser.BreakKeyword); + this.state = 758; this.match(SolidityParser.T__1); } } @@ -3746,19 +3755,19 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 759; + this.state = 760; this.match(SolidityParser.T__58); - this.state = 761; + this.state = 762; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3263184960) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 4278194513) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & 4244635651) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 124273675) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3263184960) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 4278194513) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & 4244635651) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 248547339) !== 0)) { { - this.state = 760; + this.state = 761; this.expression(0); } } - this.state = 763; + this.state = 764; this.match(SolidityParser.T__1); } } @@ -3783,9 +3792,9 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 765; - this.match(SolidityParser.T__59); this.state = 766; + this.match(SolidityParser.T__59); + this.state = 767; this.match(SolidityParser.T__1); } } @@ -3810,11 +3819,11 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 768; - this.match(SolidityParser.T__60); this.state = 769; - this.functionCall(); + this.match(SolidityParser.T__60); this.state = 770; + this.functionCall(); + this.state = 771; this.match(SolidityParser.T__1); } } @@ -3839,11 +3848,11 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 772; - this.match(SolidityParser.T__61); this.state = 773; - this.functionCall(); + this.match(SolidityParser.T__61); this.state = 774; + this.functionCall(); + this.state = 775; this.match(SolidityParser.T__1); } } @@ -3869,47 +3878,47 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 783; + this.state = 784; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 82, this._ctx) ) { case 1: { - this.state = 776; - this.match(SolidityParser.T__62); this.state = 777; + this.match(SolidityParser.T__62); + this.state = 778; this.identifierList(); } break; case 2: { - this.state = 778; + this.state = 779; this.variableDeclaration(); } break; case 3: { - this.state = 779; - this.match(SolidityParser.T__22); this.state = 780; - this.variableDeclarationList(); + this.match(SolidityParser.T__22); this.state = 781; + this.variableDeclarationList(); + this.state = 782; this.match(SolidityParser.T__23); } break; } - this.state = 787; + this.state = 788; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===11) { { - this.state = 785; - this.match(SolidityParser.T__10); this.state = 786; + this.match(SolidityParser.T__10); + this.state = 787; this.expression(0); } } - this.state = 789; + this.state = 790; this.match(SolidityParser.T__1); } } @@ -3935,37 +3944,37 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 792; + this.state = 793; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===14 || _la===25 || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 520098113) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069309) !== 0) || _la===127 || _la===128) { + if (_la===14 || _la===25 || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 520098113) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 3230138493) !== 0) || _la===128 || _la===129) { { - this.state = 791; + this.state = 792; this.variableDeclaration(); } } - this.state = 800; + this.state = 801; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===16) { { { - this.state = 794; + this.state = 795; this.match(SolidityParser.T__15); - this.state = 796; + this.state = 797; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===14 || _la===25 || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 520098113) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069309) !== 0) || _la===127 || _la===128) { + if (_la===14 || _la===25 || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 520098113) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 3230138493) !== 0) || _la===128 || _la===129) { { - this.state = 795; + this.state = 796; this.variableDeclaration(); } } } } - this.state = 802; + this.state = 803; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -3994,45 +4003,45 @@ export default class SolidityParser extends Parser { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 803; + this.state = 804; this.match(SolidityParser.T__22); - this.state = 810; + this.state = 811; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 88, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 805; + this.state = 806; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069185) !== 0) || _la===127 || _la===128) { + if (_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 3230138369) !== 0) || _la===128 || _la===129) { { - this.state = 804; + this.state = 805; this.identifier(); } } - this.state = 807; + this.state = 808; this.match(SolidityParser.T__15); } } } - this.state = 812; + this.state = 813; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 88, this._ctx); } - this.state = 814; + this.state = 815; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069185) !== 0) || _la===127 || _la===128) { + if (_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 3230138369) !== 0) || _la===128 || _la===129) { { - this.state = 813; + this.state = 814; this.identifier(); } } - this.state = 816; + this.state = 817; this.match(SolidityParser.T__23); } } @@ -4058,7 +4067,7 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 818; + this.state = 819; _la = this._input.LA(1); if(!(((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 7864321) !== 0) || ((((_la - 97)) & ~0x1F) === 0 && ((1 << (_la - 97)) & 31) !== 0))) { this._errHandler.recoverInline(this); @@ -4103,30 +4112,30 @@ export default class SolidityParser extends Parser { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 838; + this.state = 839; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 90, this._ctx) ) { case 1: { - this.state = 821; - this.match(SolidityParser.T__68); this.state = 822; + this.match(SolidityParser.T__68); + this.state = 823; this.typeName(0); } break; case 2: { - this.state = 823; - this.match(SolidityParser.T__22); this.state = 824; - this.expression(0); + this.match(SolidityParser.T__22); this.state = 825; + this.expression(0); + this.state = 826; this.match(SolidityParser.T__23); } break; case 3: { - this.state = 827; + this.state = 828; _la = this._input.LA(1); if(!(_la===67 || _la===68)) { this._errHandler.recoverInline(this); @@ -4135,13 +4144,13 @@ export default class SolidityParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 828; + this.state = 829; this.expression(19); } break; case 4: { - this.state = 829; + this.state = 830; _la = this._input.LA(1); if(!(_la===30 || _la===31)) { this._errHandler.recoverInline(this); @@ -4150,43 +4159,43 @@ export default class SolidityParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 830; + this.state = 831; this.expression(18); } break; case 5: { - this.state = 831; - this.match(SolidityParser.T__70); this.state = 832; + this.match(SolidityParser.T__70); + this.state = 833; this.expression(17); } break; case 6: { - this.state = 833; - this.match(SolidityParser.T__71); this.state = 834; + this.match(SolidityParser.T__71); + this.state = 835; this.expression(16); } break; case 7: { - this.state = 835; - this.match(SolidityParser.T__5); this.state = 836; + this.match(SolidityParser.T__5); + this.state = 837; this.expression(15); } break; case 8: { - this.state = 837; + this.state = 838; this.primaryExpression(); } break; } this._ctx.stop = this._input.LT(-1); - this.state = 914; + this.state = 915; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 94, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { @@ -4196,20 +4205,20 @@ export default class SolidityParser extends Parser { } _prevctx = localctx; { - this.state = 912; + this.state = 913; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 93, this._ctx) ) { case 1: { localctx = new ExpressionContext(this, _parentctx, _parentState); this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_expression); - this.state = 840; + this.state = 841; if (!(this.precpred(this._ctx, 14))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 14)"); } - this.state = 841; - this.match(SolidityParser.T__72); this.state = 842; + this.match(SolidityParser.T__72); + this.state = 843; this.expression(14); } break; @@ -4217,11 +4226,11 @@ export default class SolidityParser extends Parser { { localctx = new ExpressionContext(this, _parentctx, _parentState); this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_expression); - this.state = 843; + this.state = 844; if (!(this.precpred(this._ctx, 13))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 13)"); } - this.state = 844; + this.state = 845; _la = this._input.LA(1); if(!(((((_la - 3)) & ~0x1F) === 0 && ((1 << (_la - 3)) & 1610612737) !== 0))) { this._errHandler.recoverInline(this); @@ -4230,7 +4239,7 @@ export default class SolidityParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 845; + this.state = 846; this.expression(14); } break; @@ -4238,11 +4247,11 @@ export default class SolidityParser extends Parser { { localctx = new ExpressionContext(this, _parentctx, _parentState); this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_expression); - this.state = 846; + this.state = 847; if (!(this.precpred(this._ctx, 12))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 12)"); } - this.state = 847; + this.state = 848; _la = this._input.LA(1); if(!(_la===30 || _la===31)) { this._errHandler.recoverInline(this); @@ -4251,7 +4260,7 @@ export default class SolidityParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 848; + this.state = 849; this.expression(13); } break; @@ -4259,11 +4268,11 @@ export default class SolidityParser extends Parser { { localctx = new ExpressionContext(this, _parentctx, _parentState); this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_expression); - this.state = 849; + this.state = 850; if (!(this.precpred(this._ctx, 11))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 11)"); } - this.state = 850; + this.state = 851; _la = this._input.LA(1); if(!(_la===74 || _la===75)) { this._errHandler.recoverInline(this); @@ -4272,7 +4281,7 @@ export default class SolidityParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 851; + this.state = 852; this.expression(12); } break; @@ -4280,13 +4289,13 @@ export default class SolidityParser extends Parser { { localctx = new ExpressionContext(this, _parentctx, _parentState); this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_expression); - this.state = 852; + this.state = 853; if (!(this.precpred(this._ctx, 10))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 10)"); } - this.state = 853; - this.match(SolidityParser.T__28); this.state = 854; + this.match(SolidityParser.T__28); + this.state = 855; this.expression(11); } break; @@ -4294,13 +4303,13 @@ export default class SolidityParser extends Parser { { localctx = new ExpressionContext(this, _parentctx, _parentState); this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_expression); - this.state = 855; + this.state = 856; if (!(this.precpred(this._ctx, 9))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 9)"); } - this.state = 856; - this.match(SolidityParser.T__4); this.state = 857; + this.match(SolidityParser.T__4); + this.state = 858; this.expression(10); } break; @@ -4308,13 +4317,13 @@ export default class SolidityParser extends Parser { { localctx = new ExpressionContext(this, _parentctx, _parentState); this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_expression); - this.state = 858; + this.state = 859; if (!(this.precpred(this._ctx, 8))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 8)"); } - this.state = 859; - this.match(SolidityParser.T__27); this.state = 860; + this.match(SolidityParser.T__27); + this.state = 861; this.expression(9); } break; @@ -4322,11 +4331,11 @@ export default class SolidityParser extends Parser { { localctx = new ExpressionContext(this, _parentctx, _parentState); this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_expression); - this.state = 861; + this.state = 862; if (!(this.precpred(this._ctx, 7))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 7)"); } - this.state = 862; + this.state = 863; _la = this._input.LA(1); if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 1920) !== 0))) { this._errHandler.recoverInline(this); @@ -4335,7 +4344,7 @@ export default class SolidityParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 863; + this.state = 864; this.expression(8); } break; @@ -4343,11 +4352,11 @@ export default class SolidityParser extends Parser { { localctx = new ExpressionContext(this, _parentctx, _parentState); this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_expression); - this.state = 864; + this.state = 865; if (!(this.precpred(this._ctx, 6))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 6)"); } - this.state = 865; + this.state = 866; _la = this._input.LA(1); if(!(_la===34 || _la===35)) { this._errHandler.recoverInline(this); @@ -4356,7 +4365,7 @@ export default class SolidityParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 866; + this.state = 867; this.expression(7); } break; @@ -4364,13 +4373,13 @@ export default class SolidityParser extends Parser { { localctx = new ExpressionContext(this, _parentctx, _parentState); this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_expression); - this.state = 867; + this.state = 868; if (!(this.precpred(this._ctx, 5))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 5)"); } - this.state = 868; - this.match(SolidityParser.T__75); this.state = 869; + this.match(SolidityParser.T__75); + this.state = 870; this.expression(6); } break; @@ -4378,13 +4387,13 @@ export default class SolidityParser extends Parser { { localctx = new ExpressionContext(this, _parentctx, _parentState); this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_expression); - this.state = 870; + this.state = 871; if (!(this.precpred(this._ctx, 4))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 4)"); } - this.state = 871; - this.match(SolidityParser.T__3); this.state = 872; + this.match(SolidityParser.T__3); + this.state = 873; this.expression(5); } break; @@ -4392,17 +4401,17 @@ export default class SolidityParser extends Parser { { localctx = new ExpressionContext(this, _parentctx, _parentState); this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_expression); - this.state = 873; + this.state = 874; if (!(this.precpred(this._ctx, 3))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 3)"); } - this.state = 874; - this.match(SolidityParser.T__76); this.state = 875; - this.expression(0); + this.match(SolidityParser.T__76); this.state = 876; - this.match(SolidityParser.T__69); + this.expression(0); this.state = 877; + this.match(SolidityParser.T__69); + this.state = 878; this.expression(3); } break; @@ -4410,11 +4419,11 @@ export default class SolidityParser extends Parser { { localctx = new ExpressionContext(this, _parentctx, _parentState); this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_expression); - this.state = 879; + this.state = 880; if (!(this.precpred(this._ctx, 2))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 2)"); } - this.state = 880; + this.state = 881; _la = this._input.LA(1); if(!(_la===11 || ((((_la - 78)) & ~0x1F) === 0 && ((1 << (_la - 78)) & 1023) !== 0))) { this._errHandler.recoverInline(this); @@ -4423,7 +4432,7 @@ export default class SolidityParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 881; + this.state = 882; this.expression(3); } break; @@ -4431,11 +4440,11 @@ export default class SolidityParser extends Parser { { localctx = new ExpressionContext(this, _parentctx, _parentState); this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_expression); - this.state = 882; + this.state = 883; if (!(this.precpred(this._ctx, 27))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 27)"); } - this.state = 883; + this.state = 884; _la = this._input.LA(1); if(!(_la===67 || _la===68)) { this._errHandler.recoverInline(this); @@ -4450,15 +4459,15 @@ export default class SolidityParser extends Parser { { localctx = new ExpressionContext(this, _parentctx, _parentState); this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_expression); - this.state = 884; + this.state = 885; if (!(this.precpred(this._ctx, 25))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 25)"); } - this.state = 885; - this.match(SolidityParser.T__41); this.state = 886; - this.expression(0); + this.match(SolidityParser.T__41); this.state = 887; + this.expression(0); + this.state = 888; this.match(SolidityParser.T__42); } break; @@ -4466,35 +4475,35 @@ export default class SolidityParser extends Parser { { localctx = new ExpressionContext(this, _parentctx, _parentState); this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_expression); - this.state = 889; + this.state = 890; if (!(this.precpred(this._ctx, 24))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 24)"); } - this.state = 890; + this.state = 891; this.match(SolidityParser.T__41); - this.state = 892; + this.state = 893; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3263184960) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 4278194513) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & 4244635651) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 124273675) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3263184960) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 4278194513) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & 4244635651) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 248547339) !== 0)) { { - this.state = 891; + this.state = 892; this.expression(0); } } - this.state = 894; + this.state = 895; this.match(SolidityParser.T__69); - this.state = 896; + this.state = 897; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3263184960) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 4278194513) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & 4244635651) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 124273675) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3263184960) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 4278194513) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & 4244635651) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 248547339) !== 0)) { { - this.state = 895; + this.state = 896; this.expression(0); } } - this.state = 898; + this.state = 899; this.match(SolidityParser.T__42); } break; @@ -4502,13 +4511,13 @@ export default class SolidityParser extends Parser { { localctx = new ExpressionContext(this, _parentctx, _parentState); this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_expression); - this.state = 899; + this.state = 900; if (!(this.precpred(this._ctx, 23))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 23)"); } - this.state = 900; - this.match(SolidityParser.T__44); this.state = 901; + this.match(SolidityParser.T__44); + this.state = 902; this.identifier(); } break; @@ -4516,15 +4525,15 @@ export default class SolidityParser extends Parser { { localctx = new ExpressionContext(this, _parentctx, _parentState); this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_expression); - this.state = 902; + this.state = 903; if (!(this.precpred(this._ctx, 22))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 22)"); } - this.state = 903; - this.match(SolidityParser.T__14); this.state = 904; - this.nameValueList(); + this.match(SolidityParser.T__14); this.state = 905; + this.nameValueList(); + this.state = 906; this.match(SolidityParser.T__16); } break; @@ -4532,22 +4541,22 @@ export default class SolidityParser extends Parser { { localctx = new ExpressionContext(this, _parentctx, _parentState); this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_expression); - this.state = 907; + this.state = 908; if (!(this.precpred(this._ctx, 21))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 21)"); } - this.state = 908; - this.match(SolidityParser.T__22); this.state = 909; - this.functionCallArguments(); + this.match(SolidityParser.T__22); this.state = 910; + this.functionCallArguments(); + this.state = 911; this.match(SolidityParser.T__23); } break; } } } - this.state = 916; + this.state = 917; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 94, this._ctx); } @@ -4572,69 +4581,69 @@ export default class SolidityParser extends Parser { let localctx: PrimaryExpressionContext = new PrimaryExpressionContext(this, this._ctx, this.state); this.enterRule(localctx, 142, SolidityParser.RULE_primaryExpression); try { - this.state = 926; + this.state = 927; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 95, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 917; + this.state = 918; this.match(SolidityParser.BooleanLiteral); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 918; + this.state = 919; this.numberLiteral(); } break; case 3: this.enterOuterAlt(localctx, 3); { - this.state = 919; + this.state = 920; this.hexLiteral(); } break; case 4: this.enterOuterAlt(localctx, 4); { - this.state = 920; + this.state = 921; this.stringLiteral(); } break; case 5: this.enterOuterAlt(localctx, 5); { - this.state = 921; + this.state = 922; this.identifier(); } break; case 6: this.enterOuterAlt(localctx, 6); { - this.state = 922; + this.state = 923; this.match(SolidityParser.TypeKeyword); } break; case 7: this.enterOuterAlt(localctx, 7); { - this.state = 923; + this.state = 924; this.match(SolidityParser.PayableKeyword); } break; case 8: this.enterOuterAlt(localctx, 8); { - this.state = 924; + this.state = 925; this.tupleExpression(); } break; case 9: this.enterOuterAlt(localctx, 9); { - this.state = 925; + this.state = 926; this.typeName(0); } break; @@ -4662,21 +4671,21 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 928; + this.state = 929; this.expression(0); - this.state = 933; + this.state = 934; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===16) { { { - this.state = 929; - this.match(SolidityParser.T__15); this.state = 930; + this.match(SolidityParser.T__15); + this.state = 931; this.expression(0); } } - this.state = 935; + this.state = 936; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -4705,32 +4714,32 @@ export default class SolidityParser extends Parser { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 936; + this.state = 937; this.nameValue(); - this.state = 941; + this.state = 942; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 97, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 937; - this.match(SolidityParser.T__15); this.state = 938; + this.match(SolidityParser.T__15); + this.state = 939; this.nameValue(); } } } - this.state = 943; + this.state = 944; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 97, this._ctx); } - this.state = 945; + this.state = 946; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===16) { { - this.state = 944; + this.state = 945; this.match(SolidityParser.T__15); } } @@ -4758,11 +4767,11 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 947; - this.identifier(); this.state = 948; - this.match(SolidityParser.T__69); + this.identifier(); this.state = 949; + this.match(SolidityParser.T__69); + this.state = 950; this.expression(0); } } @@ -4786,25 +4795,25 @@ export default class SolidityParser extends Parser { this.enterRule(localctx, 150, SolidityParser.RULE_functionCallArguments); let _la: number; try { - this.state = 959; + this.state = 960; this._errHandler.sync(this); switch (this._input.LA(1)) { case 15: this.enterOuterAlt(localctx, 1); { - this.state = 951; + this.state = 952; this.match(SolidityParser.T__14); - this.state = 953; + this.state = 954; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069185) !== 0) || _la===127 || _la===128) { + if (_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 3230138369) !== 0) || _la===128 || _la===129) { { - this.state = 952; + this.state = 953; this.nameValueList(); } } - this.state = 955; + this.state = 956; this.match(SolidityParser.T__16); } break; @@ -4840,22 +4849,22 @@ export default class SolidityParser extends Parser { case 103: case 104: case 106: - case 113: - case 117: - case 122: - case 124: + case 114: + case 118: + case 123: case 125: - case 127: + case 126: case 128: case 129: + case 130: this.enterOuterAlt(localctx, 2); { - this.state = 957; + this.state = 958; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3263184960) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 4278194513) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & 4244635651) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 124273675) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3263184960) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 4278194513) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & 4244635651) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 248547339) !== 0)) { { - this.state = 956; + this.state = 957; this.expressionList(); } } @@ -4887,13 +4896,13 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 961; - this.expression(0); this.state = 962; - this.match(SolidityParser.T__22); + this.expression(0); this.state = 963; - this.functionCallArguments(); + this.match(SolidityParser.T__22); this.state = 964; + this.functionCallArguments(); + this.state = 965; this.match(SolidityParser.T__23); } } @@ -4919,23 +4928,23 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 966; + this.state = 967; this.match(SolidityParser.T__14); - this.state = 970; + this.state = 971; this._errHandler.sync(this); _la = this._input.LA(1); - while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 176209920) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 287322177) !== 0) || ((((_la - 88)) & ~0x1F) === 0 && ((1 << (_la - 88)) & 589676681) !== 0) || ((((_la - 124)) & ~0x1F) === 0 && ((1 << (_la - 124)) & 59) !== 0)) { + while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 176209920) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 287322177) !== 0) || ((((_la - 88)) & ~0x1F) === 0 && ((1 << (_la - 88)) & 1176879241) !== 0) || ((((_la - 125)) & ~0x1F) === 0 && ((1 << (_la - 125)) & 59) !== 0)) { { { - this.state = 967; + this.state = 968; this.assemblyItem(); } } - this.state = 972; + this.state = 973; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 973; + this.state = 974; this.match(SolidityParser.T__16); } } @@ -4958,125 +4967,125 @@ export default class SolidityParser extends Parser { let localctx: AssemblyItemContext = new AssemblyItemContext(this, this._ctx, this.state); this.enterRule(localctx, 156, SolidityParser.RULE_assemblyItem); try { - this.state = 992; + this.state = 993; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 103, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 975; + this.state = 976; this.identifier(); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 976; + this.state = 977; this.assemblyBlock(); } break; case 3: this.enterOuterAlt(localctx, 3); { - this.state = 977; + this.state = 978; this.assemblyExpression(); } break; case 4: this.enterOuterAlt(localctx, 4); { - this.state = 978; + this.state = 979; this.assemblyLocalDefinition(); } break; case 5: this.enterOuterAlt(localctx, 5); { - this.state = 979; + this.state = 980; this.assemblyAssignment(); } break; case 6: this.enterOuterAlt(localctx, 6); { - this.state = 980; + this.state = 981; this.assemblyStackAssignment(); } break; case 7: this.enterOuterAlt(localctx, 7); { - this.state = 981; + this.state = 982; this.labelDefinition(); } break; case 8: this.enterOuterAlt(localctx, 8); { - this.state = 982; + this.state = 983; this.assemblySwitch(); } break; case 9: this.enterOuterAlt(localctx, 9); { - this.state = 983; + this.state = 984; this.assemblyFunctionDefinition(); } break; case 10: this.enterOuterAlt(localctx, 10); { - this.state = 984; + this.state = 985; this.assemblyFor(); } break; case 11: this.enterOuterAlt(localctx, 11); { - this.state = 985; + this.state = 986; this.assemblyIf(); } break; case 12: this.enterOuterAlt(localctx, 12); { - this.state = 986; + this.state = 987; this.match(SolidityParser.BreakKeyword); } break; case 13: this.enterOuterAlt(localctx, 13); { - this.state = 987; + this.state = 988; this.match(SolidityParser.ContinueKeyword); } break; case 14: this.enterOuterAlt(localctx, 14); { - this.state = 988; + this.state = 989; this.match(SolidityParser.LeaveKeyword); } break; case 15: this.enterOuterAlt(localctx, 15); { - this.state = 989; + this.state = 990; this.numberLiteral(); } break; case 16: this.enterOuterAlt(localctx, 16); { - this.state = 990; + this.state = 991; this.stringLiteral(); } break; case 17: this.enterOuterAlt(localctx, 17); { - this.state = 991; + this.state = 992; this.hexLiteral(); } break; @@ -5101,27 +5110,27 @@ export default class SolidityParser extends Parser { let localctx: AssemblyExpressionContext = new AssemblyExpressionContext(this, this._ctx, this.state); this.enterRule(localctx, 158, SolidityParser.RULE_assemblyExpression); try { - this.state = 997; + this.state = 998; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 104, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 994; + this.state = 995; this.assemblyCall(); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 995; + this.state = 996; this.assemblyLiteral(); } break; case 3: this.enterOuterAlt(localctx, 3); { - this.state = 996; + this.state = 997; this.assemblyMember(); } break; @@ -5148,11 +5157,11 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 999; - this.identifier(); this.state = 1000; - this.match(SolidityParser.T__44); + this.identifier(); this.state = 1001; + this.match(SolidityParser.T__44); + this.state = 1002; this.identifier(); } } @@ -5178,68 +5187,68 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 1007; + this.state = 1008; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 105, this._ctx) ) { case 1: { - this.state = 1003; + this.state = 1004; this.match(SolidityParser.T__58); } break; case 2: { - this.state = 1004; + this.state = 1005; this.match(SolidityParser.T__43); } break; case 3: { - this.state = 1005; + this.state = 1006; this.match(SolidityParser.T__65); } break; case 4: { - this.state = 1006; + this.state = 1007; this.identifier(); } break; } - this.state = 1021; + this.state = 1022; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 108, this._ctx) ) { case 1: { - this.state = 1009; + this.state = 1010; this.match(SolidityParser.T__22); - this.state = 1011; + this.state = 1012; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 4489281) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615072129) !== 0) || ((((_la - 127)) & ~0x1F) === 0 && ((1 << (_la - 127)) & 7) !== 0)) { + if (_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 4489281) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 3230141313) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & 7) !== 0)) { { - this.state = 1010; + this.state = 1011; this.assemblyExpression(); } } - this.state = 1017; + this.state = 1018; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===16) { { { - this.state = 1013; - this.match(SolidityParser.T__15); this.state = 1014; + this.match(SolidityParser.T__15); + this.state = 1015; this.assemblyExpression(); } } - this.state = 1019; + this.state = 1020; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 1020; + this.state = 1021; this.match(SolidityParser.T__23); } break; @@ -5268,18 +5277,18 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 1023; - this.match(SolidityParser.T__87); this.state = 1024; + this.match(SolidityParser.T__87); + this.state = 1025; this.assemblyIdentifierOrList(); - this.state = 1027; + this.state = 1028; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===89) { { - this.state = 1025; - this.match(SolidityParser.T__88); this.state = 1026; + this.match(SolidityParser.T__88); + this.state = 1027; this.assemblyExpression(); } } @@ -5307,11 +5316,11 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 1029; - this.assemblyIdentifierOrList(); this.state = 1030; - this.match(SolidityParser.T__88); + this.assemblyIdentifierOrList(); this.state = 1031; + this.match(SolidityParser.T__88); + this.state = 1032; this.assemblyExpression(); } } @@ -5334,38 +5343,38 @@ export default class SolidityParser extends Parser { let localctx: AssemblyIdentifierOrListContext = new AssemblyIdentifierOrListContext(this, this._ctx, this.state); this.enterRule(localctx, 168, SolidityParser.RULE_assemblyIdentifierOrList); try { - this.state = 1040; + this.state = 1041; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 110, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 1033; + this.state = 1034; this.identifier(); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 1034; + this.state = 1035; this.assemblyMember(); } break; case 3: this.enterOuterAlt(localctx, 3); { - this.state = 1035; + this.state = 1036; this.assemblyIdentifierList(); } break; case 4: this.enterOuterAlt(localctx, 4); { - this.state = 1036; - this.match(SolidityParser.T__22); this.state = 1037; - this.assemblyIdentifierList(); + this.match(SolidityParser.T__22); this.state = 1038; + this.assemblyIdentifierList(); + this.state = 1039; this.match(SolidityParser.T__23); } break; @@ -5393,21 +5402,21 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 1042; + this.state = 1043; this.identifier(); - this.state = 1047; + this.state = 1048; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===16) { { { - this.state = 1043; - this.match(SolidityParser.T__15); this.state = 1044; + this.match(SolidityParser.T__15); + this.state = 1045; this.identifier(); } } - this.state = 1049; + this.state = 1050; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -5434,11 +5443,11 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 1050; - this.assemblyExpression(); this.state = 1051; - this.match(SolidityParser.T__89); + this.assemblyExpression(); this.state = 1052; + this.match(SolidityParser.T__89); + this.state = 1053; this.identifier(); } } @@ -5463,9 +5472,9 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 1054; - this.identifier(); this.state = 1055; + this.identifier(); + this.state = 1056; this.match(SolidityParser.T__69); } } @@ -5491,21 +5500,21 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 1057; - this.match(SolidityParser.T__90); this.state = 1058; + this.match(SolidityParser.T__90); + this.state = 1059; this.assemblyExpression(); - this.state = 1062; + this.state = 1063; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===92 || _la===93) { { { - this.state = 1059; + this.state = 1060; this.assemblyCase(); } } - this.state = 1064; + this.state = 1065; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -5530,26 +5539,26 @@ export default class SolidityParser extends Parser { let localctx: AssemblyCaseContext = new AssemblyCaseContext(this, this._ctx, this.state); this.enterRule(localctx, 178, SolidityParser.RULE_assemblyCase); try { - this.state = 1071; + this.state = 1072; this._errHandler.sync(this); switch (this._input.LA(1)) { case 92: this.enterOuterAlt(localctx, 1); { - this.state = 1065; - this.match(SolidityParser.T__91); this.state = 1066; - this.assemblyLiteral(); + this.match(SolidityParser.T__91); this.state = 1067; + this.assemblyLiteral(); + this.state = 1068; this.assemblyBlock(); } break; case 93: this.enterOuterAlt(localctx, 2); { - this.state = 1069; - this.match(SolidityParser.T__92); this.state = 1070; + this.match(SolidityParser.T__92); + this.state = 1071; this.assemblyBlock(); } break; @@ -5579,35 +5588,35 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 1073; - this.match(SolidityParser.T__37); this.state = 1074; - this.identifier(); + this.match(SolidityParser.T__37); this.state = 1075; + this.identifier(); + this.state = 1076; this.match(SolidityParser.T__22); - this.state = 1077; + this.state = 1078; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069185) !== 0) || _la===127 || _la===128) { + if (_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 3230138369) !== 0) || _la===128 || _la===129) { { - this.state = 1076; + this.state = 1077; this.assemblyIdentifierList(); } } - this.state = 1079; + this.state = 1080; this.match(SolidityParser.T__23); - this.state = 1081; + this.state = 1082; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===94) { { - this.state = 1080; + this.state = 1081; this.assemblyFunctionReturns(); } } - this.state = 1083; + this.state = 1084; this.assemblyBlock(); } } @@ -5633,9 +5642,9 @@ export default class SolidityParser extends Parser { this.enterOuterAlt(localctx, 1); { { - this.state = 1085; - this.match(SolidityParser.T__93); this.state = 1086; + this.match(SolidityParser.T__93); + this.state = 1087; this.assemblyIdentifierList(); } } @@ -5661,14 +5670,14 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 1088; + this.state = 1089; this.match(SolidityParser.T__26); - this.state = 1091; + this.state = 1092; this._errHandler.sync(this); switch (this._input.LA(1)) { case 15: { - this.state = 1089; + this.state = 1090; this.assemblyBlock(); } break; @@ -5684,29 +5693,29 @@ export default class SolidityParser extends Parser { case 103: case 104: case 106: - case 113: - case 117: - case 124: + case 114: + case 118: case 125: - case 127: + case 126: case 128: case 129: + case 130: { - this.state = 1090; + this.state = 1091; this.assemblyExpression(); } break; default: throw new NoViableAltException(this); } - this.state = 1093; + this.state = 1094; this.assemblyExpression(); - this.state = 1096; + this.state = 1097; this._errHandler.sync(this); switch (this._input.LA(1)) { case 15: { - this.state = 1094; + this.state = 1095; this.assemblyBlock(); } break; @@ -5722,22 +5731,22 @@ export default class SolidityParser extends Parser { case 103: case 104: case 106: - case 113: - case 117: - case 124: + case 114: + case 118: case 125: - case 127: + case 126: case 128: case 129: + case 130: { - this.state = 1095; + this.state = 1096; this.assemblyExpression(); } break; default: throw new NoViableAltException(this); } - this.state = 1098; + this.state = 1099; this.assemblyBlock(); } } @@ -5762,11 +5771,11 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 1100; - this.match(SolidityParser.T__50); this.state = 1101; - this.assemblyExpression(); + this.match(SolidityParser.T__50); this.state = 1102; + this.assemblyExpression(); + this.state = 1103; this.assemblyBlock(); } } @@ -5789,41 +5798,41 @@ export default class SolidityParser extends Parser { let localctx: AssemblyLiteralContext = new AssemblyLiteralContext(this, this._ctx, this.state); this.enterRule(localctx, 188, SolidityParser.RULE_assemblyLiteral); try { - this.state = 1109; + this.state = 1110; this._errHandler.sync(this); switch (this._input.LA(1)) { - case 129: + case 130: this.enterOuterAlt(localctx, 1); { - this.state = 1104; + this.state = 1105; this.stringLiteral(); } break; case 103: this.enterOuterAlt(localctx, 2); { - this.state = 1105; + this.state = 1106; this.match(SolidityParser.DecimalNumber); } break; case 104: this.enterOuterAlt(localctx, 3); { - this.state = 1106; + this.state = 1107; this.match(SolidityParser.HexNumber); } break; case 106: this.enterOuterAlt(localctx, 4); { - this.state = 1107; + this.state = 1108; this.hexLiteral(); } break; case 102: this.enterOuterAlt(localctx, 5); { - this.state = 1108; + this.state = 1109; this.match(SolidityParser.BooleanLiteral); } break; @@ -5851,86 +5860,86 @@ export default class SolidityParser extends Parser { this.enterRule(localctx, 190, SolidityParser.RULE_tupleExpression); let _la: number; try { - this.state = 1137; + this.state = 1138; this._errHandler.sync(this); switch (this._input.LA(1)) { case 23: this.enterOuterAlt(localctx, 1); { - this.state = 1111; + this.state = 1112; this.match(SolidityParser.T__22); { - this.state = 1113; + this.state = 1114; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3263184960) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 4278194513) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & 4244635651) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 124273675) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3263184960) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 4278194513) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & 4244635651) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 248547339) !== 0)) { { - this.state = 1112; + this.state = 1113; this.expression(0); } } - this.state = 1121; + this.state = 1122; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===16) { { { - this.state = 1115; + this.state = 1116; this.match(SolidityParser.T__15); - this.state = 1117; + this.state = 1118; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3263184960) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 4278194513) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & 4244635651) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 124273675) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3263184960) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 4278194513) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & 4244635651) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 248547339) !== 0)) { { - this.state = 1116; + this.state = 1117; this.expression(0); } } } } - this.state = 1123; + this.state = 1124; this._errHandler.sync(this); _la = this._input.LA(1); } } - this.state = 1124; + this.state = 1125; this.match(SolidityParser.T__23); } break; case 42: this.enterOuterAlt(localctx, 2); { - this.state = 1125; + this.state = 1126; this.match(SolidityParser.T__41); - this.state = 1134; + this.state = 1135; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3263184960) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 4278194513) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & 4244635651) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 124273675) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3263184960) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 4278194513) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & 4244635651) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 248547339) !== 0)) { { - this.state = 1126; + this.state = 1127; this.expression(0); - this.state = 1131; + this.state = 1132; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===16) { { { - this.state = 1127; - this.match(SolidityParser.T__15); this.state = 1128; + this.match(SolidityParser.T__15); + this.state = 1129; this.expression(0); } } - this.state = 1133; + this.state = 1134; this._errHandler.sync(this); _la = this._input.LA(1); } } } - this.state = 1136; + this.state = 1137; this.match(SolidityParser.T__42); } break; @@ -5960,7 +5969,7 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 1139; + this.state = 1140; _la = this._input.LA(1); if(!(_la===103 || _la===104)) { this._errHandler.recoverInline(this); @@ -5969,12 +5978,12 @@ export default class SolidityParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 1141; + this.state = 1142; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 125, this._ctx) ) { case 1: { - this.state = 1140; + this.state = 1141; this.match(SolidityParser.NumberUnit); } break; @@ -6003,9 +6012,9 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 1143; + this.state = 1144; _la = this._input.LA(1); - if(!(_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069185) !== 0) || _la===127 || _la===128)) { + if(!(_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 3230138369) !== 0) || _la===128 || _la===129)) { this._errHandler.recoverInline(this); } else { @@ -6036,7 +6045,7 @@ export default class SolidityParser extends Parser { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 1146; + this.state = 1147; this._errHandler.sync(this); _alt = 1; do { @@ -6044,7 +6053,7 @@ export default class SolidityParser extends Parser { case 1: { { - this.state = 1145; + this.state = 1146; this.match(SolidityParser.HexLiteralFragment); } } @@ -6052,7 +6061,7 @@ export default class SolidityParser extends Parser { default: throw new NoViableAltException(this); } - this.state = 1148; + this.state = 1149; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 126, this._ctx); } while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER); @@ -6080,34 +6089,34 @@ export default class SolidityParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 1150; + this.state = 1151; this.match(SolidityParser.T__95); - this.state = 1162; + this.state = 1163; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===23) { { - this.state = 1151; - this.match(SolidityParser.T__22); this.state = 1152; + this.match(SolidityParser.T__22); + this.state = 1153; this.userDefinedTypeName(); - this.state = 1157; + this.state = 1158; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===16) { { { - this.state = 1153; - this.match(SolidityParser.T__15); this.state = 1154; + this.match(SolidityParser.T__15); + this.state = 1155; this.userDefinedTypeName(); } } - this.state = 1159; + this.state = 1160; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 1160; + this.state = 1161; this.match(SolidityParser.T__23); } } @@ -6136,7 +6145,7 @@ export default class SolidityParser extends Parser { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 1165; + this.state = 1166; this._errHandler.sync(this); _alt = 1; do { @@ -6144,7 +6153,7 @@ export default class SolidityParser extends Parser { case 1: { { - this.state = 1164; + this.state = 1165; this.match(SolidityParser.StringLiteralFragment); } } @@ -6152,7 +6161,7 @@ export default class SolidityParser extends Parser { default: throw new NoViableAltException(this); } - this.state = 1167; + this.state = 1168; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 129, this._ctx); } while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER); @@ -6233,7 +6242,7 @@ export default class SolidityParser extends Parser { return true; } - public static readonly _serializedATN: number[] = [4,1,133,1170,2,0,7,0, + public static readonly _serializedATN: number[] = [4,1,134,1171,2,0,7,0, 2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9, 2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2, 17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24, @@ -6258,395 +6267,395 @@ export default class SolidityParser extends Parser { 312,9,10,3,10,314,8,10,1,10,1,10,5,10,318,8,10,10,10,12,10,321,9,10,1,10, 1,10,1,11,1,11,1,11,3,11,328,8,11,1,11,3,11,331,8,11,1,12,1,12,1,12,1,12, 1,12,1,12,1,12,1,12,1,12,3,12,342,8,12,1,13,1,13,1,13,1,13,1,13,1,13,1, - 13,5,13,351,8,13,10,13,12,13,354,9,13,1,13,1,13,1,13,3,13,359,8,13,1,13, - 1,13,1,14,1,14,1,14,1,14,1,14,1,14,1,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,17,1,17,1,17,1,17,3,17,386,8,17,1,17,3,17, - 389,8,17,1,17,1,17,1,18,1,18,1,18,1,18,1,18,5,18,398,8,18,10,18,12,18,401, - 9,18,1,18,1,18,3,18,405,8,18,1,19,1,19,1,19,3,19,410,8,19,1,20,1,20,1,21, - 1,21,1,21,1,21,1,21,1,21,1,21,1,21,5,21,422,8,21,10,21,12,21,425,9,21,3, - 21,427,8,21,1,21,1,21,1,22,1,22,1,22,3,22,434,8,22,1,22,1,22,5,22,438,8, - 22,10,22,12,22,441,9,22,1,22,1,22,3,22,445,8,22,1,23,1,23,1,23,3,23,450, - 8,23,1,23,3,23,453,8,23,1,24,1,24,1,24,1,24,3,24,459,8,24,1,24,1,24,3,24, - 463,8,24,1,25,1,25,3,25,467,8,25,1,25,1,25,1,25,3,25,472,8,25,1,26,1,26, - 1,26,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,5,27,485,8,27,10,27,12,27, - 488,9,27,1,28,1,28,1,28,1,28,3,28,494,8,28,1,28,1,28,1,29,1,29,1,30,1,30, - 1,30,1,30,3,30,504,8,30,1,30,1,30,5,30,508,8,30,10,30,12,30,511,9,30,1, - 30,1,30,1,31,1,31,1,31,1,31,5,31,519,8,31,10,31,12,31,522,9,31,3,31,524, - 8,31,1,31,1,31,1,32,1,32,3,32,530,8,32,1,32,3,32,533,8,32,1,33,1,33,1,33, - 1,33,5,33,539,8,33,10,33,12,33,542,9,33,3,33,544,8,33,1,33,1,33,1,34,1, - 34,3,34,550,8,34,1,34,3,34,553,8,34,1,35,1,35,1,35,1,35,5,35,559,8,35,10, - 35,12,35,562,9,35,3,35,564,8,35,1,35,1,35,1,36,1,36,3,36,570,8,36,1,37, - 1,37,3,37,574,8,37,1,37,1,37,1,38,1,38,1,38,1,38,1,38,1,38,1,38,3,38,585, - 8,38,1,38,1,38,1,38,3,38,590,8,38,1,38,5,38,593,8,38,10,38,12,38,596,9, - 38,1,39,1,39,1,39,5,39,601,8,39,10,39,12,39,604,9,39,1,40,1,40,3,40,608, - 8,40,1,41,1,41,1,41,1,41,3,41,614,8,41,1,41,1,41,1,41,3,41,619,8,41,1,41, - 1,41,1,42,1,42,1,43,1,43,1,44,1,44,1,44,1,44,1,44,5,44,632,8,44,10,44,12, - 44,635,9,44,1,44,1,44,3,44,639,8,44,1,45,1,45,1,46,1,46,1,47,1,47,5,47, - 647,8,47,10,47,12,47,650,9,47,1,47,1,47,1,48,1,48,1,48,1,48,1,48,1,48,1, - 48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,3,48,669,8,48,1,49,1,49,1,49, - 1,50,1,50,1,50,1,50,1,50,1,50,1,50,3,50,681,8,50,1,51,1,51,1,51,3,51,686, - 8,51,1,51,1,51,4,51,690,8,51,11,51,12,51,691,1,52,1,52,3,52,696,8,52,1, - 52,3,52,699,8,52,1,52,1,52,1,53,1,53,1,53,1,53,1,53,1,53,1,54,1,54,3,54, - 711,8,54,1,55,1,55,1,55,1,56,1,56,1,56,1,56,3,56,720,8,56,1,56,1,56,3,56, - 724,8,56,1,56,3,56,727,8,56,1,56,1,56,1,56,1,57,1,57,3,57,734,8,57,1,57, - 1,57,1,57,1,57,3,57,740,8,57,1,57,1,57,1,58,1,58,1,59,1,59,1,59,1,59,1, - 59,1,59,1,59,1,59,1,60,1,60,1,60,1,61,1,61,1,61,1,62,1,62,3,62,762,8,62, - 1,62,1,62,1,63,1,63,1,63,1,64,1,64,1,64,1,64,1,65,1,65,1,65,1,65,1,66,1, - 66,1,66,1,66,1,66,1,66,1,66,3,66,784,8,66,1,66,1,66,3,66,788,8,66,1,66, - 1,66,1,67,3,67,793,8,67,1,67,1,67,3,67,797,8,67,5,67,799,8,67,10,67,12, - 67,802,9,67,1,68,1,68,3,68,806,8,68,1,68,5,68,809,8,68,10,68,12,68,812, - 9,68,1,68,3,68,815,8,68,1,68,1,68,1,69,1,69,1,70,1,70,1,70,1,70,1,70,1, - 70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,3,70,839, - 8,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1, - 70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70, + 13,1,13,5,13,352,8,13,10,13,12,13,355,9,13,1,13,1,13,1,13,3,13,360,8,13, + 1,13,1,13,1,14,1,14,1,14,1,14,1,14,1,14,1,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,17,1,17,1,17,1,17,3,17,387,8,17,1,17, + 3,17,390,8,17,1,17,1,17,1,18,1,18,1,18,1,18,1,18,5,18,399,8,18,10,18,12, + 18,402,9,18,1,18,1,18,3,18,406,8,18,1,19,1,19,1,19,3,19,411,8,19,1,20,1, + 20,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,5,21,423,8,21,10,21,12,21,426, + 9,21,3,21,428,8,21,1,21,1,21,1,22,1,22,1,22,3,22,435,8,22,1,22,1,22,5,22, + 439,8,22,10,22,12,22,442,9,22,1,22,1,22,3,22,446,8,22,1,23,1,23,1,23,3, + 23,451,8,23,1,23,3,23,454,8,23,1,24,1,24,1,24,1,24,3,24,460,8,24,1,24,1, + 24,3,24,464,8,24,1,25,1,25,3,25,468,8,25,1,25,1,25,1,25,3,25,473,8,25,1, + 26,1,26,1,26,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,5,27,486,8,27,10,27, + 12,27,489,9,27,1,28,1,28,1,28,1,28,3,28,495,8,28,1,28,1,28,1,29,1,29,1, + 30,1,30,1,30,1,30,3,30,505,8,30,1,30,1,30,5,30,509,8,30,10,30,12,30,512, + 9,30,1,30,1,30,1,31,1,31,1,31,1,31,5,31,520,8,31,10,31,12,31,523,9,31,3, + 31,525,8,31,1,31,1,31,1,32,1,32,3,32,531,8,32,1,32,3,32,534,8,32,1,33,1, + 33,1,33,1,33,5,33,540,8,33,10,33,12,33,543,9,33,3,33,545,8,33,1,33,1,33, + 1,34,1,34,3,34,551,8,34,1,34,3,34,554,8,34,1,35,1,35,1,35,1,35,5,35,560, + 8,35,10,35,12,35,563,9,35,3,35,565,8,35,1,35,1,35,1,36,1,36,3,36,571,8, + 36,1,37,1,37,3,37,575,8,37,1,37,1,37,1,38,1,38,1,38,1,38,1,38,1,38,1,38, + 3,38,586,8,38,1,38,1,38,1,38,3,38,591,8,38,1,38,5,38,594,8,38,10,38,12, + 38,597,9,38,1,39,1,39,1,39,5,39,602,8,39,10,39,12,39,605,9,39,1,40,1,40, + 3,40,609,8,40,1,41,1,41,1,41,1,41,3,41,615,8,41,1,41,1,41,1,41,3,41,620, + 8,41,1,41,1,41,1,42,1,42,1,43,1,43,1,44,1,44,1,44,1,44,1,44,5,44,633,8, + 44,10,44,12,44,636,9,44,1,44,1,44,3,44,640,8,44,1,45,1,45,1,46,1,46,1,47, + 1,47,5,47,648,8,47,10,47,12,47,651,9,47,1,47,1,47,1,48,1,48,1,48,1,48,1, + 48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,3,48,670,8,48,1,49, + 1,49,1,49,1,50,1,50,1,50,1,50,1,50,1,50,1,50,3,50,682,8,50,1,51,1,51,1, + 51,3,51,687,8,51,1,51,1,51,4,51,691,8,51,11,51,12,51,692,1,52,1,52,3,52, + 697,8,52,1,52,3,52,700,8,52,1,52,1,52,1,53,1,53,1,53,1,53,1,53,1,53,1,54, + 1,54,3,54,712,8,54,1,55,1,55,1,55,1,56,1,56,1,56,1,56,3,56,721,8,56,1,56, + 1,56,3,56,725,8,56,1,56,3,56,728,8,56,1,56,1,56,1,56,1,57,1,57,3,57,735, + 8,57,1,57,1,57,1,57,1,57,3,57,741,8,57,1,57,1,57,1,58,1,58,1,59,1,59,1, + 59,1,59,1,59,1,59,1,59,1,59,1,60,1,60,1,60,1,61,1,61,1,61,1,62,1,62,3,62, + 763,8,62,1,62,1,62,1,63,1,63,1,63,1,64,1,64,1,64,1,64,1,65,1,65,1,65,1, + 65,1,66,1,66,1,66,1,66,1,66,1,66,1,66,3,66,785,8,66,1,66,1,66,3,66,789, + 8,66,1,66,1,66,1,67,3,67,794,8,67,1,67,1,67,3,67,798,8,67,5,67,800,8,67, + 10,67,12,67,803,9,67,1,68,1,68,3,68,807,8,68,1,68,5,68,810,8,68,10,68,12, + 68,813,9,68,1,68,3,68,816,8,68,1,68,1,68,1,69,1,69,1,70,1,70,1,70,1,70, + 1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,3, + 70,840,8,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70, 1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1, - 70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,3,70,893,8,70,1,70,1,70, - 3,70,897,8,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1, - 70,1,70,1,70,5,70,913,8,70,10,70,12,70,916,9,70,1,71,1,71,1,71,1,71,1,71, - 1,71,1,71,1,71,1,71,3,71,927,8,71,1,72,1,72,1,72,5,72,932,8,72,10,72,12, - 72,935,9,72,1,73,1,73,1,73,5,73,940,8,73,10,73,12,73,943,9,73,1,73,3,73, - 946,8,73,1,74,1,74,1,74,1,74,1,75,1,75,3,75,954,8,75,1,75,1,75,3,75,958, - 8,75,3,75,960,8,75,1,76,1,76,1,76,1,76,1,76,1,77,1,77,5,77,969,8,77,10, - 77,12,77,972,9,77,1,77,1,77,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78, - 1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,3,78,993,8,78,1,79,1,79,1,79,3, - 79,998,8,79,1,80,1,80,1,80,1,80,1,81,1,81,1,81,1,81,3,81,1008,8,81,1,81, - 1,81,3,81,1012,8,81,1,81,1,81,5,81,1016,8,81,10,81,12,81,1019,9,81,1,81, - 3,81,1022,8,81,1,82,1,82,1,82,1,82,3,82,1028,8,82,1,83,1,83,1,83,1,83,1, - 84,1,84,1,84,1,84,1,84,1,84,1,84,3,84,1041,8,84,1,85,1,85,1,85,5,85,1046, - 8,85,10,85,12,85,1049,9,85,1,86,1,86,1,86,1,86,1,87,1,87,1,87,1,88,1,88, - 1,88,5,88,1061,8,88,10,88,12,88,1064,9,88,1,89,1,89,1,89,1,89,1,89,1,89, - 3,89,1072,8,89,1,90,1,90,1,90,1,90,3,90,1078,8,90,1,90,1,90,3,90,1082,8, - 90,1,90,1,90,1,91,1,91,1,91,1,92,1,92,1,92,3,92,1092,8,92,1,92,1,92,1,92, - 3,92,1097,8,92,1,92,1,92,1,93,1,93,1,93,1,93,1,94,1,94,1,94,1,94,1,94,3, - 94,1110,8,94,1,95,1,95,3,95,1114,8,95,1,95,1,95,3,95,1118,8,95,5,95,1120, - 8,95,10,95,12,95,1123,9,95,1,95,1,95,1,95,1,95,1,95,5,95,1130,8,95,10,95, - 12,95,1133,9,95,3,95,1135,8,95,1,95,3,95,1138,8,95,1,96,1,96,3,96,1142, - 8,96,1,97,1,97,1,98,4,98,1147,8,98,11,98,12,98,1148,1,99,1,99,1,99,1,99, - 1,99,5,99,1156,8,99,10,99,12,99,1159,9,99,1,99,1,99,3,99,1163,8,99,1,100, - 4,100,1166,8,100,11,100,12,100,1167,1,100,0,2,76,140,101,0,2,4,6,8,10,12, - 14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60, - 62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106, - 108,110,112,114,116,118,120,122,124,126,128,130,132,134,136,138,140,142, - 144,146,148,150,152,154,156,158,160,162,164,166,168,170,172,174,176,178, - 180,182,184,186,188,190,192,194,196,198,200,0,15,1,0,5,11,1,0,19,21,3,0, - 3,3,5,10,28,35,1,0,48,50,4,0,110,110,117,117,121,121,123,123,3,0,44,44, - 63,66,97,101,1,0,67,68,1,0,30,31,2,0,3,3,32,33,1,0,74,75,1,0,7,10,1,0,34, - 35,2,0,11,11,78,87,1,0,103,104,10,0,14,14,25,25,44,44,50,50,62,62,95,95, - 113,113,117,117,124,125,127,128,1299,0,215,1,0,0,0,2,220,1,0,0,0,4,225, - 1,0,0,0,6,230,1,0,0,0,8,232,1,0,0,0,10,242,1,0,0,0,12,252,1,0,0,0,14,254, - 1,0,0,0,16,295,1,0,0,0,18,297,1,0,0,0,20,300,1,0,0,0,22,324,1,0,0,0,24, - 341,1,0,0,0,26,343,1,0,0,0,28,362,1,0,0,0,30,369,1,0,0,0,32,374,1,0,0,0, - 34,380,1,0,0,0,36,404,1,0,0,0,38,406,1,0,0,0,40,411,1,0,0,0,42,413,1,0, - 0,0,44,430,1,0,0,0,46,446,1,0,0,0,48,454,1,0,0,0,50,471,1,0,0,0,52,473, - 1,0,0,0,54,486,1,0,0,0,56,489,1,0,0,0,58,497,1,0,0,0,60,499,1,0,0,0,62, - 514,1,0,0,0,64,527,1,0,0,0,66,534,1,0,0,0,68,547,1,0,0,0,70,554,1,0,0,0, - 72,567,1,0,0,0,74,571,1,0,0,0,76,584,1,0,0,0,78,597,1,0,0,0,80,607,1,0, - 0,0,82,609,1,0,0,0,84,622,1,0,0,0,86,624,1,0,0,0,88,626,1,0,0,0,90,640, - 1,0,0,0,92,642,1,0,0,0,94,644,1,0,0,0,96,668,1,0,0,0,98,670,1,0,0,0,100, - 673,1,0,0,0,102,682,1,0,0,0,104,693,1,0,0,0,106,702,1,0,0,0,108,710,1,0, - 0,0,110,712,1,0,0,0,112,715,1,0,0,0,114,731,1,0,0,0,116,743,1,0,0,0,118, - 745,1,0,0,0,120,753,1,0,0,0,122,756,1,0,0,0,124,759,1,0,0,0,126,765,1,0, - 0,0,128,768,1,0,0,0,130,772,1,0,0,0,132,783,1,0,0,0,134,792,1,0,0,0,136, - 803,1,0,0,0,138,818,1,0,0,0,140,838,1,0,0,0,142,926,1,0,0,0,144,928,1,0, - 0,0,146,936,1,0,0,0,148,947,1,0,0,0,150,959,1,0,0,0,152,961,1,0,0,0,154, - 966,1,0,0,0,156,992,1,0,0,0,158,997,1,0,0,0,160,999,1,0,0,0,162,1007,1, - 0,0,0,164,1023,1,0,0,0,166,1029,1,0,0,0,168,1040,1,0,0,0,170,1042,1,0,0, - 0,172,1050,1,0,0,0,174,1054,1,0,0,0,176,1057,1,0,0,0,178,1071,1,0,0,0,180, - 1073,1,0,0,0,182,1085,1,0,0,0,184,1088,1,0,0,0,186,1100,1,0,0,0,188,1109, - 1,0,0,0,190,1137,1,0,0,0,192,1139,1,0,0,0,194,1143,1,0,0,0,196,1146,1,0, - 0,0,198,1150,1,0,0,0,200,1165,1,0,0,0,202,214,3,2,1,0,203,214,3,16,8,0, - 204,214,3,20,10,0,205,214,3,60,30,0,206,214,3,56,28,0,207,214,3,42,21,0, - 208,214,3,48,24,0,209,214,3,28,14,0,210,214,3,30,15,0,211,214,3,32,16,0, - 212,214,3,34,17,0,213,202,1,0,0,0,213,203,1,0,0,0,213,204,1,0,0,0,213,205, - 1,0,0,0,213,206,1,0,0,0,213,207,1,0,0,0,213,208,1,0,0,0,213,209,1,0,0,0, - 213,210,1,0,0,0,213,211,1,0,0,0,213,212,1,0,0,0,214,217,1,0,0,0,215,213, - 1,0,0,0,215,216,1,0,0,0,216,218,1,0,0,0,217,215,1,0,0,0,218,219,5,0,0,1, - 219,1,1,0,0,0,220,221,5,1,0,0,221,222,3,4,2,0,222,223,3,6,3,0,223,224,5, - 2,0,0,224,3,1,0,0,0,225,226,3,194,97,0,226,5,1,0,0,0,227,231,5,3,0,0,228, - 231,3,8,4,0,229,231,3,140,70,0,230,227,1,0,0,0,230,228,1,0,0,0,230,229, - 1,0,0,0,231,7,1,0,0,0,232,239,3,12,6,0,233,235,5,4,0,0,234,233,1,0,0,0, - 234,235,1,0,0,0,235,236,1,0,0,0,236,238,3,12,6,0,237,234,1,0,0,0,238,241, - 1,0,0,0,239,237,1,0,0,0,239,240,1,0,0,0,240,9,1,0,0,0,241,239,1,0,0,0,242, - 243,7,0,0,0,243,11,1,0,0,0,244,246,3,10,5,0,245,244,1,0,0,0,245,246,1,0, - 0,0,246,247,1,0,0,0,247,253,5,130,0,0,248,250,3,10,5,0,249,248,1,0,0,0, - 249,250,1,0,0,0,250,251,1,0,0,0,251,253,5,103,0,0,252,245,1,0,0,0,252,249, - 1,0,0,0,253,13,1,0,0,0,254,257,3,194,97,0,255,256,5,12,0,0,256,258,3,194, - 97,0,257,255,1,0,0,0,257,258,1,0,0,0,258,15,1,0,0,0,259,260,5,13,0,0,260, - 263,3,18,9,0,261,262,5,12,0,0,262,264,3,194,97,0,263,261,1,0,0,0,263,264, - 1,0,0,0,264,265,1,0,0,0,265,266,5,2,0,0,266,296,1,0,0,0,267,270,5,13,0, - 0,268,271,5,3,0,0,269,271,3,194,97,0,270,268,1,0,0,0,270,269,1,0,0,0,271, - 274,1,0,0,0,272,273,5,12,0,0,273,275,3,194,97,0,274,272,1,0,0,0,274,275, - 1,0,0,0,275,276,1,0,0,0,276,277,5,14,0,0,277,278,3,18,9,0,278,279,5,2,0, - 0,279,296,1,0,0,0,280,281,5,13,0,0,281,282,5,15,0,0,282,287,3,14,7,0,283, - 284,5,16,0,0,284,286,3,14,7,0,285,283,1,0,0,0,286,289,1,0,0,0,287,285,1, - 0,0,0,287,288,1,0,0,0,288,290,1,0,0,0,289,287,1,0,0,0,290,291,5,17,0,0, - 291,292,5,14,0,0,292,293,3,18,9,0,293,294,5,2,0,0,294,296,1,0,0,0,295,259, - 1,0,0,0,295,267,1,0,0,0,295,280,1,0,0,0,296,17,1,0,0,0,297,298,5,129,0, - 0,298,19,1,0,0,0,299,301,5,18,0,0,300,299,1,0,0,0,300,301,1,0,0,0,301,302, - 1,0,0,0,302,303,7,1,0,0,303,313,3,194,97,0,304,305,5,22,0,0,305,310,3,22, - 11,0,306,307,5,16,0,0,307,309,3,22,11,0,308,306,1,0,0,0,309,312,1,0,0,0, - 310,308,1,0,0,0,310,311,1,0,0,0,311,314,1,0,0,0,312,310,1,0,0,0,313,304, - 1,0,0,0,313,314,1,0,0,0,314,315,1,0,0,0,315,319,5,15,0,0,316,318,3,24,12, - 0,317,316,1,0,0,0,318,321,1,0,0,0,319,317,1,0,0,0,319,320,1,0,0,0,320,322, - 1,0,0,0,321,319,1,0,0,0,322,323,5,17,0,0,323,21,1,0,0,0,324,330,3,78,39, - 0,325,327,5,23,0,0,326,328,3,144,72,0,327,326,1,0,0,0,327,328,1,0,0,0,328, - 329,1,0,0,0,329,331,5,24,0,0,330,325,1,0,0,0,330,331,1,0,0,0,331,23,1,0, - 0,0,332,342,3,26,13,0,333,342,3,34,17,0,334,342,3,42,21,0,335,342,3,44, - 22,0,336,342,3,48,24,0,337,342,3,56,28,0,338,342,3,60,30,0,339,342,3,30, - 15,0,340,342,3,32,16,0,341,332,1,0,0,0,341,333,1,0,0,0,341,334,1,0,0,0, - 341,335,1,0,0,0,341,336,1,0,0,0,341,337,1,0,0,0,341,338,1,0,0,0,341,339, - 1,0,0,0,341,340,1,0,0,0,342,25,1,0,0,0,343,352,3,76,38,0,344,351,5,119, - 0,0,345,351,5,116,0,0,346,351,5,118,0,0,347,351,5,110,0,0,348,351,5,111, - 0,0,349,351,3,198,99,0,350,344,1,0,0,0,350,345,1,0,0,0,350,346,1,0,0,0, - 350,347,1,0,0,0,350,348,1,0,0,0,350,349,1,0,0,0,351,354,1,0,0,0,352,350, - 1,0,0,0,352,353,1,0,0,0,353,355,1,0,0,0,354,352,1,0,0,0,355,358,3,194,97, - 0,356,357,5,11,0,0,357,359,3,140,70,0,358,356,1,0,0,0,358,359,1,0,0,0,359, - 360,1,0,0,0,360,361,5,2,0,0,361,27,1,0,0,0,362,363,3,76,38,0,363,364,5, - 110,0,0,364,365,3,194,97,0,365,366,5,11,0,0,366,367,3,140,70,0,367,368, - 5,2,0,0,368,29,1,0,0,0,369,370,5,25,0,0,370,371,3,194,97,0,371,372,3,62, - 31,0,372,373,5,2,0,0,373,31,1,0,0,0,374,375,5,122,0,0,375,376,3,194,97, - 0,376,377,5,22,0,0,377,378,3,138,69,0,378,379,5,2,0,0,379,33,1,0,0,0,380, - 381,5,26,0,0,381,382,3,36,18,0,382,385,5,27,0,0,383,386,5,3,0,0,384,386, - 3,76,38,0,385,383,1,0,0,0,385,384,1,0,0,0,386,388,1,0,0,0,387,389,5,124, - 0,0,388,387,1,0,0,0,388,389,1,0,0,0,389,390,1,0,0,0,390,391,5,2,0,0,391, - 35,1,0,0,0,392,405,3,78,39,0,393,394,5,15,0,0,394,399,3,38,19,0,395,396, - 5,16,0,0,396,398,3,38,19,0,397,395,1,0,0,0,398,401,1,0,0,0,399,397,1,0, - 0,0,399,400,1,0,0,0,400,402,1,0,0,0,401,399,1,0,0,0,402,403,5,17,0,0,403, - 405,1,0,0,0,404,392,1,0,0,0,404,393,1,0,0,0,405,37,1,0,0,0,406,409,3,78, - 39,0,407,408,5,12,0,0,408,410,3,40,20,0,409,407,1,0,0,0,409,410,1,0,0,0, - 410,39,1,0,0,0,411,412,7,2,0,0,412,41,1,0,0,0,413,414,5,36,0,0,414,415, - 3,194,97,0,415,426,5,15,0,0,416,417,3,74,37,0,417,423,5,2,0,0,418,419,3, - 74,37,0,419,420,5,2,0,0,420,422,1,0,0,0,421,418,1,0,0,0,422,425,1,0,0,0, - 423,421,1,0,0,0,423,424,1,0,0,0,424,427,1,0,0,0,425,423,1,0,0,0,426,416, - 1,0,0,0,426,427,1,0,0,0,427,428,1,0,0,0,428,429,5,17,0,0,429,43,1,0,0,0, - 430,431,5,37,0,0,431,433,3,194,97,0,432,434,3,62,31,0,433,432,1,0,0,0,433, - 434,1,0,0,0,434,439,1,0,0,0,435,438,5,120,0,0,436,438,3,198,99,0,437,435, - 1,0,0,0,437,436,1,0,0,0,438,441,1,0,0,0,439,437,1,0,0,0,439,440,1,0,0,0, - 440,444,1,0,0,0,441,439,1,0,0,0,442,445,5,2,0,0,443,445,3,94,47,0,444,442, - 1,0,0,0,444,443,1,0,0,0,445,45,1,0,0,0,446,452,3,194,97,0,447,449,5,23, - 0,0,448,450,3,144,72,0,449,448,1,0,0,0,449,450,1,0,0,0,450,451,1,0,0,0, - 451,453,5,24,0,0,452,447,1,0,0,0,452,453,1,0,0,0,453,47,1,0,0,0,454,455, - 3,50,25,0,455,456,3,62,31,0,456,458,3,54,27,0,457,459,3,52,26,0,458,457, - 1,0,0,0,458,459,1,0,0,0,459,462,1,0,0,0,460,463,5,2,0,0,461,463,3,94,47, - 0,462,460,1,0,0,0,462,461,1,0,0,0,463,49,1,0,0,0,464,466,5,38,0,0,465,467, - 3,194,97,0,466,465,1,0,0,0,466,467,1,0,0,0,467,472,1,0,0,0,468,472,5,125, - 0,0,469,472,5,126,0,0,470,472,5,127,0,0,471,464,1,0,0,0,471,468,1,0,0,0, - 471,469,1,0,0,0,471,470,1,0,0,0,472,51,1,0,0,0,473,474,5,39,0,0,474,475, - 3,62,31,0,475,53,1,0,0,0,476,485,5,114,0,0,477,485,5,119,0,0,478,485,5, - 116,0,0,479,485,5,118,0,0,480,485,5,120,0,0,481,485,3,92,46,0,482,485,3, - 46,23,0,483,485,3,198,99,0,484,476,1,0,0,0,484,477,1,0,0,0,484,478,1,0, - 0,0,484,479,1,0,0,0,484,480,1,0,0,0,484,481,1,0,0,0,484,482,1,0,0,0,484, - 483,1,0,0,0,485,488,1,0,0,0,486,484,1,0,0,0,486,487,1,0,0,0,487,55,1,0, - 0,0,488,486,1,0,0,0,489,490,5,40,0,0,490,491,3,194,97,0,491,493,3,66,33, - 0,492,494,5,108,0,0,493,492,1,0,0,0,493,494,1,0,0,0,494,495,1,0,0,0,495, - 496,5,2,0,0,496,57,1,0,0,0,497,498,3,194,97,0,498,59,1,0,0,0,499,500,5, - 41,0,0,500,501,3,194,97,0,501,503,5,15,0,0,502,504,3,58,29,0,503,502,1, - 0,0,0,503,504,1,0,0,0,504,509,1,0,0,0,505,506,5,16,0,0,506,508,3,58,29, - 0,507,505,1,0,0,0,508,511,1,0,0,0,509,507,1,0,0,0,509,510,1,0,0,0,510,512, - 1,0,0,0,511,509,1,0,0,0,512,513,5,17,0,0,513,61,1,0,0,0,514,523,5,23,0, - 0,515,520,3,64,32,0,516,517,5,16,0,0,517,519,3,64,32,0,518,516,1,0,0,0, - 519,522,1,0,0,0,520,518,1,0,0,0,520,521,1,0,0,0,521,524,1,0,0,0,522,520, - 1,0,0,0,523,515,1,0,0,0,523,524,1,0,0,0,524,525,1,0,0,0,525,526,5,24,0, - 0,526,63,1,0,0,0,527,529,3,76,38,0,528,530,3,90,45,0,529,528,1,0,0,0,529, - 530,1,0,0,0,530,532,1,0,0,0,531,533,3,194,97,0,532,531,1,0,0,0,532,533, - 1,0,0,0,533,65,1,0,0,0,534,543,5,23,0,0,535,540,3,68,34,0,536,537,5,16, - 0,0,537,539,3,68,34,0,538,536,1,0,0,0,539,542,1,0,0,0,540,538,1,0,0,0,540, - 541,1,0,0,0,541,544,1,0,0,0,542,540,1,0,0,0,543,535,1,0,0,0,543,544,1,0, - 0,0,544,545,1,0,0,0,545,546,5,24,0,0,546,67,1,0,0,0,547,549,3,76,38,0,548, - 550,5,115,0,0,549,548,1,0,0,0,549,550,1,0,0,0,550,552,1,0,0,0,551,553,3, - 194,97,0,552,551,1,0,0,0,552,553,1,0,0,0,553,69,1,0,0,0,554,563,5,23,0, - 0,555,560,3,72,36,0,556,557,5,16,0,0,557,559,3,72,36,0,558,556,1,0,0,0, - 559,562,1,0,0,0,560,558,1,0,0,0,560,561,1,0,0,0,561,564,1,0,0,0,562,560, - 1,0,0,0,563,555,1,0,0,0,563,564,1,0,0,0,564,565,1,0,0,0,565,566,5,24,0, - 0,566,71,1,0,0,0,567,569,3,76,38,0,568,570,3,90,45,0,569,568,1,0,0,0,569, - 570,1,0,0,0,570,73,1,0,0,0,571,573,3,76,38,0,572,574,3,90,45,0,573,572, - 1,0,0,0,573,574,1,0,0,0,574,575,1,0,0,0,575,576,3,194,97,0,576,75,1,0,0, - 0,577,578,6,38,-1,0,578,585,3,138,69,0,579,585,3,78,39,0,580,585,3,82,41, - 0,581,585,3,88,44,0,582,583,5,44,0,0,583,585,5,117,0,0,584,577,1,0,0,0, - 584,579,1,0,0,0,584,580,1,0,0,0,584,581,1,0,0,0,584,582,1,0,0,0,585,594, - 1,0,0,0,586,587,10,3,0,0,587,589,5,42,0,0,588,590,3,140,70,0,589,588,1, - 0,0,0,589,590,1,0,0,0,590,591,1,0,0,0,591,593,5,43,0,0,592,586,1,0,0,0, - 593,596,1,0,0,0,594,592,1,0,0,0,594,595,1,0,0,0,595,77,1,0,0,0,596,594, - 1,0,0,0,597,602,3,194,97,0,598,599,5,45,0,0,599,601,3,194,97,0,600,598, - 1,0,0,0,601,604,1,0,0,0,602,600,1,0,0,0,602,603,1,0,0,0,603,79,1,0,0,0, - 604,602,1,0,0,0,605,608,3,138,69,0,606,608,3,78,39,0,607,605,1,0,0,0,607, - 606,1,0,0,0,608,81,1,0,0,0,609,610,5,46,0,0,610,611,5,23,0,0,611,613,3, - 80,40,0,612,614,3,84,42,0,613,612,1,0,0,0,613,614,1,0,0,0,614,615,1,0,0, - 0,615,616,5,47,0,0,616,618,3,76,38,0,617,619,3,86,43,0,618,617,1,0,0,0, - 618,619,1,0,0,0,619,620,1,0,0,0,620,621,5,24,0,0,621,83,1,0,0,0,622,623, - 3,194,97,0,623,85,1,0,0,0,624,625,3,194,97,0,625,87,1,0,0,0,626,627,5,38, - 0,0,627,633,3,70,35,0,628,632,5,116,0,0,629,632,5,114,0,0,630,632,3,92, - 46,0,631,628,1,0,0,0,631,629,1,0,0,0,631,630,1,0,0,0,632,635,1,0,0,0,633, - 631,1,0,0,0,633,634,1,0,0,0,634,638,1,0,0,0,635,633,1,0,0,0,636,637,5,39, - 0,0,637,639,3,70,35,0,638,636,1,0,0,0,638,639,1,0,0,0,639,89,1,0,0,0,640, - 641,7,3,0,0,641,91,1,0,0,0,642,643,7,4,0,0,643,93,1,0,0,0,644,648,5,15, - 0,0,645,647,3,96,48,0,646,645,1,0,0,0,647,650,1,0,0,0,648,646,1,0,0,0,648, - 649,1,0,0,0,649,651,1,0,0,0,650,648,1,0,0,0,651,652,5,17,0,0,652,95,1,0, - 0,0,653,669,3,100,50,0,654,669,3,102,51,0,655,669,3,106,53,0,656,669,3, - 112,56,0,657,669,3,94,47,0,658,669,3,114,57,0,659,669,3,118,59,0,660,669, - 3,120,60,0,661,669,3,122,61,0,662,669,3,124,62,0,663,669,3,126,63,0,664, - 669,3,128,64,0,665,669,3,108,54,0,666,669,3,110,55,0,667,669,3,130,65,0, - 668,653,1,0,0,0,668,654,1,0,0,0,668,655,1,0,0,0,668,656,1,0,0,0,668,657, - 1,0,0,0,668,658,1,0,0,0,668,659,1,0,0,0,668,660,1,0,0,0,668,661,1,0,0,0, - 668,662,1,0,0,0,668,663,1,0,0,0,668,664,1,0,0,0,668,665,1,0,0,0,668,666, - 1,0,0,0,668,667,1,0,0,0,669,97,1,0,0,0,670,671,3,140,70,0,671,672,5,2,0, - 0,672,99,1,0,0,0,673,674,5,51,0,0,674,675,5,23,0,0,675,676,3,140,70,0,676, - 677,5,24,0,0,677,680,3,96,48,0,678,679,5,52,0,0,679,681,3,96,48,0,680,678, - 1,0,0,0,680,681,1,0,0,0,681,101,1,0,0,0,682,683,5,53,0,0,683,685,3,140, - 70,0,684,686,3,52,26,0,685,684,1,0,0,0,685,686,1,0,0,0,686,687,1,0,0,0, - 687,689,3,94,47,0,688,690,3,104,52,0,689,688,1,0,0,0,690,691,1,0,0,0,691, - 689,1,0,0,0,691,692,1,0,0,0,692,103,1,0,0,0,693,698,5,54,0,0,694,696,3, - 194,97,0,695,694,1,0,0,0,695,696,1,0,0,0,696,697,1,0,0,0,697,699,3,62,31, - 0,698,695,1,0,0,0,698,699,1,0,0,0,699,700,1,0,0,0,700,701,3,94,47,0,701, - 105,1,0,0,0,702,703,5,55,0,0,703,704,5,23,0,0,704,705,3,140,70,0,705,706, - 5,24,0,0,706,707,3,96,48,0,707,107,1,0,0,0,708,711,3,132,66,0,709,711,3, - 98,49,0,710,708,1,0,0,0,710,709,1,0,0,0,711,109,1,0,0,0,712,713,5,56,0, - 0,713,714,3,94,47,0,714,111,1,0,0,0,715,716,5,27,0,0,716,719,5,23,0,0,717, - 720,3,108,54,0,718,720,5,2,0,0,719,717,1,0,0,0,719,718,1,0,0,0,720,723, - 1,0,0,0,721,724,3,98,49,0,722,724,5,2,0,0,723,721,1,0,0,0,723,722,1,0,0, - 0,724,726,1,0,0,0,725,727,3,140,70,0,726,725,1,0,0,0,726,727,1,0,0,0,727, - 728,1,0,0,0,728,729,5,24,0,0,729,730,3,96,48,0,730,113,1,0,0,0,731,733, - 5,57,0,0,732,734,5,129,0,0,733,732,1,0,0,0,733,734,1,0,0,0,734,739,1,0, - 0,0,735,736,5,23,0,0,736,737,3,116,58,0,737,738,5,24,0,0,738,740,1,0,0, - 0,739,735,1,0,0,0,739,740,1,0,0,0,740,741,1,0,0,0,741,742,3,154,77,0,742, - 115,1,0,0,0,743,744,3,200,100,0,744,117,1,0,0,0,745,746,5,58,0,0,746,747, - 3,96,48,0,747,748,5,55,0,0,748,749,5,23,0,0,749,750,3,140,70,0,750,751, - 5,24,0,0,751,752,5,2,0,0,752,119,1,0,0,0,753,754,5,112,0,0,754,755,5,2, - 0,0,755,121,1,0,0,0,756,757,5,109,0,0,757,758,5,2,0,0,758,123,1,0,0,0,759, - 761,5,59,0,0,760,762,3,140,70,0,761,760,1,0,0,0,761,762,1,0,0,0,762,763, - 1,0,0,0,763,764,5,2,0,0,764,125,1,0,0,0,765,766,5,60,0,0,766,767,5,2,0, - 0,767,127,1,0,0,0,768,769,5,61,0,0,769,770,3,152,76,0,770,771,5,2,0,0,771, - 129,1,0,0,0,772,773,5,62,0,0,773,774,3,152,76,0,774,775,5,2,0,0,775,131, - 1,0,0,0,776,777,5,63,0,0,777,784,3,136,68,0,778,784,3,74,37,0,779,780,5, - 23,0,0,780,781,3,134,67,0,781,782,5,24,0,0,782,784,1,0,0,0,783,776,1,0, - 0,0,783,778,1,0,0,0,783,779,1,0,0,0,784,787,1,0,0,0,785,786,5,11,0,0,786, - 788,3,140,70,0,787,785,1,0,0,0,787,788,1,0,0,0,788,789,1,0,0,0,789,790, - 5,2,0,0,790,133,1,0,0,0,791,793,3,74,37,0,792,791,1,0,0,0,792,793,1,0,0, - 0,793,800,1,0,0,0,794,796,5,16,0,0,795,797,3,74,37,0,796,795,1,0,0,0,796, - 797,1,0,0,0,797,799,1,0,0,0,798,794,1,0,0,0,799,802,1,0,0,0,800,798,1,0, - 0,0,800,801,1,0,0,0,801,135,1,0,0,0,802,800,1,0,0,0,803,810,5,23,0,0,804, - 806,3,194,97,0,805,804,1,0,0,0,805,806,1,0,0,0,806,807,1,0,0,0,807,809, - 5,16,0,0,808,805,1,0,0,0,809,812,1,0,0,0,810,808,1,0,0,0,810,811,1,0,0, - 0,811,814,1,0,0,0,812,810,1,0,0,0,813,815,3,194,97,0,814,813,1,0,0,0,814, - 815,1,0,0,0,815,816,1,0,0,0,816,817,5,24,0,0,817,137,1,0,0,0,818,819,7, - 5,0,0,819,139,1,0,0,0,820,821,6,70,-1,0,821,822,5,69,0,0,822,839,3,76,38, - 0,823,824,5,23,0,0,824,825,3,140,70,0,825,826,5,24,0,0,826,839,1,0,0,0, - 827,828,7,6,0,0,828,839,3,140,70,19,829,830,7,7,0,0,830,839,3,140,70,18, - 831,832,5,71,0,0,832,839,3,140,70,17,833,834,5,72,0,0,834,839,3,140,70, - 16,835,836,5,6,0,0,836,839,3,140,70,15,837,839,3,142,71,0,838,820,1,0,0, - 0,838,823,1,0,0,0,838,827,1,0,0,0,838,829,1,0,0,0,838,831,1,0,0,0,838,833, - 1,0,0,0,838,835,1,0,0,0,838,837,1,0,0,0,839,914,1,0,0,0,840,841,10,14,0, - 0,841,842,5,73,0,0,842,913,3,140,70,14,843,844,10,13,0,0,844,845,7,8,0, - 0,845,913,3,140,70,14,846,847,10,12,0,0,847,848,7,7,0,0,848,913,3,140,70, - 13,849,850,10,11,0,0,850,851,7,9,0,0,851,913,3,140,70,12,852,853,10,10, - 0,0,853,854,5,29,0,0,854,913,3,140,70,11,855,856,10,9,0,0,856,857,5,5,0, - 0,857,913,3,140,70,10,858,859,10,8,0,0,859,860,5,28,0,0,860,913,3,140,70, - 9,861,862,10,7,0,0,862,863,7,10,0,0,863,913,3,140,70,8,864,865,10,6,0,0, - 865,866,7,11,0,0,866,913,3,140,70,7,867,868,10,5,0,0,868,869,5,76,0,0,869, - 913,3,140,70,6,870,871,10,4,0,0,871,872,5,4,0,0,872,913,3,140,70,5,873, - 874,10,3,0,0,874,875,5,77,0,0,875,876,3,140,70,0,876,877,5,70,0,0,877,878, - 3,140,70,3,878,913,1,0,0,0,879,880,10,2,0,0,880,881,7,12,0,0,881,913,3, - 140,70,3,882,883,10,27,0,0,883,913,7,6,0,0,884,885,10,25,0,0,885,886,5, - 42,0,0,886,887,3,140,70,0,887,888,5,43,0,0,888,913,1,0,0,0,889,890,10,24, - 0,0,890,892,5,42,0,0,891,893,3,140,70,0,892,891,1,0,0,0,892,893,1,0,0,0, - 893,894,1,0,0,0,894,896,5,70,0,0,895,897,3,140,70,0,896,895,1,0,0,0,896, - 897,1,0,0,0,897,898,1,0,0,0,898,913,5,43,0,0,899,900,10,23,0,0,900,901, - 5,45,0,0,901,913,3,194,97,0,902,903,10,22,0,0,903,904,5,15,0,0,904,905, - 3,146,73,0,905,906,5,17,0,0,906,913,1,0,0,0,907,908,10,21,0,0,908,909,5, - 23,0,0,909,910,3,150,75,0,910,911,5,24,0,0,911,913,1,0,0,0,912,840,1,0, - 0,0,912,843,1,0,0,0,912,846,1,0,0,0,912,849,1,0,0,0,912,852,1,0,0,0,912, - 855,1,0,0,0,912,858,1,0,0,0,912,861,1,0,0,0,912,864,1,0,0,0,912,867,1,0, - 0,0,912,870,1,0,0,0,912,873,1,0,0,0,912,879,1,0,0,0,912,882,1,0,0,0,912, - 884,1,0,0,0,912,889,1,0,0,0,912,899,1,0,0,0,912,902,1,0,0,0,912,907,1,0, - 0,0,913,916,1,0,0,0,914,912,1,0,0,0,914,915,1,0,0,0,915,141,1,0,0,0,916, - 914,1,0,0,0,917,927,5,102,0,0,918,927,3,192,96,0,919,927,3,196,98,0,920, - 927,3,200,100,0,921,927,3,194,97,0,922,927,5,122,0,0,923,927,5,117,0,0, - 924,927,3,190,95,0,925,927,3,76,38,0,926,917,1,0,0,0,926,918,1,0,0,0,926, - 919,1,0,0,0,926,920,1,0,0,0,926,921,1,0,0,0,926,922,1,0,0,0,926,923,1,0, - 0,0,926,924,1,0,0,0,926,925,1,0,0,0,927,143,1,0,0,0,928,933,3,140,70,0, - 929,930,5,16,0,0,930,932,3,140,70,0,931,929,1,0,0,0,932,935,1,0,0,0,933, - 931,1,0,0,0,933,934,1,0,0,0,934,145,1,0,0,0,935,933,1,0,0,0,936,941,3,148, - 74,0,937,938,5,16,0,0,938,940,3,148,74,0,939,937,1,0,0,0,940,943,1,0,0, - 0,941,939,1,0,0,0,941,942,1,0,0,0,942,945,1,0,0,0,943,941,1,0,0,0,944,946, - 5,16,0,0,945,944,1,0,0,0,945,946,1,0,0,0,946,147,1,0,0,0,947,948,3,194, - 97,0,948,949,5,70,0,0,949,950,3,140,70,0,950,149,1,0,0,0,951,953,5,15,0, - 0,952,954,3,146,73,0,953,952,1,0,0,0,953,954,1,0,0,0,954,955,1,0,0,0,955, - 960,5,17,0,0,956,958,3,144,72,0,957,956,1,0,0,0,957,958,1,0,0,0,958,960, - 1,0,0,0,959,951,1,0,0,0,959,957,1,0,0,0,960,151,1,0,0,0,961,962,3,140,70, - 0,962,963,5,23,0,0,963,964,3,150,75,0,964,965,5,24,0,0,965,153,1,0,0,0, - 966,970,5,15,0,0,967,969,3,156,78,0,968,967,1,0,0,0,969,972,1,0,0,0,970, - 968,1,0,0,0,970,971,1,0,0,0,971,973,1,0,0,0,972,970,1,0,0,0,973,974,5,17, - 0,0,974,155,1,0,0,0,975,993,3,194,97,0,976,993,3,154,77,0,977,993,3,158, - 79,0,978,993,3,164,82,0,979,993,3,166,83,0,980,993,3,172,86,0,981,993,3, - 174,87,0,982,993,3,176,88,0,983,993,3,180,90,0,984,993,3,184,92,0,985,993, - 3,186,93,0,986,993,5,109,0,0,987,993,5,112,0,0,988,993,5,113,0,0,989,993, - 3,192,96,0,990,993,3,200,100,0,991,993,3,196,98,0,992,975,1,0,0,0,992,976, - 1,0,0,0,992,977,1,0,0,0,992,978,1,0,0,0,992,979,1,0,0,0,992,980,1,0,0,0, - 992,981,1,0,0,0,992,982,1,0,0,0,992,983,1,0,0,0,992,984,1,0,0,0,992,985, - 1,0,0,0,992,986,1,0,0,0,992,987,1,0,0,0,992,988,1,0,0,0,992,989,1,0,0,0, - 992,990,1,0,0,0,992,991,1,0,0,0,993,157,1,0,0,0,994,998,3,162,81,0,995, - 998,3,188,94,0,996,998,3,160,80,0,997,994,1,0,0,0,997,995,1,0,0,0,997,996, - 1,0,0,0,998,159,1,0,0,0,999,1000,3,194,97,0,1000,1001,5,45,0,0,1001,1002, - 3,194,97,0,1002,161,1,0,0,0,1003,1008,5,59,0,0,1004,1008,5,44,0,0,1005, - 1008,5,66,0,0,1006,1008,3,194,97,0,1007,1003,1,0,0,0,1007,1004,1,0,0,0, - 1007,1005,1,0,0,0,1007,1006,1,0,0,0,1008,1021,1,0,0,0,1009,1011,5,23,0, - 0,1010,1012,3,158,79,0,1011,1010,1,0,0,0,1011,1012,1,0,0,0,1012,1017,1, - 0,0,0,1013,1014,5,16,0,0,1014,1016,3,158,79,0,1015,1013,1,0,0,0,1016,1019, - 1,0,0,0,1017,1015,1,0,0,0,1017,1018,1,0,0,0,1018,1020,1,0,0,0,1019,1017, - 1,0,0,0,1020,1022,5,24,0,0,1021,1009,1,0,0,0,1021,1022,1,0,0,0,1022,163, - 1,0,0,0,1023,1024,5,88,0,0,1024,1027,3,168,84,0,1025,1026,5,89,0,0,1026, - 1028,3,158,79,0,1027,1025,1,0,0,0,1027,1028,1,0,0,0,1028,165,1,0,0,0,1029, - 1030,3,168,84,0,1030,1031,5,89,0,0,1031,1032,3,158,79,0,1032,167,1,0,0, - 0,1033,1041,3,194,97,0,1034,1041,3,160,80,0,1035,1041,3,170,85,0,1036,1037, - 5,23,0,0,1037,1038,3,170,85,0,1038,1039,5,24,0,0,1039,1041,1,0,0,0,1040, - 1033,1,0,0,0,1040,1034,1,0,0,0,1040,1035,1,0,0,0,1040,1036,1,0,0,0,1041, - 169,1,0,0,0,1042,1047,3,194,97,0,1043,1044,5,16,0,0,1044,1046,3,194,97, - 0,1045,1043,1,0,0,0,1046,1049,1,0,0,0,1047,1045,1,0,0,0,1047,1048,1,0,0, - 0,1048,171,1,0,0,0,1049,1047,1,0,0,0,1050,1051,3,158,79,0,1051,1052,5,90, - 0,0,1052,1053,3,194,97,0,1053,173,1,0,0,0,1054,1055,3,194,97,0,1055,1056, - 5,70,0,0,1056,175,1,0,0,0,1057,1058,5,91,0,0,1058,1062,3,158,79,0,1059, - 1061,3,178,89,0,1060,1059,1,0,0,0,1061,1064,1,0,0,0,1062,1060,1,0,0,0,1062, - 1063,1,0,0,0,1063,177,1,0,0,0,1064,1062,1,0,0,0,1065,1066,5,92,0,0,1066, - 1067,3,188,94,0,1067,1068,3,154,77,0,1068,1072,1,0,0,0,1069,1070,5,93,0, - 0,1070,1072,3,154,77,0,1071,1065,1,0,0,0,1071,1069,1,0,0,0,1072,179,1,0, - 0,0,1073,1074,5,38,0,0,1074,1075,3,194,97,0,1075,1077,5,23,0,0,1076,1078, - 3,170,85,0,1077,1076,1,0,0,0,1077,1078,1,0,0,0,1078,1079,1,0,0,0,1079,1081, - 5,24,0,0,1080,1082,3,182,91,0,1081,1080,1,0,0,0,1081,1082,1,0,0,0,1082, - 1083,1,0,0,0,1083,1084,3,154,77,0,1084,181,1,0,0,0,1085,1086,5,94,0,0,1086, - 1087,3,170,85,0,1087,183,1,0,0,0,1088,1091,5,27,0,0,1089,1092,3,154,77, - 0,1090,1092,3,158,79,0,1091,1089,1,0,0,0,1091,1090,1,0,0,0,1092,1093,1, - 0,0,0,1093,1096,3,158,79,0,1094,1097,3,154,77,0,1095,1097,3,158,79,0,1096, - 1094,1,0,0,0,1096,1095,1,0,0,0,1097,1098,1,0,0,0,1098,1099,3,154,77,0,1099, - 185,1,0,0,0,1100,1101,5,51,0,0,1101,1102,3,158,79,0,1102,1103,3,154,77, - 0,1103,187,1,0,0,0,1104,1110,3,200,100,0,1105,1110,5,103,0,0,1106,1110, - 5,104,0,0,1107,1110,3,196,98,0,1108,1110,5,102,0,0,1109,1104,1,0,0,0,1109, - 1105,1,0,0,0,1109,1106,1,0,0,0,1109,1107,1,0,0,0,1109,1108,1,0,0,0,1110, - 189,1,0,0,0,1111,1113,5,23,0,0,1112,1114,3,140,70,0,1113,1112,1,0,0,0,1113, - 1114,1,0,0,0,1114,1121,1,0,0,0,1115,1117,5,16,0,0,1116,1118,3,140,70,0, - 1117,1116,1,0,0,0,1117,1118,1,0,0,0,1118,1120,1,0,0,0,1119,1115,1,0,0,0, - 1120,1123,1,0,0,0,1121,1119,1,0,0,0,1121,1122,1,0,0,0,1122,1124,1,0,0,0, - 1123,1121,1,0,0,0,1124,1138,5,24,0,0,1125,1134,5,42,0,0,1126,1131,3,140, - 70,0,1127,1128,5,16,0,0,1128,1130,3,140,70,0,1129,1127,1,0,0,0,1130,1133, - 1,0,0,0,1131,1129,1,0,0,0,1131,1132,1,0,0,0,1132,1135,1,0,0,0,1133,1131, - 1,0,0,0,1134,1126,1,0,0,0,1134,1135,1,0,0,0,1135,1136,1,0,0,0,1136,1138, - 5,43,0,0,1137,1111,1,0,0,0,1137,1125,1,0,0,0,1138,191,1,0,0,0,1139,1141, - 7,13,0,0,1140,1142,5,105,0,0,1141,1140,1,0,0,0,1141,1142,1,0,0,0,1142,193, - 1,0,0,0,1143,1144,7,14,0,0,1144,195,1,0,0,0,1145,1147,5,106,0,0,1146,1145, - 1,0,0,0,1147,1148,1,0,0,0,1148,1146,1,0,0,0,1148,1149,1,0,0,0,1149,197, - 1,0,0,0,1150,1162,5,96,0,0,1151,1152,5,23,0,0,1152,1157,3,78,39,0,1153, - 1154,5,16,0,0,1154,1156,3,78,39,0,1155,1153,1,0,0,0,1156,1159,1,0,0,0,1157, - 1155,1,0,0,0,1157,1158,1,0,0,0,1158,1160,1,0,0,0,1159,1157,1,0,0,0,1160, - 1161,5,24,0,0,1161,1163,1,0,0,0,1162,1151,1,0,0,0,1162,1163,1,0,0,0,1163, - 199,1,0,0,0,1164,1166,5,129,0,0,1165,1164,1,0,0,0,1166,1167,1,0,0,0,1167, - 1165,1,0,0,0,1167,1168,1,0,0,0,1168,201,1,0,0,0,130,213,215,230,234,239, - 245,249,252,257,263,270,274,287,295,300,310,313,319,327,330,341,350,352, - 358,385,388,399,404,409,423,426,433,437,439,444,449,452,458,462,466,471, - 484,486,493,503,509,520,523,529,532,540,543,549,552,560,563,569,573,584, - 589,594,602,607,613,618,631,633,638,648,668,680,685,691,695,698,710,719, - 723,726,733,739,761,783,787,792,796,800,805,810,814,838,892,896,912,914, - 926,933,941,945,953,957,959,970,992,997,1007,1011,1017,1021,1027,1040,1047, - 1062,1071,1077,1081,1091,1096,1109,1113,1117,1121,1131,1134,1137,1141,1148, - 1157,1162,1167]; + 70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70, + 1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,3,70,894,8,70,1, + 70,1,70,3,70,898,8,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70, + 1,70,1,70,1,70,1,70,5,70,914,8,70,10,70,12,70,917,9,70,1,71,1,71,1,71,1, + 71,1,71,1,71,1,71,1,71,1,71,3,71,928,8,71,1,72,1,72,1,72,5,72,933,8,72, + 10,72,12,72,936,9,72,1,73,1,73,1,73,5,73,941,8,73,10,73,12,73,944,9,73, + 1,73,3,73,947,8,73,1,74,1,74,1,74,1,74,1,75,1,75,3,75,955,8,75,1,75,1,75, + 3,75,959,8,75,3,75,961,8,75,1,76,1,76,1,76,1,76,1,76,1,77,1,77,5,77,970, + 8,77,10,77,12,77,973,9,77,1,77,1,77,1,78,1,78,1,78,1,78,1,78,1,78,1,78, + 1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,3,78,994,8,78,1,79,1, + 79,1,79,3,79,999,8,79,1,80,1,80,1,80,1,80,1,81,1,81,1,81,1,81,3,81,1009, + 8,81,1,81,1,81,3,81,1013,8,81,1,81,1,81,5,81,1017,8,81,10,81,12,81,1020, + 9,81,1,81,3,81,1023,8,81,1,82,1,82,1,82,1,82,3,82,1029,8,82,1,83,1,83,1, + 83,1,83,1,84,1,84,1,84,1,84,1,84,1,84,1,84,3,84,1042,8,84,1,85,1,85,1,85, + 5,85,1047,8,85,10,85,12,85,1050,9,85,1,86,1,86,1,86,1,86,1,87,1,87,1,87, + 1,88,1,88,1,88,5,88,1062,8,88,10,88,12,88,1065,9,88,1,89,1,89,1,89,1,89, + 1,89,1,89,3,89,1073,8,89,1,90,1,90,1,90,1,90,3,90,1079,8,90,1,90,1,90,3, + 90,1083,8,90,1,90,1,90,1,91,1,91,1,91,1,92,1,92,1,92,3,92,1093,8,92,1,92, + 1,92,1,92,3,92,1098,8,92,1,92,1,92,1,93,1,93,1,93,1,93,1,94,1,94,1,94,1, + 94,1,94,3,94,1111,8,94,1,95,1,95,3,95,1115,8,95,1,95,1,95,3,95,1119,8,95, + 5,95,1121,8,95,10,95,12,95,1124,9,95,1,95,1,95,1,95,1,95,1,95,5,95,1131, + 8,95,10,95,12,95,1134,9,95,3,95,1136,8,95,1,95,3,95,1139,8,95,1,96,1,96, + 3,96,1143,8,96,1,97,1,97,1,98,4,98,1148,8,98,11,98,12,98,1149,1,99,1,99, + 1,99,1,99,1,99,5,99,1157,8,99,10,99,12,99,1160,9,99,1,99,1,99,3,99,1164, + 8,99,1,100,4,100,1167,8,100,11,100,12,100,1168,1,100,0,2,76,140,101,0,2, + 4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52, + 54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100, + 102,104,106,108,110,112,114,116,118,120,122,124,126,128,130,132,134,136, + 138,140,142,144,146,148,150,152,154,156,158,160,162,164,166,168,170,172, + 174,176,178,180,182,184,186,188,190,192,194,196,198,200,0,15,1,0,5,11,1, + 0,19,21,3,0,3,3,5,10,28,35,1,0,48,50,4,0,110,110,118,118,122,122,124,124, + 3,0,44,44,63,66,97,101,1,0,67,68,1,0,30,31,2,0,3,3,32,33,1,0,74,75,1,0, + 7,10,1,0,34,35,2,0,11,11,78,87,1,0,103,104,10,0,14,14,25,25,44,44,50,50, + 62,62,95,95,114,114,118,118,125,126,128,129,1301,0,215,1,0,0,0,2,220,1, + 0,0,0,4,225,1,0,0,0,6,230,1,0,0,0,8,232,1,0,0,0,10,242,1,0,0,0,12,252,1, + 0,0,0,14,254,1,0,0,0,16,295,1,0,0,0,18,297,1,0,0,0,20,300,1,0,0,0,22,324, + 1,0,0,0,24,341,1,0,0,0,26,343,1,0,0,0,28,363,1,0,0,0,30,370,1,0,0,0,32, + 375,1,0,0,0,34,381,1,0,0,0,36,405,1,0,0,0,38,407,1,0,0,0,40,412,1,0,0,0, + 42,414,1,0,0,0,44,431,1,0,0,0,46,447,1,0,0,0,48,455,1,0,0,0,50,472,1,0, + 0,0,52,474,1,0,0,0,54,487,1,0,0,0,56,490,1,0,0,0,58,498,1,0,0,0,60,500, + 1,0,0,0,62,515,1,0,0,0,64,528,1,0,0,0,66,535,1,0,0,0,68,548,1,0,0,0,70, + 555,1,0,0,0,72,568,1,0,0,0,74,572,1,0,0,0,76,585,1,0,0,0,78,598,1,0,0,0, + 80,608,1,0,0,0,82,610,1,0,0,0,84,623,1,0,0,0,86,625,1,0,0,0,88,627,1,0, + 0,0,90,641,1,0,0,0,92,643,1,0,0,0,94,645,1,0,0,0,96,669,1,0,0,0,98,671, + 1,0,0,0,100,674,1,0,0,0,102,683,1,0,0,0,104,694,1,0,0,0,106,703,1,0,0,0, + 108,711,1,0,0,0,110,713,1,0,0,0,112,716,1,0,0,0,114,732,1,0,0,0,116,744, + 1,0,0,0,118,746,1,0,0,0,120,754,1,0,0,0,122,757,1,0,0,0,124,760,1,0,0,0, + 126,766,1,0,0,0,128,769,1,0,0,0,130,773,1,0,0,0,132,784,1,0,0,0,134,793, + 1,0,0,0,136,804,1,0,0,0,138,819,1,0,0,0,140,839,1,0,0,0,142,927,1,0,0,0, + 144,929,1,0,0,0,146,937,1,0,0,0,148,948,1,0,0,0,150,960,1,0,0,0,152,962, + 1,0,0,0,154,967,1,0,0,0,156,993,1,0,0,0,158,998,1,0,0,0,160,1000,1,0,0, + 0,162,1008,1,0,0,0,164,1024,1,0,0,0,166,1030,1,0,0,0,168,1041,1,0,0,0,170, + 1043,1,0,0,0,172,1051,1,0,0,0,174,1055,1,0,0,0,176,1058,1,0,0,0,178,1072, + 1,0,0,0,180,1074,1,0,0,0,182,1086,1,0,0,0,184,1089,1,0,0,0,186,1101,1,0, + 0,0,188,1110,1,0,0,0,190,1138,1,0,0,0,192,1140,1,0,0,0,194,1144,1,0,0,0, + 196,1147,1,0,0,0,198,1151,1,0,0,0,200,1166,1,0,0,0,202,214,3,2,1,0,203, + 214,3,16,8,0,204,214,3,20,10,0,205,214,3,60,30,0,206,214,3,56,28,0,207, + 214,3,42,21,0,208,214,3,48,24,0,209,214,3,28,14,0,210,214,3,30,15,0,211, + 214,3,32,16,0,212,214,3,34,17,0,213,202,1,0,0,0,213,203,1,0,0,0,213,204, + 1,0,0,0,213,205,1,0,0,0,213,206,1,0,0,0,213,207,1,0,0,0,213,208,1,0,0,0, + 213,209,1,0,0,0,213,210,1,0,0,0,213,211,1,0,0,0,213,212,1,0,0,0,214,217, + 1,0,0,0,215,213,1,0,0,0,215,216,1,0,0,0,216,218,1,0,0,0,217,215,1,0,0,0, + 218,219,5,0,0,1,219,1,1,0,0,0,220,221,5,1,0,0,221,222,3,4,2,0,222,223,3, + 6,3,0,223,224,5,2,0,0,224,3,1,0,0,0,225,226,3,194,97,0,226,5,1,0,0,0,227, + 231,5,3,0,0,228,231,3,8,4,0,229,231,3,140,70,0,230,227,1,0,0,0,230,228, + 1,0,0,0,230,229,1,0,0,0,231,7,1,0,0,0,232,239,3,12,6,0,233,235,5,4,0,0, + 234,233,1,0,0,0,234,235,1,0,0,0,235,236,1,0,0,0,236,238,3,12,6,0,237,234, + 1,0,0,0,238,241,1,0,0,0,239,237,1,0,0,0,239,240,1,0,0,0,240,9,1,0,0,0,241, + 239,1,0,0,0,242,243,7,0,0,0,243,11,1,0,0,0,244,246,3,10,5,0,245,244,1,0, + 0,0,245,246,1,0,0,0,246,247,1,0,0,0,247,253,5,131,0,0,248,250,3,10,5,0, + 249,248,1,0,0,0,249,250,1,0,0,0,250,251,1,0,0,0,251,253,5,103,0,0,252,245, + 1,0,0,0,252,249,1,0,0,0,253,13,1,0,0,0,254,257,3,194,97,0,255,256,5,12, + 0,0,256,258,3,194,97,0,257,255,1,0,0,0,257,258,1,0,0,0,258,15,1,0,0,0,259, + 260,5,13,0,0,260,263,3,18,9,0,261,262,5,12,0,0,262,264,3,194,97,0,263,261, + 1,0,0,0,263,264,1,0,0,0,264,265,1,0,0,0,265,266,5,2,0,0,266,296,1,0,0,0, + 267,270,5,13,0,0,268,271,5,3,0,0,269,271,3,194,97,0,270,268,1,0,0,0,270, + 269,1,0,0,0,271,274,1,0,0,0,272,273,5,12,0,0,273,275,3,194,97,0,274,272, + 1,0,0,0,274,275,1,0,0,0,275,276,1,0,0,0,276,277,5,14,0,0,277,278,3,18,9, + 0,278,279,5,2,0,0,279,296,1,0,0,0,280,281,5,13,0,0,281,282,5,15,0,0,282, + 287,3,14,7,0,283,284,5,16,0,0,284,286,3,14,7,0,285,283,1,0,0,0,286,289, + 1,0,0,0,287,285,1,0,0,0,287,288,1,0,0,0,288,290,1,0,0,0,289,287,1,0,0,0, + 290,291,5,17,0,0,291,292,5,14,0,0,292,293,3,18,9,0,293,294,5,2,0,0,294, + 296,1,0,0,0,295,259,1,0,0,0,295,267,1,0,0,0,295,280,1,0,0,0,296,17,1,0, + 0,0,297,298,5,130,0,0,298,19,1,0,0,0,299,301,5,18,0,0,300,299,1,0,0,0,300, + 301,1,0,0,0,301,302,1,0,0,0,302,303,7,1,0,0,303,313,3,194,97,0,304,305, + 5,22,0,0,305,310,3,22,11,0,306,307,5,16,0,0,307,309,3,22,11,0,308,306,1, + 0,0,0,309,312,1,0,0,0,310,308,1,0,0,0,310,311,1,0,0,0,311,314,1,0,0,0,312, + 310,1,0,0,0,313,304,1,0,0,0,313,314,1,0,0,0,314,315,1,0,0,0,315,319,5,15, + 0,0,316,318,3,24,12,0,317,316,1,0,0,0,318,321,1,0,0,0,319,317,1,0,0,0,319, + 320,1,0,0,0,320,322,1,0,0,0,321,319,1,0,0,0,322,323,5,17,0,0,323,21,1,0, + 0,0,324,330,3,78,39,0,325,327,5,23,0,0,326,328,3,144,72,0,327,326,1,0,0, + 0,327,328,1,0,0,0,328,329,1,0,0,0,329,331,5,24,0,0,330,325,1,0,0,0,330, + 331,1,0,0,0,331,23,1,0,0,0,332,342,3,26,13,0,333,342,3,34,17,0,334,342, + 3,42,21,0,335,342,3,44,22,0,336,342,3,48,24,0,337,342,3,56,28,0,338,342, + 3,60,30,0,339,342,3,30,15,0,340,342,3,32,16,0,341,332,1,0,0,0,341,333,1, + 0,0,0,341,334,1,0,0,0,341,335,1,0,0,0,341,336,1,0,0,0,341,337,1,0,0,0,341, + 338,1,0,0,0,341,339,1,0,0,0,341,340,1,0,0,0,342,25,1,0,0,0,343,353,3,76, + 38,0,344,352,5,120,0,0,345,352,5,117,0,0,346,352,5,119,0,0,347,352,5,110, + 0,0,348,352,5,111,0,0,349,352,5,112,0,0,350,352,3,198,99,0,351,344,1,0, + 0,0,351,345,1,0,0,0,351,346,1,0,0,0,351,347,1,0,0,0,351,348,1,0,0,0,351, + 349,1,0,0,0,351,350,1,0,0,0,352,355,1,0,0,0,353,351,1,0,0,0,353,354,1,0, + 0,0,354,356,1,0,0,0,355,353,1,0,0,0,356,359,3,194,97,0,357,358,5,11,0,0, + 358,360,3,140,70,0,359,357,1,0,0,0,359,360,1,0,0,0,360,361,1,0,0,0,361, + 362,5,2,0,0,362,27,1,0,0,0,363,364,3,76,38,0,364,365,5,110,0,0,365,366, + 3,194,97,0,366,367,5,11,0,0,367,368,3,140,70,0,368,369,5,2,0,0,369,29,1, + 0,0,0,370,371,5,25,0,0,371,372,3,194,97,0,372,373,3,62,31,0,373,374,5,2, + 0,0,374,31,1,0,0,0,375,376,5,123,0,0,376,377,3,194,97,0,377,378,5,22,0, + 0,378,379,3,138,69,0,379,380,5,2,0,0,380,33,1,0,0,0,381,382,5,26,0,0,382, + 383,3,36,18,0,383,386,5,27,0,0,384,387,5,3,0,0,385,387,3,76,38,0,386,384, + 1,0,0,0,386,385,1,0,0,0,387,389,1,0,0,0,388,390,5,125,0,0,389,388,1,0,0, + 0,389,390,1,0,0,0,390,391,1,0,0,0,391,392,5,2,0,0,392,35,1,0,0,0,393,406, + 3,78,39,0,394,395,5,15,0,0,395,400,3,38,19,0,396,397,5,16,0,0,397,399,3, + 38,19,0,398,396,1,0,0,0,399,402,1,0,0,0,400,398,1,0,0,0,400,401,1,0,0,0, + 401,403,1,0,0,0,402,400,1,0,0,0,403,404,5,17,0,0,404,406,1,0,0,0,405,393, + 1,0,0,0,405,394,1,0,0,0,406,37,1,0,0,0,407,410,3,78,39,0,408,409,5,12,0, + 0,409,411,3,40,20,0,410,408,1,0,0,0,410,411,1,0,0,0,411,39,1,0,0,0,412, + 413,7,2,0,0,413,41,1,0,0,0,414,415,5,36,0,0,415,416,3,194,97,0,416,427, + 5,15,0,0,417,418,3,74,37,0,418,424,5,2,0,0,419,420,3,74,37,0,420,421,5, + 2,0,0,421,423,1,0,0,0,422,419,1,0,0,0,423,426,1,0,0,0,424,422,1,0,0,0,424, + 425,1,0,0,0,425,428,1,0,0,0,426,424,1,0,0,0,427,417,1,0,0,0,427,428,1,0, + 0,0,428,429,1,0,0,0,429,430,5,17,0,0,430,43,1,0,0,0,431,432,5,37,0,0,432, + 434,3,194,97,0,433,435,3,62,31,0,434,433,1,0,0,0,434,435,1,0,0,0,435,440, + 1,0,0,0,436,439,5,121,0,0,437,439,3,198,99,0,438,436,1,0,0,0,438,437,1, + 0,0,0,439,442,1,0,0,0,440,438,1,0,0,0,440,441,1,0,0,0,441,445,1,0,0,0,442, + 440,1,0,0,0,443,446,5,2,0,0,444,446,3,94,47,0,445,443,1,0,0,0,445,444,1, + 0,0,0,446,45,1,0,0,0,447,453,3,194,97,0,448,450,5,23,0,0,449,451,3,144, + 72,0,450,449,1,0,0,0,450,451,1,0,0,0,451,452,1,0,0,0,452,454,5,24,0,0,453, + 448,1,0,0,0,453,454,1,0,0,0,454,47,1,0,0,0,455,456,3,50,25,0,456,457,3, + 62,31,0,457,459,3,54,27,0,458,460,3,52,26,0,459,458,1,0,0,0,459,460,1,0, + 0,0,460,463,1,0,0,0,461,464,5,2,0,0,462,464,3,94,47,0,463,461,1,0,0,0,463, + 462,1,0,0,0,464,49,1,0,0,0,465,467,5,38,0,0,466,468,3,194,97,0,467,466, + 1,0,0,0,467,468,1,0,0,0,468,473,1,0,0,0,469,473,5,126,0,0,470,473,5,127, + 0,0,471,473,5,128,0,0,472,465,1,0,0,0,472,469,1,0,0,0,472,470,1,0,0,0,472, + 471,1,0,0,0,473,51,1,0,0,0,474,475,5,39,0,0,475,476,3,62,31,0,476,53,1, + 0,0,0,477,486,5,115,0,0,478,486,5,120,0,0,479,486,5,117,0,0,480,486,5,119, + 0,0,481,486,5,121,0,0,482,486,3,92,46,0,483,486,3,46,23,0,484,486,3,198, + 99,0,485,477,1,0,0,0,485,478,1,0,0,0,485,479,1,0,0,0,485,480,1,0,0,0,485, + 481,1,0,0,0,485,482,1,0,0,0,485,483,1,0,0,0,485,484,1,0,0,0,486,489,1,0, + 0,0,487,485,1,0,0,0,487,488,1,0,0,0,488,55,1,0,0,0,489,487,1,0,0,0,490, + 491,5,40,0,0,491,492,3,194,97,0,492,494,3,66,33,0,493,495,5,108,0,0,494, + 493,1,0,0,0,494,495,1,0,0,0,495,496,1,0,0,0,496,497,5,2,0,0,497,57,1,0, + 0,0,498,499,3,194,97,0,499,59,1,0,0,0,500,501,5,41,0,0,501,502,3,194,97, + 0,502,504,5,15,0,0,503,505,3,58,29,0,504,503,1,0,0,0,504,505,1,0,0,0,505, + 510,1,0,0,0,506,507,5,16,0,0,507,509,3,58,29,0,508,506,1,0,0,0,509,512, + 1,0,0,0,510,508,1,0,0,0,510,511,1,0,0,0,511,513,1,0,0,0,512,510,1,0,0,0, + 513,514,5,17,0,0,514,61,1,0,0,0,515,524,5,23,0,0,516,521,3,64,32,0,517, + 518,5,16,0,0,518,520,3,64,32,0,519,517,1,0,0,0,520,523,1,0,0,0,521,519, + 1,0,0,0,521,522,1,0,0,0,522,525,1,0,0,0,523,521,1,0,0,0,524,516,1,0,0,0, + 524,525,1,0,0,0,525,526,1,0,0,0,526,527,5,24,0,0,527,63,1,0,0,0,528,530, + 3,76,38,0,529,531,3,90,45,0,530,529,1,0,0,0,530,531,1,0,0,0,531,533,1,0, + 0,0,532,534,3,194,97,0,533,532,1,0,0,0,533,534,1,0,0,0,534,65,1,0,0,0,535, + 544,5,23,0,0,536,541,3,68,34,0,537,538,5,16,0,0,538,540,3,68,34,0,539,537, + 1,0,0,0,540,543,1,0,0,0,541,539,1,0,0,0,541,542,1,0,0,0,542,545,1,0,0,0, + 543,541,1,0,0,0,544,536,1,0,0,0,544,545,1,0,0,0,545,546,1,0,0,0,546,547, + 5,24,0,0,547,67,1,0,0,0,548,550,3,76,38,0,549,551,5,116,0,0,550,549,1,0, + 0,0,550,551,1,0,0,0,551,553,1,0,0,0,552,554,3,194,97,0,553,552,1,0,0,0, + 553,554,1,0,0,0,554,69,1,0,0,0,555,564,5,23,0,0,556,561,3,72,36,0,557,558, + 5,16,0,0,558,560,3,72,36,0,559,557,1,0,0,0,560,563,1,0,0,0,561,559,1,0, + 0,0,561,562,1,0,0,0,562,565,1,0,0,0,563,561,1,0,0,0,564,556,1,0,0,0,564, + 565,1,0,0,0,565,566,1,0,0,0,566,567,5,24,0,0,567,71,1,0,0,0,568,570,3,76, + 38,0,569,571,3,90,45,0,570,569,1,0,0,0,570,571,1,0,0,0,571,73,1,0,0,0,572, + 574,3,76,38,0,573,575,3,90,45,0,574,573,1,0,0,0,574,575,1,0,0,0,575,576, + 1,0,0,0,576,577,3,194,97,0,577,75,1,0,0,0,578,579,6,38,-1,0,579,586,3,138, + 69,0,580,586,3,78,39,0,581,586,3,82,41,0,582,586,3,88,44,0,583,584,5,44, + 0,0,584,586,5,118,0,0,585,578,1,0,0,0,585,580,1,0,0,0,585,581,1,0,0,0,585, + 582,1,0,0,0,585,583,1,0,0,0,586,595,1,0,0,0,587,588,10,3,0,0,588,590,5, + 42,0,0,589,591,3,140,70,0,590,589,1,0,0,0,590,591,1,0,0,0,591,592,1,0,0, + 0,592,594,5,43,0,0,593,587,1,0,0,0,594,597,1,0,0,0,595,593,1,0,0,0,595, + 596,1,0,0,0,596,77,1,0,0,0,597,595,1,0,0,0,598,603,3,194,97,0,599,600,5, + 45,0,0,600,602,3,194,97,0,601,599,1,0,0,0,602,605,1,0,0,0,603,601,1,0,0, + 0,603,604,1,0,0,0,604,79,1,0,0,0,605,603,1,0,0,0,606,609,3,138,69,0,607, + 609,3,78,39,0,608,606,1,0,0,0,608,607,1,0,0,0,609,81,1,0,0,0,610,611,5, + 46,0,0,611,612,5,23,0,0,612,614,3,80,40,0,613,615,3,84,42,0,614,613,1,0, + 0,0,614,615,1,0,0,0,615,616,1,0,0,0,616,617,5,47,0,0,617,619,3,76,38,0, + 618,620,3,86,43,0,619,618,1,0,0,0,619,620,1,0,0,0,620,621,1,0,0,0,621,622, + 5,24,0,0,622,83,1,0,0,0,623,624,3,194,97,0,624,85,1,0,0,0,625,626,3,194, + 97,0,626,87,1,0,0,0,627,628,5,38,0,0,628,634,3,70,35,0,629,633,5,117,0, + 0,630,633,5,115,0,0,631,633,3,92,46,0,632,629,1,0,0,0,632,630,1,0,0,0,632, + 631,1,0,0,0,633,636,1,0,0,0,634,632,1,0,0,0,634,635,1,0,0,0,635,639,1,0, + 0,0,636,634,1,0,0,0,637,638,5,39,0,0,638,640,3,70,35,0,639,637,1,0,0,0, + 639,640,1,0,0,0,640,89,1,0,0,0,641,642,7,3,0,0,642,91,1,0,0,0,643,644,7, + 4,0,0,644,93,1,0,0,0,645,649,5,15,0,0,646,648,3,96,48,0,647,646,1,0,0,0, + 648,651,1,0,0,0,649,647,1,0,0,0,649,650,1,0,0,0,650,652,1,0,0,0,651,649, + 1,0,0,0,652,653,5,17,0,0,653,95,1,0,0,0,654,670,3,100,50,0,655,670,3,102, + 51,0,656,670,3,106,53,0,657,670,3,112,56,0,658,670,3,94,47,0,659,670,3, + 114,57,0,660,670,3,118,59,0,661,670,3,120,60,0,662,670,3,122,61,0,663,670, + 3,124,62,0,664,670,3,126,63,0,665,670,3,128,64,0,666,670,3,108,54,0,667, + 670,3,110,55,0,668,670,3,130,65,0,669,654,1,0,0,0,669,655,1,0,0,0,669,656, + 1,0,0,0,669,657,1,0,0,0,669,658,1,0,0,0,669,659,1,0,0,0,669,660,1,0,0,0, + 669,661,1,0,0,0,669,662,1,0,0,0,669,663,1,0,0,0,669,664,1,0,0,0,669,665, + 1,0,0,0,669,666,1,0,0,0,669,667,1,0,0,0,669,668,1,0,0,0,670,97,1,0,0,0, + 671,672,3,140,70,0,672,673,5,2,0,0,673,99,1,0,0,0,674,675,5,51,0,0,675, + 676,5,23,0,0,676,677,3,140,70,0,677,678,5,24,0,0,678,681,3,96,48,0,679, + 680,5,52,0,0,680,682,3,96,48,0,681,679,1,0,0,0,681,682,1,0,0,0,682,101, + 1,0,0,0,683,684,5,53,0,0,684,686,3,140,70,0,685,687,3,52,26,0,686,685,1, + 0,0,0,686,687,1,0,0,0,687,688,1,0,0,0,688,690,3,94,47,0,689,691,3,104,52, + 0,690,689,1,0,0,0,691,692,1,0,0,0,692,690,1,0,0,0,692,693,1,0,0,0,693,103, + 1,0,0,0,694,699,5,54,0,0,695,697,3,194,97,0,696,695,1,0,0,0,696,697,1,0, + 0,0,697,698,1,0,0,0,698,700,3,62,31,0,699,696,1,0,0,0,699,700,1,0,0,0,700, + 701,1,0,0,0,701,702,3,94,47,0,702,105,1,0,0,0,703,704,5,55,0,0,704,705, + 5,23,0,0,705,706,3,140,70,0,706,707,5,24,0,0,707,708,3,96,48,0,708,107, + 1,0,0,0,709,712,3,132,66,0,710,712,3,98,49,0,711,709,1,0,0,0,711,710,1, + 0,0,0,712,109,1,0,0,0,713,714,5,56,0,0,714,715,3,94,47,0,715,111,1,0,0, + 0,716,717,5,27,0,0,717,720,5,23,0,0,718,721,3,108,54,0,719,721,5,2,0,0, + 720,718,1,0,0,0,720,719,1,0,0,0,721,724,1,0,0,0,722,725,3,98,49,0,723,725, + 5,2,0,0,724,722,1,0,0,0,724,723,1,0,0,0,725,727,1,0,0,0,726,728,3,140,70, + 0,727,726,1,0,0,0,727,728,1,0,0,0,728,729,1,0,0,0,729,730,5,24,0,0,730, + 731,3,96,48,0,731,113,1,0,0,0,732,734,5,57,0,0,733,735,5,130,0,0,734,733, + 1,0,0,0,734,735,1,0,0,0,735,740,1,0,0,0,736,737,5,23,0,0,737,738,3,116, + 58,0,738,739,5,24,0,0,739,741,1,0,0,0,740,736,1,0,0,0,740,741,1,0,0,0,741, + 742,1,0,0,0,742,743,3,154,77,0,743,115,1,0,0,0,744,745,3,200,100,0,745, + 117,1,0,0,0,746,747,5,58,0,0,747,748,3,96,48,0,748,749,5,55,0,0,749,750, + 5,23,0,0,750,751,3,140,70,0,751,752,5,24,0,0,752,753,5,2,0,0,753,119,1, + 0,0,0,754,755,5,113,0,0,755,756,5,2,0,0,756,121,1,0,0,0,757,758,5,109,0, + 0,758,759,5,2,0,0,759,123,1,0,0,0,760,762,5,59,0,0,761,763,3,140,70,0,762, + 761,1,0,0,0,762,763,1,0,0,0,763,764,1,0,0,0,764,765,5,2,0,0,765,125,1,0, + 0,0,766,767,5,60,0,0,767,768,5,2,0,0,768,127,1,0,0,0,769,770,5,61,0,0,770, + 771,3,152,76,0,771,772,5,2,0,0,772,129,1,0,0,0,773,774,5,62,0,0,774,775, + 3,152,76,0,775,776,5,2,0,0,776,131,1,0,0,0,777,778,5,63,0,0,778,785,3,136, + 68,0,779,785,3,74,37,0,780,781,5,23,0,0,781,782,3,134,67,0,782,783,5,24, + 0,0,783,785,1,0,0,0,784,777,1,0,0,0,784,779,1,0,0,0,784,780,1,0,0,0,785, + 788,1,0,0,0,786,787,5,11,0,0,787,789,3,140,70,0,788,786,1,0,0,0,788,789, + 1,0,0,0,789,790,1,0,0,0,790,791,5,2,0,0,791,133,1,0,0,0,792,794,3,74,37, + 0,793,792,1,0,0,0,793,794,1,0,0,0,794,801,1,0,0,0,795,797,5,16,0,0,796, + 798,3,74,37,0,797,796,1,0,0,0,797,798,1,0,0,0,798,800,1,0,0,0,799,795,1, + 0,0,0,800,803,1,0,0,0,801,799,1,0,0,0,801,802,1,0,0,0,802,135,1,0,0,0,803, + 801,1,0,0,0,804,811,5,23,0,0,805,807,3,194,97,0,806,805,1,0,0,0,806,807, + 1,0,0,0,807,808,1,0,0,0,808,810,5,16,0,0,809,806,1,0,0,0,810,813,1,0,0, + 0,811,809,1,0,0,0,811,812,1,0,0,0,812,815,1,0,0,0,813,811,1,0,0,0,814,816, + 3,194,97,0,815,814,1,0,0,0,815,816,1,0,0,0,816,817,1,0,0,0,817,818,5,24, + 0,0,818,137,1,0,0,0,819,820,7,5,0,0,820,139,1,0,0,0,821,822,6,70,-1,0,822, + 823,5,69,0,0,823,840,3,76,38,0,824,825,5,23,0,0,825,826,3,140,70,0,826, + 827,5,24,0,0,827,840,1,0,0,0,828,829,7,6,0,0,829,840,3,140,70,19,830,831, + 7,7,0,0,831,840,3,140,70,18,832,833,5,71,0,0,833,840,3,140,70,17,834,835, + 5,72,0,0,835,840,3,140,70,16,836,837,5,6,0,0,837,840,3,140,70,15,838,840, + 3,142,71,0,839,821,1,0,0,0,839,824,1,0,0,0,839,828,1,0,0,0,839,830,1,0, + 0,0,839,832,1,0,0,0,839,834,1,0,0,0,839,836,1,0,0,0,839,838,1,0,0,0,840, + 915,1,0,0,0,841,842,10,14,0,0,842,843,5,73,0,0,843,914,3,140,70,14,844, + 845,10,13,0,0,845,846,7,8,0,0,846,914,3,140,70,14,847,848,10,12,0,0,848, + 849,7,7,0,0,849,914,3,140,70,13,850,851,10,11,0,0,851,852,7,9,0,0,852,914, + 3,140,70,12,853,854,10,10,0,0,854,855,5,29,0,0,855,914,3,140,70,11,856, + 857,10,9,0,0,857,858,5,5,0,0,858,914,3,140,70,10,859,860,10,8,0,0,860,861, + 5,28,0,0,861,914,3,140,70,9,862,863,10,7,0,0,863,864,7,10,0,0,864,914,3, + 140,70,8,865,866,10,6,0,0,866,867,7,11,0,0,867,914,3,140,70,7,868,869,10, + 5,0,0,869,870,5,76,0,0,870,914,3,140,70,6,871,872,10,4,0,0,872,873,5,4, + 0,0,873,914,3,140,70,5,874,875,10,3,0,0,875,876,5,77,0,0,876,877,3,140, + 70,0,877,878,5,70,0,0,878,879,3,140,70,3,879,914,1,0,0,0,880,881,10,2,0, + 0,881,882,7,12,0,0,882,914,3,140,70,3,883,884,10,27,0,0,884,914,7,6,0,0, + 885,886,10,25,0,0,886,887,5,42,0,0,887,888,3,140,70,0,888,889,5,43,0,0, + 889,914,1,0,0,0,890,891,10,24,0,0,891,893,5,42,0,0,892,894,3,140,70,0,893, + 892,1,0,0,0,893,894,1,0,0,0,894,895,1,0,0,0,895,897,5,70,0,0,896,898,3, + 140,70,0,897,896,1,0,0,0,897,898,1,0,0,0,898,899,1,0,0,0,899,914,5,43,0, + 0,900,901,10,23,0,0,901,902,5,45,0,0,902,914,3,194,97,0,903,904,10,22,0, + 0,904,905,5,15,0,0,905,906,3,146,73,0,906,907,5,17,0,0,907,914,1,0,0,0, + 908,909,10,21,0,0,909,910,5,23,0,0,910,911,3,150,75,0,911,912,5,24,0,0, + 912,914,1,0,0,0,913,841,1,0,0,0,913,844,1,0,0,0,913,847,1,0,0,0,913,850, + 1,0,0,0,913,853,1,0,0,0,913,856,1,0,0,0,913,859,1,0,0,0,913,862,1,0,0,0, + 913,865,1,0,0,0,913,868,1,0,0,0,913,871,1,0,0,0,913,874,1,0,0,0,913,880, + 1,0,0,0,913,883,1,0,0,0,913,885,1,0,0,0,913,890,1,0,0,0,913,900,1,0,0,0, + 913,903,1,0,0,0,913,908,1,0,0,0,914,917,1,0,0,0,915,913,1,0,0,0,915,916, + 1,0,0,0,916,141,1,0,0,0,917,915,1,0,0,0,918,928,5,102,0,0,919,928,3,192, + 96,0,920,928,3,196,98,0,921,928,3,200,100,0,922,928,3,194,97,0,923,928, + 5,123,0,0,924,928,5,118,0,0,925,928,3,190,95,0,926,928,3,76,38,0,927,918, + 1,0,0,0,927,919,1,0,0,0,927,920,1,0,0,0,927,921,1,0,0,0,927,922,1,0,0,0, + 927,923,1,0,0,0,927,924,1,0,0,0,927,925,1,0,0,0,927,926,1,0,0,0,928,143, + 1,0,0,0,929,934,3,140,70,0,930,931,5,16,0,0,931,933,3,140,70,0,932,930, + 1,0,0,0,933,936,1,0,0,0,934,932,1,0,0,0,934,935,1,0,0,0,935,145,1,0,0,0, + 936,934,1,0,0,0,937,942,3,148,74,0,938,939,5,16,0,0,939,941,3,148,74,0, + 940,938,1,0,0,0,941,944,1,0,0,0,942,940,1,0,0,0,942,943,1,0,0,0,943,946, + 1,0,0,0,944,942,1,0,0,0,945,947,5,16,0,0,946,945,1,0,0,0,946,947,1,0,0, + 0,947,147,1,0,0,0,948,949,3,194,97,0,949,950,5,70,0,0,950,951,3,140,70, + 0,951,149,1,0,0,0,952,954,5,15,0,0,953,955,3,146,73,0,954,953,1,0,0,0,954, + 955,1,0,0,0,955,956,1,0,0,0,956,961,5,17,0,0,957,959,3,144,72,0,958,957, + 1,0,0,0,958,959,1,0,0,0,959,961,1,0,0,0,960,952,1,0,0,0,960,958,1,0,0,0, + 961,151,1,0,0,0,962,963,3,140,70,0,963,964,5,23,0,0,964,965,3,150,75,0, + 965,966,5,24,0,0,966,153,1,0,0,0,967,971,5,15,0,0,968,970,3,156,78,0,969, + 968,1,0,0,0,970,973,1,0,0,0,971,969,1,0,0,0,971,972,1,0,0,0,972,974,1,0, + 0,0,973,971,1,0,0,0,974,975,5,17,0,0,975,155,1,0,0,0,976,994,3,194,97,0, + 977,994,3,154,77,0,978,994,3,158,79,0,979,994,3,164,82,0,980,994,3,166, + 83,0,981,994,3,172,86,0,982,994,3,174,87,0,983,994,3,176,88,0,984,994,3, + 180,90,0,985,994,3,184,92,0,986,994,3,186,93,0,987,994,5,109,0,0,988,994, + 5,113,0,0,989,994,5,114,0,0,990,994,3,192,96,0,991,994,3,200,100,0,992, + 994,3,196,98,0,993,976,1,0,0,0,993,977,1,0,0,0,993,978,1,0,0,0,993,979, + 1,0,0,0,993,980,1,0,0,0,993,981,1,0,0,0,993,982,1,0,0,0,993,983,1,0,0,0, + 993,984,1,0,0,0,993,985,1,0,0,0,993,986,1,0,0,0,993,987,1,0,0,0,993,988, + 1,0,0,0,993,989,1,0,0,0,993,990,1,0,0,0,993,991,1,0,0,0,993,992,1,0,0,0, + 994,157,1,0,0,0,995,999,3,162,81,0,996,999,3,188,94,0,997,999,3,160,80, + 0,998,995,1,0,0,0,998,996,1,0,0,0,998,997,1,0,0,0,999,159,1,0,0,0,1000, + 1001,3,194,97,0,1001,1002,5,45,0,0,1002,1003,3,194,97,0,1003,161,1,0,0, + 0,1004,1009,5,59,0,0,1005,1009,5,44,0,0,1006,1009,5,66,0,0,1007,1009,3, + 194,97,0,1008,1004,1,0,0,0,1008,1005,1,0,0,0,1008,1006,1,0,0,0,1008,1007, + 1,0,0,0,1009,1022,1,0,0,0,1010,1012,5,23,0,0,1011,1013,3,158,79,0,1012, + 1011,1,0,0,0,1012,1013,1,0,0,0,1013,1018,1,0,0,0,1014,1015,5,16,0,0,1015, + 1017,3,158,79,0,1016,1014,1,0,0,0,1017,1020,1,0,0,0,1018,1016,1,0,0,0,1018, + 1019,1,0,0,0,1019,1021,1,0,0,0,1020,1018,1,0,0,0,1021,1023,5,24,0,0,1022, + 1010,1,0,0,0,1022,1023,1,0,0,0,1023,163,1,0,0,0,1024,1025,5,88,0,0,1025, + 1028,3,168,84,0,1026,1027,5,89,0,0,1027,1029,3,158,79,0,1028,1026,1,0,0, + 0,1028,1029,1,0,0,0,1029,165,1,0,0,0,1030,1031,3,168,84,0,1031,1032,5,89, + 0,0,1032,1033,3,158,79,0,1033,167,1,0,0,0,1034,1042,3,194,97,0,1035,1042, + 3,160,80,0,1036,1042,3,170,85,0,1037,1038,5,23,0,0,1038,1039,3,170,85,0, + 1039,1040,5,24,0,0,1040,1042,1,0,0,0,1041,1034,1,0,0,0,1041,1035,1,0,0, + 0,1041,1036,1,0,0,0,1041,1037,1,0,0,0,1042,169,1,0,0,0,1043,1048,3,194, + 97,0,1044,1045,5,16,0,0,1045,1047,3,194,97,0,1046,1044,1,0,0,0,1047,1050, + 1,0,0,0,1048,1046,1,0,0,0,1048,1049,1,0,0,0,1049,171,1,0,0,0,1050,1048, + 1,0,0,0,1051,1052,3,158,79,0,1052,1053,5,90,0,0,1053,1054,3,194,97,0,1054, + 173,1,0,0,0,1055,1056,3,194,97,0,1056,1057,5,70,0,0,1057,175,1,0,0,0,1058, + 1059,5,91,0,0,1059,1063,3,158,79,0,1060,1062,3,178,89,0,1061,1060,1,0,0, + 0,1062,1065,1,0,0,0,1063,1061,1,0,0,0,1063,1064,1,0,0,0,1064,177,1,0,0, + 0,1065,1063,1,0,0,0,1066,1067,5,92,0,0,1067,1068,3,188,94,0,1068,1069,3, + 154,77,0,1069,1073,1,0,0,0,1070,1071,5,93,0,0,1071,1073,3,154,77,0,1072, + 1066,1,0,0,0,1072,1070,1,0,0,0,1073,179,1,0,0,0,1074,1075,5,38,0,0,1075, + 1076,3,194,97,0,1076,1078,5,23,0,0,1077,1079,3,170,85,0,1078,1077,1,0,0, + 0,1078,1079,1,0,0,0,1079,1080,1,0,0,0,1080,1082,5,24,0,0,1081,1083,3,182, + 91,0,1082,1081,1,0,0,0,1082,1083,1,0,0,0,1083,1084,1,0,0,0,1084,1085,3, + 154,77,0,1085,181,1,0,0,0,1086,1087,5,94,0,0,1087,1088,3,170,85,0,1088, + 183,1,0,0,0,1089,1092,5,27,0,0,1090,1093,3,154,77,0,1091,1093,3,158,79, + 0,1092,1090,1,0,0,0,1092,1091,1,0,0,0,1093,1094,1,0,0,0,1094,1097,3,158, + 79,0,1095,1098,3,154,77,0,1096,1098,3,158,79,0,1097,1095,1,0,0,0,1097,1096, + 1,0,0,0,1098,1099,1,0,0,0,1099,1100,3,154,77,0,1100,185,1,0,0,0,1101,1102, + 5,51,0,0,1102,1103,3,158,79,0,1103,1104,3,154,77,0,1104,187,1,0,0,0,1105, + 1111,3,200,100,0,1106,1111,5,103,0,0,1107,1111,5,104,0,0,1108,1111,3,196, + 98,0,1109,1111,5,102,0,0,1110,1105,1,0,0,0,1110,1106,1,0,0,0,1110,1107, + 1,0,0,0,1110,1108,1,0,0,0,1110,1109,1,0,0,0,1111,189,1,0,0,0,1112,1114, + 5,23,0,0,1113,1115,3,140,70,0,1114,1113,1,0,0,0,1114,1115,1,0,0,0,1115, + 1122,1,0,0,0,1116,1118,5,16,0,0,1117,1119,3,140,70,0,1118,1117,1,0,0,0, + 1118,1119,1,0,0,0,1119,1121,1,0,0,0,1120,1116,1,0,0,0,1121,1124,1,0,0,0, + 1122,1120,1,0,0,0,1122,1123,1,0,0,0,1123,1125,1,0,0,0,1124,1122,1,0,0,0, + 1125,1139,5,24,0,0,1126,1135,5,42,0,0,1127,1132,3,140,70,0,1128,1129,5, + 16,0,0,1129,1131,3,140,70,0,1130,1128,1,0,0,0,1131,1134,1,0,0,0,1132,1130, + 1,0,0,0,1132,1133,1,0,0,0,1133,1136,1,0,0,0,1134,1132,1,0,0,0,1135,1127, + 1,0,0,0,1135,1136,1,0,0,0,1136,1137,1,0,0,0,1137,1139,5,43,0,0,1138,1112, + 1,0,0,0,1138,1126,1,0,0,0,1139,191,1,0,0,0,1140,1142,7,13,0,0,1141,1143, + 5,105,0,0,1142,1141,1,0,0,0,1142,1143,1,0,0,0,1143,193,1,0,0,0,1144,1145, + 7,14,0,0,1145,195,1,0,0,0,1146,1148,5,106,0,0,1147,1146,1,0,0,0,1148,1149, + 1,0,0,0,1149,1147,1,0,0,0,1149,1150,1,0,0,0,1150,197,1,0,0,0,1151,1163, + 5,96,0,0,1152,1153,5,23,0,0,1153,1158,3,78,39,0,1154,1155,5,16,0,0,1155, + 1157,3,78,39,0,1156,1154,1,0,0,0,1157,1160,1,0,0,0,1158,1156,1,0,0,0,1158, + 1159,1,0,0,0,1159,1161,1,0,0,0,1160,1158,1,0,0,0,1161,1162,5,24,0,0,1162, + 1164,1,0,0,0,1163,1152,1,0,0,0,1163,1164,1,0,0,0,1164,199,1,0,0,0,1165, + 1167,5,130,0,0,1166,1165,1,0,0,0,1167,1168,1,0,0,0,1168,1166,1,0,0,0,1168, + 1169,1,0,0,0,1169,201,1,0,0,0,130,213,215,230,234,239,245,249,252,257,263, + 270,274,287,295,300,310,313,319,327,330,341,351,353,359,386,389,400,405, + 410,424,427,434,438,440,445,450,453,459,463,467,472,485,487,494,504,510, + 521,524,530,533,541,544,550,553,561,564,570,574,585,590,595,603,608,614, + 619,632,634,639,649,669,681,686,692,696,699,711,720,724,727,734,740,762, + 784,788,793,797,801,806,811,815,839,893,897,913,915,927,934,942,946,954, + 958,960,971,993,998,1008,1012,1018,1022,1028,1041,1048,1063,1072,1078,1082, + 1092,1097,1110,1114,1118,1122,1132,1135,1138,1142,1149,1158,1163,1168]; private static __ATN: ATN; public static get _ATN(): ATN { @@ -7245,6 +7254,12 @@ export class StateVariableDeclarationContext extends ParserRuleContext { public ConstantKeyword(i: number): TerminalNode { return this.getToken(SolidityParser.ConstantKeyword, i); } + public TransientKeyword_list(): TerminalNode[] { + return this.getTokens(SolidityParser.TransientKeyword); + } + public TransientKeyword(i: number): TerminalNode { + return this.getToken(SolidityParser.TransientKeyword, i); + } public ImmutableKeyword_list(): TerminalNode[] { return this.getTokens(SolidityParser.ImmutableKeyword); } diff --git a/src/antlr/SolidityVisitor.ts b/src/antlr/SolidityVisitor.ts index 803340a..7ae04df 100644 --- a/src/antlr/SolidityVisitor.ts +++ b/src/antlr/SolidityVisitor.ts @@ -1,109 +1,109 @@ -// Generated from antlr/Solidity.g4 by ANTLR 4.13.1 +// Generated from antlr/Solidity.g4 by ANTLR 4.13.2 import {ParseTreeVisitor} from 'antlr4'; -import { SourceUnitContext } from "./SolidityParser"; -import { PragmaDirectiveContext } from "./SolidityParser"; -import { PragmaNameContext } from "./SolidityParser"; -import { PragmaValueContext } from "./SolidityParser"; -import { VersionContext } from "./SolidityParser"; -import { VersionOperatorContext } from "./SolidityParser"; -import { VersionConstraintContext } from "./SolidityParser"; -import { ImportDeclarationContext } from "./SolidityParser"; -import { ImportDirectiveContext } from "./SolidityParser"; -import { ImportPathContext } from "./SolidityParser"; -import { ContractDefinitionContext } from "./SolidityParser"; -import { InheritanceSpecifierContext } from "./SolidityParser"; -import { ContractPartContext } from "./SolidityParser"; -import { StateVariableDeclarationContext } from "./SolidityParser"; -import { FileLevelConstantContext } from "./SolidityParser"; -import { CustomErrorDefinitionContext } from "./SolidityParser"; -import { TypeDefinitionContext } from "./SolidityParser"; -import { UsingForDeclarationContext } from "./SolidityParser"; -import { UsingForObjectContext } from "./SolidityParser"; -import { UsingForObjectDirectiveContext } from "./SolidityParser"; -import { UserDefinableOperatorsContext } from "./SolidityParser"; -import { StructDefinitionContext } from "./SolidityParser"; -import { ModifierDefinitionContext } from "./SolidityParser"; -import { ModifierInvocationContext } from "./SolidityParser"; -import { FunctionDefinitionContext } from "./SolidityParser"; -import { FunctionDescriptorContext } from "./SolidityParser"; -import { ReturnParametersContext } from "./SolidityParser"; -import { ModifierListContext } from "./SolidityParser"; -import { EventDefinitionContext } from "./SolidityParser"; -import { EnumValueContext } from "./SolidityParser"; -import { EnumDefinitionContext } from "./SolidityParser"; -import { ParameterListContext } from "./SolidityParser"; -import { ParameterContext } from "./SolidityParser"; -import { EventParameterListContext } from "./SolidityParser"; -import { EventParameterContext } from "./SolidityParser"; -import { FunctionTypeParameterListContext } from "./SolidityParser"; -import { FunctionTypeParameterContext } from "./SolidityParser"; -import { VariableDeclarationContext } from "./SolidityParser"; -import { TypeNameContext } from "./SolidityParser"; -import { UserDefinedTypeNameContext } from "./SolidityParser"; -import { MappingKeyContext } from "./SolidityParser"; -import { MappingContext } from "./SolidityParser"; -import { MappingKeyNameContext } from "./SolidityParser"; -import { MappingValueNameContext } from "./SolidityParser"; -import { FunctionTypeNameContext } from "./SolidityParser"; -import { StorageLocationContext } from "./SolidityParser"; -import { StateMutabilityContext } from "./SolidityParser"; -import { BlockContext } from "./SolidityParser"; -import { StatementContext } from "./SolidityParser"; -import { ExpressionStatementContext } from "./SolidityParser"; -import { IfStatementContext } from "./SolidityParser"; -import { TryStatementContext } from "./SolidityParser"; -import { CatchClauseContext } from "./SolidityParser"; -import { WhileStatementContext } from "./SolidityParser"; -import { SimpleStatementContext } from "./SolidityParser"; -import { UncheckedStatementContext } from "./SolidityParser"; -import { ForStatementContext } from "./SolidityParser"; -import { InlineAssemblyStatementContext } from "./SolidityParser"; -import { InlineAssemblyStatementFlagContext } from "./SolidityParser"; -import { DoWhileStatementContext } from "./SolidityParser"; -import { ContinueStatementContext } from "./SolidityParser"; -import { BreakStatementContext } from "./SolidityParser"; -import { ReturnStatementContext } from "./SolidityParser"; -import { ThrowStatementContext } from "./SolidityParser"; -import { EmitStatementContext } from "./SolidityParser"; -import { RevertStatementContext } from "./SolidityParser"; -import { VariableDeclarationStatementContext } from "./SolidityParser"; -import { VariableDeclarationListContext } from "./SolidityParser"; -import { IdentifierListContext } from "./SolidityParser"; -import { ElementaryTypeNameContext } from "./SolidityParser"; -import { ExpressionContext } from "./SolidityParser"; -import { PrimaryExpressionContext } from "./SolidityParser"; -import { ExpressionListContext } from "./SolidityParser"; -import { NameValueListContext } from "./SolidityParser"; -import { NameValueContext } from "./SolidityParser"; -import { FunctionCallArgumentsContext } from "./SolidityParser"; -import { FunctionCallContext } from "./SolidityParser"; -import { AssemblyBlockContext } from "./SolidityParser"; -import { AssemblyItemContext } from "./SolidityParser"; -import { AssemblyExpressionContext } from "./SolidityParser"; -import { AssemblyMemberContext } from "./SolidityParser"; -import { AssemblyCallContext } from "./SolidityParser"; -import { AssemblyLocalDefinitionContext } from "./SolidityParser"; -import { AssemblyAssignmentContext } from "./SolidityParser"; -import { AssemblyIdentifierOrListContext } from "./SolidityParser"; -import { AssemblyIdentifierListContext } from "./SolidityParser"; -import { AssemblyStackAssignmentContext } from "./SolidityParser"; -import { LabelDefinitionContext } from "./SolidityParser"; -import { AssemblySwitchContext } from "./SolidityParser"; -import { AssemblyCaseContext } from "./SolidityParser"; -import { AssemblyFunctionDefinitionContext } from "./SolidityParser"; -import { AssemblyFunctionReturnsContext } from "./SolidityParser"; -import { AssemblyForContext } from "./SolidityParser"; -import { AssemblyIfContext } from "./SolidityParser"; -import { AssemblyLiteralContext } from "./SolidityParser"; -import { TupleExpressionContext } from "./SolidityParser"; -import { NumberLiteralContext } from "./SolidityParser"; -import { IdentifierContext } from "./SolidityParser"; -import { HexLiteralContext } from "./SolidityParser"; -import { OverrideSpecifierContext } from "./SolidityParser"; -import { StringLiteralContext } from "./SolidityParser"; +import { SourceUnitContext } from "./SolidityParser.js"; +import { PragmaDirectiveContext } from "./SolidityParser.js"; +import { PragmaNameContext } from "./SolidityParser.js"; +import { PragmaValueContext } from "./SolidityParser.js"; +import { VersionContext } from "./SolidityParser.js"; +import { VersionOperatorContext } from "./SolidityParser.js"; +import { VersionConstraintContext } from "./SolidityParser.js"; +import { ImportDeclarationContext } from "./SolidityParser.js"; +import { ImportDirectiveContext } from "./SolidityParser.js"; +import { ImportPathContext } from "./SolidityParser.js"; +import { ContractDefinitionContext } from "./SolidityParser.js"; +import { InheritanceSpecifierContext } from "./SolidityParser.js"; +import { ContractPartContext } from "./SolidityParser.js"; +import { StateVariableDeclarationContext } from "./SolidityParser.js"; +import { FileLevelConstantContext } from "./SolidityParser.js"; +import { CustomErrorDefinitionContext } from "./SolidityParser.js"; +import { TypeDefinitionContext } from "./SolidityParser.js"; +import { UsingForDeclarationContext } from "./SolidityParser.js"; +import { UsingForObjectContext } from "./SolidityParser.js"; +import { UsingForObjectDirectiveContext } from "./SolidityParser.js"; +import { UserDefinableOperatorsContext } from "./SolidityParser.js"; +import { StructDefinitionContext } from "./SolidityParser.js"; +import { ModifierDefinitionContext } from "./SolidityParser.js"; +import { ModifierInvocationContext } from "./SolidityParser.js"; +import { FunctionDefinitionContext } from "./SolidityParser.js"; +import { FunctionDescriptorContext } from "./SolidityParser.js"; +import { ReturnParametersContext } from "./SolidityParser.js"; +import { ModifierListContext } from "./SolidityParser.js"; +import { EventDefinitionContext } from "./SolidityParser.js"; +import { EnumValueContext } from "./SolidityParser.js"; +import { EnumDefinitionContext } from "./SolidityParser.js"; +import { ParameterListContext } from "./SolidityParser.js"; +import { ParameterContext } from "./SolidityParser.js"; +import { EventParameterListContext } from "./SolidityParser.js"; +import { EventParameterContext } from "./SolidityParser.js"; +import { FunctionTypeParameterListContext } from "./SolidityParser.js"; +import { FunctionTypeParameterContext } from "./SolidityParser.js"; +import { VariableDeclarationContext } from "./SolidityParser.js"; +import { TypeNameContext } from "./SolidityParser.js"; +import { UserDefinedTypeNameContext } from "./SolidityParser.js"; +import { MappingKeyContext } from "./SolidityParser.js"; +import { MappingContext } from "./SolidityParser.js"; +import { MappingKeyNameContext } from "./SolidityParser.js"; +import { MappingValueNameContext } from "./SolidityParser.js"; +import { FunctionTypeNameContext } from "./SolidityParser.js"; +import { StorageLocationContext } from "./SolidityParser.js"; +import { StateMutabilityContext } from "./SolidityParser.js"; +import { BlockContext } from "./SolidityParser.js"; +import { StatementContext } from "./SolidityParser.js"; +import { ExpressionStatementContext } from "./SolidityParser.js"; +import { IfStatementContext } from "./SolidityParser.js"; +import { TryStatementContext } from "./SolidityParser.js"; +import { CatchClauseContext } from "./SolidityParser.js"; +import { WhileStatementContext } from "./SolidityParser.js"; +import { SimpleStatementContext } from "./SolidityParser.js"; +import { UncheckedStatementContext } from "./SolidityParser.js"; +import { ForStatementContext } from "./SolidityParser.js"; +import { InlineAssemblyStatementContext } from "./SolidityParser.js"; +import { InlineAssemblyStatementFlagContext } from "./SolidityParser.js"; +import { DoWhileStatementContext } from "./SolidityParser.js"; +import { ContinueStatementContext } from "./SolidityParser.js"; +import { BreakStatementContext } from "./SolidityParser.js"; +import { ReturnStatementContext } from "./SolidityParser.js"; +import { ThrowStatementContext } from "./SolidityParser.js"; +import { EmitStatementContext } from "./SolidityParser.js"; +import { RevertStatementContext } from "./SolidityParser.js"; +import { VariableDeclarationStatementContext } from "./SolidityParser.js"; +import { VariableDeclarationListContext } from "./SolidityParser.js"; +import { IdentifierListContext } from "./SolidityParser.js"; +import { ElementaryTypeNameContext } from "./SolidityParser.js"; +import { ExpressionContext } from "./SolidityParser.js"; +import { PrimaryExpressionContext } from "./SolidityParser.js"; +import { ExpressionListContext } from "./SolidityParser.js"; +import { NameValueListContext } from "./SolidityParser.js"; +import { NameValueContext } from "./SolidityParser.js"; +import { FunctionCallArgumentsContext } from "./SolidityParser.js"; +import { FunctionCallContext } from "./SolidityParser.js"; +import { AssemblyBlockContext } from "./SolidityParser.js"; +import { AssemblyItemContext } from "./SolidityParser.js"; +import { AssemblyExpressionContext } from "./SolidityParser.js"; +import { AssemblyMemberContext } from "./SolidityParser.js"; +import { AssemblyCallContext } from "./SolidityParser.js"; +import { AssemblyLocalDefinitionContext } from "./SolidityParser.js"; +import { AssemblyAssignmentContext } from "./SolidityParser.js"; +import { AssemblyIdentifierOrListContext } from "./SolidityParser.js"; +import { AssemblyIdentifierListContext } from "./SolidityParser.js"; +import { AssemblyStackAssignmentContext } from "./SolidityParser.js"; +import { LabelDefinitionContext } from "./SolidityParser.js"; +import { AssemblySwitchContext } from "./SolidityParser.js"; +import { AssemblyCaseContext } from "./SolidityParser.js"; +import { AssemblyFunctionDefinitionContext } from "./SolidityParser.js"; +import { AssemblyFunctionReturnsContext } from "./SolidityParser.js"; +import { AssemblyForContext } from "./SolidityParser.js"; +import { AssemblyIfContext } from "./SolidityParser.js"; +import { AssemblyLiteralContext } from "./SolidityParser.js"; +import { TupleExpressionContext } from "./SolidityParser.js"; +import { NumberLiteralContext } from "./SolidityParser.js"; +import { IdentifierContext } from "./SolidityParser.js"; +import { HexLiteralContext } from "./SolidityParser.js"; +import { OverrideSpecifierContext } from "./SolidityParser.js"; +import { StringLiteralContext } from "./SolidityParser.js"; /** diff --git a/src/antlr/solidity-tokens.ts b/src/antlr/solidity-tokens.ts index 40a8ac4..9fece8d 100644 --- a/src/antlr/solidity-tokens.ts +++ b/src/antlr/solidity-tokens.ts @@ -109,27 +109,28 @@ export const tokens: Record = { "108": "anonymous", "109": "break", "110": "constant", - "111": "immutable", - "112": "continue", - "113": "leave", - "114": "external", - "115": "indexed", - "116": "internal", - "117": "payable", - "118": "private", - "119": "public", - "120": "virtual", - "121": "pure", - "122": "type", - "123": "view", - "124": "global", - "125": "constructor", - "126": "fallback", - "127": "receive", - "128": "Identifier", - "129": "StringLiteralFragment", - "130": "VersionLiteral", - "131": "WS", - "132": "COMMENT", - "133": "LINE_COMMENT" + "111": "transient", + "112": "immutable", + "113": "continue", + "114": "leave", + "115": "external", + "116": "indexed", + "117": "internal", + "118": "payable", + "119": "private", + "120": "public", + "121": "virtual", + "122": "pure", + "123": "type", + "124": "view", + "125": "global", + "126": "constructor", + "127": "fallback", + "128": "receive", + "129": "Identifier", + "130": "StringLiteralFragment", + "131": "VersionLiteral", + "132": "WS", + "133": "COMMENT", + "134": "LINE_COMMENT" } \ No newline at end of file From 305ae73755687e6d6cb43c40b0017f9cd8572e09 Mon Sep 17 00:00:00 2001 From: Franco Victorio Date: Wed, 13 Nov 2024 10:28:18 +0100 Subject: [PATCH 2/2] Add support for transient storage variables --- src/ASTBuilder.ts | 6 ++++++ src/ast-types.ts | 1 + test/ast.ts | 38 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+) diff --git a/src/ASTBuilder.ts b/src/ASTBuilder.ts index 00caf28..e89d631 100644 --- a/src/ASTBuilder.ts +++ b/src/ASTBuilder.ts @@ -109,6 +109,11 @@ export class ASTBuilder isImmutable = true } + let isTransient = false + if (ctx.TransientKeyword_list().length > 0) { + isTransient = true + } + const decl: AST.StateVariableDeclarationVariable = { type: 'VariableDeclaration', typeName: type, @@ -120,6 +125,7 @@ export class ASTBuilder isDeclaredConst, isIndexed: false, isImmutable, + isTransient, override, storageLocation: null, } diff --git a/src/ast-types.ts b/src/ast-types.ts index d12cd73..e2db09c 100644 --- a/src/ast-types.ts +++ b/src/ast-types.ts @@ -245,6 +245,7 @@ export interface VariableDeclaration extends BaseASTNode { export interface StateVariableDeclarationVariable extends VariableDeclaration { override: null | UserDefinedTypeName[] isImmutable: boolean + isTransient: boolean } export interface ArrayTypeName extends BaseASTNode { type: 'ArrayTypeName' diff --git a/test/ast.ts b/test/ast.ts index 2d708d1..2019434 100644 --- a/test/ast.ts +++ b/test/ast.ts @@ -738,6 +738,7 @@ describe('AST', () => { isDeclaredConst: false, isIndexed: false, isImmutable: false, + isTransient: false, storageLocation: null, }, ], @@ -769,6 +770,39 @@ describe('AST', () => { isDeclaredConst: false, isIndexed: false, isImmutable: true, + isTransient: false, + storageLocation: null, + }, + ], + initialValue: null, + }) + }) + + it('StateVariableDeclaration with transient', () => { + const ast: any = parseNode('bool transient locked;') + assert.deepEqual(ast, { + type: 'StateVariableDeclaration', + variables: [ + { + type: 'VariableDeclaration', + typeName: { + type: 'ElementaryTypeName', + name: 'bool', + stateMutability: null, + }, + name: 'locked', + identifier: { + type: 'Identifier', + name: 'locked', + }, + expression: null, + visibility: 'default', + override: null, + isStateVar: true, + isDeclaredConst: false, + isIndexed: false, + isImmutable: false, + isTransient: true, storageLocation: null, }, ], @@ -832,6 +866,7 @@ describe('AST', () => { isDeclaredConst: false, isIndexed: false, isImmutable: false, + isTransient: false, storageLocation: null, }, ], @@ -905,6 +940,7 @@ describe('AST', () => { isDeclaredConst: false, isIndexed: false, isImmutable: false, + isTransient: false, storageLocation: null, }, ], @@ -1490,6 +1526,7 @@ describe('AST', () => { isIndexed: false, override: null, isImmutable: false, + isTransient: false, storageLocation: null, }) }) @@ -2751,6 +2788,7 @@ describe('AST', () => { isDeclaredConst: false, isIndexed: false, isImmutable: false, + isTransient: false, storageLocation: null, }, ],