From 7186508925ae536eaf9f97615af051c9077b438d Mon Sep 17 00:00:00 2001 From: Alfred Fuller Date: Fri, 8 Dec 2023 09:26:08 -0800 Subject: [PATCH] Tolerate trailing '.' in option names (#222) While still producing an error, see: https://github.com/bufbuild/protocompile/issues/200 --- ast/options.go | 10 +- parser/parser_test.go | 52 +- parser/proto.y | 49 +- parser/proto.y.go | 1310 +++++++++++++++++++++-------------------- 4 files changed, 764 insertions(+), 657 deletions(-) diff --git a/ast/options.go b/ast/options.go index 9338d307..2bf35537 100644 --- a/ast/options.go +++ b/ast/options.go @@ -159,10 +159,10 @@ func NewOptionNameNode(parts []*FieldReferenceNode, dots []*RuneNode) *OptionNam if len(parts) == 0 { panic("must have at least one part") } - if len(dots) != len(parts)-1 { + if len(dots) != len(parts)-1 && len(dots) != len(parts) { panic(fmt.Sprintf("%d parts requires %d dots, not %d", len(parts), len(parts)-1, len(dots))) } - children := make([]Node, 0, len(parts)*2-1) + children := make([]Node, 0, len(parts)+len(dots)) for i, part := range parts { if part == nil { panic(fmt.Sprintf("parts[%d] is nil", i)) @@ -175,6 +175,12 @@ func NewOptionNameNode(parts []*FieldReferenceNode, dots []*RuneNode) *OptionNam } children = append(children, part) } + if len(dots) == len(parts) { // Add the erroneous, but tolerated trailing dot. + if dots[len(dots)-1] == nil { + panic(fmt.Sprintf("dots[%d] is nil", len(dots)-1)) + } + children = append(children, dots[len(dots)-1]) + } return &OptionNameNode{ compositeNode: compositeNode{ children: children, diff --git a/parser/parser_test.go b/parser/parser_test.go index 0845c30e..f44ff04f 100644 --- a/parser/parser_test.go +++ b/parser/parser_test.go @@ -92,12 +92,19 @@ func runParseErrorTestCases(t *testing.T, testCases map[string]parseErrorTestCas name, testCase := name, testCase t.Run(name, func(t *testing.T) { t.Parallel() - errHandler := reporter.NewHandler(nil) protoName := fmt.Sprintf("%s.proto", name) - _, err := Parse(protoName, strings.NewReader(testCase.NoError), errHandler) + _, err := Parse(protoName, strings.NewReader(testCase.NoError), reporter.NewHandler(nil)) require.NoError(t, err) - _, err = Parse(protoName, strings.NewReader(testCase.Error), errHandler) - require.ErrorContains(t, err, expected) + + producedError := false + errHandler := reporter.NewHandler(reporter.NewReporter(func(err reporter.ErrorWithPos) error { + if strings.Contains(err.Error(), expected) { + producedError = true + } + return nil + }, nil)) + _, _ = Parse(protoName, strings.NewReader(testCase.Error), errHandler) + require.Truef(t, producedError, "expected error containing %q", expected) }) } } @@ -444,6 +451,43 @@ func TestLenientParse_OptionsTrailingComma(t *testing.T) { runParseErrorTestCases(t, inputs, "unexpected ','") } +func TestLenientParse_OptionNameTrailingDot(t *testing.T) { + t.Parallel() + inputs := map[string]parseErrorTestCase{ + "field-options": { + Error: `syntax = "proto3"; + message Foo { + int32 bar = 1 [default.=1]; + }`, + NoError: `syntax = "proto3"; + message Foo { + int32 bar = 1 [default=1]; + }`, + }, + "field-options-ext": { + Error: `syntax = "proto3"; + message Foo { + int32 bar = 1 [(foo).=1]; + }`, + NoError: `syntax = "proto3"; + message Foo { + int32 bar = 1 [(foo)=1]; + }`, + }, + "field-options-both": { + Error: `syntax = "proto3"; + message Foo { + int32 bar = 1 [baz.(foo).=1]; + }`, + NoError: `syntax = "proto3"; + message Foo { + int32 bar = 1 [baz.(foo)=1]; + }`, + }, + } + runParseErrorTestCases(t, inputs, "unexpected '.'") +} + func TestSimpleParse(t *testing.T) { t.Parallel() protos := map[string]Result{} diff --git a/parser/proto.y b/parser/proto.y index 2ad2cdef..d05666ed 100644 --- a/parser/proto.y +++ b/parser/proto.y @@ -47,7 +47,8 @@ import ( optRaw *ast.OptionNode opt nodeWithRunes[*ast.OptionNode] opts *compactOptionSlices - ref *ast.FieldReferenceNode + refRaw *ast.FieldReferenceNode + ref nodeWithRunes[*ast.FieldReferenceNode] optNms *fieldRefSlices cmpctOpts *ast.CompactOptionsNode rng *ast.RangeNode @@ -81,8 +82,9 @@ import ( %type compactOption oneofOptionDecl %type optionDecl compactOptionEntry compactOptionFinal %type compactOptionDecls compactOptionLeadingDecls -%type extensionName messageLiteralFieldName -%type optionName +%type extensionName messageLiteralFieldName optionNamePart +%type optionNameEntry optionNameFinal +%type optionName optionNameLeading %type compactOptions %type value optionValue scalarValue messageLiteralWithBraces messageLiteral numLit listLiteral listElement listOfMessagesLiteral messageValue %type enumValueNumber @@ -323,21 +325,40 @@ optionDecl : _OPTION optionName '=' optionValue semicolons { $$ = newNodeWithRunes(ast.NewOptionNode($1.ToKeyword(), optName, $3, $4, semi), extra...) } -optionName : identifier { - fieldReferenceNode := ast.NewFieldReferenceNode($1) - $$ = &fieldRefSlices{refs: []*ast.FieldReferenceNode{fieldReferenceNode}} +optionNamePart : identifier { + $$ = ast.NewFieldReferenceNode($1) } - | optionName '.' identifier { - $1.refs = append($1.refs, ast.NewFieldReferenceNode($3)) - $1.dots = append($1.dots, $2) + | extensionName { $$ = $1 } - | extensionName { - $$ = &fieldRefSlices{refs: []*ast.FieldReferenceNode{$1}} + +optionNameEntry : optionNamePart '.' { + $$ = newNodeWithRunes($1, $2) } - | optionName '.' extensionName { - $1.refs = append($1.refs, $3) - $1.dots = append($1.dots, $2) + +optionNameFinal : optionNamePart { + $$ = newNodeWithRunes($1) + } + | optionNameEntry { + protolex.(*protoLex).Error("unexpected '.'") + $$ = $1 + } + +optionNameLeading : optionNameEntry { + $$ = &fieldRefSlices{refs: []*ast.FieldReferenceNode{$1.Node}, dots: $1.Runes} + } + | optionNameLeading optionNameEntry { + $1.refs = append($1.refs, $2.Node) + $1.dots = append($1.dots, $2.Runes...) + $$ = $1 + } + +optionName : optionNameFinal { + $$ = &fieldRefSlices{refs: []*ast.FieldReferenceNode{$1.Node}, dots: $1.Runes} + } + | optionNameLeading optionNameFinal { + $1.refs = append($1.refs, $2.Node) + $1.dots = append($1.dots, $2.Runes...) $$ = $1 } diff --git a/parser/proto.y.go b/parser/proto.y.go index fee1ea5b..568c5b73 100644 --- a/parser/proto.y.go +++ b/parser/proto.y.go @@ -60,7 +60,8 @@ type protoSymType struct { optRaw *ast.OptionNode opt nodeWithRunes[*ast.OptionNode] opts *compactOptionSlices - ref *ast.FieldReferenceNode + refRaw *ast.FieldReferenceNode + ref nodeWithRunes[*ast.FieldReferenceNode] optNms *fieldRefSlices cmpctOpts *ast.CompactOptionsNode rng *ast.RangeNode @@ -236,396 +237,406 @@ var protoExca = [...]int16{ -1, 14, 1, 7, -2, 0, + -1, 89, + 52, 48, + 61, 48, + 69, 48, + -2, 49, -1, 108, - 56, 217, + 52, 48, + 61, 48, + 69, 48, + -2, 50, + -1, 114, + 56, 222, -2, 0, - -1, 129, - 56, 197, + -1, 133, + 56, 202, -2, 0, - -1, 131, - 56, 186, + -1, 135, + 56, 191, -2, 0, - -1, 133, - 56, 218, + -1, 137, + 56, 223, -2, 0, - -1, 187, - 56, 230, + -1, 191, + 56, 235, -2, 0, - -1, 192, - 56, 67, - 62, 67, + -1, 196, + 56, 72, + 62, 72, -2, 0, - -1, 205, - 56, 198, + -1, 209, + 56, 203, -2, 0, - -1, 262, - 56, 187, + -1, 266, + 56, 192, -2, 0, - -1, 368, - 56, 231, + -1, 372, + 56, 236, -2, 0, - -1, 449, - 56, 133, + -1, 453, + 56, 138, -2, 0, - -1, 503, - 69, 124, - -2, 121, - -1, 508, - 56, 134, + -1, 507, + 69, 129, + -2, 126, + -1, 512, + 56, 139, -2, 0, - -1, 635, - 69, 124, - -2, 122, - -1, 690, - 56, 241, + -1, 639, + 69, 129, + -2, 127, + -1, 694, + 56, 246, -2, 0, - -1, 700, - 56, 242, + -1, 704, + 56, 247, -2, 0, } const protoPrivate = 57344 -const protoLast = 1904 +const protoLast = 1908 var protoAct = [...]int16{ - 129, 7, 128, 7, 7, 572, 18, 701, 385, 484, - 115, 114, 428, 92, 91, 504, 479, 500, 509, 503, - 413, 412, 396, 189, 40, 426, 369, 445, 224, 263, - 395, 117, 317, 21, 191, 20, 19, 98, 134, 39, - 101, 87, 85, 138, 32, 34, 206, 633, 439, 436, - 102, 86, 89, 90, 102, 94, 36, 381, 120, 438, - 625, 696, 574, 628, 444, 489, 386, 9, 624, 99, - 100, 387, 446, 488, 447, 661, 650, 447, 636, 447, - 679, 626, 447, 414, 490, 440, 657, 414, 447, 447, - 127, 480, 407, 673, 487, 563, 120, 379, 380, 102, - 111, 112, 120, 105, 386, 378, 472, 109, 131, 9, - 386, 187, 116, 9, 471, 188, 435, 455, 451, 658, - 569, 453, 377, 668, 637, 103, 446, 113, 119, 125, - 376, 104, 104, 104, 9, 644, 213, 419, 264, 405, - 365, 102, 714, 415, 712, 196, 126, 415, 705, 699, - 698, 691, 687, 9, 638, 678, 670, 374, 366, 367, - 270, 313, 261, 210, 364, 208, 209, 204, 708, 682, - 675, 449, 314, 218, 110, 108, 107, 106, 5, 6, - 96, 96, 96, 9, 574, 640, 315, 31, 669, 493, - 23, 492, 476, 475, 370, 450, 443, 421, 24, 410, - 13, 25, 26, 12, 575, 390, 505, 372, 383, 473, - 448, 388, 213, 203, 201, 686, 703, 196, 685, 26, - 630, 15, 629, 9, 571, 202, 570, 375, 26, 9, - 97, 95, 28, 27, 29, 30, 35, 559, 397, 210, - 406, 208, 209, 506, 394, 494, 398, 399, 404, 218, - 478, 393, 391, 373, 400, 403, 200, 198, 33, 8, - 474, 96, 408, 33, 689, 37, 38, 700, 199, 264, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, - 468, 469, 4, 371, 186, 10, 11, 368, 22, 132, - 133, 270, 409, 265, 404, 130, 262, 211, 411, 266, - 216, 403, 402, 401, 507, 508, 205, 222, 215, 212, - 512, 136, 214, 135, 416, 511, 207, 193, 192, 434, - 481, 577, 515, 139, 219, 578, 318, 517, 143, 225, - 268, 580, 320, 420, 519, 145, 228, 457, 382, 384, - 429, 417, 418, 118, 195, 501, 498, 510, 502, 17, - 16, 14, 3, 2, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, - 0, 0, 0, 0, 0, 370, 0, 0, 0, 0, + 133, 7, 132, 7, 7, 576, 18, 705, 389, 488, + 121, 120, 432, 96, 95, 508, 483, 504, 513, 507, + 417, 416, 400, 193, 40, 430, 373, 449, 228, 267, + 399, 123, 321, 21, 195, 20, 19, 102, 138, 39, + 105, 86, 85, 142, 32, 34, 210, 89, 440, 385, + 126, 90, 93, 94, 637, 98, 36, 443, 390, 106, + 578, 9, 106, 391, 629, 493, 448, 700, 442, 103, + 104, 632, 628, 492, 450, 451, 451, 665, 654, 630, + 451, 451, 484, 494, 444, 683, 661, 418, 131, 418, + 451, 451, 126, 411, 383, 384, 677, 491, 476, 640, + 390, 126, 382, 567, 117, 118, 475, 111, 106, 390, + 9, 115, 90, 662, 135, 439, 122, 191, 459, 9, + 455, 192, 381, 648, 573, 423, 9, 457, 450, 109, + 380, 119, 125, 106, 409, 108, 369, 110, 100, 718, + 217, 716, 268, 709, 703, 702, 695, 419, 691, 419, + 9, 200, 682, 100, 642, 378, 371, 317, 265, 208, + 712, 686, 370, 679, 274, 453, 116, 214, 368, 212, + 213, 114, 113, 112, 5, 6, 318, 222, 100, 9, + 23, 578, 644, 319, 31, 674, 579, 9, 24, 673, + 672, 25, 26, 641, 497, 496, 480, 479, 374, 454, + 447, 376, 101, 425, 414, 107, 13, 12, 477, 394, + 452, 15, 387, 26, 690, 392, 217, 509, 707, 9, + 689, 200, 28, 27, 29, 30, 35, 99, 207, 205, + 26, 379, 634, 633, 33, 8, 575, 204, 202, 574, + 206, 37, 38, 214, 410, 212, 213, 377, 398, 203, + 402, 403, 408, 222, 510, 397, 395, 563, 404, 407, + 401, 498, 482, 478, 4, 100, 412, 10, 11, 33, + 693, 704, 375, 268, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 190, 372, 22, 136, + 137, 269, 134, 266, 215, 274, 413, 415, 408, 270, + 220, 406, 405, 511, 512, 407, 209, 226, 219, 216, + 516, 140, 218, 139, 515, 211, 197, 196, 420, 438, + 485, 581, 519, 143, 223, 582, 322, 521, 147, 229, + 272, 584, 324, 523, 149, 232, 461, 424, 386, 388, + 433, 124, 87, 88, 199, 421, 422, 91, 505, 502, + 514, 506, 17, 16, 14, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 422, 427, 427, 0, 0, 424, 0, 0, 425, 0, - 437, 0, 452, 454, 0, 119, 119, 431, 0, 0, - 432, 196, 0, 0, 0, 0, 0, 441, 442, 0, + 0, 0, 427, 0, 0, 0, 0, 0, 0, 374, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 456, 470, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 485, 0, 486, 477, 495, 496, 0, 0, 0, - 0, 0, 560, 491, 0, 119, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 497, - 0, 564, 86, 567, 0, 0, 0, 0, 0, 0, - 562, 0, 0, 0, 0, 561, 0, 0, 0, 0, - 0, 0, 0, 566, 568, 631, 0, 0, 565, 0, - 0, 0, 627, 0, 0, 0, 573, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 634, - 0, 635, 632, 0, 0, 0, 86, 639, 0, 0, - 641, 0, 645, 0, 0, 0, 0, 0, 0, 86, - 642, 643, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 426, 431, 431, 0, 0, 428, + 0, 0, 429, 0, 441, 0, 456, 458, 0, 125, + 125, 435, 0, 0, 436, 200, 0, 0, 0, 0, + 0, 445, 446, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 460, 474, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 489, 0, 490, 481, 499, + 500, 0, 0, 0, 0, 0, 564, 495, 0, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 646, 0, 0, 0, 0, 0, 649, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 652, 648, 654, - 0, 0, 0, 0, 0, 0, 0, 647, 0, 0, - 0, 656, 655, 659, 0, 0, 0, 0, 651, 653, + 0, 0, 0, 501, 0, 568, 90, 571, 0, 0, + 0, 0, 0, 0, 566, 0, 0, 0, 0, 565, + 0, 0, 0, 0, 0, 0, 0, 570, 572, 635, + 0, 0, 569, 0, 0, 0, 631, 0, 0, 0, + 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 638, 0, 639, 636, 0, 0, 0, + 90, 643, 0, 0, 645, 0, 649, 0, 0, 0, + 0, 0, 0, 90, 646, 647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 650, 0, 0, 0, 0, 0, + 653, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 656, 652, 658, 0, 0, 0, 0, 0, 0, + 0, 651, 0, 0, 0, 660, 659, 663, 0, 0, + 0, 0, 655, 657, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 663, 0, 665, 0, 660, 485, 0, 486, 667, - 0, 0, 0, 0, 0, 0, 116, 0, 672, 666, - 119, 0, 0, 674, 0, 0, 677, 662, 664, 676, - 0, 0, 119, 0, 681, 683, 0, 0, 0, 671, - 0, 0, 0, 0, 0, 0, 0, 116, 688, 690, - 684, 0, 0, 680, 0, 692, 0, 0, 0, 0, - 693, 694, 704, 119, 0, 0, 0, 702, 0, 707, - 709, 706, 0, 0, 0, 0, 711, 702, 710, 0, - 0, 713, 0, 695, 697, 483, 0, 33, 124, 121, + 0, 0, 0, 0, 0, 667, 0, 669, 0, 664, + 489, 0, 490, 671, 0, 0, 0, 0, 0, 0, + 122, 0, 676, 670, 125, 0, 0, 678, 0, 0, + 681, 666, 668, 680, 0, 0, 125, 0, 685, 687, + 0, 0, 0, 675, 0, 0, 0, 0, 0, 0, + 0, 122, 692, 694, 688, 0, 0, 684, 0, 696, + 0, 0, 0, 0, 697, 698, 708, 125, 0, 0, + 0, 706, 0, 711, 713, 710, 0, 0, 0, 0, + 715, 706, 714, 0, 0, 717, 0, 699, 701, 487, + 0, 33, 130, 127, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 0, 0, + 0, 0, 126, 0, 0, 0, 0, 0, 0, 0, + 390, 129, 128, 0, 0, 0, 486, 33, 130, 127, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 0, 0, 0, 0, 120, 0, - 0, 0, 0, 0, 0, 0, 386, 123, 122, 0, - 0, 0, 482, 33, 124, 121, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 0, 0, 0, 0, 120, 0, 0, 0, 0, 0, - 0, 0, 386, 123, 122, 0, 0, 430, 33, 124, - 121, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 0, 0, 0, 0, 120, - 0, 0, 0, 0, 0, 0, 0, 386, 123, 122, - 33, 124, 121, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 0, 0, 0, - 0, 120, 0, 0, 0, 0, 0, 0, 0, 0, - 123, 122, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 194, 88, 0, 0, 499, 41, 42, 43, 44, 45, + 81, 82, 83, 84, 0, 0, 0, 0, 126, 0, + 0, 0, 0, 0, 0, 0, 390, 129, 128, 0, + 0, 434, 33, 130, 127, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 433, 0, 194, 0, 0, 0, 197, 41, 42, 43, + 0, 0, 0, 126, 0, 0, 0, 0, 0, 0, + 0, 390, 129, 128, 33, 130, 127, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 0, 0, 0, 0, 0, 190, 0, 0, 0, - 0, 0, 0, 0, 194, 0, 0, 0, 197, 41, + 84, 0, 0, 0, 0, 126, 0, 0, 0, 0, + 0, 0, 0, 0, 129, 128, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 198, 92, 0, 0, 503, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 33, 414, - 197, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 0, 0, 0, 0, 437, 0, 198, 0, 0, 0, + 201, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 415, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 93, 581, 582, 583, 584, 585, 586, + 194, 0, 0, 0, 0, 0, 0, 0, 198, 0, + 0, 0, 201, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 33, 418, 201, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 419, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 92, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 97, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, - 617, 618, 619, 620, 621, 622, 576, 623, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 579, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, + 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, + 580, 627, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 583, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 392, 351, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 0, 0, 0, 0, 0, 217, 0, 0, - 0, 319, 229, 230, 231, 232, 233, 234, 235, 26, - 236, 237, 238, 239, 142, 141, 140, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 0, 221, 227, 220, 255, 256, 223, 28, - 27, 29, 257, 258, 259, 260, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 226, 321, 322, 323, 324, + 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 396, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 366, 367, 0, 0, 0, 0, + 0, 221, 0, 0, 0, 323, 233, 234, 235, 236, + 237, 238, 239, 26, 240, 241, 242, 243, 146, 145, + 144, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 0, 225, 231, 224, + 259, 260, 227, 28, 27, 29, 261, 262, 263, 264, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 316, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 0, 0, 0, 0, 0, 137, 0, 0, 0, 319, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 142, 141, 140, 158, 159, 160, 161, 162, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 320, 355, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 366, 367, 0, 0, 0, 0, 0, 141, + 0, 0, 0, 323, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 146, 145, 144, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 0, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 0, 0, 0, 0, 0, 513, - 0, 0, 0, 144, 520, 521, 522, 523, 524, 525, - 526, 514, 527, 528, 529, 530, 0, 0, 0, 531, - 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 516, 546, 547, 548, 549, 550, - 551, 552, 553, 554, 555, 556, 557, 558, 0, 0, - 0, 0, 0, 0, 0, 33, 397, 518, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 267, 0, 0, 0, 0, 271, 272, 273, - 274, 275, 276, 277, 26, 278, 279, 280, 281, 282, + 173, 174, 175, 176, 0, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 0, 0, + 0, 0, 0, 517, 0, 0, 0, 148, 524, 525, + 526, 527, 528, 529, 530, 518, 531, 532, 533, 534, + 0, 0, 0, 535, 536, 537, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 520, 550, + 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, + 561, 562, 0, 0, 0, 0, 0, 0, 0, 33, + 401, 522, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 271, 0, 0, 0, + 0, 275, 276, 277, 278, 279, 280, 281, 26, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 269, 306, 307, 308, 309, 310, 311, - 312, 389, 0, 0, 0, 0, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 303, 304, 305, 306, 307, 308, 309, 273, 310, 311, + 312, 313, 314, 315, 316, 393, 0, 0, 0, 0, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, + 81, 82, 83, 84, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, } var protoPact = [...]int16{ - 170, -1000, 130, 130, -1000, 151, 148, 188, 134, -1000, - -1000, -1000, 259, 259, 188, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 254, 1853, 1273, 1853, 1853, 1333, - 1853, -1000, 178, -1000, 177, -1000, 176, 259, 259, 81, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 166, -1000, 126, 126, -1000, 155, 154, 178, 131, -1000, + -1000, -1000, 265, 265, 178, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 230, 1857, 1277, 1857, 1857, 1337, + 1857, -1000, 174, -1000, 149, -1000, 134, 265, 265, 73, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 73, -1000, -1000, 1333, 122, - 121, 120, 39, 1853, 119, -1000, -1000, -1000, -1000, 176, - 176, -1000, 1853, 906, 1273, 23, 130, 130, 1603, 39, - 130, -1000, -1000, -1000, 130, -1000, -1000, 257, -1000, -1000, - 1090, -1000, 251, 208, -1000, -1000, -1000, -1000, 111, 1495, - 106, 1760, 105, 1603, -1000, -1000, -1000, 133, 1549, 1853, - -1000, -1000, -1000, 80, 1853, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 153, -1000, 1277, 77, -1000, + -1000, -1000, 1337, 118, 117, 116, 48, 1857, 111, -1000, + -1000, -1000, -1000, 134, 134, -1000, 1857, 910, -1000, -1000, + -1000, 21, 126, 126, 1607, 48, 126, -1000, -1000, -1000, + 126, -1000, -1000, 261, -1000, -1000, 1094, -1000, 232, 223, + -1000, -1000, 103, 1499, 102, 1764, 101, 1607, -1000, -1000, + -1000, 130, 1553, 1857, -1000, -1000, -1000, 76, 1857, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 103, 205, -1000, 101, - -1000, -1000, 1152, 69, 44, 3, -1000, 1809, -1000, -1000, - -1000, -1000, -1000, -1000, 130, 1495, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1441, 1853, - 233, 1853, 1853, 1711, -1000, 79, 1853, 29, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 130, 1760, -1000, -1000, -1000, -1000, -1000, 147, 1214, + 100, 199, -1000, 99, -1000, -1000, 1156, 69, 41, -5, + -1000, 1813, -1000, -1000, -1000, -1000, -1000, -1000, 126, 1499, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 1445, 1857, 255, 1857, 1857, 1715, -1000, 74, + 1857, 30, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 126, 1764, -1000, -1000, -1000, + -1000, -1000, 152, 1218, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 130, -1000, -1000, 1853, 1853, 77, 1853, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 126, -1000, -1000, + 1857, 1857, 65, 1857, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 145, 1853, 39, 130, 205, -1000, - -1000, -1000, -1000, 1853, -1000, -1000, -1000, -1000, -1000, -1000, - 779, 779, -1000, -1000, -1000, -1000, 1028, 47, -10, 16, - -1000, -1000, 1853, 1853, 144, 11, -1000, 169, 116, 143, - 65, 60, 56, 257, -1000, 1853, 39, 246, -1000, -1000, - 82, 53, -1000, 168, -1000, 255, -1000, 141, 140, 1853, - 39, 245, -1000, -1000, -1000, 25, -1000, -1000, -1000, -1000, - 713, -1000, 32, -1000, 4, -1000, 15, -1000, -1000, 1853, - -1000, 139, 137, 240, 130, 130, 233, 965, 201, 1657, - 232, 130, -1000, 259, -1000, 1853, -1000, 34, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 14, 82, 130, 78, -1000, 221, 219, -1000, 9, 154, - 1387, -1, -1000, 12, -1000, -1000, -1000, -1000, -1000, 41, - -1000, -6, 217, 215, 14, -1000, -1000, -1000, -22, -1000, - -1000, 1273, 17, -1000, 72, -1000, -1000, 98, 1657, -1000, - -1000, -1000, -1000, 132, 1273, 1853, 1853, 75, 1853, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 151, 1857, + 48, 126, 199, -1000, -1000, -1000, -1000, 1857, -1000, -1000, + -1000, -1000, -1000, -1000, 783, 783, -1000, -1000, -1000, -1000, + 1032, 46, -1, 15, -1000, -1000, 1857, 1857, 148, 13, + -1000, 169, 110, 147, 67, 66, 57, 261, -1000, 1857, + 48, 250, -1000, -1000, 84, 45, -1000, 167, -1000, 258, + -1000, 145, 144, 1857, 48, 257, -1000, -1000, -1000, 16, + -1000, -1000, -1000, -1000, 717, -1000, 35, -1000, 4, -1000, + 14, -1000, -1000, 1857, -1000, 143, 142, 256, 126, 126, + 255, 969, 212, 1661, 252, 126, -1000, 265, -1000, 1857, + -1000, 42, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 8, 84, 126, 82, -1000, 234, + 231, -1000, 7, 136, 1391, 3, -1000, 10, -1000, -1000, + -1000, -1000, -1000, 37, -1000, 2, 228, 227, 8, -1000, + -1000, -1000, -15, -1000, -1000, 1277, 38, -1000, 141, -1000, + -1000, 98, 1661, -1000, -1000, -1000, -1000, 129, 1277, 1857, + 1857, 63, 1857, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 14, - -1000, 257, -1000, 1333, -1000, 130, -1000, -1000, -1000, -1000, - 21, 9, -1000, 131, -1000, 25, 1333, 19, 59, 1853, + -1000, -1000, -1000, 8, -1000, 261, -1000, 1337, -1000, 126, + -1000, -1000, -1000, -1000, 23, 7, -1000, 128, -1000, 16, + 1337, 19, 53, 1857, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 844, -1000, -1000, -1000, 20, - 14, -1000, 130, -1000, -1000, -1000, -1000, 906, 130, -1000, - -1000, 71, 136, 104, 1853, 39, -1000, 130, 31, -1000, - 130, 115, -1000, 131, -1000, 100, 13, -1000, 1853, 39, - -1000, 130, 114, -1000, 130, -1000, -1000, -1000, 906, 213, - 210, -1000, -1000, -1000, 96, 130, -1000, -1000, 130, -1000, - -1000, 95, 130, -1000, 131, 9, 6, -1000, 94, 93, - 214, 130, 92, -1000, -1000, 131, 130, 113, -1000, 130, - 214, -1000, -1000, -1000, -1000, 130, -1000, 88, 130, -1000, - -1000, -1000, -1000, 86, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 848, + -1000, -1000, -1000, 22, 8, -1000, 126, -1000, -1000, -1000, + -1000, 910, 126, -1000, -1000, 138, 137, 133, 1857, 48, + -1000, 126, 34, -1000, 126, 108, -1000, 128, -1000, 97, + 18, -1000, 1857, 48, -1000, 126, 106, -1000, 126, -1000, + -1000, -1000, 910, 215, 209, -1000, -1000, -1000, 92, 126, + -1000, -1000, 126, -1000, -1000, 90, 126, -1000, 128, 7, + 12, -1000, 89, 88, 216, 126, 87, -1000, -1000, 128, + 126, 105, -1000, 126, 216, -1000, -1000, -1000, -1000, 126, + -1000, 85, 126, -1000, -1000, -1000, -1000, 83, -1000, } var protoPgo = [...]int16{ - 0, 354, 353, 352, 282, 221, 351, 350, 349, 348, - 347, 6, 19, 17, 346, 345, 41, 344, 15, 27, - 25, 11, 10, 8, 12, 343, 340, 9, 339, 338, - 20, 24, 337, 336, 335, 334, 332, 331, 330, 43, - 13, 329, 328, 327, 326, 325, 14, 324, 323, 322, - 32, 321, 320, 319, 318, 34, 23, 317, 316, 315, - 313, 312, 311, 310, 309, 308, 307, 36, 46, 306, - 2, 18, 305, 304, 303, 302, 300, 299, 28, 22, - 21, 30, 298, 297, 35, 29, 296, 295, 293, 33, - 38, 290, 289, 31, 288, 26, 287, 284, 283, 7, - 267, 264, 16, 5, 0, 259, + 0, 357, 356, 355, 264, 211, 354, 353, 352, 351, + 350, 6, 19, 17, 349, 348, 347, 344, 343, 47, + 41, 15, 342, 27, 25, 11, 10, 8, 12, 341, + 340, 9, 339, 338, 20, 24, 336, 335, 334, 333, + 332, 331, 330, 43, 13, 329, 328, 327, 326, 325, + 14, 324, 323, 322, 32, 321, 320, 319, 317, 34, + 23, 316, 315, 314, 313, 312, 311, 310, 309, 308, + 307, 36, 46, 306, 2, 18, 304, 303, 302, 301, + 300, 299, 28, 22, 21, 30, 297, 294, 35, 29, + 293, 292, 291, 33, 38, 290, 289, 31, 288, 26, + 287, 286, 272, 7, 271, 270, 16, 5, 0, 235, } var protoR1 = [...]int8{ 0, 1, 1, 1, 1, 1, 1, 4, 6, 6, - 5, 5, 5, 5, 5, 5, 5, 5, 105, 105, - 104, 104, 103, 103, 2, 3, 7, 7, 7, 8, - 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, - 45, 45, 10, 11, 18, 18, 18, 18, 16, 21, - 21, 22, 22, 22, 25, 25, 25, 25, 25, 25, - 25, 25, 93, 93, 23, 23, 56, 55, 55, 54, - 54, 54, 54, 54, 54, 57, 57, 57, 17, 17, - 17, 17, 20, 20, 20, 29, 29, 24, 24, 24, - 26, 26, 26, 52, 52, 27, 27, 28, 28, 28, - 53, 53, 46, 46, 47, 47, 48, 48, 49, 49, - 50, 50, 51, 51, 39, 39, 39, 19, 19, 14, - 14, 15, 15, 13, 13, 12, 9, 9, 62, 62, - 64, 64, 61, 73, 73, 72, 72, 71, 71, 71, - 71, 71, 59, 59, 63, 63, 65, 65, 66, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 83, 83, 81, 81, 79, 79, 79, 82, 82, - 80, 80, 80, 30, 30, 76, 76, 77, 77, 78, - 78, 74, 74, 75, 75, 84, 87, 87, 86, 86, - 85, 85, 85, 85, 88, 88, 67, 70, 70, 69, - 69, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 58, 58, 58, 58, 89, 92, 92, 91, - 91, 90, 90, 90, 90, 60, 60, 60, 60, 94, - 97, 97, 96, 96, 95, 95, 95, 98, 98, 102, - 102, 101, 101, 100, 100, 99, 99, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, + 5, 5, 5, 5, 5, 5, 5, 5, 109, 109, + 108, 108, 107, 107, 2, 3, 7, 7, 7, 8, + 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, + 49, 49, 10, 11, 18, 18, 19, 20, 20, 22, + 22, 21, 21, 16, 25, 25, 26, 26, 26, 29, + 29, 29, 29, 29, 29, 29, 29, 97, 97, 27, + 27, 60, 59, 59, 58, 58, 58, 58, 58, 58, + 61, 61, 61, 17, 17, 17, 17, 24, 24, 24, + 33, 33, 28, 28, 28, 30, 30, 30, 56, 56, + 31, 31, 32, 32, 32, 57, 57, 50, 50, 51, + 51, 52, 52, 53, 53, 54, 54, 55, 55, 43, + 43, 43, 23, 23, 14, 14, 15, 15, 13, 13, + 12, 9, 9, 66, 66, 68, 68, 65, 77, 77, + 76, 76, 75, 75, 75, 75, 75, 63, 63, 67, + 67, 69, 69, 70, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 87, 87, 85, 85, + 83, 83, 83, 86, 86, 84, 84, 84, 34, 34, + 80, 80, 81, 81, 82, 82, 78, 78, 79, 79, + 88, 91, 91, 90, 90, 89, 89, 89, 89, 92, + 92, 71, 74, 74, 73, 73, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 62, 62, 62, + 62, 93, 96, 96, 95, 95, 94, 94, 94, 94, + 64, 64, 64, 64, 98, 101, 101, 100, 100, 99, + 99, 99, 102, 102, 106, 106, 105, 105, 104, 104, + 103, 103, 37, 37, 37, 37, 37, 37, 37, 37, + 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, + 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, + 37, 37, 37, 37, 37, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, - 38, 38, 35, 35, 35, 35, 35, 35, 35, 35, + 38, 38, 38, 38, 38, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, + 35, 35, 35, 35, 35, 35, } var protoR2 = [...]int8{ @@ -633,27 +644,27 @@ var protoR2 = [...]int8{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 0, 1, 0, 4, 4, 3, 4, 4, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, - 1, 3, 5, 5, 1, 3, 1, 3, 3, 1, - 1, 1, 1, 1, 1, 2, 2, 2, 2, 1, - 2, 2, 1, 2, 3, 2, 1, 1, 2, 1, - 2, 2, 2, 2, 1, 3, 2, 3, 1, 3, - 5, 3, 1, 1, 1, 1, 1, 1, 3, 2, - 3, 2, 3, 1, 3, 1, 1, 3, 2, 3, - 1, 3, 1, 2, 1, 2, 1, 2, 1, 2, - 1, 2, 1, 2, 1, 1, 1, 3, 2, 1, - 2, 1, 2, 1, 1, 2, 3, 1, 8, 9, - 9, 10, 6, 0, 1, 2, 1, 1, 1, 1, - 2, 1, 5, 6, 7, 8, 5, 6, 6, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 4, 4, 1, 3, 1, 3, 3, 1, 3, - 1, 3, 3, 1, 2, 4, 1, 4, 1, 3, - 3, 1, 3, 1, 3, 6, 1, 2, 2, 1, - 1, 1, 1, 1, 4, 5, 6, 1, 2, 2, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 6, 7, 5, 6, 6, 0, 1, 2, - 1, 1, 1, 2, 1, 6, 7, 5, 6, 6, - 1, 2, 2, 1, 1, 1, 1, 6, 9, 4, - 3, 1, 2, 2, 1, 1, 1, 1, 1, 1, + 1, 3, 5, 5, 1, 1, 2, 1, 1, 1, + 2, 1, 2, 3, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 1, 2, 2, 1, 2, 3, + 2, 1, 1, 2, 1, 2, 2, 2, 2, 1, + 3, 2, 3, 1, 3, 5, 3, 1, 1, 1, + 1, 1, 1, 3, 2, 3, 2, 3, 1, 3, + 1, 1, 3, 2, 3, 1, 3, 1, 2, 1, + 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, + 1, 1, 3, 2, 1, 2, 1, 2, 1, 1, + 2, 3, 1, 8, 9, 9, 10, 6, 0, 1, + 2, 1, 1, 1, 1, 2, 1, 5, 6, 7, + 8, 5, 6, 6, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 4, 4, 1, 3, + 1, 3, 3, 1, 3, 1, 3, 3, 1, 2, + 4, 1, 4, 1, 3, 3, 1, 3, 1, 3, + 6, 1, 2, 2, 1, 1, 1, 1, 1, 4, + 5, 6, 1, 2, 2, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 6, 7, 5, + 6, 6, 0, 1, 2, 1, 1, 1, 2, 1, + 6, 7, 5, 6, 6, 1, 2, 2, 1, 1, + 1, 1, 6, 9, 4, 3, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -682,157 +693,157 @@ var protoR2 = [...]int8{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, + 1, 1, 1, 1, 1, 1, } var protoChk = [...]int16{ - -1000, -1, -2, -3, -4, 8, 9, -104, -105, 53, - -4, -4, 52, 52, -6, -5, -7, -8, -11, -67, - -84, -89, -94, 2, 10, 13, 14, 45, 44, 46, - 47, 53, -93, 4, -93, -5, -93, 11, 12, -40, - -31, 7, 8, 9, 10, 11, 12, 13, 14, 15, + -1000, -1, -2, -3, -4, 8, 9, -108, -109, 53, + -4, -4, 52, 52, -6, -5, -7, -8, -11, -71, + -88, -93, -98, 2, 10, 13, 14, 45, 44, 46, + 47, 53, -97, 4, -97, -5, -97, 11, 12, -44, + -35, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, -18, -31, -16, 66, -31, - -31, -46, -40, 60, -31, 53, 4, 53, -104, -93, - -93, -104, 60, 52, 60, -46, 55, 55, 55, -40, - 55, -104, -104, -31, -21, -22, -23, -93, -25, -31, - 55, 6, 65, 64, 5, -31, -16, 67, -70, -104, - -87, -104, -92, -91, -90, -60, -62, 2, -39, -48, - 21, 20, 19, -42, 60, -34, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, -97, -104, -104, -56, - 56, -55, -54, -57, 2, -17, -31, 68, 6, 17, - 5, 6, 17, 5, 56, -69, -68, -58, -84, -67, - -89, -83, -64, -11, -61, -65, -76, 2, -39, -47, - 40, 38, -66, 43, -78, -41, 60, 39, -33, 7, - 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, + 46, 47, 48, 49, 50, -21, -20, -22, -18, -19, + -35, -16, 66, -35, -35, -50, -44, 60, -35, 53, + 4, 53, -108, -97, -97, -108, 60, 52, -19, -20, + 60, -50, 55, 55, 55, -44, 55, -108, -108, -35, + -25, -26, -27, -97, -29, -35, 55, 6, 65, 64, + 5, 67, -74, -108, -91, -108, -96, -95, -94, -64, + -66, 2, -43, -52, 21, 20, 19, -46, 60, -38, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + -101, -108, -108, -60, 56, -59, -58, -61, 2, -17, + -35, 68, 6, 17, 5, 6, 17, 5, 56, -73, + -72, -62, -88, -71, -93, -87, -68, -11, -65, -69, + -80, 2, -43, -51, 40, 38, -70, 43, -82, -45, + 60, 39, -37, 7, 8, 9, 10, 11, 12, 13, + 15, 16, 17, 18, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 41, + 42, 47, 48, 49, 50, 56, -90, -89, -11, -92, + -81, 2, -42, 43, -82, 7, 8, 9, 10, 11, + 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 44, 45, 46, 47, 48, 49, 50, 56, -94, 53, + 37, -54, -48, 60, -40, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 41, 42, 47, 48, 49, - 50, 56, -86, -85, -11, -88, -77, 2, -38, 43, - -78, 7, 8, 9, 10, 11, 12, 13, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, -35, 60, + -44, 56, -100, -99, -11, -102, 2, 48, 56, -59, + 61, 53, 61, 53, 54, 54, -33, -28, -32, -27, + 63, 68, -44, 2, -108, -72, 37, -54, -35, -85, + -83, 5, -35, -35, -85, -78, -79, -97, -35, 60, + -44, 63, -108, -89, 52, -86, -84, -34, 5, 65, + -108, -35, -35, 60, -44, 52, -35, -108, -99, -35, + -24, -26, -28, -30, 68, -24, -60, 62, -57, 69, + 2, -28, 69, 58, 69, -35, -35, 52, 53, -23, + 61, 68, 41, 55, 52, 53, -108, 61, -108, 61, + -35, -36, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, -34, 61, 53, 41, 5, 52, + 52, -35, 5, -106, 66, -56, 69, 2, -31, -26, + -28, 62, 69, 61, 69, -44, 52, 52, 5, -108, + -108, -83, -14, 69, -13, -15, -9, -12, -21, 5, + 42, -77, -76, -75, -10, -63, -67, 2, 14, -53, + 37, -47, 60, -39, 7, 8, 9, 10, 11, 12, + 13, 15, 16, 17, 18, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, - 48, 49, 50, 56, -90, 53, 37, -50, -44, 60, - -36, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, -31, 60, -40, 56, -96, -95, - -11, -98, 2, 48, 56, -55, 61, 53, 61, 53, - 54, 54, -29, -24, -28, -23, 63, 68, -40, 2, - -104, -68, 37, -50, -31, -81, -79, 5, -31, -31, - -81, -74, -75, -93, -31, 60, -40, 63, -104, -85, - 52, -82, -80, -30, 5, 65, -104, -31, -31, 60, - -40, 52, -31, -104, -95, -31, -20, -22, -24, -26, - 68, -20, -56, 62, -53, 69, 2, -24, 69, 58, - 69, -31, -31, 52, 53, -19, 61, 68, 41, 55, - 52, 53, -104, 61, -104, 61, -31, -32, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - -30, 61, 53, 41, 5, 52, 52, -31, 5, -102, - 66, -52, 69, 2, -27, -22, -24, 62, 69, 61, - 69, -40, 52, 52, 5, -104, -104, -79, -14, 69, - -13, -15, -9, -12, -18, 5, 42, -73, -72, -71, - -10, -59, -63, 2, 14, -49, 37, -43, 60, -35, - 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, - 18, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 5, - -104, -93, -31, 61, -104, -19, -80, -104, -30, 42, - 5, 5, -103, -19, 53, 50, 49, -51, -45, 60, - -37, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 50, 69, 61, 69, -24, 69, 5, - 5, -104, -19, 69, -13, -12, 61, 52, 56, -71, - 53, -18, -31, -31, 60, -40, -104, -19, -46, -104, - 55, -19, -103, -19, -103, -102, -46, 67, 60, -40, - -27, 55, -19, -104, -19, -104, -21, -104, 52, 52, - 52, -31, -104, 62, -70, 55, -103, -104, 55, 67, - -31, -70, 55, -104, -21, 5, 5, 56, -70, -101, - -104, 56, -70, -103, -103, -19, 55, -19, 56, 56, - -100, -99, -11, 2, -104, 56, -103, -70, 55, -104, - -99, -104, 56, -70, 56, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 5, -108, -97, -35, 61, -108, -23, + -84, -108, -34, 42, 5, 5, -107, -23, 53, 50, + 49, -55, -49, 60, -41, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 50, 69, 61, + 69, -28, 69, 5, 5, -108, -23, 69, -13, -12, + 61, 52, 56, -75, 53, -21, -35, -35, 60, -44, + -108, -23, -50, -108, 55, -23, -107, -23, -107, -106, + -50, 67, 60, -44, -31, 55, -23, -108, -23, -108, + -25, -108, 52, 52, 52, -35, -108, 62, -74, 55, + -107, -108, 55, 67, -35, -74, 55, -108, -25, 5, + 5, 56, -74, -105, -108, 56, -74, -107, -107, -23, + 55, -23, 56, 56, -104, -103, -11, 2, -108, 56, + -107, -74, 55, -108, -103, -108, 56, -74, 56, } var protoDef = [...]int16{ -2, -2, -2, -2, 3, 0, 0, 0, 20, 18, 4, 5, 0, 0, -2, 9, 10, 11, 12, 13, 14, 15, 16, 17, 0, 0, 0, 0, 0, 0, - 0, 19, 0, 62, 0, 8, 21, 0, 0, 21, - 30, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, - 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, - 526, 527, 528, 529, 530, 0, 44, 46, 0, 0, - 0, 0, 102, 0, 0, 24, 63, 25, 26, 21, - 21, 29, 0, 0, 0, 0, 21, 21, -2, 103, - 21, 27, 28, 31, 21, 49, 50, 51, 52, 53, - 0, 54, 0, 0, 59, 45, 47, 48, 0, -2, - 0, -2, 0, -2, 220, 221, 222, 224, 0, 0, - 114, 115, 116, 106, 0, 34, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 0, -2, 43, 0, - 65, 66, -2, 69, 74, 0, 78, 0, 55, 58, - 61, 56, 57, 60, 21, -2, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 0, 0, - 0, 0, 0, 0, 176, 104, 0, 273, 32, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 274, 275, 276, 277, 278, - 279, 21, -2, 189, 190, 191, 192, 193, 0, 0, - 178, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, 21, 219, 223, 0, 0, 110, 0, - 38, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 0, 0, 107, 21, -2, 233, - 234, 235, 236, 0, 64, 68, 70, 71, 72, 73, - 0, 0, 76, 85, 86, 87, 0, 0, 0, 0, - 196, 199, 0, 0, 0, 0, 163, 165, 0, 0, - 0, 21, 21, 181, 183, 0, 105, 0, 185, 188, - 0, 0, 168, 170, 173, 0, 216, 0, 0, 0, - 111, 0, 35, 229, 232, 0, 77, 82, 83, 84, - 0, 75, 0, 89, 0, 98, 0, 100, 79, 0, - 81, 0, 0, 0, 21, 21, 0, 0, 0, -2, - 0, 21, 179, 0, 180, 0, 33, 0, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 21, 0, 21, 0, 174, 0, 0, 39, 23, 0, - 0, 0, 91, 0, 93, 95, 96, 88, 97, 0, - 99, 0, 0, 0, 21, 161, 162, 164, 0, 118, - 119, 0, 123, -2, 127, 166, 167, 0, -2, 136, - 137, 138, 139, 141, 0, 0, 0, 108, 0, 36, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 21, - 175, 182, 184, 0, 194, 21, 169, 177, 171, 172, - 0, 23, 227, 23, 22, 0, 0, 0, 112, 0, - 40, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, - 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, - 483, 484, 485, 486, 90, 0, 92, 101, 80, 0, - 21, 214, 21, 117, 120, -2, 125, 0, 21, 135, - 140, 0, 0, 0, 0, 109, 146, 21, 0, 195, - 21, 0, 225, 23, 228, 21, 0, 240, 0, 113, - 94, 21, 0, 212, 21, 215, 126, 132, 0, 0, - 0, 37, 147, 148, 0, 21, 226, 237, 21, 239, - 41, 0, 21, 213, 23, 23, 0, 128, 0, 0, - -2, 21, 0, 42, 142, 23, 21, 0, 129, 21, - -2, 244, 245, 246, 130, 21, 143, 0, 21, 238, - 243, 131, 144, 0, 145, + 0, 19, 0, 67, 0, 8, 21, 0, 0, 21, + 30, 492, 493, 494, 495, 496, 497, 498, 499, 500, + 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, + 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, + 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, + 531, 532, 533, 534, 535, 0, 51, 0, 47, -2, + 44, 45, 0, 0, 0, 0, 107, 0, 0, 24, + 68, 25, 26, 21, 21, 29, 0, 0, -2, 52, + 46, 0, 21, 21, -2, 108, 21, 27, 28, 31, + 21, 54, 55, 56, 57, 58, 0, 59, 0, 0, + 64, 53, 0, -2, 0, -2, 0, -2, 225, 226, + 227, 229, 0, 0, 119, 120, 121, 111, 0, 34, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 0, -2, 43, 0, 70, 71, -2, 74, 79, 0, + 83, 0, 60, 63, 66, 61, 62, 65, 21, -2, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 0, 0, 0, 0, 0, 0, 181, 109, + 0, 278, 32, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 279, + 280, 281, 282, 283, 284, 21, -2, 194, 195, 196, + 197, 198, 0, 0, 183, 325, 326, 327, 328, 329, + 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 366, 21, 224, 228, + 0, 0, 115, 0, 38, 406, 407, 408, 409, 410, + 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 0, 0, + 112, 21, -2, 238, 239, 240, 241, 0, 69, 73, + 75, 76, 77, 78, 0, 0, 81, 90, 91, 92, + 0, 0, 0, 0, 201, 204, 0, 0, 0, 0, + 168, 170, 0, 0, 0, 21, 21, 186, 188, 0, + 110, 0, 190, 193, 0, 0, 173, 175, 178, 0, + 221, 0, 0, 0, 116, 0, 35, 234, 237, 0, + 82, 87, 88, 89, 0, 80, 0, 94, 0, 103, + 0, 105, 84, 0, 86, 0, 0, 0, 21, 21, + 0, 0, 0, -2, 0, 21, 184, 0, 185, 0, + 33, 0, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 21, 0, 21, 0, 179, 0, + 0, 39, 23, 0, 0, 0, 96, 0, 98, 100, + 101, 93, 102, 0, 104, 0, 0, 0, 21, 166, + 167, 169, 0, 123, 124, 0, 128, -2, 132, 171, + 172, 0, -2, 141, 142, 143, 144, 146, 0, 0, + 0, 113, 0, 36, 367, 368, 369, 370, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 405, 21, 180, 187, 189, 0, 199, 21, + 174, 182, 176, 177, 0, 23, 232, 23, 22, 0, + 0, 0, 117, 0, 40, 449, 450, 451, 452, 453, + 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, + 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, + 484, 485, 486, 487, 488, 489, 490, 491, 95, 0, + 97, 106, 85, 0, 21, 219, 21, 122, 125, -2, + 130, 0, 21, 140, 145, 0, 0, 0, 0, 114, + 151, 21, 0, 200, 21, 0, 230, 23, 233, 21, + 0, 245, 0, 118, 99, 21, 0, 217, 21, 220, + 131, 137, 0, 0, 0, 37, 152, 153, 0, 21, + 231, 242, 21, 244, 41, 0, 21, 218, 23, 23, + 0, 133, 0, 0, -2, 21, 0, 42, 147, 23, + 21, 0, 134, 21, -2, 249, 250, 251, 135, 21, + 148, 0, 21, 243, 248, 136, 149, 0, 150, } var protoTok1 = [...]int8{ @@ -1448,81 +1459,106 @@ protodefault: case 44: protoDollar = protoS[protopt-1 : protopt+1] { - fieldReferenceNode := ast.NewFieldReferenceNode(protoDollar[1].id) - protoVAL.optNms = &fieldRefSlices{refs: []*ast.FieldReferenceNode{fieldReferenceNode}} + protoVAL.refRaw = ast.NewFieldReferenceNode(protoDollar[1].id) } case 45: - protoDollar = protoS[protopt-3 : protopt+1] + protoDollar = protoS[protopt-1 : protopt+1] { - protoDollar[1].optNms.refs = append(protoDollar[1].optNms.refs, ast.NewFieldReferenceNode(protoDollar[3].id)) - protoDollar[1].optNms.dots = append(protoDollar[1].optNms.dots, protoDollar[2].b) - protoVAL.optNms = protoDollar[1].optNms + protoVAL.refRaw = protoDollar[1].refRaw } case 46: - protoDollar = protoS[protopt-1 : protopt+1] + protoDollar = protoS[protopt-2 : protopt+1] { - protoVAL.optNms = &fieldRefSlices{refs: []*ast.FieldReferenceNode{protoDollar[1].ref}} + protoVAL.ref = newNodeWithRunes(protoDollar[1].refRaw, protoDollar[2].b) } case 47: - protoDollar = protoS[protopt-3 : protopt+1] + protoDollar = protoS[protopt-1 : protopt+1] { - protoDollar[1].optNms.refs = append(protoDollar[1].optNms.refs, protoDollar[3].ref) - protoDollar[1].optNms.dots = append(protoDollar[1].optNms.dots, protoDollar[2].b) - protoVAL.optNms = protoDollar[1].optNms + protoVAL.ref = newNodeWithRunes(protoDollar[1].refRaw) } case 48: - protoDollar = protoS[protopt-3 : protopt+1] + protoDollar = protoS[protopt-1 : protopt+1] + { + protolex.(*protoLex).Error("unexpected '.'") + protoVAL.ref = protoDollar[1].ref + } + case 49: + protoDollar = protoS[protopt-1 : protopt+1] { - protoVAL.ref = ast.NewExtensionFieldReferenceNode(protoDollar[1].b, protoDollar[2].tid, protoDollar[3].b) + protoVAL.optNms = &fieldRefSlices{refs: []*ast.FieldReferenceNode{protoDollar[1].ref.Node}, dots: protoDollar[1].ref.Runes} + } + case 50: + protoDollar = protoS[protopt-2 : protopt+1] + { + protoDollar[1].optNms.refs = append(protoDollar[1].optNms.refs, protoDollar[2].ref.Node) + protoDollar[1].optNms.dots = append(protoDollar[1].optNms.dots, protoDollar[2].ref.Runes...) + protoVAL.optNms = protoDollar[1].optNms } case 51: protoDollar = protoS[protopt-1 : protopt+1] { - protoVAL.v = toStringValueNode(protoDollar[1].str) + protoVAL.optNms = &fieldRefSlices{refs: []*ast.FieldReferenceNode{protoDollar[1].ref.Node}, dots: protoDollar[1].ref.Runes} + } + case 52: + protoDollar = protoS[protopt-2 : protopt+1] + { + protoDollar[1].optNms.refs = append(protoDollar[1].optNms.refs, protoDollar[2].ref.Node) + protoDollar[1].optNms.dots = append(protoDollar[1].optNms.dots, protoDollar[2].ref.Runes...) + protoVAL.optNms = protoDollar[1].optNms } case 53: + protoDollar = protoS[protopt-3 : protopt+1] + { + protoVAL.refRaw = ast.NewExtensionFieldReferenceNode(protoDollar[1].b, protoDollar[2].tid, protoDollar[3].b) + } + case 56: + protoDollar = protoS[protopt-1 : protopt+1] + { + protoVAL.v = toStringValueNode(protoDollar[1].str) + } + case 58: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.v = protoDollar[1].id } - case 54: + case 59: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.v = protoDollar[1].f } - case 55: + case 60: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.v = ast.NewSignedFloatLiteralNode(protoDollar[1].b, protoDollar[2].f) } - case 56: + case 61: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.v = ast.NewSignedFloatLiteralNode(protoDollar[1].b, protoDollar[2].f) } - case 57: + case 62: protoDollar = protoS[protopt-2 : protopt+1] { f := ast.NewSpecialFloatLiteralNode(protoDollar[2].id.ToKeyword()) protoVAL.v = ast.NewSignedFloatLiteralNode(protoDollar[1].b, f) } - case 58: + case 63: protoDollar = protoS[protopt-2 : protopt+1] { f := ast.NewSpecialFloatLiteralNode(protoDollar[2].id.ToKeyword()) protoVAL.v = ast.NewSignedFloatLiteralNode(protoDollar[1].b, f) } - case 59: + case 64: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.v = protoDollar[1].i } - case 60: + case 65: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.v = ast.NewPositiveUintLiteralNode(protoDollar[1].b, protoDollar[2].i) } - case 61: + case 66: protoDollar = protoS[protopt-2 : protopt+1] { if protoDollar[2].i.Val > math.MaxInt64+1 { @@ -1532,17 +1568,17 @@ protodefault: protoVAL.v = ast.NewNegativeIntLiteralNode(protoDollar[1].b, protoDollar[2].i) } } - case 62: + case 67: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.str = []*ast.StringLiteralNode{protoDollar[1].s} } - case 63: + case 68: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.str = append(protoDollar[1].str, protoDollar[2].s) } - case 64: + case 69: protoDollar = protoS[protopt-3 : protopt+1] { if protoDollar[2].msgLitFlds == nil { @@ -1552,12 +1588,12 @@ protodefault: protoVAL.v = ast.NewMessageLiteralNode(protoDollar[1].b, fields, delimiters, protoDollar[3].b) } } - case 65: + case 70: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.v = ast.NewMessageLiteralNode(protoDollar[1].b, nil, nil, protoDollar[2].b) } - case 68: + case 73: protoDollar = protoS[protopt-2 : protopt+1] { if protoDollar[1].msgLitFlds != nil { @@ -1567,7 +1603,7 @@ protodefault: protoVAL.msgLitFlds = protoDollar[2].msgLitFlds } } - case 69: + case 74: protoDollar = protoS[protopt-1 : protopt+1] { if protoDollar[1].msgLitFld != nil { @@ -1576,7 +1612,7 @@ protodefault: protoVAL.msgLitFlds = nil } } - case 70: + case 75: protoDollar = protoS[protopt-2 : protopt+1] { if protoDollar[1].msgLitFld != nil { @@ -1585,7 +1621,7 @@ protodefault: protoVAL.msgLitFlds = nil } } - case 71: + case 76: protoDollar = protoS[protopt-2 : protopt+1] { if protoDollar[1].msgLitFld != nil { @@ -1594,65 +1630,65 @@ protodefault: protoVAL.msgLitFlds = nil } } - case 72: + case 77: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.msgLitFlds = nil } - case 73: + case 78: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.msgLitFlds = nil } - case 74: + case 79: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgLitFlds = nil } - case 75: + case 80: protoDollar = protoS[protopt-3 : protopt+1] { - if protoDollar[1].ref != nil && protoDollar[2].b != nil { - protoVAL.msgLitFld = ast.NewMessageFieldNode(protoDollar[1].ref, protoDollar[2].b, protoDollar[3].v) + if protoDollar[1].refRaw != nil && protoDollar[2].b != nil { + protoVAL.msgLitFld = ast.NewMessageFieldNode(protoDollar[1].refRaw, protoDollar[2].b, protoDollar[3].v) } else { protoVAL.msgLitFld = nil } } - case 76: + case 81: protoDollar = protoS[protopt-2 : protopt+1] { - if protoDollar[1].ref != nil && protoDollar[2].v != nil { - protoVAL.msgLitFld = ast.NewMessageFieldNode(protoDollar[1].ref, nil, protoDollar[2].v) + if protoDollar[1].refRaw != nil && protoDollar[2].v != nil { + protoVAL.msgLitFld = ast.NewMessageFieldNode(protoDollar[1].refRaw, nil, protoDollar[2].v) } else { protoVAL.msgLitFld = nil } } - case 77: + case 82: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.msgLitFld = nil } - case 78: + case 83: protoDollar = protoS[protopt-1 : protopt+1] { - protoVAL.ref = ast.NewFieldReferenceNode(protoDollar[1].id) + protoVAL.refRaw = ast.NewFieldReferenceNode(protoDollar[1].id) } - case 79: + case 84: protoDollar = protoS[protopt-3 : protopt+1] { - protoVAL.ref = ast.NewExtensionFieldReferenceNode(protoDollar[1].b, protoDollar[2].cid.toIdentValueNode(nil), protoDollar[3].b) + protoVAL.refRaw = ast.NewExtensionFieldReferenceNode(protoDollar[1].b, protoDollar[2].cid.toIdentValueNode(nil), protoDollar[3].b) } - case 80: + case 85: protoDollar = protoS[protopt-5 : protopt+1] { - protoVAL.ref = ast.NewAnyTypeReferenceNode(protoDollar[1].b, protoDollar[2].cid.toIdentValueNode(nil), protoDollar[3].b, protoDollar[4].cid.toIdentValueNode(nil), protoDollar[5].b) + protoVAL.refRaw = ast.NewAnyTypeReferenceNode(protoDollar[1].b, protoDollar[2].cid.toIdentValueNode(nil), protoDollar[3].b, protoDollar[4].cid.toIdentValueNode(nil), protoDollar[5].b) } - case 81: + case 86: protoDollar = protoS[protopt-3 : protopt+1] { - protoVAL.ref = nil + protoVAL.refRaw = nil } - case 88: + case 93: protoDollar = protoS[protopt-3 : protopt+1] { if protoDollar[2].msgLitFlds == nil { @@ -1662,12 +1698,12 @@ protodefault: protoVAL.v = ast.NewMessageLiteralNode(protoDollar[1].b, fields, delimiters, protoDollar[3].b) } } - case 89: + case 94: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.v = ast.NewMessageLiteralNode(protoDollar[1].b, nil, nil, protoDollar[2].b) } - case 90: + case 95: protoDollar = protoS[protopt-3 : protopt+1] { if protoDollar[2].sl == nil { @@ -1676,29 +1712,29 @@ protodefault: protoVAL.v = ast.NewArrayLiteralNode(protoDollar[1].b, protoDollar[2].sl.vals, protoDollar[2].sl.commas, protoDollar[3].b) } } - case 91: + case 96: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.v = ast.NewArrayLiteralNode(protoDollar[1].b, nil, nil, protoDollar[2].b) } - case 92: + case 97: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.v = ast.NewArrayLiteralNode(protoDollar[1].b, nil, nil, protoDollar[3].b) } - case 93: + case 98: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.sl = &valueSlices{vals: []ast.ValueNode{protoDollar[1].v}} } - case 94: + case 99: protoDollar = protoS[protopt-3 : protopt+1] { protoDollar[1].sl.vals = append(protoDollar[1].sl.vals, protoDollar[3].v) protoDollar[1].sl.commas = append(protoDollar[1].sl.commas, protoDollar[2].b) protoVAL.sl = protoDollar[1].sl } - case 97: + case 102: protoDollar = protoS[protopt-3 : protopt+1] { if protoDollar[2].sl == nil { @@ -1707,183 +1743,183 @@ protodefault: protoVAL.v = ast.NewArrayLiteralNode(protoDollar[1].b, protoDollar[2].sl.vals, protoDollar[2].sl.commas, protoDollar[3].b) } } - case 98: + case 103: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.v = ast.NewArrayLiteralNode(protoDollar[1].b, nil, nil, protoDollar[2].b) } - case 99: + case 104: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.v = ast.NewArrayLiteralNode(protoDollar[1].b, nil, nil, protoDollar[3].b) } - case 100: + case 105: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.sl = &valueSlices{vals: []ast.ValueNode{protoDollar[1].v}} } - case 101: + case 106: protoDollar = protoS[protopt-3 : protopt+1] { protoDollar[1].sl.vals = append(protoDollar[1].sl.vals, protoDollar[3].v) protoDollar[1].sl.commas = append(protoDollar[1].sl.commas, protoDollar[2].b) protoVAL.sl = protoDollar[1].sl } - case 102: + case 107: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.tid = protoDollar[1].cid.toIdentValueNode(nil) } - case 103: + case 108: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.tid = protoDollar[2].cid.toIdentValueNode(protoDollar[1].b) } - case 104: + case 109: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.tid = protoDollar[1].cid.toIdentValueNode(nil) } - case 105: + case 110: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.tid = protoDollar[2].cid.toIdentValueNode(protoDollar[1].b) } - case 106: + case 111: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.tid = protoDollar[1].cid.toIdentValueNode(nil) } - case 107: + case 112: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.tid = protoDollar[2].cid.toIdentValueNode(protoDollar[1].b) } - case 108: + case 113: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.tid = protoDollar[1].cid.toIdentValueNode(nil) } - case 109: + case 114: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.tid = protoDollar[2].cid.toIdentValueNode(protoDollar[1].b) } - case 110: + case 115: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.tid = protoDollar[1].cid.toIdentValueNode(nil) } - case 111: + case 116: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.tid = protoDollar[2].cid.toIdentValueNode(protoDollar[1].b) } - case 112: + case 117: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.tid = protoDollar[1].cid.toIdentValueNode(nil) } - case 113: + case 118: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.tid = protoDollar[2].cid.toIdentValueNode(protoDollar[1].b) } - case 117: + case 122: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.cmpctOpts = ast.NewCompactOptionsNode(protoDollar[1].b, protoDollar[2].opts.options, protoDollar[2].opts.commas, protoDollar[3].b) } - case 118: + case 123: protoDollar = protoS[protopt-2 : protopt+1] { protolex.(*protoLex).Error("compact options must have at least one option") protoVAL.cmpctOpts = ast.NewCompactOptionsNode(protoDollar[1].b, nil, nil, protoDollar[2].b) } - case 119: + case 124: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.opts = &compactOptionSlices{options: []*ast.OptionNode{protoDollar[1].opt.Node}, commas: protoDollar[1].opt.Runes} } - case 120: + case 125: protoDollar = protoS[protopt-2 : protopt+1] { protoDollar[1].opts.options = append(protoDollar[1].opts.options, protoDollar[2].opt.Node) protoDollar[1].opts.commas = append(protoDollar[1].opts.commas, protoDollar[2].opt.Runes...) protoVAL.opts = protoDollar[1].opts } - case 121: + case 126: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.opts = &compactOptionSlices{options: []*ast.OptionNode{protoDollar[1].opt.Node}, commas: protoDollar[1].opt.Runes} } - case 122: + case 127: protoDollar = protoS[protopt-2 : protopt+1] { protoDollar[1].opts.options = append(protoDollar[1].opts.options, protoDollar[2].opt.Node) protoDollar[1].opts.commas = append(protoDollar[1].opts.commas, protoDollar[2].opt.Runes...) protoVAL.opts = protoDollar[1].opts } - case 123: + case 128: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.opt = newNodeWithRunes(protoDollar[1].optRaw) } - case 124: + case 129: protoDollar = protoS[protopt-1 : protopt+1] { protolex.(*protoLex).Error("unexpected ','") protoVAL.opt = protoDollar[1].opt } - case 125: + case 130: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.opt = newNodeWithRunes(protoDollar[1].optRaw, protoDollar[2].b) } - case 126: + case 131: protoDollar = protoS[protopt-3 : protopt+1] { optName := ast.NewOptionNameNode(protoDollar[1].optNms.refs, protoDollar[1].optNms.dots) protoVAL.optRaw = ast.NewCompactOptionNode(optName, protoDollar[2].b, protoDollar[3].v) } - case 127: + case 132: protoDollar = protoS[protopt-1 : protopt+1] { optName := ast.NewOptionNameNode(protoDollar[1].optNms.refs, protoDollar[1].optNms.dots) protolex.(*protoLex).Error("compact option must have a value") protoVAL.optRaw = ast.NewCompactOptionNode(optName, nil, nil) } - case 128: + case 133: protoDollar = protoS[protopt-8 : protopt+1] { protoVAL.grp = ast.NewGroupNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id.ToKeyword(), protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, nil, protoDollar[6].b, protoDollar[7].msgElements, protoDollar[8].b) } - case 129: + case 134: protoDollar = protoS[protopt-9 : protopt+1] { protoVAL.grp = ast.NewGroupNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id.ToKeyword(), protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, protoDollar[6].cmpctOpts, protoDollar[7].b, protoDollar[8].msgElements, protoDollar[9].b) } - case 130: + case 135: protoDollar = protoS[protopt-9 : protopt+1] { protoVAL.msgGrp = newNodeWithRunes(ast.NewGroupNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id.ToKeyword(), protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, nil, protoDollar[6].b, protoDollar[7].msgElements, protoDollar[8].b), protoDollar[9].bs...) } - case 131: + case 136: protoDollar = protoS[protopt-10 : protopt+1] { protoVAL.msgGrp = newNodeWithRunes(ast.NewGroupNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id.ToKeyword(), protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, protoDollar[6].cmpctOpts, protoDollar[7].b, protoDollar[8].msgElements, protoDollar[9].b), protoDollar[10].bs...) } - case 132: + case 137: protoDollar = protoS[protopt-6 : protopt+1] { protoVAL.oo = newNodeWithRunes(ast.NewOneofNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id, protoDollar[3].b, protoDollar[4].ooElements, protoDollar[5].b), protoDollar[6].bs...) } - case 133: + case 138: protoDollar = protoS[protopt-0 : protopt+1] { protoVAL.ooElements = nil } - case 135: + case 140: protoDollar = protoS[protopt-2 : protopt+1] { if protoDollar[2].ooElement != nil { @@ -1892,7 +1928,7 @@ protodefault: protoVAL.ooElements = protoDollar[1].ooElements } } - case 136: + case 141: protoDollar = protoS[protopt-1 : protopt+1] { if protoDollar[1].ooElement != nil { @@ -1901,367 +1937,367 @@ protodefault: protoVAL.ooElements = nil } } - case 137: + case 142: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.ooElement = protoDollar[1].optRaw } - case 138: + case 143: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.ooElement = protoDollar[1].fld } - case 139: + case 144: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.ooElement = protoDollar[1].grp } - case 140: + case 145: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.ooElement = nil } - case 141: + case 146: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.ooElement = nil } - case 142: + case 147: protoDollar = protoS[protopt-5 : protopt+1] { protoVAL.fld = ast.NewFieldNode(nil, protoDollar[1].tid, protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, nil, protoDollar[5].b) } - case 143: + case 148: protoDollar = protoS[protopt-6 : protopt+1] { protoVAL.fld = ast.NewFieldNode(nil, protoDollar[1].tid, protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, protoDollar[5].cmpctOpts, protoDollar[6].b) } - case 144: + case 149: protoDollar = protoS[protopt-7 : protopt+1] { protoVAL.grp = ast.NewGroupNode(nil, protoDollar[1].id.ToKeyword(), protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, nil, protoDollar[5].b, protoDollar[6].msgElements, protoDollar[7].b) } - case 145: + case 150: protoDollar = protoS[protopt-8 : protopt+1] { protoVAL.grp = ast.NewGroupNode(nil, protoDollar[1].id.ToKeyword(), protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, protoDollar[5].cmpctOpts, protoDollar[6].b, protoDollar[7].msgElements, protoDollar[8].b) } - case 146: + case 151: protoDollar = protoS[protopt-5 : protopt+1] { semi, extra := protolex.(*protoLex).requireSemicolon(protoDollar[5].bs) protoVAL.mapFld = newNodeWithRunes(ast.NewMapFieldNode(protoDollar[1].mapType, protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, nil, semi), extra...) } - case 147: + case 152: protoDollar = protoS[protopt-6 : protopt+1] { semi, extra := protolex.(*protoLex).requireSemicolon(protoDollar[6].bs) protoVAL.mapFld = newNodeWithRunes(ast.NewMapFieldNode(protoDollar[1].mapType, protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, protoDollar[5].cmpctOpts, semi), extra...) } - case 148: + case 153: protoDollar = protoS[protopt-6 : protopt+1] { protoVAL.mapType = ast.NewMapTypeNode(protoDollar[1].id.ToKeyword(), protoDollar[2].b, protoDollar[3].id, protoDollar[4].b, protoDollar[5].tid, protoDollar[6].b) } - case 161: + case 166: protoDollar = protoS[protopt-4 : protopt+1] { // TODO: Tolerate a missing semicolon here. This currnelty creates a shift/reduce conflict // between `extensions 1 to 10` and `extensions 1` followed by `to = 10`. protoVAL.ext = newNodeWithRunes(ast.NewExtensionRangeNode(protoDollar[1].id.ToKeyword(), protoDollar[2].rngs.ranges, protoDollar[2].rngs.commas, nil, protoDollar[3].b), protoDollar[4].bs...) } - case 162: + case 167: protoDollar = protoS[protopt-4 : protopt+1] { semi, extra := protolex.(*protoLex).requireSemicolon(protoDollar[4].bs) protoVAL.ext = newNodeWithRunes(ast.NewExtensionRangeNode(protoDollar[1].id.ToKeyword(), protoDollar[2].rngs.ranges, protoDollar[2].rngs.commas, protoDollar[3].cmpctOpts, semi), extra...) } - case 163: + case 168: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.rngs = &rangeSlices{ranges: []*ast.RangeNode{protoDollar[1].rng}} } - case 164: + case 169: protoDollar = protoS[protopt-3 : protopt+1] { protoDollar[1].rngs.ranges = append(protoDollar[1].rngs.ranges, protoDollar[3].rng) protoDollar[1].rngs.commas = append(protoDollar[1].rngs.commas, protoDollar[2].b) protoVAL.rngs = protoDollar[1].rngs } - case 165: + case 170: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.rng = ast.NewRangeNode(protoDollar[1].i, nil, nil, nil) } - case 166: + case 171: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.rng = ast.NewRangeNode(protoDollar[1].i, protoDollar[2].id.ToKeyword(), protoDollar[3].i, nil) } - case 167: + case 172: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.rng = ast.NewRangeNode(protoDollar[1].i, protoDollar[2].id.ToKeyword(), nil, protoDollar[3].id.ToKeyword()) } - case 168: + case 173: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.rngs = &rangeSlices{ranges: []*ast.RangeNode{protoDollar[1].rng}} } - case 169: + case 174: protoDollar = protoS[protopt-3 : protopt+1] { protoDollar[1].rngs.ranges = append(protoDollar[1].rngs.ranges, protoDollar[3].rng) protoDollar[1].rngs.commas = append(protoDollar[1].rngs.commas, protoDollar[2].b) protoVAL.rngs = protoDollar[1].rngs } - case 170: + case 175: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.rng = ast.NewRangeNode(protoDollar[1].il, nil, nil, nil) } - case 171: + case 176: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.rng = ast.NewRangeNode(protoDollar[1].il, protoDollar[2].id.ToKeyword(), protoDollar[3].il, nil) } - case 172: + case 177: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.rng = ast.NewRangeNode(protoDollar[1].il, protoDollar[2].id.ToKeyword(), nil, protoDollar[3].id.ToKeyword()) } - case 173: + case 178: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.il = protoDollar[1].i } - case 174: + case 179: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.il = ast.NewNegativeIntLiteralNode(protoDollar[1].b, protoDollar[2].i) } - case 175: + case 180: protoDollar = protoS[protopt-4 : protopt+1] { // TODO: Tolerate a missing semicolon here. This currnelty creates a shift/reduce conflict // between `reserved 1 to 10` and `reserved 1` followed by `to = 10`. protoVAL.resvd = newNodeWithRunes(ast.NewReservedRangesNode(protoDollar[1].id.ToKeyword(), protoDollar[2].rngs.ranges, protoDollar[2].rngs.commas, protoDollar[3].b), protoDollar[4].bs...) } - case 177: + case 182: protoDollar = protoS[protopt-4 : protopt+1] { // TODO: Tolerate a missing semicolon here. This currnelty creates a shift/reduce conflict // between `reserved 1 to 10` and `reserved 1` followed by `to = 10`. protoVAL.resvd = newNodeWithRunes(ast.NewReservedRangesNode(protoDollar[1].id.ToKeyword(), protoDollar[2].rngs.ranges, protoDollar[2].rngs.commas, protoDollar[3].b), protoDollar[4].bs...) } - case 179: + case 184: protoDollar = protoS[protopt-3 : protopt+1] { semi, extra := protolex.(*protoLex).requireSemicolon(protoDollar[3].bs) protoVAL.resvd = newNodeWithRunes(ast.NewReservedNamesNode(protoDollar[1].id.ToKeyword(), protoDollar[2].names.names, protoDollar[2].names.commas, semi), extra...) } - case 180: + case 185: protoDollar = protoS[protopt-3 : protopt+1] { semi, extra := protolex.(*protoLex).requireSemicolon(protoDollar[3].bs) protoVAL.resvd = newNodeWithRunes(ast.NewReservedIdentifiersNode(protoDollar[1].id.ToKeyword(), protoDollar[2].names.idents, protoDollar[2].names.commas, semi), extra...) } - case 181: + case 186: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.names = &nameSlices{names: []ast.StringValueNode{toStringValueNode(protoDollar[1].str)}} } - case 182: + case 187: protoDollar = protoS[protopt-3 : protopt+1] { protoDollar[1].names.names = append(protoDollar[1].names.names, toStringValueNode(protoDollar[3].str)) protoDollar[1].names.commas = append(protoDollar[1].names.commas, protoDollar[2].b) protoVAL.names = protoDollar[1].names } - case 183: + case 188: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.names = &nameSlices{idents: []*ast.IdentNode{protoDollar[1].id}} } - case 184: + case 189: protoDollar = protoS[protopt-3 : protopt+1] { protoDollar[1].names.idents = append(protoDollar[1].names.idents, protoDollar[3].id) protoDollar[1].names.commas = append(protoDollar[1].names.commas, protoDollar[2].b) protoVAL.names = protoDollar[1].names } - case 185: + case 190: protoDollar = protoS[protopt-6 : protopt+1] { protoVAL.en = newNodeWithRunes(ast.NewEnumNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id, protoDollar[3].b, protoDollar[4].enElements, protoDollar[5].b), protoDollar[6].bs...) } - case 186: + case 191: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.enElements = prependRunes(toEnumElement, protoDollar[1].bs, nil) } - case 187: + case 192: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.enElements = prependRunes(toEnumElement, protoDollar[1].bs, protoDollar[2].enElements) } - case 188: + case 193: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.enElements = append(protoDollar[1].enElements, protoDollar[2].enElements...) } - case 189: + case 194: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.enElements = protoDollar[1].enElements } - case 190: + case 195: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.enElements = toElements[ast.EnumElement](toEnumElement, protoDollar[1].opt.Node, protoDollar[1].opt.Runes) } - case 191: + case 196: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.enElements = toElements[ast.EnumElement](toEnumElement, protoDollar[1].env.Node, protoDollar[1].env.Runes) } - case 192: + case 197: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.enElements = toElements[ast.EnumElement](toEnumElement, protoDollar[1].resvd.Node, protoDollar[1].resvd.Runes) } - case 193: + case 198: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.enElements = nil } - case 194: + case 199: protoDollar = protoS[protopt-4 : protopt+1] { semi, extra := protolex.(*protoLex).requireSemicolon(protoDollar[4].bs) protoVAL.env = newNodeWithRunes(ast.NewEnumValueNode(protoDollar[1].id, protoDollar[2].b, protoDollar[3].il, nil, semi), extra...) } - case 195: + case 200: protoDollar = protoS[protopt-5 : protopt+1] { semi, extra := protolex.(*protoLex).requireSemicolon(protoDollar[5].bs) protoVAL.env = newNodeWithRunes(ast.NewEnumValueNode(protoDollar[1].id, protoDollar[2].b, protoDollar[3].il, protoDollar[4].cmpctOpts, semi), extra...) } - case 196: + case 201: protoDollar = protoS[protopt-6 : protopt+1] { protoVAL.msg = newNodeWithRunes(ast.NewMessageNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id, protoDollar[3].b, protoDollar[4].msgElements, protoDollar[5].b), protoDollar[6].bs...) } - case 197: + case 202: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElements = prependRunes(toMessageElement, protoDollar[1].bs, nil) } - case 198: + case 203: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.msgElements = prependRunes(toMessageElement, protoDollar[1].bs, protoDollar[2].msgElements) } - case 199: + case 204: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.msgElements = append(protoDollar[1].msgElements, protoDollar[2].msgElements...) } - case 200: + case 205: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElements = protoDollar[1].msgElements } - case 201: + case 206: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElements = toElements[ast.MessageElement](toMessageElement, protoDollar[1].msgFld.Node, protoDollar[1].msgFld.Runes) } - case 202: + case 207: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElements = toElements[ast.MessageElement](toMessageElement, protoDollar[1].en.Node, protoDollar[1].en.Runes) } - case 203: + case 208: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElements = toElements[ast.MessageElement](toMessageElement, protoDollar[1].msg.Node, protoDollar[1].msg.Runes) } - case 204: + case 209: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElements = toElements[ast.MessageElement](toMessageElement, protoDollar[1].extend.Node, protoDollar[1].extend.Runes) } - case 205: + case 210: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElements = toElements[ast.MessageElement](toMessageElement, protoDollar[1].ext.Node, protoDollar[1].ext.Runes) } - case 206: + case 211: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElements = toElements[ast.MessageElement](toMessageElement, protoDollar[1].msgGrp.Node, protoDollar[1].msgGrp.Runes) } - case 207: + case 212: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElements = toElements[ast.MessageElement](toMessageElement, protoDollar[1].opt.Node, protoDollar[1].opt.Runes) } - case 208: + case 213: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElements = toElements[ast.MessageElement](toMessageElement, protoDollar[1].oo.Node, protoDollar[1].oo.Runes) } - case 209: + case 214: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElements = toElements[ast.MessageElement](toMessageElement, protoDollar[1].mapFld.Node, protoDollar[1].mapFld.Runes) } - case 210: + case 215: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElements = toElements[ast.MessageElement](toMessageElement, protoDollar[1].resvd.Node, protoDollar[1].resvd.Runes) } - case 211: + case 216: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElements = nil } - case 212: + case 217: protoDollar = protoS[protopt-6 : protopt+1] { semis, extra := protolex.(*protoLex).requireSemicolon(protoDollar[6].bs) protoVAL.msgFld = newNodeWithRunes(ast.NewFieldNode(protoDollar[1].id.ToKeyword(), protoDollar[2].tid, protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, nil, semis), extra...) } - case 213: + case 218: protoDollar = protoS[protopt-7 : protopt+1] { semis, extra := protolex.(*protoLex).requireSemicolon(protoDollar[7].bs) protoVAL.msgFld = newNodeWithRunes(ast.NewFieldNode(protoDollar[1].id.ToKeyword(), protoDollar[2].tid, protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, protoDollar[6].cmpctOpts, semis), extra...) } - case 214: + case 219: protoDollar = protoS[protopt-5 : protopt+1] { semis, extra := protolex.(*protoLex).requireSemicolon(protoDollar[5].bs) protoVAL.msgFld = newNodeWithRunes(ast.NewFieldNode(nil, protoDollar[1].tid, protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, nil, semis), extra...) } - case 215: + case 220: protoDollar = protoS[protopt-6 : protopt+1] { semis, extra := protolex.(*protoLex).requireSemicolon(protoDollar[6].bs) protoVAL.msgFld = newNodeWithRunes(ast.NewFieldNode(nil, protoDollar[1].tid, protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, protoDollar[5].cmpctOpts, semis), extra...) } - case 216: + case 221: protoDollar = protoS[protopt-6 : protopt+1] { protoVAL.extend = newNodeWithRunes(ast.NewExtendNode(protoDollar[1].id.ToKeyword(), protoDollar[2].tid, protoDollar[3].b, protoDollar[4].extElements, protoDollar[5].b), protoDollar[6].bs...) } - case 217: + case 222: protoDollar = protoS[protopt-0 : protopt+1] { protoVAL.extElements = nil } - case 219: + case 224: protoDollar = protoS[protopt-2 : protopt+1] { if protoDollar[2].extElement != nil { @@ -2270,7 +2306,7 @@ protodefault: protoVAL.extElements = protoDollar[1].extElements } } - case 220: + case 225: protoDollar = protoS[protopt-1 : protopt+1] { if protoDollar[1].extElement != nil { @@ -2279,133 +2315,133 @@ protodefault: protoVAL.extElements = nil } } - case 221: + case 226: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.extElement = protoDollar[1].fld } - case 222: + case 227: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.extElement = protoDollar[1].grp } - case 223: + case 228: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.extElement = nil } - case 224: + case 229: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.extElement = nil } - case 225: + case 230: protoDollar = protoS[protopt-6 : protopt+1] { protoVAL.fld = ast.NewFieldNode(protoDollar[1].id.ToKeyword(), protoDollar[2].tid, protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, nil, protoDollar[6].b) } - case 226: + case 231: protoDollar = protoS[protopt-7 : protopt+1] { protoVAL.fld = ast.NewFieldNode(protoDollar[1].id.ToKeyword(), protoDollar[2].tid, protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, protoDollar[6].cmpctOpts, protoDollar[7].b) } - case 227: + case 232: protoDollar = protoS[protopt-5 : protopt+1] { protoVAL.fld = ast.NewFieldNode(nil, protoDollar[1].tid, protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, nil, protoDollar[5].b) } - case 228: + case 233: protoDollar = protoS[protopt-6 : protopt+1] { protoVAL.fld = ast.NewFieldNode(nil, protoDollar[1].tid, protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, protoDollar[5].cmpctOpts, protoDollar[6].b) } - case 229: + case 234: protoDollar = protoS[protopt-6 : protopt+1] { protoVAL.svc = newNodeWithRunes(ast.NewServiceNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id, protoDollar[3].b, protoDollar[4].svcElements, protoDollar[5].b), protoDollar[6].bs...) } - case 230: + case 235: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.svcElements = prependRunes(toServiceElement, protoDollar[1].bs, nil) } - case 231: + case 236: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.svcElements = prependRunes(toServiceElement, protoDollar[1].bs, protoDollar[2].svcElements) } - case 232: + case 237: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.svcElements = append(protoDollar[1].svcElements, protoDollar[2].svcElements...) } - case 233: + case 238: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.svcElements = protoDollar[1].svcElements } - case 234: + case 239: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.svcElements = toElements[ast.ServiceElement](toServiceElement, protoDollar[1].opt.Node, protoDollar[1].opt.Runes) } - case 235: + case 240: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.svcElements = toElements[ast.ServiceElement](toServiceElement, protoDollar[1].mtd.Node, protoDollar[1].mtd.Runes) } - case 236: + case 241: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.svcElements = nil } - case 237: + case 242: protoDollar = protoS[protopt-6 : protopt+1] { semi, extra := protolex.(*protoLex).requireSemicolon(protoDollar[6].bs) protoVAL.mtd = newNodeWithRunes(ast.NewRPCNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id, protoDollar[3].mtdMsgType, protoDollar[4].id.ToKeyword(), protoDollar[5].mtdMsgType, semi), extra...) } - case 238: + case 243: protoDollar = protoS[protopt-9 : protopt+1] { protoVAL.mtd = newNodeWithRunes(ast.NewRPCNodeWithBody(protoDollar[1].id.ToKeyword(), protoDollar[2].id, protoDollar[3].mtdMsgType, protoDollar[4].id.ToKeyword(), protoDollar[5].mtdMsgType, protoDollar[6].b, protoDollar[7].mtdElements, protoDollar[8].b), protoDollar[9].bs...) } - case 239: + case 244: protoDollar = protoS[protopt-4 : protopt+1] { protoVAL.mtdMsgType = ast.NewRPCTypeNode(protoDollar[1].b, protoDollar[2].id.ToKeyword(), protoDollar[3].tid, protoDollar[4].b) } - case 240: + case 245: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.mtdMsgType = ast.NewRPCTypeNode(protoDollar[1].b, nil, protoDollar[2].tid, protoDollar[3].b) } - case 241: + case 246: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.mtdElements = prependRunes(toMethodElement, protoDollar[1].bs, nil) } - case 242: + case 247: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.mtdElements = prependRunes(toMethodElement, protoDollar[1].bs, protoDollar[2].mtdElements) } - case 243: + case 248: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.mtdElements = append(protoDollar[1].mtdElements, protoDollar[2].mtdElements...) } - case 244: + case 249: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.mtdElements = protoDollar[1].mtdElements } - case 245: + case 250: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.mtdElements = toElements[ast.RPCElement](toMethodElement, protoDollar[1].opt.Node, protoDollar[1].opt.Runes) } - case 246: + case 251: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.mtdElements = nil