diff --git a/expr/binding_test.go b/expr/binding_test.go index a553b15..1e2924a 100644 --- a/expr/binding_test.go +++ b/expr/binding_test.go @@ -108,3 +108,10 @@ func TestBoundExpressions(t *testing.T) { }) } } + +func TestGetArgTypesWithEnum(t *testing.T) { + f, err := NewScalarFunc(extReg, extractID, nil, types.Enum("YEAR"), + MustExpr(NewRootFieldRef(NewStructFieldRef(9), types.NewRecordTypeFromStruct(boringSchema.Struct)))) + assert.NoError(t, err) + assert.Equal(t, types.CommonEnumType, f.GetArgTypes()[0]) +} diff --git a/expr/functions.go b/expr/functions.go index 4b71040..ed688ac 100644 --- a/expr/functions.go +++ b/expr/functions.go @@ -368,6 +368,8 @@ func getArgTypes(args []types.FuncArg) []types.Type { argTypes := make([]types.Type, len(args)) for i, arg := range args { switch a := arg.(type) { + case types.Enum: + argTypes[i] = types.CommonEnumType case Expression: argTypes[i] = a.GetType() case types.Type: diff --git a/extensions/simple_extension.go b/extensions/simple_extension.go index 9ce3878..42abf82 100644 --- a/extensions/simple_extension.go +++ b/extensions/simple_extension.go @@ -48,7 +48,7 @@ type TypeVariationFunctions string const ( TypeVariationInheritsFuncs TypeVariationFunctions = "INHERITS" TypeVariationSeparateFuncs TypeVariationFunctions = "SEPARATE" - EnumTypeString = "req" // TODO change this to "enum" + EnumTypeString = "req" ) type TypeVariation struct { diff --git a/go.mod b/go.mod index 586dcb4..43a1a84 100644 --- a/go.mod +++ b/go.mod @@ -15,7 +15,7 @@ require ( github.com/google/go-cmp v0.7.0 github.com/google/uuid v1.6.0 github.com/stretchr/testify v1.10.0 - github.com/substrait-io/substrait v0.85.0 + github.com/substrait-io/substrait v0.87.0 github.com/substrait-io/substrait-protobuf/go v0.85.0 golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0 google.golang.org/protobuf v1.36.6 diff --git a/go.sum b/go.sum index c532e96..ed81d8d 100644 --- a/go.sum +++ b/go.sum @@ -32,8 +32,8 @@ github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/substrait-io/substrait v0.85.0 h1:ur2VBFhOpx/3RjVG0w5i8SpLHciLjATh27kAc2HPf5A= -github.com/substrait-io/substrait v0.85.0/go.mod h1:MPFNw6sToJgpD5Z2rj0rQrdP/Oq8HG7Z2t3CAEHtkHw= +github.com/substrait-io/substrait v0.87.0 h1:40rP4LejyK6SNQlWz7NX6kQELf8cmScWMBGruWhN4io= +github.com/substrait-io/substrait v0.87.0/go.mod h1:MPFNw6sToJgpD5Z2rj0rQrdP/Oq8HG7Z2t3CAEHtkHw= github.com/substrait-io/substrait-protobuf/go v0.85.0 h1:zk6MtNWLtDSl8a7qCZRFH0+EIIXVrrd/hsgYK/SQTgM= github.com/substrait-io/substrait-protobuf/go v0.85.0/go.mod h1:hn+Szm1NmZZc91FwWK9EXD/lmuGBSRTJ5IvHhlG1YnQ= golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0 h1:R84qjqJb5nVJMxqWYb3np9L5ZsaDtB+a39EqjV0JSUM= diff --git a/grammar/generate.go b/grammar/generate.go index ec355b3..a1fac83 100644 --- a/grammar/generate.go +++ b/grammar/generate.go @@ -2,13 +2,13 @@ package grammar -// using substrait v0.85.0 +// using substrait v0.87.0 //go:generate wget -nc https://www.antlr.org/download/antlr-4.13.2-complete.jar -//go:generate wget https://raw.githubusercontent.com/substrait-io/substrait/v0.85.0/grammar/SubstraitLexer.g4 -//go:generate wget https://raw.githubusercontent.com/substrait-io/substrait/v0.85.0/grammar/SubstraitType.g4 -//go:generate wget https://raw.githubusercontent.com/substrait-io/substrait/v0.85.0/grammar/FuncTestCaseLexer.g4 -//go:generate wget https://raw.githubusercontent.com/substrait-io/substrait/v0.85.0/grammar/FuncTestCaseParser.g4 +//go:generate wget https://raw.githubusercontent.com/substrait-io/substrait/v0.87.0/grammar/SubstraitLexer.g4 +//go:generate wget https://raw.githubusercontent.com/substrait-io/substrait/v0.87.0/grammar/SubstraitType.g4 +//go:generate wget https://raw.githubusercontent.com/substrait-io/substrait/v0.87.0/grammar/FuncTestCaseLexer.g4 +//go:generate wget https://raw.githubusercontent.com/substrait-io/substrait/v0.87.0/grammar/FuncTestCaseParser.g4 //go:generate -command antlr java -Xmx500M -cp "./antlr-4.13.2-complete.jar:$CLASSPATH" org.antlr.v4.Tool //go:generate antlr -Dlanguage=Go -visitor -Dlanguage=Go -package baseparser -o "../types/parser/baseparser" SubstraitLexer.g4 SubstraitType.g4 //go:generate antlr -Dlanguage=Go -visitor -no-listener -Dlanguage=Go -package baseparser -o "../testcases/parser/baseparser" FuncTestCaseLexer.g4 FuncTestCaseParser.g4 diff --git a/testcases/parser/baseparser/functestcase_lexer.go b/testcases/parser/baseparser/functestcase_lexer.go index f700045..e25ed10 100644 --- a/testcases/parser/baseparser/functestcase_lexer.go +++ b/testcases/parser/baseparser/functestcase_lexer.go @@ -49,9 +49,9 @@ func functestcaselexerLexerInit() { "'SATURATE'", "'SILENT'", "'TIE_TO_EVEN'", "'NAN'", "'ACCEPT_NULLS'", "'IGNORE_NULLS'", "'NULL_HANDLING'", "'SPACES_ONLY'", "'TRUNCATE'", "", "", "", "", "", "", "", "", "'P'", "'T'", "'Y'", "'M'", "'D'", "'H'", - "'S'", "'F'", "", "", "", "", "", "'null'", "", "", "", "", "'IF'", - "'THEN'", "'ELSE'", "'FUNC'", "'BOOLEAN'", "'I8'", "'I16'", "'I32'", - "'I64'", "'FP32'", "'FP64'", "'STRING'", "'BINARY'", "'TIMESTAMP'", + "'S'", "'F'", "", "", "", "", "", "'null'", "", "'enum'", "", "", "", + "'IF'", "'THEN'", "'ELSE'", "'FUNC'", "'BOOLEAN'", "'I8'", "'I16'", + "'I32'", "'I64'", "'FP32'", "'FP64'", "'STRING'", "'BINARY'", "'TIMESTAMP'", "'TIMESTAMP_TZ'", "'DATE'", "'TIME'", "'INTERVAL_YEAR'", "'INTERVAL_DAY'", "'INTERVAL_COMPOUND'", "'UUID'", "'DECIMAL'", "'PRECISION_TIME'", "'PRECISION_TIMESTAMP'", "'PRECISION_TIMESTAMP_TZ'", "'FIXEDCHAR'", "'VARCHAR'", "'FIXEDBINARY'", @@ -72,15 +72,15 @@ func functestcaselexerLexerInit() { "TimeLiteral", "DateLiteral", "PeriodPrefix", "TimePrefix", "YearSuffix", "MSuffix", "DaySuffix", "HourSuffix", "SecondSuffix", "FractionalSecondSuffix", "OAngleBracket", "CAngleBracket", "IntervalYearLiteral", "IntervalDayLiteral", - "IntervalCompoundLiteral", "NullLiteral", "StringLiteral", "ColumnName", - "LineComment", "BlockComment", "If", "Then", "Else", "Func", "Boolean", - "I8", "I16", "I32", "I64", "FP32", "FP64", "String", "Binary", "Timestamp", - "Timestamp_TZ", "Date", "Time", "Interval_Year", "Interval_Day", "Interval_Compound", - "UUID", "Decimal", "Precision_Time", "Precision_Timestamp", "Precision_Timestamp_TZ", - "FixedChar", "VarChar", "FixedBinary", "Struct", "NStruct", "List", - "Map", "UserDefined", "Bool", "Str", "VBin", "Ts", "TsTZ", "IYear", - "IDay", "ICompound", "Dec", "PT", "PTs", "PTsTZ", "FChar", "VChar", - "FBin", "Any", "AnyVar", "DoubleColon", "Plus", "Minus", "Asterisk", + "IntervalCompoundLiteral", "NullLiteral", "StringLiteral", "EnumType", + "ColumnName", "LineComment", "BlockComment", "If", "Then", "Else", "Func", + "Boolean", "I8", "I16", "I32", "I64", "FP32", "FP64", "String", "Binary", + "Timestamp", "Timestamp_TZ", "Date", "Time", "Interval_Year", "Interval_Day", + "Interval_Compound", "UUID", "Decimal", "Precision_Time", "Precision_Timestamp", + "Precision_Timestamp_TZ", "FixedChar", "VarChar", "FixedBinary", "Struct", + "NStruct", "List", "Map", "UserDefined", "Bool", "Str", "VBin", "Ts", + "TsTZ", "IYear", "IDay", "ICompound", "Dec", "PT", "PTs", "PTsTZ", "FChar", + "VChar", "FBin", "Any", "AnyVar", "DoubleColon", "Plus", "Minus", "Asterisk", "ForwardSlash", "Percent", "Eq", "Ne", "Gte", "Lte", "Gt", "Lt", "Bang", "OParen", "CParen", "OBracket", "CBracket", "Comma", "Colon", "QMark", "Hash", "Dot", "And", "Or", "Assign", "Arrow", "Number", "Identifier", @@ -97,11 +97,11 @@ func functestcaselexerLexerInit() { "YearSuffix", "MSuffix", "DaySuffix", "HourSuffix", "SecondSuffix", "FractionalSecondSuffix", "OAngleBracket", "CAngleBracket", "IntervalYearLiteral", "IntervalDayLiteral", "TimeInterval", "IntervalCompoundLiteral", "NullLiteral", - "StringLiteral", "ColumnName", "LineComment", "BlockComment", "DIGIT", - "If", "Then", "Else", "Func", "Boolean", "I8", "I16", "I32", "I64", - "FP32", "FP64", "String", "Binary", "Timestamp", "Timestamp_TZ", "Date", - "Time", "Interval_Year", "Interval_Day", "Interval_Compound", "UUID", - "Decimal", "Precision_Time", "Precision_Timestamp", "Precision_Timestamp_TZ", + "StringLiteral", "EnumType", "ColumnName", "LineComment", "BlockComment", + "DIGIT", "If", "Then", "Else", "Func", "Boolean", "I8", "I16", "I32", + "I64", "FP32", "FP64", "String", "Binary", "Timestamp", "Timestamp_TZ", + "Date", "Time", "Interval_Year", "Interval_Day", "Interval_Compound", + "UUID", "Decimal", "Precision_Time", "Precision_Timestamp", "Precision_Timestamp_TZ", "FixedChar", "VarChar", "FixedBinary", "Struct", "NStruct", "List", "Map", "UserDefined", "Bool", "Str", "VBin", "Ts", "TsTZ", "IYear", "IDay", "ICompound", "Dec", "PT", "PTs", "PTsTZ", "FChar", "VChar", @@ -113,7 +113,7 @@ func functestcaselexerLexerInit() { } staticData.PredictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 0, 128, 1306, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, + 4, 0, 129, 1313, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, @@ -139,563 +139,566 @@ func functestcaselexerLexerInit() { 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, - 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 1, 0, 4, 0, 271, 8, 0, - 11, 0, 12, 0, 272, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, - 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, - 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, - 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, - 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, - 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, - 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, - 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, - 1, 6, 4, 6, 369, 8, 6, 11, 6, 12, 6, 370, 1, 6, 1, 6, 4, 6, 375, 8, 6, - 11, 6, 12, 6, 376, 3, 6, 379, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 5, 7, 385, - 8, 7, 10, 7, 12, 7, 388, 9, 7, 1, 7, 3, 7, 391, 8, 7, 1, 7, 1, 7, 1, 8, - 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, - 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, - 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, - 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, - 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, - 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, - 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, - 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, - 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, - 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, - 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, - 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, - 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, - 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 3, 23, 542, 8, 23, - 1, 23, 1, 23, 1, 24, 3, 24, 547, 8, 24, 1, 24, 4, 24, 550, 8, 24, 11, 24, - 12, 24, 551, 1, 24, 1, 24, 4, 24, 556, 8, 24, 11, 24, 12, 24, 557, 3, 24, - 560, 8, 24, 1, 25, 3, 25, 563, 8, 25, 1, 25, 4, 25, 566, 8, 25, 11, 25, - 12, 25, 567, 1, 25, 1, 25, 5, 25, 572, 8, 25, 10, 25, 12, 25, 575, 9, 25, - 3, 25, 577, 8, 25, 1, 25, 1, 25, 3, 25, 581, 8, 25, 1, 25, 4, 25, 584, - 8, 25, 11, 25, 12, 25, 585, 3, 25, 588, 8, 25, 1, 25, 3, 25, 591, 8, 25, - 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 600, 8, 25, 1, - 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 611, - 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 29, 1, - 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, - 1, 29, 1, 29, 4, 29, 635, 8, 29, 11, 29, 12, 29, 636, 3, 29, 639, 8, 29, - 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, - 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 4, 30, - 661, 8, 30, 11, 30, 12, 30, 662, 3, 30, 665, 8, 30, 1, 30, 1, 30, 1, 31, - 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 4, 31, 677, 8, 31, 11, - 31, 12, 31, 678, 3, 31, 681, 8, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, - 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 1, - 35, 1, 36, 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 1, 40, - 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, - 43, 3, 43, 720, 8, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, - 1, 43, 3, 43, 730, 8, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, - 44, 3, 44, 739, 8, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, - 1, 44, 3, 44, 749, 8, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 756, - 8, 45, 1, 45, 1, 45, 1, 45, 3, 45, 761, 8, 45, 1, 45, 1, 45, 1, 45, 1, - 45, 1, 45, 3, 45, 768, 8, 45, 1, 45, 1, 45, 1, 45, 3, 45, 773, 8, 45, 1, - 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 780, 8, 46, 1, 46, 1, 46, 1, 46, - 3, 46, 785, 8, 46, 1, 46, 1, 46, 1, 46, 3, 46, 790, 8, 46, 1, 46, 1, 46, - 1, 46, 3, 46, 795, 8, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, - 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 5, 48, 810, 8, 48, 10, 48, - 12, 48, 813, 9, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, - 49, 1, 50, 1, 50, 1, 50, 1, 50, 5, 50, 827, 8, 50, 10, 50, 12, 50, 830, - 9, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 4, 51, 839, 8, - 51, 11, 51, 12, 51, 840, 1, 51, 3, 51, 844, 8, 51, 1, 51, 5, 51, 847, 8, - 51, 10, 51, 12, 51, 850, 9, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, - 1, 52, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, - 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, - 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 59, 1, - 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, - 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, - 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, + 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 1, 0, 4, + 0, 273, 8, 0, 11, 0, 12, 0, 274, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, + 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, + 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, + 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, + 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, + 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, + 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, + 5, 1, 5, 1, 6, 1, 6, 4, 6, 371, 8, 6, 11, 6, 12, 6, 372, 1, 6, 1, 6, 4, + 6, 377, 8, 6, 11, 6, 12, 6, 378, 3, 6, 381, 8, 6, 1, 7, 1, 7, 1, 7, 1, + 7, 5, 7, 387, 8, 7, 10, 7, 12, 7, 390, 9, 7, 1, 7, 3, 7, 393, 8, 7, 1, + 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, + 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, + 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, + 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, + 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, + 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, + 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, + 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, + 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, + 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, + 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, + 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, + 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, + 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 3, + 23, 544, 8, 23, 1, 23, 1, 23, 1, 24, 3, 24, 549, 8, 24, 1, 24, 4, 24, 552, + 8, 24, 11, 24, 12, 24, 553, 1, 24, 1, 24, 4, 24, 558, 8, 24, 11, 24, 12, + 24, 559, 3, 24, 562, 8, 24, 1, 25, 3, 25, 565, 8, 25, 1, 25, 4, 25, 568, + 8, 25, 11, 25, 12, 25, 569, 1, 25, 1, 25, 5, 25, 574, 8, 25, 10, 25, 12, + 25, 577, 9, 25, 3, 25, 579, 8, 25, 1, 25, 1, 25, 3, 25, 583, 8, 25, 1, + 25, 4, 25, 586, 8, 25, 11, 25, 12, 25, 587, 3, 25, 590, 8, 25, 1, 25, 3, + 25, 593, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, + 602, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, + 26, 3, 26, 613, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, + 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, + 29, 1, 29, 1, 29, 1, 29, 1, 29, 4, 29, 637, 8, 29, 11, 29, 12, 29, 638, + 3, 29, 641, 8, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, + 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, + 1, 30, 1, 30, 4, 30, 663, 8, 30, 11, 30, 12, 30, 664, 3, 30, 667, 8, 30, + 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 4, + 31, 679, 8, 31, 11, 31, 12, 31, 680, 3, 31, 683, 8, 31, 1, 31, 1, 31, 1, + 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 34, + 1, 34, 1, 35, 1, 35, 1, 36, 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, + 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, + 1, 43, 1, 43, 1, 43, 3, 43, 722, 8, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, + 43, 1, 43, 1, 43, 1, 43, 3, 43, 732, 8, 43, 1, 44, 1, 44, 1, 44, 1, 44, + 1, 44, 1, 44, 1, 44, 3, 44, 741, 8, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, + 44, 1, 44, 1, 44, 1, 44, 3, 44, 751, 8, 44, 1, 45, 1, 45, 1, 45, 1, 45, + 1, 45, 3, 45, 758, 8, 45, 1, 45, 1, 45, 1, 45, 3, 45, 763, 8, 45, 1, 45, + 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 770, 8, 45, 1, 45, 1, 45, 1, 45, 3, + 45, 775, 8, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 782, 8, 46, 1, + 46, 1, 46, 1, 46, 3, 46, 787, 8, 46, 1, 46, 1, 46, 1, 46, 3, 46, 792, 8, + 46, 1, 46, 1, 46, 1, 46, 3, 46, 797, 8, 46, 1, 46, 1, 46, 1, 47, 1, 47, + 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 5, 48, 812, + 8, 48, 10, 48, 12, 48, 815, 9, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, + 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, + 1, 51, 5, 51, 834, 8, 51, 10, 51, 12, 51, 837, 9, 51, 1, 51, 1, 51, 1, + 52, 1, 52, 1, 52, 1, 52, 1, 52, 4, 52, 846, 8, 52, 11, 52, 12, 52, 847, + 1, 52, 3, 52, 851, 8, 52, 1, 52, 5, 52, 854, 8, 52, 10, 52, 12, 52, 857, + 9, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, + 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, + 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, + 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, + 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, + 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, - 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, - 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, - 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, - 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, - 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, - 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, - 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, - 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, - 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, - 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, - 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, - 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, - 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, - 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, - 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, - 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, - 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, - 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, - 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 86, - 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, - 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, - 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, - 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, - 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, - 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, - 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, - 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, - 1, 102, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 105, 1, 105, 1, 106, - 1, 106, 1, 107, 1, 107, 1, 108, 1, 108, 1, 109, 1, 109, 1, 110, 1, 110, - 1, 110, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, - 1, 114, 1, 114, 1, 115, 1, 115, 1, 116, 1, 116, 1, 117, 1, 117, 1, 118, - 1, 118, 1, 119, 1, 119, 1, 120, 1, 120, 1, 121, 1, 121, 1, 122, 1, 122, - 1, 123, 1, 123, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, - 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 129, - 1, 129, 5, 129, 1277, 8, 129, 10, 129, 12, 129, 1280, 9, 129, 1, 129, 3, - 129, 1283, 8, 129, 1, 130, 1, 130, 1, 131, 3, 131, 1288, 8, 131, 1, 131, - 1, 131, 1, 132, 1, 132, 1, 132, 5, 132, 1295, 8, 132, 10, 132, 12, 132, - 1298, 9, 132, 1, 133, 1, 133, 3, 133, 1302, 8, 133, 1, 133, 3, 133, 1305, - 8, 133, 0, 0, 134, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, - 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, - 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, - 27, 55, 0, 57, 0, 59, 28, 61, 29, 63, 30, 65, 31, 67, 32, 69, 33, 71, 34, - 73, 35, 75, 36, 77, 37, 79, 38, 81, 39, 83, 40, 85, 41, 87, 42, 89, 43, - 91, 0, 93, 44, 95, 45, 97, 46, 99, 47, 101, 48, 103, 49, 105, 0, 107, 50, - 109, 51, 111, 52, 113, 53, 115, 54, 117, 55, 119, 56, 121, 57, 123, 58, - 125, 59, 127, 60, 129, 61, 131, 62, 133, 63, 135, 64, 137, 65, 139, 66, - 141, 67, 143, 68, 145, 69, 147, 70, 149, 71, 151, 72, 153, 73, 155, 74, - 157, 75, 159, 76, 161, 77, 163, 78, 165, 79, 167, 80, 169, 81, 171, 82, - 173, 83, 175, 84, 177, 85, 179, 86, 181, 87, 183, 88, 185, 89, 187, 90, - 189, 91, 191, 92, 193, 93, 195, 94, 197, 95, 199, 96, 201, 97, 203, 98, - 205, 99, 207, 100, 209, 101, 211, 102, 213, 103, 215, 104, 217, 105, 219, - 106, 221, 107, 223, 108, 225, 109, 227, 110, 229, 111, 231, 112, 233, 113, - 235, 114, 237, 115, 239, 116, 241, 117, 243, 118, 245, 119, 247, 120, 249, - 121, 251, 122, 253, 123, 255, 124, 257, 125, 259, 0, 261, 0, 263, 126, - 265, 127, 267, 128, 1, 0, 31, 3, 0, 9, 10, 13, 13, 32, 32, 2, 0, 83, 83, - 115, 115, 2, 0, 85, 85, 117, 117, 2, 0, 66, 66, 98, 98, 2, 0, 84, 84, 116, - 116, 2, 0, 82, 82, 114, 114, 2, 0, 65, 65, 97, 97, 2, 0, 73, 73, 105, 105, - 2, 0, 67, 67, 99, 99, 2, 0, 76, 76, 108, 108, 2, 0, 69, 69, 101, 101, 2, - 0, 71, 71, 103, 103, 2, 0, 78, 78, 110, 110, 2, 0, 68, 68, 100, 100, 2, - 0, 80, 80, 112, 112, 2, 0, 89, 89, 121, 121, 2, 0, 86, 86, 118, 118, 2, - 0, 10, 10, 13, 13, 2, 0, 70, 70, 102, 102, 2, 0, 79, 79, 111, 111, 2, 0, - 87, 87, 119, 119, 2, 0, 72, 72, 104, 104, 2, 0, 43, 43, 45, 45, 1, 0, 48, - 57, 2, 0, 77, 77, 109, 109, 2, 0, 39, 39, 92, 92, 1, 0, 42, 42, 2, 0, 42, - 42, 47, 47, 2, 0, 90, 90, 122, 122, 2, 0, 88, 88, 120, 120, 4, 0, 36, 36, - 65, 90, 95, 95, 97, 122, 1354, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, - 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, - 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, - 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, - 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, - 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, - 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, - 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, - 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, - 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, - 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, - 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, - 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, - 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, - 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, - 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, - 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, - 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, - 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, - 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, - 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, - 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, - 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, - 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, - 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, - 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, - 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, - 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, - 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, - 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, - 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, - 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, - 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, - 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, - 0, 257, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, - 0, 0, 0, 1, 270, 1, 0, 0, 0, 3, 276, 1, 0, 0, 0, 5, 280, 1, 0, 0, 0, 7, - 302, 1, 0, 0, 0, 9, 327, 1, 0, 0, 0, 11, 345, 1, 0, 0, 0, 13, 366, 1, 0, - 0, 0, 15, 380, 1, 0, 0, 0, 17, 394, 1, 0, 0, 0, 19, 401, 1, 0, 0, 0, 21, - 410, 1, 0, 0, 0, 23, 423, 1, 0, 0, 0, 25, 432, 1, 0, 0, 0, 27, 441, 1, - 0, 0, 0, 29, 447, 1, 0, 0, 0, 31, 456, 1, 0, 0, 0, 33, 463, 1, 0, 0, 0, - 35, 475, 1, 0, 0, 0, 37, 479, 1, 0, 0, 0, 39, 492, 1, 0, 0, 0, 41, 505, - 1, 0, 0, 0, 43, 519, 1, 0, 0, 0, 45, 531, 1, 0, 0, 0, 47, 541, 1, 0, 0, - 0, 49, 546, 1, 0, 0, 0, 51, 599, 1, 0, 0, 0, 53, 610, 1, 0, 0, 0, 55, 612, - 1, 0, 0, 0, 57, 617, 1, 0, 0, 0, 59, 620, 1, 0, 0, 0, 61, 646, 1, 0, 0, - 0, 63, 668, 1, 0, 0, 0, 65, 684, 1, 0, 0, 0, 67, 692, 1, 0, 0, 0, 69, 694, - 1, 0, 0, 0, 71, 696, 1, 0, 0, 0, 73, 698, 1, 0, 0, 0, 75, 700, 1, 0, 0, - 0, 77, 702, 1, 0, 0, 0, 79, 704, 1, 0, 0, 0, 81, 706, 1, 0, 0, 0, 83, 708, - 1, 0, 0, 0, 85, 710, 1, 0, 0, 0, 87, 729, 1, 0, 0, 0, 89, 748, 1, 0, 0, - 0, 91, 772, 1, 0, 0, 0, 93, 774, 1, 0, 0, 0, 95, 798, 1, 0, 0, 0, 97, 803, - 1, 0, 0, 0, 99, 816, 1, 0, 0, 0, 101, 822, 1, 0, 0, 0, 103, 833, 1, 0, - 0, 0, 105, 856, 1, 0, 0, 0, 107, 858, 1, 0, 0, 0, 109, 861, 1, 0, 0, 0, - 111, 866, 1, 0, 0, 0, 113, 871, 1, 0, 0, 0, 115, 876, 1, 0, 0, 0, 117, - 884, 1, 0, 0, 0, 119, 887, 1, 0, 0, 0, 121, 891, 1, 0, 0, 0, 123, 895, - 1, 0, 0, 0, 125, 899, 1, 0, 0, 0, 127, 904, 1, 0, 0, 0, 129, 909, 1, 0, - 0, 0, 131, 916, 1, 0, 0, 0, 133, 923, 1, 0, 0, 0, 135, 933, 1, 0, 0, 0, - 137, 946, 1, 0, 0, 0, 139, 951, 1, 0, 0, 0, 141, 956, 1, 0, 0, 0, 143, - 970, 1, 0, 0, 0, 145, 983, 1, 0, 0, 0, 147, 1001, 1, 0, 0, 0, 149, 1006, - 1, 0, 0, 0, 151, 1014, 1, 0, 0, 0, 153, 1029, 1, 0, 0, 0, 155, 1049, 1, - 0, 0, 0, 157, 1072, 1, 0, 0, 0, 159, 1082, 1, 0, 0, 0, 161, 1090, 1, 0, - 0, 0, 163, 1102, 1, 0, 0, 0, 165, 1109, 1, 0, 0, 0, 167, 1117, 1, 0, 0, - 0, 169, 1122, 1, 0, 0, 0, 171, 1126, 1, 0, 0, 0, 173, 1129, 1, 0, 0, 0, - 175, 1134, 1, 0, 0, 0, 177, 1138, 1, 0, 0, 0, 179, 1143, 1, 0, 0, 0, 181, - 1146, 1, 0, 0, 0, 183, 1151, 1, 0, 0, 0, 185, 1157, 1, 0, 0, 0, 187, 1162, - 1, 0, 0, 0, 189, 1172, 1, 0, 0, 0, 191, 1176, 1, 0, 0, 0, 193, 1179, 1, - 0, 0, 0, 195, 1183, 1, 0, 0, 0, 197, 1189, 1, 0, 0, 0, 199, 1195, 1, 0, - 0, 0, 201, 1201, 1, 0, 0, 0, 203, 1206, 1, 0, 0, 0, 205, 1210, 1, 0, 0, - 0, 207, 1213, 1, 0, 0, 0, 209, 1216, 1, 0, 0, 0, 211, 1218, 1, 0, 0, 0, - 213, 1220, 1, 0, 0, 0, 215, 1222, 1, 0, 0, 0, 217, 1224, 1, 0, 0, 0, 219, - 1226, 1, 0, 0, 0, 221, 1228, 1, 0, 0, 0, 223, 1231, 1, 0, 0, 0, 225, 1234, - 1, 0, 0, 0, 227, 1237, 1, 0, 0, 0, 229, 1239, 1, 0, 0, 0, 231, 1241, 1, - 0, 0, 0, 233, 1243, 1, 0, 0, 0, 235, 1245, 1, 0, 0, 0, 237, 1247, 1, 0, - 0, 0, 239, 1249, 1, 0, 0, 0, 241, 1251, 1, 0, 0, 0, 243, 1253, 1, 0, 0, - 0, 245, 1255, 1, 0, 0, 0, 247, 1257, 1, 0, 0, 0, 249, 1259, 1, 0, 0, 0, - 251, 1261, 1, 0, 0, 0, 253, 1265, 1, 0, 0, 0, 255, 1268, 1, 0, 0, 0, 257, - 1271, 1, 0, 0, 0, 259, 1282, 1, 0, 0, 0, 261, 1284, 1, 0, 0, 0, 263, 1287, - 1, 0, 0, 0, 265, 1291, 1, 0, 0, 0, 267, 1304, 1, 0, 0, 0, 269, 271, 7, - 0, 0, 0, 270, 269, 1, 0, 0, 0, 271, 272, 1, 0, 0, 0, 272, 270, 1, 0, 0, - 0, 272, 273, 1, 0, 0, 0, 273, 274, 1, 0, 0, 0, 274, 275, 6, 0, 0, 0, 275, - 2, 1, 0, 0, 0, 276, 277, 5, 35, 0, 0, 277, 278, 5, 35, 0, 0, 278, 279, - 5, 35, 0, 0, 279, 4, 1, 0, 0, 0, 280, 281, 7, 1, 0, 0, 281, 282, 7, 2, - 0, 0, 282, 283, 7, 3, 0, 0, 283, 284, 7, 1, 0, 0, 284, 285, 7, 4, 0, 0, - 285, 286, 7, 5, 0, 0, 286, 287, 7, 6, 0, 0, 287, 288, 7, 7, 0, 0, 288, - 289, 7, 4, 0, 0, 289, 290, 5, 95, 0, 0, 290, 291, 7, 1, 0, 0, 291, 292, - 7, 8, 0, 0, 292, 293, 7, 6, 0, 0, 293, 294, 7, 9, 0, 0, 294, 295, 7, 6, - 0, 0, 295, 296, 7, 5, 0, 0, 296, 297, 5, 95, 0, 0, 297, 298, 7, 4, 0, 0, - 298, 299, 7, 10, 0, 0, 299, 300, 7, 1, 0, 0, 300, 301, 7, 4, 0, 0, 301, - 6, 1, 0, 0, 0, 302, 303, 7, 1, 0, 0, 303, 304, 7, 2, 0, 0, 304, 305, 7, - 3, 0, 0, 305, 306, 7, 1, 0, 0, 306, 307, 7, 4, 0, 0, 307, 308, 7, 5, 0, - 0, 308, 309, 7, 6, 0, 0, 309, 310, 7, 7, 0, 0, 310, 311, 7, 4, 0, 0, 311, - 312, 5, 95, 0, 0, 312, 313, 7, 6, 0, 0, 313, 314, 7, 11, 0, 0, 314, 315, - 7, 11, 0, 0, 315, 316, 7, 5, 0, 0, 316, 317, 7, 10, 0, 0, 317, 318, 7, - 11, 0, 0, 318, 319, 7, 6, 0, 0, 319, 320, 7, 4, 0, 0, 320, 321, 7, 10, - 0, 0, 321, 322, 5, 95, 0, 0, 322, 323, 7, 4, 0, 0, 323, 324, 7, 10, 0, - 0, 324, 325, 7, 1, 0, 0, 325, 326, 7, 4, 0, 0, 326, 8, 1, 0, 0, 0, 327, - 328, 7, 1, 0, 0, 328, 329, 7, 2, 0, 0, 329, 330, 7, 3, 0, 0, 330, 331, - 7, 1, 0, 0, 331, 332, 7, 4, 0, 0, 332, 333, 7, 5, 0, 0, 333, 334, 7, 6, - 0, 0, 334, 335, 7, 7, 0, 0, 335, 336, 7, 4, 0, 0, 336, 337, 5, 95, 0, 0, - 337, 338, 7, 7, 0, 0, 338, 339, 7, 12, 0, 0, 339, 340, 7, 8, 0, 0, 340, - 341, 7, 9, 0, 0, 341, 342, 7, 2, 0, 0, 342, 343, 7, 13, 0, 0, 343, 344, - 7, 10, 0, 0, 344, 10, 1, 0, 0, 0, 345, 346, 7, 1, 0, 0, 346, 347, 7, 2, - 0, 0, 347, 348, 7, 3, 0, 0, 348, 349, 7, 1, 0, 0, 349, 350, 7, 4, 0, 0, - 350, 351, 7, 5, 0, 0, 351, 352, 7, 6, 0, 0, 352, 353, 7, 7, 0, 0, 353, - 354, 7, 4, 0, 0, 354, 355, 5, 95, 0, 0, 355, 356, 7, 13, 0, 0, 356, 357, - 7, 10, 0, 0, 357, 358, 7, 14, 0, 0, 358, 359, 7, 10, 0, 0, 359, 360, 7, - 12, 0, 0, 360, 361, 7, 13, 0, 0, 361, 362, 7, 10, 0, 0, 362, 363, 7, 12, - 0, 0, 363, 364, 7, 8, 0, 0, 364, 365, 7, 15, 0, 0, 365, 12, 1, 0, 0, 0, - 366, 368, 7, 16, 0, 0, 367, 369, 3, 105, 52, 0, 368, 367, 1, 0, 0, 0, 369, - 370, 1, 0, 0, 0, 370, 368, 1, 0, 0, 0, 370, 371, 1, 0, 0, 0, 371, 378, - 1, 0, 0, 0, 372, 374, 5, 46, 0, 0, 373, 375, 3, 105, 52, 0, 374, 373, 1, - 0, 0, 0, 375, 376, 1, 0, 0, 0, 376, 374, 1, 0, 0, 0, 376, 377, 1, 0, 0, - 0, 377, 379, 1, 0, 0, 0, 378, 372, 1, 0, 0, 0, 378, 379, 1, 0, 0, 0, 379, - 14, 1, 0, 0, 0, 380, 381, 5, 35, 0, 0, 381, 382, 5, 32, 0, 0, 382, 386, - 1, 0, 0, 0, 383, 385, 8, 17, 0, 0, 384, 383, 1, 0, 0, 0, 385, 388, 1, 0, - 0, 0, 386, 384, 1, 0, 0, 0, 386, 387, 1, 0, 0, 0, 387, 390, 1, 0, 0, 0, - 388, 386, 1, 0, 0, 0, 389, 391, 5, 13, 0, 0, 390, 389, 1, 0, 0, 0, 390, - 391, 1, 0, 0, 0, 391, 392, 1, 0, 0, 0, 392, 393, 5, 10, 0, 0, 393, 16, - 1, 0, 0, 0, 394, 395, 7, 13, 0, 0, 395, 396, 7, 10, 0, 0, 396, 397, 7, - 18, 0, 0, 397, 398, 7, 7, 0, 0, 398, 399, 7, 12, 0, 0, 399, 400, 7, 10, - 0, 0, 400, 18, 1, 0, 0, 0, 401, 402, 5, 60, 0, 0, 402, 403, 5, 33, 0, 0, - 403, 404, 7, 10, 0, 0, 404, 405, 7, 5, 0, 0, 405, 406, 7, 5, 0, 0, 406, - 407, 7, 19, 0, 0, 407, 408, 7, 5, 0, 0, 408, 409, 5, 62, 0, 0, 409, 20, - 1, 0, 0, 0, 410, 411, 5, 60, 0, 0, 411, 412, 5, 33, 0, 0, 412, 413, 7, - 2, 0, 0, 413, 414, 7, 12, 0, 0, 414, 415, 7, 13, 0, 0, 415, 416, 7, 10, - 0, 0, 416, 417, 7, 18, 0, 0, 417, 418, 7, 7, 0, 0, 418, 419, 7, 12, 0, - 0, 419, 420, 7, 10, 0, 0, 420, 421, 7, 13, 0, 0, 421, 422, 5, 62, 0, 0, - 422, 22, 1, 0, 0, 0, 423, 424, 7, 19, 0, 0, 424, 425, 7, 16, 0, 0, 425, - 426, 7, 10, 0, 0, 426, 427, 7, 5, 0, 0, 427, 428, 7, 18, 0, 0, 428, 429, - 7, 9, 0, 0, 429, 430, 7, 19, 0, 0, 430, 431, 7, 20, 0, 0, 431, 24, 1, 0, - 0, 0, 432, 433, 7, 5, 0, 0, 433, 434, 7, 19, 0, 0, 434, 435, 7, 2, 0, 0, - 435, 436, 7, 12, 0, 0, 436, 437, 7, 13, 0, 0, 437, 438, 7, 7, 0, 0, 438, - 439, 7, 12, 0, 0, 439, 440, 7, 11, 0, 0, 440, 26, 1, 0, 0, 0, 441, 442, - 7, 10, 0, 0, 442, 443, 7, 5, 0, 0, 443, 444, 7, 5, 0, 0, 444, 445, 7, 19, - 0, 0, 445, 446, 7, 5, 0, 0, 446, 28, 1, 0, 0, 0, 447, 448, 7, 1, 0, 0, - 448, 449, 7, 6, 0, 0, 449, 450, 7, 4, 0, 0, 450, 451, 7, 2, 0, 0, 451, - 452, 7, 5, 0, 0, 452, 453, 7, 6, 0, 0, 453, 454, 7, 4, 0, 0, 454, 455, - 7, 10, 0, 0, 455, 30, 1, 0, 0, 0, 456, 457, 7, 1, 0, 0, 457, 458, 7, 7, - 0, 0, 458, 459, 7, 9, 0, 0, 459, 460, 7, 10, 0, 0, 460, 461, 7, 12, 0, - 0, 461, 462, 7, 4, 0, 0, 462, 32, 1, 0, 0, 0, 463, 464, 7, 4, 0, 0, 464, - 465, 7, 7, 0, 0, 465, 466, 7, 10, 0, 0, 466, 467, 5, 95, 0, 0, 467, 468, - 7, 4, 0, 0, 468, 469, 7, 19, 0, 0, 469, 470, 5, 95, 0, 0, 470, 471, 7, - 10, 0, 0, 471, 472, 7, 16, 0, 0, 472, 473, 7, 10, 0, 0, 473, 474, 7, 12, - 0, 0, 474, 34, 1, 0, 0, 0, 475, 476, 7, 12, 0, 0, 476, 477, 7, 6, 0, 0, - 477, 478, 7, 12, 0, 0, 478, 36, 1, 0, 0, 0, 479, 480, 7, 6, 0, 0, 480, - 481, 7, 8, 0, 0, 481, 482, 7, 8, 0, 0, 482, 483, 7, 10, 0, 0, 483, 484, - 7, 14, 0, 0, 484, 485, 7, 4, 0, 0, 485, 486, 5, 95, 0, 0, 486, 487, 7, - 12, 0, 0, 487, 488, 7, 2, 0, 0, 488, 489, 7, 9, 0, 0, 489, 490, 7, 9, 0, - 0, 490, 491, 7, 1, 0, 0, 491, 38, 1, 0, 0, 0, 492, 493, 7, 7, 0, 0, 493, - 494, 7, 11, 0, 0, 494, 495, 7, 12, 0, 0, 495, 496, 7, 19, 0, 0, 496, 497, - 7, 5, 0, 0, 497, 498, 7, 10, 0, 0, 498, 499, 5, 95, 0, 0, 499, 500, 7, - 12, 0, 0, 500, 501, 7, 2, 0, 0, 501, 502, 7, 9, 0, 0, 502, 503, 7, 9, 0, - 0, 503, 504, 7, 1, 0, 0, 504, 40, 1, 0, 0, 0, 505, 506, 7, 12, 0, 0, 506, - 507, 7, 2, 0, 0, 507, 508, 7, 9, 0, 0, 508, 509, 7, 9, 0, 0, 509, 510, - 5, 95, 0, 0, 510, 511, 7, 21, 0, 0, 511, 512, 7, 6, 0, 0, 512, 513, 7, - 12, 0, 0, 513, 514, 7, 13, 0, 0, 514, 515, 7, 9, 0, 0, 515, 516, 7, 7, - 0, 0, 516, 517, 7, 12, 0, 0, 517, 518, 7, 11, 0, 0, 518, 42, 1, 0, 0, 0, - 519, 520, 7, 1, 0, 0, 520, 521, 7, 14, 0, 0, 521, 522, 7, 6, 0, 0, 522, - 523, 7, 8, 0, 0, 523, 524, 7, 10, 0, 0, 524, 525, 7, 1, 0, 0, 525, 526, - 5, 95, 0, 0, 526, 527, 7, 19, 0, 0, 527, 528, 7, 12, 0, 0, 528, 529, 7, - 9, 0, 0, 529, 530, 7, 15, 0, 0, 530, 44, 1, 0, 0, 0, 531, 532, 7, 4, 0, - 0, 532, 533, 7, 5, 0, 0, 533, 534, 7, 2, 0, 0, 534, 535, 7, 12, 0, 0, 535, - 536, 7, 8, 0, 0, 536, 537, 7, 6, 0, 0, 537, 538, 7, 4, 0, 0, 538, 539, - 7, 10, 0, 0, 539, 46, 1, 0, 0, 0, 540, 542, 7, 22, 0, 0, 541, 540, 1, 0, - 0, 0, 541, 542, 1, 0, 0, 0, 542, 543, 1, 0, 0, 0, 543, 544, 3, 259, 129, - 0, 544, 48, 1, 0, 0, 0, 545, 547, 7, 22, 0, 0, 546, 545, 1, 0, 0, 0, 546, - 547, 1, 0, 0, 0, 547, 549, 1, 0, 0, 0, 548, 550, 7, 23, 0, 0, 549, 548, - 1, 0, 0, 0, 550, 551, 1, 0, 0, 0, 551, 549, 1, 0, 0, 0, 551, 552, 1, 0, - 0, 0, 552, 559, 1, 0, 0, 0, 553, 555, 5, 46, 0, 0, 554, 556, 7, 23, 0, - 0, 555, 554, 1, 0, 0, 0, 556, 557, 1, 0, 0, 0, 557, 555, 1, 0, 0, 0, 557, - 558, 1, 0, 0, 0, 558, 560, 1, 0, 0, 0, 559, 553, 1, 0, 0, 0, 559, 560, - 1, 0, 0, 0, 560, 50, 1, 0, 0, 0, 561, 563, 7, 22, 0, 0, 562, 561, 1, 0, - 0, 0, 562, 563, 1, 0, 0, 0, 563, 565, 1, 0, 0, 0, 564, 566, 7, 23, 0, 0, - 565, 564, 1, 0, 0, 0, 566, 567, 1, 0, 0, 0, 567, 565, 1, 0, 0, 0, 567, - 568, 1, 0, 0, 0, 568, 576, 1, 0, 0, 0, 569, 573, 5, 46, 0, 0, 570, 572, - 7, 23, 0, 0, 571, 570, 1, 0, 0, 0, 572, 575, 1, 0, 0, 0, 573, 571, 1, 0, - 0, 0, 573, 574, 1, 0, 0, 0, 574, 577, 1, 0, 0, 0, 575, 573, 1, 0, 0, 0, - 576, 569, 1, 0, 0, 0, 576, 577, 1, 0, 0, 0, 577, 587, 1, 0, 0, 0, 578, - 580, 7, 10, 0, 0, 579, 581, 7, 22, 0, 0, 580, 579, 1, 0, 0, 0, 580, 581, - 1, 0, 0, 0, 581, 583, 1, 0, 0, 0, 582, 584, 7, 23, 0, 0, 583, 582, 1, 0, - 0, 0, 584, 585, 1, 0, 0, 0, 585, 583, 1, 0, 0, 0, 585, 586, 1, 0, 0, 0, - 586, 588, 1, 0, 0, 0, 587, 578, 1, 0, 0, 0, 587, 588, 1, 0, 0, 0, 588, - 600, 1, 0, 0, 0, 589, 591, 7, 22, 0, 0, 590, 589, 1, 0, 0, 0, 590, 591, - 1, 0, 0, 0, 591, 592, 1, 0, 0, 0, 592, 593, 7, 7, 0, 0, 593, 594, 7, 12, - 0, 0, 594, 600, 7, 18, 0, 0, 595, 596, 7, 1, 0, 0, 596, 597, 7, 12, 0, - 0, 597, 598, 7, 6, 0, 0, 598, 600, 7, 12, 0, 0, 599, 562, 1, 0, 0, 0, 599, - 590, 1, 0, 0, 0, 599, 595, 1, 0, 0, 0, 600, 52, 1, 0, 0, 0, 601, 602, 7, - 4, 0, 0, 602, 603, 7, 5, 0, 0, 603, 604, 7, 2, 0, 0, 604, 611, 7, 10, 0, - 0, 605, 606, 7, 18, 0, 0, 606, 607, 7, 6, 0, 0, 607, 608, 7, 9, 0, 0, 608, - 609, 7, 1, 0, 0, 609, 611, 7, 10, 0, 0, 610, 601, 1, 0, 0, 0, 610, 605, - 1, 0, 0, 0, 611, 54, 1, 0, 0, 0, 612, 613, 7, 23, 0, 0, 613, 614, 7, 23, - 0, 0, 614, 615, 7, 23, 0, 0, 615, 616, 7, 23, 0, 0, 616, 56, 1, 0, 0, 0, - 617, 618, 7, 23, 0, 0, 618, 619, 7, 23, 0, 0, 619, 58, 1, 0, 0, 0, 620, - 621, 5, 39, 0, 0, 621, 622, 3, 55, 27, 0, 622, 623, 5, 45, 0, 0, 623, 624, - 3, 57, 28, 0, 624, 625, 5, 45, 0, 0, 625, 626, 3, 57, 28, 0, 626, 627, - 7, 4, 0, 0, 627, 628, 3, 57, 28, 0, 628, 629, 5, 58, 0, 0, 629, 630, 3, - 57, 28, 0, 630, 631, 5, 58, 0, 0, 631, 638, 3, 57, 28, 0, 632, 634, 5, - 46, 0, 0, 633, 635, 7, 23, 0, 0, 634, 633, 1, 0, 0, 0, 635, 636, 1, 0, - 0, 0, 636, 634, 1, 0, 0, 0, 636, 637, 1, 0, 0, 0, 637, 639, 1, 0, 0, 0, - 638, 632, 1, 0, 0, 0, 638, 639, 1, 0, 0, 0, 639, 640, 1, 0, 0, 0, 640, - 641, 7, 22, 0, 0, 641, 642, 3, 57, 28, 0, 642, 643, 5, 58, 0, 0, 643, 644, - 3, 57, 28, 0, 644, 645, 5, 39, 0, 0, 645, 60, 1, 0, 0, 0, 646, 647, 5, - 39, 0, 0, 647, 648, 3, 55, 27, 0, 648, 649, 5, 45, 0, 0, 649, 650, 3, 57, - 28, 0, 650, 651, 5, 45, 0, 0, 651, 652, 3, 57, 28, 0, 652, 653, 7, 4, 0, - 0, 653, 654, 3, 57, 28, 0, 654, 655, 5, 58, 0, 0, 655, 656, 3, 57, 28, - 0, 656, 657, 5, 58, 0, 0, 657, 664, 3, 57, 28, 0, 658, 660, 5, 46, 0, 0, - 659, 661, 7, 23, 0, 0, 660, 659, 1, 0, 0, 0, 661, 662, 1, 0, 0, 0, 662, - 660, 1, 0, 0, 0, 662, 663, 1, 0, 0, 0, 663, 665, 1, 0, 0, 0, 664, 658, - 1, 0, 0, 0, 664, 665, 1, 0, 0, 0, 665, 666, 1, 0, 0, 0, 666, 667, 5, 39, - 0, 0, 667, 62, 1, 0, 0, 0, 668, 669, 5, 39, 0, 0, 669, 670, 3, 57, 28, - 0, 670, 671, 5, 58, 0, 0, 671, 672, 3, 57, 28, 0, 672, 673, 5, 58, 0, 0, - 673, 680, 3, 57, 28, 0, 674, 676, 5, 46, 0, 0, 675, 677, 7, 23, 0, 0, 676, - 675, 1, 0, 0, 0, 677, 678, 1, 0, 0, 0, 678, 676, 1, 0, 0, 0, 678, 679, - 1, 0, 0, 0, 679, 681, 1, 0, 0, 0, 680, 674, 1, 0, 0, 0, 680, 681, 1, 0, - 0, 0, 681, 682, 1, 0, 0, 0, 682, 683, 5, 39, 0, 0, 683, 64, 1, 0, 0, 0, - 684, 685, 5, 39, 0, 0, 685, 686, 3, 55, 27, 0, 686, 687, 5, 45, 0, 0, 687, - 688, 3, 57, 28, 0, 688, 689, 5, 45, 0, 0, 689, 690, 3, 57, 28, 0, 690, - 691, 5, 39, 0, 0, 691, 66, 1, 0, 0, 0, 692, 693, 7, 14, 0, 0, 693, 68, - 1, 0, 0, 0, 694, 695, 7, 4, 0, 0, 695, 70, 1, 0, 0, 0, 696, 697, 7, 15, - 0, 0, 697, 72, 1, 0, 0, 0, 698, 699, 7, 24, 0, 0, 699, 74, 1, 0, 0, 0, - 700, 701, 7, 13, 0, 0, 701, 76, 1, 0, 0, 0, 702, 703, 7, 21, 0, 0, 703, - 78, 1, 0, 0, 0, 704, 705, 7, 1, 0, 0, 705, 80, 1, 0, 0, 0, 706, 707, 7, - 18, 0, 0, 707, 82, 1, 0, 0, 0, 708, 709, 3, 229, 114, 0, 709, 84, 1, 0, - 0, 0, 710, 711, 3, 227, 113, 0, 711, 86, 1, 0, 0, 0, 712, 713, 5, 39, 0, - 0, 713, 714, 3, 67, 33, 0, 714, 715, 3, 47, 23, 0, 715, 719, 3, 71, 35, - 0, 716, 717, 3, 47, 23, 0, 717, 718, 3, 73, 36, 0, 718, 720, 1, 0, 0, 0, - 719, 716, 1, 0, 0, 0, 719, 720, 1, 0, 0, 0, 720, 721, 1, 0, 0, 0, 721, - 722, 5, 39, 0, 0, 722, 730, 1, 0, 0, 0, 723, 724, 5, 39, 0, 0, 724, 725, - 3, 67, 33, 0, 725, 726, 3, 47, 23, 0, 726, 727, 3, 73, 36, 0, 727, 728, - 5, 39, 0, 0, 728, 730, 1, 0, 0, 0, 729, 712, 1, 0, 0, 0, 729, 723, 1, 0, - 0, 0, 730, 88, 1, 0, 0, 0, 731, 732, 5, 39, 0, 0, 732, 733, 3, 67, 33, - 0, 733, 734, 3, 47, 23, 0, 734, 738, 3, 75, 37, 0, 735, 736, 3, 69, 34, - 0, 736, 737, 3, 91, 45, 0, 737, 739, 1, 0, 0, 0, 738, 735, 1, 0, 0, 0, - 738, 739, 1, 0, 0, 0, 739, 740, 1, 0, 0, 0, 740, 741, 5, 39, 0, 0, 741, - 749, 1, 0, 0, 0, 742, 743, 5, 39, 0, 0, 743, 744, 3, 67, 33, 0, 744, 745, - 3, 69, 34, 0, 745, 746, 3, 91, 45, 0, 746, 747, 5, 39, 0, 0, 747, 749, - 1, 0, 0, 0, 748, 731, 1, 0, 0, 0, 748, 742, 1, 0, 0, 0, 749, 90, 1, 0, - 0, 0, 750, 751, 3, 47, 23, 0, 751, 755, 3, 77, 38, 0, 752, 753, 3, 47, - 23, 0, 753, 754, 3, 73, 36, 0, 754, 756, 1, 0, 0, 0, 755, 752, 1, 0, 0, - 0, 755, 756, 1, 0, 0, 0, 756, 760, 1, 0, 0, 0, 757, 758, 3, 49, 24, 0, - 758, 759, 3, 79, 39, 0, 759, 761, 1, 0, 0, 0, 760, 757, 1, 0, 0, 0, 760, - 761, 1, 0, 0, 0, 761, 773, 1, 0, 0, 0, 762, 763, 3, 47, 23, 0, 763, 767, - 3, 73, 36, 0, 764, 765, 3, 49, 24, 0, 765, 766, 3, 79, 39, 0, 766, 768, - 1, 0, 0, 0, 767, 764, 1, 0, 0, 0, 767, 768, 1, 0, 0, 0, 768, 773, 1, 0, - 0, 0, 769, 770, 3, 49, 24, 0, 770, 771, 3, 79, 39, 0, 771, 773, 1, 0, 0, - 0, 772, 750, 1, 0, 0, 0, 772, 762, 1, 0, 0, 0, 772, 769, 1, 0, 0, 0, 773, - 92, 1, 0, 0, 0, 774, 775, 5, 39, 0, 0, 775, 779, 3, 67, 33, 0, 776, 777, - 3, 47, 23, 0, 777, 778, 3, 71, 35, 0, 778, 780, 1, 0, 0, 0, 779, 776, 1, - 0, 0, 0, 779, 780, 1, 0, 0, 0, 780, 784, 1, 0, 0, 0, 781, 782, 3, 47, 23, - 0, 782, 783, 3, 73, 36, 0, 783, 785, 1, 0, 0, 0, 784, 781, 1, 0, 0, 0, - 784, 785, 1, 0, 0, 0, 785, 789, 1, 0, 0, 0, 786, 787, 3, 47, 23, 0, 787, - 788, 3, 75, 37, 0, 788, 790, 1, 0, 0, 0, 789, 786, 1, 0, 0, 0, 789, 790, - 1, 0, 0, 0, 790, 794, 1, 0, 0, 0, 791, 792, 3, 69, 34, 0, 792, 793, 3, - 91, 45, 0, 793, 795, 1, 0, 0, 0, 794, 791, 1, 0, 0, 0, 794, 795, 1, 0, - 0, 0, 795, 796, 1, 0, 0, 0, 796, 797, 5, 39, 0, 0, 797, 94, 1, 0, 0, 0, - 798, 799, 7, 12, 0, 0, 799, 800, 7, 2, 0, 0, 800, 801, 7, 9, 0, 0, 801, - 802, 7, 9, 0, 0, 802, 96, 1, 0, 0, 0, 803, 811, 5, 39, 0, 0, 804, 805, - 5, 92, 0, 0, 805, 810, 9, 0, 0, 0, 806, 807, 5, 39, 0, 0, 807, 810, 5, - 39, 0, 0, 808, 810, 8, 25, 0, 0, 809, 804, 1, 0, 0, 0, 809, 806, 1, 0, - 0, 0, 809, 808, 1, 0, 0, 0, 810, 813, 1, 0, 0, 0, 811, 809, 1, 0, 0, 0, - 811, 812, 1, 0, 0, 0, 812, 814, 1, 0, 0, 0, 813, 811, 1, 0, 0, 0, 814, - 815, 5, 39, 0, 0, 815, 98, 1, 0, 0, 0, 816, 817, 7, 8, 0, 0, 817, 818, - 7, 19, 0, 0, 818, 819, 7, 9, 0, 0, 819, 820, 1, 0, 0, 0, 820, 821, 3, 259, - 129, 0, 821, 100, 1, 0, 0, 0, 822, 823, 5, 47, 0, 0, 823, 824, 5, 47, 0, - 0, 824, 828, 1, 0, 0, 0, 825, 827, 8, 17, 0, 0, 826, 825, 1, 0, 0, 0, 827, - 830, 1, 0, 0, 0, 828, 826, 1, 0, 0, 0, 828, 829, 1, 0, 0, 0, 829, 831, - 1, 0, 0, 0, 830, 828, 1, 0, 0, 0, 831, 832, 6, 50, 0, 0, 832, 102, 1, 0, - 0, 0, 833, 834, 5, 47, 0, 0, 834, 835, 5, 42, 0, 0, 835, 843, 1, 0, 0, - 0, 836, 844, 8, 26, 0, 0, 837, 839, 5, 42, 0, 0, 838, 837, 1, 0, 0, 0, - 839, 840, 1, 0, 0, 0, 840, 838, 1, 0, 0, 0, 840, 841, 1, 0, 0, 0, 841, - 842, 1, 0, 0, 0, 842, 844, 8, 27, 0, 0, 843, 836, 1, 0, 0, 0, 843, 838, - 1, 0, 0, 0, 844, 848, 1, 0, 0, 0, 845, 847, 5, 42, 0, 0, 846, 845, 1, 0, - 0, 0, 847, 850, 1, 0, 0, 0, 848, 846, 1, 0, 0, 0, 848, 849, 1, 0, 0, 0, - 849, 851, 1, 0, 0, 0, 850, 848, 1, 0, 0, 0, 851, 852, 5, 42, 0, 0, 852, - 853, 5, 47, 0, 0, 853, 854, 1, 0, 0, 0, 854, 855, 6, 51, 0, 0, 855, 104, - 1, 0, 0, 0, 856, 857, 7, 23, 0, 0, 857, 106, 1, 0, 0, 0, 858, 859, 7, 7, - 0, 0, 859, 860, 7, 18, 0, 0, 860, 108, 1, 0, 0, 0, 861, 862, 7, 4, 0, 0, - 862, 863, 7, 21, 0, 0, 863, 864, 7, 10, 0, 0, 864, 865, 7, 12, 0, 0, 865, - 110, 1, 0, 0, 0, 866, 867, 7, 10, 0, 0, 867, 868, 7, 9, 0, 0, 868, 869, - 7, 1, 0, 0, 869, 870, 7, 10, 0, 0, 870, 112, 1, 0, 0, 0, 871, 872, 7, 18, - 0, 0, 872, 873, 7, 2, 0, 0, 873, 874, 7, 12, 0, 0, 874, 875, 7, 8, 0, 0, - 875, 114, 1, 0, 0, 0, 876, 877, 7, 3, 0, 0, 877, 878, 7, 19, 0, 0, 878, - 879, 7, 19, 0, 0, 879, 880, 7, 9, 0, 0, 880, 881, 7, 10, 0, 0, 881, 882, - 7, 6, 0, 0, 882, 883, 7, 12, 0, 0, 883, 116, 1, 0, 0, 0, 884, 885, 7, 7, - 0, 0, 885, 886, 5, 56, 0, 0, 886, 118, 1, 0, 0, 0, 887, 888, 7, 7, 0, 0, - 888, 889, 5, 49, 0, 0, 889, 890, 5, 54, 0, 0, 890, 120, 1, 0, 0, 0, 891, - 892, 7, 7, 0, 0, 892, 893, 5, 51, 0, 0, 893, 894, 5, 50, 0, 0, 894, 122, - 1, 0, 0, 0, 895, 896, 7, 7, 0, 0, 896, 897, 5, 54, 0, 0, 897, 898, 5, 52, - 0, 0, 898, 124, 1, 0, 0, 0, 899, 900, 7, 18, 0, 0, 900, 901, 7, 14, 0, - 0, 901, 902, 5, 51, 0, 0, 902, 903, 5, 50, 0, 0, 903, 126, 1, 0, 0, 0, - 904, 905, 7, 18, 0, 0, 905, 906, 7, 14, 0, 0, 906, 907, 5, 54, 0, 0, 907, - 908, 5, 52, 0, 0, 908, 128, 1, 0, 0, 0, 909, 910, 7, 1, 0, 0, 910, 911, - 7, 4, 0, 0, 911, 912, 7, 5, 0, 0, 912, 913, 7, 7, 0, 0, 913, 914, 7, 12, - 0, 0, 914, 915, 7, 11, 0, 0, 915, 130, 1, 0, 0, 0, 916, 917, 7, 3, 0, 0, - 917, 918, 7, 7, 0, 0, 918, 919, 7, 12, 0, 0, 919, 920, 7, 6, 0, 0, 920, - 921, 7, 5, 0, 0, 921, 922, 7, 15, 0, 0, 922, 132, 1, 0, 0, 0, 923, 924, - 7, 4, 0, 0, 924, 925, 7, 7, 0, 0, 925, 926, 7, 24, 0, 0, 926, 927, 7, 10, - 0, 0, 927, 928, 7, 1, 0, 0, 928, 929, 7, 4, 0, 0, 929, 930, 7, 6, 0, 0, - 930, 931, 7, 24, 0, 0, 931, 932, 7, 14, 0, 0, 932, 134, 1, 0, 0, 0, 933, - 934, 7, 4, 0, 0, 934, 935, 7, 7, 0, 0, 935, 936, 7, 24, 0, 0, 936, 937, - 7, 10, 0, 0, 937, 938, 7, 1, 0, 0, 938, 939, 7, 4, 0, 0, 939, 940, 7, 6, - 0, 0, 940, 941, 7, 24, 0, 0, 941, 942, 7, 14, 0, 0, 942, 943, 5, 95, 0, - 0, 943, 944, 7, 4, 0, 0, 944, 945, 7, 28, 0, 0, 945, 136, 1, 0, 0, 0, 946, - 947, 7, 13, 0, 0, 947, 948, 7, 6, 0, 0, 948, 949, 7, 4, 0, 0, 949, 950, - 7, 10, 0, 0, 950, 138, 1, 0, 0, 0, 951, 952, 7, 4, 0, 0, 952, 953, 7, 7, - 0, 0, 953, 954, 7, 24, 0, 0, 954, 955, 7, 10, 0, 0, 955, 140, 1, 0, 0, - 0, 956, 957, 7, 7, 0, 0, 957, 958, 7, 12, 0, 0, 958, 959, 7, 4, 0, 0, 959, - 960, 7, 10, 0, 0, 960, 961, 7, 5, 0, 0, 961, 962, 7, 16, 0, 0, 962, 963, - 7, 6, 0, 0, 963, 964, 7, 9, 0, 0, 964, 965, 5, 95, 0, 0, 965, 966, 7, 15, - 0, 0, 966, 967, 7, 10, 0, 0, 967, 968, 7, 6, 0, 0, 968, 969, 7, 5, 0, 0, - 969, 142, 1, 0, 0, 0, 970, 971, 7, 7, 0, 0, 971, 972, 7, 12, 0, 0, 972, - 973, 7, 4, 0, 0, 973, 974, 7, 10, 0, 0, 974, 975, 7, 5, 0, 0, 975, 976, - 7, 16, 0, 0, 976, 977, 7, 6, 0, 0, 977, 978, 7, 9, 0, 0, 978, 979, 5, 95, - 0, 0, 979, 980, 7, 13, 0, 0, 980, 981, 7, 6, 0, 0, 981, 982, 7, 15, 0, - 0, 982, 144, 1, 0, 0, 0, 983, 984, 7, 7, 0, 0, 984, 985, 7, 12, 0, 0, 985, - 986, 7, 4, 0, 0, 986, 987, 7, 10, 0, 0, 987, 988, 7, 5, 0, 0, 988, 989, - 7, 16, 0, 0, 989, 990, 7, 6, 0, 0, 990, 991, 7, 9, 0, 0, 991, 992, 5, 95, - 0, 0, 992, 993, 7, 8, 0, 0, 993, 994, 7, 19, 0, 0, 994, 995, 7, 24, 0, - 0, 995, 996, 7, 14, 0, 0, 996, 997, 7, 19, 0, 0, 997, 998, 7, 2, 0, 0, - 998, 999, 7, 12, 0, 0, 999, 1000, 7, 13, 0, 0, 1000, 146, 1, 0, 0, 0, 1001, - 1002, 7, 2, 0, 0, 1002, 1003, 7, 2, 0, 0, 1003, 1004, 7, 7, 0, 0, 1004, - 1005, 7, 13, 0, 0, 1005, 148, 1, 0, 0, 0, 1006, 1007, 7, 13, 0, 0, 1007, - 1008, 7, 10, 0, 0, 1008, 1009, 7, 8, 0, 0, 1009, 1010, 7, 7, 0, 0, 1010, - 1011, 7, 24, 0, 0, 1011, 1012, 7, 6, 0, 0, 1012, 1013, 7, 9, 0, 0, 1013, - 150, 1, 0, 0, 0, 1014, 1015, 7, 14, 0, 0, 1015, 1016, 7, 5, 0, 0, 1016, - 1017, 7, 10, 0, 0, 1017, 1018, 7, 8, 0, 0, 1018, 1019, 7, 7, 0, 0, 1019, - 1020, 7, 1, 0, 0, 1020, 1021, 7, 7, 0, 0, 1021, 1022, 7, 19, 0, 0, 1022, - 1023, 7, 12, 0, 0, 1023, 1024, 5, 95, 0, 0, 1024, 1025, 7, 4, 0, 0, 1025, - 1026, 7, 7, 0, 0, 1026, 1027, 7, 24, 0, 0, 1027, 1028, 7, 10, 0, 0, 1028, - 152, 1, 0, 0, 0, 1029, 1030, 7, 14, 0, 0, 1030, 1031, 7, 5, 0, 0, 1031, - 1032, 7, 10, 0, 0, 1032, 1033, 7, 8, 0, 0, 1033, 1034, 7, 7, 0, 0, 1034, - 1035, 7, 1, 0, 0, 1035, 1036, 7, 7, 0, 0, 1036, 1037, 7, 19, 0, 0, 1037, - 1038, 7, 12, 0, 0, 1038, 1039, 5, 95, 0, 0, 1039, 1040, 7, 4, 0, 0, 1040, - 1041, 7, 7, 0, 0, 1041, 1042, 7, 24, 0, 0, 1042, 1043, 7, 10, 0, 0, 1043, - 1044, 7, 1, 0, 0, 1044, 1045, 7, 4, 0, 0, 1045, 1046, 7, 6, 0, 0, 1046, - 1047, 7, 24, 0, 0, 1047, 1048, 7, 14, 0, 0, 1048, 154, 1, 0, 0, 0, 1049, - 1050, 7, 14, 0, 0, 1050, 1051, 7, 5, 0, 0, 1051, 1052, 7, 10, 0, 0, 1052, - 1053, 7, 8, 0, 0, 1053, 1054, 7, 7, 0, 0, 1054, 1055, 7, 1, 0, 0, 1055, - 1056, 7, 7, 0, 0, 1056, 1057, 7, 19, 0, 0, 1057, 1058, 7, 12, 0, 0, 1058, - 1059, 5, 95, 0, 0, 1059, 1060, 7, 4, 0, 0, 1060, 1061, 7, 7, 0, 0, 1061, - 1062, 7, 24, 0, 0, 1062, 1063, 7, 10, 0, 0, 1063, 1064, 7, 1, 0, 0, 1064, - 1065, 7, 4, 0, 0, 1065, 1066, 7, 6, 0, 0, 1066, 1067, 7, 24, 0, 0, 1067, - 1068, 7, 14, 0, 0, 1068, 1069, 5, 95, 0, 0, 1069, 1070, 7, 4, 0, 0, 1070, - 1071, 7, 28, 0, 0, 1071, 156, 1, 0, 0, 0, 1072, 1073, 7, 18, 0, 0, 1073, - 1074, 7, 7, 0, 0, 1074, 1075, 7, 29, 0, 0, 1075, 1076, 7, 10, 0, 0, 1076, - 1077, 7, 13, 0, 0, 1077, 1078, 7, 8, 0, 0, 1078, 1079, 7, 21, 0, 0, 1079, - 1080, 7, 6, 0, 0, 1080, 1081, 7, 5, 0, 0, 1081, 158, 1, 0, 0, 0, 1082, - 1083, 7, 16, 0, 0, 1083, 1084, 7, 6, 0, 0, 1084, 1085, 7, 5, 0, 0, 1085, - 1086, 7, 8, 0, 0, 1086, 1087, 7, 21, 0, 0, 1087, 1088, 7, 6, 0, 0, 1088, - 1089, 7, 5, 0, 0, 1089, 160, 1, 0, 0, 0, 1090, 1091, 7, 18, 0, 0, 1091, - 1092, 7, 7, 0, 0, 1092, 1093, 7, 29, 0, 0, 1093, 1094, 7, 10, 0, 0, 1094, - 1095, 7, 13, 0, 0, 1095, 1096, 7, 3, 0, 0, 1096, 1097, 7, 7, 0, 0, 1097, - 1098, 7, 12, 0, 0, 1098, 1099, 7, 6, 0, 0, 1099, 1100, 7, 5, 0, 0, 1100, - 1101, 7, 15, 0, 0, 1101, 162, 1, 0, 0, 0, 1102, 1103, 7, 1, 0, 0, 1103, - 1104, 7, 4, 0, 0, 1104, 1105, 7, 5, 0, 0, 1105, 1106, 7, 2, 0, 0, 1106, - 1107, 7, 8, 0, 0, 1107, 1108, 7, 4, 0, 0, 1108, 164, 1, 0, 0, 0, 1109, - 1110, 7, 12, 0, 0, 1110, 1111, 7, 1, 0, 0, 1111, 1112, 7, 4, 0, 0, 1112, - 1113, 7, 5, 0, 0, 1113, 1114, 7, 2, 0, 0, 1114, 1115, 7, 8, 0, 0, 1115, - 1116, 7, 4, 0, 0, 1116, 166, 1, 0, 0, 0, 1117, 1118, 7, 9, 0, 0, 1118, - 1119, 7, 7, 0, 0, 1119, 1120, 7, 1, 0, 0, 1120, 1121, 7, 4, 0, 0, 1121, - 168, 1, 0, 0, 0, 1122, 1123, 7, 24, 0, 0, 1123, 1124, 7, 6, 0, 0, 1124, - 1125, 7, 14, 0, 0, 1125, 170, 1, 0, 0, 0, 1126, 1127, 7, 2, 0, 0, 1127, - 1128, 5, 33, 0, 0, 1128, 172, 1, 0, 0, 0, 1129, 1130, 7, 3, 0, 0, 1130, - 1131, 7, 19, 0, 0, 1131, 1132, 7, 19, 0, 0, 1132, 1133, 7, 9, 0, 0, 1133, - 174, 1, 0, 0, 0, 1134, 1135, 7, 1, 0, 0, 1135, 1136, 7, 4, 0, 0, 1136, - 1137, 7, 5, 0, 0, 1137, 176, 1, 0, 0, 0, 1138, 1139, 7, 16, 0, 0, 1139, - 1140, 7, 3, 0, 0, 1140, 1141, 7, 7, 0, 0, 1141, 1142, 7, 12, 0, 0, 1142, - 178, 1, 0, 0, 0, 1143, 1144, 7, 4, 0, 0, 1144, 1145, 7, 1, 0, 0, 1145, - 180, 1, 0, 0, 0, 1146, 1147, 7, 4, 0, 0, 1147, 1148, 7, 1, 0, 0, 1148, - 1149, 7, 4, 0, 0, 1149, 1150, 7, 28, 0, 0, 1150, 182, 1, 0, 0, 0, 1151, - 1152, 7, 7, 0, 0, 1152, 1153, 7, 15, 0, 0, 1153, 1154, 7, 10, 0, 0, 1154, - 1155, 7, 6, 0, 0, 1155, 1156, 7, 5, 0, 0, 1156, 184, 1, 0, 0, 0, 1157, - 1158, 7, 7, 0, 0, 1158, 1159, 7, 13, 0, 0, 1159, 1160, 7, 6, 0, 0, 1160, - 1161, 7, 15, 0, 0, 1161, 186, 1, 0, 0, 0, 1162, 1163, 7, 7, 0, 0, 1163, - 1164, 7, 8, 0, 0, 1164, 1165, 7, 19, 0, 0, 1165, 1166, 7, 24, 0, 0, 1166, - 1167, 7, 14, 0, 0, 1167, 1168, 7, 19, 0, 0, 1168, 1169, 7, 2, 0, 0, 1169, - 1170, 7, 12, 0, 0, 1170, 1171, 7, 13, 0, 0, 1171, 188, 1, 0, 0, 0, 1172, - 1173, 7, 13, 0, 0, 1173, 1174, 7, 10, 0, 0, 1174, 1175, 7, 8, 0, 0, 1175, - 190, 1, 0, 0, 0, 1176, 1177, 7, 14, 0, 0, 1177, 1178, 7, 4, 0, 0, 1178, - 192, 1, 0, 0, 0, 1179, 1180, 7, 14, 0, 0, 1180, 1181, 7, 4, 0, 0, 1181, - 1182, 7, 1, 0, 0, 1182, 194, 1, 0, 0, 0, 1183, 1184, 7, 14, 0, 0, 1184, - 1185, 7, 4, 0, 0, 1185, 1186, 7, 1, 0, 0, 1186, 1187, 7, 4, 0, 0, 1187, - 1188, 7, 28, 0, 0, 1188, 196, 1, 0, 0, 0, 1189, 1190, 7, 18, 0, 0, 1190, - 1191, 7, 8, 0, 0, 1191, 1192, 7, 21, 0, 0, 1192, 1193, 7, 6, 0, 0, 1193, - 1194, 7, 5, 0, 0, 1194, 198, 1, 0, 0, 0, 1195, 1196, 7, 16, 0, 0, 1196, - 1197, 7, 8, 0, 0, 1197, 1198, 7, 21, 0, 0, 1198, 1199, 7, 6, 0, 0, 1199, - 1200, 7, 5, 0, 0, 1200, 200, 1, 0, 0, 0, 1201, 1202, 7, 18, 0, 0, 1202, - 1203, 7, 3, 0, 0, 1203, 1204, 7, 7, 0, 0, 1204, 1205, 7, 12, 0, 0, 1205, - 202, 1, 0, 0, 0, 1206, 1207, 7, 6, 0, 0, 1207, 1208, 7, 12, 0, 0, 1208, - 1209, 7, 15, 0, 0, 1209, 204, 1, 0, 0, 0, 1210, 1211, 3, 203, 101, 0, 1211, - 1212, 7, 23, 0, 0, 1212, 206, 1, 0, 0, 0, 1213, 1214, 5, 58, 0, 0, 1214, - 1215, 5, 58, 0, 0, 1215, 208, 1, 0, 0, 0, 1216, 1217, 5, 43, 0, 0, 1217, - 210, 1, 0, 0, 0, 1218, 1219, 5, 45, 0, 0, 1219, 212, 1, 0, 0, 0, 1220, - 1221, 5, 42, 0, 0, 1221, 214, 1, 0, 0, 0, 1222, 1223, 5, 47, 0, 0, 1223, - 216, 1, 0, 0, 0, 1224, 1225, 5, 37, 0, 0, 1225, 218, 1, 0, 0, 0, 1226, - 1227, 5, 61, 0, 0, 1227, 220, 1, 0, 0, 0, 1228, 1229, 5, 33, 0, 0, 1229, - 1230, 5, 61, 0, 0, 1230, 222, 1, 0, 0, 0, 1231, 1232, 5, 62, 0, 0, 1232, - 1233, 5, 61, 0, 0, 1233, 224, 1, 0, 0, 0, 1234, 1235, 5, 60, 0, 0, 1235, - 1236, 5, 61, 0, 0, 1236, 226, 1, 0, 0, 0, 1237, 1238, 5, 62, 0, 0, 1238, - 228, 1, 0, 0, 0, 1239, 1240, 5, 60, 0, 0, 1240, 230, 1, 0, 0, 0, 1241, - 1242, 5, 33, 0, 0, 1242, 232, 1, 0, 0, 0, 1243, 1244, 5, 40, 0, 0, 1244, - 234, 1, 0, 0, 0, 1245, 1246, 5, 41, 0, 0, 1246, 236, 1, 0, 0, 0, 1247, - 1248, 5, 91, 0, 0, 1248, 238, 1, 0, 0, 0, 1249, 1250, 5, 93, 0, 0, 1250, - 240, 1, 0, 0, 0, 1251, 1252, 5, 44, 0, 0, 1252, 242, 1, 0, 0, 0, 1253, - 1254, 5, 58, 0, 0, 1254, 244, 1, 0, 0, 0, 1255, 1256, 5, 63, 0, 0, 1256, - 246, 1, 0, 0, 0, 1257, 1258, 5, 35, 0, 0, 1258, 248, 1, 0, 0, 0, 1259, - 1260, 5, 46, 0, 0, 1260, 250, 1, 0, 0, 0, 1261, 1262, 7, 6, 0, 0, 1262, - 1263, 7, 12, 0, 0, 1263, 1264, 7, 13, 0, 0, 1264, 252, 1, 0, 0, 0, 1265, - 1266, 7, 19, 0, 0, 1266, 1267, 7, 5, 0, 0, 1267, 254, 1, 0, 0, 0, 1268, - 1269, 5, 58, 0, 0, 1269, 1270, 5, 61, 0, 0, 1270, 256, 1, 0, 0, 0, 1271, - 1272, 5, 45, 0, 0, 1272, 1273, 5, 62, 0, 0, 1273, 258, 1, 0, 0, 0, 1274, - 1278, 2, 49, 57, 0, 1275, 1277, 3, 261, 130, 0, 1276, 1275, 1, 0, 0, 0, - 1277, 1280, 1, 0, 0, 0, 1278, 1276, 1, 0, 0, 0, 1278, 1279, 1, 0, 0, 0, - 1279, 1283, 1, 0, 0, 0, 1280, 1278, 1, 0, 0, 0, 1281, 1283, 5, 48, 0, 0, - 1282, 1274, 1, 0, 0, 0, 1282, 1281, 1, 0, 0, 0, 1283, 260, 1, 0, 0, 0, - 1284, 1285, 2, 48, 57, 0, 1285, 262, 1, 0, 0, 0, 1286, 1288, 5, 45, 0, - 0, 1287, 1286, 1, 0, 0, 0, 1287, 1288, 1, 0, 0, 0, 1288, 1289, 1, 0, 0, - 0, 1289, 1290, 3, 259, 129, 0, 1290, 264, 1, 0, 0, 0, 1291, 1296, 7, 30, - 0, 0, 1292, 1295, 7, 30, 0, 0, 1293, 1295, 3, 261, 130, 0, 1294, 1292, - 1, 0, 0, 0, 1294, 1293, 1, 0, 0, 0, 1295, 1298, 1, 0, 0, 0, 1296, 1294, - 1, 0, 0, 0, 1296, 1297, 1, 0, 0, 0, 1297, 266, 1, 0, 0, 0, 1298, 1296, - 1, 0, 0, 0, 1299, 1301, 5, 13, 0, 0, 1300, 1302, 5, 10, 0, 0, 1301, 1300, - 1, 0, 0, 0, 1301, 1302, 1, 0, 0, 0, 1302, 1305, 1, 0, 0, 0, 1303, 1305, - 5, 10, 0, 0, 1304, 1299, 1, 0, 0, 0, 1304, 1303, 1, 0, 0, 0, 1305, 268, - 1, 0, 0, 0, 53, 0, 272, 370, 376, 378, 386, 390, 541, 546, 551, 557, 559, - 562, 567, 573, 576, 580, 585, 587, 590, 599, 610, 636, 638, 662, 664, 678, - 680, 719, 729, 738, 748, 755, 760, 767, 772, 779, 784, 789, 794, 809, 811, - 828, 840, 843, 848, 1278, 1282, 1287, 1294, 1296, 1301, 1304, 1, 0, 1, + 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, + 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, + 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, + 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, + 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, + 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, + 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, + 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, + 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, + 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, + 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, + 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, + 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, + 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, + 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, + 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, + 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, + 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, + 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, + 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, + 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, + 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, + 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, + 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, + 95, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, + 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, + 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, + 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 104, + 1, 104, 1, 104, 1, 105, 1, 105, 1, 106, 1, 106, 1, 107, 1, 107, 1, 108, + 1, 108, 1, 109, 1, 109, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 112, + 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 115, 1, 115, + 1, 116, 1, 116, 1, 117, 1, 117, 1, 118, 1, 118, 1, 119, 1, 119, 1, 120, + 1, 120, 1, 121, 1, 121, 1, 122, 1, 122, 1, 123, 1, 123, 1, 124, 1, 124, + 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, + 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 5, 130, + 1284, 8, 130, 10, 130, 12, 130, 1287, 9, 130, 1, 130, 3, 130, 1290, 8, + 130, 1, 131, 1, 131, 1, 132, 3, 132, 1295, 8, 132, 1, 132, 1, 132, 1, 133, + 1, 133, 1, 133, 5, 133, 1302, 8, 133, 10, 133, 12, 133, 1305, 9, 133, 1, + 134, 1, 134, 3, 134, 1309, 8, 134, 1, 134, 3, 134, 1312, 8, 134, 0, 0, + 135, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, + 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, + 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 0, + 57, 0, 59, 28, 61, 29, 63, 30, 65, 31, 67, 32, 69, 33, 71, 34, 73, 35, + 75, 36, 77, 37, 79, 38, 81, 39, 83, 40, 85, 41, 87, 42, 89, 43, 91, 0, + 93, 44, 95, 45, 97, 46, 99, 47, 101, 48, 103, 49, 105, 50, 107, 0, 109, + 51, 111, 52, 113, 53, 115, 54, 117, 55, 119, 56, 121, 57, 123, 58, 125, + 59, 127, 60, 129, 61, 131, 62, 133, 63, 135, 64, 137, 65, 139, 66, 141, + 67, 143, 68, 145, 69, 147, 70, 149, 71, 151, 72, 153, 73, 155, 74, 157, + 75, 159, 76, 161, 77, 163, 78, 165, 79, 167, 80, 169, 81, 171, 82, 173, + 83, 175, 84, 177, 85, 179, 86, 181, 87, 183, 88, 185, 89, 187, 90, 189, + 91, 191, 92, 193, 93, 195, 94, 197, 95, 199, 96, 201, 97, 203, 98, 205, + 99, 207, 100, 209, 101, 211, 102, 213, 103, 215, 104, 217, 105, 219, 106, + 221, 107, 223, 108, 225, 109, 227, 110, 229, 111, 231, 112, 233, 113, 235, + 114, 237, 115, 239, 116, 241, 117, 243, 118, 245, 119, 247, 120, 249, 121, + 251, 122, 253, 123, 255, 124, 257, 125, 259, 126, 261, 0, 263, 0, 265, + 127, 267, 128, 269, 129, 1, 0, 31, 3, 0, 9, 10, 13, 13, 32, 32, 2, 0, 83, + 83, 115, 115, 2, 0, 85, 85, 117, 117, 2, 0, 66, 66, 98, 98, 2, 0, 84, 84, + 116, 116, 2, 0, 82, 82, 114, 114, 2, 0, 65, 65, 97, 97, 2, 0, 73, 73, 105, + 105, 2, 0, 67, 67, 99, 99, 2, 0, 76, 76, 108, 108, 2, 0, 69, 69, 101, 101, + 2, 0, 71, 71, 103, 103, 2, 0, 78, 78, 110, 110, 2, 0, 68, 68, 100, 100, + 2, 0, 80, 80, 112, 112, 2, 0, 89, 89, 121, 121, 2, 0, 86, 86, 118, 118, + 2, 0, 10, 10, 13, 13, 2, 0, 70, 70, 102, 102, 2, 0, 79, 79, 111, 111, 2, + 0, 87, 87, 119, 119, 2, 0, 72, 72, 104, 104, 2, 0, 43, 43, 45, 45, 1, 0, + 48, 57, 2, 0, 77, 77, 109, 109, 2, 0, 39, 39, 92, 92, 1, 0, 42, 42, 2, + 0, 42, 42, 47, 47, 2, 0, 90, 90, 122, 122, 2, 0, 88, 88, 120, 120, 4, 0, + 36, 36, 65, 90, 95, 95, 97, 122, 1361, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, + 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, + 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, + 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, + 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, + 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, + 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, + 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, + 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, + 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, + 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, + 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, + 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, + 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, + 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, + 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, + 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, + 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, + 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, + 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, + 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, + 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, + 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, + 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, + 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, + 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, + 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, + 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, + 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, + 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, + 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, + 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, + 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, + 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, + 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, + 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 1, 272, 1, 0, 0, 0, 3, 278, 1, + 0, 0, 0, 5, 282, 1, 0, 0, 0, 7, 304, 1, 0, 0, 0, 9, 329, 1, 0, 0, 0, 11, + 347, 1, 0, 0, 0, 13, 368, 1, 0, 0, 0, 15, 382, 1, 0, 0, 0, 17, 396, 1, + 0, 0, 0, 19, 403, 1, 0, 0, 0, 21, 412, 1, 0, 0, 0, 23, 425, 1, 0, 0, 0, + 25, 434, 1, 0, 0, 0, 27, 443, 1, 0, 0, 0, 29, 449, 1, 0, 0, 0, 31, 458, + 1, 0, 0, 0, 33, 465, 1, 0, 0, 0, 35, 477, 1, 0, 0, 0, 37, 481, 1, 0, 0, + 0, 39, 494, 1, 0, 0, 0, 41, 507, 1, 0, 0, 0, 43, 521, 1, 0, 0, 0, 45, 533, + 1, 0, 0, 0, 47, 543, 1, 0, 0, 0, 49, 548, 1, 0, 0, 0, 51, 601, 1, 0, 0, + 0, 53, 612, 1, 0, 0, 0, 55, 614, 1, 0, 0, 0, 57, 619, 1, 0, 0, 0, 59, 622, + 1, 0, 0, 0, 61, 648, 1, 0, 0, 0, 63, 670, 1, 0, 0, 0, 65, 686, 1, 0, 0, + 0, 67, 694, 1, 0, 0, 0, 69, 696, 1, 0, 0, 0, 71, 698, 1, 0, 0, 0, 73, 700, + 1, 0, 0, 0, 75, 702, 1, 0, 0, 0, 77, 704, 1, 0, 0, 0, 79, 706, 1, 0, 0, + 0, 81, 708, 1, 0, 0, 0, 83, 710, 1, 0, 0, 0, 85, 712, 1, 0, 0, 0, 87, 731, + 1, 0, 0, 0, 89, 750, 1, 0, 0, 0, 91, 774, 1, 0, 0, 0, 93, 776, 1, 0, 0, + 0, 95, 800, 1, 0, 0, 0, 97, 805, 1, 0, 0, 0, 99, 818, 1, 0, 0, 0, 101, + 823, 1, 0, 0, 0, 103, 829, 1, 0, 0, 0, 105, 840, 1, 0, 0, 0, 107, 863, + 1, 0, 0, 0, 109, 865, 1, 0, 0, 0, 111, 868, 1, 0, 0, 0, 113, 873, 1, 0, + 0, 0, 115, 878, 1, 0, 0, 0, 117, 883, 1, 0, 0, 0, 119, 891, 1, 0, 0, 0, + 121, 894, 1, 0, 0, 0, 123, 898, 1, 0, 0, 0, 125, 902, 1, 0, 0, 0, 127, + 906, 1, 0, 0, 0, 129, 911, 1, 0, 0, 0, 131, 916, 1, 0, 0, 0, 133, 923, + 1, 0, 0, 0, 135, 930, 1, 0, 0, 0, 137, 940, 1, 0, 0, 0, 139, 953, 1, 0, + 0, 0, 141, 958, 1, 0, 0, 0, 143, 963, 1, 0, 0, 0, 145, 977, 1, 0, 0, 0, + 147, 990, 1, 0, 0, 0, 149, 1008, 1, 0, 0, 0, 151, 1013, 1, 0, 0, 0, 153, + 1021, 1, 0, 0, 0, 155, 1036, 1, 0, 0, 0, 157, 1056, 1, 0, 0, 0, 159, 1079, + 1, 0, 0, 0, 161, 1089, 1, 0, 0, 0, 163, 1097, 1, 0, 0, 0, 165, 1109, 1, + 0, 0, 0, 167, 1116, 1, 0, 0, 0, 169, 1124, 1, 0, 0, 0, 171, 1129, 1, 0, + 0, 0, 173, 1133, 1, 0, 0, 0, 175, 1136, 1, 0, 0, 0, 177, 1141, 1, 0, 0, + 0, 179, 1145, 1, 0, 0, 0, 181, 1150, 1, 0, 0, 0, 183, 1153, 1, 0, 0, 0, + 185, 1158, 1, 0, 0, 0, 187, 1164, 1, 0, 0, 0, 189, 1169, 1, 0, 0, 0, 191, + 1179, 1, 0, 0, 0, 193, 1183, 1, 0, 0, 0, 195, 1186, 1, 0, 0, 0, 197, 1190, + 1, 0, 0, 0, 199, 1196, 1, 0, 0, 0, 201, 1202, 1, 0, 0, 0, 203, 1208, 1, + 0, 0, 0, 205, 1213, 1, 0, 0, 0, 207, 1217, 1, 0, 0, 0, 209, 1220, 1, 0, + 0, 0, 211, 1223, 1, 0, 0, 0, 213, 1225, 1, 0, 0, 0, 215, 1227, 1, 0, 0, + 0, 217, 1229, 1, 0, 0, 0, 219, 1231, 1, 0, 0, 0, 221, 1233, 1, 0, 0, 0, + 223, 1235, 1, 0, 0, 0, 225, 1238, 1, 0, 0, 0, 227, 1241, 1, 0, 0, 0, 229, + 1244, 1, 0, 0, 0, 231, 1246, 1, 0, 0, 0, 233, 1248, 1, 0, 0, 0, 235, 1250, + 1, 0, 0, 0, 237, 1252, 1, 0, 0, 0, 239, 1254, 1, 0, 0, 0, 241, 1256, 1, + 0, 0, 0, 243, 1258, 1, 0, 0, 0, 245, 1260, 1, 0, 0, 0, 247, 1262, 1, 0, + 0, 0, 249, 1264, 1, 0, 0, 0, 251, 1266, 1, 0, 0, 0, 253, 1268, 1, 0, 0, + 0, 255, 1272, 1, 0, 0, 0, 257, 1275, 1, 0, 0, 0, 259, 1278, 1, 0, 0, 0, + 261, 1289, 1, 0, 0, 0, 263, 1291, 1, 0, 0, 0, 265, 1294, 1, 0, 0, 0, 267, + 1298, 1, 0, 0, 0, 269, 1311, 1, 0, 0, 0, 271, 273, 7, 0, 0, 0, 272, 271, + 1, 0, 0, 0, 273, 274, 1, 0, 0, 0, 274, 272, 1, 0, 0, 0, 274, 275, 1, 0, + 0, 0, 275, 276, 1, 0, 0, 0, 276, 277, 6, 0, 0, 0, 277, 2, 1, 0, 0, 0, 278, + 279, 5, 35, 0, 0, 279, 280, 5, 35, 0, 0, 280, 281, 5, 35, 0, 0, 281, 4, + 1, 0, 0, 0, 282, 283, 7, 1, 0, 0, 283, 284, 7, 2, 0, 0, 284, 285, 7, 3, + 0, 0, 285, 286, 7, 1, 0, 0, 286, 287, 7, 4, 0, 0, 287, 288, 7, 5, 0, 0, + 288, 289, 7, 6, 0, 0, 289, 290, 7, 7, 0, 0, 290, 291, 7, 4, 0, 0, 291, + 292, 5, 95, 0, 0, 292, 293, 7, 1, 0, 0, 293, 294, 7, 8, 0, 0, 294, 295, + 7, 6, 0, 0, 295, 296, 7, 9, 0, 0, 296, 297, 7, 6, 0, 0, 297, 298, 7, 5, + 0, 0, 298, 299, 5, 95, 0, 0, 299, 300, 7, 4, 0, 0, 300, 301, 7, 10, 0, + 0, 301, 302, 7, 1, 0, 0, 302, 303, 7, 4, 0, 0, 303, 6, 1, 0, 0, 0, 304, + 305, 7, 1, 0, 0, 305, 306, 7, 2, 0, 0, 306, 307, 7, 3, 0, 0, 307, 308, + 7, 1, 0, 0, 308, 309, 7, 4, 0, 0, 309, 310, 7, 5, 0, 0, 310, 311, 7, 6, + 0, 0, 311, 312, 7, 7, 0, 0, 312, 313, 7, 4, 0, 0, 313, 314, 5, 95, 0, 0, + 314, 315, 7, 6, 0, 0, 315, 316, 7, 11, 0, 0, 316, 317, 7, 11, 0, 0, 317, + 318, 7, 5, 0, 0, 318, 319, 7, 10, 0, 0, 319, 320, 7, 11, 0, 0, 320, 321, + 7, 6, 0, 0, 321, 322, 7, 4, 0, 0, 322, 323, 7, 10, 0, 0, 323, 324, 5, 95, + 0, 0, 324, 325, 7, 4, 0, 0, 325, 326, 7, 10, 0, 0, 326, 327, 7, 1, 0, 0, + 327, 328, 7, 4, 0, 0, 328, 8, 1, 0, 0, 0, 329, 330, 7, 1, 0, 0, 330, 331, + 7, 2, 0, 0, 331, 332, 7, 3, 0, 0, 332, 333, 7, 1, 0, 0, 333, 334, 7, 4, + 0, 0, 334, 335, 7, 5, 0, 0, 335, 336, 7, 6, 0, 0, 336, 337, 7, 7, 0, 0, + 337, 338, 7, 4, 0, 0, 338, 339, 5, 95, 0, 0, 339, 340, 7, 7, 0, 0, 340, + 341, 7, 12, 0, 0, 341, 342, 7, 8, 0, 0, 342, 343, 7, 9, 0, 0, 343, 344, + 7, 2, 0, 0, 344, 345, 7, 13, 0, 0, 345, 346, 7, 10, 0, 0, 346, 10, 1, 0, + 0, 0, 347, 348, 7, 1, 0, 0, 348, 349, 7, 2, 0, 0, 349, 350, 7, 3, 0, 0, + 350, 351, 7, 1, 0, 0, 351, 352, 7, 4, 0, 0, 352, 353, 7, 5, 0, 0, 353, + 354, 7, 6, 0, 0, 354, 355, 7, 7, 0, 0, 355, 356, 7, 4, 0, 0, 356, 357, + 5, 95, 0, 0, 357, 358, 7, 13, 0, 0, 358, 359, 7, 10, 0, 0, 359, 360, 7, + 14, 0, 0, 360, 361, 7, 10, 0, 0, 361, 362, 7, 12, 0, 0, 362, 363, 7, 13, + 0, 0, 363, 364, 7, 10, 0, 0, 364, 365, 7, 12, 0, 0, 365, 366, 7, 8, 0, + 0, 366, 367, 7, 15, 0, 0, 367, 12, 1, 0, 0, 0, 368, 370, 7, 16, 0, 0, 369, + 371, 3, 107, 53, 0, 370, 369, 1, 0, 0, 0, 371, 372, 1, 0, 0, 0, 372, 370, + 1, 0, 0, 0, 372, 373, 1, 0, 0, 0, 373, 380, 1, 0, 0, 0, 374, 376, 5, 46, + 0, 0, 375, 377, 3, 107, 53, 0, 376, 375, 1, 0, 0, 0, 377, 378, 1, 0, 0, + 0, 378, 376, 1, 0, 0, 0, 378, 379, 1, 0, 0, 0, 379, 381, 1, 0, 0, 0, 380, + 374, 1, 0, 0, 0, 380, 381, 1, 0, 0, 0, 381, 14, 1, 0, 0, 0, 382, 383, 5, + 35, 0, 0, 383, 384, 5, 32, 0, 0, 384, 388, 1, 0, 0, 0, 385, 387, 8, 17, + 0, 0, 386, 385, 1, 0, 0, 0, 387, 390, 1, 0, 0, 0, 388, 386, 1, 0, 0, 0, + 388, 389, 1, 0, 0, 0, 389, 392, 1, 0, 0, 0, 390, 388, 1, 0, 0, 0, 391, + 393, 5, 13, 0, 0, 392, 391, 1, 0, 0, 0, 392, 393, 1, 0, 0, 0, 393, 394, + 1, 0, 0, 0, 394, 395, 5, 10, 0, 0, 395, 16, 1, 0, 0, 0, 396, 397, 7, 13, + 0, 0, 397, 398, 7, 10, 0, 0, 398, 399, 7, 18, 0, 0, 399, 400, 7, 7, 0, + 0, 400, 401, 7, 12, 0, 0, 401, 402, 7, 10, 0, 0, 402, 18, 1, 0, 0, 0, 403, + 404, 5, 60, 0, 0, 404, 405, 5, 33, 0, 0, 405, 406, 7, 10, 0, 0, 406, 407, + 7, 5, 0, 0, 407, 408, 7, 5, 0, 0, 408, 409, 7, 19, 0, 0, 409, 410, 7, 5, + 0, 0, 410, 411, 5, 62, 0, 0, 411, 20, 1, 0, 0, 0, 412, 413, 5, 60, 0, 0, + 413, 414, 5, 33, 0, 0, 414, 415, 7, 2, 0, 0, 415, 416, 7, 12, 0, 0, 416, + 417, 7, 13, 0, 0, 417, 418, 7, 10, 0, 0, 418, 419, 7, 18, 0, 0, 419, 420, + 7, 7, 0, 0, 420, 421, 7, 12, 0, 0, 421, 422, 7, 10, 0, 0, 422, 423, 7, + 13, 0, 0, 423, 424, 5, 62, 0, 0, 424, 22, 1, 0, 0, 0, 425, 426, 7, 19, + 0, 0, 426, 427, 7, 16, 0, 0, 427, 428, 7, 10, 0, 0, 428, 429, 7, 5, 0, + 0, 429, 430, 7, 18, 0, 0, 430, 431, 7, 9, 0, 0, 431, 432, 7, 19, 0, 0, + 432, 433, 7, 20, 0, 0, 433, 24, 1, 0, 0, 0, 434, 435, 7, 5, 0, 0, 435, + 436, 7, 19, 0, 0, 436, 437, 7, 2, 0, 0, 437, 438, 7, 12, 0, 0, 438, 439, + 7, 13, 0, 0, 439, 440, 7, 7, 0, 0, 440, 441, 7, 12, 0, 0, 441, 442, 7, + 11, 0, 0, 442, 26, 1, 0, 0, 0, 443, 444, 7, 10, 0, 0, 444, 445, 7, 5, 0, + 0, 445, 446, 7, 5, 0, 0, 446, 447, 7, 19, 0, 0, 447, 448, 7, 5, 0, 0, 448, + 28, 1, 0, 0, 0, 449, 450, 7, 1, 0, 0, 450, 451, 7, 6, 0, 0, 451, 452, 7, + 4, 0, 0, 452, 453, 7, 2, 0, 0, 453, 454, 7, 5, 0, 0, 454, 455, 7, 6, 0, + 0, 455, 456, 7, 4, 0, 0, 456, 457, 7, 10, 0, 0, 457, 30, 1, 0, 0, 0, 458, + 459, 7, 1, 0, 0, 459, 460, 7, 7, 0, 0, 460, 461, 7, 9, 0, 0, 461, 462, + 7, 10, 0, 0, 462, 463, 7, 12, 0, 0, 463, 464, 7, 4, 0, 0, 464, 32, 1, 0, + 0, 0, 465, 466, 7, 4, 0, 0, 466, 467, 7, 7, 0, 0, 467, 468, 7, 10, 0, 0, + 468, 469, 5, 95, 0, 0, 469, 470, 7, 4, 0, 0, 470, 471, 7, 19, 0, 0, 471, + 472, 5, 95, 0, 0, 472, 473, 7, 10, 0, 0, 473, 474, 7, 16, 0, 0, 474, 475, + 7, 10, 0, 0, 475, 476, 7, 12, 0, 0, 476, 34, 1, 0, 0, 0, 477, 478, 7, 12, + 0, 0, 478, 479, 7, 6, 0, 0, 479, 480, 7, 12, 0, 0, 480, 36, 1, 0, 0, 0, + 481, 482, 7, 6, 0, 0, 482, 483, 7, 8, 0, 0, 483, 484, 7, 8, 0, 0, 484, + 485, 7, 10, 0, 0, 485, 486, 7, 14, 0, 0, 486, 487, 7, 4, 0, 0, 487, 488, + 5, 95, 0, 0, 488, 489, 7, 12, 0, 0, 489, 490, 7, 2, 0, 0, 490, 491, 7, + 9, 0, 0, 491, 492, 7, 9, 0, 0, 492, 493, 7, 1, 0, 0, 493, 38, 1, 0, 0, + 0, 494, 495, 7, 7, 0, 0, 495, 496, 7, 11, 0, 0, 496, 497, 7, 12, 0, 0, + 497, 498, 7, 19, 0, 0, 498, 499, 7, 5, 0, 0, 499, 500, 7, 10, 0, 0, 500, + 501, 5, 95, 0, 0, 501, 502, 7, 12, 0, 0, 502, 503, 7, 2, 0, 0, 503, 504, + 7, 9, 0, 0, 504, 505, 7, 9, 0, 0, 505, 506, 7, 1, 0, 0, 506, 40, 1, 0, + 0, 0, 507, 508, 7, 12, 0, 0, 508, 509, 7, 2, 0, 0, 509, 510, 7, 9, 0, 0, + 510, 511, 7, 9, 0, 0, 511, 512, 5, 95, 0, 0, 512, 513, 7, 21, 0, 0, 513, + 514, 7, 6, 0, 0, 514, 515, 7, 12, 0, 0, 515, 516, 7, 13, 0, 0, 516, 517, + 7, 9, 0, 0, 517, 518, 7, 7, 0, 0, 518, 519, 7, 12, 0, 0, 519, 520, 7, 11, + 0, 0, 520, 42, 1, 0, 0, 0, 521, 522, 7, 1, 0, 0, 522, 523, 7, 14, 0, 0, + 523, 524, 7, 6, 0, 0, 524, 525, 7, 8, 0, 0, 525, 526, 7, 10, 0, 0, 526, + 527, 7, 1, 0, 0, 527, 528, 5, 95, 0, 0, 528, 529, 7, 19, 0, 0, 529, 530, + 7, 12, 0, 0, 530, 531, 7, 9, 0, 0, 531, 532, 7, 15, 0, 0, 532, 44, 1, 0, + 0, 0, 533, 534, 7, 4, 0, 0, 534, 535, 7, 5, 0, 0, 535, 536, 7, 2, 0, 0, + 536, 537, 7, 12, 0, 0, 537, 538, 7, 8, 0, 0, 538, 539, 7, 6, 0, 0, 539, + 540, 7, 4, 0, 0, 540, 541, 7, 10, 0, 0, 541, 46, 1, 0, 0, 0, 542, 544, + 7, 22, 0, 0, 543, 542, 1, 0, 0, 0, 543, 544, 1, 0, 0, 0, 544, 545, 1, 0, + 0, 0, 545, 546, 3, 261, 130, 0, 546, 48, 1, 0, 0, 0, 547, 549, 7, 22, 0, + 0, 548, 547, 1, 0, 0, 0, 548, 549, 1, 0, 0, 0, 549, 551, 1, 0, 0, 0, 550, + 552, 7, 23, 0, 0, 551, 550, 1, 0, 0, 0, 552, 553, 1, 0, 0, 0, 553, 551, + 1, 0, 0, 0, 553, 554, 1, 0, 0, 0, 554, 561, 1, 0, 0, 0, 555, 557, 5, 46, + 0, 0, 556, 558, 7, 23, 0, 0, 557, 556, 1, 0, 0, 0, 558, 559, 1, 0, 0, 0, + 559, 557, 1, 0, 0, 0, 559, 560, 1, 0, 0, 0, 560, 562, 1, 0, 0, 0, 561, + 555, 1, 0, 0, 0, 561, 562, 1, 0, 0, 0, 562, 50, 1, 0, 0, 0, 563, 565, 7, + 22, 0, 0, 564, 563, 1, 0, 0, 0, 564, 565, 1, 0, 0, 0, 565, 567, 1, 0, 0, + 0, 566, 568, 7, 23, 0, 0, 567, 566, 1, 0, 0, 0, 568, 569, 1, 0, 0, 0, 569, + 567, 1, 0, 0, 0, 569, 570, 1, 0, 0, 0, 570, 578, 1, 0, 0, 0, 571, 575, + 5, 46, 0, 0, 572, 574, 7, 23, 0, 0, 573, 572, 1, 0, 0, 0, 574, 577, 1, + 0, 0, 0, 575, 573, 1, 0, 0, 0, 575, 576, 1, 0, 0, 0, 576, 579, 1, 0, 0, + 0, 577, 575, 1, 0, 0, 0, 578, 571, 1, 0, 0, 0, 578, 579, 1, 0, 0, 0, 579, + 589, 1, 0, 0, 0, 580, 582, 7, 10, 0, 0, 581, 583, 7, 22, 0, 0, 582, 581, + 1, 0, 0, 0, 582, 583, 1, 0, 0, 0, 583, 585, 1, 0, 0, 0, 584, 586, 7, 23, + 0, 0, 585, 584, 1, 0, 0, 0, 586, 587, 1, 0, 0, 0, 587, 585, 1, 0, 0, 0, + 587, 588, 1, 0, 0, 0, 588, 590, 1, 0, 0, 0, 589, 580, 1, 0, 0, 0, 589, + 590, 1, 0, 0, 0, 590, 602, 1, 0, 0, 0, 591, 593, 7, 22, 0, 0, 592, 591, + 1, 0, 0, 0, 592, 593, 1, 0, 0, 0, 593, 594, 1, 0, 0, 0, 594, 595, 7, 7, + 0, 0, 595, 596, 7, 12, 0, 0, 596, 602, 7, 18, 0, 0, 597, 598, 7, 1, 0, + 0, 598, 599, 7, 12, 0, 0, 599, 600, 7, 6, 0, 0, 600, 602, 7, 12, 0, 0, + 601, 564, 1, 0, 0, 0, 601, 592, 1, 0, 0, 0, 601, 597, 1, 0, 0, 0, 602, + 52, 1, 0, 0, 0, 603, 604, 7, 4, 0, 0, 604, 605, 7, 5, 0, 0, 605, 606, 7, + 2, 0, 0, 606, 613, 7, 10, 0, 0, 607, 608, 7, 18, 0, 0, 608, 609, 7, 6, + 0, 0, 609, 610, 7, 9, 0, 0, 610, 611, 7, 1, 0, 0, 611, 613, 7, 10, 0, 0, + 612, 603, 1, 0, 0, 0, 612, 607, 1, 0, 0, 0, 613, 54, 1, 0, 0, 0, 614, 615, + 7, 23, 0, 0, 615, 616, 7, 23, 0, 0, 616, 617, 7, 23, 0, 0, 617, 618, 7, + 23, 0, 0, 618, 56, 1, 0, 0, 0, 619, 620, 7, 23, 0, 0, 620, 621, 7, 23, + 0, 0, 621, 58, 1, 0, 0, 0, 622, 623, 5, 39, 0, 0, 623, 624, 3, 55, 27, + 0, 624, 625, 5, 45, 0, 0, 625, 626, 3, 57, 28, 0, 626, 627, 5, 45, 0, 0, + 627, 628, 3, 57, 28, 0, 628, 629, 7, 4, 0, 0, 629, 630, 3, 57, 28, 0, 630, + 631, 5, 58, 0, 0, 631, 632, 3, 57, 28, 0, 632, 633, 5, 58, 0, 0, 633, 640, + 3, 57, 28, 0, 634, 636, 5, 46, 0, 0, 635, 637, 7, 23, 0, 0, 636, 635, 1, + 0, 0, 0, 637, 638, 1, 0, 0, 0, 638, 636, 1, 0, 0, 0, 638, 639, 1, 0, 0, + 0, 639, 641, 1, 0, 0, 0, 640, 634, 1, 0, 0, 0, 640, 641, 1, 0, 0, 0, 641, + 642, 1, 0, 0, 0, 642, 643, 7, 22, 0, 0, 643, 644, 3, 57, 28, 0, 644, 645, + 5, 58, 0, 0, 645, 646, 3, 57, 28, 0, 646, 647, 5, 39, 0, 0, 647, 60, 1, + 0, 0, 0, 648, 649, 5, 39, 0, 0, 649, 650, 3, 55, 27, 0, 650, 651, 5, 45, + 0, 0, 651, 652, 3, 57, 28, 0, 652, 653, 5, 45, 0, 0, 653, 654, 3, 57, 28, + 0, 654, 655, 7, 4, 0, 0, 655, 656, 3, 57, 28, 0, 656, 657, 5, 58, 0, 0, + 657, 658, 3, 57, 28, 0, 658, 659, 5, 58, 0, 0, 659, 666, 3, 57, 28, 0, + 660, 662, 5, 46, 0, 0, 661, 663, 7, 23, 0, 0, 662, 661, 1, 0, 0, 0, 663, + 664, 1, 0, 0, 0, 664, 662, 1, 0, 0, 0, 664, 665, 1, 0, 0, 0, 665, 667, + 1, 0, 0, 0, 666, 660, 1, 0, 0, 0, 666, 667, 1, 0, 0, 0, 667, 668, 1, 0, + 0, 0, 668, 669, 5, 39, 0, 0, 669, 62, 1, 0, 0, 0, 670, 671, 5, 39, 0, 0, + 671, 672, 3, 57, 28, 0, 672, 673, 5, 58, 0, 0, 673, 674, 3, 57, 28, 0, + 674, 675, 5, 58, 0, 0, 675, 682, 3, 57, 28, 0, 676, 678, 5, 46, 0, 0, 677, + 679, 7, 23, 0, 0, 678, 677, 1, 0, 0, 0, 679, 680, 1, 0, 0, 0, 680, 678, + 1, 0, 0, 0, 680, 681, 1, 0, 0, 0, 681, 683, 1, 0, 0, 0, 682, 676, 1, 0, + 0, 0, 682, 683, 1, 0, 0, 0, 683, 684, 1, 0, 0, 0, 684, 685, 5, 39, 0, 0, + 685, 64, 1, 0, 0, 0, 686, 687, 5, 39, 0, 0, 687, 688, 3, 55, 27, 0, 688, + 689, 5, 45, 0, 0, 689, 690, 3, 57, 28, 0, 690, 691, 5, 45, 0, 0, 691, 692, + 3, 57, 28, 0, 692, 693, 5, 39, 0, 0, 693, 66, 1, 0, 0, 0, 694, 695, 7, + 14, 0, 0, 695, 68, 1, 0, 0, 0, 696, 697, 7, 4, 0, 0, 697, 70, 1, 0, 0, + 0, 698, 699, 7, 15, 0, 0, 699, 72, 1, 0, 0, 0, 700, 701, 7, 24, 0, 0, 701, + 74, 1, 0, 0, 0, 702, 703, 7, 13, 0, 0, 703, 76, 1, 0, 0, 0, 704, 705, 7, + 21, 0, 0, 705, 78, 1, 0, 0, 0, 706, 707, 7, 1, 0, 0, 707, 80, 1, 0, 0, + 0, 708, 709, 7, 18, 0, 0, 709, 82, 1, 0, 0, 0, 710, 711, 3, 231, 115, 0, + 711, 84, 1, 0, 0, 0, 712, 713, 3, 229, 114, 0, 713, 86, 1, 0, 0, 0, 714, + 715, 5, 39, 0, 0, 715, 716, 3, 67, 33, 0, 716, 717, 3, 47, 23, 0, 717, + 721, 3, 71, 35, 0, 718, 719, 3, 47, 23, 0, 719, 720, 3, 73, 36, 0, 720, + 722, 1, 0, 0, 0, 721, 718, 1, 0, 0, 0, 721, 722, 1, 0, 0, 0, 722, 723, + 1, 0, 0, 0, 723, 724, 5, 39, 0, 0, 724, 732, 1, 0, 0, 0, 725, 726, 5, 39, + 0, 0, 726, 727, 3, 67, 33, 0, 727, 728, 3, 47, 23, 0, 728, 729, 3, 73, + 36, 0, 729, 730, 5, 39, 0, 0, 730, 732, 1, 0, 0, 0, 731, 714, 1, 0, 0, + 0, 731, 725, 1, 0, 0, 0, 732, 88, 1, 0, 0, 0, 733, 734, 5, 39, 0, 0, 734, + 735, 3, 67, 33, 0, 735, 736, 3, 47, 23, 0, 736, 740, 3, 75, 37, 0, 737, + 738, 3, 69, 34, 0, 738, 739, 3, 91, 45, 0, 739, 741, 1, 0, 0, 0, 740, 737, + 1, 0, 0, 0, 740, 741, 1, 0, 0, 0, 741, 742, 1, 0, 0, 0, 742, 743, 5, 39, + 0, 0, 743, 751, 1, 0, 0, 0, 744, 745, 5, 39, 0, 0, 745, 746, 3, 67, 33, + 0, 746, 747, 3, 69, 34, 0, 747, 748, 3, 91, 45, 0, 748, 749, 5, 39, 0, + 0, 749, 751, 1, 0, 0, 0, 750, 733, 1, 0, 0, 0, 750, 744, 1, 0, 0, 0, 751, + 90, 1, 0, 0, 0, 752, 753, 3, 47, 23, 0, 753, 757, 3, 77, 38, 0, 754, 755, + 3, 47, 23, 0, 755, 756, 3, 73, 36, 0, 756, 758, 1, 0, 0, 0, 757, 754, 1, + 0, 0, 0, 757, 758, 1, 0, 0, 0, 758, 762, 1, 0, 0, 0, 759, 760, 3, 49, 24, + 0, 760, 761, 3, 79, 39, 0, 761, 763, 1, 0, 0, 0, 762, 759, 1, 0, 0, 0, + 762, 763, 1, 0, 0, 0, 763, 775, 1, 0, 0, 0, 764, 765, 3, 47, 23, 0, 765, + 769, 3, 73, 36, 0, 766, 767, 3, 49, 24, 0, 767, 768, 3, 79, 39, 0, 768, + 770, 1, 0, 0, 0, 769, 766, 1, 0, 0, 0, 769, 770, 1, 0, 0, 0, 770, 775, + 1, 0, 0, 0, 771, 772, 3, 49, 24, 0, 772, 773, 3, 79, 39, 0, 773, 775, 1, + 0, 0, 0, 774, 752, 1, 0, 0, 0, 774, 764, 1, 0, 0, 0, 774, 771, 1, 0, 0, + 0, 775, 92, 1, 0, 0, 0, 776, 777, 5, 39, 0, 0, 777, 781, 3, 67, 33, 0, + 778, 779, 3, 47, 23, 0, 779, 780, 3, 71, 35, 0, 780, 782, 1, 0, 0, 0, 781, + 778, 1, 0, 0, 0, 781, 782, 1, 0, 0, 0, 782, 786, 1, 0, 0, 0, 783, 784, + 3, 47, 23, 0, 784, 785, 3, 73, 36, 0, 785, 787, 1, 0, 0, 0, 786, 783, 1, + 0, 0, 0, 786, 787, 1, 0, 0, 0, 787, 791, 1, 0, 0, 0, 788, 789, 3, 47, 23, + 0, 789, 790, 3, 75, 37, 0, 790, 792, 1, 0, 0, 0, 791, 788, 1, 0, 0, 0, + 791, 792, 1, 0, 0, 0, 792, 796, 1, 0, 0, 0, 793, 794, 3, 69, 34, 0, 794, + 795, 3, 91, 45, 0, 795, 797, 1, 0, 0, 0, 796, 793, 1, 0, 0, 0, 796, 797, + 1, 0, 0, 0, 797, 798, 1, 0, 0, 0, 798, 799, 5, 39, 0, 0, 799, 94, 1, 0, + 0, 0, 800, 801, 7, 12, 0, 0, 801, 802, 7, 2, 0, 0, 802, 803, 7, 9, 0, 0, + 803, 804, 7, 9, 0, 0, 804, 96, 1, 0, 0, 0, 805, 813, 5, 39, 0, 0, 806, + 807, 5, 92, 0, 0, 807, 812, 9, 0, 0, 0, 808, 809, 5, 39, 0, 0, 809, 812, + 5, 39, 0, 0, 810, 812, 8, 25, 0, 0, 811, 806, 1, 0, 0, 0, 811, 808, 1, + 0, 0, 0, 811, 810, 1, 0, 0, 0, 812, 815, 1, 0, 0, 0, 813, 811, 1, 0, 0, + 0, 813, 814, 1, 0, 0, 0, 814, 816, 1, 0, 0, 0, 815, 813, 1, 0, 0, 0, 816, + 817, 5, 39, 0, 0, 817, 98, 1, 0, 0, 0, 818, 819, 7, 10, 0, 0, 819, 820, + 7, 12, 0, 0, 820, 821, 7, 2, 0, 0, 821, 822, 7, 24, 0, 0, 822, 100, 1, + 0, 0, 0, 823, 824, 7, 8, 0, 0, 824, 825, 7, 19, 0, 0, 825, 826, 7, 9, 0, + 0, 826, 827, 1, 0, 0, 0, 827, 828, 3, 261, 130, 0, 828, 102, 1, 0, 0, 0, + 829, 830, 5, 47, 0, 0, 830, 831, 5, 47, 0, 0, 831, 835, 1, 0, 0, 0, 832, + 834, 8, 17, 0, 0, 833, 832, 1, 0, 0, 0, 834, 837, 1, 0, 0, 0, 835, 833, + 1, 0, 0, 0, 835, 836, 1, 0, 0, 0, 836, 838, 1, 0, 0, 0, 837, 835, 1, 0, + 0, 0, 838, 839, 6, 51, 0, 0, 839, 104, 1, 0, 0, 0, 840, 841, 5, 47, 0, + 0, 841, 842, 5, 42, 0, 0, 842, 850, 1, 0, 0, 0, 843, 851, 8, 26, 0, 0, + 844, 846, 5, 42, 0, 0, 845, 844, 1, 0, 0, 0, 846, 847, 1, 0, 0, 0, 847, + 845, 1, 0, 0, 0, 847, 848, 1, 0, 0, 0, 848, 849, 1, 0, 0, 0, 849, 851, + 8, 27, 0, 0, 850, 843, 1, 0, 0, 0, 850, 845, 1, 0, 0, 0, 851, 855, 1, 0, + 0, 0, 852, 854, 5, 42, 0, 0, 853, 852, 1, 0, 0, 0, 854, 857, 1, 0, 0, 0, + 855, 853, 1, 0, 0, 0, 855, 856, 1, 0, 0, 0, 856, 858, 1, 0, 0, 0, 857, + 855, 1, 0, 0, 0, 858, 859, 5, 42, 0, 0, 859, 860, 5, 47, 0, 0, 860, 861, + 1, 0, 0, 0, 861, 862, 6, 52, 0, 0, 862, 106, 1, 0, 0, 0, 863, 864, 7, 23, + 0, 0, 864, 108, 1, 0, 0, 0, 865, 866, 7, 7, 0, 0, 866, 867, 7, 18, 0, 0, + 867, 110, 1, 0, 0, 0, 868, 869, 7, 4, 0, 0, 869, 870, 7, 21, 0, 0, 870, + 871, 7, 10, 0, 0, 871, 872, 7, 12, 0, 0, 872, 112, 1, 0, 0, 0, 873, 874, + 7, 10, 0, 0, 874, 875, 7, 9, 0, 0, 875, 876, 7, 1, 0, 0, 876, 877, 7, 10, + 0, 0, 877, 114, 1, 0, 0, 0, 878, 879, 7, 18, 0, 0, 879, 880, 7, 2, 0, 0, + 880, 881, 7, 12, 0, 0, 881, 882, 7, 8, 0, 0, 882, 116, 1, 0, 0, 0, 883, + 884, 7, 3, 0, 0, 884, 885, 7, 19, 0, 0, 885, 886, 7, 19, 0, 0, 886, 887, + 7, 9, 0, 0, 887, 888, 7, 10, 0, 0, 888, 889, 7, 6, 0, 0, 889, 890, 7, 12, + 0, 0, 890, 118, 1, 0, 0, 0, 891, 892, 7, 7, 0, 0, 892, 893, 5, 56, 0, 0, + 893, 120, 1, 0, 0, 0, 894, 895, 7, 7, 0, 0, 895, 896, 5, 49, 0, 0, 896, + 897, 5, 54, 0, 0, 897, 122, 1, 0, 0, 0, 898, 899, 7, 7, 0, 0, 899, 900, + 5, 51, 0, 0, 900, 901, 5, 50, 0, 0, 901, 124, 1, 0, 0, 0, 902, 903, 7, + 7, 0, 0, 903, 904, 5, 54, 0, 0, 904, 905, 5, 52, 0, 0, 905, 126, 1, 0, + 0, 0, 906, 907, 7, 18, 0, 0, 907, 908, 7, 14, 0, 0, 908, 909, 5, 51, 0, + 0, 909, 910, 5, 50, 0, 0, 910, 128, 1, 0, 0, 0, 911, 912, 7, 18, 0, 0, + 912, 913, 7, 14, 0, 0, 913, 914, 5, 54, 0, 0, 914, 915, 5, 52, 0, 0, 915, + 130, 1, 0, 0, 0, 916, 917, 7, 1, 0, 0, 917, 918, 7, 4, 0, 0, 918, 919, + 7, 5, 0, 0, 919, 920, 7, 7, 0, 0, 920, 921, 7, 12, 0, 0, 921, 922, 7, 11, + 0, 0, 922, 132, 1, 0, 0, 0, 923, 924, 7, 3, 0, 0, 924, 925, 7, 7, 0, 0, + 925, 926, 7, 12, 0, 0, 926, 927, 7, 6, 0, 0, 927, 928, 7, 5, 0, 0, 928, + 929, 7, 15, 0, 0, 929, 134, 1, 0, 0, 0, 930, 931, 7, 4, 0, 0, 931, 932, + 7, 7, 0, 0, 932, 933, 7, 24, 0, 0, 933, 934, 7, 10, 0, 0, 934, 935, 7, + 1, 0, 0, 935, 936, 7, 4, 0, 0, 936, 937, 7, 6, 0, 0, 937, 938, 7, 24, 0, + 0, 938, 939, 7, 14, 0, 0, 939, 136, 1, 0, 0, 0, 940, 941, 7, 4, 0, 0, 941, + 942, 7, 7, 0, 0, 942, 943, 7, 24, 0, 0, 943, 944, 7, 10, 0, 0, 944, 945, + 7, 1, 0, 0, 945, 946, 7, 4, 0, 0, 946, 947, 7, 6, 0, 0, 947, 948, 7, 24, + 0, 0, 948, 949, 7, 14, 0, 0, 949, 950, 5, 95, 0, 0, 950, 951, 7, 4, 0, + 0, 951, 952, 7, 28, 0, 0, 952, 138, 1, 0, 0, 0, 953, 954, 7, 13, 0, 0, + 954, 955, 7, 6, 0, 0, 955, 956, 7, 4, 0, 0, 956, 957, 7, 10, 0, 0, 957, + 140, 1, 0, 0, 0, 958, 959, 7, 4, 0, 0, 959, 960, 7, 7, 0, 0, 960, 961, + 7, 24, 0, 0, 961, 962, 7, 10, 0, 0, 962, 142, 1, 0, 0, 0, 963, 964, 7, + 7, 0, 0, 964, 965, 7, 12, 0, 0, 965, 966, 7, 4, 0, 0, 966, 967, 7, 10, + 0, 0, 967, 968, 7, 5, 0, 0, 968, 969, 7, 16, 0, 0, 969, 970, 7, 6, 0, 0, + 970, 971, 7, 9, 0, 0, 971, 972, 5, 95, 0, 0, 972, 973, 7, 15, 0, 0, 973, + 974, 7, 10, 0, 0, 974, 975, 7, 6, 0, 0, 975, 976, 7, 5, 0, 0, 976, 144, + 1, 0, 0, 0, 977, 978, 7, 7, 0, 0, 978, 979, 7, 12, 0, 0, 979, 980, 7, 4, + 0, 0, 980, 981, 7, 10, 0, 0, 981, 982, 7, 5, 0, 0, 982, 983, 7, 16, 0, + 0, 983, 984, 7, 6, 0, 0, 984, 985, 7, 9, 0, 0, 985, 986, 5, 95, 0, 0, 986, + 987, 7, 13, 0, 0, 987, 988, 7, 6, 0, 0, 988, 989, 7, 15, 0, 0, 989, 146, + 1, 0, 0, 0, 990, 991, 7, 7, 0, 0, 991, 992, 7, 12, 0, 0, 992, 993, 7, 4, + 0, 0, 993, 994, 7, 10, 0, 0, 994, 995, 7, 5, 0, 0, 995, 996, 7, 16, 0, + 0, 996, 997, 7, 6, 0, 0, 997, 998, 7, 9, 0, 0, 998, 999, 5, 95, 0, 0, 999, + 1000, 7, 8, 0, 0, 1000, 1001, 7, 19, 0, 0, 1001, 1002, 7, 24, 0, 0, 1002, + 1003, 7, 14, 0, 0, 1003, 1004, 7, 19, 0, 0, 1004, 1005, 7, 2, 0, 0, 1005, + 1006, 7, 12, 0, 0, 1006, 1007, 7, 13, 0, 0, 1007, 148, 1, 0, 0, 0, 1008, + 1009, 7, 2, 0, 0, 1009, 1010, 7, 2, 0, 0, 1010, 1011, 7, 7, 0, 0, 1011, + 1012, 7, 13, 0, 0, 1012, 150, 1, 0, 0, 0, 1013, 1014, 7, 13, 0, 0, 1014, + 1015, 7, 10, 0, 0, 1015, 1016, 7, 8, 0, 0, 1016, 1017, 7, 7, 0, 0, 1017, + 1018, 7, 24, 0, 0, 1018, 1019, 7, 6, 0, 0, 1019, 1020, 7, 9, 0, 0, 1020, + 152, 1, 0, 0, 0, 1021, 1022, 7, 14, 0, 0, 1022, 1023, 7, 5, 0, 0, 1023, + 1024, 7, 10, 0, 0, 1024, 1025, 7, 8, 0, 0, 1025, 1026, 7, 7, 0, 0, 1026, + 1027, 7, 1, 0, 0, 1027, 1028, 7, 7, 0, 0, 1028, 1029, 7, 19, 0, 0, 1029, + 1030, 7, 12, 0, 0, 1030, 1031, 5, 95, 0, 0, 1031, 1032, 7, 4, 0, 0, 1032, + 1033, 7, 7, 0, 0, 1033, 1034, 7, 24, 0, 0, 1034, 1035, 7, 10, 0, 0, 1035, + 154, 1, 0, 0, 0, 1036, 1037, 7, 14, 0, 0, 1037, 1038, 7, 5, 0, 0, 1038, + 1039, 7, 10, 0, 0, 1039, 1040, 7, 8, 0, 0, 1040, 1041, 7, 7, 0, 0, 1041, + 1042, 7, 1, 0, 0, 1042, 1043, 7, 7, 0, 0, 1043, 1044, 7, 19, 0, 0, 1044, + 1045, 7, 12, 0, 0, 1045, 1046, 5, 95, 0, 0, 1046, 1047, 7, 4, 0, 0, 1047, + 1048, 7, 7, 0, 0, 1048, 1049, 7, 24, 0, 0, 1049, 1050, 7, 10, 0, 0, 1050, + 1051, 7, 1, 0, 0, 1051, 1052, 7, 4, 0, 0, 1052, 1053, 7, 6, 0, 0, 1053, + 1054, 7, 24, 0, 0, 1054, 1055, 7, 14, 0, 0, 1055, 156, 1, 0, 0, 0, 1056, + 1057, 7, 14, 0, 0, 1057, 1058, 7, 5, 0, 0, 1058, 1059, 7, 10, 0, 0, 1059, + 1060, 7, 8, 0, 0, 1060, 1061, 7, 7, 0, 0, 1061, 1062, 7, 1, 0, 0, 1062, + 1063, 7, 7, 0, 0, 1063, 1064, 7, 19, 0, 0, 1064, 1065, 7, 12, 0, 0, 1065, + 1066, 5, 95, 0, 0, 1066, 1067, 7, 4, 0, 0, 1067, 1068, 7, 7, 0, 0, 1068, + 1069, 7, 24, 0, 0, 1069, 1070, 7, 10, 0, 0, 1070, 1071, 7, 1, 0, 0, 1071, + 1072, 7, 4, 0, 0, 1072, 1073, 7, 6, 0, 0, 1073, 1074, 7, 24, 0, 0, 1074, + 1075, 7, 14, 0, 0, 1075, 1076, 5, 95, 0, 0, 1076, 1077, 7, 4, 0, 0, 1077, + 1078, 7, 28, 0, 0, 1078, 158, 1, 0, 0, 0, 1079, 1080, 7, 18, 0, 0, 1080, + 1081, 7, 7, 0, 0, 1081, 1082, 7, 29, 0, 0, 1082, 1083, 7, 10, 0, 0, 1083, + 1084, 7, 13, 0, 0, 1084, 1085, 7, 8, 0, 0, 1085, 1086, 7, 21, 0, 0, 1086, + 1087, 7, 6, 0, 0, 1087, 1088, 7, 5, 0, 0, 1088, 160, 1, 0, 0, 0, 1089, + 1090, 7, 16, 0, 0, 1090, 1091, 7, 6, 0, 0, 1091, 1092, 7, 5, 0, 0, 1092, + 1093, 7, 8, 0, 0, 1093, 1094, 7, 21, 0, 0, 1094, 1095, 7, 6, 0, 0, 1095, + 1096, 7, 5, 0, 0, 1096, 162, 1, 0, 0, 0, 1097, 1098, 7, 18, 0, 0, 1098, + 1099, 7, 7, 0, 0, 1099, 1100, 7, 29, 0, 0, 1100, 1101, 7, 10, 0, 0, 1101, + 1102, 7, 13, 0, 0, 1102, 1103, 7, 3, 0, 0, 1103, 1104, 7, 7, 0, 0, 1104, + 1105, 7, 12, 0, 0, 1105, 1106, 7, 6, 0, 0, 1106, 1107, 7, 5, 0, 0, 1107, + 1108, 7, 15, 0, 0, 1108, 164, 1, 0, 0, 0, 1109, 1110, 7, 1, 0, 0, 1110, + 1111, 7, 4, 0, 0, 1111, 1112, 7, 5, 0, 0, 1112, 1113, 7, 2, 0, 0, 1113, + 1114, 7, 8, 0, 0, 1114, 1115, 7, 4, 0, 0, 1115, 166, 1, 0, 0, 0, 1116, + 1117, 7, 12, 0, 0, 1117, 1118, 7, 1, 0, 0, 1118, 1119, 7, 4, 0, 0, 1119, + 1120, 7, 5, 0, 0, 1120, 1121, 7, 2, 0, 0, 1121, 1122, 7, 8, 0, 0, 1122, + 1123, 7, 4, 0, 0, 1123, 168, 1, 0, 0, 0, 1124, 1125, 7, 9, 0, 0, 1125, + 1126, 7, 7, 0, 0, 1126, 1127, 7, 1, 0, 0, 1127, 1128, 7, 4, 0, 0, 1128, + 170, 1, 0, 0, 0, 1129, 1130, 7, 24, 0, 0, 1130, 1131, 7, 6, 0, 0, 1131, + 1132, 7, 14, 0, 0, 1132, 172, 1, 0, 0, 0, 1133, 1134, 7, 2, 0, 0, 1134, + 1135, 5, 33, 0, 0, 1135, 174, 1, 0, 0, 0, 1136, 1137, 7, 3, 0, 0, 1137, + 1138, 7, 19, 0, 0, 1138, 1139, 7, 19, 0, 0, 1139, 1140, 7, 9, 0, 0, 1140, + 176, 1, 0, 0, 0, 1141, 1142, 7, 1, 0, 0, 1142, 1143, 7, 4, 0, 0, 1143, + 1144, 7, 5, 0, 0, 1144, 178, 1, 0, 0, 0, 1145, 1146, 7, 16, 0, 0, 1146, + 1147, 7, 3, 0, 0, 1147, 1148, 7, 7, 0, 0, 1148, 1149, 7, 12, 0, 0, 1149, + 180, 1, 0, 0, 0, 1150, 1151, 7, 4, 0, 0, 1151, 1152, 7, 1, 0, 0, 1152, + 182, 1, 0, 0, 0, 1153, 1154, 7, 4, 0, 0, 1154, 1155, 7, 1, 0, 0, 1155, + 1156, 7, 4, 0, 0, 1156, 1157, 7, 28, 0, 0, 1157, 184, 1, 0, 0, 0, 1158, + 1159, 7, 7, 0, 0, 1159, 1160, 7, 15, 0, 0, 1160, 1161, 7, 10, 0, 0, 1161, + 1162, 7, 6, 0, 0, 1162, 1163, 7, 5, 0, 0, 1163, 186, 1, 0, 0, 0, 1164, + 1165, 7, 7, 0, 0, 1165, 1166, 7, 13, 0, 0, 1166, 1167, 7, 6, 0, 0, 1167, + 1168, 7, 15, 0, 0, 1168, 188, 1, 0, 0, 0, 1169, 1170, 7, 7, 0, 0, 1170, + 1171, 7, 8, 0, 0, 1171, 1172, 7, 19, 0, 0, 1172, 1173, 7, 24, 0, 0, 1173, + 1174, 7, 14, 0, 0, 1174, 1175, 7, 19, 0, 0, 1175, 1176, 7, 2, 0, 0, 1176, + 1177, 7, 12, 0, 0, 1177, 1178, 7, 13, 0, 0, 1178, 190, 1, 0, 0, 0, 1179, + 1180, 7, 13, 0, 0, 1180, 1181, 7, 10, 0, 0, 1181, 1182, 7, 8, 0, 0, 1182, + 192, 1, 0, 0, 0, 1183, 1184, 7, 14, 0, 0, 1184, 1185, 7, 4, 0, 0, 1185, + 194, 1, 0, 0, 0, 1186, 1187, 7, 14, 0, 0, 1187, 1188, 7, 4, 0, 0, 1188, + 1189, 7, 1, 0, 0, 1189, 196, 1, 0, 0, 0, 1190, 1191, 7, 14, 0, 0, 1191, + 1192, 7, 4, 0, 0, 1192, 1193, 7, 1, 0, 0, 1193, 1194, 7, 4, 0, 0, 1194, + 1195, 7, 28, 0, 0, 1195, 198, 1, 0, 0, 0, 1196, 1197, 7, 18, 0, 0, 1197, + 1198, 7, 8, 0, 0, 1198, 1199, 7, 21, 0, 0, 1199, 1200, 7, 6, 0, 0, 1200, + 1201, 7, 5, 0, 0, 1201, 200, 1, 0, 0, 0, 1202, 1203, 7, 16, 0, 0, 1203, + 1204, 7, 8, 0, 0, 1204, 1205, 7, 21, 0, 0, 1205, 1206, 7, 6, 0, 0, 1206, + 1207, 7, 5, 0, 0, 1207, 202, 1, 0, 0, 0, 1208, 1209, 7, 18, 0, 0, 1209, + 1210, 7, 3, 0, 0, 1210, 1211, 7, 7, 0, 0, 1211, 1212, 7, 12, 0, 0, 1212, + 204, 1, 0, 0, 0, 1213, 1214, 7, 6, 0, 0, 1214, 1215, 7, 12, 0, 0, 1215, + 1216, 7, 15, 0, 0, 1216, 206, 1, 0, 0, 0, 1217, 1218, 3, 205, 102, 0, 1218, + 1219, 7, 23, 0, 0, 1219, 208, 1, 0, 0, 0, 1220, 1221, 5, 58, 0, 0, 1221, + 1222, 5, 58, 0, 0, 1222, 210, 1, 0, 0, 0, 1223, 1224, 5, 43, 0, 0, 1224, + 212, 1, 0, 0, 0, 1225, 1226, 5, 45, 0, 0, 1226, 214, 1, 0, 0, 0, 1227, + 1228, 5, 42, 0, 0, 1228, 216, 1, 0, 0, 0, 1229, 1230, 5, 47, 0, 0, 1230, + 218, 1, 0, 0, 0, 1231, 1232, 5, 37, 0, 0, 1232, 220, 1, 0, 0, 0, 1233, + 1234, 5, 61, 0, 0, 1234, 222, 1, 0, 0, 0, 1235, 1236, 5, 33, 0, 0, 1236, + 1237, 5, 61, 0, 0, 1237, 224, 1, 0, 0, 0, 1238, 1239, 5, 62, 0, 0, 1239, + 1240, 5, 61, 0, 0, 1240, 226, 1, 0, 0, 0, 1241, 1242, 5, 60, 0, 0, 1242, + 1243, 5, 61, 0, 0, 1243, 228, 1, 0, 0, 0, 1244, 1245, 5, 62, 0, 0, 1245, + 230, 1, 0, 0, 0, 1246, 1247, 5, 60, 0, 0, 1247, 232, 1, 0, 0, 0, 1248, + 1249, 5, 33, 0, 0, 1249, 234, 1, 0, 0, 0, 1250, 1251, 5, 40, 0, 0, 1251, + 236, 1, 0, 0, 0, 1252, 1253, 5, 41, 0, 0, 1253, 238, 1, 0, 0, 0, 1254, + 1255, 5, 91, 0, 0, 1255, 240, 1, 0, 0, 0, 1256, 1257, 5, 93, 0, 0, 1257, + 242, 1, 0, 0, 0, 1258, 1259, 5, 44, 0, 0, 1259, 244, 1, 0, 0, 0, 1260, + 1261, 5, 58, 0, 0, 1261, 246, 1, 0, 0, 0, 1262, 1263, 5, 63, 0, 0, 1263, + 248, 1, 0, 0, 0, 1264, 1265, 5, 35, 0, 0, 1265, 250, 1, 0, 0, 0, 1266, + 1267, 5, 46, 0, 0, 1267, 252, 1, 0, 0, 0, 1268, 1269, 7, 6, 0, 0, 1269, + 1270, 7, 12, 0, 0, 1270, 1271, 7, 13, 0, 0, 1271, 254, 1, 0, 0, 0, 1272, + 1273, 7, 19, 0, 0, 1273, 1274, 7, 5, 0, 0, 1274, 256, 1, 0, 0, 0, 1275, + 1276, 5, 58, 0, 0, 1276, 1277, 5, 61, 0, 0, 1277, 258, 1, 0, 0, 0, 1278, + 1279, 5, 45, 0, 0, 1279, 1280, 5, 62, 0, 0, 1280, 260, 1, 0, 0, 0, 1281, + 1285, 2, 49, 57, 0, 1282, 1284, 3, 263, 131, 0, 1283, 1282, 1, 0, 0, 0, + 1284, 1287, 1, 0, 0, 0, 1285, 1283, 1, 0, 0, 0, 1285, 1286, 1, 0, 0, 0, + 1286, 1290, 1, 0, 0, 0, 1287, 1285, 1, 0, 0, 0, 1288, 1290, 5, 48, 0, 0, + 1289, 1281, 1, 0, 0, 0, 1289, 1288, 1, 0, 0, 0, 1290, 262, 1, 0, 0, 0, + 1291, 1292, 2, 48, 57, 0, 1292, 264, 1, 0, 0, 0, 1293, 1295, 5, 45, 0, + 0, 1294, 1293, 1, 0, 0, 0, 1294, 1295, 1, 0, 0, 0, 1295, 1296, 1, 0, 0, + 0, 1296, 1297, 3, 261, 130, 0, 1297, 266, 1, 0, 0, 0, 1298, 1303, 7, 30, + 0, 0, 1299, 1302, 7, 30, 0, 0, 1300, 1302, 3, 263, 131, 0, 1301, 1299, + 1, 0, 0, 0, 1301, 1300, 1, 0, 0, 0, 1302, 1305, 1, 0, 0, 0, 1303, 1301, + 1, 0, 0, 0, 1303, 1304, 1, 0, 0, 0, 1304, 268, 1, 0, 0, 0, 1305, 1303, + 1, 0, 0, 0, 1306, 1308, 5, 13, 0, 0, 1307, 1309, 5, 10, 0, 0, 1308, 1307, + 1, 0, 0, 0, 1308, 1309, 1, 0, 0, 0, 1309, 1312, 1, 0, 0, 0, 1310, 1312, + 5, 10, 0, 0, 1311, 1306, 1, 0, 0, 0, 1311, 1310, 1, 0, 0, 0, 1312, 270, + 1, 0, 0, 0, 53, 0, 274, 372, 378, 380, 388, 392, 543, 548, 553, 559, 561, + 564, 569, 575, 578, 582, 587, 589, 592, 601, 612, 638, 640, 664, 666, 680, + 682, 721, 731, 740, 750, 757, 762, 769, 774, 781, 786, 791, 796, 811, 813, + 835, 847, 850, 855, 1285, 1289, 1294, 1301, 1303, 1308, 1311, 1, 0, 1, 0, } deserializer := antlr.NewATNDeserializer(nil) @@ -783,86 +786,87 @@ const ( FuncTestCaseLexerIntervalCompoundLiteral = 44 FuncTestCaseLexerNullLiteral = 45 FuncTestCaseLexerStringLiteral = 46 - FuncTestCaseLexerColumnName = 47 - FuncTestCaseLexerLineComment = 48 - FuncTestCaseLexerBlockComment = 49 - FuncTestCaseLexerIf = 50 - FuncTestCaseLexerThen = 51 - FuncTestCaseLexerElse = 52 - FuncTestCaseLexerFunc = 53 - FuncTestCaseLexerBoolean = 54 - FuncTestCaseLexerI8 = 55 - FuncTestCaseLexerI16 = 56 - FuncTestCaseLexerI32 = 57 - FuncTestCaseLexerI64 = 58 - FuncTestCaseLexerFP32 = 59 - FuncTestCaseLexerFP64 = 60 - FuncTestCaseLexerString_ = 61 - FuncTestCaseLexerBinary = 62 - FuncTestCaseLexerTimestamp = 63 - FuncTestCaseLexerTimestamp_TZ = 64 - FuncTestCaseLexerDate = 65 - FuncTestCaseLexerTime = 66 - FuncTestCaseLexerInterval_Year = 67 - FuncTestCaseLexerInterval_Day = 68 - FuncTestCaseLexerInterval_Compound = 69 - FuncTestCaseLexerUUID = 70 - FuncTestCaseLexerDecimal = 71 - FuncTestCaseLexerPrecision_Time = 72 - FuncTestCaseLexerPrecision_Timestamp = 73 - FuncTestCaseLexerPrecision_Timestamp_TZ = 74 - FuncTestCaseLexerFixedChar = 75 - FuncTestCaseLexerVarChar = 76 - FuncTestCaseLexerFixedBinary = 77 - FuncTestCaseLexerStruct = 78 - FuncTestCaseLexerNStruct = 79 - FuncTestCaseLexerList = 80 - FuncTestCaseLexerMap = 81 - FuncTestCaseLexerUserDefined = 82 - FuncTestCaseLexerBool = 83 - FuncTestCaseLexerStr = 84 - FuncTestCaseLexerVBin = 85 - FuncTestCaseLexerTs = 86 - FuncTestCaseLexerTsTZ = 87 - FuncTestCaseLexerIYear = 88 - FuncTestCaseLexerIDay = 89 - FuncTestCaseLexerICompound = 90 - FuncTestCaseLexerDec = 91 - FuncTestCaseLexerPT = 92 - FuncTestCaseLexerPTs = 93 - FuncTestCaseLexerPTsTZ = 94 - FuncTestCaseLexerFChar = 95 - FuncTestCaseLexerVChar = 96 - FuncTestCaseLexerFBin = 97 - FuncTestCaseLexerAny = 98 - FuncTestCaseLexerAnyVar = 99 - FuncTestCaseLexerDoubleColon = 100 - FuncTestCaseLexerPlus = 101 - FuncTestCaseLexerMinus = 102 - FuncTestCaseLexerAsterisk = 103 - FuncTestCaseLexerForwardSlash = 104 - FuncTestCaseLexerPercent = 105 - FuncTestCaseLexerEq = 106 - FuncTestCaseLexerNe = 107 - FuncTestCaseLexerGte = 108 - FuncTestCaseLexerLte = 109 - FuncTestCaseLexerGt = 110 - FuncTestCaseLexerLt = 111 - FuncTestCaseLexerBang = 112 - FuncTestCaseLexerOParen = 113 - FuncTestCaseLexerCParen = 114 - FuncTestCaseLexerOBracket = 115 - FuncTestCaseLexerCBracket = 116 - FuncTestCaseLexerComma = 117 - FuncTestCaseLexerColon = 118 - FuncTestCaseLexerQMark = 119 - FuncTestCaseLexerHash = 120 - FuncTestCaseLexerDot = 121 - FuncTestCaseLexerAnd = 122 - FuncTestCaseLexerOr = 123 - FuncTestCaseLexerAssign = 124 - FuncTestCaseLexerArrow = 125 - FuncTestCaseLexerNumber = 126 - FuncTestCaseLexerIdentifier = 127 - FuncTestCaseLexerNewline = 128 + FuncTestCaseLexerEnumType = 47 + FuncTestCaseLexerColumnName = 48 + FuncTestCaseLexerLineComment = 49 + FuncTestCaseLexerBlockComment = 50 + FuncTestCaseLexerIf = 51 + FuncTestCaseLexerThen = 52 + FuncTestCaseLexerElse = 53 + FuncTestCaseLexerFunc = 54 + FuncTestCaseLexerBoolean = 55 + FuncTestCaseLexerI8 = 56 + FuncTestCaseLexerI16 = 57 + FuncTestCaseLexerI32 = 58 + FuncTestCaseLexerI64 = 59 + FuncTestCaseLexerFP32 = 60 + FuncTestCaseLexerFP64 = 61 + FuncTestCaseLexerString_ = 62 + FuncTestCaseLexerBinary = 63 + FuncTestCaseLexerTimestamp = 64 + FuncTestCaseLexerTimestamp_TZ = 65 + FuncTestCaseLexerDate = 66 + FuncTestCaseLexerTime = 67 + FuncTestCaseLexerInterval_Year = 68 + FuncTestCaseLexerInterval_Day = 69 + FuncTestCaseLexerInterval_Compound = 70 + FuncTestCaseLexerUUID = 71 + FuncTestCaseLexerDecimal = 72 + FuncTestCaseLexerPrecision_Time = 73 + FuncTestCaseLexerPrecision_Timestamp = 74 + FuncTestCaseLexerPrecision_Timestamp_TZ = 75 + FuncTestCaseLexerFixedChar = 76 + FuncTestCaseLexerVarChar = 77 + FuncTestCaseLexerFixedBinary = 78 + FuncTestCaseLexerStruct = 79 + FuncTestCaseLexerNStruct = 80 + FuncTestCaseLexerList = 81 + FuncTestCaseLexerMap = 82 + FuncTestCaseLexerUserDefined = 83 + FuncTestCaseLexerBool = 84 + FuncTestCaseLexerStr = 85 + FuncTestCaseLexerVBin = 86 + FuncTestCaseLexerTs = 87 + FuncTestCaseLexerTsTZ = 88 + FuncTestCaseLexerIYear = 89 + FuncTestCaseLexerIDay = 90 + FuncTestCaseLexerICompound = 91 + FuncTestCaseLexerDec = 92 + FuncTestCaseLexerPT = 93 + FuncTestCaseLexerPTs = 94 + FuncTestCaseLexerPTsTZ = 95 + FuncTestCaseLexerFChar = 96 + FuncTestCaseLexerVChar = 97 + FuncTestCaseLexerFBin = 98 + FuncTestCaseLexerAny = 99 + FuncTestCaseLexerAnyVar = 100 + FuncTestCaseLexerDoubleColon = 101 + FuncTestCaseLexerPlus = 102 + FuncTestCaseLexerMinus = 103 + FuncTestCaseLexerAsterisk = 104 + FuncTestCaseLexerForwardSlash = 105 + FuncTestCaseLexerPercent = 106 + FuncTestCaseLexerEq = 107 + FuncTestCaseLexerNe = 108 + FuncTestCaseLexerGte = 109 + FuncTestCaseLexerLte = 110 + FuncTestCaseLexerGt = 111 + FuncTestCaseLexerLt = 112 + FuncTestCaseLexerBang = 113 + FuncTestCaseLexerOParen = 114 + FuncTestCaseLexerCParen = 115 + FuncTestCaseLexerOBracket = 116 + FuncTestCaseLexerCBracket = 117 + FuncTestCaseLexerComma = 118 + FuncTestCaseLexerColon = 119 + FuncTestCaseLexerQMark = 120 + FuncTestCaseLexerHash = 121 + FuncTestCaseLexerDot = 122 + FuncTestCaseLexerAnd = 123 + FuncTestCaseLexerOr = 124 + FuncTestCaseLexerAssign = 125 + FuncTestCaseLexerArrow = 126 + FuncTestCaseLexerNumber = 127 + FuncTestCaseLexerIdentifier = 128 + FuncTestCaseLexerNewline = 129 ) diff --git a/testcases/parser/baseparser/functestcase_parser.go b/testcases/parser/baseparser/functestcase_parser.go index 786934e..4bfc85a 100644 --- a/testcases/parser/baseparser/functestcase_parser.go +++ b/testcases/parser/baseparser/functestcase_parser.go @@ -38,9 +38,9 @@ func functestcaseparserParserInit() { "'SATURATE'", "'SILENT'", "'TIE_TO_EVEN'", "'NAN'", "'ACCEPT_NULLS'", "'IGNORE_NULLS'", "'NULL_HANDLING'", "'SPACES_ONLY'", "'TRUNCATE'", "", "", "", "", "", "", "", "", "'P'", "'T'", "'Y'", "'M'", "'D'", "'H'", - "'S'", "'F'", "", "", "", "", "", "'null'", "", "", "", "", "'IF'", - "'THEN'", "'ELSE'", "'FUNC'", "'BOOLEAN'", "'I8'", "'I16'", "'I32'", - "'I64'", "'FP32'", "'FP64'", "'STRING'", "'BINARY'", "'TIMESTAMP'", + "'S'", "'F'", "", "", "", "", "", "'null'", "", "'enum'", "", "", "", + "'IF'", "'THEN'", "'ELSE'", "'FUNC'", "'BOOLEAN'", "'I8'", "'I16'", + "'I32'", "'I64'", "'FP32'", "'FP64'", "'STRING'", "'BINARY'", "'TIMESTAMP'", "'TIMESTAMP_TZ'", "'DATE'", "'TIME'", "'INTERVAL_YEAR'", "'INTERVAL_DAY'", "'INTERVAL_COMPOUND'", "'UUID'", "'DECIMAL'", "'PRECISION_TIME'", "'PRECISION_TIMESTAMP'", "'PRECISION_TIMESTAMP_TZ'", "'FIXEDCHAR'", "'VARCHAR'", "'FIXEDBINARY'", @@ -61,15 +61,15 @@ func functestcaseparserParserInit() { "TimeLiteral", "DateLiteral", "PeriodPrefix", "TimePrefix", "YearSuffix", "MSuffix", "DaySuffix", "HourSuffix", "SecondSuffix", "FractionalSecondSuffix", "OAngleBracket", "CAngleBracket", "IntervalYearLiteral", "IntervalDayLiteral", - "IntervalCompoundLiteral", "NullLiteral", "StringLiteral", "ColumnName", - "LineComment", "BlockComment", "If", "Then", "Else", "Func", "Boolean", - "I8", "I16", "I32", "I64", "FP32", "FP64", "String", "Binary", "Timestamp", - "Timestamp_TZ", "Date", "Time", "Interval_Year", "Interval_Day", "Interval_Compound", - "UUID", "Decimal", "Precision_Time", "Precision_Timestamp", "Precision_Timestamp_TZ", - "FixedChar", "VarChar", "FixedBinary", "Struct", "NStruct", "List", - "Map", "UserDefined", "Bool", "Str", "VBin", "Ts", "TsTZ", "IYear", - "IDay", "ICompound", "Dec", "PT", "PTs", "PTsTZ", "FChar", "VChar", - "FBin", "Any", "AnyVar", "DoubleColon", "Plus", "Minus", "Asterisk", + "IntervalCompoundLiteral", "NullLiteral", "StringLiteral", "EnumType", + "ColumnName", "LineComment", "BlockComment", "If", "Then", "Else", "Func", + "Boolean", "I8", "I16", "I32", "I64", "FP32", "FP64", "String", "Binary", + "Timestamp", "Timestamp_TZ", "Date", "Time", "Interval_Year", "Interval_Day", + "Interval_Compound", "UUID", "Decimal", "Precision_Time", "Precision_Timestamp", + "Precision_Timestamp_TZ", "FixedChar", "VarChar", "FixedBinary", "Struct", + "NStruct", "List", "Map", "UserDefined", "Bool", "Str", "VBin", "Ts", + "TsTZ", "IYear", "IDay", "ICompound", "Dec", "PT", "PTs", "PTsTZ", "FChar", + "VChar", "FBin", "Any", "AnyVar", "DoubleColon", "Plus", "Minus", "Asterisk", "ForwardSlash", "Percent", "Eq", "Ne", "Gte", "Lte", "Gt", "Lt", "Bang", "OParen", "CParen", "OBracket", "CBracket", "Comma", "Colon", "QMark", "Hash", "Dot", "And", "Or", "Assign", "Arrow", "Number", "Identifier", @@ -85,7 +85,7 @@ func functestcaseparserParserInit() { "timestampArg", "timestampTzArg", "intervalYearArg", "intervalDayArg", "intervalCompoundArg", "fixedCharArg", "varCharArg", "fixedBinaryArg", "precisionTimeArg", "precisionTimestampArg", "precisionTimestampTZArg", - "listArg", "lambdaArg", "literalList", "listElement", "literalLambda", + "listArg", "lambdaArg", "enumArg", "literalList", "listElement", "literalLambda", "lambdaParameters", "lambdaBody", "dataType", "scalarType", "booleanType", "stringType", "binaryType", "intType", "floatType", "dateType", "timeType", "timestampType", "timestampTZType", "intervalYearType", "intervalDayType", @@ -97,7 +97,7 @@ func functestcaseparserParserInit() { } staticData.PredictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 1, 128, 739, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, + 4, 1, 129, 746, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, @@ -112,325 +112,328 @@ func functestcaseparserParserInit() { 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, - 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 1, 0, 1, 0, 4, - 0, 169, 8, 0, 11, 0, 12, 0, 170, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 5, 1, 178, - 8, 1, 10, 1, 12, 1, 181, 9, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, - 1, 3, 1, 3, 1, 3, 1, 3, 5, 3, 194, 8, 3, 10, 3, 12, 3, 197, 9, 3, 1, 4, - 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, - 1, 6, 1, 6, 3, 6, 214, 8, 6, 1, 6, 1, 6, 1, 6, 1, 7, 3, 7, 220, 8, 7, 1, - 7, 4, 7, 223, 8, 7, 11, 7, 12, 7, 224, 1, 7, 3, 7, 228, 8, 7, 1, 7, 4, - 7, 231, 8, 7, 11, 7, 12, 7, 232, 3, 7, 235, 8, 7, 1, 8, 1, 8, 1, 8, 5, - 8, 240, 8, 8, 10, 8, 12, 8, 243, 9, 8, 1, 9, 1, 9, 3, 9, 247, 8, 9, 1, + 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 1, + 0, 1, 0, 4, 0, 171, 8, 0, 11, 0, 12, 0, 172, 1, 0, 1, 0, 1, 1, 1, 1, 1, + 1, 5, 1, 180, 8, 1, 10, 1, 12, 1, 183, 9, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, + 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 5, 3, 196, 8, 3, 10, 3, 12, 3, 199, + 9, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, + 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 216, 8, 6, 1, 6, 1, 6, 1, 6, 1, 7, 3, 7, + 222, 8, 7, 1, 7, 4, 7, 225, 8, 7, 11, 7, 12, 7, 226, 1, 7, 3, 7, 230, 8, + 7, 1, 7, 4, 7, 233, 8, 7, 11, 7, 12, 7, 234, 3, 7, 237, 8, 7, 1, 8, 1, + 8, 1, 8, 5, 8, 242, 8, 8, 10, 8, 12, 8, 245, 9, 8, 1, 9, 1, 9, 3, 9, 249, + 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, - 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, - 10, 3, 10, 271, 8, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 278, 8, - 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 287, 8, 12, - 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 295, 8, 12, 1, 12, 1, - 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 304, 8, 12, 1, 13, 1, 13, - 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 312, 8, 13, 10, 13, 12, 13, 315, 9, - 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 5, 14, 325, - 8, 14, 10, 14, 12, 14, 328, 9, 14, 3, 14, 330, 8, 14, 1, 14, 1, 14, 1, - 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 5, 16, 342, 8, 16, - 10, 16, 12, 16, 345, 9, 16, 3, 16, 347, 8, 16, 1, 16, 1, 16, 1, 17, 1, - 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, - 362, 8, 17, 1, 18, 1, 18, 1, 18, 5, 18, 367, 8, 18, 10, 18, 12, 18, 370, - 9, 18, 1, 19, 1, 19, 1, 19, 5, 19, 375, 8, 19, 10, 19, 12, 19, 378, 9, - 19, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 384, 8, 20, 1, 21, 1, 21, 1, 21, - 1, 21, 3, 21, 390, 8, 21, 1, 22, 1, 22, 1, 22, 3, 22, 395, 8, 22, 1, 23, - 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, - 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, - 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, - 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, - 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, - 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, - 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, - 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, - 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 5, 45, 487, 8, 45, 10, 45, 12, 45, 490, - 9, 45, 3, 45, 492, 8, 45, 1, 45, 1, 45, 1, 46, 1, 46, 3, 46, 498, 8, 46, - 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, - 48, 4, 48, 511, 8, 48, 11, 48, 12, 48, 512, 1, 48, 3, 48, 516, 8, 48, 1, - 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 3, 50, 525, 8, 50, 1, 51, - 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, - 51, 3, 51, 539, 8, 51, 1, 51, 1, 51, 1, 51, 3, 51, 544, 8, 51, 3, 51, 546, - 8, 51, 1, 52, 1, 52, 3, 52, 550, 8, 52, 1, 53, 1, 53, 3, 53, 554, 8, 53, - 1, 54, 1, 54, 3, 54, 558, 8, 54, 1, 55, 1, 55, 3, 55, 562, 8, 55, 1, 56, - 1, 56, 3, 56, 566, 8, 56, 1, 57, 1, 57, 3, 57, 570, 8, 57, 1, 58, 1, 58, - 3, 58, 574, 8, 58, 1, 59, 1, 59, 3, 59, 578, 8, 59, 1, 60, 1, 60, 3, 60, - 582, 8, 60, 1, 61, 1, 61, 3, 61, 586, 8, 61, 1, 62, 1, 62, 3, 62, 590, - 8, 62, 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 596, 8, 62, 1, 63, 1, 63, 3, - 63, 600, 8, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 606, 8, 63, 1, 64, 1, - 64, 3, 64, 610, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 3, 65, - 618, 8, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 3, 66, 626, 8, 66, - 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 3, 67, 634, 8, 67, 1, 67, 1, - 67, 1, 67, 1, 67, 1, 67, 1, 67, 3, 67, 642, 8, 67, 1, 68, 1, 68, 3, 68, - 646, 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 3, 69, 654, 8, 69, - 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 3, 70, 662, 8, 70, 1, 70, 1, - 70, 1, 70, 1, 70, 1, 71, 1, 71, 3, 71, 670, 8, 71, 1, 71, 1, 71, 1, 71, - 1, 71, 1, 72, 1, 72, 3, 72, 678, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, - 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 5, 73, 691, 8, 73, 10, 73, - 12, 73, 694, 9, 73, 1, 73, 1, 73, 3, 73, 698, 8, 73, 1, 74, 1, 74, 1, 74, - 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 711, 8, - 74, 1, 75, 1, 75, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, - 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 5, 80, 728, 8, 80, 10, 80, 12, 80, 731, - 9, 80, 1, 81, 1, 81, 1, 82, 1, 82, 3, 82, 737, 8, 82, 1, 82, 0, 0, 83, - 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, - 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, - 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, - 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, - 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 0, - 23, 1, 0, 3, 4, 2, 0, 18, 18, 26, 26, 2, 0, 54, 54, 83, 83, 2, 0, 61, 61, - 84, 84, 2, 0, 62, 62, 85, 85, 1, 0, 55, 58, 1, 0, 59, 60, 2, 0, 63, 63, - 86, 86, 2, 0, 64, 64, 87, 87, 2, 0, 67, 67, 88, 88, 2, 0, 68, 68, 89, 89, - 2, 0, 69, 69, 90, 90, 2, 0, 75, 75, 95, 95, 2, 0, 76, 76, 96, 96, 2, 0, - 77, 77, 97, 97, 2, 0, 71, 71, 91, 91, 2, 0, 72, 72, 92, 92, 2, 0, 73, 73, - 93, 93, 2, 0, 74, 74, 94, 94, 1, 0, 10, 11, 3, 0, 12, 13, 21, 22, 127, - 127, 5, 0, 14, 20, 23, 23, 27, 27, 45, 45, 127, 127, 2, 0, 23, 23, 122, - 123, 770, 0, 166, 1, 0, 0, 0, 2, 174, 1, 0, 0, 0, 4, 182, 1, 0, 0, 0, 6, - 187, 1, 0, 0, 0, 8, 198, 1, 0, 0, 0, 10, 203, 1, 0, 0, 0, 12, 205, 1, 0, - 0, 0, 14, 234, 1, 0, 0, 0, 16, 236, 1, 0, 0, 0, 18, 246, 1, 0, 0, 0, 20, - 270, 1, 0, 0, 0, 22, 272, 1, 0, 0, 0, 24, 303, 1, 0, 0, 0, 26, 305, 1, - 0, 0, 0, 28, 320, 1, 0, 0, 0, 30, 333, 1, 0, 0, 0, 32, 337, 1, 0, 0, 0, - 34, 361, 1, 0, 0, 0, 36, 363, 1, 0, 0, 0, 38, 371, 1, 0, 0, 0, 40, 383, - 1, 0, 0, 0, 42, 389, 1, 0, 0, 0, 44, 394, 1, 0, 0, 0, 46, 396, 1, 0, 0, - 0, 48, 398, 1, 0, 0, 0, 50, 402, 1, 0, 0, 0, 52, 406, 1, 0, 0, 0, 54, 410, - 1, 0, 0, 0, 56, 414, 1, 0, 0, 0, 58, 418, 1, 0, 0, 0, 60, 422, 1, 0, 0, - 0, 62, 426, 1, 0, 0, 0, 64, 430, 1, 0, 0, 0, 66, 434, 1, 0, 0, 0, 68, 438, - 1, 0, 0, 0, 70, 442, 1, 0, 0, 0, 72, 446, 1, 0, 0, 0, 74, 450, 1, 0, 0, - 0, 76, 454, 1, 0, 0, 0, 78, 458, 1, 0, 0, 0, 80, 462, 1, 0, 0, 0, 82, 466, - 1, 0, 0, 0, 84, 470, 1, 0, 0, 0, 86, 474, 1, 0, 0, 0, 88, 478, 1, 0, 0, - 0, 90, 482, 1, 0, 0, 0, 92, 497, 1, 0, 0, 0, 94, 499, 1, 0, 0, 0, 96, 515, - 1, 0, 0, 0, 98, 517, 1, 0, 0, 0, 100, 524, 1, 0, 0, 0, 102, 545, 1, 0, - 0, 0, 104, 547, 1, 0, 0, 0, 106, 551, 1, 0, 0, 0, 108, 555, 1, 0, 0, 0, - 110, 559, 1, 0, 0, 0, 112, 563, 1, 0, 0, 0, 114, 567, 1, 0, 0, 0, 116, - 571, 1, 0, 0, 0, 118, 575, 1, 0, 0, 0, 120, 579, 1, 0, 0, 0, 122, 583, - 1, 0, 0, 0, 124, 587, 1, 0, 0, 0, 126, 597, 1, 0, 0, 0, 128, 607, 1, 0, - 0, 0, 130, 615, 1, 0, 0, 0, 132, 623, 1, 0, 0, 0, 134, 631, 1, 0, 0, 0, - 136, 643, 1, 0, 0, 0, 138, 651, 1, 0, 0, 0, 140, 659, 1, 0, 0, 0, 142, - 667, 1, 0, 0, 0, 144, 675, 1, 0, 0, 0, 146, 697, 1, 0, 0, 0, 148, 710, - 1, 0, 0, 0, 150, 712, 1, 0, 0, 0, 152, 714, 1, 0, 0, 0, 154, 716, 1, 0, - 0, 0, 156, 720, 1, 0, 0, 0, 158, 722, 1, 0, 0, 0, 160, 724, 1, 0, 0, 0, - 162, 732, 1, 0, 0, 0, 164, 736, 1, 0, 0, 0, 166, 168, 3, 2, 1, 0, 167, - 169, 3, 14, 7, 0, 168, 167, 1, 0, 0, 0, 169, 170, 1, 0, 0, 0, 170, 168, - 1, 0, 0, 0, 170, 171, 1, 0, 0, 0, 171, 172, 1, 0, 0, 0, 172, 173, 5, 0, - 0, 1, 173, 1, 1, 0, 0, 0, 174, 175, 3, 4, 2, 0, 175, 179, 3, 6, 3, 0, 176, - 178, 3, 8, 4, 0, 177, 176, 1, 0, 0, 0, 178, 181, 1, 0, 0, 0, 179, 177, - 1, 0, 0, 0, 179, 180, 1, 0, 0, 0, 180, 3, 1, 0, 0, 0, 181, 179, 1, 0, 0, - 0, 182, 183, 5, 2, 0, 0, 183, 184, 7, 0, 0, 0, 184, 185, 5, 118, 0, 0, - 185, 186, 5, 7, 0, 0, 186, 5, 1, 0, 0, 0, 187, 188, 5, 2, 0, 0, 188, 189, - 5, 5, 0, 0, 189, 190, 5, 118, 0, 0, 190, 195, 5, 46, 0, 0, 191, 192, 5, - 117, 0, 0, 192, 194, 5, 46, 0, 0, 193, 191, 1, 0, 0, 0, 194, 197, 1, 0, - 0, 0, 195, 193, 1, 0, 0, 0, 195, 196, 1, 0, 0, 0, 196, 7, 1, 0, 0, 0, 197, - 195, 1, 0, 0, 0, 198, 199, 5, 2, 0, 0, 199, 200, 5, 6, 0, 0, 200, 201, - 5, 118, 0, 0, 201, 202, 5, 46, 0, 0, 202, 9, 1, 0, 0, 0, 203, 204, 5, 8, - 0, 0, 204, 11, 1, 0, 0, 0, 205, 206, 3, 164, 82, 0, 206, 207, 5, 113, 0, - 0, 207, 208, 3, 16, 8, 0, 208, 213, 5, 114, 0, 0, 209, 210, 5, 115, 0, - 0, 210, 211, 3, 160, 80, 0, 211, 212, 5, 116, 0, 0, 212, 214, 1, 0, 0, - 0, 213, 209, 1, 0, 0, 0, 213, 214, 1, 0, 0, 0, 214, 215, 1, 0, 0, 0, 215, - 216, 5, 106, 0, 0, 216, 217, 3, 18, 9, 0, 217, 13, 1, 0, 0, 0, 218, 220, - 3, 10, 5, 0, 219, 218, 1, 0, 0, 0, 219, 220, 1, 0, 0, 0, 220, 222, 1, 0, - 0, 0, 221, 223, 3, 12, 6, 0, 222, 221, 1, 0, 0, 0, 223, 224, 1, 0, 0, 0, - 224, 222, 1, 0, 0, 0, 224, 225, 1, 0, 0, 0, 225, 235, 1, 0, 0, 0, 226, - 228, 3, 10, 5, 0, 227, 226, 1, 0, 0, 0, 227, 228, 1, 0, 0, 0, 228, 230, - 1, 0, 0, 0, 229, 231, 3, 22, 11, 0, 230, 229, 1, 0, 0, 0, 231, 232, 1, - 0, 0, 0, 232, 230, 1, 0, 0, 0, 232, 233, 1, 0, 0, 0, 233, 235, 1, 0, 0, - 0, 234, 219, 1, 0, 0, 0, 234, 227, 1, 0, 0, 0, 235, 15, 1, 0, 0, 0, 236, - 241, 3, 20, 10, 0, 237, 238, 5, 117, 0, 0, 238, 240, 3, 20, 10, 0, 239, - 237, 1, 0, 0, 0, 240, 243, 1, 0, 0, 0, 241, 239, 1, 0, 0, 0, 241, 242, - 1, 0, 0, 0, 242, 17, 1, 0, 0, 0, 243, 241, 1, 0, 0, 0, 244, 247, 3, 20, - 10, 0, 245, 247, 3, 152, 76, 0, 246, 244, 1, 0, 0, 0, 246, 245, 1, 0, 0, - 0, 247, 19, 1, 0, 0, 0, 248, 271, 3, 48, 24, 0, 249, 271, 3, 50, 25, 0, - 250, 271, 3, 52, 26, 0, 251, 271, 3, 56, 28, 0, 252, 271, 3, 58, 29, 0, - 253, 271, 3, 54, 27, 0, 254, 271, 3, 60, 30, 0, 255, 271, 3, 62, 31, 0, - 256, 271, 3, 64, 32, 0, 257, 271, 3, 66, 33, 0, 258, 271, 3, 68, 34, 0, - 259, 271, 3, 70, 35, 0, 260, 271, 3, 72, 36, 0, 261, 271, 3, 74, 37, 0, - 262, 271, 3, 76, 38, 0, 263, 271, 3, 78, 39, 0, 264, 271, 3, 80, 40, 0, - 265, 271, 3, 82, 41, 0, 266, 271, 3, 84, 42, 0, 267, 271, 3, 86, 43, 0, - 268, 271, 3, 88, 44, 0, 269, 271, 5, 127, 0, 0, 270, 248, 1, 0, 0, 0, 270, - 249, 1, 0, 0, 0, 270, 250, 1, 0, 0, 0, 270, 251, 1, 0, 0, 0, 270, 252, - 1, 0, 0, 0, 270, 253, 1, 0, 0, 0, 270, 254, 1, 0, 0, 0, 270, 255, 1, 0, - 0, 0, 270, 256, 1, 0, 0, 0, 270, 257, 1, 0, 0, 0, 270, 258, 1, 0, 0, 0, - 270, 259, 1, 0, 0, 0, 270, 260, 1, 0, 0, 0, 270, 261, 1, 0, 0, 0, 270, - 262, 1, 0, 0, 0, 270, 263, 1, 0, 0, 0, 270, 264, 1, 0, 0, 0, 270, 265, - 1, 0, 0, 0, 270, 266, 1, 0, 0, 0, 270, 267, 1, 0, 0, 0, 270, 268, 1, 0, - 0, 0, 270, 269, 1, 0, 0, 0, 271, 21, 1, 0, 0, 0, 272, 277, 3, 24, 12, 0, - 273, 274, 5, 115, 0, 0, 274, 275, 3, 160, 80, 0, 275, 276, 5, 116, 0, 0, - 276, 278, 1, 0, 0, 0, 277, 273, 1, 0, 0, 0, 277, 278, 1, 0, 0, 0, 278, - 279, 1, 0, 0, 0, 279, 280, 5, 106, 0, 0, 280, 281, 3, 18, 9, 0, 281, 23, - 1, 0, 0, 0, 282, 283, 3, 26, 13, 0, 283, 284, 3, 164, 82, 0, 284, 286, - 5, 113, 0, 0, 285, 287, 3, 36, 18, 0, 286, 285, 1, 0, 0, 0, 286, 287, 1, - 0, 0, 0, 287, 288, 1, 0, 0, 0, 288, 289, 5, 114, 0, 0, 289, 304, 1, 0, - 0, 0, 290, 291, 3, 28, 14, 0, 291, 292, 3, 164, 82, 0, 292, 294, 5, 113, - 0, 0, 293, 295, 3, 38, 19, 0, 294, 293, 1, 0, 0, 0, 294, 295, 1, 0, 0, - 0, 295, 296, 1, 0, 0, 0, 296, 297, 5, 114, 0, 0, 297, 304, 1, 0, 0, 0, - 298, 299, 3, 164, 82, 0, 299, 300, 5, 113, 0, 0, 300, 301, 3, 30, 15, 0, - 301, 302, 5, 114, 0, 0, 302, 304, 1, 0, 0, 0, 303, 282, 1, 0, 0, 0, 303, - 290, 1, 0, 0, 0, 303, 298, 1, 0, 0, 0, 304, 25, 1, 0, 0, 0, 305, 306, 5, - 9, 0, 0, 306, 307, 5, 127, 0, 0, 307, 308, 5, 113, 0, 0, 308, 313, 3, 100, - 50, 0, 309, 310, 5, 117, 0, 0, 310, 312, 3, 100, 50, 0, 311, 309, 1, 0, - 0, 0, 312, 315, 1, 0, 0, 0, 313, 311, 1, 0, 0, 0, 313, 314, 1, 0, 0, 0, - 314, 316, 1, 0, 0, 0, 315, 313, 1, 0, 0, 0, 316, 317, 5, 114, 0, 0, 317, - 318, 5, 106, 0, 0, 318, 319, 3, 28, 14, 0, 319, 27, 1, 0, 0, 0, 320, 329, - 5, 113, 0, 0, 321, 326, 3, 32, 16, 0, 322, 323, 5, 117, 0, 0, 323, 325, - 3, 32, 16, 0, 324, 322, 1, 0, 0, 0, 325, 328, 1, 0, 0, 0, 326, 324, 1, - 0, 0, 0, 326, 327, 1, 0, 0, 0, 327, 330, 1, 0, 0, 0, 328, 326, 1, 0, 0, - 0, 329, 321, 1, 0, 0, 0, 329, 330, 1, 0, 0, 0, 330, 331, 1, 0, 0, 0, 331, - 332, 5, 114, 0, 0, 332, 29, 1, 0, 0, 0, 333, 334, 3, 32, 16, 0, 334, 335, - 5, 100, 0, 0, 335, 336, 3, 100, 50, 0, 336, 31, 1, 0, 0, 0, 337, 346, 5, - 113, 0, 0, 338, 343, 3, 34, 17, 0, 339, 340, 5, 117, 0, 0, 340, 342, 3, - 34, 17, 0, 341, 339, 1, 0, 0, 0, 342, 345, 1, 0, 0, 0, 343, 341, 1, 0, - 0, 0, 343, 344, 1, 0, 0, 0, 344, 347, 1, 0, 0, 0, 345, 343, 1, 0, 0, 0, - 346, 338, 1, 0, 0, 0, 346, 347, 1, 0, 0, 0, 347, 348, 1, 0, 0, 0, 348, - 349, 5, 114, 0, 0, 349, 33, 1, 0, 0, 0, 350, 362, 5, 45, 0, 0, 351, 362, - 3, 44, 22, 0, 352, 362, 5, 27, 0, 0, 353, 362, 5, 46, 0, 0, 354, 362, 5, - 31, 0, 0, 355, 362, 5, 30, 0, 0, 356, 362, 5, 29, 0, 0, 357, 362, 5, 28, - 0, 0, 358, 362, 5, 42, 0, 0, 359, 362, 5, 43, 0, 0, 360, 362, 5, 44, 0, - 0, 361, 350, 1, 0, 0, 0, 361, 351, 1, 0, 0, 0, 361, 352, 1, 0, 0, 0, 361, - 353, 1, 0, 0, 0, 361, 354, 1, 0, 0, 0, 361, 355, 1, 0, 0, 0, 361, 356, - 1, 0, 0, 0, 361, 357, 1, 0, 0, 0, 361, 358, 1, 0, 0, 0, 361, 359, 1, 0, - 0, 0, 361, 360, 1, 0, 0, 0, 362, 35, 1, 0, 0, 0, 363, 368, 3, 40, 20, 0, - 364, 365, 5, 117, 0, 0, 365, 367, 3, 40, 20, 0, 366, 364, 1, 0, 0, 0, 367, - 370, 1, 0, 0, 0, 368, 366, 1, 0, 0, 0, 368, 369, 1, 0, 0, 0, 369, 37, 1, - 0, 0, 0, 370, 368, 1, 0, 0, 0, 371, 376, 3, 42, 21, 0, 372, 373, 5, 117, - 0, 0, 373, 375, 3, 42, 21, 0, 374, 372, 1, 0, 0, 0, 375, 378, 1, 0, 0, - 0, 376, 374, 1, 0, 0, 0, 376, 377, 1, 0, 0, 0, 377, 39, 1, 0, 0, 0, 378, - 376, 1, 0, 0, 0, 379, 380, 5, 127, 0, 0, 380, 381, 5, 121, 0, 0, 381, 384, - 5, 47, 0, 0, 382, 384, 3, 20, 10, 0, 383, 379, 1, 0, 0, 0, 383, 382, 1, - 0, 0, 0, 384, 41, 1, 0, 0, 0, 385, 386, 5, 47, 0, 0, 386, 387, 5, 100, - 0, 0, 387, 390, 3, 100, 50, 0, 388, 390, 3, 20, 10, 0, 389, 385, 1, 0, - 0, 0, 389, 388, 1, 0, 0, 0, 390, 43, 1, 0, 0, 0, 391, 395, 5, 25, 0, 0, - 392, 395, 5, 24, 0, 0, 393, 395, 3, 46, 23, 0, 394, 391, 1, 0, 0, 0, 394, - 392, 1, 0, 0, 0, 394, 393, 1, 0, 0, 0, 395, 45, 1, 0, 0, 0, 396, 397, 7, - 1, 0, 0, 397, 47, 1, 0, 0, 0, 398, 399, 5, 45, 0, 0, 399, 400, 5, 100, - 0, 0, 400, 401, 3, 100, 50, 0, 401, 49, 1, 0, 0, 0, 402, 403, 5, 24, 0, - 0, 403, 404, 5, 100, 0, 0, 404, 405, 3, 110, 55, 0, 405, 51, 1, 0, 0, 0, - 406, 407, 3, 44, 22, 0, 407, 408, 5, 100, 0, 0, 408, 409, 3, 112, 56, 0, - 409, 53, 1, 0, 0, 0, 410, 411, 3, 44, 22, 0, 411, 412, 5, 100, 0, 0, 412, - 413, 3, 134, 67, 0, 413, 55, 1, 0, 0, 0, 414, 415, 5, 27, 0, 0, 415, 416, - 5, 100, 0, 0, 416, 417, 3, 104, 52, 0, 417, 57, 1, 0, 0, 0, 418, 419, 5, - 46, 0, 0, 419, 420, 5, 100, 0, 0, 420, 421, 3, 106, 53, 0, 421, 59, 1, - 0, 0, 0, 422, 423, 5, 31, 0, 0, 423, 424, 5, 100, 0, 0, 424, 425, 3, 114, - 57, 0, 425, 61, 1, 0, 0, 0, 426, 427, 5, 30, 0, 0, 427, 428, 5, 100, 0, - 0, 428, 429, 3, 116, 58, 0, 429, 63, 1, 0, 0, 0, 430, 431, 5, 29, 0, 0, - 431, 432, 5, 100, 0, 0, 432, 433, 3, 118, 59, 0, 433, 65, 1, 0, 0, 0, 434, - 435, 5, 28, 0, 0, 435, 436, 5, 100, 0, 0, 436, 437, 3, 120, 60, 0, 437, - 67, 1, 0, 0, 0, 438, 439, 5, 42, 0, 0, 439, 440, 5, 100, 0, 0, 440, 441, - 3, 122, 61, 0, 441, 69, 1, 0, 0, 0, 442, 443, 5, 43, 0, 0, 443, 444, 5, - 100, 0, 0, 444, 445, 3, 124, 62, 0, 445, 71, 1, 0, 0, 0, 446, 447, 5, 44, - 0, 0, 447, 448, 5, 100, 0, 0, 448, 449, 3, 126, 63, 0, 449, 73, 1, 0, 0, - 0, 450, 451, 5, 46, 0, 0, 451, 452, 5, 100, 0, 0, 452, 453, 3, 128, 64, - 0, 453, 75, 1, 0, 0, 0, 454, 455, 5, 46, 0, 0, 455, 456, 5, 100, 0, 0, - 456, 457, 3, 130, 65, 0, 457, 77, 1, 0, 0, 0, 458, 459, 5, 46, 0, 0, 459, - 460, 5, 100, 0, 0, 460, 461, 3, 132, 66, 0, 461, 79, 1, 0, 0, 0, 462, 463, - 5, 30, 0, 0, 463, 464, 5, 100, 0, 0, 464, 465, 3, 136, 68, 0, 465, 81, - 1, 0, 0, 0, 466, 467, 5, 29, 0, 0, 467, 468, 5, 100, 0, 0, 468, 469, 3, - 138, 69, 0, 469, 83, 1, 0, 0, 0, 470, 471, 5, 28, 0, 0, 471, 472, 5, 100, - 0, 0, 472, 473, 3, 140, 70, 0, 473, 85, 1, 0, 0, 0, 474, 475, 3, 90, 45, - 0, 475, 476, 5, 100, 0, 0, 476, 477, 3, 142, 71, 0, 477, 87, 1, 0, 0, 0, - 478, 479, 3, 94, 47, 0, 479, 480, 5, 100, 0, 0, 480, 481, 3, 144, 72, 0, - 481, 89, 1, 0, 0, 0, 482, 491, 5, 115, 0, 0, 483, 488, 3, 92, 46, 0, 484, - 485, 5, 117, 0, 0, 485, 487, 3, 92, 46, 0, 486, 484, 1, 0, 0, 0, 487, 490, - 1, 0, 0, 0, 488, 486, 1, 0, 0, 0, 488, 489, 1, 0, 0, 0, 489, 492, 1, 0, - 0, 0, 490, 488, 1, 0, 0, 0, 491, 483, 1, 0, 0, 0, 491, 492, 1, 0, 0, 0, - 492, 493, 1, 0, 0, 0, 493, 494, 5, 116, 0, 0, 494, 91, 1, 0, 0, 0, 495, - 498, 3, 34, 17, 0, 496, 498, 3, 90, 45, 0, 497, 495, 1, 0, 0, 0, 497, 496, - 1, 0, 0, 0, 498, 93, 1, 0, 0, 0, 499, 500, 5, 113, 0, 0, 500, 501, 3, 96, - 48, 0, 501, 502, 5, 125, 0, 0, 502, 503, 3, 98, 49, 0, 503, 504, 5, 114, - 0, 0, 504, 95, 1, 0, 0, 0, 505, 516, 5, 127, 0, 0, 506, 507, 5, 113, 0, - 0, 507, 510, 5, 127, 0, 0, 508, 509, 5, 117, 0, 0, 509, 511, 5, 127, 0, - 0, 510, 508, 1, 0, 0, 0, 511, 512, 1, 0, 0, 0, 512, 510, 1, 0, 0, 0, 512, - 513, 1, 0, 0, 0, 513, 514, 1, 0, 0, 0, 514, 516, 5, 114, 0, 0, 515, 505, - 1, 0, 0, 0, 515, 506, 1, 0, 0, 0, 516, 97, 1, 0, 0, 0, 517, 518, 3, 164, - 82, 0, 518, 519, 5, 113, 0, 0, 519, 520, 3, 16, 8, 0, 520, 521, 5, 114, - 0, 0, 521, 99, 1, 0, 0, 0, 522, 525, 3, 102, 51, 0, 523, 525, 3, 148, 74, - 0, 524, 522, 1, 0, 0, 0, 524, 523, 1, 0, 0, 0, 525, 101, 1, 0, 0, 0, 526, - 546, 3, 104, 52, 0, 527, 546, 3, 110, 55, 0, 528, 546, 3, 112, 56, 0, 529, - 546, 3, 106, 53, 0, 530, 546, 3, 108, 54, 0, 531, 546, 3, 118, 59, 0, 532, - 546, 3, 120, 60, 0, 533, 546, 3, 114, 57, 0, 534, 546, 3, 116, 58, 0, 535, - 546, 3, 122, 61, 0, 536, 538, 5, 70, 0, 0, 537, 539, 5, 119, 0, 0, 538, - 537, 1, 0, 0, 0, 538, 539, 1, 0, 0, 0, 539, 546, 1, 0, 0, 0, 540, 541, - 5, 82, 0, 0, 541, 543, 5, 127, 0, 0, 542, 544, 5, 119, 0, 0, 543, 542, - 1, 0, 0, 0, 543, 544, 1, 0, 0, 0, 544, 546, 1, 0, 0, 0, 545, 526, 1, 0, - 0, 0, 545, 527, 1, 0, 0, 0, 545, 528, 1, 0, 0, 0, 545, 529, 1, 0, 0, 0, - 545, 530, 1, 0, 0, 0, 545, 531, 1, 0, 0, 0, 545, 532, 1, 0, 0, 0, 545, - 533, 1, 0, 0, 0, 545, 534, 1, 0, 0, 0, 545, 535, 1, 0, 0, 0, 545, 536, - 1, 0, 0, 0, 545, 540, 1, 0, 0, 0, 546, 103, 1, 0, 0, 0, 547, 549, 7, 2, - 0, 0, 548, 550, 5, 119, 0, 0, 549, 548, 1, 0, 0, 0, 549, 550, 1, 0, 0, - 0, 550, 105, 1, 0, 0, 0, 551, 553, 7, 3, 0, 0, 552, 554, 5, 119, 0, 0, - 553, 552, 1, 0, 0, 0, 553, 554, 1, 0, 0, 0, 554, 107, 1, 0, 0, 0, 555, - 557, 7, 4, 0, 0, 556, 558, 5, 119, 0, 0, 557, 556, 1, 0, 0, 0, 557, 558, - 1, 0, 0, 0, 558, 109, 1, 0, 0, 0, 559, 561, 7, 5, 0, 0, 560, 562, 5, 119, - 0, 0, 561, 560, 1, 0, 0, 0, 561, 562, 1, 0, 0, 0, 562, 111, 1, 0, 0, 0, - 563, 565, 7, 6, 0, 0, 564, 566, 5, 119, 0, 0, 565, 564, 1, 0, 0, 0, 565, - 566, 1, 0, 0, 0, 566, 113, 1, 0, 0, 0, 567, 569, 5, 65, 0, 0, 568, 570, - 5, 119, 0, 0, 569, 568, 1, 0, 0, 0, 569, 570, 1, 0, 0, 0, 570, 115, 1, - 0, 0, 0, 571, 573, 5, 66, 0, 0, 572, 574, 5, 119, 0, 0, 573, 572, 1, 0, - 0, 0, 573, 574, 1, 0, 0, 0, 574, 117, 1, 0, 0, 0, 575, 577, 7, 7, 0, 0, - 576, 578, 5, 119, 0, 0, 577, 576, 1, 0, 0, 0, 577, 578, 1, 0, 0, 0, 578, - 119, 1, 0, 0, 0, 579, 581, 7, 8, 0, 0, 580, 582, 5, 119, 0, 0, 581, 580, - 1, 0, 0, 0, 581, 582, 1, 0, 0, 0, 582, 121, 1, 0, 0, 0, 583, 585, 7, 9, - 0, 0, 584, 586, 5, 119, 0, 0, 585, 584, 1, 0, 0, 0, 585, 586, 1, 0, 0, - 0, 586, 123, 1, 0, 0, 0, 587, 589, 7, 10, 0, 0, 588, 590, 5, 119, 0, 0, - 589, 588, 1, 0, 0, 0, 589, 590, 1, 0, 0, 0, 590, 595, 1, 0, 0, 0, 591, - 592, 5, 40, 0, 0, 592, 593, 3, 150, 75, 0, 593, 594, 5, 41, 0, 0, 594, - 596, 1, 0, 0, 0, 595, 591, 1, 0, 0, 0, 595, 596, 1, 0, 0, 0, 596, 125, - 1, 0, 0, 0, 597, 599, 7, 11, 0, 0, 598, 600, 5, 119, 0, 0, 599, 598, 1, - 0, 0, 0, 599, 600, 1, 0, 0, 0, 600, 605, 1, 0, 0, 0, 601, 602, 5, 40, 0, - 0, 602, 603, 3, 150, 75, 0, 603, 604, 5, 41, 0, 0, 604, 606, 1, 0, 0, 0, - 605, 601, 1, 0, 0, 0, 605, 606, 1, 0, 0, 0, 606, 127, 1, 0, 0, 0, 607, - 609, 7, 12, 0, 0, 608, 610, 5, 119, 0, 0, 609, 608, 1, 0, 0, 0, 609, 610, - 1, 0, 0, 0, 610, 611, 1, 0, 0, 0, 611, 612, 5, 40, 0, 0, 612, 613, 3, 150, - 75, 0, 613, 614, 5, 41, 0, 0, 614, 129, 1, 0, 0, 0, 615, 617, 7, 13, 0, - 0, 616, 618, 5, 119, 0, 0, 617, 616, 1, 0, 0, 0, 617, 618, 1, 0, 0, 0, - 618, 619, 1, 0, 0, 0, 619, 620, 5, 40, 0, 0, 620, 621, 3, 150, 75, 0, 621, - 622, 5, 41, 0, 0, 622, 131, 1, 0, 0, 0, 623, 625, 7, 14, 0, 0, 624, 626, - 5, 119, 0, 0, 625, 624, 1, 0, 0, 0, 625, 626, 1, 0, 0, 0, 626, 627, 1, - 0, 0, 0, 627, 628, 5, 40, 0, 0, 628, 629, 3, 150, 75, 0, 629, 630, 5, 41, - 0, 0, 630, 133, 1, 0, 0, 0, 631, 633, 7, 15, 0, 0, 632, 634, 5, 119, 0, - 0, 633, 632, 1, 0, 0, 0, 633, 634, 1, 0, 0, 0, 634, 641, 1, 0, 0, 0, 635, - 636, 5, 40, 0, 0, 636, 637, 3, 150, 75, 0, 637, 638, 5, 117, 0, 0, 638, - 639, 3, 150, 75, 0, 639, 640, 5, 41, 0, 0, 640, 642, 1, 0, 0, 0, 641, 635, - 1, 0, 0, 0, 641, 642, 1, 0, 0, 0, 642, 135, 1, 0, 0, 0, 643, 645, 7, 16, - 0, 0, 644, 646, 5, 119, 0, 0, 645, 644, 1, 0, 0, 0, 645, 646, 1, 0, 0, - 0, 646, 647, 1, 0, 0, 0, 647, 648, 5, 40, 0, 0, 648, 649, 3, 150, 75, 0, - 649, 650, 5, 41, 0, 0, 650, 137, 1, 0, 0, 0, 651, 653, 7, 17, 0, 0, 652, - 654, 5, 119, 0, 0, 653, 652, 1, 0, 0, 0, 653, 654, 1, 0, 0, 0, 654, 655, - 1, 0, 0, 0, 655, 656, 5, 40, 0, 0, 656, 657, 3, 150, 75, 0, 657, 658, 5, - 41, 0, 0, 658, 139, 1, 0, 0, 0, 659, 661, 7, 18, 0, 0, 660, 662, 5, 119, - 0, 0, 661, 660, 1, 0, 0, 0, 661, 662, 1, 0, 0, 0, 662, 663, 1, 0, 0, 0, - 663, 664, 5, 40, 0, 0, 664, 665, 3, 150, 75, 0, 665, 666, 5, 41, 0, 0, - 666, 141, 1, 0, 0, 0, 667, 669, 5, 80, 0, 0, 668, 670, 5, 119, 0, 0, 669, - 668, 1, 0, 0, 0, 669, 670, 1, 0, 0, 0, 670, 671, 1, 0, 0, 0, 671, 672, - 5, 40, 0, 0, 672, 673, 3, 100, 50, 0, 673, 674, 5, 41, 0, 0, 674, 143, - 1, 0, 0, 0, 675, 677, 5, 53, 0, 0, 676, 678, 5, 119, 0, 0, 677, 676, 1, - 0, 0, 0, 677, 678, 1, 0, 0, 0, 678, 679, 1, 0, 0, 0, 679, 680, 5, 40, 0, - 0, 680, 681, 3, 146, 73, 0, 681, 682, 5, 125, 0, 0, 682, 683, 3, 100, 50, - 0, 683, 684, 5, 41, 0, 0, 684, 145, 1, 0, 0, 0, 685, 698, 3, 100, 50, 0, - 686, 687, 5, 113, 0, 0, 687, 692, 3, 100, 50, 0, 688, 689, 5, 117, 0, 0, - 689, 691, 3, 100, 50, 0, 690, 688, 1, 0, 0, 0, 691, 694, 1, 0, 0, 0, 692, - 690, 1, 0, 0, 0, 692, 693, 1, 0, 0, 0, 693, 695, 1, 0, 0, 0, 694, 692, - 1, 0, 0, 0, 695, 696, 5, 114, 0, 0, 696, 698, 1, 0, 0, 0, 697, 685, 1, - 0, 0, 0, 697, 686, 1, 0, 0, 0, 698, 147, 1, 0, 0, 0, 699, 711, 3, 128, - 64, 0, 700, 711, 3, 130, 65, 0, 701, 711, 3, 132, 66, 0, 702, 711, 3, 134, - 67, 0, 703, 711, 3, 124, 62, 0, 704, 711, 3, 126, 63, 0, 705, 711, 3, 136, - 68, 0, 706, 711, 3, 138, 69, 0, 707, 711, 3, 140, 70, 0, 708, 711, 3, 142, - 71, 0, 709, 711, 3, 144, 72, 0, 710, 699, 1, 0, 0, 0, 710, 700, 1, 0, 0, - 0, 710, 701, 1, 0, 0, 0, 710, 702, 1, 0, 0, 0, 710, 703, 1, 0, 0, 0, 710, - 704, 1, 0, 0, 0, 710, 705, 1, 0, 0, 0, 710, 706, 1, 0, 0, 0, 710, 707, - 1, 0, 0, 0, 710, 708, 1, 0, 0, 0, 710, 709, 1, 0, 0, 0, 711, 149, 1, 0, - 0, 0, 712, 713, 5, 24, 0, 0, 713, 151, 1, 0, 0, 0, 714, 715, 7, 19, 0, - 0, 715, 153, 1, 0, 0, 0, 716, 717, 3, 156, 78, 0, 717, 718, 5, 118, 0, - 0, 718, 719, 3, 158, 79, 0, 719, 155, 1, 0, 0, 0, 720, 721, 7, 20, 0, 0, - 721, 157, 1, 0, 0, 0, 722, 723, 7, 21, 0, 0, 723, 159, 1, 0, 0, 0, 724, - 729, 3, 154, 77, 0, 725, 726, 5, 117, 0, 0, 726, 728, 3, 154, 77, 0, 727, - 725, 1, 0, 0, 0, 728, 731, 1, 0, 0, 0, 729, 727, 1, 0, 0, 0, 729, 730, - 1, 0, 0, 0, 730, 161, 1, 0, 0, 0, 731, 729, 1, 0, 0, 0, 732, 733, 7, 22, - 0, 0, 733, 163, 1, 0, 0, 0, 734, 737, 3, 162, 81, 0, 735, 737, 5, 127, - 0, 0, 736, 734, 1, 0, 0, 0, 736, 735, 1, 0, 0, 0, 737, 165, 1, 0, 0, 0, - 65, 170, 179, 195, 213, 219, 224, 227, 232, 234, 241, 246, 270, 277, 286, - 294, 303, 313, 326, 329, 343, 346, 361, 368, 376, 383, 389, 394, 488, 491, - 497, 512, 515, 524, 538, 543, 545, 549, 553, 557, 561, 565, 569, 573, 577, - 581, 585, 589, 595, 599, 605, 609, 617, 625, 633, 641, 645, 653, 661, 669, - 677, 692, 697, 710, 729, 736, + 1, 10, 1, 10, 1, 10, 3, 10, 274, 8, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, + 11, 3, 11, 281, 8, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, + 3, 12, 290, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 298, + 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 307, 8, + 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 315, 8, 13, 10, 13, + 12, 13, 318, 9, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, + 14, 5, 14, 328, 8, 14, 10, 14, 12, 14, 331, 9, 14, 3, 14, 333, 8, 14, 1, + 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 5, 16, + 345, 8, 16, 10, 16, 12, 16, 348, 9, 16, 3, 16, 350, 8, 16, 1, 16, 1, 16, + 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, + 17, 3, 17, 365, 8, 17, 1, 18, 1, 18, 1, 18, 5, 18, 370, 8, 18, 10, 18, + 12, 18, 373, 9, 18, 1, 19, 1, 19, 1, 19, 5, 19, 378, 8, 19, 10, 19, 12, + 19, 381, 9, 19, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 387, 8, 20, 1, 21, 1, + 21, 1, 21, 1, 21, 3, 21, 393, 8, 21, 1, 22, 1, 22, 1, 22, 3, 22, 398, 8, + 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, + 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, + 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, + 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, + 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, + 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, + 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, + 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, + 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, + 5, 46, 494, 8, 46, 10, 46, 12, 46, 497, 9, 46, 3, 46, 499, 8, 46, 1, 46, + 1, 46, 1, 47, 1, 47, 3, 47, 505, 8, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, + 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 4, 49, 518, 8, 49, 11, 49, + 12, 49, 519, 1, 49, 3, 49, 523, 8, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, + 1, 51, 1, 51, 3, 51, 532, 8, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, + 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 546, 8, 52, 1, 52, + 1, 52, 1, 52, 3, 52, 551, 8, 52, 3, 52, 553, 8, 52, 1, 53, 1, 53, 3, 53, + 557, 8, 53, 1, 54, 1, 54, 3, 54, 561, 8, 54, 1, 55, 1, 55, 3, 55, 565, + 8, 55, 1, 56, 1, 56, 3, 56, 569, 8, 56, 1, 57, 1, 57, 3, 57, 573, 8, 57, + 1, 58, 1, 58, 3, 58, 577, 8, 58, 1, 59, 1, 59, 3, 59, 581, 8, 59, 1, 60, + 1, 60, 3, 60, 585, 8, 60, 1, 61, 1, 61, 3, 61, 589, 8, 61, 1, 62, 1, 62, + 3, 62, 593, 8, 62, 1, 63, 1, 63, 3, 63, 597, 8, 63, 1, 63, 1, 63, 1, 63, + 1, 63, 3, 63, 603, 8, 63, 1, 64, 1, 64, 3, 64, 607, 8, 64, 1, 64, 1, 64, + 1, 64, 1, 64, 3, 64, 613, 8, 64, 1, 65, 1, 65, 3, 65, 617, 8, 65, 1, 65, + 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 3, 66, 625, 8, 66, 1, 66, 1, 66, 1, + 66, 1, 66, 1, 67, 1, 67, 3, 67, 633, 8, 67, 1, 67, 1, 67, 1, 67, 1, 67, + 1, 68, 1, 68, 3, 68, 641, 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, + 68, 3, 68, 649, 8, 68, 1, 69, 1, 69, 3, 69, 653, 8, 69, 1, 69, 1, 69, 1, + 69, 1, 69, 1, 70, 1, 70, 3, 70, 661, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, + 1, 71, 1, 71, 3, 71, 669, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, + 72, 3, 72, 677, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 3, 73, + 685, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, + 74, 1, 74, 1, 74, 5, 74, 698, 8, 74, 10, 74, 12, 74, 701, 9, 74, 1, 74, + 1, 74, 3, 74, 705, 8, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, + 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 718, 8, 75, 1, 76, 1, 76, 1, 77, + 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 80, 1, 80, 1, 81, 1, + 81, 1, 81, 5, 81, 735, 8, 81, 10, 81, 12, 81, 738, 9, 81, 1, 82, 1, 82, + 1, 83, 1, 83, 3, 83, 744, 8, 83, 1, 83, 0, 0, 84, 0, 2, 4, 6, 8, 10, 12, + 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, + 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, + 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, + 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, + 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 0, 23, 1, 0, 3, 4, 2, + 0, 18, 18, 26, 26, 2, 0, 55, 55, 84, 84, 2, 0, 62, 62, 85, 85, 2, 0, 63, + 63, 86, 86, 1, 0, 56, 59, 1, 0, 60, 61, 2, 0, 64, 64, 87, 87, 2, 0, 65, + 65, 88, 88, 2, 0, 68, 68, 89, 89, 2, 0, 69, 69, 90, 90, 2, 0, 70, 70, 91, + 91, 2, 0, 76, 76, 96, 96, 2, 0, 77, 77, 97, 97, 2, 0, 78, 78, 98, 98, 2, + 0, 72, 72, 92, 92, 2, 0, 73, 73, 93, 93, 2, 0, 74, 74, 94, 94, 2, 0, 75, + 75, 95, 95, 1, 0, 10, 11, 3, 0, 12, 13, 21, 22, 128, 128, 5, 0, 14, 20, + 23, 23, 27, 27, 45, 45, 128, 128, 2, 0, 23, 23, 123, 124, 777, 0, 168, + 1, 0, 0, 0, 2, 176, 1, 0, 0, 0, 4, 184, 1, 0, 0, 0, 6, 189, 1, 0, 0, 0, + 8, 200, 1, 0, 0, 0, 10, 205, 1, 0, 0, 0, 12, 207, 1, 0, 0, 0, 14, 236, + 1, 0, 0, 0, 16, 238, 1, 0, 0, 0, 18, 248, 1, 0, 0, 0, 20, 273, 1, 0, 0, + 0, 22, 275, 1, 0, 0, 0, 24, 306, 1, 0, 0, 0, 26, 308, 1, 0, 0, 0, 28, 323, + 1, 0, 0, 0, 30, 336, 1, 0, 0, 0, 32, 340, 1, 0, 0, 0, 34, 364, 1, 0, 0, + 0, 36, 366, 1, 0, 0, 0, 38, 374, 1, 0, 0, 0, 40, 386, 1, 0, 0, 0, 42, 392, + 1, 0, 0, 0, 44, 397, 1, 0, 0, 0, 46, 399, 1, 0, 0, 0, 48, 401, 1, 0, 0, + 0, 50, 405, 1, 0, 0, 0, 52, 409, 1, 0, 0, 0, 54, 413, 1, 0, 0, 0, 56, 417, + 1, 0, 0, 0, 58, 421, 1, 0, 0, 0, 60, 425, 1, 0, 0, 0, 62, 429, 1, 0, 0, + 0, 64, 433, 1, 0, 0, 0, 66, 437, 1, 0, 0, 0, 68, 441, 1, 0, 0, 0, 70, 445, + 1, 0, 0, 0, 72, 449, 1, 0, 0, 0, 74, 453, 1, 0, 0, 0, 76, 457, 1, 0, 0, + 0, 78, 461, 1, 0, 0, 0, 80, 465, 1, 0, 0, 0, 82, 469, 1, 0, 0, 0, 84, 473, + 1, 0, 0, 0, 86, 477, 1, 0, 0, 0, 88, 481, 1, 0, 0, 0, 90, 485, 1, 0, 0, + 0, 92, 489, 1, 0, 0, 0, 94, 504, 1, 0, 0, 0, 96, 506, 1, 0, 0, 0, 98, 522, + 1, 0, 0, 0, 100, 524, 1, 0, 0, 0, 102, 531, 1, 0, 0, 0, 104, 552, 1, 0, + 0, 0, 106, 554, 1, 0, 0, 0, 108, 558, 1, 0, 0, 0, 110, 562, 1, 0, 0, 0, + 112, 566, 1, 0, 0, 0, 114, 570, 1, 0, 0, 0, 116, 574, 1, 0, 0, 0, 118, + 578, 1, 0, 0, 0, 120, 582, 1, 0, 0, 0, 122, 586, 1, 0, 0, 0, 124, 590, + 1, 0, 0, 0, 126, 594, 1, 0, 0, 0, 128, 604, 1, 0, 0, 0, 130, 614, 1, 0, + 0, 0, 132, 622, 1, 0, 0, 0, 134, 630, 1, 0, 0, 0, 136, 638, 1, 0, 0, 0, + 138, 650, 1, 0, 0, 0, 140, 658, 1, 0, 0, 0, 142, 666, 1, 0, 0, 0, 144, + 674, 1, 0, 0, 0, 146, 682, 1, 0, 0, 0, 148, 704, 1, 0, 0, 0, 150, 717, + 1, 0, 0, 0, 152, 719, 1, 0, 0, 0, 154, 721, 1, 0, 0, 0, 156, 723, 1, 0, + 0, 0, 158, 727, 1, 0, 0, 0, 160, 729, 1, 0, 0, 0, 162, 731, 1, 0, 0, 0, + 164, 739, 1, 0, 0, 0, 166, 743, 1, 0, 0, 0, 168, 170, 3, 2, 1, 0, 169, + 171, 3, 14, 7, 0, 170, 169, 1, 0, 0, 0, 171, 172, 1, 0, 0, 0, 172, 170, + 1, 0, 0, 0, 172, 173, 1, 0, 0, 0, 173, 174, 1, 0, 0, 0, 174, 175, 5, 0, + 0, 1, 175, 1, 1, 0, 0, 0, 176, 177, 3, 4, 2, 0, 177, 181, 3, 6, 3, 0, 178, + 180, 3, 8, 4, 0, 179, 178, 1, 0, 0, 0, 180, 183, 1, 0, 0, 0, 181, 179, + 1, 0, 0, 0, 181, 182, 1, 0, 0, 0, 182, 3, 1, 0, 0, 0, 183, 181, 1, 0, 0, + 0, 184, 185, 5, 2, 0, 0, 185, 186, 7, 0, 0, 0, 186, 187, 5, 119, 0, 0, + 187, 188, 5, 7, 0, 0, 188, 5, 1, 0, 0, 0, 189, 190, 5, 2, 0, 0, 190, 191, + 5, 5, 0, 0, 191, 192, 5, 119, 0, 0, 192, 197, 5, 46, 0, 0, 193, 194, 5, + 118, 0, 0, 194, 196, 5, 46, 0, 0, 195, 193, 1, 0, 0, 0, 196, 199, 1, 0, + 0, 0, 197, 195, 1, 0, 0, 0, 197, 198, 1, 0, 0, 0, 198, 7, 1, 0, 0, 0, 199, + 197, 1, 0, 0, 0, 200, 201, 5, 2, 0, 0, 201, 202, 5, 6, 0, 0, 202, 203, + 5, 119, 0, 0, 203, 204, 5, 46, 0, 0, 204, 9, 1, 0, 0, 0, 205, 206, 5, 8, + 0, 0, 206, 11, 1, 0, 0, 0, 207, 208, 3, 166, 83, 0, 208, 209, 5, 114, 0, + 0, 209, 210, 3, 16, 8, 0, 210, 215, 5, 115, 0, 0, 211, 212, 5, 116, 0, + 0, 212, 213, 3, 162, 81, 0, 213, 214, 5, 117, 0, 0, 214, 216, 1, 0, 0, + 0, 215, 211, 1, 0, 0, 0, 215, 216, 1, 0, 0, 0, 216, 217, 1, 0, 0, 0, 217, + 218, 5, 107, 0, 0, 218, 219, 3, 18, 9, 0, 219, 13, 1, 0, 0, 0, 220, 222, + 3, 10, 5, 0, 221, 220, 1, 0, 0, 0, 221, 222, 1, 0, 0, 0, 222, 224, 1, 0, + 0, 0, 223, 225, 3, 12, 6, 0, 224, 223, 1, 0, 0, 0, 225, 226, 1, 0, 0, 0, + 226, 224, 1, 0, 0, 0, 226, 227, 1, 0, 0, 0, 227, 237, 1, 0, 0, 0, 228, + 230, 3, 10, 5, 0, 229, 228, 1, 0, 0, 0, 229, 230, 1, 0, 0, 0, 230, 232, + 1, 0, 0, 0, 231, 233, 3, 22, 11, 0, 232, 231, 1, 0, 0, 0, 233, 234, 1, + 0, 0, 0, 234, 232, 1, 0, 0, 0, 234, 235, 1, 0, 0, 0, 235, 237, 1, 0, 0, + 0, 236, 221, 1, 0, 0, 0, 236, 229, 1, 0, 0, 0, 237, 15, 1, 0, 0, 0, 238, + 243, 3, 20, 10, 0, 239, 240, 5, 118, 0, 0, 240, 242, 3, 20, 10, 0, 241, + 239, 1, 0, 0, 0, 242, 245, 1, 0, 0, 0, 243, 241, 1, 0, 0, 0, 243, 244, + 1, 0, 0, 0, 244, 17, 1, 0, 0, 0, 245, 243, 1, 0, 0, 0, 246, 249, 3, 20, + 10, 0, 247, 249, 3, 154, 77, 0, 248, 246, 1, 0, 0, 0, 248, 247, 1, 0, 0, + 0, 249, 19, 1, 0, 0, 0, 250, 274, 3, 48, 24, 0, 251, 274, 3, 90, 45, 0, + 252, 274, 3, 50, 25, 0, 253, 274, 3, 52, 26, 0, 254, 274, 3, 56, 28, 0, + 255, 274, 3, 58, 29, 0, 256, 274, 3, 54, 27, 0, 257, 274, 3, 60, 30, 0, + 258, 274, 3, 62, 31, 0, 259, 274, 3, 64, 32, 0, 260, 274, 3, 66, 33, 0, + 261, 274, 3, 68, 34, 0, 262, 274, 3, 70, 35, 0, 263, 274, 3, 72, 36, 0, + 264, 274, 3, 74, 37, 0, 265, 274, 3, 76, 38, 0, 266, 274, 3, 78, 39, 0, + 267, 274, 3, 80, 40, 0, 268, 274, 3, 82, 41, 0, 269, 274, 3, 84, 42, 0, + 270, 274, 3, 86, 43, 0, 271, 274, 3, 88, 44, 0, 272, 274, 5, 128, 0, 0, + 273, 250, 1, 0, 0, 0, 273, 251, 1, 0, 0, 0, 273, 252, 1, 0, 0, 0, 273, + 253, 1, 0, 0, 0, 273, 254, 1, 0, 0, 0, 273, 255, 1, 0, 0, 0, 273, 256, + 1, 0, 0, 0, 273, 257, 1, 0, 0, 0, 273, 258, 1, 0, 0, 0, 273, 259, 1, 0, + 0, 0, 273, 260, 1, 0, 0, 0, 273, 261, 1, 0, 0, 0, 273, 262, 1, 0, 0, 0, + 273, 263, 1, 0, 0, 0, 273, 264, 1, 0, 0, 0, 273, 265, 1, 0, 0, 0, 273, + 266, 1, 0, 0, 0, 273, 267, 1, 0, 0, 0, 273, 268, 1, 0, 0, 0, 273, 269, + 1, 0, 0, 0, 273, 270, 1, 0, 0, 0, 273, 271, 1, 0, 0, 0, 273, 272, 1, 0, + 0, 0, 274, 21, 1, 0, 0, 0, 275, 280, 3, 24, 12, 0, 276, 277, 5, 116, 0, + 0, 277, 278, 3, 162, 81, 0, 278, 279, 5, 117, 0, 0, 279, 281, 1, 0, 0, + 0, 280, 276, 1, 0, 0, 0, 280, 281, 1, 0, 0, 0, 281, 282, 1, 0, 0, 0, 282, + 283, 5, 107, 0, 0, 283, 284, 3, 18, 9, 0, 284, 23, 1, 0, 0, 0, 285, 286, + 3, 26, 13, 0, 286, 287, 3, 166, 83, 0, 287, 289, 5, 114, 0, 0, 288, 290, + 3, 36, 18, 0, 289, 288, 1, 0, 0, 0, 289, 290, 1, 0, 0, 0, 290, 291, 1, + 0, 0, 0, 291, 292, 5, 115, 0, 0, 292, 307, 1, 0, 0, 0, 293, 294, 3, 28, + 14, 0, 294, 295, 3, 166, 83, 0, 295, 297, 5, 114, 0, 0, 296, 298, 3, 38, + 19, 0, 297, 296, 1, 0, 0, 0, 297, 298, 1, 0, 0, 0, 298, 299, 1, 0, 0, 0, + 299, 300, 5, 115, 0, 0, 300, 307, 1, 0, 0, 0, 301, 302, 3, 166, 83, 0, + 302, 303, 5, 114, 0, 0, 303, 304, 3, 30, 15, 0, 304, 305, 5, 115, 0, 0, + 305, 307, 1, 0, 0, 0, 306, 285, 1, 0, 0, 0, 306, 293, 1, 0, 0, 0, 306, + 301, 1, 0, 0, 0, 307, 25, 1, 0, 0, 0, 308, 309, 5, 9, 0, 0, 309, 310, 5, + 128, 0, 0, 310, 311, 5, 114, 0, 0, 311, 316, 3, 102, 51, 0, 312, 313, 5, + 118, 0, 0, 313, 315, 3, 102, 51, 0, 314, 312, 1, 0, 0, 0, 315, 318, 1, + 0, 0, 0, 316, 314, 1, 0, 0, 0, 316, 317, 1, 0, 0, 0, 317, 319, 1, 0, 0, + 0, 318, 316, 1, 0, 0, 0, 319, 320, 5, 115, 0, 0, 320, 321, 5, 107, 0, 0, + 321, 322, 3, 28, 14, 0, 322, 27, 1, 0, 0, 0, 323, 332, 5, 114, 0, 0, 324, + 329, 3, 32, 16, 0, 325, 326, 5, 118, 0, 0, 326, 328, 3, 32, 16, 0, 327, + 325, 1, 0, 0, 0, 328, 331, 1, 0, 0, 0, 329, 327, 1, 0, 0, 0, 329, 330, + 1, 0, 0, 0, 330, 333, 1, 0, 0, 0, 331, 329, 1, 0, 0, 0, 332, 324, 1, 0, + 0, 0, 332, 333, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 335, 5, 115, 0, + 0, 335, 29, 1, 0, 0, 0, 336, 337, 3, 32, 16, 0, 337, 338, 5, 101, 0, 0, + 338, 339, 3, 102, 51, 0, 339, 31, 1, 0, 0, 0, 340, 349, 5, 114, 0, 0, 341, + 346, 3, 34, 17, 0, 342, 343, 5, 118, 0, 0, 343, 345, 3, 34, 17, 0, 344, + 342, 1, 0, 0, 0, 345, 348, 1, 0, 0, 0, 346, 344, 1, 0, 0, 0, 346, 347, + 1, 0, 0, 0, 347, 350, 1, 0, 0, 0, 348, 346, 1, 0, 0, 0, 349, 341, 1, 0, + 0, 0, 349, 350, 1, 0, 0, 0, 350, 351, 1, 0, 0, 0, 351, 352, 5, 115, 0, + 0, 352, 33, 1, 0, 0, 0, 353, 365, 5, 45, 0, 0, 354, 365, 3, 44, 22, 0, + 355, 365, 5, 27, 0, 0, 356, 365, 5, 46, 0, 0, 357, 365, 5, 31, 0, 0, 358, + 365, 5, 30, 0, 0, 359, 365, 5, 29, 0, 0, 360, 365, 5, 28, 0, 0, 361, 365, + 5, 42, 0, 0, 362, 365, 5, 43, 0, 0, 363, 365, 5, 44, 0, 0, 364, 353, 1, + 0, 0, 0, 364, 354, 1, 0, 0, 0, 364, 355, 1, 0, 0, 0, 364, 356, 1, 0, 0, + 0, 364, 357, 1, 0, 0, 0, 364, 358, 1, 0, 0, 0, 364, 359, 1, 0, 0, 0, 364, + 360, 1, 0, 0, 0, 364, 361, 1, 0, 0, 0, 364, 362, 1, 0, 0, 0, 364, 363, + 1, 0, 0, 0, 365, 35, 1, 0, 0, 0, 366, 371, 3, 40, 20, 0, 367, 368, 5, 118, + 0, 0, 368, 370, 3, 40, 20, 0, 369, 367, 1, 0, 0, 0, 370, 373, 1, 0, 0, + 0, 371, 369, 1, 0, 0, 0, 371, 372, 1, 0, 0, 0, 372, 37, 1, 0, 0, 0, 373, + 371, 1, 0, 0, 0, 374, 379, 3, 42, 21, 0, 375, 376, 5, 118, 0, 0, 376, 378, + 3, 42, 21, 0, 377, 375, 1, 0, 0, 0, 378, 381, 1, 0, 0, 0, 379, 377, 1, + 0, 0, 0, 379, 380, 1, 0, 0, 0, 380, 39, 1, 0, 0, 0, 381, 379, 1, 0, 0, + 0, 382, 383, 5, 128, 0, 0, 383, 384, 5, 122, 0, 0, 384, 387, 5, 48, 0, + 0, 385, 387, 3, 20, 10, 0, 386, 382, 1, 0, 0, 0, 386, 385, 1, 0, 0, 0, + 387, 41, 1, 0, 0, 0, 388, 389, 5, 48, 0, 0, 389, 390, 5, 101, 0, 0, 390, + 393, 3, 102, 51, 0, 391, 393, 3, 20, 10, 0, 392, 388, 1, 0, 0, 0, 392, + 391, 1, 0, 0, 0, 393, 43, 1, 0, 0, 0, 394, 398, 5, 25, 0, 0, 395, 398, + 5, 24, 0, 0, 396, 398, 3, 46, 23, 0, 397, 394, 1, 0, 0, 0, 397, 395, 1, + 0, 0, 0, 397, 396, 1, 0, 0, 0, 398, 45, 1, 0, 0, 0, 399, 400, 7, 1, 0, + 0, 400, 47, 1, 0, 0, 0, 401, 402, 5, 45, 0, 0, 402, 403, 5, 101, 0, 0, + 403, 404, 3, 102, 51, 0, 404, 49, 1, 0, 0, 0, 405, 406, 5, 24, 0, 0, 406, + 407, 5, 101, 0, 0, 407, 408, 3, 112, 56, 0, 408, 51, 1, 0, 0, 0, 409, 410, + 3, 44, 22, 0, 410, 411, 5, 101, 0, 0, 411, 412, 3, 114, 57, 0, 412, 53, + 1, 0, 0, 0, 413, 414, 3, 44, 22, 0, 414, 415, 5, 101, 0, 0, 415, 416, 3, + 136, 68, 0, 416, 55, 1, 0, 0, 0, 417, 418, 5, 27, 0, 0, 418, 419, 5, 101, + 0, 0, 419, 420, 3, 106, 53, 0, 420, 57, 1, 0, 0, 0, 421, 422, 5, 46, 0, + 0, 422, 423, 5, 101, 0, 0, 423, 424, 3, 108, 54, 0, 424, 59, 1, 0, 0, 0, + 425, 426, 5, 31, 0, 0, 426, 427, 5, 101, 0, 0, 427, 428, 3, 116, 58, 0, + 428, 61, 1, 0, 0, 0, 429, 430, 5, 30, 0, 0, 430, 431, 5, 101, 0, 0, 431, + 432, 3, 118, 59, 0, 432, 63, 1, 0, 0, 0, 433, 434, 5, 29, 0, 0, 434, 435, + 5, 101, 0, 0, 435, 436, 3, 120, 60, 0, 436, 65, 1, 0, 0, 0, 437, 438, 5, + 28, 0, 0, 438, 439, 5, 101, 0, 0, 439, 440, 3, 122, 61, 0, 440, 67, 1, + 0, 0, 0, 441, 442, 5, 42, 0, 0, 442, 443, 5, 101, 0, 0, 443, 444, 3, 124, + 62, 0, 444, 69, 1, 0, 0, 0, 445, 446, 5, 43, 0, 0, 446, 447, 5, 101, 0, + 0, 447, 448, 3, 126, 63, 0, 448, 71, 1, 0, 0, 0, 449, 450, 5, 44, 0, 0, + 450, 451, 5, 101, 0, 0, 451, 452, 3, 128, 64, 0, 452, 73, 1, 0, 0, 0, 453, + 454, 5, 46, 0, 0, 454, 455, 5, 101, 0, 0, 455, 456, 3, 130, 65, 0, 456, + 75, 1, 0, 0, 0, 457, 458, 5, 46, 0, 0, 458, 459, 5, 101, 0, 0, 459, 460, + 3, 132, 66, 0, 460, 77, 1, 0, 0, 0, 461, 462, 5, 46, 0, 0, 462, 463, 5, + 101, 0, 0, 463, 464, 3, 134, 67, 0, 464, 79, 1, 0, 0, 0, 465, 466, 5, 30, + 0, 0, 466, 467, 5, 101, 0, 0, 467, 468, 3, 138, 69, 0, 468, 81, 1, 0, 0, + 0, 469, 470, 5, 29, 0, 0, 470, 471, 5, 101, 0, 0, 471, 472, 3, 140, 70, + 0, 472, 83, 1, 0, 0, 0, 473, 474, 5, 28, 0, 0, 474, 475, 5, 101, 0, 0, + 475, 476, 3, 142, 71, 0, 476, 85, 1, 0, 0, 0, 477, 478, 3, 92, 46, 0, 478, + 479, 5, 101, 0, 0, 479, 480, 3, 144, 72, 0, 480, 87, 1, 0, 0, 0, 481, 482, + 3, 96, 48, 0, 482, 483, 5, 101, 0, 0, 483, 484, 3, 146, 73, 0, 484, 89, + 1, 0, 0, 0, 485, 486, 5, 128, 0, 0, 486, 487, 5, 101, 0, 0, 487, 488, 5, + 47, 0, 0, 488, 91, 1, 0, 0, 0, 489, 498, 5, 116, 0, 0, 490, 495, 3, 94, + 47, 0, 491, 492, 5, 118, 0, 0, 492, 494, 3, 94, 47, 0, 493, 491, 1, 0, + 0, 0, 494, 497, 1, 0, 0, 0, 495, 493, 1, 0, 0, 0, 495, 496, 1, 0, 0, 0, + 496, 499, 1, 0, 0, 0, 497, 495, 1, 0, 0, 0, 498, 490, 1, 0, 0, 0, 498, + 499, 1, 0, 0, 0, 499, 500, 1, 0, 0, 0, 500, 501, 5, 117, 0, 0, 501, 93, + 1, 0, 0, 0, 502, 505, 3, 34, 17, 0, 503, 505, 3, 92, 46, 0, 504, 502, 1, + 0, 0, 0, 504, 503, 1, 0, 0, 0, 505, 95, 1, 0, 0, 0, 506, 507, 5, 114, 0, + 0, 507, 508, 3, 98, 49, 0, 508, 509, 5, 126, 0, 0, 509, 510, 3, 100, 50, + 0, 510, 511, 5, 115, 0, 0, 511, 97, 1, 0, 0, 0, 512, 523, 5, 128, 0, 0, + 513, 514, 5, 114, 0, 0, 514, 517, 5, 128, 0, 0, 515, 516, 5, 118, 0, 0, + 516, 518, 5, 128, 0, 0, 517, 515, 1, 0, 0, 0, 518, 519, 1, 0, 0, 0, 519, + 517, 1, 0, 0, 0, 519, 520, 1, 0, 0, 0, 520, 521, 1, 0, 0, 0, 521, 523, + 5, 115, 0, 0, 522, 512, 1, 0, 0, 0, 522, 513, 1, 0, 0, 0, 523, 99, 1, 0, + 0, 0, 524, 525, 3, 166, 83, 0, 525, 526, 5, 114, 0, 0, 526, 527, 3, 16, + 8, 0, 527, 528, 5, 115, 0, 0, 528, 101, 1, 0, 0, 0, 529, 532, 3, 104, 52, + 0, 530, 532, 3, 150, 75, 0, 531, 529, 1, 0, 0, 0, 531, 530, 1, 0, 0, 0, + 532, 103, 1, 0, 0, 0, 533, 553, 3, 106, 53, 0, 534, 553, 3, 112, 56, 0, + 535, 553, 3, 114, 57, 0, 536, 553, 3, 108, 54, 0, 537, 553, 3, 110, 55, + 0, 538, 553, 3, 120, 60, 0, 539, 553, 3, 122, 61, 0, 540, 553, 3, 116, + 58, 0, 541, 553, 3, 118, 59, 0, 542, 553, 3, 124, 62, 0, 543, 545, 5, 71, + 0, 0, 544, 546, 5, 120, 0, 0, 545, 544, 1, 0, 0, 0, 545, 546, 1, 0, 0, + 0, 546, 553, 1, 0, 0, 0, 547, 548, 5, 83, 0, 0, 548, 550, 5, 128, 0, 0, + 549, 551, 5, 120, 0, 0, 550, 549, 1, 0, 0, 0, 550, 551, 1, 0, 0, 0, 551, + 553, 1, 0, 0, 0, 552, 533, 1, 0, 0, 0, 552, 534, 1, 0, 0, 0, 552, 535, + 1, 0, 0, 0, 552, 536, 1, 0, 0, 0, 552, 537, 1, 0, 0, 0, 552, 538, 1, 0, + 0, 0, 552, 539, 1, 0, 0, 0, 552, 540, 1, 0, 0, 0, 552, 541, 1, 0, 0, 0, + 552, 542, 1, 0, 0, 0, 552, 543, 1, 0, 0, 0, 552, 547, 1, 0, 0, 0, 553, + 105, 1, 0, 0, 0, 554, 556, 7, 2, 0, 0, 555, 557, 5, 120, 0, 0, 556, 555, + 1, 0, 0, 0, 556, 557, 1, 0, 0, 0, 557, 107, 1, 0, 0, 0, 558, 560, 7, 3, + 0, 0, 559, 561, 5, 120, 0, 0, 560, 559, 1, 0, 0, 0, 560, 561, 1, 0, 0, + 0, 561, 109, 1, 0, 0, 0, 562, 564, 7, 4, 0, 0, 563, 565, 5, 120, 0, 0, + 564, 563, 1, 0, 0, 0, 564, 565, 1, 0, 0, 0, 565, 111, 1, 0, 0, 0, 566, + 568, 7, 5, 0, 0, 567, 569, 5, 120, 0, 0, 568, 567, 1, 0, 0, 0, 568, 569, + 1, 0, 0, 0, 569, 113, 1, 0, 0, 0, 570, 572, 7, 6, 0, 0, 571, 573, 5, 120, + 0, 0, 572, 571, 1, 0, 0, 0, 572, 573, 1, 0, 0, 0, 573, 115, 1, 0, 0, 0, + 574, 576, 5, 66, 0, 0, 575, 577, 5, 120, 0, 0, 576, 575, 1, 0, 0, 0, 576, + 577, 1, 0, 0, 0, 577, 117, 1, 0, 0, 0, 578, 580, 5, 67, 0, 0, 579, 581, + 5, 120, 0, 0, 580, 579, 1, 0, 0, 0, 580, 581, 1, 0, 0, 0, 581, 119, 1, + 0, 0, 0, 582, 584, 7, 7, 0, 0, 583, 585, 5, 120, 0, 0, 584, 583, 1, 0, + 0, 0, 584, 585, 1, 0, 0, 0, 585, 121, 1, 0, 0, 0, 586, 588, 7, 8, 0, 0, + 587, 589, 5, 120, 0, 0, 588, 587, 1, 0, 0, 0, 588, 589, 1, 0, 0, 0, 589, + 123, 1, 0, 0, 0, 590, 592, 7, 9, 0, 0, 591, 593, 5, 120, 0, 0, 592, 591, + 1, 0, 0, 0, 592, 593, 1, 0, 0, 0, 593, 125, 1, 0, 0, 0, 594, 596, 7, 10, + 0, 0, 595, 597, 5, 120, 0, 0, 596, 595, 1, 0, 0, 0, 596, 597, 1, 0, 0, + 0, 597, 602, 1, 0, 0, 0, 598, 599, 5, 40, 0, 0, 599, 600, 3, 152, 76, 0, + 600, 601, 5, 41, 0, 0, 601, 603, 1, 0, 0, 0, 602, 598, 1, 0, 0, 0, 602, + 603, 1, 0, 0, 0, 603, 127, 1, 0, 0, 0, 604, 606, 7, 11, 0, 0, 605, 607, + 5, 120, 0, 0, 606, 605, 1, 0, 0, 0, 606, 607, 1, 0, 0, 0, 607, 612, 1, + 0, 0, 0, 608, 609, 5, 40, 0, 0, 609, 610, 3, 152, 76, 0, 610, 611, 5, 41, + 0, 0, 611, 613, 1, 0, 0, 0, 612, 608, 1, 0, 0, 0, 612, 613, 1, 0, 0, 0, + 613, 129, 1, 0, 0, 0, 614, 616, 7, 12, 0, 0, 615, 617, 5, 120, 0, 0, 616, + 615, 1, 0, 0, 0, 616, 617, 1, 0, 0, 0, 617, 618, 1, 0, 0, 0, 618, 619, + 5, 40, 0, 0, 619, 620, 3, 152, 76, 0, 620, 621, 5, 41, 0, 0, 621, 131, + 1, 0, 0, 0, 622, 624, 7, 13, 0, 0, 623, 625, 5, 120, 0, 0, 624, 623, 1, + 0, 0, 0, 624, 625, 1, 0, 0, 0, 625, 626, 1, 0, 0, 0, 626, 627, 5, 40, 0, + 0, 627, 628, 3, 152, 76, 0, 628, 629, 5, 41, 0, 0, 629, 133, 1, 0, 0, 0, + 630, 632, 7, 14, 0, 0, 631, 633, 5, 120, 0, 0, 632, 631, 1, 0, 0, 0, 632, + 633, 1, 0, 0, 0, 633, 634, 1, 0, 0, 0, 634, 635, 5, 40, 0, 0, 635, 636, + 3, 152, 76, 0, 636, 637, 5, 41, 0, 0, 637, 135, 1, 0, 0, 0, 638, 640, 7, + 15, 0, 0, 639, 641, 5, 120, 0, 0, 640, 639, 1, 0, 0, 0, 640, 641, 1, 0, + 0, 0, 641, 648, 1, 0, 0, 0, 642, 643, 5, 40, 0, 0, 643, 644, 3, 152, 76, + 0, 644, 645, 5, 118, 0, 0, 645, 646, 3, 152, 76, 0, 646, 647, 5, 41, 0, + 0, 647, 649, 1, 0, 0, 0, 648, 642, 1, 0, 0, 0, 648, 649, 1, 0, 0, 0, 649, + 137, 1, 0, 0, 0, 650, 652, 7, 16, 0, 0, 651, 653, 5, 120, 0, 0, 652, 651, + 1, 0, 0, 0, 652, 653, 1, 0, 0, 0, 653, 654, 1, 0, 0, 0, 654, 655, 5, 40, + 0, 0, 655, 656, 3, 152, 76, 0, 656, 657, 5, 41, 0, 0, 657, 139, 1, 0, 0, + 0, 658, 660, 7, 17, 0, 0, 659, 661, 5, 120, 0, 0, 660, 659, 1, 0, 0, 0, + 660, 661, 1, 0, 0, 0, 661, 662, 1, 0, 0, 0, 662, 663, 5, 40, 0, 0, 663, + 664, 3, 152, 76, 0, 664, 665, 5, 41, 0, 0, 665, 141, 1, 0, 0, 0, 666, 668, + 7, 18, 0, 0, 667, 669, 5, 120, 0, 0, 668, 667, 1, 0, 0, 0, 668, 669, 1, + 0, 0, 0, 669, 670, 1, 0, 0, 0, 670, 671, 5, 40, 0, 0, 671, 672, 3, 152, + 76, 0, 672, 673, 5, 41, 0, 0, 673, 143, 1, 0, 0, 0, 674, 676, 5, 81, 0, + 0, 675, 677, 5, 120, 0, 0, 676, 675, 1, 0, 0, 0, 676, 677, 1, 0, 0, 0, + 677, 678, 1, 0, 0, 0, 678, 679, 5, 40, 0, 0, 679, 680, 3, 102, 51, 0, 680, + 681, 5, 41, 0, 0, 681, 145, 1, 0, 0, 0, 682, 684, 5, 54, 0, 0, 683, 685, + 5, 120, 0, 0, 684, 683, 1, 0, 0, 0, 684, 685, 1, 0, 0, 0, 685, 686, 1, + 0, 0, 0, 686, 687, 5, 40, 0, 0, 687, 688, 3, 148, 74, 0, 688, 689, 5, 126, + 0, 0, 689, 690, 3, 102, 51, 0, 690, 691, 5, 41, 0, 0, 691, 147, 1, 0, 0, + 0, 692, 705, 3, 102, 51, 0, 693, 694, 5, 114, 0, 0, 694, 699, 3, 102, 51, + 0, 695, 696, 5, 118, 0, 0, 696, 698, 3, 102, 51, 0, 697, 695, 1, 0, 0, + 0, 698, 701, 1, 0, 0, 0, 699, 697, 1, 0, 0, 0, 699, 700, 1, 0, 0, 0, 700, + 702, 1, 0, 0, 0, 701, 699, 1, 0, 0, 0, 702, 703, 5, 115, 0, 0, 703, 705, + 1, 0, 0, 0, 704, 692, 1, 0, 0, 0, 704, 693, 1, 0, 0, 0, 705, 149, 1, 0, + 0, 0, 706, 718, 3, 130, 65, 0, 707, 718, 3, 132, 66, 0, 708, 718, 3, 134, + 67, 0, 709, 718, 3, 136, 68, 0, 710, 718, 3, 126, 63, 0, 711, 718, 3, 128, + 64, 0, 712, 718, 3, 138, 69, 0, 713, 718, 3, 140, 70, 0, 714, 718, 3, 142, + 71, 0, 715, 718, 3, 144, 72, 0, 716, 718, 3, 146, 73, 0, 717, 706, 1, 0, + 0, 0, 717, 707, 1, 0, 0, 0, 717, 708, 1, 0, 0, 0, 717, 709, 1, 0, 0, 0, + 717, 710, 1, 0, 0, 0, 717, 711, 1, 0, 0, 0, 717, 712, 1, 0, 0, 0, 717, + 713, 1, 0, 0, 0, 717, 714, 1, 0, 0, 0, 717, 715, 1, 0, 0, 0, 717, 716, + 1, 0, 0, 0, 718, 151, 1, 0, 0, 0, 719, 720, 5, 24, 0, 0, 720, 153, 1, 0, + 0, 0, 721, 722, 7, 19, 0, 0, 722, 155, 1, 0, 0, 0, 723, 724, 3, 158, 79, + 0, 724, 725, 5, 119, 0, 0, 725, 726, 3, 160, 80, 0, 726, 157, 1, 0, 0, + 0, 727, 728, 7, 20, 0, 0, 728, 159, 1, 0, 0, 0, 729, 730, 7, 21, 0, 0, + 730, 161, 1, 0, 0, 0, 731, 736, 3, 156, 78, 0, 732, 733, 5, 118, 0, 0, + 733, 735, 3, 156, 78, 0, 734, 732, 1, 0, 0, 0, 735, 738, 1, 0, 0, 0, 736, + 734, 1, 0, 0, 0, 736, 737, 1, 0, 0, 0, 737, 163, 1, 0, 0, 0, 738, 736, + 1, 0, 0, 0, 739, 740, 7, 22, 0, 0, 740, 165, 1, 0, 0, 0, 741, 744, 3, 164, + 82, 0, 742, 744, 5, 128, 0, 0, 743, 741, 1, 0, 0, 0, 743, 742, 1, 0, 0, + 0, 744, 167, 1, 0, 0, 0, 65, 172, 181, 197, 215, 221, 226, 229, 234, 236, + 243, 248, 273, 280, 289, 297, 306, 316, 329, 332, 346, 349, 364, 371, 379, + 386, 392, 397, 495, 498, 504, 519, 522, 531, 545, 550, 552, 556, 560, 564, + 568, 572, 576, 580, 584, 588, 592, 596, 602, 606, 612, 616, 624, 632, 640, + 648, 652, 660, 668, 676, 684, 699, 704, 717, 736, 743, } deserializer := antlr.NewATNDeserializer(nil) staticData.atn = deserializer.Deserialize(staticData.serializedATN) @@ -515,88 +518,89 @@ const ( FuncTestCaseParserIntervalCompoundLiteral = 44 FuncTestCaseParserNullLiteral = 45 FuncTestCaseParserStringLiteral = 46 - FuncTestCaseParserColumnName = 47 - FuncTestCaseParserLineComment = 48 - FuncTestCaseParserBlockComment = 49 - FuncTestCaseParserIf = 50 - FuncTestCaseParserThen = 51 - FuncTestCaseParserElse = 52 - FuncTestCaseParserFunc = 53 - FuncTestCaseParserBoolean = 54 - FuncTestCaseParserI8 = 55 - FuncTestCaseParserI16 = 56 - FuncTestCaseParserI32 = 57 - FuncTestCaseParserI64 = 58 - FuncTestCaseParserFP32 = 59 - FuncTestCaseParserFP64 = 60 - FuncTestCaseParserString_ = 61 - FuncTestCaseParserBinary = 62 - FuncTestCaseParserTimestamp = 63 - FuncTestCaseParserTimestamp_TZ = 64 - FuncTestCaseParserDate = 65 - FuncTestCaseParserTime = 66 - FuncTestCaseParserInterval_Year = 67 - FuncTestCaseParserInterval_Day = 68 - FuncTestCaseParserInterval_Compound = 69 - FuncTestCaseParserUUID = 70 - FuncTestCaseParserDecimal = 71 - FuncTestCaseParserPrecision_Time = 72 - FuncTestCaseParserPrecision_Timestamp = 73 - FuncTestCaseParserPrecision_Timestamp_TZ = 74 - FuncTestCaseParserFixedChar = 75 - FuncTestCaseParserVarChar = 76 - FuncTestCaseParserFixedBinary = 77 - FuncTestCaseParserStruct = 78 - FuncTestCaseParserNStruct = 79 - FuncTestCaseParserList = 80 - FuncTestCaseParserMap = 81 - FuncTestCaseParserUserDefined = 82 - FuncTestCaseParserBool = 83 - FuncTestCaseParserStr = 84 - FuncTestCaseParserVBin = 85 - FuncTestCaseParserTs = 86 - FuncTestCaseParserTsTZ = 87 - FuncTestCaseParserIYear = 88 - FuncTestCaseParserIDay = 89 - FuncTestCaseParserICompound = 90 - FuncTestCaseParserDec = 91 - FuncTestCaseParserPT = 92 - FuncTestCaseParserPTs = 93 - FuncTestCaseParserPTsTZ = 94 - FuncTestCaseParserFChar = 95 - FuncTestCaseParserVChar = 96 - FuncTestCaseParserFBin = 97 - FuncTestCaseParserAny = 98 - FuncTestCaseParserAnyVar = 99 - FuncTestCaseParserDoubleColon = 100 - FuncTestCaseParserPlus = 101 - FuncTestCaseParserMinus = 102 - FuncTestCaseParserAsterisk = 103 - FuncTestCaseParserForwardSlash = 104 - FuncTestCaseParserPercent = 105 - FuncTestCaseParserEq = 106 - FuncTestCaseParserNe = 107 - FuncTestCaseParserGte = 108 - FuncTestCaseParserLte = 109 - FuncTestCaseParserGt = 110 - FuncTestCaseParserLt = 111 - FuncTestCaseParserBang = 112 - FuncTestCaseParserOParen = 113 - FuncTestCaseParserCParen = 114 - FuncTestCaseParserOBracket = 115 - FuncTestCaseParserCBracket = 116 - FuncTestCaseParserComma = 117 - FuncTestCaseParserColon = 118 - FuncTestCaseParserQMark = 119 - FuncTestCaseParserHash = 120 - FuncTestCaseParserDot = 121 - FuncTestCaseParserAnd = 122 - FuncTestCaseParserOr = 123 - FuncTestCaseParserAssign = 124 - FuncTestCaseParserArrow = 125 - FuncTestCaseParserNumber = 126 - FuncTestCaseParserIdentifier = 127 - FuncTestCaseParserNewline = 128 + FuncTestCaseParserEnumType = 47 + FuncTestCaseParserColumnName = 48 + FuncTestCaseParserLineComment = 49 + FuncTestCaseParserBlockComment = 50 + FuncTestCaseParserIf = 51 + FuncTestCaseParserThen = 52 + FuncTestCaseParserElse = 53 + FuncTestCaseParserFunc = 54 + FuncTestCaseParserBoolean = 55 + FuncTestCaseParserI8 = 56 + FuncTestCaseParserI16 = 57 + FuncTestCaseParserI32 = 58 + FuncTestCaseParserI64 = 59 + FuncTestCaseParserFP32 = 60 + FuncTestCaseParserFP64 = 61 + FuncTestCaseParserString_ = 62 + FuncTestCaseParserBinary = 63 + FuncTestCaseParserTimestamp = 64 + FuncTestCaseParserTimestamp_TZ = 65 + FuncTestCaseParserDate = 66 + FuncTestCaseParserTime = 67 + FuncTestCaseParserInterval_Year = 68 + FuncTestCaseParserInterval_Day = 69 + FuncTestCaseParserInterval_Compound = 70 + FuncTestCaseParserUUID = 71 + FuncTestCaseParserDecimal = 72 + FuncTestCaseParserPrecision_Time = 73 + FuncTestCaseParserPrecision_Timestamp = 74 + FuncTestCaseParserPrecision_Timestamp_TZ = 75 + FuncTestCaseParserFixedChar = 76 + FuncTestCaseParserVarChar = 77 + FuncTestCaseParserFixedBinary = 78 + FuncTestCaseParserStruct = 79 + FuncTestCaseParserNStruct = 80 + FuncTestCaseParserList = 81 + FuncTestCaseParserMap = 82 + FuncTestCaseParserUserDefined = 83 + FuncTestCaseParserBool = 84 + FuncTestCaseParserStr = 85 + FuncTestCaseParserVBin = 86 + FuncTestCaseParserTs = 87 + FuncTestCaseParserTsTZ = 88 + FuncTestCaseParserIYear = 89 + FuncTestCaseParserIDay = 90 + FuncTestCaseParserICompound = 91 + FuncTestCaseParserDec = 92 + FuncTestCaseParserPT = 93 + FuncTestCaseParserPTs = 94 + FuncTestCaseParserPTsTZ = 95 + FuncTestCaseParserFChar = 96 + FuncTestCaseParserVChar = 97 + FuncTestCaseParserFBin = 98 + FuncTestCaseParserAny = 99 + FuncTestCaseParserAnyVar = 100 + FuncTestCaseParserDoubleColon = 101 + FuncTestCaseParserPlus = 102 + FuncTestCaseParserMinus = 103 + FuncTestCaseParserAsterisk = 104 + FuncTestCaseParserForwardSlash = 105 + FuncTestCaseParserPercent = 106 + FuncTestCaseParserEq = 107 + FuncTestCaseParserNe = 108 + FuncTestCaseParserGte = 109 + FuncTestCaseParserLte = 110 + FuncTestCaseParserGt = 111 + FuncTestCaseParserLt = 112 + FuncTestCaseParserBang = 113 + FuncTestCaseParserOParen = 114 + FuncTestCaseParserCParen = 115 + FuncTestCaseParserOBracket = 116 + FuncTestCaseParserCBracket = 117 + FuncTestCaseParserComma = 118 + FuncTestCaseParserColon = 119 + FuncTestCaseParserQMark = 120 + FuncTestCaseParserHash = 121 + FuncTestCaseParserDot = 122 + FuncTestCaseParserAnd = 123 + FuncTestCaseParserOr = 124 + FuncTestCaseParserAssign = 125 + FuncTestCaseParserArrow = 126 + FuncTestCaseParserNumber = 127 + FuncTestCaseParserIdentifier = 128 + FuncTestCaseParserNewline = 129 ) // FuncTestCaseParser rules. @@ -646,44 +650,45 @@ const ( FuncTestCaseParserRULE_precisionTimestampTZArg = 42 FuncTestCaseParserRULE_listArg = 43 FuncTestCaseParserRULE_lambdaArg = 44 - FuncTestCaseParserRULE_literalList = 45 - FuncTestCaseParserRULE_listElement = 46 - FuncTestCaseParserRULE_literalLambda = 47 - FuncTestCaseParserRULE_lambdaParameters = 48 - FuncTestCaseParserRULE_lambdaBody = 49 - FuncTestCaseParserRULE_dataType = 50 - FuncTestCaseParserRULE_scalarType = 51 - FuncTestCaseParserRULE_booleanType = 52 - FuncTestCaseParserRULE_stringType = 53 - FuncTestCaseParserRULE_binaryType = 54 - FuncTestCaseParserRULE_intType = 55 - FuncTestCaseParserRULE_floatType = 56 - FuncTestCaseParserRULE_dateType = 57 - FuncTestCaseParserRULE_timeType = 58 - FuncTestCaseParserRULE_timestampType = 59 - FuncTestCaseParserRULE_timestampTZType = 60 - FuncTestCaseParserRULE_intervalYearType = 61 - FuncTestCaseParserRULE_intervalDayType = 62 - FuncTestCaseParserRULE_intervalCompoundType = 63 - FuncTestCaseParserRULE_fixedCharType = 64 - FuncTestCaseParserRULE_varCharType = 65 - FuncTestCaseParserRULE_fixedBinaryType = 66 - FuncTestCaseParserRULE_decimalType = 67 - FuncTestCaseParserRULE_precisionTimeType = 68 - FuncTestCaseParserRULE_precisionTimestampType = 69 - FuncTestCaseParserRULE_precisionTimestampTZType = 70 - FuncTestCaseParserRULE_listType = 71 - FuncTestCaseParserRULE_funcType = 72 - FuncTestCaseParserRULE_funcParameters = 73 - FuncTestCaseParserRULE_parameterizedType = 74 - FuncTestCaseParserRULE_numericParameter = 75 - FuncTestCaseParserRULE_substraitError = 76 - FuncTestCaseParserRULE_funcOption = 77 - FuncTestCaseParserRULE_optionName = 78 - FuncTestCaseParserRULE_optionValue = 79 - FuncTestCaseParserRULE_funcOptions = 80 - FuncTestCaseParserRULE_nonReserved = 81 - FuncTestCaseParserRULE_identifier = 82 + FuncTestCaseParserRULE_enumArg = 45 + FuncTestCaseParserRULE_literalList = 46 + FuncTestCaseParserRULE_listElement = 47 + FuncTestCaseParserRULE_literalLambda = 48 + FuncTestCaseParserRULE_lambdaParameters = 49 + FuncTestCaseParserRULE_lambdaBody = 50 + FuncTestCaseParserRULE_dataType = 51 + FuncTestCaseParserRULE_scalarType = 52 + FuncTestCaseParserRULE_booleanType = 53 + FuncTestCaseParserRULE_stringType = 54 + FuncTestCaseParserRULE_binaryType = 55 + FuncTestCaseParserRULE_intType = 56 + FuncTestCaseParserRULE_floatType = 57 + FuncTestCaseParserRULE_dateType = 58 + FuncTestCaseParserRULE_timeType = 59 + FuncTestCaseParserRULE_timestampType = 60 + FuncTestCaseParserRULE_timestampTZType = 61 + FuncTestCaseParserRULE_intervalYearType = 62 + FuncTestCaseParserRULE_intervalDayType = 63 + FuncTestCaseParserRULE_intervalCompoundType = 64 + FuncTestCaseParserRULE_fixedCharType = 65 + FuncTestCaseParserRULE_varCharType = 66 + FuncTestCaseParserRULE_fixedBinaryType = 67 + FuncTestCaseParserRULE_decimalType = 68 + FuncTestCaseParserRULE_precisionTimeType = 69 + FuncTestCaseParserRULE_precisionTimestampType = 70 + FuncTestCaseParserRULE_precisionTimestampTZType = 71 + FuncTestCaseParserRULE_listType = 72 + FuncTestCaseParserRULE_funcType = 73 + FuncTestCaseParserRULE_funcParameters = 74 + FuncTestCaseParserRULE_parameterizedType = 75 + FuncTestCaseParserRULE_numericParameter = 76 + FuncTestCaseParserRULE_substraitError = 77 + FuncTestCaseParserRULE_funcOption = 78 + FuncTestCaseParserRULE_optionName = 79 + FuncTestCaseParserRULE_optionValue = 80 + FuncTestCaseParserRULE_funcOptions = 81 + FuncTestCaseParserRULE_nonReserved = 82 + FuncTestCaseParserRULE_identifier = 83 ) // IDocContext is an interface to support dynamic dispatch. @@ -821,23 +826,23 @@ func (p *FuncTestCaseParser) Doc() (localctx IDocContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(166) + p.SetState(168) p.Header() } - p.SetState(168) + p.SetState(170) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - for ok := true; ok; ok = ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&8389376) != 0) || ((int64((_la-113)) & ^0x3f) == 0 && ((int64(1)<<(_la-113))&17921) != 0) { + for ok := true; ok; ok = ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&8389376) != 0) || ((int64((_la-114)) & ^0x3f) == 0 && ((int64(1)<<(_la-114))&17921) != 0) { { - p.SetState(167) + p.SetState(169) p.TestGroup() } - p.SetState(170) + p.SetState(172) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -845,7 +850,7 @@ func (p *FuncTestCaseParser) Doc() (localctx IDocContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(172) + p.SetState(174) p.Match(FuncTestCaseParserEOF) if p.HasError() { // Recognition error - abort rule @@ -1013,14 +1018,14 @@ func (p *FuncTestCaseParser) Header() (localctx IHeaderContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(174) + p.SetState(176) p.Version() } { - p.SetState(175) + p.SetState(177) p.Include() } - p.SetState(179) + p.SetState(181) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -1029,11 +1034,11 @@ func (p *FuncTestCaseParser) Header() (localctx IHeaderContext) { for _la == FuncTestCaseParserTripleHash { { - p.SetState(176) + p.SetState(178) p.Dependency() } - p.SetState(181) + p.SetState(183) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -1149,7 +1154,7 @@ func (p *FuncTestCaseParser) Version() (localctx IVersionContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(182) + p.SetState(184) p.Match(FuncTestCaseParserTripleHash) if p.HasError() { // Recognition error - abort rule @@ -1157,7 +1162,7 @@ func (p *FuncTestCaseParser) Version() (localctx IVersionContext) { } } { - p.SetState(183) + p.SetState(185) _la = p.GetTokenStream().LA(1) if !(_la == FuncTestCaseParserSubstraitScalarTest || _la == FuncTestCaseParserSubstraitAggregateTest) { @@ -1168,7 +1173,7 @@ func (p *FuncTestCaseParser) Version() (localctx IVersionContext) { } } { - p.SetState(184) + p.SetState(186) p.Match(FuncTestCaseParserColon) if p.HasError() { // Recognition error - abort rule @@ -1176,7 +1181,7 @@ func (p *FuncTestCaseParser) Version() (localctx IVersionContext) { } } { - p.SetState(185) + p.SetState(187) p.Match(FuncTestCaseParserFormatVersion) if p.HasError() { // Recognition error - abort rule @@ -1302,7 +1307,7 @@ func (p *FuncTestCaseParser) Include() (localctx IIncludeContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(187) + p.SetState(189) p.Match(FuncTestCaseParserTripleHash) if p.HasError() { // Recognition error - abort rule @@ -1310,7 +1315,7 @@ func (p *FuncTestCaseParser) Include() (localctx IIncludeContext) { } } { - p.SetState(188) + p.SetState(190) p.Match(FuncTestCaseParserSubstraitInclude) if p.HasError() { // Recognition error - abort rule @@ -1318,7 +1323,7 @@ func (p *FuncTestCaseParser) Include() (localctx IIncludeContext) { } } { - p.SetState(189) + p.SetState(191) p.Match(FuncTestCaseParserColon) if p.HasError() { // Recognition error - abort rule @@ -1326,14 +1331,14 @@ func (p *FuncTestCaseParser) Include() (localctx IIncludeContext) { } } { - p.SetState(190) + p.SetState(192) p.Match(FuncTestCaseParserStringLiteral) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(195) + p.SetState(197) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -1342,7 +1347,7 @@ func (p *FuncTestCaseParser) Include() (localctx IIncludeContext) { for _la == FuncTestCaseParserComma { { - p.SetState(191) + p.SetState(193) p.Match(FuncTestCaseParserComma) if p.HasError() { // Recognition error - abort rule @@ -1350,7 +1355,7 @@ func (p *FuncTestCaseParser) Include() (localctx IIncludeContext) { } } { - p.SetState(192) + p.SetState(194) p.Match(FuncTestCaseParserStringLiteral) if p.HasError() { // Recognition error - abort rule @@ -1358,7 +1363,7 @@ func (p *FuncTestCaseParser) Include() (localctx IIncludeContext) { } } - p.SetState(197) + p.SetState(199) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -1467,7 +1472,7 @@ func (p *FuncTestCaseParser) Dependency() (localctx IDependencyContext) { p.EnterRule(localctx, 8, FuncTestCaseParserRULE_dependency) p.EnterOuterAlt(localctx, 1) { - p.SetState(198) + p.SetState(200) p.Match(FuncTestCaseParserTripleHash) if p.HasError() { // Recognition error - abort rule @@ -1475,7 +1480,7 @@ func (p *FuncTestCaseParser) Dependency() (localctx IDependencyContext) { } } { - p.SetState(199) + p.SetState(201) p.Match(FuncTestCaseParserSubstraitDependency) if p.HasError() { // Recognition error - abort rule @@ -1483,7 +1488,7 @@ func (p *FuncTestCaseParser) Dependency() (localctx IDependencyContext) { } } { - p.SetState(200) + p.SetState(202) p.Match(FuncTestCaseParserColon) if p.HasError() { // Recognition error - abort rule @@ -1491,7 +1496,7 @@ func (p *FuncTestCaseParser) Dependency() (localctx IDependencyContext) { } } { - p.SetState(201) + p.SetState(203) p.Match(FuncTestCaseParserStringLiteral) if p.HasError() { // Recognition error - abort rule @@ -1585,7 +1590,7 @@ func (p *FuncTestCaseParser) TestGroupDescription() (localctx ITestGroupDescript p.EnterRule(localctx, 10, FuncTestCaseParserRULE_testGroupDescription) p.EnterOuterAlt(localctx, 1) { - p.SetState(203) + p.SetState(205) p.Match(FuncTestCaseParserDescriptionLine) if p.HasError() { // Recognition error - abort rule @@ -1780,14 +1785,14 @@ func (p *FuncTestCaseParser) TestCase() (localctx ITestCaseContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(205) + p.SetState(207) var _x = p.Identifier() localctx.(*TestCaseContext).functionName = _x } { - p.SetState(206) + p.SetState(208) p.Match(FuncTestCaseParserOParen) if p.HasError() { // Recognition error - abort rule @@ -1795,18 +1800,18 @@ func (p *FuncTestCaseParser) TestCase() (localctx ITestCaseContext) { } } { - p.SetState(207) + p.SetState(209) p.Arguments() } { - p.SetState(208) + p.SetState(210) p.Match(FuncTestCaseParserCParen) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(213) + p.SetState(215) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -1815,7 +1820,7 @@ func (p *FuncTestCaseParser) TestCase() (localctx ITestCaseContext) { if _la == FuncTestCaseParserOBracket { { - p.SetState(209) + p.SetState(211) p.Match(FuncTestCaseParserOBracket) if p.HasError() { // Recognition error - abort rule @@ -1823,11 +1828,11 @@ func (p *FuncTestCaseParser) TestCase() (localctx ITestCaseContext) { } } { - p.SetState(210) + p.SetState(212) p.FuncOptions() } { - p.SetState(211) + p.SetState(213) p.Match(FuncTestCaseParserCBracket) if p.HasError() { // Recognition error - abort rule @@ -1837,7 +1842,7 @@ func (p *FuncTestCaseParser) TestCase() (localctx ITestCaseContext) { } { - p.SetState(215) + p.SetState(217) p.Match(FuncTestCaseParserEq) if p.HasError() { // Recognition error - abort rule @@ -1845,7 +1850,7 @@ func (p *FuncTestCaseParser) TestCase() (localctx ITestCaseContext) { } } { - p.SetState(216) + p.SetState(218) p.Result() } @@ -2093,7 +2098,7 @@ func (p *FuncTestCaseParser) TestGroup() (localctx ITestGroupContext) { var _alt int - p.SetState(234) + p.SetState(236) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -2103,7 +2108,7 @@ func (p *FuncTestCaseParser) TestGroup() (localctx ITestGroupContext) { case 1: localctx = NewScalarFuncTestGroupContext(p, localctx) p.EnterOuterAlt(localctx, 1) - p.SetState(219) + p.SetState(221) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -2112,12 +2117,12 @@ func (p *FuncTestCaseParser) TestGroup() (localctx ITestGroupContext) { if _la == FuncTestCaseParserDescriptionLine { { - p.SetState(218) + p.SetState(220) p.TestGroupDescription() } } - p.SetState(222) + p.SetState(224) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -2127,7 +2132,7 @@ func (p *FuncTestCaseParser) TestGroup() (localctx ITestGroupContext) { switch _alt { case 1: { - p.SetState(221) + p.SetState(223) p.TestCase() } @@ -2136,7 +2141,7 @@ func (p *FuncTestCaseParser) TestGroup() (localctx ITestGroupContext) { goto errorExit } - p.SetState(224) + p.SetState(226) p.GetErrorHandler().Sync(p) _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 5, p.GetParserRuleContext()) if p.HasError() { @@ -2147,7 +2152,7 @@ func (p *FuncTestCaseParser) TestGroup() (localctx ITestGroupContext) { case 2: localctx = NewAggregateFuncTestGroupContext(p, localctx) p.EnterOuterAlt(localctx, 2) - p.SetState(227) + p.SetState(229) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -2156,12 +2161,12 @@ func (p *FuncTestCaseParser) TestGroup() (localctx ITestGroupContext) { if _la == FuncTestCaseParserDescriptionLine { { - p.SetState(226) + p.SetState(228) p.TestGroupDescription() } } - p.SetState(230) + p.SetState(232) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -2171,7 +2176,7 @@ func (p *FuncTestCaseParser) TestGroup() (localctx ITestGroupContext) { switch _alt { case 1: { - p.SetState(229) + p.SetState(231) p.AggFuncTestCase() } @@ -2180,7 +2185,7 @@ func (p *FuncTestCaseParser) TestGroup() (localctx ITestGroupContext) { goto errorExit } - p.SetState(232) + p.SetState(234) p.GetErrorHandler().Sync(p) _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 7, p.GetParserRuleContext()) if p.HasError() { @@ -2328,10 +2333,10 @@ func (p *FuncTestCaseParser) Arguments() (localctx IArgumentsContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(236) + p.SetState(238) p.Argument() } - p.SetState(241) + p.SetState(243) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -2340,7 +2345,7 @@ func (p *FuncTestCaseParser) Arguments() (localctx IArgumentsContext) { for _la == FuncTestCaseParserComma { { - p.SetState(237) + p.SetState(239) p.Match(FuncTestCaseParserComma) if p.HasError() { // Recognition error - abort rule @@ -2348,11 +2353,11 @@ func (p *FuncTestCaseParser) Arguments() (localctx IArgumentsContext) { } } { - p.SetState(238) + p.SetState(240) p.Argument() } - p.SetState(243) + p.SetState(245) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -2473,7 +2478,7 @@ func (s *ResultContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *FuncTestCaseParser) Result() (localctx IResultContext) { localctx = NewResultContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 18, FuncTestCaseParserRULE_result) - p.SetState(246) + p.SetState(248) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -2483,14 +2488,14 @@ func (p *FuncTestCaseParser) Result() (localctx IResultContext) { case FuncTestCaseParserNaN, FuncTestCaseParserIntegerLiteral, FuncTestCaseParserDecimalLiteral, FuncTestCaseParserFloatLiteral, FuncTestCaseParserBooleanLiteral, FuncTestCaseParserTimestampTzLiteral, FuncTestCaseParserTimestampLiteral, FuncTestCaseParserTimeLiteral, FuncTestCaseParserDateLiteral, FuncTestCaseParserIntervalYearLiteral, FuncTestCaseParserIntervalDayLiteral, FuncTestCaseParserIntervalCompoundLiteral, FuncTestCaseParserNullLiteral, FuncTestCaseParserStringLiteral, FuncTestCaseParserOParen, FuncTestCaseParserOBracket, FuncTestCaseParserIdentifier: p.EnterOuterAlt(localctx, 1) { - p.SetState(244) + p.SetState(246) p.Argument() } case FuncTestCaseParserErrorResult, FuncTestCaseParserUndefineResult: p.EnterOuterAlt(localctx, 2) { - p.SetState(245) + p.SetState(247) p.SubstraitError() } @@ -2521,6 +2526,7 @@ type IArgumentContext interface { // Getter signatures NullArg() INullArgContext + EnumArg() IEnumArgContext IntArg() IIntArgContext FloatArg() IFloatArgContext BooleanArg() IBooleanArgContext @@ -2595,6 +2601,22 @@ func (s *ArgumentContext) NullArg() INullArgContext { return t.(INullArgContext) } +func (s *ArgumentContext) EnumArg() IEnumArgContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEnumArgContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEnumArgContext) +} + func (s *ArgumentContext) IntArg() IIntArgContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { @@ -2940,7 +2962,7 @@ func (s *ArgumentContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *FuncTestCaseParser) Argument() (localctx IArgumentContext) { localctx = NewArgumentContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 20, FuncTestCaseParserRULE_argument) - p.SetState(270) + p.SetState(273) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -2950,154 +2972,161 @@ func (p *FuncTestCaseParser) Argument() (localctx IArgumentContext) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(248) + p.SetState(250) p.NullArg() } case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(249) - p.IntArg() + p.SetState(251) + p.EnumArg() } case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(250) - p.FloatArg() + p.SetState(252) + p.IntArg() } case 4: p.EnterOuterAlt(localctx, 4) { - p.SetState(251) - p.BooleanArg() + p.SetState(253) + p.FloatArg() } case 5: p.EnterOuterAlt(localctx, 5) { - p.SetState(252) - p.StringArg() + p.SetState(254) + p.BooleanArg() } case 6: p.EnterOuterAlt(localctx, 6) { - p.SetState(253) - p.DecimalArg() + p.SetState(255) + p.StringArg() } case 7: p.EnterOuterAlt(localctx, 7) { - p.SetState(254) - p.DateArg() + p.SetState(256) + p.DecimalArg() } case 8: p.EnterOuterAlt(localctx, 8) { - p.SetState(255) - p.TimeArg() + p.SetState(257) + p.DateArg() } case 9: p.EnterOuterAlt(localctx, 9) { - p.SetState(256) - p.TimestampArg() + p.SetState(258) + p.TimeArg() } case 10: p.EnterOuterAlt(localctx, 10) { - p.SetState(257) - p.TimestampTzArg() + p.SetState(259) + p.TimestampArg() } case 11: p.EnterOuterAlt(localctx, 11) { - p.SetState(258) - p.IntervalYearArg() + p.SetState(260) + p.TimestampTzArg() } case 12: p.EnterOuterAlt(localctx, 12) { - p.SetState(259) - p.IntervalDayArg() + p.SetState(261) + p.IntervalYearArg() } case 13: p.EnterOuterAlt(localctx, 13) { - p.SetState(260) - p.IntervalCompoundArg() + p.SetState(262) + p.IntervalDayArg() } case 14: p.EnterOuterAlt(localctx, 14) { - p.SetState(261) - p.FixedCharArg() + p.SetState(263) + p.IntervalCompoundArg() } case 15: p.EnterOuterAlt(localctx, 15) { - p.SetState(262) - p.VarCharArg() + p.SetState(264) + p.FixedCharArg() } case 16: p.EnterOuterAlt(localctx, 16) { - p.SetState(263) - p.FixedBinaryArg() + p.SetState(265) + p.VarCharArg() } case 17: p.EnterOuterAlt(localctx, 17) { - p.SetState(264) - p.PrecisionTimeArg() + p.SetState(266) + p.FixedBinaryArg() } case 18: p.EnterOuterAlt(localctx, 18) { - p.SetState(265) - p.PrecisionTimestampArg() + p.SetState(267) + p.PrecisionTimeArg() } case 19: p.EnterOuterAlt(localctx, 19) { - p.SetState(266) - p.PrecisionTimestampTZArg() + p.SetState(268) + p.PrecisionTimestampArg() } case 20: p.EnterOuterAlt(localctx, 20) { - p.SetState(267) - p.ListArg() + p.SetState(269) + p.PrecisionTimestampTZArg() } case 21: p.EnterOuterAlt(localctx, 21) { - p.SetState(268) - p.LambdaArg() + p.SetState(270) + p.ListArg() } case 22: p.EnterOuterAlt(localctx, 22) { - p.SetState(269) + p.SetState(271) + p.LambdaArg() + } + + case 23: + p.EnterOuterAlt(localctx, 23) + { + p.SetState(272) p.Match(FuncTestCaseParserIdentifier) if p.HasError() { // Recognition error - abort rule @@ -3258,10 +3287,10 @@ func (p *FuncTestCaseParser) AggFuncTestCase() (localctx IAggFuncTestCaseContext p.EnterOuterAlt(localctx, 1) { - p.SetState(272) + p.SetState(275) p.AggFuncCall() } - p.SetState(277) + p.SetState(280) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3270,7 +3299,7 @@ func (p *FuncTestCaseParser) AggFuncTestCase() (localctx IAggFuncTestCaseContext if _la == FuncTestCaseParserOBracket { { - p.SetState(273) + p.SetState(276) p.Match(FuncTestCaseParserOBracket) if p.HasError() { // Recognition error - abort rule @@ -3278,11 +3307,11 @@ func (p *FuncTestCaseParser) AggFuncTestCase() (localctx IAggFuncTestCaseContext } } { - p.SetState(274) + p.SetState(277) p.FuncOptions() } { - p.SetState(275) + p.SetState(278) p.Match(FuncTestCaseParserCBracket) if p.HasError() { // Recognition error - abort rule @@ -3292,7 +3321,7 @@ func (p *FuncTestCaseParser) AggFuncTestCase() (localctx IAggFuncTestCaseContext } { - p.SetState(279) + p.SetState(282) p.Match(FuncTestCaseParserEq) if p.HasError() { // Recognition error - abort rule @@ -3300,7 +3329,7 @@ func (p *FuncTestCaseParser) AggFuncTestCase() (localctx IAggFuncTestCaseContext } } { - p.SetState(280) + p.SetState(283) p.Result() } @@ -3627,7 +3656,7 @@ func (p *FuncTestCaseParser) AggFuncCall() (localctx IAggFuncCallContext) { p.EnterRule(localctx, 24, FuncTestCaseParserRULE_aggFuncCall) var _la int - p.SetState(303) + p.SetState(306) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3638,40 +3667,40 @@ func (p *FuncTestCaseParser) AggFuncCall() (localctx IAggFuncCallContext) { localctx = NewMultiArgAggregateFuncCallContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(282) + p.SetState(285) p.TableData() } { - p.SetState(283) + p.SetState(286) var _x = p.Identifier() localctx.(*MultiArgAggregateFuncCallContext).funcName = _x } { - p.SetState(284) + p.SetState(287) p.Match(FuncTestCaseParserOParen) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(286) + p.SetState(289) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&136343720296448) != 0) || ((int64((_la-113)) & ^0x3f) == 0 && ((int64(1)<<(_la-113))&16389) != 0) { + if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&136343720296448) != 0) || ((int64((_la-114)) & ^0x3f) == 0 && ((int64(1)<<(_la-114))&16389) != 0) { { - p.SetState(285) + p.SetState(288) p.QualifiedAggregateFuncArgs() } } { - p.SetState(288) + p.SetState(291) p.Match(FuncTestCaseParserCParen) if p.HasError() { // Recognition error - abort rule @@ -3683,40 +3712,40 @@ func (p *FuncTestCaseParser) AggFuncCall() (localctx IAggFuncCallContext) { localctx = NewCompactAggregateFuncCallContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(290) + p.SetState(293) p.TableRows() } { - p.SetState(291) + p.SetState(294) var _x = p.Identifier() localctx.(*CompactAggregateFuncCallContext).functName = _x } { - p.SetState(292) + p.SetState(295) p.Match(FuncTestCaseParserOParen) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(294) + p.SetState(297) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&277081208651776) != 0) || ((int64((_la-113)) & ^0x3f) == 0 && ((int64(1)<<(_la-113))&16389) != 0) { + if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&417818697007104) != 0) || ((int64((_la-114)) & ^0x3f) == 0 && ((int64(1)<<(_la-114))&16389) != 0) { { - p.SetState(293) + p.SetState(296) p.AggregateFuncArgs() } } { - p.SetState(296) + p.SetState(299) p.Match(FuncTestCaseParserCParen) if p.HasError() { // Recognition error - abort rule @@ -3728,14 +3757,14 @@ func (p *FuncTestCaseParser) AggFuncCall() (localctx IAggFuncCallContext) { localctx = NewSingleArgAggregateFuncCallContext(p, localctx) p.EnterOuterAlt(localctx, 3) { - p.SetState(298) + p.SetState(301) var _x = p.Identifier() localctx.(*SingleArgAggregateFuncCallContext).functName = _x } { - p.SetState(299) + p.SetState(302) p.Match(FuncTestCaseParserOParen) if p.HasError() { // Recognition error - abort rule @@ -3743,11 +3772,11 @@ func (p *FuncTestCaseParser) AggFuncCall() (localctx IAggFuncCallContext) { } } { - p.SetState(300) + p.SetState(303) p.DataColumn() } { - p.SetState(301) + p.SetState(304) p.Match(FuncTestCaseParserCParen) if p.HasError() { // Recognition error - abort rule @@ -3949,7 +3978,7 @@ func (p *FuncTestCaseParser) TableData() (localctx ITableDataContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(305) + p.SetState(308) p.Match(FuncTestCaseParserDefine) if p.HasError() { // Recognition error - abort rule @@ -3957,7 +3986,7 @@ func (p *FuncTestCaseParser) TableData() (localctx ITableDataContext) { } } { - p.SetState(306) + p.SetState(309) var _m = p.Match(FuncTestCaseParserIdentifier) @@ -3968,7 +3997,7 @@ func (p *FuncTestCaseParser) TableData() (localctx ITableDataContext) { } } { - p.SetState(307) + p.SetState(310) p.Match(FuncTestCaseParserOParen) if p.HasError() { // Recognition error - abort rule @@ -3976,10 +4005,10 @@ func (p *FuncTestCaseParser) TableData() (localctx ITableDataContext) { } } { - p.SetState(308) + p.SetState(311) p.DataType() } - p.SetState(313) + p.SetState(316) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3988,7 +4017,7 @@ func (p *FuncTestCaseParser) TableData() (localctx ITableDataContext) { for _la == FuncTestCaseParserComma { { - p.SetState(309) + p.SetState(312) p.Match(FuncTestCaseParserComma) if p.HasError() { // Recognition error - abort rule @@ -3996,11 +4025,11 @@ func (p *FuncTestCaseParser) TableData() (localctx ITableDataContext) { } } { - p.SetState(310) + p.SetState(313) p.DataType() } - p.SetState(315) + p.SetState(318) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4008,7 +4037,7 @@ func (p *FuncTestCaseParser) TableData() (localctx ITableDataContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(316) + p.SetState(319) p.Match(FuncTestCaseParserCParen) if p.HasError() { // Recognition error - abort rule @@ -4016,7 +4045,7 @@ func (p *FuncTestCaseParser) TableData() (localctx ITableDataContext) { } } { - p.SetState(317) + p.SetState(320) p.Match(FuncTestCaseParserEq) if p.HasError() { // Recognition error - abort rule @@ -4024,7 +4053,7 @@ func (p *FuncTestCaseParser) TableData() (localctx ITableDataContext) { } } { - p.SetState(318) + p.SetState(321) p.TableRows() } @@ -4174,14 +4203,14 @@ func (p *FuncTestCaseParser) TableRows() (localctx ITableRowsContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(320) + p.SetState(323) p.Match(FuncTestCaseParserOParen) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(329) + p.SetState(332) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4190,10 +4219,10 @@ func (p *FuncTestCaseParser) TableRows() (localctx ITableRowsContext) { if _la == FuncTestCaseParserOParen { { - p.SetState(321) + p.SetState(324) p.ColumnValues() } - p.SetState(326) + p.SetState(329) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4202,7 +4231,7 @@ func (p *FuncTestCaseParser) TableRows() (localctx ITableRowsContext) { for _la == FuncTestCaseParserComma { { - p.SetState(322) + p.SetState(325) p.Match(FuncTestCaseParserComma) if p.HasError() { // Recognition error - abort rule @@ -4210,11 +4239,11 @@ func (p *FuncTestCaseParser) TableRows() (localctx ITableRowsContext) { } } { - p.SetState(323) + p.SetState(326) p.ColumnValues() } - p.SetState(328) + p.SetState(331) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4224,7 +4253,7 @@ func (p *FuncTestCaseParser) TableRows() (localctx ITableRowsContext) { } { - p.SetState(331) + p.SetState(334) p.Match(FuncTestCaseParserCParen) if p.HasError() { // Recognition error - abort rule @@ -4352,11 +4381,11 @@ func (p *FuncTestCaseParser) DataColumn() (localctx IDataColumnContext) { p.EnterRule(localctx, 30, FuncTestCaseParserRULE_dataColumn) p.EnterOuterAlt(localctx, 1) { - p.SetState(333) + p.SetState(336) p.ColumnValues() } { - p.SetState(334) + p.SetState(337) p.Match(FuncTestCaseParserDoubleColon) if p.HasError() { // Recognition error - abort rule @@ -4364,7 +4393,7 @@ func (p *FuncTestCaseParser) DataColumn() (localctx IDataColumnContext) { } } { - p.SetState(335) + p.SetState(338) p.DataType() } @@ -4514,14 +4543,14 @@ func (p *FuncTestCaseParser) ColumnValues() (localctx IColumnValuesContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(337) + p.SetState(340) p.Match(FuncTestCaseParserOParen) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(346) + p.SetState(349) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4530,10 +4559,10 @@ func (p *FuncTestCaseParser) ColumnValues() (localctx IColumnValuesContext) { if (int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&136343720296448) != 0 { { - p.SetState(338) + p.SetState(341) p.Literal() } - p.SetState(343) + p.SetState(346) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4542,7 +4571,7 @@ func (p *FuncTestCaseParser) ColumnValues() (localctx IColumnValuesContext) { for _la == FuncTestCaseParserComma { { - p.SetState(339) + p.SetState(342) p.Match(FuncTestCaseParserComma) if p.HasError() { // Recognition error - abort rule @@ -4550,11 +4579,11 @@ func (p *FuncTestCaseParser) ColumnValues() (localctx IColumnValuesContext) { } } { - p.SetState(340) + p.SetState(343) p.Literal() } - p.SetState(345) + p.SetState(348) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4564,7 +4593,7 @@ func (p *FuncTestCaseParser) ColumnValues() (localctx IColumnValuesContext) { } { - p.SetState(348) + p.SetState(351) p.Match(FuncTestCaseParserCParen) if p.HasError() { // Recognition error - abort rule @@ -4718,7 +4747,7 @@ func (s *LiteralContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *FuncTestCaseParser) Literal() (localctx ILiteralContext) { localctx = NewLiteralContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 34, FuncTestCaseParserRULE_literal) - p.SetState(361) + p.SetState(364) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4728,7 +4757,7 @@ func (p *FuncTestCaseParser) Literal() (localctx ILiteralContext) { case FuncTestCaseParserNullLiteral: p.EnterOuterAlt(localctx, 1) { - p.SetState(350) + p.SetState(353) p.Match(FuncTestCaseParserNullLiteral) if p.HasError() { // Recognition error - abort rule @@ -4739,14 +4768,14 @@ func (p *FuncTestCaseParser) Literal() (localctx ILiteralContext) { case FuncTestCaseParserNaN, FuncTestCaseParserIntegerLiteral, FuncTestCaseParserDecimalLiteral, FuncTestCaseParserFloatLiteral: p.EnterOuterAlt(localctx, 2) { - p.SetState(351) + p.SetState(354) p.NumericLiteral() } case FuncTestCaseParserBooleanLiteral: p.EnterOuterAlt(localctx, 3) { - p.SetState(352) + p.SetState(355) p.Match(FuncTestCaseParserBooleanLiteral) if p.HasError() { // Recognition error - abort rule @@ -4757,7 +4786,7 @@ func (p *FuncTestCaseParser) Literal() (localctx ILiteralContext) { case FuncTestCaseParserStringLiteral: p.EnterOuterAlt(localctx, 4) { - p.SetState(353) + p.SetState(356) p.Match(FuncTestCaseParserStringLiteral) if p.HasError() { // Recognition error - abort rule @@ -4768,7 +4797,7 @@ func (p *FuncTestCaseParser) Literal() (localctx ILiteralContext) { case FuncTestCaseParserDateLiteral: p.EnterOuterAlt(localctx, 5) { - p.SetState(354) + p.SetState(357) p.Match(FuncTestCaseParserDateLiteral) if p.HasError() { // Recognition error - abort rule @@ -4779,7 +4808,7 @@ func (p *FuncTestCaseParser) Literal() (localctx ILiteralContext) { case FuncTestCaseParserTimeLiteral: p.EnterOuterAlt(localctx, 6) { - p.SetState(355) + p.SetState(358) p.Match(FuncTestCaseParserTimeLiteral) if p.HasError() { // Recognition error - abort rule @@ -4790,7 +4819,7 @@ func (p *FuncTestCaseParser) Literal() (localctx ILiteralContext) { case FuncTestCaseParserTimestampLiteral: p.EnterOuterAlt(localctx, 7) { - p.SetState(356) + p.SetState(359) p.Match(FuncTestCaseParserTimestampLiteral) if p.HasError() { // Recognition error - abort rule @@ -4801,7 +4830,7 @@ func (p *FuncTestCaseParser) Literal() (localctx ILiteralContext) { case FuncTestCaseParserTimestampTzLiteral: p.EnterOuterAlt(localctx, 8) { - p.SetState(357) + p.SetState(360) p.Match(FuncTestCaseParserTimestampTzLiteral) if p.HasError() { // Recognition error - abort rule @@ -4812,7 +4841,7 @@ func (p *FuncTestCaseParser) Literal() (localctx ILiteralContext) { case FuncTestCaseParserIntervalYearLiteral: p.EnterOuterAlt(localctx, 9) { - p.SetState(358) + p.SetState(361) p.Match(FuncTestCaseParserIntervalYearLiteral) if p.HasError() { // Recognition error - abort rule @@ -4823,7 +4852,7 @@ func (p *FuncTestCaseParser) Literal() (localctx ILiteralContext) { case FuncTestCaseParserIntervalDayLiteral: p.EnterOuterAlt(localctx, 10) { - p.SetState(359) + p.SetState(362) p.Match(FuncTestCaseParserIntervalDayLiteral) if p.HasError() { // Recognition error - abort rule @@ -4834,7 +4863,7 @@ func (p *FuncTestCaseParser) Literal() (localctx ILiteralContext) { case FuncTestCaseParserIntervalCompoundLiteral: p.EnterOuterAlt(localctx, 11) { - p.SetState(360) + p.SetState(363) p.Match(FuncTestCaseParserIntervalCompoundLiteral) if p.HasError() { // Recognition error - abort rule @@ -4983,10 +5012,10 @@ func (p *FuncTestCaseParser) QualifiedAggregateFuncArgs() (localctx IQualifiedAg p.EnterOuterAlt(localctx, 1) { - p.SetState(363) + p.SetState(366) p.QualifiedAggregateFuncArg() } - p.SetState(368) + p.SetState(371) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4995,7 +5024,7 @@ func (p *FuncTestCaseParser) QualifiedAggregateFuncArgs() (localctx IQualifiedAg for _la == FuncTestCaseParserComma { { - p.SetState(364) + p.SetState(367) p.Match(FuncTestCaseParserComma) if p.HasError() { // Recognition error - abort rule @@ -5003,11 +5032,11 @@ func (p *FuncTestCaseParser) QualifiedAggregateFuncArgs() (localctx IQualifiedAg } } { - p.SetState(365) + p.SetState(368) p.QualifiedAggregateFuncArg() } - p.SetState(370) + p.SetState(373) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5151,10 +5180,10 @@ func (p *FuncTestCaseParser) AggregateFuncArgs() (localctx IAggregateFuncArgsCon p.EnterOuterAlt(localctx, 1) { - p.SetState(371) + p.SetState(374) p.AggregateFuncArg() } - p.SetState(376) + p.SetState(379) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5163,7 +5192,7 @@ func (p *FuncTestCaseParser) AggregateFuncArgs() (localctx IAggregateFuncArgsCon for _la == FuncTestCaseParserComma { { - p.SetState(372) + p.SetState(375) p.Match(FuncTestCaseParserComma) if p.HasError() { // Recognition error - abort rule @@ -5171,11 +5200,11 @@ func (p *FuncTestCaseParser) AggregateFuncArgs() (localctx IAggregateFuncArgsCon } } { - p.SetState(373) + p.SetState(376) p.AggregateFuncArg() } - p.SetState(378) + p.SetState(381) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5305,7 +5334,7 @@ func (s *QualifiedAggregateFuncArgContext) Accept(visitor antlr.ParseTreeVisitor func (p *FuncTestCaseParser) QualifiedAggregateFuncArg() (localctx IQualifiedAggregateFuncArgContext) { localctx = NewQualifiedAggregateFuncArgContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 40, FuncTestCaseParserRULE_qualifiedAggregateFuncArg) - p.SetState(383) + p.SetState(386) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5315,7 +5344,7 @@ func (p *FuncTestCaseParser) QualifiedAggregateFuncArg() (localctx IQualifiedAgg case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(379) + p.SetState(382) var _m = p.Match(FuncTestCaseParserIdentifier) @@ -5326,7 +5355,7 @@ func (p *FuncTestCaseParser) QualifiedAggregateFuncArg() (localctx IQualifiedAgg } } { - p.SetState(380) + p.SetState(383) p.Match(FuncTestCaseParserDot) if p.HasError() { // Recognition error - abort rule @@ -5334,7 +5363,7 @@ func (p *FuncTestCaseParser) QualifiedAggregateFuncArg() (localctx IQualifiedAgg } } { - p.SetState(381) + p.SetState(384) p.Match(FuncTestCaseParserColumnName) if p.HasError() { // Recognition error - abort rule @@ -5345,7 +5374,7 @@ func (p *FuncTestCaseParser) QualifiedAggregateFuncArg() (localctx IQualifiedAgg case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(382) + p.SetState(385) p.Argument() } @@ -5476,7 +5505,7 @@ func (s *AggregateFuncArgContext) Accept(visitor antlr.ParseTreeVisitor) interfa func (p *FuncTestCaseParser) AggregateFuncArg() (localctx IAggregateFuncArgContext) { localctx = NewAggregateFuncArgContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 42, FuncTestCaseParserRULE_aggregateFuncArg) - p.SetState(389) + p.SetState(392) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5486,7 +5515,7 @@ func (p *FuncTestCaseParser) AggregateFuncArg() (localctx IAggregateFuncArgConte case FuncTestCaseParserColumnName: p.EnterOuterAlt(localctx, 1) { - p.SetState(385) + p.SetState(388) p.Match(FuncTestCaseParserColumnName) if p.HasError() { // Recognition error - abort rule @@ -5494,7 +5523,7 @@ func (p *FuncTestCaseParser) AggregateFuncArg() (localctx IAggregateFuncArgConte } } { - p.SetState(386) + p.SetState(389) p.Match(FuncTestCaseParserDoubleColon) if p.HasError() { // Recognition error - abort rule @@ -5502,14 +5531,14 @@ func (p *FuncTestCaseParser) AggregateFuncArg() (localctx IAggregateFuncArgConte } } { - p.SetState(387) + p.SetState(390) p.DataType() } case FuncTestCaseParserNaN, FuncTestCaseParserIntegerLiteral, FuncTestCaseParserDecimalLiteral, FuncTestCaseParserFloatLiteral, FuncTestCaseParserBooleanLiteral, FuncTestCaseParserTimestampTzLiteral, FuncTestCaseParserTimestampLiteral, FuncTestCaseParserTimeLiteral, FuncTestCaseParserDateLiteral, FuncTestCaseParserIntervalYearLiteral, FuncTestCaseParserIntervalDayLiteral, FuncTestCaseParserIntervalCompoundLiteral, FuncTestCaseParserNullLiteral, FuncTestCaseParserStringLiteral, FuncTestCaseParserOParen, FuncTestCaseParserOBracket, FuncTestCaseParserIdentifier: p.EnterOuterAlt(localctx, 2) { - p.SetState(388) + p.SetState(391) p.Argument() } @@ -5624,7 +5653,7 @@ func (s *NumericLiteralContext) Accept(visitor antlr.ParseTreeVisitor) interface func (p *FuncTestCaseParser) NumericLiteral() (localctx INumericLiteralContext) { localctx = NewNumericLiteralContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 44, FuncTestCaseParserRULE_numericLiteral) - p.SetState(394) + p.SetState(397) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5634,7 +5663,7 @@ func (p *FuncTestCaseParser) NumericLiteral() (localctx INumericLiteralContext) case FuncTestCaseParserDecimalLiteral: p.EnterOuterAlt(localctx, 1) { - p.SetState(391) + p.SetState(394) p.Match(FuncTestCaseParserDecimalLiteral) if p.HasError() { // Recognition error - abort rule @@ -5645,7 +5674,7 @@ func (p *FuncTestCaseParser) NumericLiteral() (localctx INumericLiteralContext) case FuncTestCaseParserIntegerLiteral: p.EnterOuterAlt(localctx, 2) { - p.SetState(392) + p.SetState(395) p.Match(FuncTestCaseParserIntegerLiteral) if p.HasError() { // Recognition error - abort rule @@ -5656,7 +5685,7 @@ func (p *FuncTestCaseParser) NumericLiteral() (localctx INumericLiteralContext) case FuncTestCaseParserNaN, FuncTestCaseParserFloatLiteral: p.EnterOuterAlt(localctx, 3) { - p.SetState(393) + p.SetState(396) p.FloatLiteral() } @@ -5758,7 +5787,7 @@ func (p *FuncTestCaseParser) FloatLiteral() (localctx IFloatLiteralContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(396) + p.SetState(399) _la = p.GetTokenStream().LA(1) if !(_la == FuncTestCaseParserNaN || _la == FuncTestCaseParserFloatLiteral) { @@ -5877,7 +5906,7 @@ func (p *FuncTestCaseParser) NullArg() (localctx INullArgContext) { p.EnterRule(localctx, 48, FuncTestCaseParserRULE_nullArg) p.EnterOuterAlt(localctx, 1) { - p.SetState(398) + p.SetState(401) p.Match(FuncTestCaseParserNullLiteral) if p.HasError() { // Recognition error - abort rule @@ -5885,7 +5914,7 @@ func (p *FuncTestCaseParser) NullArg() (localctx INullArgContext) { } } { - p.SetState(399) + p.SetState(402) p.Match(FuncTestCaseParserDoubleColon) if p.HasError() { // Recognition error - abort rule @@ -5893,7 +5922,7 @@ func (p *FuncTestCaseParser) NullArg() (localctx INullArgContext) { } } { - p.SetState(400) + p.SetState(403) p.DataType() } @@ -6005,7 +6034,7 @@ func (p *FuncTestCaseParser) IntArg() (localctx IIntArgContext) { p.EnterRule(localctx, 50, FuncTestCaseParserRULE_intArg) p.EnterOuterAlt(localctx, 1) { - p.SetState(402) + p.SetState(405) p.Match(FuncTestCaseParserIntegerLiteral) if p.HasError() { // Recognition error - abort rule @@ -6013,7 +6042,7 @@ func (p *FuncTestCaseParser) IntArg() (localctx IIntArgContext) { } } { - p.SetState(403) + p.SetState(406) p.Match(FuncTestCaseParserDoubleColon) if p.HasError() { // Recognition error - abort rule @@ -6021,7 +6050,7 @@ func (p *FuncTestCaseParser) IntArg() (localctx IIntArgContext) { } } { - p.SetState(404) + p.SetState(407) p.IntType() } @@ -6145,11 +6174,11 @@ func (p *FuncTestCaseParser) FloatArg() (localctx IFloatArgContext) { p.EnterRule(localctx, 52, FuncTestCaseParserRULE_floatArg) p.EnterOuterAlt(localctx, 1) { - p.SetState(406) + p.SetState(409) p.NumericLiteral() } { - p.SetState(407) + p.SetState(410) p.Match(FuncTestCaseParserDoubleColon) if p.HasError() { // Recognition error - abort rule @@ -6157,7 +6186,7 @@ func (p *FuncTestCaseParser) FloatArg() (localctx IFloatArgContext) { } } { - p.SetState(408) + p.SetState(411) p.FloatType() } @@ -6281,11 +6310,11 @@ func (p *FuncTestCaseParser) DecimalArg() (localctx IDecimalArgContext) { p.EnterRule(localctx, 54, FuncTestCaseParserRULE_decimalArg) p.EnterOuterAlt(localctx, 1) { - p.SetState(410) + p.SetState(413) p.NumericLiteral() } { - p.SetState(411) + p.SetState(414) p.Match(FuncTestCaseParserDoubleColon) if p.HasError() { // Recognition error - abort rule @@ -6293,7 +6322,7 @@ func (p *FuncTestCaseParser) DecimalArg() (localctx IDecimalArgContext) { } } { - p.SetState(412) + p.SetState(415) p.DecimalType() } @@ -6405,7 +6434,7 @@ func (p *FuncTestCaseParser) BooleanArg() (localctx IBooleanArgContext) { p.EnterRule(localctx, 56, FuncTestCaseParserRULE_booleanArg) p.EnterOuterAlt(localctx, 1) { - p.SetState(414) + p.SetState(417) p.Match(FuncTestCaseParserBooleanLiteral) if p.HasError() { // Recognition error - abort rule @@ -6413,7 +6442,7 @@ func (p *FuncTestCaseParser) BooleanArg() (localctx IBooleanArgContext) { } } { - p.SetState(415) + p.SetState(418) p.Match(FuncTestCaseParserDoubleColon) if p.HasError() { // Recognition error - abort rule @@ -6421,7 +6450,7 @@ func (p *FuncTestCaseParser) BooleanArg() (localctx IBooleanArgContext) { } } { - p.SetState(416) + p.SetState(419) p.BooleanType() } @@ -6533,7 +6562,7 @@ func (p *FuncTestCaseParser) StringArg() (localctx IStringArgContext) { p.EnterRule(localctx, 58, FuncTestCaseParserRULE_stringArg) p.EnterOuterAlt(localctx, 1) { - p.SetState(418) + p.SetState(421) p.Match(FuncTestCaseParserStringLiteral) if p.HasError() { // Recognition error - abort rule @@ -6541,7 +6570,7 @@ func (p *FuncTestCaseParser) StringArg() (localctx IStringArgContext) { } } { - p.SetState(419) + p.SetState(422) p.Match(FuncTestCaseParserDoubleColon) if p.HasError() { // Recognition error - abort rule @@ -6549,7 +6578,7 @@ func (p *FuncTestCaseParser) StringArg() (localctx IStringArgContext) { } } { - p.SetState(420) + p.SetState(423) p.StringType() } @@ -6661,7 +6690,7 @@ func (p *FuncTestCaseParser) DateArg() (localctx IDateArgContext) { p.EnterRule(localctx, 60, FuncTestCaseParserRULE_dateArg) p.EnterOuterAlt(localctx, 1) { - p.SetState(422) + p.SetState(425) p.Match(FuncTestCaseParserDateLiteral) if p.HasError() { // Recognition error - abort rule @@ -6669,7 +6698,7 @@ func (p *FuncTestCaseParser) DateArg() (localctx IDateArgContext) { } } { - p.SetState(423) + p.SetState(426) p.Match(FuncTestCaseParserDoubleColon) if p.HasError() { // Recognition error - abort rule @@ -6677,7 +6706,7 @@ func (p *FuncTestCaseParser) DateArg() (localctx IDateArgContext) { } } { - p.SetState(424) + p.SetState(427) p.DateType() } @@ -6789,7 +6818,7 @@ func (p *FuncTestCaseParser) TimeArg() (localctx ITimeArgContext) { p.EnterRule(localctx, 62, FuncTestCaseParserRULE_timeArg) p.EnterOuterAlt(localctx, 1) { - p.SetState(426) + p.SetState(429) p.Match(FuncTestCaseParserTimeLiteral) if p.HasError() { // Recognition error - abort rule @@ -6797,7 +6826,7 @@ func (p *FuncTestCaseParser) TimeArg() (localctx ITimeArgContext) { } } { - p.SetState(427) + p.SetState(430) p.Match(FuncTestCaseParserDoubleColon) if p.HasError() { // Recognition error - abort rule @@ -6805,7 +6834,7 @@ func (p *FuncTestCaseParser) TimeArg() (localctx ITimeArgContext) { } } { - p.SetState(428) + p.SetState(431) p.TimeType() } @@ -6917,7 +6946,7 @@ func (p *FuncTestCaseParser) TimestampArg() (localctx ITimestampArgContext) { p.EnterRule(localctx, 64, FuncTestCaseParserRULE_timestampArg) p.EnterOuterAlt(localctx, 1) { - p.SetState(430) + p.SetState(433) p.Match(FuncTestCaseParserTimestampLiteral) if p.HasError() { // Recognition error - abort rule @@ -6925,7 +6954,7 @@ func (p *FuncTestCaseParser) TimestampArg() (localctx ITimestampArgContext) { } } { - p.SetState(431) + p.SetState(434) p.Match(FuncTestCaseParserDoubleColon) if p.HasError() { // Recognition error - abort rule @@ -6933,7 +6962,7 @@ func (p *FuncTestCaseParser) TimestampArg() (localctx ITimestampArgContext) { } } { - p.SetState(432) + p.SetState(435) p.TimestampType() } @@ -7045,7 +7074,7 @@ func (p *FuncTestCaseParser) TimestampTzArg() (localctx ITimestampTzArgContext) p.EnterRule(localctx, 66, FuncTestCaseParserRULE_timestampTzArg) p.EnterOuterAlt(localctx, 1) { - p.SetState(434) + p.SetState(437) p.Match(FuncTestCaseParserTimestampTzLiteral) if p.HasError() { // Recognition error - abort rule @@ -7053,7 +7082,7 @@ func (p *FuncTestCaseParser) TimestampTzArg() (localctx ITimestampTzArgContext) } } { - p.SetState(435) + p.SetState(438) p.Match(FuncTestCaseParserDoubleColon) if p.HasError() { // Recognition error - abort rule @@ -7061,7 +7090,7 @@ func (p *FuncTestCaseParser) TimestampTzArg() (localctx ITimestampTzArgContext) } } { - p.SetState(436) + p.SetState(439) p.TimestampTZType() } @@ -7173,7 +7202,7 @@ func (p *FuncTestCaseParser) IntervalYearArg() (localctx IIntervalYearArgContext p.EnterRule(localctx, 68, FuncTestCaseParserRULE_intervalYearArg) p.EnterOuterAlt(localctx, 1) { - p.SetState(438) + p.SetState(441) p.Match(FuncTestCaseParserIntervalYearLiteral) if p.HasError() { // Recognition error - abort rule @@ -7181,7 +7210,7 @@ func (p *FuncTestCaseParser) IntervalYearArg() (localctx IIntervalYearArgContext } } { - p.SetState(439) + p.SetState(442) p.Match(FuncTestCaseParserDoubleColon) if p.HasError() { // Recognition error - abort rule @@ -7189,7 +7218,7 @@ func (p *FuncTestCaseParser) IntervalYearArg() (localctx IIntervalYearArgContext } } { - p.SetState(440) + p.SetState(443) p.IntervalYearType() } @@ -7301,7 +7330,7 @@ func (p *FuncTestCaseParser) IntervalDayArg() (localctx IIntervalDayArgContext) p.EnterRule(localctx, 70, FuncTestCaseParserRULE_intervalDayArg) p.EnterOuterAlt(localctx, 1) { - p.SetState(442) + p.SetState(445) p.Match(FuncTestCaseParserIntervalDayLiteral) if p.HasError() { // Recognition error - abort rule @@ -7309,7 +7338,7 @@ func (p *FuncTestCaseParser) IntervalDayArg() (localctx IIntervalDayArgContext) } } { - p.SetState(443) + p.SetState(446) p.Match(FuncTestCaseParserDoubleColon) if p.HasError() { // Recognition error - abort rule @@ -7317,7 +7346,7 @@ func (p *FuncTestCaseParser) IntervalDayArg() (localctx IIntervalDayArgContext) } } { - p.SetState(444) + p.SetState(447) p.IntervalDayType() } @@ -7429,7 +7458,7 @@ func (p *FuncTestCaseParser) IntervalCompoundArg() (localctx IIntervalCompoundAr p.EnterRule(localctx, 72, FuncTestCaseParserRULE_intervalCompoundArg) p.EnterOuterAlt(localctx, 1) { - p.SetState(446) + p.SetState(449) p.Match(FuncTestCaseParserIntervalCompoundLiteral) if p.HasError() { // Recognition error - abort rule @@ -7437,7 +7466,7 @@ func (p *FuncTestCaseParser) IntervalCompoundArg() (localctx IIntervalCompoundAr } } { - p.SetState(447) + p.SetState(450) p.Match(FuncTestCaseParserDoubleColon) if p.HasError() { // Recognition error - abort rule @@ -7445,7 +7474,7 @@ func (p *FuncTestCaseParser) IntervalCompoundArg() (localctx IIntervalCompoundAr } } { - p.SetState(448) + p.SetState(451) p.IntervalCompoundType() } @@ -7557,7 +7586,7 @@ func (p *FuncTestCaseParser) FixedCharArg() (localctx IFixedCharArgContext) { p.EnterRule(localctx, 74, FuncTestCaseParserRULE_fixedCharArg) p.EnterOuterAlt(localctx, 1) { - p.SetState(450) + p.SetState(453) p.Match(FuncTestCaseParserStringLiteral) if p.HasError() { // Recognition error - abort rule @@ -7565,7 +7594,7 @@ func (p *FuncTestCaseParser) FixedCharArg() (localctx IFixedCharArgContext) { } } { - p.SetState(451) + p.SetState(454) p.Match(FuncTestCaseParserDoubleColon) if p.HasError() { // Recognition error - abort rule @@ -7573,7 +7602,7 @@ func (p *FuncTestCaseParser) FixedCharArg() (localctx IFixedCharArgContext) { } } { - p.SetState(452) + p.SetState(455) p.FixedCharType() } @@ -7685,7 +7714,7 @@ func (p *FuncTestCaseParser) VarCharArg() (localctx IVarCharArgContext) { p.EnterRule(localctx, 76, FuncTestCaseParserRULE_varCharArg) p.EnterOuterAlt(localctx, 1) { - p.SetState(454) + p.SetState(457) p.Match(FuncTestCaseParserStringLiteral) if p.HasError() { // Recognition error - abort rule @@ -7693,7 +7722,7 @@ func (p *FuncTestCaseParser) VarCharArg() (localctx IVarCharArgContext) { } } { - p.SetState(455) + p.SetState(458) p.Match(FuncTestCaseParserDoubleColon) if p.HasError() { // Recognition error - abort rule @@ -7701,7 +7730,7 @@ func (p *FuncTestCaseParser) VarCharArg() (localctx IVarCharArgContext) { } } { - p.SetState(456) + p.SetState(459) p.VarCharType() } @@ -7813,7 +7842,7 @@ func (p *FuncTestCaseParser) FixedBinaryArg() (localctx IFixedBinaryArgContext) p.EnterRule(localctx, 78, FuncTestCaseParserRULE_fixedBinaryArg) p.EnterOuterAlt(localctx, 1) { - p.SetState(458) + p.SetState(461) p.Match(FuncTestCaseParserStringLiteral) if p.HasError() { // Recognition error - abort rule @@ -7821,7 +7850,7 @@ func (p *FuncTestCaseParser) FixedBinaryArg() (localctx IFixedBinaryArgContext) } } { - p.SetState(459) + p.SetState(462) p.Match(FuncTestCaseParserDoubleColon) if p.HasError() { // Recognition error - abort rule @@ -7829,7 +7858,7 @@ func (p *FuncTestCaseParser) FixedBinaryArg() (localctx IFixedBinaryArgContext) } } { - p.SetState(460) + p.SetState(463) p.FixedBinaryType() } @@ -7941,7 +7970,7 @@ func (p *FuncTestCaseParser) PrecisionTimeArg() (localctx IPrecisionTimeArgConte p.EnterRule(localctx, 80, FuncTestCaseParserRULE_precisionTimeArg) p.EnterOuterAlt(localctx, 1) { - p.SetState(462) + p.SetState(465) p.Match(FuncTestCaseParserTimeLiteral) if p.HasError() { // Recognition error - abort rule @@ -7949,7 +7978,7 @@ func (p *FuncTestCaseParser) PrecisionTimeArg() (localctx IPrecisionTimeArgConte } } { - p.SetState(463) + p.SetState(466) p.Match(FuncTestCaseParserDoubleColon) if p.HasError() { // Recognition error - abort rule @@ -7957,7 +7986,7 @@ func (p *FuncTestCaseParser) PrecisionTimeArg() (localctx IPrecisionTimeArgConte } } { - p.SetState(464) + p.SetState(467) p.PrecisionTimeType() } @@ -8069,7 +8098,7 @@ func (p *FuncTestCaseParser) PrecisionTimestampArg() (localctx IPrecisionTimesta p.EnterRule(localctx, 82, FuncTestCaseParserRULE_precisionTimestampArg) p.EnterOuterAlt(localctx, 1) { - p.SetState(466) + p.SetState(469) p.Match(FuncTestCaseParserTimestampLiteral) if p.HasError() { // Recognition error - abort rule @@ -8077,7 +8106,7 @@ func (p *FuncTestCaseParser) PrecisionTimestampArg() (localctx IPrecisionTimesta } } { - p.SetState(467) + p.SetState(470) p.Match(FuncTestCaseParserDoubleColon) if p.HasError() { // Recognition error - abort rule @@ -8085,7 +8114,7 @@ func (p *FuncTestCaseParser) PrecisionTimestampArg() (localctx IPrecisionTimesta } } { - p.SetState(468) + p.SetState(471) p.PrecisionTimestampType() } @@ -8197,7 +8226,7 @@ func (p *FuncTestCaseParser) PrecisionTimestampTZArg() (localctx IPrecisionTimes p.EnterRule(localctx, 84, FuncTestCaseParserRULE_precisionTimestampTZArg) p.EnterOuterAlt(localctx, 1) { - p.SetState(470) + p.SetState(473) p.Match(FuncTestCaseParserTimestampTzLiteral) if p.HasError() { // Recognition error - abort rule @@ -8205,7 +8234,7 @@ func (p *FuncTestCaseParser) PrecisionTimestampTZArg() (localctx IPrecisionTimes } } { - p.SetState(471) + p.SetState(474) p.Match(FuncTestCaseParserDoubleColon) if p.HasError() { // Recognition error - abort rule @@ -8213,7 +8242,7 @@ func (p *FuncTestCaseParser) PrecisionTimestampTZArg() (localctx IPrecisionTimes } } { - p.SetState(472) + p.SetState(475) p.PrecisionTimestampTZType() } @@ -8337,11 +8366,11 @@ func (p *FuncTestCaseParser) ListArg() (localctx IListArgContext) { p.EnterRule(localctx, 86, FuncTestCaseParserRULE_listArg) p.EnterOuterAlt(localctx, 1) { - p.SetState(474) + p.SetState(477) p.LiteralList() } { - p.SetState(475) + p.SetState(478) p.Match(FuncTestCaseParserDoubleColon) if p.HasError() { // Recognition error - abort rule @@ -8349,7 +8378,7 @@ func (p *FuncTestCaseParser) ListArg() (localctx IListArgContext) { } } { - p.SetState(476) + p.SetState(479) p.ListType() } @@ -8473,11 +8502,11 @@ func (p *FuncTestCaseParser) LambdaArg() (localctx ILambdaArgContext) { p.EnterRule(localctx, 88, FuncTestCaseParserRULE_lambdaArg) p.EnterOuterAlt(localctx, 1) { - p.SetState(478) + p.SetState(481) p.LiteralLambda() } { - p.SetState(479) + p.SetState(482) p.Match(FuncTestCaseParserDoubleColon) if p.HasError() { // Recognition error - abort rule @@ -8485,7 +8514,7 @@ func (p *FuncTestCaseParser) LambdaArg() (localctx ILambdaArgContext) { } } { - p.SetState(480) + p.SetState(483) p.FuncType() } @@ -8502,6 +8531,126 @@ errorExit: goto errorExit // Trick to prevent compiler error if the label is not used } +// IEnumArgContext is an interface to support dynamic dispatch. +type IEnumArgContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + Identifier() antlr.TerminalNode + DoubleColon() antlr.TerminalNode + EnumType() antlr.TerminalNode + + // IsEnumArgContext differentiates from other interfaces. + IsEnumArgContext() +} + +type EnumArgContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyEnumArgContext() *EnumArgContext { + var p = new(EnumArgContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = FuncTestCaseParserRULE_enumArg + return p +} + +func InitEmptyEnumArgContext(p *EnumArgContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = FuncTestCaseParserRULE_enumArg +} + +func (*EnumArgContext) IsEnumArgContext() {} + +func NewEnumArgContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *EnumArgContext { + var p = new(EnumArgContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = FuncTestCaseParserRULE_enumArg + + return p +} + +func (s *EnumArgContext) GetParser() antlr.Parser { return s.parser } + +func (s *EnumArgContext) Identifier() antlr.TerminalNode { + return s.GetToken(FuncTestCaseParserIdentifier, 0) +} + +func (s *EnumArgContext) DoubleColon() antlr.TerminalNode { + return s.GetToken(FuncTestCaseParserDoubleColon, 0) +} + +func (s *EnumArgContext) EnumType() antlr.TerminalNode { + return s.GetToken(FuncTestCaseParserEnumType, 0) +} + +func (s *EnumArgContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *EnumArgContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *EnumArgContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case FuncTestCaseParserVisitor: + return t.VisitEnumArg(s) + + default: + return t.VisitChildren(s) + } +} + +func (p *FuncTestCaseParser) EnumArg() (localctx IEnumArgContext) { + localctx = NewEnumArgContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 90, FuncTestCaseParserRULE_enumArg) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(485) + p.Match(FuncTestCaseParserIdentifier) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(486) + p.Match(FuncTestCaseParserDoubleColon) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(487) + p.Match(FuncTestCaseParserEnumType) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + +errorExit: + if p.HasError() { + v := p.GetError() + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + p.SetError(nil) + } + p.ExitRule() + return localctx + goto errorExit // Trick to prevent compiler error if the label is not used +} + // ILiteralListContext is an interface to support dynamic dispatch. type ILiteralListContext interface { antlr.ParserRuleContext @@ -8630,19 +8779,19 @@ func (s *LiteralListContext) Accept(visitor antlr.ParseTreeVisitor) interface{} func (p *FuncTestCaseParser) LiteralList() (localctx ILiteralListContext) { localctx = NewLiteralListContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 90, FuncTestCaseParserRULE_literalList) + p.EnterRule(localctx, 92, FuncTestCaseParserRULE_literalList) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(482) + p.SetState(489) p.Match(FuncTestCaseParserOBracket) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(491) + p.SetState(498) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8651,10 +8800,10 @@ func (p *FuncTestCaseParser) LiteralList() (localctx ILiteralListContext) { if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&136343720296448) != 0) || _la == FuncTestCaseParserOBracket { { - p.SetState(483) + p.SetState(490) p.ListElement() } - p.SetState(488) + p.SetState(495) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8663,7 +8812,7 @@ func (p *FuncTestCaseParser) LiteralList() (localctx ILiteralListContext) { for _la == FuncTestCaseParserComma { { - p.SetState(484) + p.SetState(491) p.Match(FuncTestCaseParserComma) if p.HasError() { // Recognition error - abort rule @@ -8671,11 +8820,11 @@ func (p *FuncTestCaseParser) LiteralList() (localctx ILiteralListContext) { } } { - p.SetState(485) + p.SetState(492) p.ListElement() } - p.SetState(490) + p.SetState(497) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8685,7 +8834,7 @@ func (p *FuncTestCaseParser) LiteralList() (localctx ILiteralListContext) { } { - p.SetState(493) + p.SetState(500) p.Match(FuncTestCaseParserCBracket) if p.HasError() { // Recognition error - abort rule @@ -8805,8 +8954,8 @@ func (s *ListElementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} func (p *FuncTestCaseParser) ListElement() (localctx IListElementContext) { localctx = NewListElementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 92, FuncTestCaseParserRULE_listElement) - p.SetState(497) + p.EnterRule(localctx, 94, FuncTestCaseParserRULE_listElement) + p.SetState(504) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8816,14 +8965,14 @@ func (p *FuncTestCaseParser) ListElement() (localctx IListElementContext) { case FuncTestCaseParserNaN, FuncTestCaseParserIntegerLiteral, FuncTestCaseParserDecimalLiteral, FuncTestCaseParserFloatLiteral, FuncTestCaseParserBooleanLiteral, FuncTestCaseParserTimestampTzLiteral, FuncTestCaseParserTimestampLiteral, FuncTestCaseParserTimeLiteral, FuncTestCaseParserDateLiteral, FuncTestCaseParserIntervalYearLiteral, FuncTestCaseParserIntervalDayLiteral, FuncTestCaseParserIntervalCompoundLiteral, FuncTestCaseParserNullLiteral, FuncTestCaseParserStringLiteral: p.EnterOuterAlt(localctx, 1) { - p.SetState(495) + p.SetState(502) p.Literal() } case FuncTestCaseParserOBracket: p.EnterOuterAlt(localctx, 2) { - p.SetState(496) + p.SetState(503) p.LiteralList() } @@ -8959,10 +9108,10 @@ func (s *LiteralLambdaContext) Accept(visitor antlr.ParseTreeVisitor) interface{ func (p *FuncTestCaseParser) LiteralLambda() (localctx ILiteralLambdaContext) { localctx = NewLiteralLambdaContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 94, FuncTestCaseParserRULE_literalLambda) + p.EnterRule(localctx, 96, FuncTestCaseParserRULE_literalLambda) p.EnterOuterAlt(localctx, 1) { - p.SetState(499) + p.SetState(506) p.Match(FuncTestCaseParserOParen) if p.HasError() { // Recognition error - abort rule @@ -8970,11 +9119,11 @@ func (p *FuncTestCaseParser) LiteralLambda() (localctx ILiteralLambdaContext) { } } { - p.SetState(500) + p.SetState(507) p.LambdaParameters() } { - p.SetState(501) + p.SetState(508) p.Match(FuncTestCaseParserArrow) if p.HasError() { // Recognition error - abort rule @@ -8982,11 +9131,11 @@ func (p *FuncTestCaseParser) LiteralLambda() (localctx ILiteralLambdaContext) { } } { - p.SetState(502) + p.SetState(509) p.LambdaBody() } { - p.SetState(503) + p.SetState(510) p.Match(FuncTestCaseParserCParen) if p.HasError() { // Recognition error - abort rule @@ -9147,10 +9296,10 @@ func (s *SingleParamContext) Accept(visitor antlr.ParseTreeVisitor) interface{} func (p *FuncTestCaseParser) LambdaParameters() (localctx ILambdaParametersContext) { localctx = NewLambdaParametersContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 96, FuncTestCaseParserRULE_lambdaParameters) + p.EnterRule(localctx, 98, FuncTestCaseParserRULE_lambdaParameters) var _la int - p.SetState(515) + p.SetState(522) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9161,7 +9310,7 @@ func (p *FuncTestCaseParser) LambdaParameters() (localctx ILambdaParametersConte localctx = NewSingleParamContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(505) + p.SetState(512) p.Match(FuncTestCaseParserIdentifier) if p.HasError() { // Recognition error - abort rule @@ -9173,7 +9322,7 @@ func (p *FuncTestCaseParser) LambdaParameters() (localctx ILambdaParametersConte localctx = NewTupleParamsContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(506) + p.SetState(513) p.Match(FuncTestCaseParserOParen) if p.HasError() { // Recognition error - abort rule @@ -9181,14 +9330,14 @@ func (p *FuncTestCaseParser) LambdaParameters() (localctx ILambdaParametersConte } } { - p.SetState(507) + p.SetState(514) p.Match(FuncTestCaseParserIdentifier) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(510) + p.SetState(517) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9197,7 +9346,7 @@ func (p *FuncTestCaseParser) LambdaParameters() (localctx ILambdaParametersConte for ok := true; ok; ok = _la == FuncTestCaseParserComma { { - p.SetState(508) + p.SetState(515) p.Match(FuncTestCaseParserComma) if p.HasError() { // Recognition error - abort rule @@ -9205,7 +9354,7 @@ func (p *FuncTestCaseParser) LambdaParameters() (localctx ILambdaParametersConte } } { - p.SetState(509) + p.SetState(516) p.Match(FuncTestCaseParserIdentifier) if p.HasError() { // Recognition error - abort rule @@ -9213,7 +9362,7 @@ func (p *FuncTestCaseParser) LambdaParameters() (localctx ILambdaParametersConte } } - p.SetState(512) + p.SetState(519) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9221,7 +9370,7 @@ func (p *FuncTestCaseParser) LambdaParameters() (localctx ILambdaParametersConte _la = p.GetTokenStream().LA(1) } { - p.SetState(514) + p.SetState(521) p.Match(FuncTestCaseParserCParen) if p.HasError() { // Recognition error - abort rule @@ -9356,14 +9505,14 @@ func (s *LambdaBodyContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *FuncTestCaseParser) LambdaBody() (localctx ILambdaBodyContext) { localctx = NewLambdaBodyContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 98, FuncTestCaseParserRULE_lambdaBody) + p.EnterRule(localctx, 100, FuncTestCaseParserRULE_lambdaBody) p.EnterOuterAlt(localctx, 1) { - p.SetState(517) + p.SetState(524) p.Identifier() } { - p.SetState(518) + p.SetState(525) p.Match(FuncTestCaseParserOParen) if p.HasError() { // Recognition error - abort rule @@ -9371,11 +9520,11 @@ func (p *FuncTestCaseParser) LambdaBody() (localctx ILambdaBodyContext) { } } { - p.SetState(519) + p.SetState(526) p.Arguments() } { - p.SetState(520) + p.SetState(527) p.Match(FuncTestCaseParserCParen) if p.HasError() { // Recognition error - abort rule @@ -9495,8 +9644,8 @@ func (s *DataTypeContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *FuncTestCaseParser) DataType() (localctx IDataTypeContext) { localctx = NewDataTypeContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 100, FuncTestCaseParserRULE_dataType) - p.SetState(524) + p.EnterRule(localctx, 102, FuncTestCaseParserRULE_dataType) + p.SetState(531) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9506,14 +9655,14 @@ func (p *FuncTestCaseParser) DataType() (localctx IDataTypeContext) { case FuncTestCaseParserBoolean, FuncTestCaseParserI8, FuncTestCaseParserI16, FuncTestCaseParserI32, FuncTestCaseParserI64, FuncTestCaseParserFP32, FuncTestCaseParserFP64, FuncTestCaseParserString_, FuncTestCaseParserBinary, FuncTestCaseParserTimestamp, FuncTestCaseParserTimestamp_TZ, FuncTestCaseParserDate, FuncTestCaseParserTime, FuncTestCaseParserInterval_Year, FuncTestCaseParserUUID, FuncTestCaseParserUserDefined, FuncTestCaseParserBool, FuncTestCaseParserStr, FuncTestCaseParserVBin, FuncTestCaseParserTs, FuncTestCaseParserTsTZ, FuncTestCaseParserIYear: p.EnterOuterAlt(localctx, 1) { - p.SetState(522) + p.SetState(529) p.ScalarType() } case FuncTestCaseParserFunc, FuncTestCaseParserInterval_Day, FuncTestCaseParserInterval_Compound, FuncTestCaseParserDecimal, FuncTestCaseParserPrecision_Time, FuncTestCaseParserPrecision_Timestamp, FuncTestCaseParserPrecision_Timestamp_TZ, FuncTestCaseParserFixedChar, FuncTestCaseParserVarChar, FuncTestCaseParserFixedBinary, FuncTestCaseParserList, FuncTestCaseParserIDay, FuncTestCaseParserICompound, FuncTestCaseParserDec, FuncTestCaseParserPT, FuncTestCaseParserPTs, FuncTestCaseParserPTsTZ, FuncTestCaseParserFChar, FuncTestCaseParserVChar, FuncTestCaseParserFBin: p.EnterOuterAlt(localctx, 2) { - p.SetState(523) + p.SetState(530) p.ParameterizedType() } @@ -10117,10 +10266,10 @@ func (s *TimestampTzContext) Accept(visitor antlr.ParseTreeVisitor) interface{} func (p *FuncTestCaseParser) ScalarType() (localctx IScalarTypeContext) { localctx = NewScalarTypeContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 102, FuncTestCaseParserRULE_scalarType) + p.EnterRule(localctx, 104, FuncTestCaseParserRULE_scalarType) var _la int - p.SetState(545) + p.SetState(552) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -10131,7 +10280,7 @@ func (p *FuncTestCaseParser) ScalarType() (localctx IScalarTypeContext) { localctx = NewBooleanContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(526) + p.SetState(533) p.BooleanType() } @@ -10139,7 +10288,7 @@ func (p *FuncTestCaseParser) ScalarType() (localctx IScalarTypeContext) { localctx = NewIntContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(527) + p.SetState(534) p.IntType() } @@ -10147,7 +10296,7 @@ func (p *FuncTestCaseParser) ScalarType() (localctx IScalarTypeContext) { localctx = NewFloatContext(p, localctx) p.EnterOuterAlt(localctx, 3) { - p.SetState(528) + p.SetState(535) p.FloatType() } @@ -10155,7 +10304,7 @@ func (p *FuncTestCaseParser) ScalarType() (localctx IScalarTypeContext) { localctx = NewStringContext(p, localctx) p.EnterOuterAlt(localctx, 4) { - p.SetState(529) + p.SetState(536) p.StringType() } @@ -10163,7 +10312,7 @@ func (p *FuncTestCaseParser) ScalarType() (localctx IScalarTypeContext) { localctx = NewBinaryContext(p, localctx) p.EnterOuterAlt(localctx, 5) { - p.SetState(530) + p.SetState(537) p.BinaryType() } @@ -10171,7 +10320,7 @@ func (p *FuncTestCaseParser) ScalarType() (localctx IScalarTypeContext) { localctx = NewTimestampContext(p, localctx) p.EnterOuterAlt(localctx, 6) { - p.SetState(531) + p.SetState(538) p.TimestampType() } @@ -10179,7 +10328,7 @@ func (p *FuncTestCaseParser) ScalarType() (localctx IScalarTypeContext) { localctx = NewTimestampTzContext(p, localctx) p.EnterOuterAlt(localctx, 7) { - p.SetState(532) + p.SetState(539) p.TimestampTZType() } @@ -10187,7 +10336,7 @@ func (p *FuncTestCaseParser) ScalarType() (localctx IScalarTypeContext) { localctx = NewDateContext(p, localctx) p.EnterOuterAlt(localctx, 8) { - p.SetState(533) + p.SetState(540) p.DateType() } @@ -10195,7 +10344,7 @@ func (p *FuncTestCaseParser) ScalarType() (localctx IScalarTypeContext) { localctx = NewTimeContext(p, localctx) p.EnterOuterAlt(localctx, 9) { - p.SetState(534) + p.SetState(541) p.TimeType() } @@ -10203,7 +10352,7 @@ func (p *FuncTestCaseParser) ScalarType() (localctx IScalarTypeContext) { localctx = NewIntervalYearContext(p, localctx) p.EnterOuterAlt(localctx, 10) { - p.SetState(535) + p.SetState(542) p.IntervalYearType() } @@ -10211,14 +10360,14 @@ func (p *FuncTestCaseParser) ScalarType() (localctx IScalarTypeContext) { localctx = NewUuidContext(p, localctx) p.EnterOuterAlt(localctx, 11) { - p.SetState(536) + p.SetState(543) p.Match(FuncTestCaseParserUUID) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(538) + p.SetState(545) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -10227,7 +10376,7 @@ func (p *FuncTestCaseParser) ScalarType() (localctx IScalarTypeContext) { if _la == FuncTestCaseParserQMark { { - p.SetState(537) + p.SetState(544) var _m = p.Match(FuncTestCaseParserQMark) @@ -10244,7 +10393,7 @@ func (p *FuncTestCaseParser) ScalarType() (localctx IScalarTypeContext) { localctx = NewUserDefinedContext(p, localctx) p.EnterOuterAlt(localctx, 12) { - p.SetState(540) + p.SetState(547) p.Match(FuncTestCaseParserUserDefined) if p.HasError() { // Recognition error - abort rule @@ -10252,14 +10401,14 @@ func (p *FuncTestCaseParser) ScalarType() (localctx IScalarTypeContext) { } } { - p.SetState(541) + p.SetState(548) p.Match(FuncTestCaseParserIdentifier) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(543) + p.SetState(550) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -10268,7 +10417,7 @@ func (p *FuncTestCaseParser) ScalarType() (localctx IScalarTypeContext) { if _la == FuncTestCaseParserQMark { { - p.SetState(542) + p.SetState(549) var _m = p.Match(FuncTestCaseParserQMark) @@ -10390,12 +10539,12 @@ func (s *BooleanTypeContext) Accept(visitor antlr.ParseTreeVisitor) interface{} func (p *FuncTestCaseParser) BooleanType() (localctx IBooleanTypeContext) { localctx = NewBooleanTypeContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 104, FuncTestCaseParserRULE_booleanType) + p.EnterRule(localctx, 106, FuncTestCaseParserRULE_booleanType) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(547) + p.SetState(554) _la = p.GetTokenStream().LA(1) if !(_la == FuncTestCaseParserBoolean || _la == FuncTestCaseParserBool) { @@ -10405,7 +10554,7 @@ func (p *FuncTestCaseParser) BooleanType() (localctx IBooleanTypeContext) { p.Consume() } } - p.SetState(549) + p.SetState(556) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -10414,7 +10563,7 @@ func (p *FuncTestCaseParser) BooleanType() (localctx IBooleanTypeContext) { if _la == FuncTestCaseParserQMark { { - p.SetState(548) + p.SetState(555) var _m = p.Match(FuncTestCaseParserQMark) @@ -10531,12 +10680,12 @@ func (s *StringTypeContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *FuncTestCaseParser) StringType() (localctx IStringTypeContext) { localctx = NewStringTypeContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 106, FuncTestCaseParserRULE_stringType) + p.EnterRule(localctx, 108, FuncTestCaseParserRULE_stringType) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(551) + p.SetState(558) _la = p.GetTokenStream().LA(1) if !(_la == FuncTestCaseParserString_ || _la == FuncTestCaseParserStr) { @@ -10546,7 +10695,7 @@ func (p *FuncTestCaseParser) StringType() (localctx IStringTypeContext) { p.Consume() } } - p.SetState(553) + p.SetState(560) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -10555,7 +10704,7 @@ func (p *FuncTestCaseParser) StringType() (localctx IStringTypeContext) { if _la == FuncTestCaseParserQMark { { - p.SetState(552) + p.SetState(559) var _m = p.Match(FuncTestCaseParserQMark) @@ -10672,12 +10821,12 @@ func (s *BinaryTypeContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *FuncTestCaseParser) BinaryType() (localctx IBinaryTypeContext) { localctx = NewBinaryTypeContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 108, FuncTestCaseParserRULE_binaryType) + p.EnterRule(localctx, 110, FuncTestCaseParserRULE_binaryType) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(555) + p.SetState(562) _la = p.GetTokenStream().LA(1) if !(_la == FuncTestCaseParserBinary || _la == FuncTestCaseParserVBin) { @@ -10687,7 +10836,7 @@ func (p *FuncTestCaseParser) BinaryType() (localctx IBinaryTypeContext) { p.Consume() } } - p.SetState(557) + p.SetState(564) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -10696,7 +10845,7 @@ func (p *FuncTestCaseParser) BinaryType() (localctx IBinaryTypeContext) { if _la == FuncTestCaseParserQMark { { - p.SetState(556) + p.SetState(563) var _m = p.Match(FuncTestCaseParserQMark) @@ -10823,22 +10972,22 @@ func (s *IntTypeContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *FuncTestCaseParser) IntType() (localctx IIntTypeContext) { localctx = NewIntTypeContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 110, FuncTestCaseParserRULE_intType) + p.EnterRule(localctx, 112, FuncTestCaseParserRULE_intType) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(559) + p.SetState(566) _la = p.GetTokenStream().LA(1) - if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&540431955284459520) != 0) { + if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&1080863910568919040) != 0) { p.GetErrorHandler().RecoverInline(p) } else { p.GetErrorHandler().ReportMatch(p) p.Consume() } } - p.SetState(561) + p.SetState(568) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -10847,7 +10996,7 @@ func (p *FuncTestCaseParser) IntType() (localctx IIntTypeContext) { if _la == FuncTestCaseParserQMark { { - p.SetState(560) + p.SetState(567) var _m = p.Match(FuncTestCaseParserQMark) @@ -10964,12 +11113,12 @@ func (s *FloatTypeContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *FuncTestCaseParser) FloatType() (localctx IFloatTypeContext) { localctx = NewFloatTypeContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 112, FuncTestCaseParserRULE_floatType) + p.EnterRule(localctx, 114, FuncTestCaseParserRULE_floatType) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(563) + p.SetState(570) _la = p.GetTokenStream().LA(1) if !(_la == FuncTestCaseParserFP32 || _la == FuncTestCaseParserFP64) { @@ -10979,7 +11128,7 @@ func (p *FuncTestCaseParser) FloatType() (localctx IFloatTypeContext) { p.Consume() } } - p.SetState(565) + p.SetState(572) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -10988,7 +11137,7 @@ func (p *FuncTestCaseParser) FloatType() (localctx IFloatTypeContext) { if _la == FuncTestCaseParserQMark { { - p.SetState(564) + p.SetState(571) var _m = p.Match(FuncTestCaseParserQMark) @@ -11100,19 +11249,19 @@ func (s *DateTypeContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *FuncTestCaseParser) DateType() (localctx IDateTypeContext) { localctx = NewDateTypeContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 114, FuncTestCaseParserRULE_dateType) + p.EnterRule(localctx, 116, FuncTestCaseParserRULE_dateType) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(567) + p.SetState(574) p.Match(FuncTestCaseParserDate) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(569) + p.SetState(576) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11121,7 +11270,7 @@ func (p *FuncTestCaseParser) DateType() (localctx IDateTypeContext) { if _la == FuncTestCaseParserQMark { { - p.SetState(568) + p.SetState(575) var _m = p.Match(FuncTestCaseParserQMark) @@ -11233,19 +11382,19 @@ func (s *TimeTypeContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *FuncTestCaseParser) TimeType() (localctx ITimeTypeContext) { localctx = NewTimeTypeContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 116, FuncTestCaseParserRULE_timeType) + p.EnterRule(localctx, 118, FuncTestCaseParserRULE_timeType) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(571) + p.SetState(578) p.Match(FuncTestCaseParserTime) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(573) + p.SetState(580) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11254,7 +11403,7 @@ func (p *FuncTestCaseParser) TimeType() (localctx ITimeTypeContext) { if _la == FuncTestCaseParserQMark { { - p.SetState(572) + p.SetState(579) var _m = p.Match(FuncTestCaseParserQMark) @@ -11371,12 +11520,12 @@ func (s *TimestampTypeContext) Accept(visitor antlr.ParseTreeVisitor) interface{ func (p *FuncTestCaseParser) TimestampType() (localctx ITimestampTypeContext) { localctx = NewTimestampTypeContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 118, FuncTestCaseParserRULE_timestampType) + p.EnterRule(localctx, 120, FuncTestCaseParserRULE_timestampType) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(575) + p.SetState(582) _la = p.GetTokenStream().LA(1) if !(_la == FuncTestCaseParserTimestamp || _la == FuncTestCaseParserTs) { @@ -11386,7 +11535,7 @@ func (p *FuncTestCaseParser) TimestampType() (localctx ITimestampTypeContext) { p.Consume() } } - p.SetState(577) + p.SetState(584) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11395,7 +11544,7 @@ func (p *FuncTestCaseParser) TimestampType() (localctx ITimestampTypeContext) { if _la == FuncTestCaseParserQMark { { - p.SetState(576) + p.SetState(583) var _m = p.Match(FuncTestCaseParserQMark) @@ -11512,12 +11661,12 @@ func (s *TimestampTZTypeContext) Accept(visitor antlr.ParseTreeVisitor) interfac func (p *FuncTestCaseParser) TimestampTZType() (localctx ITimestampTZTypeContext) { localctx = NewTimestampTZTypeContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 120, FuncTestCaseParserRULE_timestampTZType) + p.EnterRule(localctx, 122, FuncTestCaseParserRULE_timestampTZType) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(579) + p.SetState(586) _la = p.GetTokenStream().LA(1) if !(_la == FuncTestCaseParserTimestamp_TZ || _la == FuncTestCaseParserTsTZ) { @@ -11527,7 +11676,7 @@ func (p *FuncTestCaseParser) TimestampTZType() (localctx ITimestampTZTypeContext p.Consume() } } - p.SetState(581) + p.SetState(588) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11536,7 +11685,7 @@ func (p *FuncTestCaseParser) TimestampTZType() (localctx ITimestampTZTypeContext if _la == FuncTestCaseParserQMark { { - p.SetState(580) + p.SetState(587) var _m = p.Match(FuncTestCaseParserQMark) @@ -11653,12 +11802,12 @@ func (s *IntervalYearTypeContext) Accept(visitor antlr.ParseTreeVisitor) interfa func (p *FuncTestCaseParser) IntervalYearType() (localctx IIntervalYearTypeContext) { localctx = NewIntervalYearTypeContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 122, FuncTestCaseParserRULE_intervalYearType) + p.EnterRule(localctx, 124, FuncTestCaseParserRULE_intervalYearType) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(583) + p.SetState(590) _la = p.GetTokenStream().LA(1) if !(_la == FuncTestCaseParserInterval_Year || _la == FuncTestCaseParserIYear) { @@ -11668,7 +11817,7 @@ func (p *FuncTestCaseParser) IntervalYearType() (localctx IIntervalYearTypeConte p.Consume() } } - p.SetState(585) + p.SetState(592) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11677,7 +11826,7 @@ func (p *FuncTestCaseParser) IntervalYearType() (localctx IIntervalYearTypeConte if _la == FuncTestCaseParserQMark { { - p.SetState(584) + p.SetState(591) var _m = p.Match(FuncTestCaseParserQMark) @@ -11832,12 +11981,12 @@ func (s *IntervalDayTypeContext) Accept(visitor antlr.ParseTreeVisitor) interfac func (p *FuncTestCaseParser) IntervalDayType() (localctx IIntervalDayTypeContext) { localctx = NewIntervalDayTypeContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 124, FuncTestCaseParserRULE_intervalDayType) + p.EnterRule(localctx, 126, FuncTestCaseParserRULE_intervalDayType) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(587) + p.SetState(594) _la = p.GetTokenStream().LA(1) if !(_la == FuncTestCaseParserInterval_Day || _la == FuncTestCaseParserIDay) { @@ -11847,7 +11996,7 @@ func (p *FuncTestCaseParser) IntervalDayType() (localctx IIntervalDayTypeContext p.Consume() } } - p.SetState(589) + p.SetState(596) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11856,7 +12005,7 @@ func (p *FuncTestCaseParser) IntervalDayType() (localctx IIntervalDayTypeContext if _la == FuncTestCaseParserQMark { { - p.SetState(588) + p.SetState(595) var _m = p.Match(FuncTestCaseParserQMark) @@ -11868,7 +12017,7 @@ func (p *FuncTestCaseParser) IntervalDayType() (localctx IIntervalDayTypeContext } } - p.SetState(595) + p.SetState(602) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11877,7 +12026,7 @@ func (p *FuncTestCaseParser) IntervalDayType() (localctx IIntervalDayTypeContext if _la == FuncTestCaseParserOAngleBracket { { - p.SetState(591) + p.SetState(598) p.Match(FuncTestCaseParserOAngleBracket) if p.HasError() { // Recognition error - abort rule @@ -11885,14 +12034,14 @@ func (p *FuncTestCaseParser) IntervalDayType() (localctx IIntervalDayTypeContext } } { - p.SetState(592) + p.SetState(599) var _x = p.NumericParameter() localctx.(*IntervalDayTypeContext).len_ = _x } { - p.SetState(593) + p.SetState(600) p.Match(FuncTestCaseParserCAngleBracket) if p.HasError() { // Recognition error - abort rule @@ -12044,12 +12193,12 @@ func (s *IntervalCompoundTypeContext) Accept(visitor antlr.ParseTreeVisitor) int func (p *FuncTestCaseParser) IntervalCompoundType() (localctx IIntervalCompoundTypeContext) { localctx = NewIntervalCompoundTypeContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 126, FuncTestCaseParserRULE_intervalCompoundType) + p.EnterRule(localctx, 128, FuncTestCaseParserRULE_intervalCompoundType) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(597) + p.SetState(604) _la = p.GetTokenStream().LA(1) if !(_la == FuncTestCaseParserInterval_Compound || _la == FuncTestCaseParserICompound) { @@ -12059,7 +12208,7 @@ func (p *FuncTestCaseParser) IntervalCompoundType() (localctx IIntervalCompoundT p.Consume() } } - p.SetState(599) + p.SetState(606) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12068,7 +12217,7 @@ func (p *FuncTestCaseParser) IntervalCompoundType() (localctx IIntervalCompoundT if _la == FuncTestCaseParserQMark { { - p.SetState(598) + p.SetState(605) var _m = p.Match(FuncTestCaseParserQMark) @@ -12080,7 +12229,7 @@ func (p *FuncTestCaseParser) IntervalCompoundType() (localctx IIntervalCompoundT } } - p.SetState(605) + p.SetState(612) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12089,7 +12238,7 @@ func (p *FuncTestCaseParser) IntervalCompoundType() (localctx IIntervalCompoundT if _la == FuncTestCaseParserOAngleBracket { { - p.SetState(601) + p.SetState(608) p.Match(FuncTestCaseParserOAngleBracket) if p.HasError() { // Recognition error - abort rule @@ -12097,14 +12246,14 @@ func (p *FuncTestCaseParser) IntervalCompoundType() (localctx IIntervalCompoundT } } { - p.SetState(602) + p.SetState(609) var _x = p.NumericParameter() localctx.(*IntervalCompoundTypeContext).len_ = _x } { - p.SetState(603) + p.SetState(610) p.Match(FuncTestCaseParserCAngleBracket) if p.HasError() { // Recognition error - abort rule @@ -12256,12 +12405,12 @@ func (s *FixedCharTypeContext) Accept(visitor antlr.ParseTreeVisitor) interface{ func (p *FuncTestCaseParser) FixedCharType() (localctx IFixedCharTypeContext) { localctx = NewFixedCharTypeContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 128, FuncTestCaseParserRULE_fixedCharType) + p.EnterRule(localctx, 130, FuncTestCaseParserRULE_fixedCharType) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(607) + p.SetState(614) _la = p.GetTokenStream().LA(1) if !(_la == FuncTestCaseParserFixedChar || _la == FuncTestCaseParserFChar) { @@ -12271,7 +12420,7 @@ func (p *FuncTestCaseParser) FixedCharType() (localctx IFixedCharTypeContext) { p.Consume() } } - p.SetState(609) + p.SetState(616) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12280,7 +12429,7 @@ func (p *FuncTestCaseParser) FixedCharType() (localctx IFixedCharTypeContext) { if _la == FuncTestCaseParserQMark { { - p.SetState(608) + p.SetState(615) var _m = p.Match(FuncTestCaseParserQMark) @@ -12293,7 +12442,7 @@ func (p *FuncTestCaseParser) FixedCharType() (localctx IFixedCharTypeContext) { } { - p.SetState(611) + p.SetState(618) p.Match(FuncTestCaseParserOAngleBracket) if p.HasError() { // Recognition error - abort rule @@ -12301,14 +12450,14 @@ func (p *FuncTestCaseParser) FixedCharType() (localctx IFixedCharTypeContext) { } } { - p.SetState(612) + p.SetState(619) var _x = p.NumericParameter() localctx.(*FixedCharTypeContext).len_ = _x } { - p.SetState(613) + p.SetState(620) p.Match(FuncTestCaseParserCAngleBracket) if p.HasError() { // Recognition error - abort rule @@ -12458,12 +12607,12 @@ func (s *VarCharTypeContext) Accept(visitor antlr.ParseTreeVisitor) interface{} func (p *FuncTestCaseParser) VarCharType() (localctx IVarCharTypeContext) { localctx = NewVarCharTypeContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 130, FuncTestCaseParserRULE_varCharType) + p.EnterRule(localctx, 132, FuncTestCaseParserRULE_varCharType) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(615) + p.SetState(622) _la = p.GetTokenStream().LA(1) if !(_la == FuncTestCaseParserVarChar || _la == FuncTestCaseParserVChar) { @@ -12473,7 +12622,7 @@ func (p *FuncTestCaseParser) VarCharType() (localctx IVarCharTypeContext) { p.Consume() } } - p.SetState(617) + p.SetState(624) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12482,7 +12631,7 @@ func (p *FuncTestCaseParser) VarCharType() (localctx IVarCharTypeContext) { if _la == FuncTestCaseParserQMark { { - p.SetState(616) + p.SetState(623) var _m = p.Match(FuncTestCaseParserQMark) @@ -12495,7 +12644,7 @@ func (p *FuncTestCaseParser) VarCharType() (localctx IVarCharTypeContext) { } { - p.SetState(619) + p.SetState(626) p.Match(FuncTestCaseParserOAngleBracket) if p.HasError() { // Recognition error - abort rule @@ -12503,14 +12652,14 @@ func (p *FuncTestCaseParser) VarCharType() (localctx IVarCharTypeContext) { } } { - p.SetState(620) + p.SetState(627) var _x = p.NumericParameter() localctx.(*VarCharTypeContext).len_ = _x } { - p.SetState(621) + p.SetState(628) p.Match(FuncTestCaseParserCAngleBracket) if p.HasError() { // Recognition error - abort rule @@ -12660,12 +12809,12 @@ func (s *FixedBinaryTypeContext) Accept(visitor antlr.ParseTreeVisitor) interfac func (p *FuncTestCaseParser) FixedBinaryType() (localctx IFixedBinaryTypeContext) { localctx = NewFixedBinaryTypeContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 132, FuncTestCaseParserRULE_fixedBinaryType) + p.EnterRule(localctx, 134, FuncTestCaseParserRULE_fixedBinaryType) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(623) + p.SetState(630) _la = p.GetTokenStream().LA(1) if !(_la == FuncTestCaseParserFixedBinary || _la == FuncTestCaseParserFBin) { @@ -12675,7 +12824,7 @@ func (p *FuncTestCaseParser) FixedBinaryType() (localctx IFixedBinaryTypeContext p.Consume() } } - p.SetState(625) + p.SetState(632) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12684,7 +12833,7 @@ func (p *FuncTestCaseParser) FixedBinaryType() (localctx IFixedBinaryTypeContext if _la == FuncTestCaseParserQMark { { - p.SetState(624) + p.SetState(631) var _m = p.Match(FuncTestCaseParserQMark) @@ -12697,7 +12846,7 @@ func (p *FuncTestCaseParser) FixedBinaryType() (localctx IFixedBinaryTypeContext } { - p.SetState(627) + p.SetState(634) p.Match(FuncTestCaseParserOAngleBracket) if p.HasError() { // Recognition error - abort rule @@ -12705,14 +12854,14 @@ func (p *FuncTestCaseParser) FixedBinaryType() (localctx IFixedBinaryTypeContext } } { - p.SetState(628) + p.SetState(635) var _x = p.NumericParameter() localctx.(*FixedBinaryTypeContext).len_ = _x } { - p.SetState(629) + p.SetState(636) p.Match(FuncTestCaseParserCAngleBracket) if p.HasError() { // Recognition error - abort rule @@ -12904,12 +13053,12 @@ func (s *DecimalTypeContext) Accept(visitor antlr.ParseTreeVisitor) interface{} func (p *FuncTestCaseParser) DecimalType() (localctx IDecimalTypeContext) { localctx = NewDecimalTypeContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 134, FuncTestCaseParserRULE_decimalType) + p.EnterRule(localctx, 136, FuncTestCaseParserRULE_decimalType) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(631) + p.SetState(638) _la = p.GetTokenStream().LA(1) if !(_la == FuncTestCaseParserDecimal || _la == FuncTestCaseParserDec) { @@ -12919,7 +13068,7 @@ func (p *FuncTestCaseParser) DecimalType() (localctx IDecimalTypeContext) { p.Consume() } } - p.SetState(633) + p.SetState(640) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12928,7 +13077,7 @@ func (p *FuncTestCaseParser) DecimalType() (localctx IDecimalTypeContext) { if _la == FuncTestCaseParserQMark { { - p.SetState(632) + p.SetState(639) var _m = p.Match(FuncTestCaseParserQMark) @@ -12940,7 +13089,7 @@ func (p *FuncTestCaseParser) DecimalType() (localctx IDecimalTypeContext) { } } - p.SetState(641) + p.SetState(648) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12949,7 +13098,7 @@ func (p *FuncTestCaseParser) DecimalType() (localctx IDecimalTypeContext) { if _la == FuncTestCaseParserOAngleBracket { { - p.SetState(635) + p.SetState(642) p.Match(FuncTestCaseParserOAngleBracket) if p.HasError() { // Recognition error - abort rule @@ -12957,14 +13106,14 @@ func (p *FuncTestCaseParser) DecimalType() (localctx IDecimalTypeContext) { } } { - p.SetState(636) + p.SetState(643) var _x = p.NumericParameter() localctx.(*DecimalTypeContext).precision = _x } { - p.SetState(637) + p.SetState(644) p.Match(FuncTestCaseParserComma) if p.HasError() { // Recognition error - abort rule @@ -12972,14 +13121,14 @@ func (p *FuncTestCaseParser) DecimalType() (localctx IDecimalTypeContext) { } } { - p.SetState(638) + p.SetState(645) var _x = p.NumericParameter() localctx.(*DecimalTypeContext).scale = _x } { - p.SetState(639) + p.SetState(646) p.Match(FuncTestCaseParserCAngleBracket) if p.HasError() { // Recognition error - abort rule @@ -13131,12 +13280,12 @@ func (s *PrecisionTimeTypeContext) Accept(visitor antlr.ParseTreeVisitor) interf func (p *FuncTestCaseParser) PrecisionTimeType() (localctx IPrecisionTimeTypeContext) { localctx = NewPrecisionTimeTypeContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 136, FuncTestCaseParserRULE_precisionTimeType) + p.EnterRule(localctx, 138, FuncTestCaseParserRULE_precisionTimeType) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(643) + p.SetState(650) _la = p.GetTokenStream().LA(1) if !(_la == FuncTestCaseParserPrecision_Time || _la == FuncTestCaseParserPT) { @@ -13146,7 +13295,7 @@ func (p *FuncTestCaseParser) PrecisionTimeType() (localctx IPrecisionTimeTypeCon p.Consume() } } - p.SetState(645) + p.SetState(652) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13155,7 +13304,7 @@ func (p *FuncTestCaseParser) PrecisionTimeType() (localctx IPrecisionTimeTypeCon if _la == FuncTestCaseParserQMark { { - p.SetState(644) + p.SetState(651) var _m = p.Match(FuncTestCaseParserQMark) @@ -13168,7 +13317,7 @@ func (p *FuncTestCaseParser) PrecisionTimeType() (localctx IPrecisionTimeTypeCon } { - p.SetState(647) + p.SetState(654) p.Match(FuncTestCaseParserOAngleBracket) if p.HasError() { // Recognition error - abort rule @@ -13176,14 +13325,14 @@ func (p *FuncTestCaseParser) PrecisionTimeType() (localctx IPrecisionTimeTypeCon } } { - p.SetState(648) + p.SetState(655) var _x = p.NumericParameter() localctx.(*PrecisionTimeTypeContext).precision = _x } { - p.SetState(649) + p.SetState(656) p.Match(FuncTestCaseParserCAngleBracket) if p.HasError() { // Recognition error - abort rule @@ -13333,12 +13482,12 @@ func (s *PrecisionTimestampTypeContext) Accept(visitor antlr.ParseTreeVisitor) i func (p *FuncTestCaseParser) PrecisionTimestampType() (localctx IPrecisionTimestampTypeContext) { localctx = NewPrecisionTimestampTypeContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 138, FuncTestCaseParserRULE_precisionTimestampType) + p.EnterRule(localctx, 140, FuncTestCaseParserRULE_precisionTimestampType) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(651) + p.SetState(658) _la = p.GetTokenStream().LA(1) if !(_la == FuncTestCaseParserPrecision_Timestamp || _la == FuncTestCaseParserPTs) { @@ -13348,7 +13497,7 @@ func (p *FuncTestCaseParser) PrecisionTimestampType() (localctx IPrecisionTimest p.Consume() } } - p.SetState(653) + p.SetState(660) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13357,7 +13506,7 @@ func (p *FuncTestCaseParser) PrecisionTimestampType() (localctx IPrecisionTimest if _la == FuncTestCaseParserQMark { { - p.SetState(652) + p.SetState(659) var _m = p.Match(FuncTestCaseParserQMark) @@ -13370,7 +13519,7 @@ func (p *FuncTestCaseParser) PrecisionTimestampType() (localctx IPrecisionTimest } { - p.SetState(655) + p.SetState(662) p.Match(FuncTestCaseParserOAngleBracket) if p.HasError() { // Recognition error - abort rule @@ -13378,14 +13527,14 @@ func (p *FuncTestCaseParser) PrecisionTimestampType() (localctx IPrecisionTimest } } { - p.SetState(656) + p.SetState(663) var _x = p.NumericParameter() localctx.(*PrecisionTimestampTypeContext).precision = _x } { - p.SetState(657) + p.SetState(664) p.Match(FuncTestCaseParserCAngleBracket) if p.HasError() { // Recognition error - abort rule @@ -13535,12 +13684,12 @@ func (s *PrecisionTimestampTZTypeContext) Accept(visitor antlr.ParseTreeVisitor) func (p *FuncTestCaseParser) PrecisionTimestampTZType() (localctx IPrecisionTimestampTZTypeContext) { localctx = NewPrecisionTimestampTZTypeContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 140, FuncTestCaseParserRULE_precisionTimestampTZType) + p.EnterRule(localctx, 142, FuncTestCaseParserRULE_precisionTimestampTZType) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(659) + p.SetState(666) _la = p.GetTokenStream().LA(1) if !(_la == FuncTestCaseParserPrecision_Timestamp_TZ || _la == FuncTestCaseParserPTsTZ) { @@ -13550,7 +13699,7 @@ func (p *FuncTestCaseParser) PrecisionTimestampTZType() (localctx IPrecisionTime p.Consume() } } - p.SetState(661) + p.SetState(668) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13559,7 +13708,7 @@ func (p *FuncTestCaseParser) PrecisionTimestampTZType() (localctx IPrecisionTime if _la == FuncTestCaseParserQMark { { - p.SetState(660) + p.SetState(667) var _m = p.Match(FuncTestCaseParserQMark) @@ -13572,7 +13721,7 @@ func (p *FuncTestCaseParser) PrecisionTimestampTZType() (localctx IPrecisionTime } { - p.SetState(663) + p.SetState(670) p.Match(FuncTestCaseParserOAngleBracket) if p.HasError() { // Recognition error - abort rule @@ -13580,14 +13729,14 @@ func (p *FuncTestCaseParser) PrecisionTimestampTZType() (localctx IPrecisionTime } } { - p.SetState(664) + p.SetState(671) var _x = p.NumericParameter() localctx.(*PrecisionTimestampTZTypeContext).precision = _x } { - p.SetState(665) + p.SetState(672) p.Match(FuncTestCaseParserCAngleBracket) if p.HasError() { // Recognition error - abort rule @@ -13734,20 +13883,20 @@ func (s *ListContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *FuncTestCaseParser) ListType() (localctx IListTypeContext) { localctx = NewListTypeContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 142, FuncTestCaseParserRULE_listType) + p.EnterRule(localctx, 144, FuncTestCaseParserRULE_listType) var _la int localctx = NewListContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(667) + p.SetState(674) p.Match(FuncTestCaseParserList) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(669) + p.SetState(676) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13756,7 +13905,7 @@ func (p *FuncTestCaseParser) ListType() (localctx IListTypeContext) { if _la == FuncTestCaseParserQMark { { - p.SetState(668) + p.SetState(675) var _m = p.Match(FuncTestCaseParserQMark) @@ -13769,7 +13918,7 @@ func (p *FuncTestCaseParser) ListType() (localctx IListTypeContext) { } { - p.SetState(671) + p.SetState(678) p.Match(FuncTestCaseParserOAngleBracket) if p.HasError() { // Recognition error - abort rule @@ -13777,14 +13926,14 @@ func (p *FuncTestCaseParser) ListType() (localctx IListTypeContext) { } } { - p.SetState(672) + p.SetState(679) var _x = p.DataType() localctx.(*ListContext).elemType = _x } { - p.SetState(673) + p.SetState(680) p.Match(FuncTestCaseParserCAngleBracket) if p.HasError() { // Recognition error - abort rule @@ -13962,19 +14111,19 @@ func (s *FuncTypeContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *FuncTestCaseParser) FuncType() (localctx IFuncTypeContext) { localctx = NewFuncTypeContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 144, FuncTestCaseParserRULE_funcType) + p.EnterRule(localctx, 146, FuncTestCaseParserRULE_funcType) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(675) + p.SetState(682) p.Match(FuncTestCaseParserFunc) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(677) + p.SetState(684) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13983,7 +14132,7 @@ func (p *FuncTestCaseParser) FuncType() (localctx IFuncTypeContext) { if _la == FuncTestCaseParserQMark { { - p.SetState(676) + p.SetState(683) var _m = p.Match(FuncTestCaseParserQMark) @@ -13996,7 +14145,7 @@ func (p *FuncTestCaseParser) FuncType() (localctx IFuncTypeContext) { } { - p.SetState(679) + p.SetState(686) p.Match(FuncTestCaseParserOAngleBracket) if p.HasError() { // Recognition error - abort rule @@ -14004,14 +14153,14 @@ func (p *FuncTestCaseParser) FuncType() (localctx IFuncTypeContext) { } } { - p.SetState(680) + p.SetState(687) var _x = p.FuncParameters() localctx.(*FuncTypeContext).params = _x } { - p.SetState(681) + p.SetState(688) p.Match(FuncTestCaseParserArrow) if p.HasError() { // Recognition error - abort rule @@ -14019,14 +14168,14 @@ func (p *FuncTestCaseParser) FuncType() (localctx IFuncTypeContext) { } } { - p.SetState(682) + p.SetState(689) var _x = p.DataType() localctx.(*FuncTypeContext).returnType = _x } { - p.SetState(683) + p.SetState(690) p.Match(FuncTestCaseParserCAngleBracket) if p.HasError() { // Recognition error - abort rule @@ -14232,10 +14381,10 @@ func (s *FuncParamsWithParensContext) Accept(visitor antlr.ParseTreeVisitor) int func (p *FuncTestCaseParser) FuncParameters() (localctx IFuncParametersContext) { localctx = NewFuncParametersContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 146, FuncTestCaseParserRULE_funcParameters) + p.EnterRule(localctx, 148, FuncTestCaseParserRULE_funcParameters) var _la int - p.SetState(697) + p.SetState(704) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14246,7 +14395,7 @@ func (p *FuncTestCaseParser) FuncParameters() (localctx IFuncParametersContext) localctx = NewSingleFuncParamContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(685) + p.SetState(692) p.DataType() } @@ -14254,7 +14403,7 @@ func (p *FuncTestCaseParser) FuncParameters() (localctx IFuncParametersContext) localctx = NewFuncParamsWithParensContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(686) + p.SetState(693) p.Match(FuncTestCaseParserOParen) if p.HasError() { // Recognition error - abort rule @@ -14262,10 +14411,10 @@ func (p *FuncTestCaseParser) FuncParameters() (localctx IFuncParametersContext) } } { - p.SetState(687) + p.SetState(694) p.DataType() } - p.SetState(692) + p.SetState(699) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14274,7 +14423,7 @@ func (p *FuncTestCaseParser) FuncParameters() (localctx IFuncParametersContext) for _la == FuncTestCaseParserComma { { - p.SetState(688) + p.SetState(695) p.Match(FuncTestCaseParserComma) if p.HasError() { // Recognition error - abort rule @@ -14282,11 +14431,11 @@ func (p *FuncTestCaseParser) FuncParameters() (localctx IFuncParametersContext) } } { - p.SetState(689) + p.SetState(696) p.DataType() } - p.SetState(694) + p.SetState(701) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14294,7 +14443,7 @@ func (p *FuncTestCaseParser) FuncParameters() (localctx IFuncParametersContext) _la = p.GetTokenStream().LA(1) } { - p.SetState(695) + p.SetState(702) p.Match(FuncTestCaseParserCParen) if p.HasError() { // Recognition error - abort rule @@ -14572,8 +14721,8 @@ func (s *ParameterizedTypeContext) Accept(visitor antlr.ParseTreeVisitor) interf func (p *FuncTestCaseParser) ParameterizedType() (localctx IParameterizedTypeContext) { localctx = NewParameterizedTypeContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 148, FuncTestCaseParserRULE_parameterizedType) - p.SetState(710) + p.EnterRule(localctx, 150, FuncTestCaseParserRULE_parameterizedType) + p.SetState(717) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14583,77 +14732,77 @@ func (p *FuncTestCaseParser) ParameterizedType() (localctx IParameterizedTypeCon case FuncTestCaseParserFixedChar, FuncTestCaseParserFChar: p.EnterOuterAlt(localctx, 1) { - p.SetState(699) + p.SetState(706) p.FixedCharType() } case FuncTestCaseParserVarChar, FuncTestCaseParserVChar: p.EnterOuterAlt(localctx, 2) { - p.SetState(700) + p.SetState(707) p.VarCharType() } case FuncTestCaseParserFixedBinary, FuncTestCaseParserFBin: p.EnterOuterAlt(localctx, 3) { - p.SetState(701) + p.SetState(708) p.FixedBinaryType() } case FuncTestCaseParserDecimal, FuncTestCaseParserDec: p.EnterOuterAlt(localctx, 4) { - p.SetState(702) + p.SetState(709) p.DecimalType() } case FuncTestCaseParserInterval_Day, FuncTestCaseParserIDay: p.EnterOuterAlt(localctx, 5) { - p.SetState(703) + p.SetState(710) p.IntervalDayType() } case FuncTestCaseParserInterval_Compound, FuncTestCaseParserICompound: p.EnterOuterAlt(localctx, 6) { - p.SetState(704) + p.SetState(711) p.IntervalCompoundType() } case FuncTestCaseParserPrecision_Time, FuncTestCaseParserPT: p.EnterOuterAlt(localctx, 7) { - p.SetState(705) + p.SetState(712) p.PrecisionTimeType() } case FuncTestCaseParserPrecision_Timestamp, FuncTestCaseParserPTs: p.EnterOuterAlt(localctx, 8) { - p.SetState(706) + p.SetState(713) p.PrecisionTimestampType() } case FuncTestCaseParserPrecision_Timestamp_TZ, FuncTestCaseParserPTsTZ: p.EnterOuterAlt(localctx, 9) { - p.SetState(707) + p.SetState(714) p.PrecisionTimestampTZType() } case FuncTestCaseParserList: p.EnterOuterAlt(localctx, 10) { - p.SetState(708) + p.SetState(715) p.ListType() } case FuncTestCaseParserFunc: p.EnterOuterAlt(localctx, 11) { - p.SetState(709) + p.SetState(716) p.FuncType() } @@ -14763,11 +14912,11 @@ func (s *IntegerLiteralContext) Accept(visitor antlr.ParseTreeVisitor) interface func (p *FuncTestCaseParser) NumericParameter() (localctx INumericParameterContext) { localctx = NewNumericParameterContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 150, FuncTestCaseParserRULE_numericParameter) + p.EnterRule(localctx, 152, FuncTestCaseParserRULE_numericParameter) localctx = NewIntegerLiteralContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(712) + p.SetState(719) p.Match(FuncTestCaseParserIntegerLiteral) if p.HasError() { // Recognition error - abort rule @@ -14863,12 +15012,12 @@ func (s *SubstraitErrorContext) Accept(visitor antlr.ParseTreeVisitor) interface func (p *FuncTestCaseParser) SubstraitError() (localctx ISubstraitErrorContext) { localctx = NewSubstraitErrorContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 152, FuncTestCaseParserRULE_substraitError) + p.EnterRule(localctx, 154, FuncTestCaseParserRULE_substraitError) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(714) + p.SetState(721) _la = p.GetTokenStream().LA(1) if !(_la == FuncTestCaseParserErrorResult || _la == FuncTestCaseParserUndefineResult) { @@ -14996,14 +15145,14 @@ func (s *FuncOptionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *FuncTestCaseParser) FuncOption() (localctx IFuncOptionContext) { localctx = NewFuncOptionContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 154, FuncTestCaseParserRULE_funcOption) + p.EnterRule(localctx, 156, FuncTestCaseParserRULE_funcOption) p.EnterOuterAlt(localctx, 1) { - p.SetState(716) + p.SetState(723) p.OptionName() } { - p.SetState(717) + p.SetState(724) p.Match(FuncTestCaseParserColon) if p.HasError() { // Recognition error - abort rule @@ -15011,7 +15160,7 @@ func (p *FuncTestCaseParser) FuncOption() (localctx IFuncOptionContext) { } } { - p.SetState(718) + p.SetState(725) p.OptionValue() } @@ -15118,12 +15267,12 @@ func (s *OptionNameContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *FuncTestCaseParser) OptionName() (localctx IOptionNameContext) { localctx = NewOptionNameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 156, FuncTestCaseParserRULE_optionName) + p.EnterRule(localctx, 158, FuncTestCaseParserRULE_optionName) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(720) + p.SetState(727) _la = p.GetTokenStream().LA(1) if !(((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&6303744) != 0) || _la == FuncTestCaseParserIdentifier) { @@ -15267,12 +15416,12 @@ func (s *OptionValueContext) Accept(visitor antlr.ParseTreeVisitor) interface{} func (p *FuncTestCaseParser) OptionValue() (localctx IOptionValueContext) { localctx = NewOptionValueContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 158, FuncTestCaseParserRULE_optionValue) + p.EnterRule(localctx, 160, FuncTestCaseParserRULE_optionValue) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(722) + p.SetState(729) _la = p.GetTokenStream().LA(1) if !(((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&35184516775936) != 0) || _la == FuncTestCaseParserIdentifier) { @@ -15414,15 +15563,15 @@ func (s *FuncOptionsContext) Accept(visitor antlr.ParseTreeVisitor) interface{} func (p *FuncTestCaseParser) FuncOptions() (localctx IFuncOptionsContext) { localctx = NewFuncOptionsContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 160, FuncTestCaseParserRULE_funcOptions) + p.EnterRule(localctx, 162, FuncTestCaseParserRULE_funcOptions) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(724) + p.SetState(731) p.FuncOption() } - p.SetState(729) + p.SetState(736) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15431,7 +15580,7 @@ func (p *FuncTestCaseParser) FuncOptions() (localctx IFuncOptionsContext) { for _la == FuncTestCaseParserComma { { - p.SetState(725) + p.SetState(732) p.Match(FuncTestCaseParserComma) if p.HasError() { // Recognition error - abort rule @@ -15439,11 +15588,11 @@ func (p *FuncTestCaseParser) FuncOptions() (localctx IFuncOptionsContext) { } } { - p.SetState(726) + p.SetState(733) p.FuncOption() } - p.SetState(731) + p.SetState(738) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15544,12 +15693,12 @@ func (s *NonReservedContext) Accept(visitor antlr.ParseTreeVisitor) interface{} func (p *FuncTestCaseParser) NonReserved() (localctx INonReservedContext) { localctx = NewNonReservedContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 162, FuncTestCaseParserRULE_nonReserved) + p.EnterRule(localctx, 164, FuncTestCaseParserRULE_nonReserved) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(732) + p.SetState(739) _la = p.GetTokenStream().LA(1) if !(_la == FuncTestCaseParserTruncate || _la == FuncTestCaseParserAnd || _la == FuncTestCaseParserOr) { @@ -15660,8 +15809,8 @@ func (s *IdentifierContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *FuncTestCaseParser) Identifier() (localctx IIdentifierContext) { localctx = NewIdentifierContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 164, FuncTestCaseParserRULE_identifier) - p.SetState(736) + p.EnterRule(localctx, 166, FuncTestCaseParserRULE_identifier) + p.SetState(743) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15671,14 +15820,14 @@ func (p *FuncTestCaseParser) Identifier() (localctx IIdentifierContext) { case FuncTestCaseParserTruncate, FuncTestCaseParserAnd, FuncTestCaseParserOr: p.EnterOuterAlt(localctx, 1) { - p.SetState(734) + p.SetState(741) p.NonReserved() } case FuncTestCaseParserIdentifier: p.EnterOuterAlt(localctx, 2) { - p.SetState(735) + p.SetState(742) p.Match(FuncTestCaseParserIdentifier) if p.HasError() { // Recognition error - abort rule diff --git a/testcases/parser/baseparser/functestcaseparser_base_visitor.go b/testcases/parser/baseparser/functestcaseparser_base_visitor.go index 51e6f34..cea03f0 100644 --- a/testcases/parser/baseparser/functestcaseparser_base_visitor.go +++ b/testcases/parser/baseparser/functestcaseparser_base_visitor.go @@ -199,6 +199,10 @@ func (v *BaseFuncTestCaseParserVisitor) VisitLambdaArg(ctx *LambdaArgContext) in return v.VisitChildren(ctx) } +func (v *BaseFuncTestCaseParserVisitor) VisitEnumArg(ctx *EnumArgContext) interface{} { + return v.VisitChildren(ctx) +} + func (v *BaseFuncTestCaseParserVisitor) VisitLiteralList(ctx *LiteralListContext) interface{} { return v.VisitChildren(ctx) } diff --git a/testcases/parser/baseparser/functestcaseparser_visitor.go b/testcases/parser/baseparser/functestcaseparser_visitor.go index 447aed8..50b8b39 100644 --- a/testcases/parser/baseparser/functestcaseparser_visitor.go +++ b/testcases/parser/baseparser/functestcaseparser_visitor.go @@ -151,6 +151,9 @@ type FuncTestCaseParserVisitor interface { // Visit a parse tree produced by FuncTestCaseParser#lambdaArg. VisitLambdaArg(ctx *LambdaArgContext) interface{} + // Visit a parse tree produced by FuncTestCaseParser#enumArg. + VisitEnumArg(ctx *EnumArgContext) interface{} + // Visit a parse tree produced by FuncTestCaseParser#literalList. VisitLiteralList(ctx *LiteralListContext) interface{} diff --git a/testcases/parser/nodes.go b/testcases/parser/nodes.go index dd947d7..f005f9d 100644 --- a/testcases/parser/nodes.go +++ b/testcases/parser/nodes.go @@ -23,7 +23,7 @@ const ( type CaseLiteral struct { Type types.Type ValueText string - Value expr.Literal + Value types.FuncArg SubstraitError *SubstraitError } @@ -34,7 +34,11 @@ func (c *CaseLiteral) String() string { if c.Value == nil { return "NULL" } - return literalToString(c.Value) + "::" + c.Type.String() + if lit, ok := c.Value.(expr.Literal); ok { + return literalToString(lit) + "::" + c.Type.String() + } + // Enum args use CommonEnumType whose String() is empty; render as "enum" + return c.ValueText + "::enum" } func literalToString(literal expr.Literal) string { @@ -76,13 +80,14 @@ func (c *CaseLiteral) AsAggregateArgumentString() string { } return "(" + strings.Join(elements, ", ") + ")::" + c.Type.String() } - return c.Value.ValueString() + "::" + c.Type.String() + return c.ValueText + "::" + c.Type.String() } // updateLiteralType updates the type of the literal CaseLiteral.Value to use the CaseLiteral.Type // Parser creates a literal with a type using existing util functions. // For ParameterizedTypes utils functions use minimum required values for the parameters. // This function changes the type to use requested type, so that the function invocation object is created correctly. +// Enum args are excluded: CommonEnumType has no parameters, so they return early. func (c *CaseLiteral) updateLiteralType() error { if len(c.Type.GetParameters()) == 0 { return nil @@ -396,6 +401,7 @@ func (tc *TestCase) GetAggregateFunctionInvocation(reg *expr.ExtensionRegistry, return nil, fmt.Errorf("%w: no matching function found or %s", substraitgo.ErrNotFound, id) } +// GetAggregateColumnsData returns column data for aggregate test cases. func (tc *TestCase) GetAggregateColumnsData() ([][]expr.Literal, error) { if tc.FuncType != AggregateFuncType { return nil, fmt.Errorf("expected function type %v, but got %v", AggregateFuncType, tc.FuncType) diff --git a/testcases/parser/parse_test.go b/testcases/parser/parse_test.go index 3bd18c8..7e77056 100644 --- a/testcases/parser/parse_test.go +++ b/testcases/parser/parse_test.go @@ -189,6 +189,7 @@ func TestParseTestWithVariousTypes(t *testing.T) { {testCaseStr: "concat('abcd'::vchar<9>, Null::varchar<9>) = Null::vchar<9>", expTestStr: "concat('abcd'::varchar<9>, null::varchar?<9>) = null::varchar?<9>"}, {testCaseStr: "concat('abcd'::vchar<9>, Null::fixedchar<9>) = Null::fchar<9>", expTestStr: "concat('abcd'::varchar<9>, null::fixedchar?<9>) = null::fixedchar?<9>"}, {testCaseStr: "concat('abcd'::fbin<9>, Null::fixedbinary<9>) = Null::fbin<9>", expTestStr: "concat('0x61626364'::fixedbinary<9>, null::fixedbinary?<9>) = null::fixedbinary?<9>"}, + {testCaseStr: "extract(YEAR::enum, '2016-12-31T13:30:15'::ts) = 2016::i64", expTestStr: "extract(YEAR::enum, '2016-12-31T13:30:15'::timestamp) = 2016::i64"}, {testCaseStr: "f35('1991-01-01T01:02:03.456'::pts<3>) = '1991-01-01T01:02:30.123123'::precision_timestamp<3>", expTestStr: "f35('1991-01-01T01:02:03.456'::precision_timestamp<3>) = '1991-01-01T01:02:30.123'::precision_timestamp<3>"}, {testCaseStr: "f36('1991-01-01T01:02:03.456'::pts<3>, '1991-01-01T01:02:30.123123'::precision_timestamp<3>) = 123456::i64", expTestStr: "f36('1991-01-01T01:02:03.456'::precision_timestamp<3>, '1991-01-01T01:02:30.123'::precision_timestamp<3>) = 123456::i64"}, {testCaseStr: "f37('1991-01-01T01:02:03.123456'::pts<6>, '1991-01-01T04:05:06.456'::precision_timestamp<6>) = 123456::i64", expTestStr: "f37('1991-01-01T01:02:03.123456'::precision_timestamp<6>, '1991-01-01T04:05:06.456'::precision_timestamp<6>) = 123456::i64"}, @@ -208,10 +209,18 @@ func TestParseTestWithVariousTypes(t *testing.T) { } for _, arg := range testFile.TestCases[0].Args { assert.NotNil(t, arg.Value) - checkNullability(t, arg.Value, arg.Type) + switch v := arg.Value.(type) { + case expr.Literal: + checkNullability(t, v, arg.Type) + case types.Enum: + assert.Equal(t, types.CommonEnumType, arg.Type) + default: + t.Errorf("unexpected arg value type %T", v) + } } - assert.NotNil(t, testFile.TestCases[0].Result.Value) - checkNullability(t, testFile.TestCases[0].Result.Value, testFile.TestCases[0].Result.Type) + resultLit, ok := testFile.TestCases[0].Result.Value.(expr.Literal) + require.True(t, ok, "result should be a literal, got %T", testFile.TestCases[0].Result.Value) + checkNullability(t, resultLit, testFile.TestCases[0].Result.Type) }) } } @@ -427,7 +436,9 @@ sum((9223372036854775806, 1, 1, 1, 1, 10000000000)::i64) [overflow:ERROR] = ", } assert.Equal(t, newFloat32List(1, 2, 3), tc.AggregateArgs[0].Argument.Value) - assert.Equal(t, listType, tc.AggregateArgs[0].Argument.Value.GetType()) + lit, ok := tc.AggregateArgs[0].Argument.Value.(expr.Literal) + require.True(t, ok, "aggregate arg should be a literal, got %T", tc.AggregateArgs[0].Argument.Value) + assert.Equal(t, listType, lit.GetType()) assert.Equal(t, "fp64", tc.Result.Type.String()) assert.Equal(t, literal.NewFloat64(2, false), tc.Result.Value) assert.Equal(t, AggregateFuncType, tc.FuncType) @@ -816,8 +827,8 @@ func TestParseTestWithBadAggregateTests(t *testing.T) { corr(t1.col0, t2.col1) = 1::fp64`, "table name in argument t2, does not match the table name in the function call t1", }, - {"((20, 20), (-3, -3), (1, 1), (10,10), (5,5)) corr(my_col::fp32, col0::fp32) = 1::fp64", "mismatched input '::' expecting ')"}, - {"((20, 20), (-3, -3), (1, 1), (10,10), (5,5)) corr(col0::fp32, column1::fp32) = 1::fp64", "mismatched input '::' expecting ')"}, + {"((20, 20), (-3, -3), (1, 1), (10,10), (5,5)) corr(my_col::fp32, col0::fp32) = 1::fp64", "mismatched input 'fp32' expecting 'enum'"}, + {"((20, 20), (-3, -3), (1, 1), (10,10), (5,5)) corr(col0::fp32, column1::fp32) = 1::fp64", "mismatched input 'fp32' expecting 'enum'"}, {"f8('13:01:01.234'::time) = 123::i32", "expected aggregate testcase based on test file header, but got scalar function testcase"}, } for _, test := range tests { @@ -888,6 +899,8 @@ count(t1.col0) = 4::fp64`, expTestStr: "(('cat'), ('bat'), ('rat'), (null)) coun expTestStr: "f38(('1990-12-31T19:32:03.456')::precision_timestamp_tz?<3>) = '1990-12-31T08:30:00.000+00:00'::precision_timestamp_tz<3>"}, {testCaseStr: "f39(('1991-01-01T01:02:03.456+05:30', '1991-01-01T01:02:03.123456+05:30')::ptstz<6>) = '1991-01-01T00:00:00+15:30'::ptstz<6>", expTestStr: "f39(('1990-12-31T19:32:03.456', '1990-12-31T19:32:03.123456')::precision_timestamp_tz<6>) = '1990-12-31T08:30:00.000+00:00'::precision_timestamp_tz<6>"}, + {testCaseStr: "((1.0), (2.0), (3.0)) std_dev(SAMPLE::enum, col0::fp32) = 1.0::fp32?", + expTestStr: "((1), (2), (3)) std_dev(SAMPLE::enum, col0::fp32) = 1::fp32?"}, } for _, test := range tests { t.Run(test.testCaseStr, func(t *testing.T) { @@ -926,6 +939,22 @@ func TestParseTestCaseFile(t *testing.T) { assert.Len(t, testFile.TestCases, 13) } +func TestParseEnumArg(t *testing.T) { + header := makeHeader("v1.0", "/extensions/functions_datetime.yaml") + testFile, err := ParseTestCasesFromString(header + "# timestamps\nextract(YEAR::enum, '2016-12-31T13:30:15'::ts) = 2016::i64\n") + require.NoError(t, err) + require.Len(t, testFile.TestCases, 1) + + tc := testFile.TestCases[0] + assert.Equal(t, types.CommonEnumType, tc.Args[0].Type) + assert.Equal(t, "extract(YEAR::enum, '2016-12-31T13:30:15'::timestamp) = 2016::i64", tc.String()) + + reg, funcRegistry := functions.NewExtensionAndFunctionRegistries(extensions.GetDefaultCollectionWithNoError()) + invocation, err := tc.GetScalarFunctionInvocation(®, funcRegistry) + require.NoError(t, err) + assert.Equal(t, []types.Type{types.CommonEnumType, &types.TimestampType{Nullability: types.NullabilityRequired}}, invocation.GetArgTypes()) +} + func TestLoadAllSubstraitTestFiles(t *testing.T) { got := substrait.GetSubstraitTestsFS() filePaths, err := listFiles(got, ".") @@ -935,9 +964,11 @@ func TestLoadAllSubstraitTestFiles(t *testing.T) { for _, filePath := range filePaths { t.Run(filePath, func(t *testing.T) { switch filePath { - case "tests/cases/datetime/extract.test": - // TODO deal with enum arguments in testcase - t.Skip("Skipping extract.test") + case "tests/cases/arithmetic/std_dev.test", + "tests/cases/arithmetic/variance.test": + // Skipping: upstream test files use an invalid single-column compact format, + // fixed in substrait v0.88.0 (substrait-io/substrait#1043). + t.Skip("Skipping until substrait dependency is updated to v0.88.0+") case "tests/cases/list/all_match.test", "tests/cases/list/any_match.test", "tests/cases/list/filter.test", diff --git a/testcases/parser/visitor.go b/testcases/parser/visitor.go index d2e2801..53e6bb1 100644 --- a/testcases/parser/visitor.go +++ b/testcases/parser/visitor.go @@ -417,6 +417,9 @@ func (v *TestCaseVisitor) VisitArgument(ctx *baseparser.ArgumentContext) interfa if ctx.ListArg() != nil { return v.Visit(ctx.ListArg()) } + if ctx.EnumArg() != nil { + return v.Visit(ctx.EnumArg()) + } if ctx.IntervalCompoundArg() != nil { // TODO(#209): implement when substrait test cases use interval compound args v.ErrorListener.ReportVisitError(ctx, fmt.Errorf("interval compound argument not yet implemented")) @@ -643,6 +646,11 @@ func (v *TestCaseVisitor) VisitDecimalArg(ctx *baseparser.DecimalArgContext) int return &CaseLiteral{Value: decimal, ValueText: ctx.NumericLiteral().GetText(), Type: decType} } +func (v *TestCaseVisitor) VisitEnumArg(ctx *baseparser.EnumArgContext) interface{} { + identifier := ctx.Identifier().GetText() + return &CaseLiteral{Value: types.Enum(identifier), ValueText: identifier, Type: types.CommonEnumType} +} + func (v *TestCaseVisitor) VisitPrecisionTimeArg(ctx *baseparser.PrecisionTimeArgContext) interface{} { ptsType := v.Visit(ctx.PrecisionTimeType()).(*types.PrecisionTimeType) timestampStr := getRawStringFromStringLiteral(ctx.TimeLiteral().GetText()) diff --git a/types/types.go b/types/types.go index a13f5f8..f366a7c 100644 --- a/types/types.go +++ b/types/types.go @@ -625,7 +625,9 @@ func (e *EnumType) MatchWithoutNullability(ot Type) bool { } func (e *EnumType) ShortString() string { - return "enum" + // Enum args use "req" as their compound function name key, matching the + // substrait spec's EnumTypeString constant in extensions/simple_extension.go. + return "req" } func (e *EnumType) GetNullability() Nullability { diff --git a/types/types_test.go b/types/types_test.go index 9e1247a..f5948c2 100644 --- a/types/types_test.go +++ b/types/types_test.go @@ -700,3 +700,7 @@ func TestStructTypeDepthFirstNameCount(t *testing.T) { }) } } + +func TestEnumTypeShortString(t *testing.T) { + assert.Equal(t, "req", CommonEnumType.ShortString()) +}