diff --git a/ast/field.go b/ast/field.go index 8c010bfc..fc1bf7ff 100644 --- a/ast/field.go +++ b/ast/field.go @@ -90,10 +90,10 @@ func NewFieldNode(label *KeywordNode, fieldType IdentValueNode, name *IdentNode, if tag == nil { panic("tag is nil") } - if semicolon == nil { - panic("semicolon is nil") + numChildren := 4 + if semicolon != nil { + numChildren++ } - numChildren := 5 if label != nil { numChildren++ } @@ -108,7 +108,9 @@ func NewFieldNode(label *KeywordNode, fieldType IdentValueNode, name *IdentNode, if opts != nil { children = append(children, opts) } - children = append(children, semicolon) + if semicolon != nil { + children = append(children, semicolon) + } return &FieldNode{ compositeNode: compositeNode{ diff --git a/parser/parser_test.go b/parser/parser_test.go index 842938b6..d9be337d 100644 --- a/parser/parser_test.go +++ b/parser/parser_test.go @@ -194,6 +194,78 @@ func TestLenientParse_SemicolonLess(t *testing.T) { reserved "FOO";; }`, }, + "oneof-options": { + Error: `syntax = "proto3"; + message Foo { + oneof bar { + option (foo) = 1 + } + }`, + NoError: `syntax = "proto3"; + message Foo { + oneof bar { + option (foo) = 1; + }; + }`, + }, + "oneof-field": { + Error: `syntax = "proto3"; + message Foo { + oneof bar { + int32 baz = 1 + } + }`, + NoError: `syntax = "proto3"; + message Foo { + oneof bar { + int32 baz = 1; + }; + }`, + }, + "oneof-field-options": { + Error: `syntax = "proto3"; + message Foo { + oneof bar { + int32 baz = 1 [foo = 1] + } + }`, + NoError: `syntax = "proto3"; + message Foo { + oneof bar { + int32 baz = 1 [foo = 1]; + }; + }`, + }, + "extension-field": { + Error: `syntax = "proto3"; + extend Foo { + int32 bar = 1 + }`, + NoError: `syntax = "proto3"; + extend Foo { + int32 bar = 1; + }`, + }, + "extension-field-cardinality": { + Error: `syntax = "proto3"; + extend Foo { + repeated int32 bar = 1 + }`, + NoError: `syntax = "proto3"; + extend Foo { + repeated int32 bar = 1; + }`, + }, + "extension-field-options": { + Error: `syntax = "proto3"; + extend Foo { + int32 bar = 1 [foo = 1] + }`, + NoError: `syntax = "proto3"; + extend Foo { + int32 bar = 1 [foo = 1]; + }`, + }, } for name, input := range inputs { name, input := name, input diff --git a/parser/proto.y b/parser/proto.y index 7b85030c..7d3c84dd 100644 --- a/parser/proto.y +++ b/parser/proto.y @@ -84,7 +84,7 @@ import ( %type fileBody fileElement fileElements %type importDecl %type packageDecl -%type optionDecl compactOption +%type optionDecl compactOption oneofOptionDecl %type optionDeclWithEmptyDecls %type compactOptionDecls %type extensionName messageLiteralFieldName @@ -129,6 +129,7 @@ import ( %type methodDecl %type methodElement methodElements methodBody %type methodMessageType +%type semicolon %type semicolons semicolonList // same for terminals @@ -228,6 +229,14 @@ semicolons : semicolonList { $$ = nil } +semicolon : ';' { + $$ = $1 + } | + { + protolex.(*protoLex).Error("expected ';'") + $$ = nil + } + syntaxDecl : _SYNTAX '=' stringLit ';' { $$ = ast.NewSyntaxNode($1.ToKeyword(), $2, toStringValueNode($3), $4) } @@ -317,6 +326,11 @@ optionDecl : _OPTION optionName '=' optionValue ';' { $$ = ast.NewOptionNode($1.ToKeyword(), optName, $3, $4, $5) } +oneofOptionDecl : _OPTION optionName '=' optionValue semicolon { + optName := ast.NewOptionNameNode($2.refs, $2.dots) + $$ = ast.NewOptionNode($1.ToKeyword(), optName, $3, $4, $5) + } + optionDeclWithEmptyDecls : _OPTION optionName '=' optionValue semicolons { optName := ast.NewOptionNameNode($2.refs, $2.dots) semi, extra := protolex.(*protoLex).requireSemicolon($5) @@ -649,7 +663,7 @@ oneofElements : oneofElements oneofElement { } } -oneofElement : optionDecl { +oneofElement : oneofOptionDecl { $$ = $1 } | oneofFieldDecl { @@ -665,10 +679,10 @@ oneofElement : optionDecl { $$ = nil } -oneofFieldDecl : oneofElementTypeIdent identifier '=' _INT_LIT ';' { +oneofFieldDecl : oneofElementTypeIdent identifier '=' _INT_LIT semicolon { $$ = ast.NewFieldNode(nil, $1, $2, $3, $4, nil, $5) } - | oneofElementTypeIdent identifier '=' _INT_LIT compactOptions ';' { + | oneofElementTypeIdent identifier '=' _INT_LIT compactOptions semicolon { $$ = ast.NewFieldNode(nil, $1, $2, $3, $4, $5, $6) } @@ -964,16 +978,16 @@ extensionElement : extensionFieldDecl { $$ = nil } -extensionFieldDecl : fieldCardinality notGroupElementTypeIdent identifier '=' _INT_LIT ';' { +extensionFieldDecl : fieldCardinality notGroupElementTypeIdent identifier '=' _INT_LIT semicolon { $$ = ast.NewFieldNode($1.ToKeyword(), $2, $3, $4, $5, nil, $6) } - | fieldCardinality notGroupElementTypeIdent identifier '=' _INT_LIT compactOptions ';' { + | fieldCardinality notGroupElementTypeIdent identifier '=' _INT_LIT compactOptions semicolon { $$ = ast.NewFieldNode($1.ToKeyword(), $2, $3, $4, $5, $6, $7) } - | extElementTypeIdent identifier '=' _INT_LIT ';' { + | extElementTypeIdent identifier '=' _INT_LIT semicolon { $$ = ast.NewFieldNode(nil, $1, $2, $3, $4, nil, $5) } - | extElementTypeIdent identifier '=' _INT_LIT compactOptions ';' { + | extElementTypeIdent identifier '=' _INT_LIT compactOptions semicolon { $$ = ast.NewFieldNode(nil, $1, $2, $3, $4, $5, $6) } diff --git a/parser/proto.y.go b/parser/proto.y.go index a726f167..1a33bc37 100644 --- a/parser/proto.y.go +++ b/parser/proto.y.go @@ -241,388 +241,384 @@ var protoExca = [...]int16{ 1, 7, -2, 0, -1, 106, - 56, 191, + 56, 194, -2, 0, -1, 108, - 56, 213, + 56, 216, -2, 0, -1, 129, - 56, 192, + 56, 195, -2, 0, -1, 194, - 56, 179, + 56, 182, -2, 0, -1, 196, - 56, 214, + 56, 217, -2, 0, -1, 247, - 56, 226, + 56, 229, -2, 0, -1, 252, - 56, 65, - 62, 65, + 56, 68, + 62, 68, -2, 0, -1, 333, - 56, 180, + 56, 183, -2, 0, -1, 392, - 56, 227, + 56, 230, -2, 0, -1, 421, - 56, 191, + 56, 194, -2, 0, -1, 422, - 56, 213, + 56, 216, -2, 0, -1, 429, - 56, 123, + 56, 126, -2, 0, -1, 499, - 56, 124, + 56, 127, -2, 0, - -1, 659, - 56, 191, + -1, 662, + 56, 194, -2, 0, - -1, 682, - 56, 191, + -1, 686, + 56, 194, -2, 0, - -1, 695, - 56, 191, + -1, 701, + 56, 194, -2, 0, - -1, 698, - 56, 237, + -1, 704, + 56, 240, -2, 0, - -1, 702, - 56, 191, + -1, 708, + 56, 194, -2, 0, - -1, 704, - 56, 238, + -1, 710, + 56, 241, -2, 0, } const protoPrivate = 57344 -const protoLast = 1843 +const protoLast = 1849 var protoAct = [...]int16{ - 7, 40, 18, 128, 705, 424, 469, 91, 115, 567, - 562, 114, 409, 92, 457, 493, 456, 137, 500, 319, - 117, 195, 193, 136, 249, 143, 467, 393, 86, 89, - 90, 326, 94, 32, 34, 325, 334, 98, 251, 39, - 101, 267, 197, 318, 494, 36, 130, 656, 405, 120, - 480, 87, 102, 573, 693, 102, 477, 410, 99, 100, - 655, 479, 411, 695, 658, 583, 572, 423, 654, 426, - 672, 85, 661, 582, 571, 425, 426, 659, 603, 9, - 593, 481, 426, 577, 458, 426, 563, 426, 689, 458, - 426, 677, 331, 426, 426, 426, 105, 670, 426, 127, - 111, 112, 120, 570, 113, 119, 125, 109, 194, 120, - 410, 247, 403, 404, 552, 248, 116, 410, 9, 9, - 402, 601, 256, 476, 102, 555, 435, 433, 434, 432, - 431, 401, 199, 554, 201, 584, 435, 433, 425, 400, - 678, 591, 428, 104, 459, 417, 314, 315, 316, 459, - 104, 86, 322, 323, 328, 317, 126, 103, 389, 9, - 329, 5, 6, 712, 708, 104, 102, 703, 699, 691, - 586, 581, 330, 327, 580, 9, 265, 688, 96, 579, - 398, 391, 384, 332, 264, 702, 682, 429, 422, 421, - 420, 110, 108, 107, 321, 106, 324, 335, 96, 96, - 9, 700, 686, 683, 388, 674, 9, 669, 663, 588, - 585, 489, 386, 23, 31, 667, 666, 560, 390, 483, - 199, 24, 201, 482, 25, 26, 396, 9, 462, 452, - 430, 419, 13, 12, 605, 685, 495, 558, 26, 385, - 427, 263, 261, 387, 15, 684, 602, 97, 95, 707, - 394, 260, 258, 262, 256, 28, 27, 29, 30, 35, - 576, 26, 407, 259, 575, 414, 561, 33, 415, 416, - 559, 412, 397, 496, 37, 38, 549, 320, 485, 96, - 33, 4, 8, 418, 10, 11, 697, 704, 395, 246, - 392, 399, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 22, 196, 21, 134, 336, 333, - 20, 132, 135, 453, 341, 337, 153, 140, 498, 499, - 129, 19, 133, 151, 139, 503, 138, 198, 502, 131, - 253, 436, 252, 450, 475, 564, 335, 607, 505, 202, - 144, 608, 328, 268, 507, 203, 157, 339, 610, 270, - 509, 205, 160, 437, 406, 408, 470, 118, 255, 491, - 17, 327, 16, 14, 3, 2, 1, 0, 0, 0, - 451, 0, 455, 0, 0, 0, 454, 0, 0, 0, + 7, 40, 18, 128, 711, 409, 114, 605, 469, 115, + 568, 424, 563, 92, 91, 457, 493, 456, 494, 500, + 319, 195, 136, 467, 143, 249, 326, 193, 86, 89, + 90, 393, 94, 117, 325, 334, 251, 98, 267, 39, + 101, 197, 318, 130, 87, 85, 32, 34, 480, 477, + 102, 405, 120, 102, 701, 658, 584, 659, 36, 479, + 410, 573, 661, 657, 583, 411, 423, 426, 607, 572, + 664, 99, 100, 662, 425, 9, 595, 578, 574, 481, + 458, 426, 564, 426, 458, 426, 426, 694, 681, 120, + 426, 426, 426, 127, 331, 674, 553, 410, 571, 102, + 111, 112, 120, 105, 113, 119, 125, 109, 194, 116, + 410, 247, 403, 404, 682, 248, 476, 603, 9, 9, + 402, 556, 256, 593, 434, 718, 435, 433, 669, 555, + 432, 199, 435, 201, 431, 401, 104, 585, 433, 714, + 459, 708, 425, 400, 459, 104, 314, 315, 316, 126, + 428, 86, 322, 323, 328, 103, 417, 9, 104, 389, + 329, 709, 317, 104, 102, 705, 696, 9, 321, 693, + 9, 587, 330, 265, 582, 581, 580, 398, 391, 384, + 332, 264, 686, 429, 422, 421, 327, 420, 110, 108, + 107, 106, 5, 6, 96, 324, 96, 335, 96, 607, + 687, 673, 666, 589, 388, 586, 489, 386, 31, 671, + 670, 561, 483, 482, 23, 462, 452, 430, 390, 199, + 419, 201, 24, 13, 12, 25, 26, 608, 559, 396, + 495, 690, 427, 689, 263, 261, 604, 9, 385, 713, + 387, 26, 96, 9, 577, 97, 262, 95, 260, 258, + 394, 26, 576, 562, 256, 15, 28, 27, 29, 30, + 259, 560, 550, 320, 407, 414, 33, 496, 415, 416, + 35, 412, 485, 37, 38, 397, 4, 33, 8, 10, + 11, 703, 710, 418, 395, 246, 392, 22, 196, 399, + 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 21, 134, 336, 333, 20, 132, 135, 453, + 341, 337, 153, 140, 498, 499, 129, 19, 133, 151, + 139, 503, 138, 198, 502, 131, 253, 252, 475, 565, + 610, 436, 506, 450, 202, 144, 335, 611, 268, 508, + 203, 157, 328, 339, 613, 270, 510, 205, 160, 437, + 406, 408, 470, 118, 255, 491, 501, 137, 17, 16, + 14, 3, 2, 1, 0, 0, 0, 455, 0, 451, + 0, 0, 0, 0, 327, 454, 0, 0, 0, 0, 0, 0, 0, 0, 0, 460, 0, 0, 0, 461, 0, 463, 464, 0, 0, 394, 0, 0, 0, 466, 0, 0, 0, 0, 0, 0, 119, 119, 0, 0, - 0, 0, 256, 468, 468, 0, 0, 0, 478, 484, - 465, 194, 0, 0, 0, 487, 0, 0, 86, 0, - 119, 0, 472, 0, 0, 473, 0, 551, 0, 0, - 497, 116, 0, 486, 488, 490, 199, 501, 201, 0, - 0, 0, 0, 0, 550, 556, 557, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 553, 0, 0, - 0, 0, 0, 119, 0, 0, 0, 0, 569, 0, - 568, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 578, 0, 0, 574, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 589, 590, 0, - 0, 0, 0, 0, 0, 0, 0, 501, 587, 0, - 0, 0, 592, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 256, 0, 468, 468, 0, 0, 0, 484, + 478, 194, 0, 0, 465, 487, 0, 0, 86, 472, + 119, 0, 0, 0, 116, 497, 473, 552, 0, 0, + 0, 0, 0, 0, 488, 199, 490, 201, 486, 0, + 0, 0, 0, 0, 0, 557, 558, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 551, 554, 0, + 0, 0, 0, 119, 0, 0, 0, 0, 0, 0, + 570, 569, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 575, 0, 0, 579, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 86, 591, 592, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 588, + 0, 0, 0, 594, 590, 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, 0, 0, 596, 594, 599, 0, 0, 597, - 595, 0, 0, 0, 0, 0, 0, 604, 0, 0, - 0, 598, 0, 600, 0, 0, 0, 0, 0, 657, - 0, 660, 662, 0, 0, 86, 119, 0, 0, 0, - 0, 0, 0, 668, 0, 0, 665, 116, 671, 664, - 0, 0, 0, 0, 0, 0, 0, 0, 673, 0, - 0, 0, 0, 0, 676, 0, 675, 0, 0, 0, - 0, 0, 0, 679, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 598, 0, 601, 0, 0, + 0, 0, 596, 0, 0, 0, 599, 0, 597, 0, + 0, 0, 0, 600, 606, 602, 0, 0, 0, 0, + 0, 0, 660, 0, 0, 0, 86, 119, 663, 665, + 0, 116, 668, 0, 0, 672, 0, 0, 0, 0, + 675, 667, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 676, 0, 678, 0, 677, 0, 0, 0, + 0, 679, 0, 0, 680, 0, 683, 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, 0, 0, 0, 119, 0, 0, - 0, 0, 569, 681, 568, 680, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 687, 0, 0, 0, - 690, 0, 0, 0, 0, 0, 692, 0, 0, 698, - 694, 696, 0, 0, 0, 0, 0, 0, 0, 701, - 0, 706, 0, 0, 710, 0, 709, 706, 566, 711, - 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, 410, - 123, 122, 0, 0, 0, 565, 33, 124, 121, 41, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 119, 0, 0, 0, 0, 0, 685, 570, 569, 684, + 0, 119, 0, 0, 0, 116, 688, 0, 0, 0, + 692, 0, 0, 0, 695, 691, 0, 0, 0, 0, + 697, 0, 0, 0, 704, 0, 698, 699, 0, 0, + 0, 700, 702, 0, 0, 707, 0, 712, 706, 0, + 716, 0, 715, 712, 567, 717, 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, 410, 123, 122, 0, 0, - 471, 33, 124, 121, 41, 42, 43, 44, 45, 46, + 0, 566, 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, 410, 123, 122, 0, 0, 471, 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, 410, 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, 254, + 88, 0, 0, 492, 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, - 410, 123, 122, 33, 124, 121, 41, 42, 43, 44, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 474, + 0, 254, 0, 0, 0, 257, 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, 254, 88, 0, 0, 492, 41, 42, + 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, + 0, 0, 0, 254, 0, 0, 0, 257, 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, 474, 0, 254, 0, 0, 0, 257, + 0, 0, 0, 0, 0, 0, 0, 33, 458, 257, 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, 250, - 0, 0, 0, 0, 0, 0, 0, 254, 0, 0, - 0, 257, 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, 458, 257, 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, 459, 41, 42, 43, 44, 45, 46, 47, + 81, 82, 83, 84, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 459, 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, 142, 0, 0, 0, 88, 161, + 162, 163, 164, 165, 166, 167, 149, 168, 169, 170, + 171, 156, 155, 154, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 0, + 150, 159, 148, 187, 188, 152, 145, 146, 147, 189, + 190, 191, 192, 0, 0, 141, 0, 0, 0, 0, + 0, 0, 158, 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, 142, 0, - 0, 0, 88, 161, 162, 163, 164, 165, 166, 167, - 149, 168, 169, 170, 171, 156, 155, 154, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 0, 150, 159, 148, 187, 188, 152, - 145, 146, 147, 189, 190, 191, 192, 0, 0, 141, - 0, 0, 0, 0, 0, 0, 158, 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, 611, 612, 613, 614, 615, 616, 617, 618, 619, - 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, - 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, - 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, - 650, 651, 652, 606, 653, 0, 0, 0, 0, 0, - 200, 0, 0, 0, 609, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 156, 155, 154, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 0, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 204, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 266, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 0, 0, 0, 0, 0, 504, 0, - 0, 0, 269, 510, 511, 512, 513, 514, 515, 516, - 149, 517, 518, 519, 520, 0, 0, 0, 521, 522, - 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, - 533, 534, 535, 506, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 0, 0, 0, - 0, 0, 0, 0, 33, 320, 508, 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, 338, 0, 0, 0, 0, 342, 343, 344, 345, - 346, 347, 348, 26, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 340, 377, 378, 379, 380, 381, 382, 383, - 413, 0, 0, 0, 0, 41, 42, 43, 44, 45, + 0, 0, 0, 0, 0, 0, 93, 614, 615, 616, + 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, + 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, + 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, + 647, 648, 649, 650, 651, 652, 653, 654, 655, 609, + 656, 0, 0, 0, 0, 0, 200, 0, 0, 0, + 612, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 156, 155, 154, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 0, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 204, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 266, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 0, + 0, 0, 0, 0, 504, 0, 0, 0, 269, 511, + 512, 513, 514, 515, 516, 517, 505, 518, 519, 520, + 521, 0, 0, 0, 522, 523, 524, 525, 526, 527, + 528, 529, 530, 531, 532, 533, 534, 535, 536, 507, + 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, + 547, 548, 549, 0, 0, 0, 0, 0, 0, 0, + 33, 320, 509, 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, 338, 0, 0, + 0, 0, 342, 343, 344, 345, 346, 347, 348, 26, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, 374, 375, 376, 340, 377, + 378, 379, 380, 381, 382, 383, 413, 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, 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, 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, + 76, 77, 78, 79, 80, 81, 82, 83, 84, } var protoPact = [...]int16{ - 153, -1000, 147, 147, -1000, 181, 180, 211, 161, -1000, - -1000, -1000, 276, 276, 211, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 263, 1792, 1266, 1792, 1792, 1380, - 1792, -1000, 195, -1000, 194, -1000, 174, 276, 276, 106, + 184, -1000, 117, 117, -1000, 172, 171, 212, 155, -1000, + -1000, -1000, 273, 273, 212, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 262, 1798, 1272, 1798, 1798, 1386, + 1798, -1000, 194, -1000, 192, -1000, 190, 273, 273, 104, -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, 105, -1000, -1000, 1380, 140, - 138, 137, 64, 1792, 136, -1000, -1000, -1000, -1000, 174, - 174, -1000, 1792, 899, 1266, 32, 1326, 147, 1488, 64, - 147, -1000, -1000, -1000, 147, -1000, -1000, 275, -1000, -1000, - 1083, -1000, 246, 236, -1000, -1000, -1000, -1000, 128, 1326, + -1000, -1000, -1000, -1000, -1000, 103, -1000, -1000, 1386, 136, + 135, 134, 39, 1798, 133, -1000, -1000, -1000, -1000, 190, + 190, -1000, 1798, 905, 1272, 26, 1332, 117, 1494, 39, + 117, -1000, -1000, -1000, 117, -1000, -1000, 238, -1000, -1000, + 1089, -1000, 243, 229, -1000, -1000, -1000, -1000, 125, 1332, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 1542, 1792, 1792, 1792, 1380, 272, 1266, - 1792, 1792, 1650, -1000, -1000, -1000, -1000, 100, 1792, 29, + -1000, -1000, -1000, 1548, 1798, 1798, 1798, 1386, 258, 1272, + 1798, 1798, 1656, -1000, -1000, -1000, -1000, 100, 1798, 31, -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, 127, 1699, 126, 1488, -1000, -1000, -1000, - 159, 1542, 1792, 98, 1792, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 124, 1705, 123, 1494, -1000, -1000, -1000, + 154, 1548, 1798, 99, 1798, -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, 125, 224, -1000, 124, - -1000, -1000, 1145, 78, 59, -6, -1000, 1748, -1000, -1000, - -1000, -1000, -1000, -1000, 147, -1000, 1792, 1792, 85, 1792, + -1000, -1000, -1000, -1000, -1000, -1000, 122, 227, -1000, 121, + -1000, -1000, 1151, 82, 59, -3, -1000, 1754, -1000, -1000, + -1000, -1000, -1000, -1000, 117, -1000, 1798, 1798, 96, 1798, -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, 179, 135, 134, 133, 14, -1000, - 199, 90, 132, 178, 77, 76, 75, 275, -1000, 1792, - 64, 268, 147, 1699, -1000, -1000, -1000, -1000, -1000, 177, - 1207, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 168, 132, 130, 129, 13, -1000, + 191, 98, 128, 165, 81, 77, 71, 238, -1000, 1798, + 39, 266, 117, 1705, -1000, -1000, -1000, -1000, -1000, 164, + 1213, -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, 147, -1000, -1000, 1792, 176, 1792, - 64, 147, 224, -1000, -1000, -1000, -1000, 1792, -1000, -1000, - -1000, -1000, -1000, -1000, 772, 772, -1000, -1000, -1000, -1000, - 1021, 54, -8, 12, -1000, 171, 167, 1792, 64, 273, - 147, 1326, 1488, -1000, 158, 272, 958, 231, 899, 1596, - 271, -1000, -1000, 276, -1000, 1792, -1000, 53, -1000, -1000, + -1000, -1000, -1000, -1000, 117, -1000, -1000, 1798, 163, 1798, + 39, 117, 227, -1000, -1000, -1000, -1000, 1798, -1000, -1000, + -1000, -1000, -1000, -1000, 778, 778, -1000, -1000, -1000, -1000, + 1027, 47, -10, 10, -1000, 161, 160, 1798, 39, 267, + 117, 1332, 1494, -1000, 153, 258, 964, 225, 905, 1602, + 257, -1000, -1000, 273, -1000, 1798, -1000, 35, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 84, 72, 66, 65, -1000, 196, -1000, 265, - -1000, 165, 261, -1000, -1000, -1000, 20, -1000, -1000, -1000, - -1000, 706, -1000, 41, -1000, 5, -1000, -16, -1000, -1000, - 1792, -1000, 259, 255, -1000, 30, 123, 118, 115, -1000, - -1000, 4, -1000, -1000, 83, -1000, -1000, 157, 114, 1596, - -1000, -1000, -1000, -1000, 156, 1792, 1792, 81, 1792, -1000, + -1000, -1000, 79, 68, 66, 65, -1000, 187, -1000, 256, + -1000, 159, 248, -1000, -1000, -1000, 16, -1000, -1000, -1000, + -1000, 712, -1000, 36, -1000, 0, -1000, 9, -1000, -1000, + 1798, -1000, 247, 239, -1000, 24, 120, 119, 118, -1000, + -1000, -5, -1000, -1000, 85, -1000, -1000, 152, 115, 1602, + -1000, -1000, -1000, -1000, 150, 1272, 1798, 1798, 63, 1798, -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, 27, - 275, -1000, 1380, 26, 84, 147, -1000, -1000, 79, -1000, - 241, 25, 184, 1434, -1, -1000, -22, -1000, -1000, -1000, - -1000, -1000, 47, -1000, -5, 22, 19, -1000, 155, -1000, - -1000, -1000, -1000, 1266, 899, -1000, -1000, -1000, -1000, 164, - 163, 1792, 64, -1000, 154, 35, -1000, 147, -1000, -1000, - -1000, -1000, 17, -1000, 152, 20, 1380, 24, 80, 1792, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 23, 238, -1000, 1386, 22, 79, 117, -1000, -1000, 75, + -1000, 231, 15, 177, 1440, -6, -1000, -12, -1000, -1000, + -1000, -1000, -1000, 34, -1000, -7, 18, 17, -1000, 149, + -1000, -1000, -1000, -1000, 1272, 905, -1000, -1000, -1000, -1000, + 76, 158, 157, 1798, 39, -1000, 148, 33, -1000, 117, + -1000, -1000, -1000, -1000, 15, -1000, 146, -1000, 16, 1386, + 21, 54, 1798, -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, 837, -1000, -1000, -1000, 1326, - 131, -1000, 150, -1000, -1000, -1000, 240, 230, -1000, -1000, - -1000, -1000, -1000, 149, -1000, 122, 21, -1000, 1792, 64, - -1000, 113, 1326, -1000, 1, 8, -1000, -1000, 147, -1000, - -1000, -1000, 112, -1000, 148, 1326, 130, 111, 247, -1000, - -1000, 108, 1326, 147, 247, -1000, -1000, -1000, -1000, 107, - -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 843, -1000, + -1000, -1000, 1332, 127, -1000, 147, -1000, -1000, -1000, 905, + 228, 226, -1000, -1000, -1000, -1000, -1000, 146, -1000, 114, + 20, -1000, 1798, 39, -1000, 110, 1332, -1000, 146, 15, + -1, -1000, -1000, 117, -1000, -1000, -1000, 109, -1000, -1000, + 146, 1332, 86, 105, 237, -1000, -1000, 83, 1332, 117, + 237, -1000, -1000, -1000, -1000, 69, -1000, -1000, -1000, } var protoPgo = [...]int16{ - 0, 366, 365, 364, 281, 244, 363, 362, 360, 17, - 15, 2, 359, 51, 358, 44, 5, 26, 11, 8, - 12, 6, 357, 356, 9, 355, 354, 14, 1, 353, - 352, 351, 350, 349, 348, 347, 25, 13, 346, 345, - 344, 343, 341, 7, 340, 339, 338, 41, 337, 335, - 334, 332, 38, 24, 330, 329, 328, 327, 326, 23, - 325, 324, 323, 322, 321, 46, 320, 3, 18, 319, - 318, 35, 31, 317, 316, 315, 314, 19, 16, 43, - 313, 312, 311, 310, 36, 309, 22, 308, 307, 306, - 42, 305, 21, 20, 304, 27, 290, 289, 288, 4, - 287, 286, 10, 0, 282, + 0, 363, 362, 361, 276, 255, 360, 359, 358, 357, + 16, 356, 2, 355, 44, 354, 18, 11, 23, 6, + 9, 5, 8, 353, 352, 10, 351, 350, 15, 1, + 349, 348, 347, 346, 345, 344, 343, 24, 13, 341, + 340, 339, 338, 337, 14, 335, 334, 332, 38, 330, + 329, 328, 327, 36, 25, 326, 325, 324, 323, 322, + 22, 321, 320, 319, 318, 317, 43, 316, 3, 19, + 315, 314, 34, 26, 313, 312, 311, 310, 20, 17, + 42, 309, 308, 307, 306, 35, 305, 27, 304, 303, + 302, 41, 288, 21, 33, 287, 31, 286, 285, 284, + 4, 282, 281, 12, 7, 0, 278, } var protoR1 = [...]int8{ 0, 1, 1, 1, 1, 1, 1, 4, 6, 6, - 5, 5, 5, 5, 5, 5, 5, 5, 104, 104, - 103, 103, 2, 3, 7, 7, 7, 8, 37, 37, + 5, 5, 5, 5, 5, 5, 5, 5, 106, 106, + 105, 105, 104, 104, 2, 3, 7, 7, 7, 8, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, - 9, 11, 15, 15, 15, 15, 13, 18, 18, 19, - 19, 19, 22, 22, 22, 22, 22, 22, 22, 22, - 93, 93, 20, 20, 53, 52, 52, 51, 51, 51, - 51, 51, 51, 54, 54, 54, 14, 14, 14, 14, - 17, 17, 17, 26, 26, 21, 21, 21, 23, 23, - 23, 49, 49, 24, 24, 25, 25, 25, 50, 50, - 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, - 48, 48, 36, 36, 36, 16, 16, 12, 12, 10, - 59, 59, 58, 70, 70, 69, 69, 68, 68, 68, - 68, 68, 56, 56, 60, 60, 61, 61, 62, 29, - 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, - 29, 81, 81, 79, 79, 77, 77, 77, 80, 80, - 78, 78, 78, 27, 27, 73, 73, 75, 75, 74, - 74, 76, 76, 71, 71, 72, 72, 82, 83, 86, - 86, 85, 85, 84, 84, 84, 84, 87, 87, 63, - 64, 67, 67, 66, 66, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 55, 55, 55, - 55, 88, 89, 92, 92, 91, 91, 90, 90, 90, - 90, 57, 57, 57, 57, 94, 97, 97, 96, 96, - 95, 95, 95, 98, 98, 102, 102, 101, 101, 100, - 100, 99, 99, 30, 30, 30, 30, 30, 30, 30, - 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, - 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, - 30, 30, 30, 30, 30, 30, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 43, 43, 9, 11, 12, 16, 16, 16, 16, 14, + 19, 19, 20, 20, 20, 23, 23, 23, 23, 23, + 23, 23, 23, 94, 94, 21, 21, 54, 53, 53, + 52, 52, 52, 52, 52, 52, 55, 55, 55, 15, + 15, 15, 15, 18, 18, 18, 27, 27, 22, 22, + 22, 24, 24, 24, 50, 50, 25, 25, 26, 26, + 26, 51, 51, 44, 44, 45, 45, 46, 46, 47, + 47, 48, 48, 49, 49, 37, 37, 37, 17, 17, + 13, 13, 10, 60, 60, 59, 71, 71, 70, 70, + 69, 69, 69, 69, 69, 57, 57, 61, 61, 62, + 62, 63, 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 82, 82, 80, 80, 78, 78, + 78, 81, 81, 79, 79, 79, 28, 28, 74, 74, + 76, 76, 75, 75, 77, 77, 72, 72, 73, 73, + 83, 84, 87, 87, 86, 86, 85, 85, 85, 85, + 88, 88, 64, 65, 68, 68, 67, 67, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, + 56, 56, 56, 56, 89, 90, 93, 93, 92, 92, + 91, 91, 91, 91, 58, 58, 58, 58, 95, 98, + 98, 97, 97, 96, 96, 96, 99, 99, 103, 103, + 102, 102, 101, 101, 100, 100, 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, 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, 32, 32, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 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, 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, 33, 33, 33, 33, 33, 33, @@ -630,38 +626,43 @@ var protoR1 = [...]int8{ 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, 28, 28, 28, 28, 28, 28, 28, - 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, - 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, - 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, - 28, 28, 28, 28, 28, 28, 28, + 34, 34, 34, 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, 35, 35, 35, 35, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, } var protoR2 = [...]int8{ 0, 1, 1, 1, 2, 2, 0, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 1, 0, 4, 4, 3, 4, 4, 3, 1, 3, + 1, 0, 1, 0, 4, 4, 3, 4, 4, 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, 3, 3, - 8, 9, 5, 0, 1, 2, 1, 1, 1, 1, - 2, 1, 5, 6, 7, 8, 5, 6, 6, 1, + 1, 3, 5, 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, 3, 3, 8, 9, 5, 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, 3, 4, 1, 3, 1, 3, + 3, 1, 3, 1, 3, 3, 1, 2, 3, 1, + 4, 1, 3, 3, 3, 3, 1, 3, 1, 3, + 5, 6, 1, 2, 2, 1, 1, 1, 1, 1, + 4, 5, 5, 6, 0, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 3, 4, 1, 3, 1, 3, 3, 1, 3, - 1, 3, 3, 1, 2, 3, 1, 4, 1, 3, - 3, 3, 3, 1, 3, 1, 3, 5, 6, 1, - 2, 2, 1, 1, 1, 1, 1, 4, 5, 5, - 6, 0, 1, 2, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 6, 7, 5, - 6, 5, 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, + 6, 7, 5, 6, 5, 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, 1, 1, 1, 1, 1, 1, @@ -690,157 +691,156 @@ 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, -103, -104, 53, - -4, -4, 52, 52, -6, -5, -7, -8, -11, -64, - -83, -89, -94, 2, 10, 13, 14, 45, 44, 46, - 47, 53, -93, 4, -93, -5, -93, 11, 12, -37, - -28, 7, 8, 9, 10, 11, 12, 13, 14, 15, + -1000, -1, -2, -3, -4, 8, 9, -105, -106, 53, + -4, -4, 52, 52, -6, -5, -7, -8, -12, -65, + -84, -90, -95, 2, 10, 13, 14, 45, 44, 46, + 47, 53, -94, 4, -94, -5, -94, 11, 12, -38, + -29, 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, -15, -28, -13, 66, -28, - -28, -43, -37, 60, -28, 53, 4, 53, -103, -93, - -93, -103, 60, 52, 60, -43, 55, 55, 55, -37, - 55, -103, -103, -28, -18, -19, -20, -93, -22, -28, - 55, 6, 65, 64, 5, -28, -13, 67, -67, -66, - -65, -55, -82, -63, -88, -81, -59, -9, -58, -61, - -73, 53, 2, -36, -44, 44, 45, 46, 40, 14, - 38, -62, 43, -74, 21, 20, 19, -38, 60, 39, - -30, 7, 8, 9, 10, 11, 12, 13, 15, 16, + 46, 47, 48, 49, 50, -16, -29, -14, 66, -29, + -29, -44, -38, 60, -29, 53, 4, 53, -105, -94, + -94, -105, 60, 52, 60, -44, 55, 55, 55, -38, + 55, -105, -105, -29, -19, -20, -21, -94, -23, -29, + 55, 6, 65, 64, 5, -29, -14, 67, -68, -67, + -66, -56, -83, -64, -89, -82, -60, -9, -59, -62, + -74, 53, 2, -37, -45, 44, 45, 46, 40, 14, + 38, -63, 43, -75, 21, 20, 19, -39, 60, 39, + -31, 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, -86, -103, -92, -91, -90, -57, -59, - 2, -36, -45, -39, 60, -31, 7, 8, 9, 10, + 48, 49, 50, -87, -105, -93, -92, -91, -58, -60, + 2, -37, -46, -40, 60, -32, 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, -103, -103, -53, - 56, -52, -51, -54, 2, -14, -28, 68, 6, 17, - 5, 6, 17, 5, 56, -65, 37, -47, -41, 60, - -33, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 45, 46, 47, 48, 49, 50, -98, -105, -105, -54, + 56, -53, -52, -55, 2, -15, -29, 68, 6, 17, + 5, 6, 17, 5, 56, -66, 37, -48, -42, 60, + -34, 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, -28, -28, -28, -43, -79, -77, - 5, -15, -28, -28, -79, -71, -72, -93, -28, 60, - -37, 63, 56, -85, -84, -11, -87, -75, 2, -35, - 43, -76, 7, 8, 9, 10, 11, 12, 13, 15, + 47, 48, 49, 50, -29, -29, -29, -44, -80, -78, + 5, -16, -29, -29, -80, -72, -73, -94, -29, 60, + -38, 63, 56, -86, -85, -12, -88, -76, 2, -36, + 43, -77, 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, -90, 53, -47, -28, 60, - -37, 56, -96, -95, -11, -98, 2, 48, 56, -52, - 61, 53, 61, 53, 54, 54, -26, -21, -25, -20, - 63, 68, -37, 2, -103, -28, -28, 60, -37, 52, - 55, 55, 55, 53, -16, 61, 68, 41, 52, 55, - 52, 53, 53, 61, 53, 61, -28, -29, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - -103, -84, 52, -80, -71, -72, -78, -27, 5, 65, - -103, -28, 52, -28, -103, -95, -28, -17, -19, -21, - -23, 68, -17, -53, 62, -50, 69, 2, -21, 69, - 58, 69, 52, 52, -28, 5, -86, -67, -92, 53, - -77, -12, 69, -10, -15, 5, 42, -18, -70, -69, - -68, -9, -56, -60, 2, -46, 37, -40, 60, -32, - 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, - -93, -28, 61, -27, 61, 53, -103, -103, 41, 5, - 52, 5, -102, 66, -49, 69, 2, -24, -19, -21, - 62, 69, 61, 69, -37, 5, 5, 53, -16, 56, - 56, 56, 69, 61, 52, 53, 56, -68, 53, -28, - -28, 60, -37, 53, -16, -43, -103, -16, -78, -103, - -27, 42, 5, 53, -16, 50, 49, -48, -42, 60, - -34, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 47, 48, 49, 50, 56, -91, 53, -48, -29, 60, + -38, 56, -97, -96, -12, -99, 2, 48, 56, -53, + 61, 53, 61, 53, 54, 54, -27, -22, -26, -21, + 63, 68, -38, 2, -105, -29, -29, 60, -38, 52, + 55, 55, 55, 53, -17, 61, 68, 41, 52, 55, + 52, 53, 53, 61, 53, 61, -29, -30, 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, -21, 69, 55, - -16, 53, -16, 53, -10, -18, 52, 52, -28, 53, - 62, -103, 53, -16, 53, -102, -43, 67, 60, -37, - -24, -67, 55, 53, 5, 5, 53, -103, 55, 67, - -28, 56, -67, 53, -16, 55, -16, -101, -103, 56, - 53, -67, 55, 56, -100, -99, -11, 2, 56, -67, - -103, -99, 56, + -105, -85, 52, -81, -72, -73, -79, -28, 5, 65, + -105, -29, 52, -29, -105, -96, -29, -18, -20, -22, + -24, 68, -18, -54, 62, -51, 69, 2, -22, 69, + 58, 69, 52, 52, -29, 5, -87, -68, -93, 53, + -78, -13, 69, -10, -16, 5, 42, -19, -71, -70, + -69, -11, -57, -61, 2, 14, -47, 37, -41, 60, + -33, 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, -94, -29, 61, -28, 61, 53, -105, -105, 41, + 5, 52, 5, -103, 66, -50, 69, 2, -25, -20, + -22, 62, 69, 61, 69, -38, 5, 5, 53, -17, + 56, 56, 56, 69, 61, 52, 53, 56, -69, 53, + -16, -29, -29, 60, -38, 53, -17, -44, -105, -17, + -79, -105, -28, 42, 5, -104, -17, 53, 50, 49, + -49, -43, 60, -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, 50, 69, 61, 69, + -22, 69, 55, -17, 53, -17, 53, -10, -19, 52, + 52, 52, -29, 53, 62, -105, -104, -17, -104, -103, + -44, 67, 60, -38, -25, -68, 55, 53, -19, 5, + 5, -104, -105, 55, 67, -29, 56, -68, -104, -104, + -17, 55, -17, -102, -105, 56, -104, -68, 55, 56, + -101, -100, -12, 2, 56, -68, -105, -100, 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, 60, 0, 8, 21, 0, 0, 21, - 28, 483, 484, 485, 486, 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, 0, 42, 44, 0, 0, - 0, 0, 100, 0, 0, 22, 61, 23, 24, 21, - 21, 27, 0, 0, 0, 0, -2, 21, -2, 101, - 21, 25, 26, 29, 21, 47, 48, 49, 50, 51, - 0, 52, 0, 0, 57, 43, 45, 46, 0, -2, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 166, 112, 113, 114, 102, 0, 269, - 30, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 270, 271, 272, - 273, 274, 275, 0, -2, 0, -2, 216, 217, 218, - 220, 0, 0, 104, 0, 32, 276, 277, 278, 279, - 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, 0, -2, 41, 0, - 63, 64, -2, 67, 72, 0, 76, 0, 53, 56, - 59, 54, 55, 58, 21, 193, 0, 0, 108, 0, - 36, 397, 398, 399, 400, 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, 0, 0, 0, 0, 0, 153, - 155, 0, 0, 0, 0, 0, 0, 173, 175, 0, - 103, 0, 21, -2, 182, 183, 184, 185, 186, 0, - 0, 168, 316, 317, 318, 319, 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, 21, 215, 219, 0, 0, 0, - 105, 21, -2, 229, 230, 231, 232, 0, 62, 66, - 68, 69, 70, 71, 0, 0, 74, 83, 84, 85, - 0, 0, 0, 0, 190, 0, 0, 0, 109, 0, - 21, -2, -2, 151, 0, 0, 0, 0, 0, -2, - 0, 165, 169, 0, 170, 0, 31, 0, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 178, 181, 0, 0, 21, 21, 158, 160, 163, 0, - 212, 0, 0, 33, 225, 228, 0, 75, 80, 81, - 82, 0, 73, 0, 87, 0, 96, 0, 98, 77, - 0, 79, 0, 0, 37, 0, 0, 0, 0, 152, - 154, 0, 116, 117, 0, 156, 157, 0, 0, -2, - 126, 127, 128, 129, 131, 0, 0, 106, 0, 34, - 358, 359, 360, 361, 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, 0, - 174, 176, 0, 21, 0, 21, 171, 172, 0, 164, - 0, 0, 0, 0, 0, 89, 0, 91, 93, 94, - 86, 95, 0, 97, 0, 0, 0, 209, 0, 177, - 189, 211, 115, 0, 0, 40, 122, 125, 130, 0, - 0, 0, 107, 136, 0, 0, 187, 21, 159, 167, - 161, 162, 0, 223, 0, 0, 0, 0, 110, 0, - 38, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 0, 19, 0, 63, 0, 8, 21, 0, 0, 21, + 30, 486, 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, 0, 45, 47, 0, 0, + 0, 0, 103, 0, 0, 24, 64, 25, 26, 21, + 21, 29, 0, 0, 0, 0, -2, 21, -2, 104, + 21, 27, 28, 31, 21, 50, 51, 52, 53, 54, + 0, 55, 0, 0, 60, 46, 48, 49, 0, -2, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 169, 115, 116, 117, 105, 0, 272, + 32, 246, 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, 273, 274, 275, + 276, 277, 278, 0, -2, 0, -2, 219, 220, 221, + 223, 0, 0, 107, 0, 34, 279, 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, 0, -2, 44, 0, + 66, 67, -2, 70, 75, 0, 79, 0, 56, 59, + 62, 57, 58, 61, 21, 196, 0, 0, 111, 0, + 38, 400, 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, 0, 0, 0, 0, 0, 156, + 158, 0, 0, 0, 0, 0, 0, 176, 178, 0, + 106, 0, 21, -2, 185, 186, 187, 188, 189, 0, + 0, 171, 319, 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, 21, 218, 222, 0, 0, 0, + 108, 21, -2, 232, 233, 234, 235, 0, 65, 69, + 71, 72, 73, 74, 0, 0, 77, 86, 87, 88, + 0, 0, 0, 0, 193, 0, 0, 0, 112, 0, + 21, -2, -2, 154, 0, 0, 0, 0, 0, -2, + 0, 168, 172, 0, 173, 0, 33, 0, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 181, 184, 0, 0, 21, 21, 161, 163, 166, 0, + 215, 0, 0, 35, 228, 231, 0, 78, 83, 84, + 85, 0, 76, 0, 90, 0, 99, 0, 101, 80, + 0, 82, 0, 0, 39, 0, 0, 0, 0, 155, + 157, 0, 119, 120, 0, 159, 160, 0, 0, -2, + 129, 130, 131, 132, 134, 0, 0, 0, 109, 0, + 36, 361, 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, + 0, 177, 179, 0, 21, 0, 21, 174, 175, 0, + 167, 0, 23, 0, 0, 0, 92, 0, 94, 96, + 97, 89, 98, 0, 100, 0, 0, 0, 212, 0, + 180, 192, 214, 118, 0, 0, 42, 125, 128, 133, + 0, 0, 0, 0, 110, 139, 0, 0, 190, 21, + 162, 170, 164, 165, 23, 226, 23, 22, 0, 0, + 0, 113, 0, 40, 443, 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, 88, 0, 90, 99, 78, -2, - 0, 207, 0, 210, 118, 119, 0, 0, 35, 137, - 138, 188, 221, 0, 224, 21, 0, 236, 0, 111, - 92, 0, -2, 208, 0, 0, 222, 233, 21, 235, - 39, 120, 0, 132, 0, -2, 0, 0, -2, 121, - 133, 0, -2, 21, -2, 240, 241, 242, 134, 0, - 234, 239, 135, + 479, 480, 481, 482, 483, 484, 485, 91, 0, 93, + 102, 81, -2, 0, 210, 0, 213, 121, 122, 0, + 0, 0, 37, 140, 141, 191, 224, 23, 227, 21, + 0, 239, 0, 114, 95, 0, -2, 211, 23, 23, + 0, 225, 236, 21, 238, 41, 123, 0, 43, 135, + 23, -2, 0, 0, -2, 124, 136, 0, -2, 21, + -2, 243, 244, 245, 137, 0, 237, 242, 138, } var protoTok1 = [...]int8{ @@ -1324,51 +1324,50 @@ protodefault: protoVAL.bs = nil } case 22: + protoDollar = protoS[protopt-1 : protopt+1] + { + protoVAL.b = protoDollar[1].b + } + case 23: + protoDollar = protoS[protopt-0 : protopt+1] + { + protolex.(*protoLex).Error("expected ';'") + protoVAL.b = nil + } + case 24: protoDollar = protoS[protopt-4 : protopt+1] { protoVAL.syn = ast.NewSyntaxNode(protoDollar[1].id.ToKeyword(), protoDollar[2].b, toStringValueNode(protoDollar[3].str), protoDollar[4].b) } - case 23: + case 25: protoDollar = protoS[protopt-4 : protopt+1] { protoVAL.ed = ast.NewEditionNode(protoDollar[1].id.ToKeyword(), protoDollar[2].b, toStringValueNode(protoDollar[3].str), protoDollar[4].b) } - case 24: + case 26: protoDollar = protoS[protopt-3 : protopt+1] { semi, extra := protolex.(*protoLex).requireSemicolon(protoDollar[3].bs) protoVAL.imprt = newNodeWithEmptyDecls(ast.NewImportNode(protoDollar[1].id.ToKeyword(), nil, nil, toStringValueNode(protoDollar[2].str), semi), extra) } - case 25: + case 27: protoDollar = protoS[protopt-4 : protopt+1] { semi, extra := protolex.(*protoLex).requireSemicolon(protoDollar[4].bs) protoVAL.imprt = newNodeWithEmptyDecls(ast.NewImportNode(protoDollar[1].id.ToKeyword(), nil, protoDollar[2].id.ToKeyword(), toStringValueNode(protoDollar[3].str), semi), extra) } - case 26: + case 28: protoDollar = protoS[protopt-4 : protopt+1] { semi, extra := protolex.(*protoLex).requireSemicolon(protoDollar[4].bs) protoVAL.imprt = newNodeWithEmptyDecls(ast.NewImportNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id.ToKeyword(), nil, toStringValueNode(protoDollar[3].str), semi), extra) } - case 27: + case 29: protoDollar = protoS[protopt-3 : protopt+1] { semi, extra := protolex.(*protoLex).requireSemicolon(protoDollar[3].bs) protoVAL.pkg = newNodeWithEmptyDecls(ast.NewPackageNode(protoDollar[1].id.ToKeyword(), protoDollar[2].cid.toIdentValueNode(nil), semi), extra) } - case 28: - protoDollar = protoS[protopt-1 : protopt+1] - { - protoVAL.cid = &identSlices{idents: []*ast.IdentNode{protoDollar[1].id}} - } - case 29: - protoDollar = protoS[protopt-3 : protopt+1] - { - protoDollar[1].cid.idents = append(protoDollar[1].cid.idents, protoDollar[3].id) - protoDollar[1].cid.dots = append(protoDollar[1].cid.dots, protoDollar[2].b) - protoVAL.cid = protoDollar[1].cid - } case 30: protoDollar = protoS[protopt-1 : protopt+1] { @@ -1430,96 +1429,114 @@ protodefault: protoVAL.cid = protoDollar[1].cid } case 40: + protoDollar = protoS[protopt-1 : protopt+1] + { + protoVAL.cid = &identSlices{idents: []*ast.IdentNode{protoDollar[1].id}} + } + case 41: + protoDollar = protoS[protopt-3 : protopt+1] + { + protoDollar[1].cid.idents = append(protoDollar[1].cid.idents, protoDollar[3].id) + protoDollar[1].cid.dots = append(protoDollar[1].cid.dots, protoDollar[2].b) + protoVAL.cid = protoDollar[1].cid + } + case 42: protoDollar = protoS[protopt-5 : protopt+1] { optName := ast.NewOptionNameNode(protoDollar[2].optNms.refs, protoDollar[2].optNms.dots) protoVAL.opt = ast.NewOptionNode(protoDollar[1].id.ToKeyword(), optName, protoDollar[3].b, protoDollar[4].v, protoDollar[5].b) } - case 41: + case 43: + protoDollar = protoS[protopt-5 : protopt+1] + { + optName := ast.NewOptionNameNode(protoDollar[2].optNms.refs, protoDollar[2].optNms.dots) + protoVAL.opt = ast.NewOptionNode(protoDollar[1].id.ToKeyword(), optName, protoDollar[3].b, protoDollar[4].v, protoDollar[5].b) + } + case 44: protoDollar = protoS[protopt-5 : protopt+1] { optName := ast.NewOptionNameNode(protoDollar[2].optNms.refs, protoDollar[2].optNms.dots) semi, extra := protolex.(*protoLex).requireSemicolon(protoDollar[5].bs) protoVAL.optN = newNodeWithEmptyDecls(ast.NewOptionNode(protoDollar[1].id.ToKeyword(), optName, protoDollar[3].b, protoDollar[4].v, semi), extra) } - case 42: + case 45: protoDollar = protoS[protopt-1 : protopt+1] { fieldReferenceNode := ast.NewFieldReferenceNode(protoDollar[1].id) protoVAL.optNms = &fieldRefSlices{refs: []*ast.FieldReferenceNode{fieldReferenceNode}} } - case 43: + case 46: protoDollar = protoS[protopt-3 : 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 } - case 44: + case 47: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.optNms = &fieldRefSlices{refs: []*ast.FieldReferenceNode{protoDollar[1].ref}} } - case 45: + case 48: protoDollar = protoS[protopt-3 : 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 } - case 46: + case 49: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.ref = ast.NewExtensionFieldReferenceNode(protoDollar[1].b, protoDollar[2].tid, protoDollar[3].b) } - case 49: + case 52: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.v = toStringValueNode(protoDollar[1].str) } - case 51: + case 54: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.v = protoDollar[1].id } - case 52: + case 55: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.v = protoDollar[1].f } - case 53: + case 56: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.v = ast.NewSignedFloatLiteralNode(protoDollar[1].b, protoDollar[2].f) } - case 54: + case 57: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.v = ast.NewSignedFloatLiteralNode(protoDollar[1].b, protoDollar[2].f) } - case 55: + case 58: protoDollar = protoS[protopt-2 : protopt+1] { f := ast.NewSpecialFloatLiteralNode(protoDollar[2].id.ToKeyword()) protoVAL.v = ast.NewSignedFloatLiteralNode(protoDollar[1].b, f) } - case 56: + case 59: protoDollar = protoS[protopt-2 : protopt+1] { f := ast.NewSpecialFloatLiteralNode(protoDollar[2].id.ToKeyword()) protoVAL.v = ast.NewSignedFloatLiteralNode(protoDollar[1].b, f) } - case 57: + case 60: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.v = protoDollar[1].i } - case 58: + case 61: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.v = ast.NewPositiveUintLiteralNode(protoDollar[1].b, protoDollar[2].i) } - case 59: + case 62: protoDollar = protoS[protopt-2 : protopt+1] { if protoDollar[2].i.Val > math.MaxInt64+1 { @@ -1529,17 +1546,17 @@ protodefault: protoVAL.v = ast.NewNegativeIntLiteralNode(protoDollar[1].b, protoDollar[2].i) } } - case 60: + case 63: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.str = []*ast.StringLiteralNode{protoDollar[1].s} } - case 61: + case 64: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.str = append(protoDollar[1].str, protoDollar[2].s) } - case 62: + case 65: protoDollar = protoS[protopt-3 : protopt+1] { if protoDollar[2].msgLitFlds == nil { @@ -1549,12 +1566,12 @@ protodefault: protoVAL.v = ast.NewMessageLiteralNode(protoDollar[1].b, fields, delimiters, protoDollar[3].b) } } - case 63: + case 66: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.v = ast.NewMessageLiteralNode(protoDollar[1].b, nil, nil, protoDollar[2].b) } - case 66: + case 69: protoDollar = protoS[protopt-2 : protopt+1] { if protoDollar[1].msgLitFlds != nil { @@ -1564,7 +1581,7 @@ protodefault: protoVAL.msgLitFlds = protoDollar[2].msgLitFlds } } - case 67: + case 70: protoDollar = protoS[protopt-1 : protopt+1] { if protoDollar[1].msgLitFld != nil { @@ -1573,7 +1590,7 @@ protodefault: protoVAL.msgLitFlds = nil } } - case 68: + case 71: protoDollar = protoS[protopt-2 : protopt+1] { if protoDollar[1].msgLitFld != nil { @@ -1582,7 +1599,7 @@ protodefault: protoVAL.msgLitFlds = nil } } - case 69: + case 72: protoDollar = protoS[protopt-2 : protopt+1] { if protoDollar[1].msgLitFld != nil { @@ -1591,22 +1608,22 @@ protodefault: protoVAL.msgLitFlds = nil } } - case 70: + case 73: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.msgLitFlds = nil } - case 71: + case 74: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.msgLitFlds = nil } - case 72: + case 75: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgLitFlds = nil } - case 73: + case 76: protoDollar = protoS[protopt-3 : protopt+1] { if protoDollar[1].ref != nil && protoDollar[2].b != nil { @@ -1615,7 +1632,7 @@ protodefault: protoVAL.msgLitFld = nil } } - case 74: + case 77: protoDollar = protoS[protopt-2 : protopt+1] { if protoDollar[1].ref != nil && protoDollar[2].v != nil { @@ -1624,32 +1641,32 @@ protodefault: protoVAL.msgLitFld = nil } } - case 75: + case 78: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.msgLitFld = nil } - case 76: + case 79: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.ref = ast.NewFieldReferenceNode(protoDollar[1].id) } - case 77: + case 80: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.ref = ast.NewExtensionFieldReferenceNode(protoDollar[1].b, protoDollar[2].cid.toIdentValueNode(nil), protoDollar[3].b) } - case 78: + case 81: 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) } - case 79: + case 82: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.ref = nil } - case 86: + case 89: protoDollar = protoS[protopt-3 : protopt+1] { if protoDollar[2].msgLitFlds == nil { @@ -1659,12 +1676,12 @@ protodefault: protoVAL.v = ast.NewMessageLiteralNode(protoDollar[1].b, fields, delimiters, protoDollar[3].b) } } - case 87: + case 90: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.v = ast.NewMessageLiteralNode(protoDollar[1].b, nil, nil, protoDollar[2].b) } - case 88: + case 91: protoDollar = protoS[protopt-3 : protopt+1] { if protoDollar[2].sl == nil { @@ -1673,29 +1690,29 @@ protodefault: protoVAL.v = ast.NewArrayLiteralNode(protoDollar[1].b, protoDollar[2].sl.vals, protoDollar[2].sl.commas, protoDollar[3].b) } } - case 89: + case 92: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.v = ast.NewArrayLiteralNode(protoDollar[1].b, nil, nil, protoDollar[2].b) } - case 90: + case 93: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.v = ast.NewArrayLiteralNode(protoDollar[1].b, nil, nil, protoDollar[3].b) } - case 91: + case 94: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.sl = &valueSlices{vals: []ast.ValueNode{protoDollar[1].v}} } - case 92: + case 95: 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 95: + case 98: protoDollar = protoS[protopt-3 : protopt+1] { if protoDollar[2].sl == nil { @@ -1704,138 +1721,138 @@ protodefault: protoVAL.v = ast.NewArrayLiteralNode(protoDollar[1].b, protoDollar[2].sl.vals, protoDollar[2].sl.commas, protoDollar[3].b) } } - case 96: + case 99: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.v = ast.NewArrayLiteralNode(protoDollar[1].b, nil, nil, protoDollar[2].b) } - case 97: + case 100: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.v = ast.NewArrayLiteralNode(protoDollar[1].b, nil, nil, protoDollar[3].b) } - case 98: + case 101: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.sl = &valueSlices{vals: []ast.ValueNode{protoDollar[1].v}} } - case 99: + case 102: 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 100: + case 103: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.tid = protoDollar[1].cid.toIdentValueNode(nil) } - case 101: + case 104: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.tid = protoDollar[2].cid.toIdentValueNode(protoDollar[1].b) } - case 102: + case 105: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.tid = protoDollar[1].cid.toIdentValueNode(nil) } - case 103: + case 106: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.tid = protoDollar[2].cid.toIdentValueNode(protoDollar[1].b) } - case 104: + case 107: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.tid = protoDollar[1].cid.toIdentValueNode(nil) } - case 105: + case 108: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.tid = protoDollar[2].cid.toIdentValueNode(protoDollar[1].b) } - case 106: + case 109: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.tid = protoDollar[1].cid.toIdentValueNode(nil) } - case 107: + case 110: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.tid = protoDollar[2].cid.toIdentValueNode(protoDollar[1].b) } - case 108: + case 111: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.tid = protoDollar[1].cid.toIdentValueNode(nil) } - case 109: + case 112: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.tid = protoDollar[2].cid.toIdentValueNode(protoDollar[1].b) } - case 110: + case 113: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.tid = protoDollar[1].cid.toIdentValueNode(nil) } - case 111: + case 114: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.tid = protoDollar[2].cid.toIdentValueNode(protoDollar[1].b) } - case 115: + case 118: 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 116: + case 119: 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 117: + case 120: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.opts = &compactOptionSlices{options: []*ast.OptionNode{protoDollar[1].opt}} } - case 118: + case 121: protoDollar = protoS[protopt-3 : protopt+1] { protoDollar[1].opts.options = append(protoDollar[1].opts.options, protoDollar[3].opt) protoDollar[1].opts.commas = append(protoDollar[1].opts.commas, protoDollar[2].b) protoVAL.opts = protoDollar[1].opts } - case 119: + case 122: protoDollar = protoS[protopt-3 : protopt+1] { optName := ast.NewOptionNameNode(protoDollar[1].optNms.refs, protoDollar[1].optNms.dots) protoVAL.opt = ast.NewCompactOptionNode(optName, protoDollar[2].b, protoDollar[3].v) } - case 120: + case 123: 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 121: + case 124: 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 122: + case 125: protoDollar = protoS[protopt-5 : protopt+1] { protoVAL.oo = ast.NewOneofNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id, protoDollar[3].b, protoDollar[4].ooElements, protoDollar[5].b) } - case 123: + case 126: protoDollar = protoS[protopt-0 : protopt+1] { protoVAL.ooElements = nil } - case 125: + case 128: protoDollar = protoS[protopt-2 : protopt+1] { if protoDollar[2].ooElement != nil { @@ -1844,7 +1861,7 @@ protodefault: protoVAL.ooElements = protoDollar[1].ooElements } } - case 126: + case 129: protoDollar = protoS[protopt-1 : protopt+1] { if protoDollar[1].ooElement != nil { @@ -1853,276 +1870,276 @@ protodefault: protoVAL.ooElements = nil } } - case 127: + case 130: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.ooElement = protoDollar[1].opt } - case 128: + case 131: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.ooElement = protoDollar[1].fld } - case 129: + case 132: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.ooElement = protoDollar[1].grp } - case 130: + case 133: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.ooElement = nil } - case 131: + case 134: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.ooElement = nil } - case 132: + case 135: 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 133: + case 136: 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 134: + case 137: 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 135: + case 138: 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 136: + case 139: protoDollar = protoS[protopt-5 : protopt+1] { protoVAL.mapFld = ast.NewMapFieldNode(protoDollar[1].mapType, protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, nil, protoDollar[5].b) } - case 137: + case 140: protoDollar = protoS[protopt-6 : protopt+1] { protoVAL.mapFld = ast.NewMapFieldNode(protoDollar[1].mapType, protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, protoDollar[5].cmpctOpts, protoDollar[6].b) } - case 138: + case 141: 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 151: + case 154: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.ext = ast.NewExtensionRangeNode(protoDollar[1].id.ToKeyword(), protoDollar[2].rngs.ranges, protoDollar[2].rngs.commas, nil, protoDollar[3].b) } - case 152: + case 155: protoDollar = protoS[protopt-4 : protopt+1] { protoVAL.ext = ast.NewExtensionRangeNode(protoDollar[1].id.ToKeyword(), protoDollar[2].rngs.ranges, protoDollar[2].rngs.commas, protoDollar[3].cmpctOpts, protoDollar[4].b) } - case 153: + case 156: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.rngs = &rangeSlices{ranges: []*ast.RangeNode{protoDollar[1].rng}} } - case 154: + case 157: 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 155: + case 158: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.rng = ast.NewRangeNode(protoDollar[1].i, nil, nil, nil) } - case 156: + case 159: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.rng = ast.NewRangeNode(protoDollar[1].i, protoDollar[2].id.ToKeyword(), protoDollar[3].i, nil) } - case 157: + case 160: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.rng = ast.NewRangeNode(protoDollar[1].i, protoDollar[2].id.ToKeyword(), nil, protoDollar[3].id.ToKeyword()) } - case 158: + case 161: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.rngs = &rangeSlices{ranges: []*ast.RangeNode{protoDollar[1].rng}} } - case 159: + case 162: 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 160: + case 163: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.rng = ast.NewRangeNode(protoDollar[1].il, nil, nil, nil) } - case 161: + case 164: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.rng = ast.NewRangeNode(protoDollar[1].il, protoDollar[2].id.ToKeyword(), protoDollar[3].il, nil) } - case 162: + case 165: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.rng = ast.NewRangeNode(protoDollar[1].il, protoDollar[2].id.ToKeyword(), nil, protoDollar[3].id.ToKeyword()) } - case 163: + case 166: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.il = protoDollar[1].i } - case 164: + case 167: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.il = ast.NewNegativeIntLiteralNode(protoDollar[1].b, protoDollar[2].i) } - case 165: + case 168: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.resvd = ast.NewReservedRangesNode(protoDollar[1].id.ToKeyword(), protoDollar[2].rngs.ranges, protoDollar[2].rngs.commas, protoDollar[3].b) } - case 167: + case 170: 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.resvdN = newNodeWithEmptyDecls(ast.NewReservedRangesNode(protoDollar[1].id.ToKeyword(), protoDollar[2].rngs.ranges, protoDollar[2].rngs.commas, protoDollar[3].b), protoDollar[4].bs) } - case 169: + case 172: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.resvd = ast.NewReservedNamesNode(protoDollar[1].id.ToKeyword(), protoDollar[2].names.names, protoDollar[2].names.commas, protoDollar[3].b) } - case 170: + case 173: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.resvd = ast.NewReservedIdentifiersNode(protoDollar[1].id.ToKeyword(), protoDollar[2].names.idents, protoDollar[2].names.commas, protoDollar[3].b) } - case 171: + case 174: protoDollar = protoS[protopt-3 : protopt+1] { semi, extra := protolex.(*protoLex).requireSemicolon(protoDollar[3].bs) protoVAL.resvdN = newNodeWithEmptyDecls(ast.NewReservedNamesNode(protoDollar[1].id.ToKeyword(), protoDollar[2].names.names, protoDollar[2].names.commas, semi), extra) } - case 172: + case 175: protoDollar = protoS[protopt-3 : protopt+1] { semi, extra := protolex.(*protoLex).requireSemicolon(protoDollar[3].bs) protoVAL.resvdN = newNodeWithEmptyDecls(ast.NewReservedIdentifiersNode(protoDollar[1].id.ToKeyword(), protoDollar[2].names.idents, protoDollar[2].names.commas, semi), extra) } - case 173: + case 176: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.names = &nameSlices{names: []ast.StringValueNode{toStringValueNode(protoDollar[1].str)}} } - case 174: + case 177: 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 175: + case 178: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.names = &nameSlices{idents: []*ast.IdentNode{protoDollar[1].id}} } - case 176: + case 179: 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 177: + case 180: protoDollar = protoS[protopt-5 : protopt+1] { protoVAL.en = ast.NewEnumNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id, protoDollar[3].b, protoDollar[4].enElements, protoDollar[5].b) } - case 178: + case 181: protoDollar = protoS[protopt-6 : protopt+1] { protoVAL.enN = newNodeWithEmptyDecls(ast.NewEnumNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id, protoDollar[3].b, protoDollar[4].enElements, protoDollar[5].b), protoDollar[6].bs) } - case 179: + case 182: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.enElements = newEnumElements(protoDollar[1].bs, nil) } - case 180: + case 183: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.enElements = newEnumElements(protoDollar[1].bs, protoDollar[2].enElements) } - case 181: + case 184: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.enElements = append(protoDollar[1].enElements, protoDollar[2].enElements...) } - case 182: + case 185: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.enElements = protoDollar[1].enElements } - case 183: + case 186: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.enElements = toEnumElements(protoDollar[1].optN) } - case 184: + case 187: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.enElements = toEnumElements(protoDollar[1].env) } - case 185: + case 188: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.enElements = toEnumElements(protoDollar[1].resvdN) } - case 186: + case 189: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.enElements = nil } - case 187: + case 190: protoDollar = protoS[protopt-4 : protopt+1] { semi, extra := protolex.(*protoLex).requireSemicolon(protoDollar[4].bs) protoVAL.env = newNodeWithEmptyDecls(ast.NewEnumValueNode(protoDollar[1].id, protoDollar[2].b, protoDollar[3].il, nil, semi), extra) } - case 188: + case 191: protoDollar = protoS[protopt-5 : protopt+1] { semi, extra := protolex.(*protoLex).requireSemicolon(protoDollar[5].bs) protoVAL.env = newNodeWithEmptyDecls(ast.NewEnumValueNode(protoDollar[1].id, protoDollar[2].b, protoDollar[3].il, protoDollar[4].cmpctOpts, semi), extra) } - case 189: + case 192: protoDollar = protoS[protopt-5 : protopt+1] { protoVAL.msg = ast.NewMessageNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id, protoDollar[3].b, protoDollar[4].msgElements, protoDollar[5].b) } - case 190: + case 193: protoDollar = protoS[protopt-6 : protopt+1] { protoVAL.msgN = newNodeWithEmptyDecls(ast.NewMessageNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id, protoDollar[3].b, protoDollar[4].msgElements, protoDollar[5].b), protoDollar[6].bs) } - case 191: + case 194: protoDollar = protoS[protopt-0 : protopt+1] { protoVAL.msgElements = nil } - case 193: + case 196: protoDollar = protoS[protopt-2 : protopt+1] { if protoDollar[2].msgElement != nil { @@ -2131,7 +2148,7 @@ protodefault: protoVAL.msgElements = protoDollar[1].msgElements } } - case 194: + case 197: protoDollar = protoS[protopt-1 : protopt+1] { if protoDollar[1].msgElement != nil { @@ -2140,102 +2157,102 @@ protodefault: protoVAL.msgElements = nil } } - case 195: + case 198: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElement = protoDollar[1].fld } - case 196: + case 199: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElement = protoDollar[1].en } - case 197: + case 200: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElement = protoDollar[1].msg } - case 198: + case 201: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElement = protoDollar[1].extend } - case 199: + case 202: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElement = protoDollar[1].ext } - case 200: + case 203: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElement = protoDollar[1].grp } - case 201: + case 204: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElement = protoDollar[1].opt } - case 202: + case 205: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElement = protoDollar[1].oo } - case 203: + case 206: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElement = protoDollar[1].mapFld } - case 204: + case 207: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElement = protoDollar[1].resvd } - case 205: + case 208: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElement = ast.NewEmptyDeclNode(protoDollar[1].b) } - case 206: + case 209: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElement = nil } - case 207: + case 210: 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 208: + case 211: 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 209: + case 212: 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 210: + case 213: 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 211: + case 214: protoDollar = protoS[protopt-5 : protopt+1] { protoVAL.extend = ast.NewExtendNode(protoDollar[1].id.ToKeyword(), protoDollar[2].tid, protoDollar[3].b, protoDollar[4].extElements, protoDollar[5].b) } - case 212: + case 215: protoDollar = protoS[protopt-6 : protopt+1] { protoVAL.extendN = newNodeWithEmptyDecls(ast.NewExtendNode(protoDollar[1].id.ToKeyword(), protoDollar[2].tid, protoDollar[3].b, protoDollar[4].extElements, protoDollar[5].b), protoDollar[6].bs) } - case 213: + case 216: protoDollar = protoS[protopt-0 : protopt+1] { protoVAL.extElements = nil } - case 215: + case 218: protoDollar = protoS[protopt-2 : protopt+1] { if protoDollar[2].extElement != nil { @@ -2244,7 +2261,7 @@ protodefault: protoVAL.extElements = protoDollar[1].extElements } } - case 216: + case 219: protoDollar = protoS[protopt-1 : protopt+1] { if protoDollar[1].extElement != nil { @@ -2253,133 +2270,133 @@ protodefault: protoVAL.extElements = nil } } - case 217: + case 220: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.extElement = protoDollar[1].fld } - case 218: + case 221: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.extElement = protoDollar[1].grp } - case 219: + case 222: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.extElement = nil } - case 220: + case 223: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.extElement = nil } - case 221: + case 224: 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 222: + case 225: 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 223: + case 226: 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 224: + case 227: 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 225: + case 228: protoDollar = protoS[protopt-6 : protopt+1] { protoVAL.svc = newNodeWithEmptyDecls(ast.NewServiceNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id, protoDollar[3].b, protoDollar[4].svcElements, protoDollar[5].b), protoDollar[6].bs) } - case 226: + case 229: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.svcElements = newServiceElements(protoDollar[1].bs, nil) } - case 227: + case 230: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.svcElements = newServiceElements(protoDollar[1].bs, protoDollar[2].svcElements) } - case 228: + case 231: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.svcElements = append(protoDollar[1].svcElements, protoDollar[2].svcElements...) } - case 229: + case 232: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.svcElements = protoDollar[1].svcElements } - case 230: + case 233: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.svcElements = toServiceElements(protoDollar[1].optN) } - case 231: + case 234: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.svcElements = toServiceElements(protoDollar[1].mtd) } - case 232: + case 235: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.svcElements = nil } - case 233: + case 236: protoDollar = protoS[protopt-6 : protopt+1] { semi, extra := protolex.(*protoLex).requireSemicolon(protoDollar[6].bs) protoVAL.mtd = newNodeWithEmptyDecls(ast.NewRPCNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id, protoDollar[3].mtdMsgType, protoDollar[4].id.ToKeyword(), protoDollar[5].mtdMsgType, semi), extra) } - case 234: + case 237: protoDollar = protoS[protopt-9 : protopt+1] { protoVAL.mtd = newNodeWithEmptyDecls(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 235: + case 238: protoDollar = protoS[protopt-4 : protopt+1] { protoVAL.mtdMsgType = ast.NewRPCTypeNode(protoDollar[1].b, protoDollar[2].id.ToKeyword(), protoDollar[3].tid, protoDollar[4].b) } - case 236: + case 239: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.mtdMsgType = ast.NewRPCTypeNode(protoDollar[1].b, nil, protoDollar[2].tid, protoDollar[3].b) } - case 237: + case 240: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.mtdElements = newMethodElements(protoDollar[1].bs, nil) } - case 238: + case 241: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.mtdElements = newMethodElements(protoDollar[1].bs, protoDollar[2].mtdElements) } - case 239: + case 242: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.mtdElements = append(protoDollar[1].mtdElements, protoDollar[2].mtdElements...) } - case 240: + case 243: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.mtdElements = protoDollar[1].mtdElements } - case 241: + case 244: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.mtdElements = toMethodElements(protoDollar[1].optN) } - case 242: + case 245: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.mtdElements = nil